diff --git a/.editorconfig b/.editorconfig index eebdfb046db52d..a42e2e3ff51519 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,12 +16,13 @@ end_of_line = crlf indent_size = 8 indent_style = tab -[{deps}/**] +[deps/**] charset = unset end_of_line = unset indent_size = unset indent_style = unset +insert_final_newline = unset trim_trailing_whitespace = unset -[{test/fixtures,deps,tools/eslint/node_modules,tools/gyp,tools/icu,tools/msvs}/**] +[{test/fixtures,tools/eslint/node_modules,tools/gyp,tools/icu,tools/msvs}/**] insert_final_newline = false diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a70b87da867648..22fef9e8c2201e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -83,6 +83,15 @@ /src/node_http2* @nodejs/http2 @nodejs/net /src/node_mem* @nodejs/http2 +# quic + +/deps/ngtcp2/* @nodejs/quic +/doc/api/quic.md @nodejs/quic +/lib/quic.js @nodejs/quic +/lib/internal/quic/* @nodejs/quic +/src/quic/* @nodejs/quic +/test/parallel/test-quic-* @nodejs/quic + # modules, including loaders /doc/api/esm.md @nodejs/loaders @@ -234,3 +243,11 @@ # dev container /.devcontainer/* @nodejs/devcontainer /doc/contributing/using-devcontainer.md @nodejs/devcontainer + +# FFI +/deps/libffi/ @nodejs/ffi +/doc/api/ffi.md @nodejs/ffi +/lib/ffi.js @nodejs/ffi +/src/ffi/ @nodejs/ffi +/src/node_ffi.* @nodejs/ffi +/test/ffi/ @nodejs/ffi diff --git a/.github/actions/build-shared/action.yml b/.github/actions/build-shared/action.yml new file mode 100644 index 00000000000000..d809f3ec2cf76d --- /dev/null +++ b/.github/actions/build-shared/action.yml @@ -0,0 +1,65 @@ +name: Build Node.js (shared libraries) +description: > + Downloads the slim tarball built by the `build-tarball` job, extracts it, + installs Nix (+ cachix + sccache), then builds Node.js and runs the CI + test suite inside the pinned nix-shell. + +inputs: + extra-nix-flags: + description: Additional CLI arguments appended to the nix-shell invocation. + required: false + default: '' + cachix-auth-token: + description: Cachix auth token for nodejs.cachix.org. + required: false + default: '' + +runs: + using: composite + steps: + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: tarballs + path: tarballs + + - name: Extract tarball + shell: bash + run: | + tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP" + echo "TAR_DIR=$RUNNER_TEMP/$(basename tarballs/*.tar.gz .tar.gz)" >> "$GITHUB_ENV" + + - uses: cachix/install-nix-action@96951a368ba55167b55f1c916f7d416bac6505fe # v31.10.3 + with: + extra_nix_config: sandbox = true + + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17 + with: + name: nodejs + authToken: ${{ inputs.cachix-auth-token }} + + - name: Configure sccache + if: github.base_ref == 'main' || github.ref_name == 'main' + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + core.exportVariable('SCCACHE_GHA_ENABLED', 'on'); + core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on'); + core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('NIX_SCCACHE', '(import {}).sccache'); + + - name: Build Node.js and run tests + shell: bash + run: | + nix-shell \ + -I "nixpkgs=$TAR_DIR/tools/nix/pkgs.nix" \ + --pure --keep TAR_DIR --keep FLAKY_TESTS \ + --keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \ + --arg loadJSBuiltinsDynamically false \ + --arg ccache "${NIX_SCCACHE:-null}" \ + --arg devTools '[]' \ + --arg benchmarkTools '[]' \ + ${{ inputs.extra-nix-flags }} \ + --run ' + make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS" + ' "$TAR_DIR/shell.nix" diff --git a/.github/actions/undici-wpt-current/action.yml b/.github/actions/undici-wpt-current/action.yml new file mode 100644 index 00000000000000..ffedcaa0fadc92 --- /dev/null +++ b/.github/actions/undici-wpt-current/action.yml @@ -0,0 +1,56 @@ +name: Run undici WPT (current) +description: Runs undici WPT tests for undici >= 7 and merges results into the Node.js WPT report + +inputs: + undici-version: + required: true + description: undici version tag to checkout + wpt-report: + required: true + description: Path to the Node.js WPT report to merge into + +runs: + using: composite + steps: + - name: Checkout undici + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: nodejs/undici + persist-credentials: false + path: undici + clean: false + ref: ${{ inputs.undici-version }} + - name: Prepare WPT checkout + shell: bash + run: | + rm -rf undici/test/web-platform-tests/wpt + mv test/fixtures/wpt undici/test/web-platform-tests/wpt + - name: Configure hosts + shell: bash + working-directory: undici/test/web-platform-tests/wpt + run: python3 wpt make-hosts-file | sudo tee -a /etc/hosts + - name: Install dependencies + shell: bash + working-directory: undici + run: npm install + - name: Run WPT + shell: bash + working-directory: undici + env: + CI: 'true' + WPT_REPORT: ${{ github.workspace }}/undici/wptreport.json + run: npm run test:wpt || true + - name: Merge report + shell: bash + env: + NODE_WPT_REPORT: ${{ inputs.wpt-report }} + UNDICI_WPT_REPORT: ${{ github.workspace }}/undici/wptreport.json + run: | + if [ -f "$UNDICI_WPT_REPORT" ]; then + jq -sc ' + .[0].results += .[1].results | + .[0].time_end = .[1].time_end | + .[0] + ' "$NODE_WPT_REPORT" "$UNDICI_WPT_REPORT" > "${NODE_WPT_REPORT}.tmp" + mv "${NODE_WPT_REPORT}.tmp" "$NODE_WPT_REPORT" + fi diff --git a/.github/actions/undici-wpt-legacy/action.yml b/.github/actions/undici-wpt-legacy/action.yml new file mode 100644 index 00000000000000..77a8b3fee46992 --- /dev/null +++ b/.github/actions/undici-wpt-legacy/action.yml @@ -0,0 +1,37 @@ +name: Run undici WPT (legacy) +description: Runs undici WPT tests for undici < 7 and appends results to the Node.js WPT report + +inputs: + undici-version: + required: true + description: undici version tag to checkout + wpt-report: + required: true + description: Path to the Node.js WPT report + +runs: + using: composite + steps: + - name: Checkout undici + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + repository: nodejs/undici + persist-credentials: false + path: undici + clean: false + ref: ${{ inputs.undici-version }} + - name: Prepare WPT checkout + shell: bash + run: | + rm -rf undici/test/wpt/tests + mv test/fixtures/wpt undici/test/wpt/tests + - name: Install dependencies + shell: bash + working-directory: undici + run: npm install + - name: Run WPT + shell: bash + working-directory: undici + env: + WPT_REPORT: ${{ inputs.wpt-report }} + run: npm run test:wpt || true diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 37b865597e5d25..c63475dc60f5d2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -52,6 +52,8 @@ updates: semver-major-days: 5 semver-minor-days: 5 semver-patch-days: 5 + exclude: + - '@node-core/doc-kit' commit-message: prefix: tools open-pull-requests-limit: 10 diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 747b957ee33c85..34488eeed6d72d 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -28,13 +28,13 @@ jobs: - name: Get Pull Requests id: get_prs_for_ci run: > - numbers=$(gh pr list \ - --repo ${{ github.repository }} \ + echo "numbers=$(gh pr list \ + --repo "$GITHUB_REPOSITORY" \ --label 'request-ci' \ --json 'number' \ + --search 'review:approved' \ -t '{{ range . }}{{ .number }} {{ end }}' \ - --limit 5) - echo "numbers=$numbers" >> $GITHUB_OUTPUT + --limit 5)" >> "$GITHUB_OUTPUT" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} start-ci: @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-slim steps: - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index e625ceac6b79b7..5b26bfba6c4479 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -91,7 +91,7 @@ jobs: export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA") ./configure && make tar -j4 SKIP_XZ=1 - name: Upload tarball artifact - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: tarballs path: '*.tar.gz' @@ -121,13 +121,13 @@ jobs: allow-prereleases: true - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information run: npx envinfo - name: Download tarball - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: tarballs path: tarballs diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml deleted file mode 100644 index cb308cb044bc84..00000000000000 --- a/.github/workflows/close-stale-feature-requests.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Close stale feature requests -on: - workflow_dispatch: - schedule: - # Run every day at 1:00 AM UTC. - - cron: 0 1 * * * - -# yamllint disable rule:empty-lines -env: - CLOSE_MESSAGE: > - There has been no activity on this feature request - and it is being closed. If you feel closing this issue is not the - right thing to do, please leave a comment. - - - For more information on how the project manages - feature requests, please consult the - [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). - - WARN_MESSAGE: > - There has been no activity on this feature request for - 5 months. To help maintain relevant open issues, please - add the https://github.com/nodejs/node/labels/never-stale - label or close this issue if it should be closed. If not, - the issue will be automatically closed 6 months after the - last non-automated comment. - - For more information on how the project manages - feature requests, please consult the - [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). -# yamllint enable - -permissions: - contents: read - -jobs: - stale: - permissions: - issues: write # for actions/stale to close stale issues - pull-requests: write # for actions/stale to close stale PRs - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: 180 - days-before-close: 30 - stale-issue-label: stale - close-issue-message: ${{ env.CLOSE_MESSAGE }} - stale-issue-message: ${{ env.WARN_MESSAGE }} - only-labels: feature request - exempt-issue-labels: never-stale - # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits - operations-per-run: 500 - remove-stale-when-updated: true diff --git a/.github/workflows/close-stale-pull-requests.yml b/.github/workflows/close-stale-pull-requests.yml deleted file mode 100644 index de565c9051328d..00000000000000 --- a/.github/workflows/close-stale-pull-requests.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Close stale pull requests -on: - workflow_dispatch: - inputs: - endDate: - description: stop processing PRs after this date - required: false - type: string - -# yamllint disable rule:empty-lines -env: - CLOSE_MESSAGE: > - This pull request was opened more than a year ago and there has - been no activity in the last 6 months. We value your contribution - but since it has not progressed in the last 6 months it is being - closed. If you feel closing this pull request is not the right thing - to do, please leave a comment. - - WARN_MESSAGE: > - This pull request was opened more than a year ago and there has - been no activity in the last 5 months. We value your contribution - but since it has not progressed in the last 5 months it is being - marked stale and will be closed if there is no progress in the - next month. If you feel that is not the right thing to do please - comment on the pull request. -# yamllint enable - -permissions: - contents: read - -jobs: - stale: - permissions: - pull-requests: write # for actions/stale to close stale PRs - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: - - name: Set default end date which is 1 year ago - run: echo "END_DATE=$(date --date='525600 minutes ago' --rfc-2822)" >> "$GITHUB_ENV" - - name: if date set in event override the default end date - env: - END_DATE_INPUT_VALUE: ${{ github.event.inputs.endDate }} - if: ${{ github.event.inputs.endDate != '' }} - run: echo "END_DATE=$END_DATE_INPUT_VALUE" >> "$GITHUB_ENV" - - uses: mhdawson/stale@453d6581568dc43dbe345757f24408d7b451c651 # PR to add support for endDate - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - end-date: ${{ env.END_DATE }} - days-before-issue-stale: -1 - days-before-issue-close: -1 - days-before-stale: 150 - days-before-close: 30 - stale-issue-label: stale - close-issue-message: ${{ env.CLOSE_MESSAGE }} - stale-issue-message: ${{ env.WARN_MESSAGE }} - exempt-pr-labels: never-stale - # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits - operations-per-run: 500 - remove-stale-when-updated: true diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f34a389bbfb7ba..5ff9daaa630d2a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -27,15 +27,15 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/init@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml - name: Autobuild - uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/autobuild@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/analyze@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3 with: category: /language:${{matrix.language}} diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index cb40dd731ccdee..8f652a91782aea 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -1,6 +1,10 @@ name: First commit message adheres to guidelines -on: [pull_request] +on: + pull_request: + branches: + - main + - v[0-9]+.x-staging env: NODE_VERSION: lts/* @@ -23,7 +27,7 @@ jobs: persist-credentials: false - run: git reset HEAD^2 - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Validate commit message diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index 85f4b1fd5e1f38..dda452bed46f92 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -69,7 +69,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install @node-core/utils diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml index feb4021c2ecafe..7336900a73c099 100644 --- a/.github/workflows/coverage-linux-without-intl.yml +++ b/.github/workflows/coverage-linux-without-intl.yml @@ -64,7 +64,7 @@ jobs: allow-prereleases: true - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information @@ -87,6 +87,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: directory: ./coverage diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml index ec3e497c60475c..da798627d99a4b 100644 --- a/.github/workflows/coverage-linux.yml +++ b/.github/workflows/coverage-linux.yml @@ -64,7 +64,7 @@ jobs: allow-prereleases: true - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information @@ -87,6 +87,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index 3a207e91ed91ac..b04a0fcf227de8 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -100,6 +100,6 @@ jobs: - name: Clean tmp run: npx rimraf ./coverage/tmp - name: Upload - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: directory: ./coverage diff --git a/.github/workflows/create-release-proposal.yml b/.github/workflows/create-release-proposal.yml index c2161d6a8f5e2a..3c1437e0ac76fd 100644 --- a/.github/workflows/create-release-proposal.yml +++ b/.github/workflows/create-release-proposal.yml @@ -40,7 +40,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 1c57888bf6bdac..4bee3852d06fce 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -52,7 +52,7 @@ jobs: run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-arm64"))][0].version')" >> $GITHUB_ENV - name: Install Node.js id: setup-node - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NIGHTLY || matrix.node-version }} check-latest: true @@ -96,6 +96,48 @@ jobs: echo "WPT_REPORT=$(pwd)/out/wpt/wptreport.json" >> $GITHUB_ENV fi + # undici WPT Runner + - name: Set env.UNDICI_VERSION + if: ${{ env.WPT_REPORT != '' }} + run: | + UNDICI_VERSION=$(jq -r '.version' < deps/undici/src/package.json) + echo "UNDICI_VERSION=v$UNDICI_VERSION" >> $GITHUB_ENV + if [ "${UNDICI_VERSION%%.*}" -ge 7 ]; then + echo "UNDICI_WPT=current" >> $GITHUB_ENV + else + echo "UNDICI_WPT=legacy" >> $GITHUB_ENV + fi + # Checkout composite actions from the default branch since the + # version-specific checkout above overwrites .github/actions/ + - name: Checkout undici WPT actions + if: ${{ env.WPT_REPORT != '' }} + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + sparse-checkout: | + .github/actions/undici-wpt-current + .github/actions/undici-wpt-legacy + sparse-checkout-cone-mode: false + persist-credentials: false + path: _wpt_actions + clean: false + - name: Place undici WPT actions + if: ${{ env.WPT_REPORT != '' }} + run: | + mkdir -p .github/actions + cp -r _wpt_actions/.github/actions/undici-wpt-* .github/actions/ + - name: Run undici WPT (current) + if: ${{ env.UNDICI_WPT == 'current' }} + uses: ./.github/actions/undici-wpt-current + with: + undici-version: ${{ env.UNDICI_VERSION }} + wpt-report: ${{ env.WPT_REPORT }} + - name: Run undici WPT (legacy) + if: ${{ env.UNDICI_WPT == 'legacy' }} + uses: ./.github/actions/undici-wpt-legacy + with: + undici-version: ${{ env.UNDICI_VERSION }} + wpt-report: ${{ env.WPT_REPORT }} + # Upload artifacts - name: Clone report for upload if: ${{ env.WPT_REPORT != '' }} @@ -103,7 +145,7 @@ jobs: run: cp wptreport.json wptreport-${{ steps.setup-node.outputs.node-version }}.json - name: Upload GitHub Actions artifact if: ${{ env.WPT_REPORT != '' }} - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: path: out/wpt/wptreport-*.json name: WPT Report for ${{ steps.setup-node.outputs.node-version }} diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index 3de7da691246a7..80e7f8294d693f 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -19,7 +19,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 5cbf96d11626be..0b4b8736318b19 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -28,14 +28,14 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information run: npx envinfo - name: Build run: NODE=$(command -v node) make doc-only - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: docs path: out/doc diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 6633143c6c1ac8..ba9ce0c2e18826 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -25,7 +25,7 @@ jobs: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} @@ -33,7 +33,7 @@ jobs: run: tools/find-inactive-collaborators.mjs - name: Open pull request - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 # Creates a PR or update the Action's existing PR, or # no-op if the base branch is already up-to-date. env: diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index 42c3a95c4ecc5a..eb09e4e94a8ad4 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -34,7 +34,7 @@ jobs: repository: nodejs/TSC - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} @@ -42,7 +42,7 @@ jobs: run: tools/find-inactive-tsc.mjs >> $GITHUB_ENV - name: Open pull request - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 # Creates a PR or update the Action's existing PR, or # no-op if the base branch is already up-to-date. env: diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml index 08ff3c7b014af0..83b7cea221b0f5 100644 --- a/.github/workflows/license-builder.yml +++ b/.github/workflows/license-builder.yml @@ -21,7 +21,7 @@ jobs: with: persist-credentials: false - run: ./tools/license-builder.sh # Run the license builder tool - - uses: gr2m/create-or-update-pull-request-action@86ec1766034c8173518f61d2075cc2a173fb8c97 # v1.9.4 + - uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 # Creates a PR or update the Action's existing PR, or # no-op if the base branch is already up-to-date. env: diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml index 73617cc43cd012..68e316fbc4330d 100644 --- a/.github/workflows/lint-release-proposal.yml +++ b/.github/workflows/lint-release-proposal.yml @@ -73,8 +73,9 @@ jobs: ':(exclude)CHANGELOG.md' \ ':(exclude)src/node_version.h' \ ':(exclude)test/parallel/test-process-release.js' \ + ':(exclude)doc/abi_version_registry.json' \ ':(exclude)doc/api/' \ - ":(exclude)doc/changelogs/CHANGELOG_V$MAJOR.md")" ] + ":(exclude)doc/changelogs/")" ] - name: Validate CHANGELOG id: releaser-info run: | diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 4ac3f26dc66800..352bfd1e23bbea 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -29,7 +29,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -61,7 +61,7 @@ jobs: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -99,7 +99,7 @@ jobs: with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -149,7 +149,7 @@ jobs: persist-credentials: false sparse-checkout: '*.nix' sparse-checkout-cone-mode: false - - uses: cachix/install-nix-action@2126ae7fc54c9df00dd18f7f18754393182c73cd # v31.9.1 + - uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 - name: Lint Nix files run: | nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p 'nixfmt-tree' --run ' diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index 605a896541f2f3..9ca33943c968c5 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -7,6 +7,9 @@ name: Notify on Push permissions: contents: read +env: + NODE_VERSION: lts/* + jobs: notifyOnForcePush: name: Notify on Force Push on `main` @@ -33,6 +36,10 @@ jobs: # cannot use ubuntu-slim here because rtCamp/action-slack-notify is dockerized runs-on: ubuntu-24.04-arm steps: + - name: Install Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + node-version: ${{ env.NODE_VERSION }} - name: Validate commits run: echo "$COMMITS" | npx -q core-validate-commit - id: commit-check diff --git a/.github/workflows/post-release.yml b/.github/workflows/post-release.yml index 87320f3f51da45..2fb374e912d10f 100644 --- a/.github/workflows/post-release.yml +++ b/.github/workflows/post-release.yml @@ -20,9 +20,10 @@ jobs: steps: - name: Trigger update-links workflow on nodejs/release-cloudflare-worker run: | - gh workflow run update-links.yml --repo nodejs/release-cloudflare-worker + gh workflow run update-links.yml --repo nodejs/release-cloudflare-worker -f version=$VERSION env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} + VERSION: ${{ inputs.version || github.event.release.tag_name }} - name: Trigger create-release-post workflow on nodejs/nodejs.org run: | diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fa8263a710ddd1..07f05ecbbca57f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@a90bcbc6539c36a85cdfeb73f7e2f433735f215b # v2.15.0 + uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs @@ -67,7 +67,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload artifact - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: SARIF file path: results.sarif @@ -75,6 +75,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/upload-sarif@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3 with: sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000000000..704967c24e62ec --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,50 @@ +name: Close stale +on: + workflow_dispatch: + schedule: + # Run every day at 1:00 AM UTC. + - cron: 0 1 * * * + +# yamllint disable rule:empty-lines +env: + CLOSE_MESSAGE: > + This {0} has been automatically closed after 30 days of inactivity + following its stale status (no activity for a total of 240 days). + + If this is still relevant, feel free to reopen it or leave a comment + with additional details so we can continue the discussion. + + WARN_MESSAGE: > + This {0} has been marked as stale due to 210 days of inactivity. + + It will be automatically closed in 30 days if no further activity occurs. + If this is still relevant, please leave a comment or update it to keep it open. +# yamllint enable + +permissions: + contents: read + +jobs: + stale: + permissions: + issues: write # for actions/stale to close stale issues + pull-requests: write # for actions/stale to close stale PRs + if: github.repository == 'nodejs/node' + runs-on: ubuntu-slim + steps: + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 210 + days-before-close: 30 + stale-issue-label: stale + exempt-issue-labels: never-stale, confirmed-bug + close-issue-message: ${{ format(env.CLOSE_MESSAGE, 'issue') }} + stale-issue-message: ${{ format(env.WARN_MESSAGE, 'issue') }} + stale-pr-label: stale + exempt-pr-labels: never-stale + close-pr-message: ${{ format(env.CLOSE_MESSAGE, 'pull request') }} + stale-pr-message: ${{ format(env.WARN_MESSAGE, 'pull request') }} + # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits + operations-per-run: 500 + remove-stale-when-updated: true diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index ebcff77ed90d7e..6471391171b0c5 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -61,7 +61,7 @@ jobs: allow-prereleases: true - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 6d49f08991cf86..7c1baf9890461e 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -6,6 +6,9 @@ on: - .mailmap - README.md - vcbuild.bat + - tools/actions/** + - tools/clang-format/** + - tools/dep_updaters/** - test/internet/** - '**.nix' - .github/** @@ -21,6 +24,9 @@ on: - .mailmap - README.md - vcbuild.bat + - tools/actions/** + - tools/clang-format/** + - tools/dep_updaters/** - test/internet/** - '**.nix' - .github/** @@ -71,15 +77,20 @@ jobs: allow-prereleases: true - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information run: npx envinfo - name: Build - run: make -C node build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn --v8-enable-temporal-support" + working-directory: node + run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn --v8-enable-temporal-support" - name: Test - run: make -C node test-ci -j1 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9" + working-directory: node + run: make test-ci -j1 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9" + - name: Ensure running tests did not cause any change in the tree + working-directory: node + run: git add -A && git diff --name-only --exit-code --staged - name: Re-run test in a folder whose name contains unusual chars run: | mv node "$DIR" diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index e227877f38a007..e17ac27020cc97 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -100,7 +100,7 @@ jobs: rustup --version - name: Set up sccache if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@7d986dd989559c6ecdb630a3fd2557667be217ad # v0.0.9 + uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 with: version: v0.12.0 - name: Environment Information diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml index 410a92489c8dfd..26e55b07078b16 100644 --- a/.github/workflows/test-shared.yml +++ b/.github/workflows/test-shared.yml @@ -47,6 +47,7 @@ on: - vcbuild.bat - .** - '!.github/workflows/test-shared.yml' + - '!.github/actions/build-shared/**' types: [opened, synchronize, reopened, ready_for_review] push: branches: @@ -97,6 +98,7 @@ on: - vcbuild.bat - .** - '!.github/workflows/test-shared.yml' + - '!.github/actions/build-shared/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -115,12 +117,10 @@ jobs: runs-on: ubuntu-slim steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - if: ${{ github.event_name != 'workflow_dispatch' }} with: persist-credentials: false - name: Make tarball - if: ${{ github.event_name != 'workflow_dispatch' }} run: | export DATESTRING=$(date "+%Y-%m-%d") export COMMIT=$(git rev-parse --short=10 "$GITHUB_SHA") @@ -129,8 +129,7 @@ jobs: DISTTYPE: nightly - name: Upload tarball artifact - if: ${{ github.event_name != 'workflow_dispatch' }} - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: tarballs path: '*.tar.gz' @@ -144,8 +143,9 @@ jobs: include: - runner: ubuntu-24.04 system: x86_64-linux - - runner: ubuntu-24.04-arm - system: aarch64-linux + # built separately in build-aarch64-linux-v8 + # - runner: ubuntu-24.04-arm + # system: aarch64-linux - runner: macos-15-intel system: x86_64-darwin - runner: macos-latest @@ -153,50 +153,128 @@ jobs: name: '${{ matrix.system }}: with shared libraries' runs-on: ${{ matrix.runner }} steps: - - uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 - if: ${{ github.event_name != 'workflow_dispatch' }} + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + sparse-checkout: .github/actions + sparse-checkout-cone-mode: false + - uses: ./.github/actions/build-shared + name: Build and test Node.js + with: + cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }} + extra-nix-flags: | + --arg useSeparateDerivationForV8 true \ + ${{ endsWith(matrix.system, '-darwin') && '--arg withAmaro false --arg withLief false --arg withSQLite false --arg withFFI false --arg extraConfigFlags ''["--without-inspector" "--without-node-options"]'' \' || '\' }} + + build-aarch64-linux-v8: + needs: build-tarball + runs-on: ubuntu-24.04-arm + name: 'aarch64-linux: Cache V8 build' + outputs: + local-cache: ${{ steps.upload.outcome != 'skipped' && 'true' || '' }} + matrix: ${{ steps.query.outputs.matrix }} + env: + HAS_CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN && 'true' }} + steps: + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: tarballs path: tarballs - name: Extract tarball - if: ${{ github.event_name != 'workflow_dispatch' }} + shell: bash run: | tar xzf tarballs/*.tar.gz -C "$RUNNER_TEMP" echo "TAR_DIR=$RUNNER_TEMP/$(basename tarballs/*.tar.gz .tar.gz)" >> "$GITHUB_ENV" - - uses: cachix/install-nix-action@2126ae7fc54c9df00dd18f7f18754393182c73cd # v31.9.1 + - uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 with: extra_nix_config: sandbox = true - - uses: cachix/cachix-action@3ba601ff5bbb07c7220846facfa2cd81eeee15a1 # v16 + - name: Evaluate V8 derivation, check its cache status + id: v8-drv + run: | + V8_DRV=$( + nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/shell.nix { useSeparateDerivationForV8=true; }).buildInputs" + ) + V8_STORE_PATH=$(nix-store -q --outputs "$V8_DRV") + echo "V8_DRV=$V8_DRV" >> "$GITHUB_OUTPUT" + set -x + [ "$(curl -ISsw "%{http_code}" -o /dev/null "https://nodejs.cachix.org/$(basename ${V8_STORE_PATH%-v8-*}).narinfo")" != "200" ] || + echo "ALREADY_CACHED=true" >> "$GITHUB_OUTPUT" + + - uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17 + if: ${{ steps.v8-drv.outputs.ALREADY_CACHED != 'true' }} with: name: nodejs authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - - name: Configure sccache - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + - name: Build V8 to cache it + if: ${{ steps.v8-drv.outputs.ALREADY_CACHED != 'true' }} + run: nix-store --export "$(nix-build "$V8_DRV")" > libv8-aarch64-linux.nar + env: + V8_DRV: ${{ steps.v8-drv.outputs.V8_DRV }} + + - name: Upload libv8-aarch64-linux.nar + if: ${{ steps.v8-drv.outputs.ALREADY_CACHED != 'true' && env.HAS_CACHIX_AUTH_TOKEN != 'true' }} + id: upload + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - script: | - core.exportVariable('SCCACHE_GHA_ENABLED', 'on'); - core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on'); - core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('NIX_SCCACHE', '(import {}).sccache'); - - - name: Build Node.js and run tests + name: libv8-aarch64-linux.nar + path: libv8-aarch64-linux.nar + + - name: Collect matrix of support OpenSSL versions + id: query run: | - nix-shell \ - -I "nixpkgs=$TAR_DIR/tools/nix/pkgs.nix" \ - --pure --keep TAR_DIR --keep FLAKY_TESTS \ - --keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \ - --arg loadJSBuiltinsDynamically false \ - --arg useSeparateDerivationForV8 true \ - --arg ccache "${NIX_SCCACHE:-null}" \ - --arg devTools '[]' \ - --arg benchmarkTools '[]' \ - ${{ endsWith(matrix.system, '-darwin') && '--arg withAmaro false --arg withLief false --arg withSQLite false --arg extraConfigFlags ''["--without-inspector" "--without-node-options"]'' \' || '\' }} - --run ' - make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS" - ' "$TAR_DIR/shell.nix" + echo "matrix=$( + nix-instantiate --eval --strict --json -E " + let + matrix = import $TAR_DIR/tools/nix/openssl-matrix.nix {}; + in + builtins.map (attr: { inherit attr; inherit (builtins.getAttr attr matrix) name; }) (builtins.attrNames matrix) + " + )" >> "$GITHUB_OUTPUT" + + # Builds and tests Node.js with shared libraries against every supported + # OpenSSL release version available in the repo-pinned nixpkgs. The default + # shared `openssl` from tools/nix/sharedLibDeps.nix is overridden per matrix + # entry, while all other shared libs remain at their defaults. Only runs on + # a single runner/system (aarch64-linux) to keep the matrix to a minimum. + build-openssl: + needs: build-aarch64-linux-v8 + strategy: + fail-fast: false + matrix: + openssl: ${{ fromJSON(needs.build-aarch64-linux-v8.outputs.matrix) }} + name: 'aarch64-linux: with shared ${{ matrix.openssl.name }}' + runs-on: ubuntu-24.04-arm + continue-on-error: false + env: + OPENSSL_ATTR: ${{ matrix.openssl.attr }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + sparse-checkout: .github/actions + sparse-checkout-cone-mode: false + + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + if: ${{ needs.build-aarch64-linux-v8.outputs.local-cache }} + with: + name: libv8-aarch64-linux.nar + + - uses: ./.github/actions/build-shared + name: Build and test Node.js + with: + cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }} + # Override just the `openssl` attr of the default shared-lib set with + # the matrix-selected nixpkgs attribute (e.g. `openssl_3_6`). All + # other shared libs (brotli, cares, libuv, …) keep their defaults. + # `permittedInsecurePackages` whitelists just the matrix-selected + # release (e.g. `openssl-1.1.1w`) so EOL-with-extended-support + # cycles evaluate without relaxing nixpkgs' meta check globally. + extra-nix-flags: | + --arg useSeparateDerivationForV8 ${{ needs.build-aarch64-linux-v8.outputs.local-cache && '"$(nix-store --import < libv8-aarch64-linux.nar)"' || 'true' }} \ + --arg sharedLibDeps "(import $TAR_DIR/tools/nix/sharedLibDeps.nix {}) // { + openssl = (import $TAR_DIR/tools/nix/openssl-matrix.nix {}).$OPENSSL_ATTR; + }" \ diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml index 3901a589ab2fa2..5e90d16c1b1dd4 100644 --- a/.github/workflows/timezone-update.yml +++ b/.github/workflows/timezone-update.yml @@ -42,7 +42,7 @@ jobs: run: | echo "Comparing current version ${{ env.current_version }} to new version ${{ env.new_version }}" - - run: ./tools/update-timezone.mjs + - run: ./tools/dep_updaters/update-timezone.mjs if: ${{ env.new_version != env.current_version }} - name: Update the expected timezone version in test @@ -51,13 +51,14 @@ jobs: - name: Open Pull Request if: ${{ env.new_version != env.current_version }} - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 # Create a PR or update the Action's existing PR + # Create a PR or update the Action's existing PR + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: author: Node.js GitHub Bot body: | - This PR was generated by `.github/workflows/timezone-update.yml` and `tools/update-timezone.mjs`. + This PR was generated by `.github/workflows/timezone-update.yml` and `tools/dep_updaters/update-timezone.mjs`. Updates the ICU files as per the instructions present in https://github.com/nodejs/node/blob/main/doc/contributing/maintaining/maintaining-icu.md#time-zone-data diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 59d8e6a3fe84d3..c4ac6bc77f70aa 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -26,6 +26,7 @@ on: - histogram - icu - inspector_protocol + - libffi - libuv - llhttp - minimatch @@ -161,6 +162,14 @@ jobs: cat temp-output tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true rm temp-output + - id: libffi + subsystem: deps + label: dependencies, ffi + run: | + ./tools/dep_updaters/update-libffi.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: libuv subsystem: deps label: dependencies @@ -198,7 +207,7 @@ jobs: # dont-land labels are there so we can guarantee released versions of # Node.js can be built with the same env along the whole release line life – or # at least we can detect and document necessary updates. - label: tools, dont-land-on-v20.x, dont-land-on-v22.x, dont-land-on-v24.x, dont-land-on-v25.x + label: tools, dont-land-on-v22.x, dont-land-on-v24.x, dont-land-on-v26.x run: | ./tools/dep_updaters/update-nixpkgs-pin.sh > temp-output cat temp-output @@ -298,10 +307,6 @@ jobs: tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true rm temp-output steps: - - name: Setup Git config - run: | - git config --global user.name "Node.js GitHub Bot" - git config --global user.email "github-bot@iojs.org" - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id with: @@ -316,7 +321,7 @@ jobs: allow-prereleases: true - name: Set up Nix if: matrix.id == 'nixpkgs-unstable' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id) - uses: cachix/install-nix-action@2126ae7fc54c9df00dd18f7f18754393182c73cd # v31.9.1 + uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 - run: ${{ matrix.run }} if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id env: @@ -325,7 +330,7 @@ jobs: if: env.COMMIT_MSG == '' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id) run: | echo "COMMIT_MSG=${{ matrix.subsystem }}: update ${{ matrix.id }} to ${{ env.NEW_VERSION }}" >> "$GITHUB_ENV" - - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id # Creates a PR or update the Action's existing PR, or # no-op if the base branch is already up-to-date. @@ -337,3 +342,5 @@ jobs: labels: ${{ matrix.label }} title: '${{ matrix.subsystem }}: update ${{ matrix.id }} to ${{ env.NEW_VERSION }}' body: This is an automated update of ${{ matrix.id }} to ${{ env.NEW_VERSION }}. + committer: ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com> + author: Node.js GitHub Bot diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml index 162af042e6d7ad..b93e37e7f4b3bc 100644 --- a/.github/workflows/update-openssl.yml +++ b/.github/workflows/update-openssl.yml @@ -12,7 +12,8 @@ permissions: jobs: openssl-update: if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim + # Cannot use ubuntu-slim here because the update script requires Docker + runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: @@ -27,7 +28,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} - name: Create PR with first commit if: env.NEW_VERSION - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 # Creates a PR with the new OpenSSL source code committed env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} @@ -43,14 +44,14 @@ jobs: - name: Regenerate platform specific files if: env.NEW_VERSION run: | - sudo apt install -y nasm libtext-template-perl + sudo apt update && sudo apt install -y nasm libtext-template-perl ./tools/dep_updaters/update-openssl.sh regenerate env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} - name: Add second commit # Adds a second commit to the PR with the generated platform-dependent files if: env.NEW_VERSION - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: diff --git a/.github/workflows/update-v8.yml b/.github/workflows/update-v8.yml index 326362de1a49b7..8d2db8261cf455 100644 --- a/.github/workflows/update-v8.yml +++ b/.github/workflows/update-v8.yml @@ -20,7 +20,7 @@ jobs: with: persist-credentials: false - name: Cache node modules and update-v8 - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 id: cache-v8-npm env: cache-name: cache-v8-npm @@ -30,7 +30,7 @@ jobs: ~/.npm key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install @node-core/utils @@ -45,7 +45,7 @@ jobs: cat temp-output tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true rm temp-output - - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 + - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 # Creates a PR or update the Action's existing PR, or # no-op if the base branch is already up-to-date. with: diff --git a/.github/workflows/update-wpt.yml b/.github/workflows/update-wpt.yml index b9287b11cf7eea..7e9a6a30fe64d9 100644 --- a/.github/workflows/update-wpt.yml +++ b/.github/workflows/update-wpt.yml @@ -32,7 +32,7 @@ jobs: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_VERSION }} @@ -68,7 +68,7 @@ jobs: SUBSYSTEM: ${{ matrix.subsystem }} - name: Open or update PR for the subsystem update - uses: gr2m/create-or-update-pull-request-action@77596e3166f328b24613f7082ab30bf2d93079d5 + uses: gr2m/create-or-update-pull-request-action@b65137ca591da0b9f43bad7b24df13050ea45d1b # v1.10.1 with: # The create-or-update-pull-request-action matches the branch name by prefix, # which is why we need to add the -wpt suffix. If we dont do that, we risk matching wrong PRs, diff --git a/BUILDING.md b/BUILDING.md index 4fb7521190b1fc..632833c2a66697 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -104,26 +104,25 @@ Node.js does not support a platform version if a vendor has expired support for it. In other words, Node.js does not support running on End-of-Life (EoL) platforms. This is true regardless of entries in the table below. -| Operating System | Architectures | Versions | Support Type | Notes | -| ---------------- | ---------------- | --------------------------------- | ------------ | ------------------------------------ | -| GNU/Linux | x64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 | -| GNU/Linux | x64 | kernel >= 3.10, musl >= 1.1.19 | Experimental | e.g. Alpine 3.8 | -| GNU/Linux | x86 | kernel >= 3.10, glibc >= 2.17 | Experimental | Downgraded as of Node.js 10 | -| GNU/Linux | arm64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 | -| GNU/Linux | armv7 | kernel >= 4.18[^1], glibc >= 2.28 | Experimental | Downgraded as of Node.js 24 | -| GNU/Linux | armv6 | kernel >= 4.14, glibc >= 2.24 | Experimental | Downgraded as of Node.js 12 | -| GNU/Linux | ppc64le >=power9 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. Ubuntu 20.04, RHEL 8 | -| GNU/Linux | s390x >=z14 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. RHEL 8 | -| GNU/Linux | loong64 | kernel >= 5.19, glibc >= 2.36 | Experimental | | -| GNU/Linux | riscv64 | kernel >= 5.19, glibc >= 2.36 | Experimental | | -| Windows | x64 | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] | -| Windows | arm64 | >= Windows 10 | Tier 2 | | -| macOS | x64 | >= 13.5 | Tier 1 | For notes about compilation see [^4] | -| macOS | arm64 | >= 13.5 | Tier 1 | | -| SmartOS | x64 | >= 18 | Tier 2 | | -| AIX | ppc64be >=power9 | >= 7.2 TL04 | Tier 2 | | -| FreeBSD | x64 | >= 13.2 | Experimental | | -| OpenHarmony | arm64 | >= 5.0 | Experimental | | +| Operating System | Architectures | Versions | Support Type | Notes | +| ---------------- | ---------------- | --------------------------------- | ------------ | ---------------------------------------------- | +| GNU/Linux | x64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 | +| GNU/Linux | x64 | kernel >= 3.10, musl >= 1.1.19 | Experimental | e.g. Alpine 3.8 | +| GNU/Linux | x86 | kernel >= 3.10, glibc >= 2.17 | Experimental | Downgraded as of Node.js 10 | +| GNU/Linux | arm64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 | +| GNU/Linux | armv7 | kernel >= 4.18[^1], glibc >= 2.28 | Experimental | Downgraded as of Node.js 24 | +| GNU/Linux | ppc64le >=power9 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. Ubuntu 20.04, RHEL 8 | +| GNU/Linux | s390x >=z14 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. RHEL 8 | +| GNU/Linux | loong64 | kernel >= 5.19, glibc >= 2.36 | Experimental | | +| GNU/Linux | riscv64 | kernel >= 5.19, glibc >= 2.36 | Experimental | GCC >= 14 or Clang >= 19 for native builds[^7] | +| Windows | x64 | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] | +| Windows | arm64 | >= Windows 10 | Tier 2 | | +| macOS | x64 | >= 13.5 | Tier 1 | For notes about compilation see [^4] | +| macOS | arm64 | >= 13.5 | Tier 1 | | +| SmartOS | x64 | >= 18 | Tier 2 | | +| AIX | ppc64be >=power9 | >= 7.2 TL04 | Tier 2 | | +| FreeBSD | x64 | >= 13.2 | Experimental | | +| OpenHarmony | arm64 | >= 5.0 | Experimental | | @@ -148,6 +147,13 @@ platforms. This is true regardless of entries in the table below. [^4]: Our macOS Binaries are compiled with 13.5 as a target. Xcode 16 is required to compile. +[^7]: Native riscv64 builds need GCC >= 14 or Clang >= 19 because V8 + includes `` and uses `target("arch=+v")` in + `deps/v8/src/base/cpu.cc`. GCC 13's `riscv_vector.h` errors out without + `-march=rv64gcv` and doesn't support the `target` attribute at all. + Cross-compilation from x64 is unaffected (the code is behind + `V8_HOST_ARCH_RISCV64`). + ### Supported toolchains diff --git a/CHANGELOG.md b/CHANGELOG.md index 9356734ed6f477..ae815048c3cfbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,8 @@ release. -26.0.0
+26.1.0
+26.0.0
25.9.0
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ae787bc6d8e84f..54296234a304d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,6 +19,7 @@ works. * [Code of Conduct](#code-of-conduct) * [Issues](#issues) * [Pull Requests](#pull-requests) +* [Automation and bots](#automation-and-bots) * [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11) ## [Code of Conduct](./doc/contributing/code-of-conduct.md) @@ -47,6 +48,18 @@ dependencies, and tools contained in the `nodejs/node` repository. * [Reviewing Pull Requests](./doc/contributing/pull-requests.md#reviewing-pull-requests) * [Notes](./doc/contributing/pull-requests.md#notes) +## Automation and bots + +An automation tool or bot that is not managed by the Node.js project +must seek explicit authorization by opening an issue with their owner +in [nodejs/admin](https://github.com/nodejs/admin) before interacting +with the project. + +Interactions (including Issues, Comments, Pull Requests and Reviews) made +by an automation that was not authorized by Node.js collaborators are +subject to immediate moderation enforcement on the automation and owner +without notice. + ## Developer's Certificate of Origin 1.1 ```text diff --git a/Makefile b/Makefile index 231bbe11f4c011..9c9aa320963c8e 100644 --- a/Makefile +++ b/Makefile @@ -318,7 +318,7 @@ v8: ## Build deps/v8. tools/make-v8.sh $(V8_ARCH).$(BUILDTYPE_LOWER) $(V8_BUILD_OPTIONS) .PHONY: jstest -jstest: build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests ## Run addon tests and JS tests. +jstest: build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests build-ffi-tests ## Run addon tests and JS tests. $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \ $(TEST_CI_ARGS) \ --skip-tests=$(CI_SKIP_TESTS) \ @@ -344,6 +344,7 @@ test: all ## Run default tests and build docs. $(MAKE) -s build-js-native-api-tests $(MAKE) -s build-node-api-tests $(MAKE) -s build-sqlite-tests + $(MAKE) -s build-ffi-tests $(MAKE) -s cctest $(MAKE) -s jstest @@ -353,6 +354,7 @@ test-only: all ## Run default tests without building the docs. $(MAKE) build-js-native-api-tests $(MAKE) build-node-api-tests $(MAKE) build-sqlite-tests + $(MAKE) build-ffi-tests $(MAKE) cctest $(MAKE) jstest $(MAKE) tooltest @@ -364,6 +366,7 @@ test-cov: all ## Run coverage tests. $(MAKE) build-js-native-api-tests $(MAKE) build-node-api-tests $(MAKE) build-sqlite-tests + $(MAKE) build-ffi-tests $(MAKE) cctest CI_SKIP_TESTS=$(COV_SKIP_TESTS) $(MAKE) jstest @@ -388,17 +391,15 @@ DOC_KIT ?= tools/doc/node_modules/@node-core/doc-kit/bin/cli.mjs node_use_openssl_and_icu = $(call available-node,"-p" \ "process.versions.openssl != undefined && process.versions.icu != undefined") -test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/node_modules +test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/addon-verify.mjs @if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \ echo "Skipping .docbuildstamp (no crypto and/or no ICU)"; \ else \ $(RM) -r test/addons/??_*/; \ $(call available-node, \ - $(DOC_KIT) generate \ - -t addon-verify \ - -i doc/api/addons.md \ - -o test/addons/ \ - --type-map doc/type-map.json \ + tools/doc/addon-verify.mjs \ + --input doc/api/addons.md \ + --output test/addons/ \ ) \ [ $$? -eq 0 ] && touch $@; \ fi @@ -542,6 +543,29 @@ else build-sqlite-tests: endif +FFI_BINDING_GYPS := $(wildcard test/ffi/*/binding.gyp) + +FFI_BINDING_SOURCES := \ + $(wildcard test/ffi/*/*.c) \ + $(wildcard test/ffi/*/*.def) + +ifndef NOFFI +# Depends on $(NODE_EXE) as order-only to avoid ETXTBSY on AIX when make +# tries to execute node while it is still being linked in parallel. +test/ffi/.buildstamp: $(ADDONS_PREREQS) \ + $(FFI_BINDING_GYPS) $(FFI_BINDING_SOURCES) | $(NODE_EXE) + @$(call run_build_addons,"$$PWD/test/ffi",$@) +else +test/ffi/.buildstamp: +endif + +.PHONY: build-ffi-tests +ifndef NOFFI +build-ffi-tests: | test/ffi/.buildstamp ## Build FFI tests. +else +build-ffi-tests: +endif + .PHONY: clear-stalled clear-stalled: ## Clear any stalled processes. $(info Clean up any leftover processes but don't error if found.) @@ -552,7 +576,7 @@ clear-stalled: ## Clear any stalled processes. fi .PHONY: test-build -test-build: | all build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests ## Build all tests. +test-build: | all build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests build-ffi-tests ## Build all tests. .PHONY: test-build-js-native-api test-build-js-native-api: all build-js-native-api-tests ## Build JS Native-API tests. @@ -563,6 +587,8 @@ test-build-node-api: all build-node-api-tests ## Build Node-API tests. .PHONY: test-build-sqlite test-build-sqlite: all build-sqlite-tests ## Build SQLite tests. +.PHONY: test-build-ffi +test-build-ffi: all build-ffi-tests ## Build FFI tests. .PHONY: test-all test-all: test-build ## Run default tests with both Debug and Release builds. @@ -591,7 +617,7 @@ endif # Related CI job: node-test-commit-arm-fanned test-ci-native: LOGLEVEL := info ## Build and test addons without building anything else. -test-ci-native: | benchmark/napi/.buildstamp test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp test/sqlite/.buildstamp +test-ci-native: | benchmark/napi/.buildstamp test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp test/sqlite/.buildstamp test/ffi/.buildstamp $(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \ --mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \ $(TEST_CI_ARGS) $(CI_NATIVE_SUITES) @@ -614,7 +640,7 @@ test-ci-js: | clear-stalled ## Build and test JavaScript with building anything .PHONY: test-ci # Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned test-ci: LOGLEVEL := info ## Build and test everything (CI). -test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests doc-only +test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests build-ffi-tests doc-only out/Release/cctest --gtest_output=xml:out/junit/cctest.xml $(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \ --mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \ @@ -632,6 +658,7 @@ test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tes build-ci: ## Build everything (CI). $(PYTHON) ./configure --verbose $(CONFIG_FLAGS) $(MAKE) + $(MAKE) build-ffi-tests .PHONY: run-ci # Run by CI tests, exceptions: @@ -734,6 +761,16 @@ test-sqlite-clean: ## Remove SQLite testing artifacts. $(RM) -r test/sqlite/*/build $(RM) test/sqlite/.buildstamp +.PHONY: test-ffi +test-ffi: test-build-ffi ## Run FFI tests. + $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) ffi + +.PHONY: test-ffi-clean +.NOTPARALLEL: test-ffi-clean +test-ffi-clean: ## Remove FFI testing artifacts. + $(RM) -r test/ffi/*/build + $(RM) test/ffi/.buildstamp + .PHONY: test-addons test-addons: test-build test-js-native-api test-node-api ## Run addon tests. $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) addons @@ -1207,11 +1244,19 @@ pkg-upload: pkg ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg" ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg.done" -$(TARBALL): release-only doc-only +TARBALL_DEPS=release-only +ifneq ($(SKIP_SHARED_DEPS), 1) +TARBALL_DEPS+= doc-only +endif + +$(TARBALL): $(TARBALL_DEPS) git checkout-index -a -f --prefix=$(TARNAME)/ +ifneq ($(SKIP_SHARED_DEPS), 1) mkdir -p $(TARNAME)/doc/api cp doc/node.1 $(TARNAME)/doc/node.1 cp -r out/doc/api/* $(TARNAME)/doc/api/ +endif + sed 's/fileset = fileset.intersection (fileset.gitTracked root)/fileset =/' tools/nix/v8.nix > $(TARNAME)/tools/nix/v8.nix $(RM) -r $(TARNAME)/.editorconfig $(RM) -r $(TARNAME)/.git* $(RM) -r $(TARNAME)/.mailmap @@ -1227,6 +1272,7 @@ ifeq ($(SKIP_SHARED_DEPS), 1) $(RM) -r $(TARNAME)/deps/icu-small $(RM) -r $(TARNAME)/deps/icu-tmp $(RM) -r $(TARNAME)/deps/LIEF + $(RM) -r $(TARNAME)/deps/libffi $(RM) -r $(TARNAME)/deps/llhttp $(RM) -r $(TARNAME)/deps/merve $(RM) -r $(TARNAME)/deps/nbytes @@ -1251,7 +1297,6 @@ endif $(RM) -r $(TARNAME)/deps/v8/samples $(RM) -r $(TARNAME)/deps/v8/tools/profviz $(RM) -r $(TARNAME)/deps/v8/tools/run-tests.py - $(RM) -r $(TARNAME)/doc/images # too big $(RM) -r $(TARNAME)/test*.tap $(RM) -r $(TARNAME)/tools/cpplint.py $(RM) -r $(TARNAME)/tools/eslint @@ -1501,6 +1546,7 @@ LINT_CPP_FILES = $(filter-out $(LINT_CPP_EXCLUDE), $(wildcard \ test/embedding/*.cc \ test/embedding/*.h \ test/sqlite/*/*.c \ + test/ffi/*/*.c \ test/fixtures/*.c \ test/js-native-api/*/*.cc \ test/node-api/*/*.cc \ @@ -1525,6 +1571,7 @@ FORMAT_CPP_FILES += $(wildcard \ test/node-api/*/*.c \ test/node-api/*/*.h \ test/sqlite/*/*.c \ + test/ffi/*/*.c \ ) # Code blocks don't have newline at the end, diff --git a/README.md b/README.md index d9148ca44ab0cd..c137f44f4b7a4e 100644 --- a/README.md +++ b/README.md @@ -397,8 +397,6 @@ For information about the governance of the Node.js project, see **Matteo Collina** <> (he/him) - [Support me](https://github.com/sponsors/mcollina) * [meixg](https://github.com/meixg) - **Xuguang Mei** <> (he/him) -* [mhdawson](https://github.com/mhdawson) - - **Michael Dawson** <> (he/him) * [MoLow](https://github.com/MoLow) - **Moshe Atlow** <> (he/him) * [MrJithil](https://github.com/MrJithil) - @@ -453,8 +451,6 @@ For information about the governance of the Node.js project, see **Ulises Gascón** <> (he/him) * [vmoroz](https://github.com/vmoroz) - **Vladimir Morozov** <> (he/him) -* [VoltrexKeyva](https://github.com/VoltrexKeyva) - - **Mohammed Keyvanzadeh** <> (he/him) * [watilde](https://github.com/watilde) - **Daijiro Wachi** <> (he/him) * [zcbenz](https://github.com/zcbenz) - @@ -611,6 +607,8 @@ For information about the governance of the Node.js project, see **Matthew Loring** <> * [Mesteery](https://github.com/Mesteery) - **Mestery** <> (he/him) +* [mhdawson](https://github.com/mhdawson) - + **Michael Dawson** <> (he/him) * [micnic](https://github.com/micnic) - **Nicu Micleușanu** <> (he/him) * [mikeal](https://github.com/mikeal) - @@ -717,6 +715,8 @@ For information about the governance of the Node.js project, see **Vladimir de Turckheim** <> (he/him) * [vkurchatkin](https://github.com/vkurchatkin) - **Vladimir Kurchatkin** <> +* [VoltrexKeyva](https://github.com/VoltrexKeyva) - + **Mohammed Keyvanzadeh** <> (he/him) * [vsemozhetbyt](https://github.com/vsemozhetbyt) - **Vse Mozhet Byt** <> (he/him) * [watson](https://github.com/watson) - @@ -747,8 +747,6 @@ maintaining the Node.js project. **Sangchul Lee** <<1ilsang.dev@gmail.com>> (he/him) * [atlowChemi](https://github.com/atlowChemi) - **Chemi Atlow** <> (he/him) -* [Ayase-252](https://github.com/Ayase-252) - - **Qingyu Deng** <> * [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** <> * [bmuenzenmeyer](https://github.com/bmuenzenmeyer) - @@ -773,16 +771,12 @@ maintaining the Node.js project. **Kevin Eady** <> (he/him) * [marsonya](https://github.com/marsonya) - **Akhil Marsonya** <> (he/him) -* [meixg](https://github.com/meixg) - - **Xuguang Mei** <> (he/him) * [milesguicent](https://github.com/milesguicent) - **Miles Guicent** <> (he/him) * [preveen-stack](https://github.com/preveen-stack) - **Preveen Padmanabhan** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - **Darshan Sen** <> (he/him) -* [VoltrexKeyva](https://github.com/VoltrexKeyva) - - **Mohammed Keyvanzadeh** <> (he/him) Triagers follow the [Triage Guide](./doc/contributing/issues.md#triaging-a-bug-report) when responding to new issues. diff --git a/SECURITY.md b/SECURITY.md index d44018e915ee80..0e88d7b50702fa 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -24,9 +24,7 @@ response or engagement within 14 days, escalation is also appropriate. ### Node.js bug bounty program -The Node.js project engages in an official bug bounty program for security -researchers and responsible public disclosures. The program is managed through -the HackerOne platform. See for further details. +The Node.js project no longer has a bug bounty program. ## Reporting a bug in a third-party module @@ -152,28 +150,33 @@ does not trust is considered a vulnerability: the correct use of Node.js APIs. * The unavailability of the runtime, including the unbounded degradation of its performance. -* Memory leaks qualify as vulnerabilities when all of the following criteria are met: - * The API is being correctly used. - * The API doesn't have a warning against its usage in a production environment. - * The API is public and documented. - * The API is on stable (2.0) status. - * The memory leak is significant enough to cause a denial of service quickly - or in a context not controlled by the user (for example, HTTP parsing). - * The memory leak is directly exploitable by an untrusted source without requiring application mistakes. - * The leak cannot be reasonably mitigated through standard operational practices (like process recycling). - * The leak occurs deterministically under normal usage patterns rather than edge cases. - * The leak occurs at a rate that would cause practical resource exhaustion within a practical timeframe under - typical workloads. - * The attack demonstrates [asymmetric resource consumption](https://cwe.mitre.org/data/definitions/405.html), - where the attacker expends significantly fewer resources than what's required by the server to process the - attack. Attacks requiring comparable resources on the attacker's side (which can be mitigated through common - practices like rate limiting) may not qualify. If Node.js loads configuration files or runs code by default (without a specific request from the user), and this is not documented, it is considered a vulnerability. Vulnerabilities related to this case may be fixed by a documentation update. +#### Denial of Service (DoS) vulnerabilities + +For a behavior to be considered a DoS vulnerability, the PoC must meet the following criteria: + +* The API is being correctly used. +* The API doesn't have a warning against its usage in a production environment. +* The API is public and documented. If the API comes from JavaScript, the behavior must be + well-defined in the [ECMAScript specification](https://tc39.es/ecma262/). +* The API has stable (2.0) status. +* The behavior is significant enough to cause a denial of service quickly + or in a context not controlled by the Node.js application developer (for example, HTTP parsing). +* The behavior is directly exploitable by an untrusted source without requiring application mistakes. +* The behavior cannot be reasonably mitigated through standard operational practices (like process recycling). +* The behavior occurs deterministically under normal usage patterns rather than edge cases. +* The behavior occurs at a rate that would cause practical resource exhaustion within a practical timeframe under + typical workloads. +* The attack demonstrates [asymmetric resource consumption](https://cwe.mitre.org/data/definitions/405.html), + where the attacker expends significantly fewer resources than what's required by the server to process the + attack. Attacks requiring comparable resources on the attacker's side (which can be mitigated through common + practices like rate limiting) may not qualify. + **Node.js does NOT trust**: * Data received from the remote end of inbound network connections @@ -210,7 +213,7 @@ then untrusted input must not lead to arbitrary JavaScript code execution. along with anything under the control of the operating system. * The code it is asked to run, including JavaScript, WASM and native code, even if said code is dynamically loaded, e.g., all dependencies installed from the - npm registry. + npm registry or libraries loaded via `node:ffi`. The code run inherits all the privileges of the execution user. * Inputs provided to it by the code it is asked to run, as it is the responsibility of the application to perform the required input validations, diff --git a/benchmark/crypto/kem.js b/benchmark/crypto/kem.js index e03ae65f1926ca..ffdcac6d7fcb0d 100644 --- a/benchmark/crypto/kem.js +++ b/benchmark/crypto/kem.js @@ -54,9 +54,6 @@ const bench = common.createBenchmark(main, { // assess whether mutexes over the key material impact the operation if (p.keyFormat === 'keyObject.unique') return p.mode === 'async-parallel'; - // JWK is not supported for ml-kem for now - if (p.keyFormat === 'jwk') - return !p.keyType.startsWith('ml-'); // raw-public is only supported for encapsulate, not rsa if (p.keyFormat === 'raw-public') return p.keyType !== 'rsa' && p.op === 'encapsulate'; diff --git a/benchmark/crypto/webcrypto-sign.js b/benchmark/crypto/webcrypto-sign.js new file mode 100644 index 00000000000000..d298ec69eef437 --- /dev/null +++ b/benchmark/crypto/webcrypto-sign.js @@ -0,0 +1,97 @@ +'use strict'; + +const common = require('../common.js'); +const { hasOpenSSL } = require('../../test/common/crypto.js'); +const { subtle } = globalThis.crypto; + +const kAlgorithms = { + 'ec': { name: 'ECDSA', namedCurve: 'P-256' }, + 'rsassa-pkcs1-v1_5': { + name: 'RSASSA-PKCS1-v1_5', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + 'rsa-pss': { + name: 'RSA-PSS', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + 'ed25519': { name: 'Ed25519' }, +}; + +if (hasOpenSSL(3, 5)) { + kAlgorithms['ml-dsa-44'] = { name: 'ML-DSA-44' }; +} + +const kSignParams = { + 'ec': { name: 'ECDSA', hash: 'SHA-256' }, + 'rsassa-pkcs1-v1_5': { name: 'RSASSA-PKCS1-v1_5' }, + 'rsa-pss': { name: 'RSA-PSS', saltLength: 32 }, + 'ed25519': { name: 'Ed25519' }, + 'ml-dsa-44': { name: 'ML-DSA-44' }, +}; + +const data = globalThis.crypto.getRandomValues(new Uint8Array(256)); + +let keys; + +const bench = common.createBenchmark(main, { + keyType: Object.keys(kAlgorithms), + mode: ['serial', 'parallel'], + keyReuse: ['shared', 'unique'], + n: [1e3], +}, { + combinationFilter(p) { + // Unique only differs from shared when operations overlap (parallel); + // sequential calls have no contention so unique+serial adds no value. + if (p.keyReuse === 'unique') return p.mode === 'parallel'; + return true; + }, +}); + +async function measureSerial(n, signParams, sharedKey) { + bench.start(); + for (let i = 0; i < n; ++i) { + await subtle.sign(signParams, sharedKey || keys[i], data); + } + bench.end(n); +} + +async function measureParallel(n, signParams, sharedKey) { + const promises = new Array(n); + bench.start(); + for (let i = 0; i < n; ++i) { + promises[i] = subtle.sign(signParams, sharedKey || keys[i], data); + } + await Promise.all(promises); + bench.end(n); +} + +async function main({ n, mode, keyReuse, keyType }) { + const algorithm = kAlgorithms[keyType]; + const signParams = kSignParams[keyType]; + + if (!keys || keys.length !== n || keys[0].algorithm.name !== signParams.name) { + keys = new Array(n); + // Generate one key pair, then import its pkcs8 bytes n times to get + // distinct CryptoKey instances. + const kp = await subtle.generateKey(algorithm, true, ['sign', 'verify']); + const pkcs8 = await subtle.exportKey('pkcs8', kp.privateKey); + for (let i = 0; i < n; ++i) { + keys[i] = await subtle.importKey('pkcs8', pkcs8, algorithm, false, ['sign']); + } + } + + const sharedKey = keyReuse === 'shared' ? keys[0] : undefined; + + switch (mode) { + case 'serial': + await measureSerial(n, signParams, sharedKey); + break; + case 'parallel': + await measureParallel(n, signParams, sharedKey); + break; + } +} diff --git a/benchmark/crypto/webcrypto-verify.js b/benchmark/crypto/webcrypto-verify.js new file mode 100644 index 00000000000000..6b0d52cddc30d8 --- /dev/null +++ b/benchmark/crypto/webcrypto-verify.js @@ -0,0 +1,100 @@ +'use strict'; + +const common = require('../common.js'); +const { hasOpenSSL } = require('../../test/common/crypto.js'); +const { subtle } = globalThis.crypto; + +const kAlgorithms = { + 'ec': { name: 'ECDSA', namedCurve: 'P-256' }, + 'rsassa-pkcs1-v1_5': { + name: 'RSASSA-PKCS1-v1_5', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + 'rsa-pss': { + name: 'RSA-PSS', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + 'ed25519': { name: 'Ed25519' }, +}; + +if (hasOpenSSL(3, 5)) { + kAlgorithms['ml-dsa-44'] = { name: 'ML-DSA-44' }; +} + +const kSignParams = { + 'ec': { name: 'ECDSA', hash: 'SHA-256' }, + 'rsassa-pkcs1-v1_5': { name: 'RSASSA-PKCS1-v1_5' }, + 'rsa-pss': { name: 'RSA-PSS', saltLength: 32 }, + 'ed25519': { name: 'Ed25519' }, + 'ml-dsa-44': { name: 'ML-DSA-44' }, +}; + +const data = globalThis.crypto.getRandomValues(new Uint8Array(256)); + +let publicKeys; +let signature; + +const bench = common.createBenchmark(main, { + keyType: Object.keys(kAlgorithms), + mode: ['serial', 'parallel'], + keyReuse: ['shared', 'unique'], + n: [1e3], +}, { + combinationFilter(p) { + // Unique only differs from shared when operations overlap (parallel); + // sequential calls have no contention so unique+serial adds no value. + if (p.keyReuse === 'unique') return p.mode === 'parallel'; + return true; + }, +}); + +async function measureSerial(n, verifyParams, sharedKey) { + bench.start(); + for (let i = 0; i < n; ++i) { + await subtle.verify(verifyParams, sharedKey || publicKeys[i], signature, data); + } + bench.end(n); +} + +async function measureParallel(n, verifyParams, sharedKey) { + const promises = new Array(n); + bench.start(); + for (let i = 0; i < n; ++i) { + promises[i] = subtle.verify(verifyParams, sharedKey || publicKeys[i], signature, data); + } + await Promise.all(promises); + bench.end(n); +} + +async function main({ n, mode, keyReuse, keyType }) { + const algorithm = kAlgorithms[keyType]; + const verifyParams = kSignParams[keyType]; + + if (!publicKeys || publicKeys.length !== n || + publicKeys[0].algorithm.name !== verifyParams.name) { + publicKeys = new Array(n); + // Generate one key pair, then import its spki bytes n times to get + // distinct CryptoKey instances. + const kp = await subtle.generateKey(algorithm, true, ['sign', 'verify']); + const spki = await subtle.exportKey('spki', kp.publicKey); + for (let i = 0; i < n; ++i) { + publicKeys[i] = await subtle.importKey('spki', spki, algorithm, false, ['verify']); + } + signature = await subtle.sign(verifyParams, kp.privateKey, data); + } + + const sharedKey = keyReuse === 'shared' ? publicKeys[0] : undefined; + + switch (mode) { + case 'serial': + await measureSerial(n, verifyParams, sharedKey); + break; + case 'parallel': + await measureParallel(n, verifyParams, sharedKey); + break; + } +} diff --git a/benchmark/ffi/add-f64.js b/benchmark/ffi/add-f64.js new file mode 100644 index 00000000000000..fab6457e33a09d --- /dev/null +++ b/benchmark/ffi/add-f64.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); +const { libraryPath, ensureFixtureLibrary } = require('./common.js'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--experimental-ffi'], +}); + +ensureFixtureLibrary(); + +const { lib, functions } = ffi.dlopen(libraryPath, { + add_f64: { result: 'f64', parameters: ['f64', 'f64'] }, +}); + +const add = functions.add_f64; + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + add(1.5, 2.5); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/ffi/add-i32.js b/benchmark/ffi/add-i32.js new file mode 100644 index 00000000000000..bc8e2c4138080e --- /dev/null +++ b/benchmark/ffi/add-i32.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); +const { libraryPath, ensureFixtureLibrary } = require('./common.js'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--experimental-ffi'], +}); + +ensureFixtureLibrary(); + +const { lib, functions } = ffi.dlopen(libraryPath, { + add_i32: { result: 'i32', parameters: ['i32', 'i32'] }, +}); + +const add = functions.add_i32; + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + add(20, 22); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/ffi/common.js b/benchmark/ffi/common.js new file mode 100644 index 00000000000000..6b1ed29cc4ef56 --- /dev/null +++ b/benchmark/ffi/common.js @@ -0,0 +1,24 @@ +'use strict'; + +const common = require('../common.js'); +const fs = require('node:fs'); +const path = require('node:path'); + +// Cannot use test/ffi/ffi-test-common.js because it requires test/common +// (the test harness module). Construct the path directly. +const libraryPath = path.join(__dirname, '..', '..', 'test', 'ffi', + 'fixture_library', 'build', common.buildType, + process.platform === 'win32' ? 'ffi_test_library.dll' : + process.platform === 'darwin' ? 'ffi_test_library.dylib' : + 'ffi_test_library.so'); + +function ensureFixtureLibrary() { + if (!fs.existsSync(libraryPath)) { + throw new Error( + `Missing FFI fixture library: ${libraryPath}. ` + + 'Build it with `tools/test.py test/ffi/test-ffi-calls.js` first.', + ); + } +} + +module.exports = { libraryPath, ensureFixtureLibrary }; diff --git a/benchmark/ffi/getpid.js b/benchmark/ffi/getpid.js new file mode 100644 index 00000000000000..c2e7d4ed89c34e --- /dev/null +++ b/benchmark/ffi/getpid.js @@ -0,0 +1,25 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--experimental-ffi'], +}); + +const { lib, functions } = ffi.dlopen(null, { + uv_os_getpid: { result: 'i32', parameters: [] }, +}); + +const getpid = functions.uv_os_getpid; + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + getpid(); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/ffi/many-args.js b/benchmark/ffi/many-args.js new file mode 100644 index 00000000000000..bacd873df52d1b --- /dev/null +++ b/benchmark/ffi/many-args.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); +const { libraryPath, ensureFixtureLibrary } = require('./common.js'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--experimental-ffi'], +}); + +ensureFixtureLibrary(); + +const { lib, functions } = ffi.dlopen(libraryPath, { + sum_6_i32: { result: 'i32', parameters: ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'] }, +}); + +const fn = functions.sum_6_i32; + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + fn(1, 2, 3, 4, 5, 6); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/ffi/pointer-bigint.js b/benchmark/ffi/pointer-bigint.js new file mode 100644 index 00000000000000..c44ef7f1656a0c --- /dev/null +++ b/benchmark/ffi/pointer-bigint.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); +const { libraryPath, ensureFixtureLibrary } = require('./common.js'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--experimental-ffi'], +}); + +ensureFixtureLibrary(); + +const { lib, functions } = ffi.dlopen(libraryPath, { + pointer_to_usize: { result: 'u64', parameters: ['pointer'] }, +}); + +const fn = functions.pointer_to_usize; + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + fn(0xdeadbeefn); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/ffi/sum-buffer.js b/benchmark/ffi/sum-buffer.js new file mode 100644 index 00000000000000..3117f61aaedabf --- /dev/null +++ b/benchmark/ffi/sum-buffer.js @@ -0,0 +1,33 @@ +'use strict'; + +const common = require('../common.js'); +const ffi = require('node:ffi'); +const { libraryPath, ensureFixtureLibrary } = require('./common.js'); + +const bench = common.createBenchmark(main, { + size: [64, 1024, 16384], + n: [1e6], +}, { + flags: ['--experimental-ffi'], +}); + +ensureFixtureLibrary(); + +const { lib, functions } = ffi.dlopen(libraryPath, { + sum_buffer: { result: 'u64', parameters: ['pointer', 'u64'] }, +}); + +function main({ n, size }) { + const buf = Buffer.alloc(size, 0x42); + const ptr = ffi.getRawPointer(buf); + const len = BigInt(size); + + const sum = functions.sum_buffer; + + bench.start(); + for (let i = 0; i < n; ++i) + sum(ptr, len); + bench.end(n); + + lib.close(); +} diff --git a/benchmark/misc/webcrypto-webidl.js b/benchmark/misc/webcrypto-webidl.js new file mode 100644 index 00000000000000..0f6275ed09517c --- /dev/null +++ b/benchmark/misc/webcrypto-webidl.js @@ -0,0 +1,109 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + op: [ + 'normalizeAlgorithm-string', + 'normalizeAlgorithm-dict', + 'webidl-dict', + 'webidl-algorithm-identifier-string', + 'webidl-algorithm-identifier-object', + 'webidl-dict-enforce-range', + 'webidl-dict-ensure-sha', + 'webidl-dict-null', + ], + n: [1e6], +}, { flags: ['--expose-internals'] }); + +function main({ n, op }) { + const { normalizeAlgorithm } = require('internal/crypto/util'); + + switch (op) { + case 'normalizeAlgorithm-string': { + // String shortcut + null dictionary (cheapest path). + bench.start(); + for (let i = 0; i < n; i++) + normalizeAlgorithm('SHA-256', 'digest'); + bench.end(n); + break; + } + case 'normalizeAlgorithm-dict': { + // Object input with a dictionary type and no BufferSource members. + const alg = { name: 'ECDSA', hash: 'SHA-256' }; + bench.start(); + for (let i = 0; i < n; i++) + normalizeAlgorithm(alg, 'sign'); + bench.end(n); + break; + } + case 'webidl-dict': { + // WebIDL dictionary converter in isolation. + const webidl = require('internal/crypto/webidl'); + const input = { name: 'AES-GCM', iv: new Uint8Array(12) }; + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.AeadParams(input, opts); + bench.end(n); + break; + } + case 'webidl-algorithm-identifier-string': { + // Exercises converters.AlgorithmIdentifier string path. + const webidl = require('internal/crypto/webidl'); + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.AlgorithmIdentifier('SHA-256', opts); + bench.end(n); + break; + } + case 'webidl-algorithm-identifier-object': { + // Exercises converters.AlgorithmIdentifier object path. + const webidl = require('internal/crypto/webidl'); + const input = { name: 'SHA-256' }; + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.AlgorithmIdentifier(input, opts); + bench.end(n); + break; + } + case 'webidl-dict-enforce-range': { + // Exercises [EnforceRange] integer dictionary members. + const webidl = require('internal/crypto/webidl'); + const input = { + name: 'RSASSA-PKCS1-v1_5', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + }; + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.RsaKeyGenParams(input, opts); + bench.end(n); + break; + } + case 'webidl-dict-ensure-sha': { + // Exercises ensureSHA on a hash member. + const webidl = require('internal/crypto/webidl'); + const input = { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' }; + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.RsaHashedImportParams(input, opts); + bench.end(n); + break; + } + case 'webidl-dict-null': { + // Exercises the null/undefined path in createDictionaryConverter(). + const webidl = require('internal/crypto/webidl'); + const opts = { prefix: 'test', context: 'test' }; + bench.start(); + for (let i = 0; i < n; i++) + webidl.converters.JsonWebKey(undefined, opts); + bench.end(n); + break; + } + } +} diff --git a/benchmark/misc/webidl-buffer-source.js b/benchmark/misc/webidl-buffer-source.js new file mode 100644 index 00000000000000..56a3b628b98011 --- /dev/null +++ b/benchmark/misc/webidl-buffer-source.js @@ -0,0 +1,54 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + input: [ + 'arraybuffer', + 'buffer', + 'dataview', + 'uint8array', + 'uint8clampedarray', + 'int8array', + 'uint16array', + 'int16array', + 'uint32array', + 'int32array', + 'float16array', + 'float32array', + 'float64array', + 'bigint64array', + 'biguint64array', + ], + n: [1e6], +}, { flags: ['--expose-internals'] }); + +function main({ n, input }) { + const { converters } = require('internal/webidl'); + + let value; + switch (input) { + case 'arraybuffer': value = new ArrayBuffer(32); break; + case 'buffer': value = Buffer.alloc(32); break; + case 'dataview': value = new DataView(new ArrayBuffer(32)); break; + case 'uint8array': value = new Uint8Array(32); break; + case 'uint8clampedarray': value = new Uint8ClampedArray(32); break; + case 'int8array': value = new Int8Array(32); break; + case 'uint16array': value = new Uint16Array(16); break; + case 'int16array': value = new Int16Array(16); break; + case 'uint32array': value = new Uint32Array(8); break; + case 'int32array': value = new Int32Array(8); break; + case 'float16array': value = new Float16Array(16); break; + case 'float32array': value = new Float32Array(8); break; + case 'float64array': value = new Float64Array(4); break; + case 'bigint64array': value = new BigInt64Array(4); break; + case 'biguint64array': value = new BigUint64Array(4); break; + } + + const opts = { prefix: 'test', context: 'test' }; + + bench.start(); + for (let i = 0; i < n; i++) + converters.BufferSource(value, opts); + bench.end(n); +} diff --git a/benchmark/misc/webidl-convert-to-int.js b/benchmark/misc/webidl-convert-to-int.js new file mode 100644 index 00000000000000..52245ee3b6a1a5 --- /dev/null +++ b/benchmark/misc/webidl-convert-to-int.js @@ -0,0 +1,82 @@ +'use strict'; + +const assert = require('assert'); +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + converter: [ + 'byte', + 'octet', + 'unsigned short', + 'unsigned long', + 'long long', + ], + input: [ + 'integer', + 'fractional', + 'wrap', + 'clamp', + 'enforce-range', + 'object', + ], + n: [1e6], +}, { flags: ['--expose-internals'] }); + +function getConverter(converter) { + switch (converter) { + case 'byte': + return { bitLength: 8, signedness: 'signed' }; + case 'octet': + return { bitLength: 8 }; + case 'unsigned short': + return { bitLength: 16 }; + case 'unsigned long': + return { bitLength: 32 }; + case 'long long': + return { bitLength: 64, signedness: 'signed' }; + default: + throw new Error(`Unsupported converter: ${converter}`); + } +} + +function getInput(input) { + switch (input) { + case 'integer': + return { value: 7 }; + case 'fractional': + return { value: 7.9 }; + case 'wrap': + return { value: 2 ** 63 + 2 ** 11 }; + case 'clamp': + return { value: 300.8, options: { clamp: true } }; + case 'enforce-range': + return { value: 7.9, options: { enforceRange: true } }; + case 'object': + return { + value: { + valueOf() { return 7; }, + }, + }; + default: + throw new Error(`Unsupported input: ${input}`); + } +} + +function main({ n, converter, input }) { + const { convertToInt } = require('internal/webidl'); + const { bitLength, signedness } = getConverter(converter); + const { value, options } = getInput(input); + + let noDead; + bench.start(); + if (options === undefined) { + for (let i = 0; i < n; i++) + noDead = convertToInt(value, bitLength, signedness); + } else { + for (let i = 0; i < n; i++) + noDead = convertToInt(value, bitLength, signedness, options); + } + bench.end(n); + + assert.strictEqual(typeof noDead, 'number'); +} diff --git a/benchmark/url/url-searchparams-mutation.js b/benchmark/url/url-searchparams-mutation.js new file mode 100644 index 00000000000000..cb01793037437e --- /dev/null +++ b/benchmark/url/url-searchparams-mutation.js @@ -0,0 +1,43 @@ +'use strict'; +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + method: ['set', 'delete'], + type: ['unique', 'duplicates'], + count: [10, 1000], + n: [1e4], +}); + +function buildSeed(type, count) { + const parts = new Array(count); + + if (type === 'duplicates') { + for (let i = 0; i < count; i++) { + parts[i] = `dup=${i}`; + } + } else { + for (let i = 0; i < count; i++) { + parts[i] = `k${i}=${i}`; + } + } + + return new URLSearchParams(parts.join('&')); +} + +function main({ method, type, count, n }) { + const seed = buildSeed(type, count); + const key = type === 'duplicates' ? 'dup' : 'k0'; + const mutate = method === 'set' ? + (params) => params.set(key, 'updated') : + (params) => params.delete(key); + + for (let i = 0; i < 1e3; i++) { + mutate(new URLSearchParams(seed)); + } + + bench.start(); + for (let i = 0; i < n; i++) { + mutate(new URLSearchParams(seed)); + } + bench.end(n); +} diff --git a/benchmark/util/style-text.js b/benchmark/util/style-text.js index 282a96150f0b94..f04a26646e052d 100644 --- a/benchmark/util/style-text.js +++ b/benchmark/util/style-text.js @@ -7,7 +7,7 @@ const assert = require('node:assert'); const bench = common.createBenchmark(main, { messageType: ['string', 'number', 'boolean', 'invalid'], - format: ['red', 'italic', 'invalid'], + format: ['red', 'italic', 'invalid', '#ff0000'], validateStream: [1, 0], n: [1e3], }); diff --git a/benchmark/util/type-check.js b/benchmark/util/type-check.js index 269c2a4e9c1374..0815dd70061c14 100644 --- a/benchmark/util/type-check.js +++ b/benchmark/util/type-check.js @@ -23,6 +23,11 @@ const args = { 'false-primitive': true, 'false-object': int32Array, }, + DataView: { + 'true': dataView, + 'false-primitive': true, + 'false-object': uint8Array, + }, }; const bench = common.createBenchmark(main, { diff --git a/benchmark/v8/startup-snapshot-callbacks.js b/benchmark/v8/startup-snapshot-callbacks.js new file mode 100644 index 00000000000000..7ff245e29758df --- /dev/null +++ b/benchmark/v8/startup-snapshot-callbacks.js @@ -0,0 +1,58 @@ +'use strict'; + +// Benchmarks startup time when deserialize callbacks are registered in a +// startup snapshot, measuring real binary execution with --snapshot-blob. + +const common = require('../common.js'); +const { spawnSync } = require('child_process'); +const { mkdtempSync, writeFileSync, rmSync } = require('fs'); +const { tmpdir } = require('os'); +const path = require('path'); + +const bench = common.createBenchmark(main, { + count: [10, 100, 1000, 10000], + n: [30], +}); + +function buildSnapshot(snapshotBlob, fixtureScript, count) { + writeFileSync(fixtureScript, ` +'use strict'; +const v8 = require('node:v8'); +for (let i = 0; i < ${count}; i++) { + v8.startupSnapshot.addDeserializeCallback(() => {}); +} +v8.startupSnapshot.setDeserializeMainFunction(() => {}); +`); + const result = spawnSync(process.execPath, [ + '--snapshot-blob', snapshotBlob, + '--build-snapshot', fixtureScript, + ]); + if (result.status !== 0) { + throw new Error(`Failed to build snapshot:\n${result.stderr}`); + } +} + +function main({ n, count }) { + const dir = mkdtempSync(path.join(tmpdir(), 'node-bench-snapshot-')); + const snapshotBlob = path.join(dir, 'snapshot.blob'); + const fixtureScript = path.join(dir, 'build.js'); + + try { + buildSnapshot(snapshotBlob, fixtureScript, count); + + const warmup = 3; + let finished = -warmup; + + while (finished < n) { + const child = spawnSync(process.execPath, ['--snapshot-blob', snapshotBlob]); + if (child.status !== 0) { + throw new Error(`Snapshot run failed:\n${child.stderr}`); + } + finished++; + if (finished === 0) bench.start(); + if (finished === n) bench.end(n); + } + } finally { + rmSync(dir, { recursive: true, force: true }); + } +} diff --git a/common.gypi b/common.gypi index 49c2a291f1b47c..dbd6bf9df814f8 100644 --- a/common.gypi +++ b/common.gypi @@ -12,9 +12,11 @@ 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way 'enable_pgo_generate%': '0', 'enable_pgo_use%': '0', + 'clang_profile_lib%': '', 'python%': 'python', 'node_shared%': 'false', + 'node_enable_experimentals%': 'false', 'force_dynamic_crt%': 0, 'node_use_v8_platform%': 'true', 'node_use_bundled_v8%': 'true', @@ -189,7 +191,7 @@ ['clang==1', { 'lto': ' -flto ', # Clang }, { - 'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC + 'lto': ' -flto=4 -ffat-lto-objects ', # GCC }], ], }, @@ -242,6 +244,65 @@ },], ], },], + ['OS=="win"', { + 'conditions': [ + ['enable_lto=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-flto=full'], + }, + 'VCLibrarianTool': { + 'AdditionalOptions': ['-flto=full'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': ['-flto=full'], + }, + }, + },], + ['enable_thin_lto=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-flto=thin'], + }, + 'VCLibrarianTool': { + 'AdditionalOptions': ['-flto=thin'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': ['-flto=thin'], + }, + }, + },], + ], + 'target_conditions': [ + ['_toolset=="target"', { + 'conditions': [ + ['enable_pgo_generate=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-fprofile-generate'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': [ + '/NODEFAULTLIB:clang_rt.profile.lib', + '"<(clang_profile_lib)"', + ], + }, + }, + },], + ['enable_pgo_use=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-fprofile-use=$(SolutionDir)node.profdata'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': ['-fprofile-use=$(SolutionDir)node.profdata'], + }, + }, + },], + ], + },], + ], + },], ['OS == "android"', { 'cflags': [ '-fPIC', '-I<(android_ndk_path)/sources/android/cpufeatures' ], 'ldflags': [ '-fPIC' ] @@ -437,6 +498,9 @@ }], # The defines bellow must include all things from the external_v8_defines # list in v8/BUILD.gn. + ['node_enable_experimentals == "true"', { + 'defines': ['EXPERIMENTALS_DEFAULT_VALUE=true'], + }], ['v8_enable_v8_checks == 1', { 'defines': ['V8_ENABLE_CHECKS'], }], diff --git a/configure.py b/configure.py index 9fc44becfbba46..7b82e0c5e86e7d 100755 --- a/configure.py +++ b/configure.py @@ -202,14 +202,14 @@ dest="enable_pgo_generate", default=None, help="Enable profiling with pgo of a binary. This feature is only available " - "on linux with gcc and g++ 5.4.1 or newer.") + "on linux with gcc and g++ 5.4.1 or newer and on windows.") parser.add_argument("--enable-pgo-use", action="store_true", dest="enable_pgo_use", default=None, help="Enable use of the profile generated with --enable-pgo-generate. This " - "feature is only available on linux with gcc and g++ 5.4.1 or newer.") + "feature is only available on linux with gcc and g++ 5.4.1 or newer and on windows.") parser.add_argument("--enable-lto", action="store_true", @@ -218,6 +218,13 @@ help="Enable compiling with lto of a binary. This feature is only available " "with gcc 5.4.1+ or clang 3.9.1+.") +parser.add_argument("--enable-thin-lto", + action="store_true", + dest="enable_thin_lto", + default=None, + help="Enable compiling with thin lto of a binary. This feature is only available " + "on windows.") + parser.add_argument("--link-module", action="append", dest="linked_module", @@ -686,6 +693,28 @@ dest='shared_sqlite_libpath', help='a directory to search for the shared sqlite DLL') +shared_optgroup.add_argument('--shared-ffi', + action='store_true', + dest='shared_ffi', + default=None, + help='link to a shared libffi DLL instead of static linking') + +shared_optgroup.add_argument('--shared-ffi-includes', + action='store', + dest='shared_ffi_includes', + help='directory containing libffi header files') + +shared_optgroup.add_argument('--shared-ffi-libname', + action='store', + dest='shared_ffi_libname', + default='ffi', + help='alternative libffi name to link to [default: %(default)s]') + +shared_optgroup.add_argument('--shared-ffi-libpath', + action='store', + dest='shared_ffi_libpath', + help='a directory to search for the shared libffi DLL') + shared_optgroup.add_argument('--shared-temporal_capi', action='store_true', dest='shared_temporal_capi', @@ -775,6 +804,12 @@ default=None, help='Enable the --trace-maps flag in V8 (use at your own risk)') +parser.add_argument('--enable-all-experimentals', + action='store_true', + dest='enable_all_experimentals', + default=None, + help='Enable all experimental features by default') + parser.add_argument('--experimental-enable-pointer-compression', action='store_true', dest='enable_pointer_compression', @@ -897,7 +932,8 @@ action='store_true', dest='with_ltcg', default=None, - help='Use Link Time Code Generation. This feature is only available on Windows.') + help='Use Thin LTO scoped to node.exe and libnode only. ' + 'This feature is only available on Windows.') parser.add_argument('--write-snapshot-as-array-literals', action='store_true', @@ -1017,6 +1053,12 @@ default=None, help='build without SQLite (disables SQLite and Web Storage API)') +parser.add_argument('--without-ffi', + action='store_true', + dest='without_ffi', + default=None, + help='build without FFI (Foreign Function Interface) support') + parser.add_argument('--experimental-quic', action='store_true', dest='experimental_quic', @@ -1535,7 +1577,7 @@ def check_compiler(o): o['variables']['llvm_version'] = get_llvm_version(CC) if is_clang else '0.0' # cargo and rustc are needed for Temporal. - if not options.v8_disable_temporal_support or not options.shared_temporal_capi: + if not options.v8_disable_temporal_support and not options.shared_temporal_capi: # Minimum cargo and rustc versions should match values in BUILDING.md. min_cargo_ver_tuple = (1, 82) min_rustc_ver_tuple = (1, 82) @@ -1627,12 +1669,6 @@ def is_arch_armv7(): return cc_macros_cache.get('__ARM_ARCH') == '7' -def is_arch_armv6(): - """Check for ARMv6 instructions""" - cc_macros_cache = cc_macros() - return cc_macros_cache.get('__ARM_ARCH') == '6' - - def is_arm_hard_float_abi(): """Check for hardfloat or softfloat eabi on ARM""" # GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify @@ -1716,7 +1752,7 @@ def configure_arm(o): arm_fpu = 'vfpv3' o['variables']['arm_version'] = '7' else: - o['variables']['arm_version'] = '6' if is_arch_armv6() else 'default' + o['variables']['arm_version'] = 'default' o['variables']['arm_thumb'] = 0 # -marm o['variables']['arm_float_abi'] = arm_float_abi @@ -1775,6 +1811,7 @@ def configure_node_cctest_sources(o): def configure_node(o): if options.dest_os == 'android': o['variables']['OS'] = 'android' + o['variables']['node_enable_experimentals'] = b(options.enable_all_experimentals) o['variables']['node_prefix'] = options.prefix o['variables']['node_install_npm'] = b(not options.without_npm) o['variables']['node_install_corepack'] = b(options.with_corepack) @@ -1885,9 +1922,9 @@ def configure_node(o): else: o['variables']['node_enable_v8_vtunejit'] = 'false' - if flavor != 'linux' and (options.enable_pgo_generate or options.enable_pgo_use): + if (flavor != 'linux' and flavor != 'win') and (options.enable_pgo_generate or options.enable_pgo_use): raise Exception( - 'The pgo option is supported only on linux.') + 'The pgo option is supported only on linux and windows.') if flavor == 'linux': if options.enable_pgo_generate or options.enable_pgo_use: @@ -1898,21 +1935,55 @@ def configure_node(o): 'The options --enable-pgo-generate and --enable-pgo-use ' f'are supported for gcc and gxx {version_checked_str} or newer only.') - if options.enable_pgo_generate and options.enable_pgo_use: - raise Exception( - 'Only one of the --enable-pgo-generate or --enable-pgo-use options ' - 'can be specified at a time. You would like to use ' - '--enable-pgo-generate first, profile node, and then recompile ' - 'with --enable-pgo-use') + if options.enable_pgo_generate and options.enable_pgo_use: + raise Exception( + 'Only one of the --enable-pgo-generate or --enable-pgo-use options ' + 'can be specified at a time. You would like to use ' + '--enable-pgo-generate first, profile node, and then recompile ' + 'with --enable-pgo-use') o['variables']['enable_pgo_generate'] = b(options.enable_pgo_generate) o['variables']['enable_pgo_use'] = b(options.enable_pgo_use) - if flavor == 'win' and (options.enable_lto): + if flavor == 'win' and (options.enable_pgo_generate or options.enable_pgo_use): + lib_suffix = 'aarch64' if target_arch == 'arm64' else 'x86_64' + lib_name = f'clang_rt.profile-{lib_suffix}.lib' + msvc_dir = target_arch # 'x64' or 'arm64' + + vc_tools_dir = os.environ.get('VCToolsInstallDir', '') + if vc_tools_dir: + clang_profile_lib = os.path.join(vc_tools_dir, 'lib', msvc_dir, lib_name) + if os.path.isfile(clang_profile_lib): + o['variables']['clang_profile_lib'] = clang_profile_lib + else: + raise Exception( + f'PGO profile runtime library not found at {clang_profile_lib}. ' + 'Ensure the ClangCL toolset is installed.') + else: + raise Exception( + 'VCToolsInstallDir not set. Run from a Visual Studio command prompt.') + + if flavor != 'win' and options.enable_thin_lto: raise Exception( - 'Use Link Time Code Generation instead.') + 'Use --enable-lto instead.') - if options.enable_lto: + # LTO mutual exclusion + if flavor == 'win': + lto_options = [] + if options.enable_lto: + lto_options.append('--enable-lto') + if options.enable_thin_lto: + lto_options.append('--enable-thin-lto') + if options.with_ltcg: + lto_options.append('--with-ltcg') + if len(lto_options) > 1: + raise Exception( + f'Only one LTO option can be specified at a time: {", ".join(lto_options)}. ' + 'Use --enable-lto for Full LTO (global), ' + '--enable-thin-lto for Thin LTO (global), ' + 'or --with-ltcg for Thin LTO (scoped to node.exe and libnode).') + + if options.enable_lto and flavor != 'win': gcc_version_checked = (5, 4, 1) clang_version_checked = (3, 9, 1) if not gcc_version_ge(gcc_version_checked) and not clang_version_ge(clang_version_checked): @@ -1923,6 +1994,7 @@ def configure_node(o): f'or clang {clang_version_checked_str}+ only.') o['variables']['enable_lto'] = b(options.enable_lto) + o['variables']['enable_thin_lto'] = b(options.enable_thin_lto) if options.node_use_large_pages or options.node_use_large_pages_script_lld: warn('''The `--use-largepages` and `--use-largepages-script-lld` options @@ -2237,6 +2309,43 @@ def without_sqlite_error(option): configure_library('sqlite', o, pkgname='sqlite3') +def bundled_ffi_supported(os_name, target_arch): + supported = { + 'freebsd': {'arm', 'arm64', 'x64'}, + 'linux': {'arm', 'arm64', 'x64'}, + 'mac': {'arm64', 'x64'}, + 'win': {'arm64', 'x64'}, + } + + if target_arch == 'x86': + target_arch = 'ia32' + + return target_arch in supported.get(os_name, set()) + +def configure_ffi(o): + use_ffi = not options.without_ffi + + if use_ffi and not options.shared_ffi: + target_arch = o['variables']['target_arch'] + if not bundled_ffi_supported(flavor, target_arch): + warn(f'FFI is disabled for {flavor}/{target_arch}: the bundled libffi ' + 'integration is not available on this platform. Use --shared-ffi ' + 'to provide a system libffi or --without-ffi to silence this ' + 'warning.') + use_ffi = False + + o['variables']['node_use_ffi'] = b(use_ffi) + + if options.without_ffi: + if options.shared_ffi: + error('--without-ffi is incompatible with --shared-ffi') + return + + if not use_ffi: + return + + configure_library('ffi', o, pkgname='libffi') + def configure_quic(o): o['variables']['node_use_quic'] = b(options.experimental_quic and not options.without_ssl) @@ -2327,6 +2436,7 @@ def icu_download(path): # always set icu_small, node.gyp depends on it being defined. o['variables']['icu_small'] = b(False) + o['variables']['icu_system'] = b(False) # prevent data override o['defines'] += ['ICU_NO_USER_DATA_OVERRIDE'] @@ -2363,6 +2473,7 @@ def icu_download(path): o['variables']['v8_enable_i18n_support'] = 1 elif with_intl == 'system-icu': # ICU from pkg-config. + o['variables']['icu_system'] = b(True) o['variables']['v8_enable_i18n_support'] = 1 pkgicu = pkg_config(['icu-i18n', 'icu-uc']) if not pkgicu[0]: @@ -2690,6 +2801,7 @@ def make_bin_override(): configure_library('ngtcp2', output, pkgname='libngtcp2') configure_lief(output); configure_sqlite(output); +configure_ffi(output); configure_library('temporal_capi', output) configure_library('uvwasi', output) configure_library('zstd', output, pkgname='libzstd') diff --git a/deps/LIEF/lief.gyp b/deps/LIEF/lief.gyp index 3864c0e538a588..783e97c181d897 100644 --- a/deps/LIEF/lief.gyp +++ b/deps/LIEF/lief.gyp @@ -443,7 +443,6 @@ }, 'defines': [ 'LIEF_STATIC', - 'testtttt' 'MBEDTLS_CONFIG_FILE="config/mbedtls/config.h"', 'MBEDTLS_NO_PLATFORM_ENTROPY', 'SPDLOG_DISABLE_DEFAULT_LOGGER', diff --git a/deps/amaro/README.md b/deps/amaro/README.md index 75653766de7a6b..44c44c4dc6ad4a 100644 --- a/deps/amaro/README.md +++ b/deps/amaro/README.md @@ -67,10 +67,6 @@ node --watch ./bootstrap.mjs For transform mode, swap `amaro/strip` with `amaro/transform` and run Node with `--enable-source-maps`. -#### Type stripping in dependencies - -Contrary to the Node.js [TypeScript support](https://nodejs.org/docs/latest/api/typescript.html#type-stripping-in-dependencies), when used as a loader, Amaro handles TypeScript files inside folders under a `node_modules` path. - ### Monorepo usage Amaro makes working in monorepos smoother by removing the need to rebuild internal packages during development. When used with the [`--conditions`](https://nodejs.org/docs/latest/api/cli.html#-c-condition---conditionscondition) flag, you can reference TypeScript source files directly in exports: diff --git a/deps/amaro/dist/index.js b/deps/amaro/dist/index.js index b0f6fd4d108780..8ee217cd4903df 100644 --- a/deps/amaro/dist/index.js +++ b/deps/amaro/dist/index.js @@ -244,7 +244,7 @@ ${val.stack}`; function __wbg_adapter_50(arg0, arg1, arg2) { wasm.__wbindgen_export_4(arg0, arg1, addHeapObject(arg2)); } - function __wbg_adapter_95(arg0, arg1, arg2, arg3) { + function __wbg_adapter_79(arg0, arg1, arg2, arg3) { wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } module2.exports.__wbg_buffer_609cc3eee51ed158 = function(arg0) { @@ -342,7 +342,7 @@ ${val.stack}`; const a = state0.a; state0.a = 0; try { - return __wbg_adapter_95(a, state0.b, arg02, arg12); + return __wbg_adapter_79(a, state0.b, arg02, arg12); } finally { state0.a = a; } @@ -456,8 +456,8 @@ ${val.stack}`; const ret = false; return ret; }; - module2.exports.__wbindgen_closure_wrapper5029 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 668, __wbg_adapter_50); + module2.exports.__wbindgen_closure_wrapper5442 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 900, __wbg_adapter_50); return addHeapObject(ret); }; module2.exports.__wbindgen_debug_string = function(arg0, arg1) { @@ -545,7 +545,7 @@ ${val.stack}`; throw new Error(getStringFromWasm0(arg0, arg1)); }; var { Buffer: Buffer2 } = require("node:buffer"); - var bytes = Buffer2.from("AGFzbQEAAAAB5wRNYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmABfwF8YAJ/fwBgAn9/AX9gAn9/AX5gAn9/AXxgA39/fwBgA39/fwF/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AEf39/fwF+YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAd/f39/f39/AGAHf39/f39/fwF/YAh/f39/f39/fwBgCH9/f39/f39/AX9gC39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYA5/f39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2ATf39/f39/f39/f39/f39/f39/fwF/YBd/f39/f39/f39/f39/f39/f39/f39/fwF/YAl/f39/f39+fn4AYAV/f39/fgBgBn9/f39+fwBgBH9/f34AYAZ/f39+f38AYAN/f34Bf2AEf39+fwBgBH9/fn8Bf2AFf39+f38AYAZ/f35/fn8AYAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAN/fn8Bf2AEf35/fwBgBH9+f34BfmADf35+AGADf35+AX9gBH9+fn8AYAV/fn5+fwBgBX9+fn5+AGAEf31/fwBgAn98AGADf3x/AX9gBH98f38AYAR/fH9/AX9gAX4AYAF+AX9gAX4BfmACfn8AYAJ+fwF+YAN+f38Bf2ACfn4AYAJ+fgF+YAN+fn8AYAR+fn9/AX5gBH5+fn8BfmAHfn5+f39/fwF+YAF8AX9gAXwBfGACfH8Bf2ACfH8BfGACfHwBfGADfHx8AXwCyxo9GF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcARxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQAPBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfbmV3AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fDV9fd2JpbmRnZW5faW4ACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18WX193YmluZGdlbl9ib29sZWFuX2dldAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX3N0cmluZ19nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9pc19vYmplY3QABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18TX193YmluZGdlbl9qc3ZhbF9lcQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfaXNTYWZlSW50ZWdlcl8zNDNlMmJlZWVlY2UxYmIwAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ADwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9lMmQyYTQ5MTMyYzFiMjU2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZAALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfMjNhMjY2NWZhYzgzYzYxMQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2lzX2ZhbHN5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlfMWRjMzYxYmQxMDA1M2JmZQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX3N0cmluZwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfYjliOTMwNDdmZTNjZjQ1YgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diZ190b1N0cmluZ181Mjg1NTk3OTYwNjc2YjdiAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld180MDVlMjJmMzkwNTc2Y2UyAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld183OGZlYjEwOGI2NDcyNzEzAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF8zNzgzNzAyM2YzZDc0MGU4AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX25leHRfNjU3NGUxYThhNjJkMTA1NQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19kb25lXzc2OWU1ZWRlNGIzMWM2N2IABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfdmFsdWVfY2QxZmZhN2IxYWI3OTRmMQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19nZXRfNjdiMmJhNjJmYzMwZGUxMgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19uZXh0XzI1ZmVhZGZjMDkxM2ZlYTkABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF82NzJhNGQyMTYzNGQ0YTI0AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9HTE9CQUxfODhhOTAyZDEzYTU1N2QwNwABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXzJfX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMX1RISVNfNTY1NzhiZTdlOWY4MzJiMAABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfV0lORE9XXzVkZTM3MDQzYTkxYTljNDAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18rX193Ymdfc3RhdGljX2FjY2Vzc29yX1NFTEZfMzdjNWQ0MThlNGJmNTgxOQABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx5fX3diZ19pc0FycmF5X2ExZWFiN2UwZDA2NzM5MWIABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfY2FsbF83Y2NjZGQ2OWUwNzkxYWUyAAwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9hNDQ2MTkzZGMyMmMxMmY4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEV9fd2JpbmRnZW5fbWVtb3J5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl82MDljYzNlZWU1MWVkMTU4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld19hMTIwMDJhN2Y5MWM3NWJlAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5AAsYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGV9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXEACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9lMTQ1ODU0MzJlMzczN2ZjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2VudHJpZXNfMzI2NWQ0MTU4YjMzZTVkYwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxBfX3diaW5kZ2VuX3Rocm93AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9fd2JpbmRnZW5fYmlnaW50X2dldF9hc19pNjQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18SX193YmluZGdlbl9jYl9kcm9wAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX3RoZW5fNDRiNzM5NDZkMmZiM2U3ZAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3diZ19xdWV1ZU1pY3JvdGFza185N2Q5MmI0ZmNjOGE2MWM1AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVlTWljcm90YXNrX2QzMjE5ZGVmODI1NTI0ODUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfcmVzb2x2ZV80ODUxNzg1YzljNWY1NzNkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTAyOQAMA5kilyIOBxELCxEHBwsHBwsHBwsLDgsLBw4HBwcHCwsHEw4LDhEOBwsHBy8HDhEHBwcIBwcHDgc6DgcLBwsIBwcPFQcLBwsTBxMLDhMEBwsHEQcLBw4LCwMOCwcHBwcHExMHBwcICwgTBwcHCxMEBwcIAwcHEQcVBwsHBw4DCwMTExMTEwcOBwcDDg4HBwcHEwMMBwcHBwcRBxEHDgcHBwsDBwcDCAsHDksLExEHBw4BBw4IBwcLAwsHDgsHBwhJEQMRBwcLBwMHBwgHEwQaEQcHDgsHCxEHDAwOBwgOEQgIDgwOCwsIDAcICAgIEwcHCAgHAxERBw4OBwcIAQcHAwcVAwcIDAsOBwcHBwsOAwcHBxERCwcICwcHEQcLBwcEBwMLDggHBxMOCwsDERELDAdMEwsIAwsEBwcECAcLBwcHCwcHBAcEBwcHAQcVBwsLDggLBwQODAcDBwcHBwsDBwcLBwMRBwcODAcLCAsHEQcOCxsHCAcHBwMHBwsLAwQLAwMEBwcHBwcLAwsDAwcDAwgIBw0HBwQHBw8VAw4OCAMWBw8LBw4HBwMHBwMHBwcLCwsHDwsHEwcLCA4PCwwHAwcHFQsHDwcEDgMHBwcHBwQLByEMEwcIBwcHBxMDFQgVCwcLOAsIEQcHCAgDBwsMDg4LBwcLBwcMCAcHBwcHCwwIBwwHDA4HDhgLBw4OCwsHCAcHBwgDERELCwoLAwgHDw8HCwMLBwcLDAgHEwMLBwcMCwcHDgQ6BwMDDgsDAwcHBw4HBw4DBwMIDgcODAcDCAMICAwDBwMODgwLCwsDBwsIBwwoFQcIKAcXDgcLCAMLBwcMBwcHBxUHBwMDAwwIAwcHBwcDCA4HBwcLDAcLERMFCxQIBwcMBAcHCwsHEwgMEQ4DBwcLCwcTBw4IAwcHLi0IDCsHDAsRBwcICwcOBwcLDg4LEwcOExMHCAcOBxEHBwcHAwQDEQcLCwcTBwMHEwcLAwsDFQcHCwgLCw4VFQcLExMLCwcIEwgHBwcLCwtERAcMFQsLEggHB0QHBwcHAwcHERMVCBMHBxUTBwcDBAtLDAcLBAgHDhMICAcDCA4TMQwDBwgHCwcHERMLBwgHBwcLBwgOBwwHCwcLBwcABwcHBwcHBwc+BA4LAwsfBwcHBwgHBwcHCAsOBwsLCwMHBxEODgcLDgcHEwgHERNACwsHBwcOAwgHCw4ICAcHBwsMDg4ODgcLBw4DCwcHAwcLCwMDBwQiCw4LDhMHBwgHBBYEBwQIBw4ICAcIFAQTBwsTCwMDBQhICxMHCwsHBw4LBw4HBwgDBxYHBwcHDwsHBwwHFQQDCAsOBwcVDggHCwcHAwsLEyAOBwQHBwcEAwcHBw8TBAcICAcHCwcLDgMHBwcHAyUHAxURDwsIBwcHBAcTDgsHAw4DBwsHCwsDAwsHBxEDMA4OAwsLCAcDBwcLBwgHAwgHCxMIBAMHCw8ECCMIAwgRCAsHBAsOEwcTAwsMDA4TEwMDBwcHAxIRBwgHBwsPCBMHBwcHDgcDBAgHCAcLAwcMAwgHBAMDEw4HEwcICAgHCwQHBwsDCxMLBwMTEwsDDgsLCAcICAgICAgICAcTBwcLCAcLAwMHBwcDBwcLCwcHBAcHFg4ODg4HBAcHEg4RCwgTEw4OBwcHBwcHBwcHBwcHBwgDCAMHCAgDCAsODgsDEwgDDAgOBwsODgcHCwsDCgcDAwcIEQsOCwcHCwMTCAsMDAMICAgFLQMHAwsLBwcIBAMRBwsOBwMHAw4HBAcHAwcHBw8LCAwHBwMMDw8PEQsDDgcEBwMEEQMMCAgHCwkLCwcHBwcLAw4LBAcHCwsrBwcDBAsHBwcHBAcSEQsHBwcIAwcTEwcLEgcHCwUIEQcLDAwHBwMOBwcHBxUDHgcMBy8DDwcHCAcLDgQDBwcHCwcICw4OCAcLCwcOAwMICwgIEwQIBwcDAwcICAgDAwcdCwMLCwcHBwcHCAcHDgcHDwMHDwsICAwHJgcHCwsLCAsHAwcIByYDBAgEDgsHAwMHBwsLCxwOBw8OCwsIDggDERELERUHCwsLAwcDBwMDESwDCAcHCAcOBxEHCAQtDgsZDkARBxEDDAMEAwgMDAgEEwcHCAMRCA4VBwcMDAcDBw4EAwcHAwgHDgcHNw4LCw4ICAcHBwgWBwgIBwgDAwgICAMDAysHCwcIDwQTAwcDDAMRCwgHCAcIBwgHBwcHBwwHBwsICAMDEw4HBwQEBw4MBwMMCw4OBwcHCwQHBxEHBwcHDAcHCAgHBwgHCAMDAwMICAgIAwMDAw4ODwcOBxEHAwsDCwhKCwgLCxMNERUHAw4HCwcECAcLCAcLCw4IBwQIBwcHCAgICAgICAgICAgICAgICAcLCwcHBwcDCEtLSwQHBwgICAcIAwQTBwgICAgIBwgICAgDAwMICAgICAgICAgICAgICAgICAcLCw8DBwMMCwsLBwMMDEtLSy0TBAQMCAcDAwMDAwMICAMDBwgOBxMDCy0HAwMHDg4LCwcIEQQIJBMrDhEICw4ICAcHCAgHCAsDBwMIBwcHAwgICxAHBwgICAcQCwcLAwcDBwgVCBELBAcLDgQHCAQDEwgICAgLCwcHBwcHAwcHAwwHNQcrEQwHDAgHKwcIAxMDBwcLEQQRCwgPEQMHAwcLDwcDCAgkBwcLJAcHBwgEBCQMDAgHAwgHBwgICAgICw4TBAMLAwMLCwMHAwcHAwcHBw4EDggOBwMDBwMDBBELBwcICwsDCAcHBAMHBwMMBwcHBwMHCwcIBwgDBwMDDwsHAwMDAwMDAwMDBwsICA8HCwsHEw8HBwcHBy0HCAgICAcHBwcGBwsHEREMB0UOCwsDAwMDBwMDBwgICAgICAgICAgICAgDAwcOAwgIAw4OBwcLBA4LCwcOCxMLCwsLDgsEAwQDBwQHBAUHKwMPAwgDNA8DDAgMBwwMDAwICAgICAgIQQcDCAwIBwMIBwgLDwgIBxEIBwcDCAcDDgcHBwwECAgICAgIBAcDBzMzBwgHCAgICw4HCAgICAcEDgsICAgIDAsDDA4TCA4ICAMHAwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDBAcHCAgEAwgICwgICwMDAQQICAgLAwsDAwMIAwcHDgcHBwsLCAgLCAcHEQgMDggDCwsHBwsIAwMICAgICAMLAwMLCAgICAgICAgICAgICwsOBA4HBwcICAgICAgICAcHBwcLDwgLDw4ICAwIBwsLCw4HPggICAgICAgICAcDPgsHAwQEDgsLCwgEEREHBwMDAwMDBAgICAgICA4DCAgICAgICAgICAgICAgDCAgDEREIDhERCwsIAwsLCwcICAcHBAcHBwcICAgRDgc+BwcHCws+DAwMDAMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcHEQcICwsLCwgLAxMDAwMICAcRAwMHAwQDAwcHBwMLCAgDAwMDBAgIAwMLAwgHDAgISAAHBwcHCwcHBwwDCwsHAxEBBwcIBw4HDAMDAwcHCAMLAwMHBwwLDgcDBwMiIgsHAwMDAwMLBwcLCwcICwgDBAgHBwcHBwcHAwsLAwgTAwQHCwgICAgHAwcDBwMDAwMHCAcHAwcDAwcLAwgHDgkJAwcHAwMDAwcDAwgICAMDAwMDAwMDBwMDAwMHCAgIAwMDAwMDAwMDBwcHBwMHAwcHAwMHAwMICwsHBwcHAwcHBwcDAwMDAwMDAwMDAwMHAwcDDQMHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0HBwMDAwMDAwgHAxEDBwMDCwcDAwMDAwMDAwcRERERBwcHAxEEEQcOBwMIAwgICAgICAsEDggIDQgTCAgICAgICAgEBwgIBwcECAgIAwgHAwcHBxMDCAgDAwcLAwQIBwQLAwMDAwMDRgMDAz8rBw4ICwcLCAgICwcTCwgIQxMHBAICAgICDAwCAgICAgICAgICAgICAgICAgICDAICBwIHAgICDgcHBwMIAwgPFQcOBzcMAwMCAzstAggLBwsHCwMDBAcHCAgRCAsLCQMICAgEBA8HAwMHBwcIAwgIMjIICwgICAgIBBIIDwcIBwgIBwgIQj0ICAgICAgICAgICAgHBwcHBwcHBwcIBwcHBw8IDgMRCAsRBxEICwsICAcHCwMJCwcIAwMDDgcLCAgICAgICA4ICAcHBAsNOwcOCAgEOwgIBwgIMQEHAwMABwMIBwcDBwcOAwAAAAALAAAICAgICAgICAgICAgICAcHBwgMAwwADAgIC0sHAwcDDwcICAgIBAgICwQMCAgICQsREQgICAgICAQICAgICAgIBwMICAgHBwcDDwcHBwMHCw4RCAMLCwwODAMDCwcHBwcEDgQDAwMLAwgHBwcHBwcHBwcHBwcHBwsHBwMLBwELCwsLCwsLCwsLMQMHDAMDBwcHDhEDCAMPCAQECAMDAwMDAwcEBwcLBwsIDggICAMICAgIAwMHBAMICAclEQwMDAcDCAMIAwgIBwgOBQMIAw4DCAgPAwMDBwMDAwwDAwgICAsEBwMLAwMIAwMHAwMEAwMHDgcICAgICAQHCA0HBxEHBQcDAwsHBwcICBMDBxEHBwcHAwMEBAcDBwcHBwcHAwgHBwMHAwMHBwMDBAsIFA8ICAMPDwMIDw8PBw8HDwcLBAcPEhEREScqKRILAwsDCwsNBAcIBwcHBwcEBwcDBw4LAwsOAzIHBwgECzsOCAcBBw0NBAgHBwcDAwMDCAMDAwMDCwsLDwsLCwcOBwUFDAwHAwMDAwcIEQMDBwcDAwcEAwsLCwMDBAMICAMIAwg8CAgDCAMDDg4LBwMHBwcHBwMDAwsHBwcHAwMEAwMDAwMBAQMICAEDBAEBAQEBBwMDAwMDAwMDBAcHOwcDAwMDAwMDAzsDAwMDAwMDBwMDAwMHDQMDAwkIAwMICAgICAgHCAMDAwMLAwgDCAgIDQgIAREHBwcHBwM+AwMDAwMHBwcHBwcHBwMDAwMDBwsDAwgICAgICAgICwMDAwMHCAsHMQgHCAgMCAgICAgMCAgIBwwPCwwIBwMICAgICAgICAgIAwMDAwwMDAwIAwMDAwMLCAcICAwHDAcHAwcHAwMDAwMDAwMDAwMHCwcHBwcHAwgDAwgDAwEDAwMHAwMLCwgHBwMHBwsDAwQDEQQEBAgIDAMMAwsMDgMMAwwHOwMDAwMDAwMDAwMDAwMDAwMHAwcDAwMHCAsDBwcHCwgHBwgICAgIDg4ODg4ODggMCAgICwcDCAsLAwgHCAgLKwsHCAQIAwMDAwMDAwMDAwMDAwMDAwMDCwMHBwcHBwcHBwcHBwcHBwcLBAgIBwcDBwMMBAcD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oB4hfCAELQCcHiF9IAQoApgeIX4gBCgClB4hfyAEKAKQHiGAASAELQCMHiGBASAEKAKIHiGCASAEKAKEHiGDASAEKAKAHiGEASAELQD8HSGFASAEKAL4HSGGASAEKAL0HSGHASAEKALwHSGIASAELQDsHSGJASAEKALoHSGKASAEKALkHSGLASAEKALgHSGMASAELQDcHSGNASAEKALYHSGOASAEKALUHSGPASAEKALQHSGQASAELQDMHSGRASAEKALIHSGSASAEKALEHSGTASAEKALAHSGUASAELQC8HSGVASAEKAK4HSGWASAEKAK0HSGXASAEKAKwHSGYASAELQCsHSGZASAEKAKoHSGaASAEKAKkHSGbASAEKAKgHSGcASAELQCcHSGdASAEKAKYHSGeASAEKAKUHSGfASAEKAKQHSGgASAELQCMHSGhASAEKAKIHSGiASAEKAKEHSGjASAEKAKAHSGkASAELQD8HCGlASAEKAL4HCGmASAEKAL0HCGnASAEKALwHCGoASAELQDsHCGpASAEKALoHCGqASAEKALkHCGrASAEKALgHCGsASAELQDcHCGtASAEKALYHCGuASAEKALUHCGvASAEKALQHCGwASAELQDMHCGxASAEKALIHCGyASAEKALEHCGzASAEKALAHCG0ASAELQC8HCG1ASAEKAK4HCG2ASAEKAK0HCG3ASAEKAKwHCG4ASAELQCsHCG5ASAEKAKoHCG6ASAEKAKkHCG7ASAEKAKgHCG8ASAELQCcHCG9ASAEKAKYHCG+ASAEKAKUHCG/ASAEKAKQHCHAASAELQCMHCHBASAEKAKIHCHCASAEKAKEHCHDASAEKAKAHCHEASAELQD8GyHFASAEKAL4GyHGASAEKAL0GyHHASAEKALwGyHIASAELQDsGyHJASAEKALoGyHKASAEKALkGyHLASAEKALgGyHMASAELQDcGyHNASAEKALYGyHOASAEKALUGyHPASAEKALQGyHQASAELQDMGyHRASAEKALIGyHSASAEKALEGyHTASAEKALAGyHUASAELQC8GyHVASAEKAK4GyHWASAEKAK0GyHXASAEKAKwGyHYASAELQCsGyHZASAEKAKoGyHaASAEKAKkGyHbASAEKAKgGyHcASAELQCcGyHdASAEKAKYGyHeASAEKAKUGyHfASAEKAKQGyHg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7QIgBCgCxAwh7gIgBCgCyAwh7wIgBC0AzAwh8AIgBCgC0Awh8QIgBCgC1Awh8gIgBCgC2Awh8wIgBC0A3Awh9AIgBCgC4Awh9QIgBCgC5Awh9gIgBCgC6Awh9wIgBC0A7Awh+AIgBCgC8Awh+QIgBCgC9Awh+gIgBCgC+Awh+wIgBC0A/Awh/AIgBCgCgA0h/QIgBCgChA0h/gIgBCgCiA0h/wIgBC0AjA0hgAMgBCgCkA0hgQMgBCgClA0hggMgBCgCmA0hgwMgBC0AnA0hhAMgBCgCoA0hhQMgBCgCpA0hhgMgBCgCqA0hhwMgBC0ArA0hiAMgBCgCsA0hiQMgBCgCtA0higMgBCgCuA0hiwMgBC0AvA0hjAMgBCgCwA0hjQMgBCgCxA0hjgMgBCgCyA0hjwMgBC0AzA0hkAMgBCgC0A0hkQMgBCgC1A0hkgMgBCgC2A0hkwMgBC0A3A0hlAMgBCgC4A0hlQMgBCgC5A0hlgMgBCgC6A0hlwMgBC0A7A0hmAMgBCgC8A0hmQMgBCgC9A0hmgMgBCgC+A0hmwMgBC0A/A0hnAMgBCgCgA4hnQMgBCgChA4hngMgBCgCiA4hnwMgBC0AjA4hoAMgBCgCkA4hoQMgBCgClA4hogMgBCgCmA4howMgBC0AnA4hpAMgBCgCoA4hpQMgBCgCpA4hpgMgBCgCqA4hpwMgBC0ArA4hqAMgBCgCsA4hqQMgBCgCtA4hqgMgBCgCuA4hqwMgBC0AvA4hrAMgBCgCwA4hrQMgBCgCxA4hrgMgBCgCyA4hrwMgBC0AzA4hsAMgBCgC0A4hsQMgBCgC1A4hsgMgBCgC2A4hswMgBC0A3A4htAMgBCgC4A4htQMgBCgC5A4htgMgBCgC6A4htwMgBC0A7A4huAMgBCgC8A4huQMgBCgC9A4hugMgBCgC+A4huwMgBC0A/A4hvAMgBCgCgA8hvQMgBCgChA8hvgMgBCgCiA8hvwMgBC0AjA8hwAMgBC8ArQohwQMgBC8AvQohwgMgBC8AzQohwwMgBC8A3QohxAMgBC8A7QohxQMgBC8A/QohxgMgBC8AjQshxwMgBC8AnQshyAMgBC8ArQshyQMgBC8AvQshygMgBC8AzQshywMgBC8A3QshzAMgBC8A7QshzQMgBC8A/QshzgMgBC8AjQwhzwMgBC8AnQwh0AMgBC8ArQwh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tQIhuQIgtgIhugIgECGzAiAUIbQCIA8htQIgDiG2AiAeIbsCIBghECAXIRQgFiEPIBUhDiATIRVBACEWIB8hEyAhIR8gICEhICQhICAlISQgJiElIIwCISZBACGUBCCfBCGkBCCeBCGlBAsgBEGQD2oQ8hsMAQtBACGMBCCyASGNBCCzASGOBCC0ASGPBCC1ASGQBCC5ASG1ASC4ASG0ASC3ASGzASC2ASGyASC9ASG5ASC8ASG4ASC7ASG3ASC6ASG2ASDBASG9ASDAASG8ASC/ASG7ASC+ASG6ASDFASHBASDEASHAASDDASG/ASDCASG+ASDJASHFASDIASHEASDHASHDASDGASHCASDNASHJASDMASHIASDLASHHASDKASHGASDRASHNASDQASHMASDPASHLASDOASHKASDVASHRASDUASHQASDTASHPASDSASHOASDZASHVASDYASHUASDXASHTASDWASHSASDdASHZASDcASHYASDbASHXASDaASHWASDhASHdASDgASHcASDfASHbASDeASHaASDiASHgASARId8BIBIh3gEgwAMhkQQgIyHiAUEAIRFBACESILwDIcADIL0DISMgvgMh4QEgvwMhkgQguAMhvAMguQMhvQMgugMhvgMguwMhvwMgtAMhuAMgtQMhuQMgtgMhugMgtwMhuwMgsAMhtAMgsQMhtQMgsgMhtgMgswMhtwMgrAMhsAMgrQMhsQMgrgMhsgMgrwMhswMgqAMhrAMgqQMhrQMgqgMhrgMgqwMhrwMgpAMhqAMgpQMhqQMgpgMhqgMgpwMhqwMgoAMhpAMgoQMhpQMgogMhpgMgowMhpwMgnAMhoAMgnQMhoQMgngMhogMgnwMhowMgmAMhnAMgmQMhnQMgmgMhngMgmwMhnwMglAMhmAMglQMhmQMglgMhmgMglwMhmwMgkAMhlAMgkQMhlQMgkgMhlgMgkwMhlwMgjAMhkAMgjQMhkQMgjgMhkgMgjwMhkwMgiAMhjAMgiQMhjQMgigMhjgMgiwMhjwMghAMhiAMghQMhiQMghgMhigMghwMhiwMggAMhhAMggQMhhQMgggMhhgMggwMhhwMg/AIhgAMg/QIhgQMg/gIhggMg/wIhgwMg+AIh/AIg+QIh/QIg+gIh/gIg+wIh/wIg9AIh+AIg9QIh+QIg9gIh+gIg9wIh+wIg8AIh9AIg8QIh9QIg8gIh9gIg8wIh9wIg7AIh8AIg7QIh8QIg7gIh8gIg7wIh8wIg6AIh7AIg6QIh7QIg6gIh7gIg6wIh7wIg5AIh6AIg5QIh6QIg5gIh6gIg5wIh6wIg4AIh5AIg4QIh5QIg4gIh5gIg4wIh5wIg3AIh4AIg3QIh4QIg3gIh4gIg3wIh4wIg2AIh3AIg2QIh3QIg2gIh3gIg2wIh3wIg1AIh2AIg1QIh2QIg1gIh2gIg1wIh2wIg0AIh1AIg0QIh1QIg0gIh1gIg0wIh1wIgzAIh0AIgzQIh0QIgzgIh0gIgzwIh0wIgyAIhzAIgyQIhzQIgygIhzgIgywIhzwIgxAIhyAIgxQIhyQIgxgIhygIgxwIhywIgwAIhxAIgwQIhxQIgwgIhxgIgwwIhxwIgvAIhwAIgvQIhwQIgvgIhwgIgvwIhwwIguAIhvAIguQIhvQIgugIhvgIguwIhvwIgswIhkwQgtAIhuAIgtQIhuQIgtgIhugIgECGzAiAUIbQCIA8htQIgDiG2AiAeIbsCIBghECAXIRQgFiEPIBUhDiATIRVBACEWIB8hEyAhIR8gICEhICQhICAlISQgJiElIIwCISZBACGUBCCfBCGkBCCeBCGlBAtCAyGeBAJAAkACQAJAIKMEQgOFIKIEhFBFDQBCACGfBAJAIAEtAEQiBUECRg0AIAVBAXFFDQMLAkAgAS0AQiIFQQJGDQAgBUEBcUUNAwsgASgCWC0AHEEBcQ0CQgIhogRCACGjBAJAIKQEQgKFIKUEhEIAUg0AIJQEQQFxDQAgkAQhAyCPBCECII4EIRggjQQhHiC1ASGQBCC0ASGPBCCzASGOBCCyASGNBCC5ASG1ASC4ASG0ASC3ASGzASC2ASGyASC9ASG5ASC8ASG4ASC7ASG3ASC6ASG2ASDBASG9ASDAASG8ASC/ASG7ASC+ASG6ASDFASHBASDEASHAASDDASG/ASDCASG+ASDJASHFASDIASHEASDHASHDASDGASHCASDNASHJASDMASHIASDLASHHASDKASHGASDRASHNASDQASHMASDPASHLASDOASHKASDVASHRASDUASHQASDTASHPASDSASHOASDZASHVASDYASHUASDXASHTASDWASHSASDdASHZASDcASHYASDbASHXASDaASHWASCMBCHdASDgASHcASDfASHbASDeASHaASCRBCGMBCDiASHgASARId8BIBIh3gEgwAMhkQQgIyHiASDhASERIJIEIRIgvAMhwAMgvQMhIyC+AyHhASC/AyGSBCC4AyG8AyC5AyG9AyC6AyG+AyC7AyG/AyC0AyG4AyC1AyG5AyC2AyG6AyC3AyG7AyCwAyG0AyCxAyG1AyCyAyG2AyCzAyG3AyCsAyGwAyCtAyGxAyCuAyGyAyCvAyGzAyCoAyGsAyCpAyGtAyCqAyGuAyCrAyGvAyCkAyGoAyClAyGpAyCmAyGqAyCnAyGrAyCgAyGkAyChAyGlAyCiAyGmAyCjAyGnAyCcAyGgAyCdAyGhAyCeAyGiAyCfAyGjAyCYAyGcAyCZAyGdAyCaAyGeAyCbAyGfAyCUAyGYAyCVAyGZAyCWAyGaAyCXAyGbAyCQAyGUAyCRAyGVAyCSAyGWAyCTAyGXAyCMAyGQAyCNAyGRAyCOAyGSAyCPAyGTAyCIAyGMAyCJAyGNAyCKAyGOAyCLAyGPAyCEAyGIAyCFAyGJAyCGAyGKAyCHAyGLAyCAAyGEAyCBAyGFAyCCAyGGAyCDAyGHAyD8AiGAAyD9AiGBAyD+AiGCAyD/AiGDAyD4AiH8AiD5AiH9AiD6AiH+AiD7AiH/AiD0AiH4AiD1AiH5AiD2AiH6AiD3AiH7AiDwAiH0AiDxAiH1AiDyAiH2AiDzAiH3AiDsAiHwAiDtAiHxAiDuAiHyAiDvAiHzAiDoAiHsAiDpAiHtAiDqAiHuAiDrAiHvAiDkAiHoAiDlAiHpAiDmAiHqAiDnAiHrAiDgAiHkAiDhAiHlAiDiAiHmAiDjAiHnAiDcAiHgAiDdAiHhAiDeAiHiAiDfAiHjAiDYAiHcAiDZAiHdAiDaAiHeAiDbAiHfAiDUAiHYAiDVAiHZAiDWAiHaAiDXAiHbAiDQAiHUAiDRAiHVAiDSAiHWAiDTAiHXAiDMAiHQAiDNAiHRAiDOAiHSAiDPAiHTAiDIAiHMAiDJAiHNAiDKAiHOAiDLAiHPAiDEAiHIAiDFAiHJAiDGAiHKAiDHAiHLAiDAAiHEAiDBAiHFAiDCAiHGAiDDAiHHAiC8AiHAAiC9AiHBAiC+AiHCAiC/AiHDAiCTBCGMAiC4AiG8AiC5AiG9AiC6AiG+AiCzAiGTBCC0AiG4AiC1AiG5AiC2AiG6AiC7AiG/AiAQIbMCIBQhtAIgDyG1AiAOIbYCIBUhDyATIRUgHyETICEhHyCLAiEOICAhISAkISAgJSEkICYhJUIAIZ8EDAQLAkAgDEH/AXFBAkYNACAMQQFxDQILIANBAUcNASAGrUIIhiAbrUL/AYOEIZ8EIKEEQiCGIKAEQiCIhCGjBCCgBEIghiCyAq2EIaIEIBytQiCGIB2thCGnBCACKAIAIQUCQANAAkAgBSgCACIDQQVGDQAgAw4IBAQEBAQHAgQECyAFKAIEIQUMAAsLIARBgApqIAUoAggiAyADIAUoAgxBHGxqENAJIARB8BpqIARBgApqELIBIARBgApqIARB8BpqEO4YAkAgBCgCgApBBkYNACAEQYAKahCoDQwCCyAEKAKECiKXBEGAgICAeEYNASAEKAKMCiGYBCAEKAKICiGMAgJAIAQpAogKIqYEQv////8fWA0AIKYEQiCIpyEeIJgEQQEgmARBAUsbIRggjAJBHGohAyAEQf8aaiGZBEEBIQUDQAJAAkACQAJAAkAgGCAFRg0AIARB8BpqIAMQkg0gBC0A/BoiAkECRg0EIAQoAvQaIZoEIAQoAvAaIZYEAkAgAkEBcQ0AIJYEIJYEKAIAIgJBf2o2AgAgAkEBRw0FIJYEIJoEEOoPDAULIJkELQAAIR4gBC8A/RohmQQgBCgC+BohmwQgBEGACmogmAQgBWsiGEEEQRwQzQ0gBCgChAohmAQgBCgCgApBAUYNASAeQRB0IZwEIAQoAogKIR4CQCAYQRxsIp0ERQ0AIB4gAyCdBPwKAAALIAKtIaYEIJkEIJwEciEDIAQgGDYCiAogBCAeNgKECiAEIJgENgKACiAEQfAaaiAEQYAKahCyASAEIAU2AogKIAQgjAI2AoQKIAQglwQ2AoAKIARBkA9qIARBgApqELIBIARBgApqIARB8BpqEJINIAQtAIwKIgJBAkYNAiAEKAKECiEeIAQoAoAKIRgCQCACQQFxDQAgGCAYKAIAIgVBf2o2AgACQCAFQQFHDQAgGCAeEOoPCyAEQYgYaiAEQZwPaikCADcDACAEQZAYaiAEQaQPaikCADcDACAEIAQpApQPNwOAGCCmBEIghiCbBK2EIAOtQiiGhCGmBCAEKAKQDyEFIARB8BpqEPMdDAQLIARBiBhqIARBnA9qKQIANwMAIARBkBhqIARBpA9qKQIANwMAIAQgBCkClA83A4AYIARBjwpqMQAAIaYEIAQ1AogKIagEIAQzAI0KIakEIAQoApAPIQUgBEHwGmoQ8x0glgQglgQoAgAiA0F/ajYCACCoBCACrUIghoQgpgRCOIYgqQRCKIaEhCGmBAJAIANBAUcNACCWBCCaBBDqDwsgGCGWBCAeIZoEDAMLIAUgmARBkJOEARCzEQALIJgEIAQoAogKQaCThAEQqh4ACyAEQYgYaiAEQZwPaikCADcDACAEQZAYaiAEQaQPaikCADcDACAEIAQpApQPNwOAGCCmBEIghiCbBK2EIAOtQiiGhCGmBCAEKAKQDyEFIARB8BpqEPMdCyAFQQhGDQQgBEGkD2ogBEGQGGopAwA3AgAgBEGcD2ogBEGAGGpBCGopAwA3AgAgBCAEKQOAGDcClA8gBCAFNgKQDyABLQBDIQUgASgCFCECIAEoAhAhAyABLQBBIRggAS0AQCEeIARB8BpqEJ0KIARBATsA+xogBCAYQQogHhs6APkaIARBAToA+BpBAiGXBCAEQQI6AP0aIARBgICABSACIANBAkYiGBs2AvQaIARBASADIBgbNgLwGiAEIAUgBUECRnJBAXE6APoaIAQgBEGQD2o2AoAKIARB4ANqIARB8BpqIARBgApqQQEQUSAEQfAaahDkCAJAIAQoAuADQSpGDQAgBEHgA2oQ+xQglgQglgQoAgAiBUF/ajYCAAJAIAVBAUcNACCWBCCaBBDqDwsgBEGQD2oQ8x0MBQsgBCgC5AMhmAQCQAJAIAEtAEUiBUECRg0AIAVBAXENAEEAIQVBACGyAkEAIZkEQQAhnAQMAQsgBEHwGmogASCYBBCgBiAELwD9GiAELQD/GkEQdHIhBSAELQD8GiGyAiAEKAL4GiGZBCAEKAL0GiGcBCAEKALwGiGXBAsCQEGABUUNACAEQaAEaiAEQYAbakGABfwKAAALIARBkA9qEPMdILEBIQMgsAEhAiCvASEYIK4BIR4gqgEhrgEgqwEhrwEgrAEhsAEgrQEhsQEgpgEhqgEgpwEhqwEgqAEhrAEgqQEhrQEgogEhpgEgowEhpwEgpAEhqAEgpQEhqQEgngEhogEgnwEhowEgoAEhpAEgoQEhpQEgmgEhngEgmwEhnwEgnAEhoAEgnQEhoQEglgEhmgEglwEhmwEgmAEhnAEgmQEhnQEgkgEhlgEgkwEhlwEglAEhmAEglQEhmQEgjgEhkgEgjwEhkwEgkAEhlAEgkQEhlQEgigEhjgEgiwEhjwEgjAEhkAEgjQEhkQEghgEhigEghwEhiwEgiAEhjAEgiQEhjQEgggEhhgEggwEhhwEghAEhiAEghQEhiQEgfiGCASB/IYMBIIABIYQBIIEBIYUBIHohfiB7IX8gfCGAASB9IYEBIHYheiB3IXsgeCF8IHkhfSByIXYgcyF3IHQheCB1IXkgbiFyIG8hcyBwIXQgcSF1IGohbiBrIW8gbCFwIG0hcSBmIWogZyFrIGghbCBpIW0gYiFmIGMhZyBkIWggZSFpIF4hYiBfIWMgYCFkIGEhZSBaIV4gWyFfIFwhYCBdIWEgViFaIFchWyBYIVwgWSFdIFIhViBTIVcgVCFYIFUhWSBOIVIgTyFTIFAhVCBRIVUgSiFOIEshTyBMIVAgTSFRIEYhSiBHIUsgSCFMIEkhTSALIUYgDSFHIAghSCBFIUkgjQIhCyCOAiENII8CIQggDCFFILcCIYwCIL8CIbcCIKcEIaAEIJ8EIaEEIBohvwIgkAIhjQIgkQIhjgIgkgIhjwIgGSEdIBAhHCAUIRsgDyEaIA4hGSAKIQYgkwIhkAIglAIhkQIglQIhkgIgCSEKID0hCSA+IT0gPyE+IEAhPyBBIUAgQiFBIJYCIZMCIJcCIZQCIJgCIZUCIEMhQiBEIUMg4wEhRCCZAiGWAiCaAiGXAiCbAiGYAiDkASHjASDlASHkASDmASHlASDnASHmASDoASHnASDpASHoASCcAiGZAiCdAiGaAiCeAiGbAiDqASHpASDrASHqASDsASHrASDtASHsASCfAiGcAiCgAiGdAiChAiGeAiDuASHtASDvASHuASDwASHvASDxASHwASDyASHxASDzASHyASCiAiGfAiCjAiGgAiCkAiGhAiD0ASHzASD1ASH0ASCmAiGiAiCnAiGjAiCoAiGkAiD2ASH1ASD3ASH2ASD4ASH3ASD5ASH4ASClAiEPIPoBIfkBIPsBIfoBIPwBIfsBIP0BIfwBIKkCIaUCIKoCIaYCIKsCIacCIKwCIagCIP4BIf0BIBYh/gEg/wEhFiCAAiH/ASCBAiGAAiCCAiGBAiCDAiGCAiCEAiGDAiCtAiGpAiCuAiGqAiCvAiGrAiCwAiGsAiCFAiGEAiCGAiGFAiCHAiGGAiCIAiGHAiCJAiGIAiCKAiGJAiCDBCGKAiCCBCGDBCCxAiGtAiDBAyGuAiDCAyGvAiDDAyGwAiCBBCGCBCCABCGBBCD/AyGABCD+AyH/AyDEAyGxAiDFAyHBAyDGAyHCAyDHAyHDAyD9AyH+AyD8AyH9AyD7AyH8AyD6AyH7AyD5AyH6AyD4AyH5AyD3AyH4AyD2AyH3AyDIAyHEAyDJAyHFAyDKAyHGAyDLAyHHAyD1AyH2AyD0AyH1AyDzAyH0AyDyAyHzAyDxAyHyAyDwAyHxAyDvAyHwAyDuAyHvAyDMAyHIAyDNAyHJAyDOAyHKAyDPAyHLAyDtAyHuAyDsAyHtAyDrAyHsAyDqAyHrAyDpAyHqAyDoAyHpAyAXIegDICchFyAoIScg0AMhzAMg0QMhzQMg0gMhzgMg0wMhzwMgKSEoICohKSArISogLCErIC0hLCA8IS0g1AMh0AMg1QMh0QMg1gMh0gMg1wMh0wMgLiEOIC8hLiAwIS8gMSEwIDIhMSAzITIgNCEzIDUhNCA2ITUgNyE2INgDIdQDINkDIdUDINoDIdYDINsDIdcDIDghNyA5ITggOiE5IDshOiCVBCE7IAUhlQQgiwIhPCDcAyHYAyDdAyHZAyDeAyHaAyDfAyHbAyDgAyHcAyDhAyHdAyDiAyHeAyDjAyHfAyDkAyHgAyDlAyHhAyDmAyHiAyDnAyHjAyCIBCHkAyCJBCHlAyCKBCHmAyCLBCHnAyCEBCGIBCCFBCGJBCCGBCGKBCCHBCGLBCCUBCGEBCAiIYUEIAchhgQgASGHBCCyAiGUBCCZBCEiIJwEIQcglwQhASAmIQwguwIhsgIgpAQhngQgpQQhnwQMBgsgA0EcaiEDIB4gBUEBaiIFRw0ACwsgjAIgmAQQ7hsglwQgjAIQsyAMAQtBAC0AwPGdARpBEEHQDRCeByIFRQ0DIAUglQQ7AM0NIAUgOzsAvQ0gBSA6OwCtDSAFIDk7AJ0NIAUgODsAjQ0gBSA3OwD9DCAFIDY7AO0MIAUgNTsA3QwgBSA0OwDNDCAFIDM7AL0MIAUgMjsArQwgBSAxOwCdDCAFIDA7AI0MIAUgLzsA/QsgBSAuOwDtCyAFIIsCOwDdCyAFIDw7AM0LIAUgLTsAvQsgBSAsOwCtCyAFICs7AJ0LIAUgKjsAjQsgBSApOwD9CiAFICg7AO0KIAUgJzsA3QogBSAXOwDNCiAFIOgDOwC9CiAFIOkDOwCtCiAFIOoDOwCdCiAFIOsDOwCNCiAFIOwDOwD9CSAFIO0DOwDtCSAFIO4DOwDdCSAFIO8DOwDNCSAFIPADOwC9CSAFIPEDOwCtCSAFIPIDOwCdCSAFIPMDOwCNCSAFIPQDOwD9CCAFIPUDOwDtCCAFIPYDOwDdCCAFIPcDOwDNCCAFIPgDOwC9CCAFIPkDOwCtCCAFIPoDOwCdCCAFIPsDOwCNCCAFIPwDOwD9ByAFIP0DOwDtByAFIP4DOwDdByAFIP8DOwDNByAFIIAEOwC9ByAFIIEEOwCtByAFIIIEOwCdByAFIIMEOwCNByAFIIoCOwD9BiAFIIkCOwDtBiAFIIgCOwDdBiAFIIcCOwDNBiAFIIYCOwC9BiAFIIUCOwCtBiAFIIQCOwCdBiAFIIMCOwCNBiAFIIICOwD9BSAFIIECOwDtBSAFIIACOwDdBSAFIP8BOwDNBSAFIBY7AL0FIAUg/gE7AK0FIAUg/QE7AJ0FIAUg/AE7AI0FIAUg+wE7AP0EIAUg+gE7AO0EIAUg+QE7AN0EIAUg+AE7AM0EIAUg9wE7AL0EIAUg9gE7AK0EIAUg9QE7AJ0EIAUg9AE7AI0EIAUg8wE7AP0DIAUg8gE7AO0DIAUg8QE7AN0DIAUg8AE7AM0DIAUg7wE7AL0DIAUg7gE7AK0DIAUg7QE7AJ0DIAUg7AE7AI0DIAUg6wE7AP0CIAUg6gE7AO0CIAUg6QE7AN0CIAUg6AE7AM0CIAUg5wE7AL0CIAUg5gE7AK0CIAUg5QE7AJ0CIAUg5AE7AI0CIAUg4wE7AP0BIAUgRDsA7QEgBSBDOwDdASAFIEI7AM0BIAUgQTsAvQEgBSBAOwCtASAFID87AJ0BIAUgPjsAjQEgBSA9OwB9IAUgCTsAbSAFIAo7AF0gBSAGOwBNIAUgoAQ3AjQgBSCkBDcDICAFIKMENwMQIAUglAQ6AMwNIAUgIjYCyA0gBSAHNgLEDSAFIAE2AsANIAUghAQ6ALwNIAUghQQ2ArgNIAUghgQ2ArQNIAUghwQ2ArANIAUgiAQ6AKwNIAUgiQQ2AqgNIAUgigQ2AqQNIAUgiwQ2AqANIAUg5AM6AJwNIAUg5QM2ApgNIAUg5gM2ApQNIAUg5wM2ApANIAUg4AM6AIwNIAUg4QM2AogNIAUg4gM2AoQNIAUg4wM2AoANIAUg3AM6APwMIAUg3QM2AvgMIAUg3gM2AvQMIAUg3wM2AvAMIAUg2AM6AOwMIAUg2QM2AugMIAUg2gM2AuQMIAUg2wM2AuAMIAUg1AM6ANwMIAUg1QM2AtgMIAUg1gM2AtQMIAUg1wM2AtAMIAUg0AM6AMwMIAUg0QM2AsgMIAUg0gM2AsQMIAUg0wM2AsAMIAUgzAM6ALwMIAUgzQM2ArgMIAUgzgM2ArQMIAUgzwM2ArAMIAUgyAM6AKwMIAUgyQM2AqgMIAUgygM2AqQMIAUgywM2AqAMIAUgxAM6AJwMIAUgxQM2ApgMIAUgxgM2ApQMIAUgxwM2ApAMIAUgsQI6AIwMIAUgwQM2AogMIAUgwgM2AoQMIAUgwwM2AoAMIAUgrQI6APwLIAUgrgI2AvgLIAUgrwI2AvQLIAUgsAI2AvALIAUgqQI6AOwLIAUgqgI2AugLIAUgqwI2AuQLIAUgrAI2AuALIAUgpQI6ANwLIAUgpgI2AtgLIAUgpwI2AtQLIAUgqAI2AtALIAUgFToAzAsgBSCiAjYCyAsgBSCjAjYCxAsgBSCkAjYCwAsgBSATOgC8CyAFIJ8CNgK4CyAFIKACNgK0CyAFIKECNgKwCyAFIB86AKwLIAUgnAI2AqgLIAUgnQI2AqQLIAUgngI2AqALIAUgIToAnAsgBSCZAjYCmAsgBSCaAjYClAsgBSCbAjYCkAsgBSAgOgCMCyAFIJYCNgKICyAFIJcCNgKECyAFIJgCNgKACyAFICQ6APwKIAUgkwI2AvgKIAUglAI2AvQKIAUglQI2AvAKIAUgJToA7AogBSCQAjYC6AogBSCRAjYC5AogBSCSAjYC4AogBSAmOgDcCiAFII0CNgLYCiAFII4CNgLUCiAFII8CNgLQCiAFIAw6AMwKIAUgCzYCyAogBSANNgLECiAFIAg2AsAKIAUgRToAvAogBSBGNgK4CiAFIEc2ArQKIAUgSDYCsAogBSBJOgCsCiAFIEo2AqgKIAUgSzYCpAogBSBMNgKgCiAFIE06AJwKIAUgTjYCmAogBSBPNgKUCiAFIFA2ApAKIAUgUToAjAogBSBSNgKICiAFIFM2AoQKIAUgVDYCgAogBSBVOgD8CSAFIFY2AvgJIAUgVzYC9AkgBSBYNgLwCSAFIFk6AOwJIAUgWjYC6AkgBSBbNgLkCSAFIFw2AuAJIAUgXToA3AkgBSBeNgLYCSAFIF82AtQJIAUgYDYC0AkgBSBhOgDMCSAFIGI2AsgJIAUgYzYCxAkgBSBkNgLACSAFIGU6ALwJIAUgZjYCuAkgBSBnNgK0CSAFIGg2ArAJIAUgaToArAkgBSBqNgKoCSAFIGs2AqQJIAUgbDYCoAkgBSBtOgCcCSAFIG42ApgJIAUgbzYClAkgBSBwNgKQCSAFIHE6AIwJIAUgcjYCiAkgBSBzNgKECSAFIHQ2AoAJIAUgdToA/AggBSB2NgL4CCAFIHc2AvQIIAUgeDYC8AggBSB5OgDsCCAFIHo2AugIIAUgezYC5AggBSB8NgLgCCAFIH06ANwIIAUgfjYC2AggBSB/NgLUCCAFIIABNgLQCCAFIIEBOgDMCCAFIIIBNgLICCAFIIMBNgLECCAFIIQBNgLACCAFIIUBOgC8CCAFIIYBNgK4CCAFIIcBNgK0CCAFIIgBNgKwCCAFIIkBOgCsCCAFIIoBNgKoCCAFIIsBNgKkCCAFIIwBNgKgCCAFII0BOgCcCCAFII4BNgKYCCAFII8BNgKUCCAFIJABNgKQCCAFIJEBOgCMCCAFIJIBNgKICCAFIJMBNgKECCAFIJQBNgKACCAFIJUBOgD8ByAFIJYBNgL4ByAFIJcBNgL0ByAFIJgBNgLwByAFIJkBOgDsByAFIJoBNgLoByAFIJsBNgLkByAFIJwBNgLgByAFIJ0BOgDcByAFIJ4BNgLYByAFIJ8BNgLUByAFIKABNgLQByAFIKEBOgDMByAFIKIBNgLIByAFIKMBNgLEByAFIKQBNgLAByAFIKUBOgC8ByAFIKYBNgK4ByAFIKcBNgK0ByAFIKgBNgKwByAFIKkBOgCsByAFIKoBNgKoByAFIKsBNgKkByAFIKwBNgKgByAFIK0BOgCcByAFIK4BNgKYByAFIK8BNgKUByAFILABNgKQByAFILEBOgCMByAFII0ENgKIByAFII4ENgKEByAFII8ENgKAByAFIJAEOgD8BiAFILIBNgL4BiAFILMBNgL0BiAFILQBNgLwBiAFILUBOgDsBiAFILYBNgLoBiAFILcBNgLkBiAFILgBNgLgBiAFILkBOgDcBiAFILoBNgLYBiAFILsBNgLUBiAFILwBNgLQBiAFIL0BOgDMBiAFIL4BNgLIBiAFIL8BNgLEBiAFIMABNgLABiAFIMEBOgC8BiAFIMIBNgK4BiAFIMMBNgK0BiAFIMQBNgKwBiAFIMUBOgCsBiAFIMYBNgKoBiAFIMcBNgKkBiAFIMgBNgKgBiAFIMkBOgCcBiAFIMoBNgKYBiAFIMsBNgKUBiAFIMwBNgKQBiAFIM0BOgCMBiAFIM4BNgKIBiAFIM8BNgKEBiAFINABNgKABiAFINEBOgD8BSAFINIBNgL4BSAFINMBNgL0BSAFINQBNgLwBSAFINUBOgDsBSAFINYBNgLoBSAFINcBNgLkBSAFINgBNgLgBSAFINkBOgDcBSAFINoBNgLYBSAFINsBNgLUBSAFINwBNgLQBSAFIN0BOgDMBSAFIN4BNgLIBSAFIN8BNgLEBSAFIOABNgLABSAFIIwEOgC8BSAFIBI2ArgFIAUgETYCtAUgBSDiATYCsAUgBSCRBDoArAUgBSCSBDYCqAUgBSDhATYCpAUgBSAjNgKgBSAFIMADOgCcBSAFIL8DNgKYBSAFIL4DNgKUBSAFIL0DNgKQBSAFILwDOgCMBSAFILsDNgKIBSAFILoDNgKEBSAFILkDNgKABSAFILgDOgD8BCAFILcDNgL4BCAFILYDNgL0BCAFILUDNgLwBCAFILQDOgDsBCAFILMDNgLoBCAFILIDNgLkBCAFILEDNgLgBCAFILADOgDcBCAFIK8DNgLYBCAFIK4DNgLUBCAFIK0DNgLQBCAFIKwDOgDMBCAFIKsDNgLIBCAFIKoDNgLEBCAFIKkDNgLABCAFIKgDOgC8BCAFIKcDNgK4BCAFIKYDNgK0BCAFIKUDNgKwBCAFIKQDOgCsBCAFIKMDNgKoBCAFIKIDNgKkBCAFIKEDNgKgBCAFIKADOgCcBCAFIJ8DNgKYBCAFIJ4DNgKUBCAFIJ0DNgKQBCAFIJwDOgCMBCAFIJsDNgKIBCAFIJoDNgKEBCAFIJkDNgKABCAFIJgDOgD8AyAFIJcDNgL4AyAFIJYDNgL0AyAFIJUDNgLwAyAFIJQDOgDsAyAFIJMDNgLoAyAFIJIDNgLkAyAFIJEDNgLgAyAFIJADOgDcAyAFII8DNgLYAyAFII4DNgLUAyAFII0DNgLQAyAFIIwDOgDMAyAFIIsDNgLIAyAFIIoDNgLEAyAFIIkDNgLA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HzoAnAsgBSCZAjYCmAsgBSCaAjYClAsgBSCbAjYCkAsgBSAhOgCMCyAFIJYCNgKICyAFIJcCNgKECyAFIJgCNgKACyAFICA6APwKIAUgkwI2AvgKIAUglAI2AvQKIAUglQI2AvAKIAUgJDoA7AogBSCQAjYC6AogBSCRAjYC5AogBSCSAjYC4AogBSAlOgDcCiAFII0CNgLYCiAFII4CNgLUCiAFII8CNgLQCiAFIAw6AMwKIAUgCzYCyAogBSANNgLECiAFIAg2AsAKIAUgRToAvAogBSBGNgK4CiAFIEc2ArQKIAUgSDYCsAogBSBJOgCsCiAFIEo2AqgKIAUgSzYCpAogBSBMNgKgCiAFIE06AJwKIAUgTjYCmAogBSBPNgKUCiAFIFA2ApAKIAUgUToAjAogBSBSNgKICiAFIFM2AoQKIAUgVDYCgAogBSBVOgD8CSAFIFY2AvgJIAUgVzYC9AkgBSBYNgLwCSAFIFk6AOwJIAUgWjYC6AkgBSBbNgLkCSAFIFw2AuAJIAUgXToA3AkgBSBeNgLYCSAFIF82AtQJIAUgYDYC0AkgBSBhOgDMCSAFIGI2AsgJIAUgYzYCxAkgBSBkNgLACSAFIGU6ALwJIAUgZjYCuAkgBSBnNgK0CSAFIGg2ArAJIAUgaToArAkgBSBqNgKoCSAFIGs2AqQJIAUgbDYCoAkgBSBtOgCcCSAFIG42ApgJIAUgbzYClAkgBSBwNgKQCSAFIHE6AIwJIAUgcjYCiAkgBSBzNgKECSAFIHQ2AoAJIAUgdToA/AggBSB2NgL4CCAFIHc2AvQIIAUgeDYC8AggBSB5OgDsCCAFIHo2AugIIAUgezYC5AggBSB8NgLgCCAFIH06ANwIIAUgfjYC2AggBSB/NgLUCCAFIIABNgLQCCAFIIEBOgDMCCAFIIIBNgLICCAFIIMBNgLECCAFIIQBNgLACCAFIIUBOgC8CCAFIIYBNgK4CCAFIIcBNgK0CCAFIIgBNgKwCCAFIIkBOgCsCCAFIIoBNgKoCCAFIIsBNgKkCCAFIIwBNgKgCCAFII0BOgCcCCAFII4BNgKYCCAFII8BNgKUCCAFIJABNgKQCCAFIJEBOgCMCCAFIJIBNgKICCAFIJMBNgKECCAFIJQBNgKACCAFIJUBOgD8ByAFIJYBNgL4ByAFIJcBNgL0ByAFIJgBNgLw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CyAFIB86AIwLIAUgmQI2AogLIAUgmgI2AoQLIAUgmwI2AoALIAUgIToA/AogBSCWAjYC+AogBSCXAjYC9AogBSCYAjYC8AogBSAgOgDsCiAFIJMCNgLoCiAFIJQCNgLkCiAFIJUCNgLgCiAFICQ6ANwKIAUgkAI2AtgKIAUgkQI2AtQKIAUgkgI2AtAKIAUgJToAzAogBSCNAjYCyAogBSCOAjYCxAogBSCPAjYCwAogBSAMOgC8CiAFIAs2ArgKIAUgDTYCtAogBSAINgKwCiAFIEU6AKwKIAUgRjYCqAogBSBHNgKkCiAFIEg2AqAKIAUgSToAnAogBSBKNgKYCiAFIEs2ApQKIAUgTDYCkAogBSBNOgCMCiAFIE42AogKIAUgTzYChAogBSBQNgKACiAFIFE6APwJIAUgUjYC+AkgBSBTNgL0CSAFIFQ2AvAJIAUgVToA7AkgBSBWNgLoCSAFIFc2AuQJIAUgWDYC4AkgBSBZOgDcCSAFIFo2AtgJIAUgWzYC1AkgBSBcNgLQCSAFIF06AMwJIAUgXjYCyAkgBSBfNgLECSAFIGA2AsAJIAUgYToAvAkgBSBiNgK4CSAFIGM2ArQJIAUgZDYCsAkgBSBlOgCsCSAFIGY2AqgJIAUgZzYCpAkgBSBoNgKgCSAFIGk6AJwJIAUgajYCmAkgBSBrNgKUCSAFIGw2ApAJIAUgbToAjAkgBSBuNgKICSAFIG82AoQJIAUgcDYCgAkgBSBxOgD8CCAFIHI2AvgIIAUgczYC9AggBSB0NgLwCCAFIHU6AOwIIAUgdjYC6AggBSB3NgLkCCAFIHg2AuAIIAUgeToA3AggBSB6NgLYCCAFIHs2AtQIIAUgfDYC0AggBSB9OgDMCCAFIH42AsgIIAUgfzYCxAggBSCAATYCwAggBSCBAToAvAggBSCCATYCuAggBSCDATYCtAggBSCEATYCsAggBSCFAToArAggBSCGATYCqAggBSCHATYCpAggBSCIATYCoAggBSCJAToAnAggBSCKATYCmAggBSCLATYClAggBSCMATYCkAggBSCNAToAjAggBSCOATYCiAggBSCPATYChAggBSCQATYCgAggBSCRAToA/AcgBSCSATYC+AcgBSCTATYC9AcgBSCUATYC8AcgBSCVAToA7AcgBSCWATYC6AcgBSCXATYC5AcgBSCYATYC4AcgBSCZAToA3AcgBSCaATYC2AcgBSCbATYC1AcgBSCcATYC0AcgBSCdAToAzAcgBSCeATYCyAcgBSCfATYCxAcgBSCgATYCwAcgBSChAToAvAcgBSCiATYCuAcgBSCjATYCtAcgBSCkATYCsAcgBSClAToArAcgBSCmATYCqAcgBSCnATYCpAcgBSCoATYCoAcgBSCpAToAnAcgBSCqATYCmAcgBSCrATYClAcgBSCsATYCkAcgBSCtAToAjAcgBSCuATYCiAcgBSCvATYChAcgBSCwATYCgAcgBSCxAToA/AYgBSAeNgL4BiAFIBg2AvQGIAUgAjYC8AYgBSADOgDsBiAFII0ENgLoBiAFII4ENgLkBiAFII8ENgLgBiAFIJAEOgDcBiAFILIBNgLYBiAFILMBNgLUBiAFILQBNgLQBiAFILUBOgDMBiAFILYBNgLIBiAFILcBNgLEBiAFILgBNgLABiAFILkBOgC8BiAFILoBNgK4BiAFILsBNgK0BiAFILwBNgKwBiAFIL0BOgCsBiAFIL4BNgKoBiAFIL8BNgKkBiAFIMABNgKgBiAFIMEBOgCcBiAFIMIBNgKYBiAFIMMBNgKUBiAFIMQBNgKQBiAFIMUBOgCMBiAFIMYBNgKIBiAFIMcBNgKEBiAFIMgBNgKABiAFIMkBOgD8BSAFIMoBNgL4BSAFIMsBNgL0BSAFIMwBNgLwBSAFIM0BOgDsBSAFIM4BNgLoBSAFIM8BNgLkBSAFINABNgLgBSAFINEBOgDcBSAFINIBNgLYBSAFINMBNgLUBSAFINQBNgLQBSAFINUBOgDMBSAFINYBNgLIBSAFINcBNgLEBSAFINgBNgLABSAFINkBOgC8BSAFINoBNgK4BSAFINsBNgK0BSAFINwBNgKwBSAFIN0BOgCsBSAFIN4BNgKoBSAFIN8BNgKkBSAFIOABNgKgBSAFIIwEOgCcBSAFIBI2ApgFIAUgETYClAUgBSDiATYCkAUgBSCRBDoAjAUgBSCSBDYCiAUgBSDhATYChAUgBSAjNgKABSAFIMADOgD8BCAFIL8DNgL4BCAFIL4DNgL0BCAFIL0DNgLwBCAFILwDOgDsBCAFILsDNgLoBCAFILoDNgLkBCAFILkDNgLgBCAFILgDOgDcBCAFILcDNgLYBCAFILYDNgLUBCAFILUDNgLQBCAFILQDOgDMBCAFILMDNgLIBCAFILIDNgLEBCAFILEDNgLABCAFILADOgC8BCAFIK8DNgK4BCAFIK4DNgK0BCAFIK0DNgKwBCAFIKwDOgCsBCAFIKsDNgKoBCAFIKoDNgKkBCAFIKkDNgKgBCAFIKgDOgCcBCAFIKcDNgKYBCAFIKYDNgKUBCAFIKUDNgKQBCAFIKQDOgCMBCAFIKMDNgKIBCAFIKIDNgKEBCAFIKEDNgKABCAFIKADOgD8AyAFIJ8DNgL4AyAFIJ4DNgL0AyAFIJ0DNgLwAyAFIJwDOgDsAyAFIJsDNgLoAyAFIJoDNgLkAyAFIJkDNgLgAyAFIJgDOgDcAyAFIJcDNgLYAyAFIJYDNgLUAyAFIJUDNgLQAyAFIJQDOgDMAyAFIJMDNgLIAyAFIJIDNgLEAyAFIJEDNgLAAyAFIJADOgC8AyAFII8DNgK4AyAFII4DNgK0AyAFII0DNgKwAyAFIIwDOgCsAyAFIIsDNgKoAyAFIIoDNgKkAyAFIIkDNgKgAyAFIIgDOgCcAyAFIIcDNgKYAyAFIIYDNgKUAyAFIIUDNgKQAyAFIIQDOgCMAyAFIIMDNgKIAyAFIIIDNgKEAyAFIIEDNgKAAyAFIIADOgD8AiAFIP8CNgL4AiAFIP4CNgL0AiAFIP0CNgLwAiAFIPwCOgDsAiAFIPsCNgLoAiAFIPoCNgLkAiAFIPkCNgLgAiAFIPgCOgDcAiAFIPcCNgLYAiAFIPYCNgLUAiAFIPUCNgLQAiAFIPQCOgDMAiAFIPMCNgLIAiAFIPICNgLEAiAFIPECNgLAAiAFIPACOgC8AiAFIO8CNgK4AiAFIO4CNgK0AiAFIO0CNgKwAiAFIOwCOgCsAiAFIOsCNgKoAiAFIOoCNgKkAiAFIOkCNgKgAiAFIOgCOgCcAiAFIOcCNgKYAiAFIOYCNgKUAiAFIOUCNgKQAiAFIOQCOgCMAiAFIOMCNgKIAiAFIOICNgKEAiAFIOECNgKAAiAFIOACOgD8ASAFIN8CNgL4ASAFIN4CNgL0ASAFIN0CNgLwASAFINwCOgDsASAFINsCNgLoASAFINoCNgLkASAFINkCNgLgASAFINgCOgDcASAFINcCNgLYASAFINYCNgLUASAFINUCNgLQASAFINQCOgDMASAFINMCNgLIASAFINICNgLEASAFINECNgLAASAF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FAALAkAgAi0ACUUNACADIAFB8dSaAUETIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAApFDQAgAyABQYTVmgFBECACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQALRQ0AIAMgAUGU1ZoBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ADEUNACADIAFBp9WaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAA1FDQAgAyABQb7VmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAORQ0AIAMgAUHN1ZoBQRggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AD0UNACADIAFB5dWaAUEOIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABBFDQAgAyABQfPVmgFBEiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQARRQ0AIAMgAUGF1poBQRUgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AEkUNACADIAFBmtaaAUELIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABNFDQAgAyABQaXWmgFBCiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAURQ0AIAMgAUGv1poBQRsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AFUUNACADIAFBytaaAUEiIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABZFDQAgAyABQezWmgFBGiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAXRQ0AIAMgAUGG15oBQRogAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AGEUNACADIAFBoNeaAUEdIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABlFDQAgAyABQb3XmgFBECACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAaRQ0AIAMgAUHN15oBQSsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AG0UNACADIAFB+NeaAUEeIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItABxFDQAgAyABQZbYmgFBFCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAdRQ0AIAMgAUGq2JoBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AHkUNACADIAFBwdiaAUEYIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAB9FDQAgAyABQdnYmgFBHiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAgRQ0AIAMgAUH32JoBQR0gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AIUUNACADIAFBlNmaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACJFDQAgAyABQavZmgFBGiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAjRQ0AIAMgAUHF2ZoBQRggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJEUNACADIAFB3dmaAUEZIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACVFDQAgAyABQfbZmgFBGCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAmRQ0AIAMgAUGO2poBQSMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AJ0UNACADIAFBsdqaAUEjIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAChFDQAgAyABQdTamgFBISACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQApRQ0AIAMgAUH12poBQQkgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AKkUNACADIAFB/tqaAUEMIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItACtFDQAgAyABQYrbmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAsRQ0AIAMgAUGS25oBQQggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ALUUNACADIAFBmtuaAUEcIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAC5FDQAgAyABQbbbmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAvRQ0AIAMgAUHF25oBQQsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AMEUNACADIAFB28SbAUEHIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADFFDQAgAyABQbLFmwFBAyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQAyRQ0AIAMgAUHQ25oBQRAgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AM0UNACADIAFB4NuaAUEIIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADRFDQAgAyABQejbmgFBDiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA1RQ0AIAMgAUH225oBQRsgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ANkUNACADIAFBkdyaAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADdFDQAgAyABQcWXmwFBCiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA4RQ0AIAMgAUGr3JoBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AOUUNACADIAFBwtyaAUEYIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItADpFDQAgAyABQdrcmgFBEiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA7RQ0AIAMgAUHs3JoBQREgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0APEUNACADIAFB/dyaAUEXIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAD1FDQAgAyABQZTdmgFBHSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQA+RQ0AIAMgAUGx3ZoBQQMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AP0UNACADIAFBtN2aAUEPIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEBFDQAgAyABQcPdmgFBESACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBBRQ0AIAMgAUHU3ZoBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AQkUNACADIAFB592aAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAENFDQAgAyABQYHemgFBDSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBERQ0AIAMgAUGO3poBQRMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ARUUNACADIAFBod6aAUEZIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAEZFDQAgAyABQbremgFBHyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBHRQ0AIAMgAUHZ3poBQQ4gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ASEUNACADIAFB596aAUEbIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAElFDQAgAyABQYLfmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBKRQ0AIAMgAUG1xZsBQQMgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AS0UNACADIAFBkd+aAUEQIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAExFDQAgAyABQaHfmgFBGSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBNRQ0AIAMgAUG635oBQQ8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0ATkUNACADIAFByd+aAUEVIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAE9FDQAgAyABQd7fmgFBDyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBQRQ0AIAMgAUHt35oBQRcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AUUUNACADIAFBhOCaAUEdIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFJFDQAgAyABQeDLmwFBBSACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBTRQ0AIAMgAUGh4JoBQQggAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AVEUNACADIAFBqeCaAUETIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFVFDQAgAyABQbzgmgFBDCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBWRQ0AIAMgAUHI4JoBQQ8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AV0UNACADIAFB1/+ZAUEGIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFhFDQAgAyABQdfgmgFBByACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBZRQ0AIAMgAUHe4JoBQR0gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AWkUNACADIAFB++CaAUEUIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAFtFDQAgAyABQY/hmgFBESACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBcRQ0AIAMgAUGg4ZoBQRAgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AXUUNACADIAFBsOGaAUEfIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAF5FDQAgAyABQc/hmgFBJiACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBfRQ0AIAMgAUH14ZoBQR8gAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AYEUNACADIAFBlOKaAUEhIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGFFDQAgAyABQbXimgFBGyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBiRQ0AIAMgAUHQ4poBQQwgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AY0UNACADIAFB3OKaAUEjIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGRFDQAgAyABQf/imgFBCyACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBlRQ0AIAMgAUGK45oBQQwgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AZkUNACADIAFBluOaAUELIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGdFDQAgAyABQaHjmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBoRQ0AIAMgAUGp45oBQQkgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AaUUNACADIAFBsuOaAUEaIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAGpFDQAgAyABQczjmgFBFCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBrRQ0AIAMgAUHg45oBQSQgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0AbEUNACADIAFBhOSaAUERIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAG1FDQAgAyABQZXkmgFBCCACKAIAEMYFAkAgACgCCCIFIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIAVBMGxqIgQgAykDADcDACAEQShqIANBKGopAwA3AwAgBEEgaiADQSBqKQMANwMAIARBGGogA0EYaikDADcDACAEQRBqIANBEGopAwA3AwAgBEEIaiADQQhqKQMANwMAIAAgBUEBajYCCAsCQCACLQBuRQ0AIAMgAUGd5JoBQQcgAigCABDGBQJAIAAoAggiBSAAKAIARw0AIABB1KaaARCDFwsgACgCBCAFQTBsaiIEIAMpAwA3AwAgBEEoaiADQShqKQMANwMAIARBIGogA0EgaikDADcDACAEQRhqIANBGGopAwA3AwAgBEEQaiADQRBqKQMANwMAIARBCGogA0EIaikDADcDACAAIAVBAWo2AggLAkAgAi0Ab0UNACADIAFB/bybAUEFIAIoAgAQxgUCQCAAKAIIIgUgACgCAEcNACAAQdSmmgEQgxcLIAAoAgQgBUEwbGoiBCADKQMANwMAIARBKGogA0EoaikDADcDACAEQSBqIANBIGopAwA3AwAgBEEYaiADQRhqKQMANwMAIARBEGogA0EQaikDADcDACAEQQhqIANBCGopAwA3AwAgACAFQQFqNgIICwJAIAItAHBFDQAgAyABQaTkmgFBCSACKAIAEMYFAkAgACgCCCIEIAAoAgBHDQAgAEHUppoBEIMXCyAAKAIEIARBMGxqIgEgAykDADcDACABQShqIANBKGopAwA3AwAgAUEgaiADQSBqKQMANwMAIAFBGGogA0EYaikDADcDACABQRBqIANBEGopAwA3AwAgAUEIaiADQQhqKQMANwMAIAAgBEEBajYCCAsgAiACKAIEQX9qNgIEIANBMGokAAudggECLX8GfiMAQbAGayIDJAACQAJAAkAgASgCeCIEQYCAgIAGcQ0AIAEoAsQBIQQgASgCwAEhBSADQcaAgIB4NgLoBCAFIAQgA0HoBGoQhRUhBCABLQDIAUGiAUcNASABEMcRIQUgARCHDiABIAUQ5REMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAMgBIgVB3wBGDQAgBUHYAEcNAyADQfAAakEIaiACQQhqKAIANgIAIAMgAikCADcDcCAEQYKAgIACcUGAgICAAkYNAQwSCyABKALAASEGAkAgARCiC0H/AXFBCEYNAAJAIAEQogtB/wFxRQ0AAkAgASgCeCIEQQJxDQAgASAEQQpyNgJ4CwJAAkACQAJAIAEtAMgBIgRB3wBHDQAgARCHDiABLQDIAUHAAEcNASADQegEaiABEKwNQQhBGBDrHyIFDQIMGAsgASgCxAEhBSABKALAASEGIANBgAFqIAQQ3hsgA0EBNgLsBCADQZjvmwE2AugEIANCATcC9AQgA0GKBa1CIIZB/KqbAa2ENwOABiADIANBgAZqNgLwBCADQZACaiADQegEahCNFSADQaQCaiADQYgBaigCADYCACADIAMpAoABNwKcAiAGIAUgA0GQAmoQhRUhBCABLQDIAUGiAUcNGCABEMcRIQUgARCHDiABIAUQ5REMGAsgA0EwakEEQQhByABBkKubARDYFEEAIQQgA0EANgKUASADIAMoAjQiBzYCkAEgAyADKAIwIgg2AowBIAEoAnggAS0AyAEiBRCmFQ0BQQAhCUEAIQoMDwsgBSADKQPoBDcDACAFQRBqIANB6ARqQRBqKQMANwMAIAVBCGogA0HoBGpBCGopAwA3AwAgAS0AyAEhBEEAIQcCQCABLQDJAQ0AAkAgBEH3AEYNACAEQfAARw0BCyABEIcOIANB6ARqIAEQWCADKALsBCEEAkAgAygC6AQiC0EyRw0AIAUQnx0MGAsCQEE4RQ0AIANBkAJqQQhqIANB6ARqQQhqQTj8CgAACyADIAQ2ApQCIAMgCzYCkAIgC0EORw0FQQRBFBDrHyIHRQ0WIAcgA0GQAmpBBHIiBCkCADcCACAHQRBqIARBEGooAgA2AgAgB0EIaiAEQQhqKQIANwIAIAEtAMgBIQQLAkAgBEH/AXFBBkcNACABEIcOCyABKAK8ASEIQQghDEEAIQpBACEJIAYhDUEAIQRBACELQQAhAQwTCyADQegEaiABELYNIAMoAugEIQsgAy0A/AQiBEECRg0QIANBgAZqQQxqIANB6ARqQQxqKQIANwIAIANBgAZqQRdqIANB6ARqQRdqLQAAOgAAIAMgAykC7AQ3AoQGIAMgAy8A/QQ7AJUGIAMgBDoAlAYgAyALNgKABiADQZUGaiEEIANBgAZqQQRyIQxBACEJIAVB/wFxQZcBRw0IIAEvAYABQYDAAHFFDQhBACEKQQEhCSABLQDIASIFQQJGDQkgBUEPRg0JQQAhCSABKAJ4IAUQphVFDQgCQCAFQf4ARw0AIAEQogtB/wFxQf4ARg0AIAEQogtB/wFxQRdHDQkgA0GoAWogARDDCwJAIAMpA6gBIjBCAFENACADKQOwASExIAMpA4AGEMYdQQAhBSADQQA2ApAGIAMgMTcDiAYgAyAwPgKABiADIDBCIIg+AoQGDAkLIAMoArABIQsMEAsgA0HoBGogARC2DSADKALoBCELIAMtAPwEIgVBAkYNDyAEIAMvAP0EOwAAIANBmAFqQQhqIgogA0H0BGopAgA3AwAgBEECaiADQf8Eai0AADoAACADIAMpAuwENwOYASADKQOABhDGHSAMIAMpA5gBNwIAIAxBCGogCikDADcCACADIAs2AoAGDAcLIANBCGogARC/CCADKAIMIQQgAygCCEEBcQ0UIAEtAMgBQQZHDQUMBAsgAyABEL8IIAMoAgQhBCADKAIAQQFxDRMgAS0AyAFBBkYNAwwECyABIARBCnI2AngMEAtBsqObAUEoQYCrmwEQ3RcACyADQQE2AuwEIANB4KmbATYC6AQgA0IANwL0BCADIANBrAZqNgLwBCADQegEakG0qpsBEIUbAAsgARCHDgsgASgCvAEhDUEJIQFBEiEMIAYhBQwLCyADIAU6AJQGQQEhCQsCQCABLQCBAUEgcUUNACABLQDIAUH/AXFBF0cNACADQegEakEQaiADQYAGakEQaikDADcDACADQegEakEIaiADQYAGakEIaikDADcDACADIAMpA4AGNwPoBCADQRBqIAEgBiADQegEakEAIAkQ3wJBCkEGIAMoAhBBAXEbIQEgAygCFCELDAkLIANBKGogA0GABmoQ/hECQCADKAIoIgUgAygCLCILQaCrmwFBBhCZHA0AIAUgC0Gmq5sBQQUQmRxFDQILIANBIGogA0GABmoQ/hECQAJAAkAgAygCICIFIAMoAiQiC0Ggq5sBQQYQmRwiDUUNAEEBIQoMAQsgBSALQaarmwFBBRCZHEUNAUECIQoLIAEtAMgBIgVBAkYNASAFQQ9GDQEgASgCeCAFEKYVIQsCQAJAIAVB/gBGDQAgCw0BCyABEKILQf8BcUH+AEcNAwsCQCANDQBBACEKDAILIANB6ARqIAEQtg0gAygC6AQhCyADLQD8BCIFQQJGDQcgA0HAAWpBCGoiDSADQfQEaikCADcDACADQbwBakECaiIOIANB/wRqLQAAOgAAIAMgAykC7AQ3A8ABIAMgAy8A/QQ7AbwBIAMpA4AGEMYdIAwgAykDwAE3AgAgDEEIaiANKQMANwIAIAQgAy8BvAE7AAAgBEECaiAOLQAAOgAAIAMgCzYCgAYgAyAFOgCUBgwDC0Gyo5sBQShBrKubARDdFwALIAMpA4AGEMYdQQAhBAwCC0EAIQoLAkAgAS0AyAEiBEH+AEYNACAEQQdHDQMgARCHDgsgA0HoBGpBCGoiBCADQYAGakEIaiIFKQMANwMAIANB6ARqQRBqIgsgA0GABmpBEGopAwA3AwAgAyADKQOABjcD6AQgBSgCACEFIAMoAowGIQwCQCAIDQAgA0GMAWpBvKubARDEFiADKAKQASEHCyAHQgM3AwAgByAMNgIMIAcgBTYCCCAHIAMpA+gENwMQIAdBGGogBCkDADcDACAHQSBqIAspAwA3AwBBASEEIANBATYClAELIAEtAMgBIQULAkACQAJAIApBAUYNACAFQf8BcUEPRg0BCyAKDQEgBUH/AXFBAkcNASABEIcOIARByABsIQ9BigWtQiCGIjJB2KqbAa2EITMgA0HoBGpBFWohECADQZACakEVaiERIANB6ARqQQRyIRIgA0GQAmpBBHIhEyADQdgFakEVaiEUIANB2AVqQQRyIRUgA0H4AmpBFWohFiADQfgCakEEciEXIANBgAZqQRVqIRggA0GABmpBBHIhGSADQdACakEVaiEaIANB0AJqQQRyIRsgA0HYA2pBDGohHCADQagDakEMaiEdIANBkAJqQQxqIR4CQANAAkACQCABLQDIASIfQQNGDQAgASgCwAEhByADQZACaiABEOAIIAMoApgCIQUCQCADKQOQAiIxQgJSDQAgBSELDAkLIAMpA6gCITQgAygCpAIhICADKAKgAiEhIAMoApwCIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAxp0EBcUUNACADIDQ3A7gDIAMgIDYCtAMgAyAhNgKwAyADIAg2AqwDIAMgBTYCqAMgAS0AyAFB9QBHDQEgARCHDiADQZACaiABQQAQ3QUgAygCkAIhCyADLQCkAiIFQQJGDQIgEiATKQIANwIAIBAgESkAADcAACASQQhqIBNBCGopAgA3AgAgEEEHaiARQQdqKAAANgAAIAMgBToA/AQgAyALNgLoBCADQdAEaiADQegEahCeFCADKQPgBCEwIAMoAtgEISIgAygC1AQhIyADKALQBCEkIAMpA7gDITUgAygCtAMhJSADKAKwAyEmIAMoAqwDIScgAygCqAMhC0IBITFBACENIAMoAtwEIgwhDgwSCyABLQDIASEoQQAhKSAfQZcBRw0M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IAUgBzYCCCAFQgQ3AwAgBSADKQOQAjcCFCAFIAg6ACQgBSADLwGABjsAJSAFQRxqIAwpAwA3AgAgBUEnaiADQYIGai0AADoAACADIARBAWoiBDYClAELAkACQAJAAkAgAS0AyAEiBUH+AEcNACABEIcOIAEtAMgBIgVBwABHDQEgA0HoBGogARCsDUEIQRgQ6x8iBUUNCiAFIAMpA+gENwMAIAVBEGogA0HoBGpBEGopAwA3AwAgBUEIaiADQegEakEIaikDADcDAEEAIQcCQAJAIAEtAMkBDQACQCABLQDIASILQfcARg0AIAtB8ABHDQELIAEQhw4gA0HoBGogARBYIAMoAuwEIQsgAygC6AQiB0EyRg0BAkBBOEUNACADQZACakEIaiADQegEakEIakE4/AoAAAsgAyALNgKUAiADIAc2ApACIAdBDkcNBUEEQRQQ6x8iB0UNDCAHIANBkAJqQQRyIgspAgA3AgAgB0EQaiALQRBqKAIANgIAIAdBCGogC0EIaikCADcCAAsgARCiDSILRQ0DIAcQ8R8LIAUQnx0MBgsgASgCxAEhBCABKALAASEGIANBhAJqIAUQ3hsgA0EBNgLsBCADQZjvmwE2AugEIANCATcC9AQgA0GKBa1CIIZB6pabAa2ENwOABiADIANBgAZqNgLwBCADQZACaiADQegEahCNFSADQaQCaiADQYwCaigCADYCACADIAMpAoQCNwKcAiAGIAQgA0GQAmoQhRUhCyABLQDIAUGiAUcNBSABEMcRIQQgARCHDiABIAQQ5REMBQsgA0HoBGpBBHIgBRDeGyADQRA2AvwEIANBmqebATYC+AQgA0GwgICAeDYC6AQgASgCwAEgASgCxAEgA0HoBGoQhRUhCyABLQDIAUGiAUcNBCABEMcRIQQgARCHDiABIAQQ5REMBAsgASgCvAEhCCADKAKQASEMIAMoAowBIQtBACEBIAYhDQwFC0Gyo5sBQShB7KubARDdFwALIAEoAsQBIQUgASgCwAEhBiADQdABaiAEEN4bIANBATYC7AQgA0GY75sBNgLoBCADQgE3AvQEIANBigWtQiCGQbynmwGthDcD2AUgAyADQdgFajYC8AQgA0GQAmogA0HoBGoQjRUgA0GkAmogA0HYAWooAgA2AgAgAyADKQLQATcCnAIgBiAFIANBkAJqEIUVIQsgAS0AyAFBogFHDQAgARDHESEEIAEQhw4gASAEEOURCyADKQOABhDGHQtBCiEBCyADQYwBahDZHQJAIAFBCkcNACALIQQMBAsLIAAgCjoAISAAIAk6ACAgACAHNgIcIAAgCDYCGCAAIA02AhQgACAFNgIQIAAgBDYCDCAAIAw2AgggACALNgIEIAAgATYCACACEMwdDAMLIAEoAsABIQsgARCHDgJAAkACQAJAAkAgAS0AyAEiBUGjAUcNAEEJIQUgASgCcBCBGyEEDAELIAEvAYABIgZBgMAAcSEEAkACQCAFQfwARw0AIARFDQAgASgCwAEhBCABEIcOIANBgAZqIAIQkQggA0HoBGogASAEIANBgAZqEMMBQQkhBSADKALsBCEEIAMoAugEIgZBCUYNASADQdACakEgaiADQegEakEgaikDADcDACADQdACakEYaiADQegEakEYaikDADcDACADQdACakEQaiADQegEakEQaikDADcDACADIAMpA/AENwPYAiADIAQ2AtQCIAMgBjYC0AICQCAGQQhGDQAgA0GkA2ogA0HvAmotAAA6AAAgAyADLwHqAjsBpgMgAyADLwDtAjsBogMgAygC3AIiCkEIdiENIAEoArwBIQFBASEFIAMpA/ACITAgAy0A7AIhDiADLQDpAiEIIAMtAOgCIQIgAygC5AIhCSADKALgAiEHIAMoAtgCISIgBCEMDAMLIANB0AJqEIMfIAEvAYABIgZBgMAAcSEECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEUNAAJAAkACQCABLQDIASIEQbV/aiIFQR9LDQBBASAFdEGBgIKQeHENAQsgBEG0f2pB/wFxQdUATw0BCyAEIAEQiAshMCADQagDakEIaiIEIAIQkQggAyAwNwOoAwJAAkACQCABLQCBAUEgcUUNACABKAJ4IQIgA0HoBGogARD/AiABIAJBAXI2AnggA0GABmogASABKALAASAEIDBBARCKBCADKAKEBiEEAkAgAygCgAYiBUEJRw0AIAMgBDYC3AUgA0EJNgLYBSABIANB6ARqEPAFIANBCDYC+AIgA0HYBWpBBHIQ3x0MAwsgA0HYBWpBIGogA0GABmpBIGopAwA3AwAgA0HYBWpBGGogA0GABmpBGGopAwA3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IAMoApQCIQwMAgsgASgCvAEhCiABKAK4ASEHQQAhI0EAIQZBACECDAQLIAMtAIEFIQggAy0AgAUhAiADKAL8BCEJIAMoAvgEIQcgAygC8AQhIiADLQCEBSEOIAMpA4gFITAgAygCkAUhCyADKAKUBSEBIAQhDAsMCQtBCSEFDAgLQQkhBQwGCyABLQDIASEECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQf8BcUEYRw0AIAEoAsABIQggA0HoBGogAUEAEO4CIAMoAuwEIQQgAygC6AQiCUGAgICAeEYNCSADIAMoAvAENgKIBiADIAQ2AoQGIAMgCTYCgAYgAygCeA0BIANB8ABqEMwdIANB8ABqQQhqIANBgAZqQQhqKAIANgIAIAMgAykCgAY3A3AgAS0AyAEhBAsgAiAEQf8BcUHQAEdyRQ0BIAIgBEH/AXFB+ABHckUNAgwDCyABKAK8ASECIANBtYGAgHg2AugEIAggAiADQegEahCFFSEEAkAgAS0AyAFBogFHDQAgARDHESECIAEQhw4gASACEOURCyADQYAGahDMHQwHC0EAIQUgA0HoBGogASABKALAASADQfAAakEAENgFIAMoAuwEIQQgAygC6AQiBkEIRg0bIANBpANqIANBhwVqLQAAOgAAIAMgAy8BggU7AaYDIAMgAy8AhQU7AaIDIAMtAIEFIQggAy0AgAUhAiADKAL8BCEJIAMoAvgEIQcgAygC9AQhCiADKALwBCEiIAMtAIQFIQ4gAykDiAUhMAwDCyABEKILQf8BcUHdAEcNACABEKILGiABKAKYAUELRg0AIAEtALEBQQFxDQAgA0HoBGogASADQfAAahCWCyADKALsBCEEIAMoAugEIgZBCEYNGiADQaQDaiADQYcFai0AADoAACADIAMvAYIFOwGmAyADIAMvAIUFOwGiAwwBCwJAAkACQAJAIAIgAS0AyAEiBEH/AXFB3QBHckUNACACDQcCQCABLQCBAUEgcUUNACAEQf8BcUHRAEcNACABEKILQf8BcUH9AEYNAyABLQDIASEECyAEQf8BcSIEQdEARg0DIARB4gBGDQEgBEHtAEYNAwwHCyADQYAGakEIaiADQfAAakEIaigCADYCACADIAMpA3A3A4AGIANB6ARqIAEg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eDYC6AQgAyAwNwPwBCABIAcgCiADQegEahCvGgwBCyAFKAIUIQogBSgCECEFIANB8YCAgHg2AugEIAEgBSAKIANB6ARqEK8aDAALCyABKALEASECIAEoAsABIQYgA0G4BGogBRDeGyADQQE2AuwEIANBmO+bATYC6AQgA0IBNwL0BCADQYoFrUIghkG8p5sBrYQ3A9gFIAMgA0HYBWo2AvAEIANBgAZqIANB6ARqEI0VIANBlAZqIANBwARqKAIANgIAIAMgAykCuAQ3AowGIAYgAiADQYAGahCFFSEIIAEtAMgBQaIBRw0FIAEQxxEhAiABEIcOIAEgAhDlEQwFCyABEIcOIBEhFyATIRogHyEbICghFCAGIRUMAAsLIAhBACAHGyEJIAEoArwBIgpBCHYhDUECIQUgAygCyAEhDCADKALEASEGIAMoAsABIQgMAwsgASgCxAEhAiABKALAASEFIANBoARqIAYQ3hsgA0EBNgLsBCADQZjvmwE2AugEIANCATcC9AQgA0GKBa1CIIZB7KGbAa2ENwPYBSADIANB2AVqNgLwBCADQYAGaiADQegEahCNFSADQZQGaiADQagEaigCADYCACADIAMpAqAENwKMBiAFIAIgA0GABmoQhRUhCCABLQDIAUGiAUcNASABEMcRIQIgARCHDiABIAIQ5REMAQsgJCEOCyADQcABahDXHUEJIQULICKtQiCGITAgBK0hMSALISILAkAgDg0AICNBAkYNACAwIDGEEMYdCyAIIQQMBAsgBUGkAUYNASAGQbR/akH/AXFB1ABLDQELIAEQhw5BASECCyADQegEaiABEMMLIAMoAvAEIQQCQCADKQPoBCIwUEUNAEEJIQUMAgsgAygC9AQhBSADQQA2AvgEIAMgBTYC9AQgAyAENgLwBCADQQA6APwEIAMgMDcD6AQgA0HgAGogASALIANB6ARqQQEgAhDfAkEJQQYgAygCYEEBcRshBSADKAJkIQQMAQsLIANB8ABqEMwdCyAFQQlHDQELIABBCjYCACAAIAQ2AgQMAwsgACAIOgAhIAAgAjoAICAAIAk2AhwgACAHNgIYIAAgIjYCECAAIAw2AgwgACAGNgIIIAAgBDYCBCAAIAU2AgAgACAOOgAkIAAgAy8BpgM7ASIgACADLwGiAzsAJSAAIAE2AjQgACALNgIwIAAg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IAJAIANFDQACQCABKAIADQAgAUEYaiEMIAEoAiAiBEE4bCEIIAEoAhwhB0EAIQYCQANAIAggBkYNASAHIAZqIQUgBkE4aiEGIAUoAgBBempBBEkNAAwDCwsCQCAEIAwoAgBHDQAgDEHc8ZoBEIQXIAEoAhwhBwsgByAEQThsaiIGQgA3AxggBiAKNgIUIAYgCTYCECAGQgg3AwggBkICNwMAIAZBIGpBADoAACABIARBAWo2AiAMAQtBzPGaARCbIAALIAJBsAdqJAALymkCMH8GfiMAQaACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiA0F0aiIEQQcgBEEmSRsOJgQAAQIDBQYHCAkKCwwNDg8QERITFBUWFxgZGhsrKikoJyYlJCMiBAsgASgCCCEDIAEoAhQhBSABKAIQIQYgAkGAAWogASgCDCIHQQRBEBDMDSACKAKEASEIIAIoAoABQQFGDSAgAigCiAEhCQJAIAhFDQAgB0EEdCEKIAkhBCAIIQsDQCAKRQ0BAkAgAygCACIMQQJGDQBBAC0AwPGdARogA0EEaikCACEyQcAAEIUBIgFFDTUgAkGAAWogA0EMaigCABBEIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAFBCGogAkGAAWpBCGopAwA3AwAgASACKQOAATcDAAsgA0EQaiEDIAQgDDYCACAEQQxqIAE2AgAgBEEEaiAyNwIAIApBcGohCiAEQRBqIQQgC0F/aiILDQALCyAAIAU2AhQgACAGNgIQIAAgBzYCDCAAIAk2AgggACAINgIEIABBDTYCAAwzCyABKAIIIQMgASgCFCENIAEoAhAhDiACQYABaiABKAIMIgVBBEEMEMwNIAIoAoQBIQkgAigCgAFBAUYNHiACKAKIASEGAkAgCUUNACAFQQxsIQogBiEEIAkhDANAIApFDQECQAJAIAMoAgAiBw0AQQAtAMDxnQEaQfAAEIUBIgtFDTUgAkGAAWogA0EEaigCABDtAQJAQfAARQ0AIAsgAkGAAWpB8AD8CgAAC0EAIQEMAQtBAC0AwPGdARogA0EIaigCACEIIANBBGooAgAhC0HAABCFASIBRQ00IAJBgAFqIAcQRCABQThqIAJBgAFqQThqKQMANwMAIAFBMGogAkGAAWpBMGopAwA3AwAgAUEoaiACQYABakEoaikDADcDACABQSBqIAJBgAFqQSBqKQMANwMAIAFBGGogAkGAAWpBGGopAwA3AwAgAUEQaiACQYABakEQaikDADcDACABQQhqIAJBgAFqQQhqKQMANwMAIAEgAikDgAE3AwALIANBDGohAyAEIAE2AgAgBEEIaiAINgIAIARBBGogCzYCACAKQXRqIQogBEEMaiEEIAxBf2oiDA0ACwsgACANNgIUIAAgDjYCECAAIAU2AgwgACAGNgIIIAAgCTYCBCAAQQ42AgAMMgsCQAJAIAEtABwiA0ECRw0ADAELIAEoAhghDCABKAIUIQsgASgCECEKIAEpAwgiMkIDg0IAUg0AIDKnIgQgBCgCACIEQQFqNgIAIARBf0wNMQtBAC0AwPGdARpByAAQhQEiBEUNMCAEIAEoAiAQ/AEgACAENgIgIAAgAzoAHCAAIAw2AhggACALNgIUIAAgCjYCECAAIDI3AwggAEEPNgIADDELQQAtAMDxnQEaIAEtABAhAyABKAIMIQogASgCCCELQcAAEIUBIgRFDS8gBCABKAIEEEQgACADOgAQIAAgCjYCDCAAIAs2AgggACAENgIEIABBEDYCAAwwCyAAIAEpAwA3AwAgAEE4aiABQThqKQMANwMAIABBMGogAUEwaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEgaiABQSBqKQMANwMAIABBGGogAUEYaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEIaiABQQhqKQMANwMADC8LQQAtAMDxnQEaIAEtABEhAyABLQAQIQogASgCCCELIAEoAgQhDEHAABCFASIERQ0tIAQgASgCDBBEIAAgAzoAESAAIAo6ABAgACAENgIMIAAgCzYCCCAAIAw2AgQgAEERNgIADC4LQQAtAMDxnQEaIAEtABQhCiABKAIQIQsgASgCDCEMQcAAEIUBIgRFDSwgBCABKAIEEERBAC0AwPGdARpBwAAQhQEiA0UNLCADIAEoAggQRCAAIAo6ABQgACALNgIQIAAgDDYCDCAAIAM2AgggACAENgIEIABBEjYCAAwtCyABLQA8IQogASgCNCELIAEoAjAhDAJAIANBC0cNAAJAAkACQCABKAIEDgMAAQIACyACQYABaiABQQhqEIkGIAJBOGpBCGogAkGUAWopAgA3AwAgAiACKQKMATcDOCACKAKIASEIIAIpA4ABITJBACEHDC0LIAJBgAFqIAFBCGoQ7QsgAkE4akEIaiACQZQBaikCADcDACACIAIpAowBNwM4IAIoAogBIQggAikDgAEhMkEBIQcMLAsgAkHAAGogAUEcaikCADcDACACIAEpAhQ3AzggASgCECEIIAEpAwghMkECIQcMKwsCQAJAAkACQAJAAkACQAJAAkACQAJAIAMOCwABAgMEBQYHCAkKAAsgAkGAAWogAUEIahDuCyACQRhqQQhqIAJBlAFqKQIANwMAIAJBKGogAkGcAWooAgA2AgAgAiACKQKMATcDGAwyCyACQYABaiABQQhqEIIKIAJBGGpBCGogAkGUAWopAgA3AwAgAkEoaiACQZwBaikCADcDACACQTBqIAJBpAFqKAIANgIAIAIgAikCjAE3AxgMMQsgAkGAAWogAUEIahD9CyACQRhqQQhqIAJBlAFqKQIANwMAIAJBKGogAkGcAWopAgA3AwAgAkEwaiACQaQBaigCADYCACACIAIpAowBNwMYDDALIAJBgAFqIAFBBGoQgRgMLgsgAkGAAWogAUEEahCNBAwsCyACQYABaiABQQRqEJYSDCsLIAJBgAFqIAFBBGoQlhIMKgsgAkGAAWogAUEEahCBGAwqCyACQYABaiABQQRqEJYSDCgLIAJBgAFqIAFBBGoQ4hAMJwsgAkEgaiABQRxqKQIANwMAIAJBKGogAUEkaikCADcDACACQTBqIAFBLGooAgA2AgAgAiABKQIUNwMYIAEoAhAhCCABKQMIITIgASgCBCEHDCkLQQAtAMDxnQEaIAEoAiQhCiABKAIgIQtBwAAQhQEiBEUNKiAEIAEoAigQRAJAAkACQAJAIAEoAggiBw4DAAECAAsgASgCFCEDIAEoAhAhDCABKAIcIQggASgCGCEJAkAgASkDECIyQgODQgBSDQAg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DAJAIAIoAoABQQFGDQAgHEEIdCAaQf8BcXKtQiCGITIgF60hMyACKAKIASEFAkAgDEUNACAHQShsIQMgBSEBIAwhCwNAIANFDQEgAkGAAWogBBCEByABQSBqIAJBgAFqQSBqKQMANwMAIAFBGGogAkGAAWpBGGopAwA3AwAgAUEQaiACQYABakEQaikDADcDACABQQhqIAJBgAFqQQhqKQMANwMAIAEgAikDgAE3AwAgAUEoaiEBIANBWGohAyAEQShqIQQgC0F/aiILDQALCyAyIDOEITJBBiEBAkAgCS0APEEGRg0AIAkoAgwhAyAJKAIIIQQgAkGAAWogCUEQahCIBiACQdAAakEoaiACQYABakEoaigCADYCACACQdAAakEgaiACQYABakEgaikDADcDACACQdAAakEYaiACQYABakEYaikDADcDACACQdAAakEQaiACQYABakEQaikDADcDACACQdAAakEIaiACQYABakEIaikDADcDACACQc4AaiACQa8Bai0AADoAACACIAIpA4ABNwNQIAIgAi8ArQE7AUwgAi0ArAEhAQsgCiADNgIMIAogBDYCCCAKIBU2AgQgCiAWNgIAIAogAikDUDcDECAKIAE6ADwgCiACLwFMOwA9IApBGGogAkHYAGopAwA3AwAgCkEgaiACQeAAaikDADcDACAKQShqIAJB0ABqQRhqKQMANwMAIApBMGogAkHQAGpBIGopAwA3AwAgCkE4aiACQdAAakEoaigCADYCACAKQT9qIAJBzABqQQJqLQAAOgAAIAogGzoAbCAKIB02AmggCiAeNgJkIAogHzYCYCAKICA2AlwgCiAhNgJYIAogMjcDUCAKIBg2AkwgCiAZNgJIIAogNDcDQCAKIAY6AIgBIAogBzYCmAEgCiAFNgKUASAKIAw2ApABIAogJTYChAEgCiATNgKAASAKICY2AnwgCiAINgJ4IAogIzYCdCAKICQ2AnAgCiACLwFIOwBtIApB7wBqIAJByABqQQJqLQAAOgAAIAAgCjYCBCAAQSc2AgAMGgsgDCACKAKIAUGIn5oBEKoeAAsgJiACKAKIAUGIn5oBEKoeAAsgCSACKAKIAUGIn5oBEKoeAAsgByACKAKIAUGIn5oBEKoeAAsgCCACKAKIAUGIn5oBEKoeAAsgDCACKAKIAUGIn5oBEKoeAAsg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AhwhCSABKAIYIQUgASgCFCEGIAEoAhAhDSACQYABaiABKAIMIghBCEEoEMwNIAIoAoQBIQwCQCACKAKAAUEBRg0AIAIoAogBIQcCQCAMRQ0AIAhBKGwhCiAHIQQgDCELA0AgCkUNASACQYABaiADEIQHIARBIGogAkGAAWpBIGopAwA3AwAgBEEYaiACQYABakEYaikDADcDACAEQRBqIAJBgAFqQRBqKQMANwMAIARBCGogAkGAAWpBCGopAwA3AwAgBCACKQOAATcDACAKQVhqIQogBEEoaiEEIANBKGohAyALQX9qIgsNAAsLIAAgCTYCHCAAIAU2AhggACAGNgIUIAAgDTYCECAAIAg2AgwgACAHNgIIIAAgDDYCBCAAQSg2AgAgACABKQMgNwMgDAkLIAwgAigCiAFBiJ+aARCqHgALIAEoAhQhESABKAIQIQ0LIAEoAgghAyACQYABaiABKAIMIglBBEEQEMwNIAIoAoQBIQcCQCACKAKAAUEBRg0AIAIoAogBIQUCQCAHRQ0AIAlBBHQhCyAFIQogByEMA0AgC0UNAUEALQDA8Z0BGiADKQIEITIgAygCACEIQcAAEIUBIgRFDQggAkGAAWogAygCDBBEIARBOGogAkGAAWpBOGopAwA3AwAgBEEwaiACQYABakEwaikDADcDACAEQShqIAJBgAFqQShqKQMANwMAIARBIGogAkGAAWpBIGopAwA3AwAgBEEYaiACQYABakEYaikDADcDACAEQRBqIAJBgAFqQRBqKQMANwMAIARBCGogAkGAAWpBCGopAwA3AwAgBCACKQOAATcDACAKQQxqIAQ2AgAgCkEEaiAyNwIAIAogCDYCACALQXBqIQsgCkEQaiEKIANBEGohAyAMQX9qIgwNAAsLAkACQCABKAIoDQBBACEBDAELIAFBKGoQgwohAQsgACACLwEYOwAZIABBG2ogAkEaai0AADoAACAAIAE2AiggACAONgIkIAAgDzYCICAAIBA2AhwgACAGOgAYIAAgETYCFCAAIA02AhAgACAJNgIMIAAgBTYCCCAAIAc2AgQgAEEXNgIADAcLIAcgAigCiAFBiJ+aARCqHgALIAIoAowBIQggAikChAEhMiACKAKAASEHDAILIAIpAoQBITIgAigCgAEhBwwBCyACKAKIASEIIAIpA4ABITILIAJB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AykDuAEiDUL/AYNCBFINAQsgA0G4AWogAUEEaiACENogAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACEOIOAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQQA2AsgBIANBuAFqIAIgA0HIAWpBosSbAUECELkMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACEOIOAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQbgBaiACIANByAFqQd6WmwFBBRC5DCADLQC4AUEERg0XIAMpA7gBIg1C/wGDQgRRDRcLIA1C/wGDQgRRDRYgACANNwIADBcLIANByAFqIAFBBGogAhCCCSADLQDIAUEERg0VIAMpA8gBIg1C/wGDQgRRDRUgACANNwIADBYLIANByAFqIAFBBGogAhDbCSADLQDIAUEERg0UIAMpA8gBIg1C/wGDQgRRDRQgACANNwIADBULIANByAFqIAFBBGogAhD9ASADLQDIAUEERg0TIAMpA8gBIg1C/wGDQgRRDRMgACANNwIADBQLIANByAFqIAEoAgQgAhDcFCADLQDIAUEERg0SIAMpA8gBIg1C/wGDQgRRDRIgACANNwIADBMLIANByAFqIAFBCGogAhCrDCADLQDIAUEERg0RIAMpA8gBIg1C/wGDQgRRDREgACANNwIADBILIANByAFqIAFBCGogAhD3CSADLQDIAUEERg0QIAMpA8gBIg1C/wGDQgRRDRAgACANNwIADBELIANByAFqIAFBBGogAhDXByADLQDIAUEERg0PIAMpA8gBIg1C/wGDQgRRDQ8gACANNwIADBALIANByAFqIAIgASgCCCIFQQAQlQICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAFRQ0AIANByAFqIAIgBRC0GiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakGEy5sBQQUQuQwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANByAFqIAIQ4g4CQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANByAFqIAFBBGogAhDaICADLQDIAUEERg0PIAMpA8gBIg1C/wGDQgRRDQ8LIA1C/wGDQgRRDQ4gACANNwIADA8LIAEtAAwhBCABKAIEIQUCQAJAIAIoAlRFDQAgA0HIAWogAiAFQQAQlQIgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAVFDQAgA0HIAWogAiAFELQaIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAEQQFxRQ0AIANBADYCyAEgA0G4AWogAiADQcgBakGC4JsBQQsQuQwgAy0AuAFBBEYNDyADKQO4ASINQv8Bg0IEUg0BDA8LIANBADYCyAEgA0G4AWogAiADQcgBakH435sBQQoQuQwgAy0AuAFBBEYNDiADKQO4ASINQv8Bg0IEUQ0OCyANQv8Bg0IEUQ0NIAAgDTcCAAwOCyADQbgBaiACIAEoAgQiBUEAEJUCAkACQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELAkAgBUUNACADQbgBaiACIAUQtBogAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQQA2AsgBIANBuAFqIAIgA0HIAWpBuN+bAUEFELkMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAEtABAiBEUNACADQbgBaiACIANByAFqQbmXmwFBARC7DCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAEoAgwiBUUNDQJAAkACQCACIAUQsAYiCw0AAkAgBA0AIAUQ1QgNAgsgAi0AXQ0CIANBuAFqIAIQ4g4gAy0AuAFBBEYNAiADKQO4ASINQv8Bg0IEUQ0CDAMLIANBuAFqIAIgA0HIAWpBsLqbAUEBELgMIAMtALgBQQRGDQEgAykDuAEiDUL/AYNCBFENAQwCCyADQbgBaiACEOIOIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0G4AWogAUEMaiACEOIcAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyALRQ0NIANBuAFqIAIgA0HIAWpBs/2cAUEBELgMIAMtALgBQQRGDQ0gAykDuAEiDUL/AYNCBFENDQsgDUL/AYNCBFENDCAAIA03AgAMDQsgA0HIAWogAUEIaiACEJIFIAMtAMgBQQRGDQsgAykDyAEiDUL/AYNCBFENCyAAIA03AgAMDAsgASgCGCEIIANByAFqIAIgASgCFCIKQQAQlQICQAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQCAKRQ0AIANByAFqIAIgChC0GiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIAMgCDYC0AEgAyAKNgLMASADQQE2AsgBAkAgAigCSEUNACADQbgBaiACQQAgA0ECQQEgA0HIAWoQzQgCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQILIAIoAkhFDQAgA0EANgLAASADQoCAgIDAADcCuAEgASgCDEEobCEFIAEoAgghBAJAA0AgBUUNASAFQVhqIQUgAyADQbgBajYCyAEgBCADQcgBahCTCiAEQShqIQQMAAsLIAMoAsABIQQgAygCvAEhBSADIAMoArgBNgLQASADIAU2AsgBIAMgBSAEQQxsIgRqIgk2AtQBA0ACQAJAIARFDQACQCAFKAIAIgtBgICAgHhGDQAgBUEMaiEMIAVBBGoiBigCACEFIAIoAkhFDQIgA0HgAWogAiAGKQIAIg2nIgYgDUIgiKciByAGIAdBARC7BiADLQDgAUEERg0CIAMpA+ABIg1C/wGDQgRRDQIgAyAMNgLMASALIAUQlyIgA0HIAWoQ5RQMBQsgBUEMaiEJCyADIAk2AswBIANByAFqEOUUDAILIAsgBRCXIiAEQXRqIQQgDCEFDAALCwJAAkACQCACLQBdDQAgAS0AKEUNAiADQQA2AsgBIANBuAFqIAIgA0HIAWpBkribAUEFELkMIAMtALgBQQRGDQEgAykDuAEiDUL/AYNCBFINAwwBC0EAIQUCQCABKAIMQQFHDQAgASgCCCgCAEUhBQsgAS0AKEEBRw0BIANBADYCyAEgA0G4AWogAiADQcgBakGSuJsBQQUQuQwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQMLIAUNACACLQBdDQEgA0HIAWogAhDiDiADLQDIAUEERg0BIAMpA8gBIg1C/wGDQgRRDQEMAgsgA0HIAWogAhDiDiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELAkAgAS0AKUUNACADQQA2AsgBIANBuAFqIAIgA0HIAWpBuZebAUEBELgMIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQAJAAkAgAi0AXQ0AIANByAFqIAFBIGogAhDgHCADLQDIAUEERg0BIAMpA8gBIg1C/wGDQgRSDQMMAQsCQAJAIAEoAgxBAUcNACABKAIIIgUoAgBFDQELIANByAFqIAFBIGogAhDgHCADLQDIAUEERg0BIAMpA8gBIg1C/wGDQgRRDQEMAwsCQAJAIAIoAlQiBA0AQQAhBQwBCyAEIAUoAhQgAigCWCgCLBEIACEFCyADQcgBaiABQSBqIAIQ4BwCQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQMLQQAhByAFRQ0BCyADQQA2AsgBQQEhByADQbgBaiACIANByAFqQbC6mwFBARC4DCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAEoAgghCSADQcgBaiACIAogASgCDCIGQZACIAYQ1hcCQAJAAkAgAy0AyAFBBUYNACADKQPIASENDAELIANByAFqEIQfAkAgBkUNACADQQE6AOABIANBgAFqIAkQ0w0gA0EAOgC4ASAGIQQgCSEFQQAhC0EAIQwDQAJAAkACQCAERQ0AIANB+ABqIAUQ0w0gA0HIAWogAiAIQZACIAsgDCADQbgBaiADQeABahChBQJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINBgsgA0HIAWogBSACEKgGAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0GCyADLQDgAQ0BIANBAToA4AEMAgsCQCAJIAZBKGxqQVhqIgVFDQAgA0HgAGogBRDTDQsgA0HIAWogAiAKIAhBkAIgCyAMELkCIAMtAMgBQQRGDQMgAykDyAEiDUL/AYNCBFINBAwDCyACKAJURQ0AIANB8ABqIAUQ0w0gA0HIAWogAiADKAJ0QQAQ1AMgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0DCwJAIAMtALgBRQ0AIAIgAigCOEF/ajYCOCADQQA6ALgBCyAEQX9qIQQgA0HoAGogBRDTDSAFQShqIQVBASELIAMoAmwhDAwACwsgA0HIAWogAiAIIAZFQZACEMAQIAMtAMgBQQRGDQEgAykDyAEiDUL/AYNCBFENAQsgDUL/AYNCBFINAQsCQCAHRQ0AIANBADYCyAEgA0G4AWogAiADQcgBakGz/ZwBQQEQuAwgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAIAEoAiRFDQAgA0EANgLIASADQbgBaiACIANByAFqQaHEmwFBARC4DAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAgsCQCACLQBdDQAgA0HIAWogAhDiDiADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQILIANByAFqIAFBJGogAhCgDwJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAgsgAi0AXQ0AIANByAFqIAIQ4g4gAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADQQA2AsgBIANBuAFqIAIgA0HIAWpBpMSbAUECELgMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCwJAAkACQCABKAIQIgUoAgBBgICAgHhGDQAgA0HIAWogAiAFQQEQogUgAy0AyAFBBEYNAiADKQPIASINQv8Bg0IEUQ0CDAELIAIgAigCOEEBajYCOCADQcgBaiAFQQRqIAIQ2iACQCADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIAIgAigCOEF/ajYCOAwBCyANQv8Bg0IEUg0BCyACKAJIRQ0LIANByAFqIAIQhxEgAy0AyAFBBEYNCyADKQPIASINQv8Bg0IEUQ0LCyANQv8Bg0IEUQ0KIAAgDTcCAAwLCyABKAIQIQogA0HIAWogAiABKAIMIgVBABCVAgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCwJAIAVFDQAgA0HIAWogAiAFELQaIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsCQAJAIAFBBGoiBSgCACIEKAIAQRhHDQAgA0HIAWogAiAEQQRqQQAQxAQgAy0AyAFBBEYNASADKQPIASINQv8Bg0IEUQ0BDAILIANByAFqIAUgAhDaICADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIANByAFqIAFBGGogAhDhHAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgASgCCCIEKAIcIQcgA0G4AWogAiAEKAIYIgVBABCVAgJAAkACQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELAkAgBUUNACADQbgBaiACIAUQtBogAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyADQQA2AsgBIANBuAFqIAIgA0HIAWpB7rebAUEBELgMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyAEKAIIIAQoAhRqIQxBACEFA0ACQAJAAkAgDCAFRg0AIAVBAXENAQJAAkAgBCgCECAEKAIUIAVBAXZB2MibARCWHCILKAIIIgZFDQAgA0G4AWogAiAGELQaIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsgA0HYAGogCxD+ESADQbgBaiACQQBBACADKAJYIAMoAlwQvw0CQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAsoAgwiC0UNAyADQbgBaiACIAsQtBogAy0AuAFBBEYNAyADKQO4ASINQv8Bg0IEUQ0DCyANQv8Bg0IEUg0EDAILIANBuAFqIAIgA0HIAWpB7rebAUEBELgMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0ECyAHRQ0EIANBuAFqIAIgBxC0GiADLQC4AUEERg0EIAMpA7gBIg1C/wGDQgRSDQMMBAsgA0G4AWogAiADQcgBakH4xJsBQQIQuAwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQMLIANBuAFqIAQoAgQgBCgCCCAFQQF2QejImwEQlxwgAhDaIAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAwsgA0G4AWogAiADQcgBakGmxJsBQQEQuAwgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0CCyAFQQFqIQUMAAsLIA1C/wGDQgRSDQELIApFDQogA0HIAWogAiAKELQaIAMtAMgBQQRGDQogAykDyAEiDUL/AYNCBFENCgsgDUL/AYNCBFENCSAAIA03AgAMCgsgASgCICEHIANBuAFqIAIgASgCHCIFQQAQlQICQAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAQsCQCAFRQ0AIANBuAFqIAIgBRC0GiADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIANBADYCyAEgA0G4AWogAiADQcgBakHut5sBQQEQuAwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQELIAEoAgwiBiABKAIYIgtqIQQgASgCFCEMIAEoAgghCkEAIQUDQAJAAkACQCAEIAVGDQAgBUEBcQ0BIANBuAFqIAwgCyAFQQF2QfDamwEQlhwgAhCPASADLQC4AUEERg0CIAMpA7gBIg1C/wGDQgRSDQQMAgsgA0G4AWogAiADQcgBakHut5sBQQEQuAwCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQQLIAdFDQwgA0G4AWogAiAHELQaIAMtALgBQQRGDQwgAykDuAEiDUL/AYNCBFENDAwDCyADQbgBaiACIANByAFqQfjEmwFBAhC4DAJAIAMtALgBQQRGDQAgAykDuAEiDUL/AYNCBFINAwsgA0G4AWogCiAGIAVBAXZBgNubARCXHCACENogAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0DCyADQbgBaiACIANByAFqQabEmwFBARC4DCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQILIAVBAWohBQwACwsgDUL/AYNCBFENCCAAIA03AgAMCQsgA0H/AToAowEgAyAFNgKcASADIAQ2ApgBCyADQcgAaiADQZgBahDBEyADQcgBaiACIAMoAkggAygCTBCIDgJAAkAgAy0AyAFBBEYNACADKQPIASINQv8Bg0IEUg0BCyADQcgBaiACIANBiAFqQbqXmwFBARC4DAJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0HAAGogAUEYahD+ESADQcgBaiACIAMoAkAgAygCRBCIDgJAIAMtAMgBQQRGDQAgAykDyAEiDUL/AYNCBFINAQsgA0GYAWoQph0MBwsgA0GYAWoQph0LIA1C/wGDQgRRDQUgACANNwIADAYLIANBADoA4AEgCCEEQQAhC0EAIQwDQAJAAkACQCAERQ0AIANBKGogBRCLFSADQbgBaiACIAYgCiALIAwgA0HgAWogA0GYAWoQoQUCQCADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQYLAkAgBSgCAEECRg0AIANBuAFqIAUgAhDgCyADLQC4AUEERg0AIAMpA7gBIg1C/wGDQgRSDQYLIAMtAJgBDQEgA0EBOgCYAQwCCwJAIAlFDQAgA0EQaiAJEIsVCyADQbgBaiACIAcgBiAKIAsgDBC5AiADLQC4AUEERg0DIAMpA7gBIg1C/wGDQgRSDQQMAwsgAigCVEUNACADQSBqIAUQixUgA0G4AWogAiADKAIkQQAQ1AMgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0DCwJAIAMtAOABRQ0AIAIgAigCOEF/ajYCOCADQQA6AOABCyAEQX9qIQQgA0EYaiAFEIsVIAVBEGohBUEBIQsgAygCHCEMDAALCyADQbgBaiACIAYgCEUgChDAECADLQC4AUEERg0BIAMpA7gBIg1C/wGDQgRRDQELIA1C/wGDQgRSDQELIANBuAFqIAIgA0HIAWpBr8SbAUEBELgMAkAgAy0AuAFBBEYNACADKQO4ASINQv8Bg0IEUg0BCyAGRQ0BIANBuAFqIAIgBhC0GiADLQC4AUEERg0BIAMpA7gBIg1C/wGDQgRRDQELIA1C/wGDQgRRDQAgACANNwIADAELAkACQCACKAJURQ0AIANBCGogARC/AyADQcgBaiACIAMoAgxBARDUAyADLQDIAUEERg0AIAMpA8gBIg1C/wGDQgRSDQELIABBBDoAAAwBCyAAIA03AgALIANB8AFqJAALtGQCDX8BfiMAQcAPayICJAAgACgCACEDAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQXRqIgRBByAEQSZJGw4mHwAeHRsaGRgXFhUUExIfHxEQDw4NHwwLCh8fCQgHBgUEAwIfAR8fCyAAKAIMIgNFDR4gACgCCCEAIANBBHQhAwNAAkAgACgCAEECRg0AAkAgAEEMaigCACIEKAIAQRpHDQAgAkGADGogASgCACABKAIEIARBCGoiBRC1DCACKAKADEEyRg0BIAQQyQEgBEE4aiACQYAMakE4aikDADcDACAEQTBqIAJBgAxqQTBqKQMANwMAIARBKGogAkGADGpBKGopAwA3AwAgBEEgaiACQYAMakEgaikDADcDACAEQRhqIAJBgAxqQRhqKQMANwMAIARBEGogAkGADGpBEGopAwA3AwAgBSACQYAMakEIaikDADcDACAEIAIpA4AMNwMADAELIAQgARBGCyAAQRBqIQAgA0FwaiIDDQAMHwsLAkAgACgCBCIAKAIAQQNHDQAgAEEEaiABEM8GDB4LIAAgARCJBwwdCyAAKAIEIgAoAgAiA0EaRw0ZIAJBgAlqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAlBMkYNHCAAEMkBIABBOGogAkGACWpBOGopAwA3AwAgAEEwaiACQYAJakEwaikDADcDACAAQShqIAJBgAlqQShqKQMANwMAIABBIGogAkGACWpBIGopAwA3AwAgAEEYaiACQYAJakEYaikDADcDACAAQRBqIAJBgAlqQRBqKQMANwMAIAEgAkGACWpBCGopAwA3AwAgACACKQOACTcDAAwcCyAAKAIEIgAoAgAiA0EaRw0YIAJBwAhqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAhBMkYNGyAAEMkBIABBOGogAkHACGpBOGopAwA3AwAgAEEwaiACQcAIakEwaikDADcDACAAQShqIAJBwAhqQShqKQMANwMAIABBIGogAkHACGpBIGopAwA3AwAgAEEYaiACQcAIakEYaikDADcDACAAQRBqIAJBwAhqQRBqKQMANwMAIAEgAkHACGpBCGopAwA3AwAgACACKQPACDcDAAwbCyAAKAIEIgAoAgAiA0EaRw0XIAJBgAhqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAhBMkYNGiAAEMkBIABBOGogAkGACGpBOGopAwA3AwAgAEEwaiACQYAIakEwaikDADcDACAAQShqIAJBgAhqQShqKQMANwMAIABBIGogAkGACGpBIGopAwA3AwAgAEEYaiACQYAIakEYaikDADcDACAAQRBqIAJBgAhqQRBqKQMANwMAIAEgAkGACGpBCGopAwA3AwAgACACKQOACDcDAAwaCyAAKAIEIgAoAgAiA0EaRw0WIAJBwAdqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAdBMkYNGSAAEMkBIABBOGogAkHAB2pBOGopAwA3AwAgAEEwaiACQcAHakEwaikDADcDACAAQShqIAJBwAdqQShqKQMANwMAIABBIGogAkHAB2pBIGopAwA3AwAgAEEYaiACQcAHakEYaikDADcDACAAQRBqIAJBwAdqQRBqKQMANwMAIAEgAkHAB2pBCGopAwA3AwAgACACKQPABzcDAAwZCyAAKAIEIgAoAgAiA0EaRw0VIAJBgAdqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAdBMkYNGCAAEMkBIABBOGogAkGAB2pBOGopAwA3AwAgAEEwaiACQYAHakEwaikDADcDACAAQShqIAJBgAdqQShqKQMANwMAIABBIGogAkGAB2pBIGopAwA3AwAgAEEYaiACQYAHakEYaikDADcDACAAQRBqIAJBgAdqQRBqKQMANwMAIAEgAkGAB2pBCGopAwA3AwAgACACKQOABzcDAAwYCyAAKAIEIgAoAgAiA0EaRw0UIAJBwAZqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAZBMkYNFyAAEMkBIABBOGogAkHABmpBOGopAwA3AwAgAEEwaiACQcAGakEwaikDADcDACAAQShqIAJBwAZqQShqKQMANwMAIABBIGogAkHABmpBIGopAwA3AwAgAEEYaiACQcAGakEYaikDADcDACAAQRBqIAJBwAZqQRBqKQMANwMAIAEgAkHABmpBCGopAwA3AwAgACACKQPABjcDAAwXCyAAKAIMIQMgACgCCCEAIAIgATYCgA8gA0UNFiADQShsIQEDQCACQYAPaiAAELwDIABBKGohACABQVhqIgENAAwXCwsgACgCBCABEJQBDBULIAAtADRBAkcNFCAAQQhqIQEDQCABKAIYIgEtACxBAkYNAAwVCwsgACgCBCIAKAIAIgNBGkcNECACQYAGaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAoAGQTJGDRMgABDJASAAQThqIAJBgAZqQThqKQMANwMAIABBMGogAkGABmpBMGopAwA3AwAgAEEoaiACQYAGakEoaikDADcDACAAQSBqIAJBgAZqQSBqKQMANwMAIABBGGogAkGABmpBGGopAwA3AwAgAEEQaiACQYAGakEQaikDADcDACABIAJBgAZqQQhqKQMANwMAIAAgAikDgAY3AwAMEwsgACgCBCIAKAIAIgNBGkcNDyACQcAFaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAsAFQTJGDRIgABDJASAAQThqIAJBwAVqQThqKQMANwMAIABBMGogAkHABWpBMGopAwA3AwAgAEEoaiACQcAFakEoaikDADcDACAAQSBqIAJBwAVqQSBqKQMANwMAIABBGGogAkHABWpBGGopAwA3AwAgAEEQaiACQcAFakEQaikDADcDACABIAJBwAVqQQhqKQMANwMAIAAgAikDwAU3AwAMEgsgACgCDCIARQ0RIAEgABCbDAwRCwJAIAAoAiAiBkEIaigCACIARQ0AIAZBBGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkGADmogASgCACABKAIEIABBCGoiBRC1DCACKAKADkEyRg0BIAAQyQEgAEE4aiACQYAOakE4aikDADcDACAAQTBqIAJBgA5qQTBqKQMANwMAIABBKGogAkGADmpBKGopAwA3AwAgAEEgaiACQYAOakEgaikDADcDACAAQRhqIAJBgA5qQRhqKQMANwMAIABBEGogAkGADmpBEGopAwA3AwAgBSACQYAOakEIaikDADcDACAAIAIpA4AONwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCwJAIAZBFGooAgAiA0UNACAGQRBqKAIAIQAgA0HYAGwhAwNAIAAgARBoIABB2ABqIQAgA0Gof2oiAw0ACwsgBigCMCIARQ0QIAAoAgAiA0EaRw0NIAJBwAtqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCwAtBMkYNECAAEMkBIABBOGogAkHAC2pBOGopAwA3AwAgAEEwaiACQcALakEwaikDADcDACAAQShqIAJBwAtqQShqKQMANwMAIABBIGogAkHAC2pBIGopAwA3AwAgAEEYaiACQcALakEYaikDADcDACAAQRBqIAJBwAtqQRBqKQMANwMAIAEgAkHAC2pBCGopAwA3AwAgACACKQPACzcDAAwQCwJAIAAoAgwiBEUNACAAKAIIIQMgBEEobCEEA0AgAyABEJcDIANBKGohAyAEQVhqIgQNAAsLAkAgACgCECIAKAIAQYCAgIB4Rw0AIABBBGogARCGDAwQCyAAKAIIIgNFDQ8gACgCBCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwQCwsCQAJAIAAoAgQiAygCAEEaRw0AIAJBgAVqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAVBMkYNASADEMkBIANBOGogAkGABWpBOGopAwA3AwAgA0EwaiACQYAFakEwaikDADcDACADQShqIAJBgAVqQShqKQMANwMAIANBIGogAkGABWpBIGopAwA3AwAgA0EYaiACQYAFakEYaikDADcDACADQRBqIAJBgAVqQRBqKQMANwMAIAQgAkGABWpBCGopAwA3AwAgAyACKQOABTcDAAwBCyADIAEQRgsgACgCCCIAQQhqKAIAIgRFDQ4gAEEEaigCACEDIARBAnQhBANAAkACQCADKAIAIgAoAgBBGkcNACACQYALaiABKAIAIAEoAgQgAEEIaiIFELUMIAIoAoALQTJGDQEgABDJASAAQThqIAJBgAtqQThqKQMANwMAIABBMGogAkGAC2pBMGopAwA3AwAgAEEoaiACQYALakEoaikDADcDACAAQSBqIAJBgAtqQSBqKQMANwMAIABBGGogAkGAC2pBGGopAwA3AwAgAEEQaiACQYALakEQaikDADcDACAFIAJBgAtqQQhqKQMANwMAIAAgAikDgAs3AwAMAQsgACABEEYLIANBBGohAyAEQXxqIgQNAAwPCwsgACgCDCIERQ0NIAAoAgghAyAEQQJ0IQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkHACmogASgCACABKAIEIABBCGoiBRC1DCACKALACkEyRg0BIAAQyQEgAEE4aiACQcAKakE4aikDADcDACAAQTBqIAJBwApqQTBqKQMANwMAIABBKGogAkHACmpBKGopAwA3AwAgAEEgaiACQcAKakEgaikDADcDACAAQRhqIAJBwApqQRhqKQMANwMAIABBEGogAkHACmpBEGopAwA3AwAgBSACQcAKakEIaikDADcDACAAIAIpA8AKNwMADAELIAAgARBGCyADQQRqIQMgBEF8aiIEDQAMDgsLIAAoAgwiBEUNDCAAKAIIIQMgBEECdCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBgApqIAEoAgAgASgCBCAAQQhqIgUQtQwgAigCgApBMkYNASAAEMkBIABBOGogAkGACmpBOGopAwA3AwAgAEEwaiACQYAKakEwaikDADcDACAAQShqIAJBgApqQShqKQMANwMAIABBIGogAkGACmpBIGopAwA3AwAgAEEYaiACQYAKakEYaikDADcDACAAQRBqIAJBgApqQRBqKQMANwMAIAUgAkGACmpBCGopAwA3AwAgACACKQOACjcDAAwBCyAAIAEQRgsgA0EEaiEDIARBfGoiBA0ADA0LCyAAQQRqIQMCQAJAIAAoAhAiACgCAEEaRw0AIAJBwARqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCwARBMkYNASAAEMkBIABBOGogAkHABGpBOGopAwA3AwAgAEEwaiACQcAEakEwaikDADcDACAAQShqIAJBwARqQShqKQMANwMAIABBIGogAkHABGpBIGopAwA3AwAgAEEYaiACQcAEakEYaikDADcDACAAQRBqIAJBwARqQRBqKQMANwMAIAQgAkHABGpBCGopAwA3AwAgACACKQPABDcDAAwBCyAAIAEQRgsgAygCAEGAgICAeEYNCyABIAMQugoMCwsCQCAALQAYQQVHDQAgASAAKAIQEJsMCyAAKAIMIgNFDQogA0EEdCEEIAAoAghBDGohAwNAAkACQCADKAIAIgAoAgBBGkcNACACQcAJaiABKAIAIAEoAgQgAEEIaiIFELUMIAIoAsAJQTJGDQEgABDJASAAQThqIAJBwAlqQThqKQMANwMAIABBMGogAkHACWpBMGopAwA3AwAgAEEoaiACQcAJakEoaikDADcDACAAQSBqIAJBwAlqQSBqKQMANwMAIABBGGogAkHACWpBGGopAwA3AwAgAEEQaiACQcAJakEQaikDADcDACAFIAJBwAlqQQhqKQMANwMAIAAgAikDwAk3AwAMAQsgACABEEYLIANBEGohAyAEQXBqIgQNAAwLCwsCQAJAIAAoAgQiAygCAEEaRw0AIAJBgARqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgARBMkYNASADEMkBIANBOGogAkGABGpBOGopAwA3AwAgA0EwaiACQYAEakEwaikDADcDACADQShqIAJBgARqQShqKQMANwMAIANBIGogAkGABGpBIGopAwA3AwAgA0EYaiACQYAEakEYaikDADcDACADQRBqIAJBgARqQRBqKQMANwMAIAQgAkGABGpBCGopAwA3AwAgAyACKQOABDcDAAwBCyADIAEQRgsCQAJAIAAoAggiAygCAEEaRw0AIAJBwANqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCwANBMkYNASADEMkBIANBOGogAkHAA2pBOGopAwA3AwAgA0EwaiACQcADakEwaikDADcDACADQShqIAJBwANqQShqKQMANwMAIANBIGogAkHAA2pBIGopAwA3AwAgA0EYaiACQcADakEYaikDADcDACADQRBqIAJBwANqQRBqKQMANwMAIAQgAkHAA2pBCGopAwA3AwAgAyACKQPAAzcDAAwBCyADIAEQRgsgACgCDCIAKAIAIgNBGkcNBiACQYADaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAoADQTJGDQkgABDJASAAQThqIAJBgANqQThqKQMANwMAIABBMGogAkGAA2pBMGopAwA3AwAgAEEoaiACQYADakEoaikDADcDACAAQSBqIAJBgANqQSBqKQMANwMAIABBGGogAkGAA2pBGGopAwA3AwAgAEEQaiACQYADakEQaikDADcDACABIAJBgANqQQhqKQMANwMAIAAgAikDgAM3AwAMCQsgACgCCEEBRw0IIAEgAEEMahCHDAwICwJAAkAgACgCKCIDKAIAQRpHDQAgAkHAAmogASgCACABKAIEIANBCGoiBBC1DCACKALAAkEyRg0BIAMQyQEgA0E4aiACQcACakE4aikDADcDACADQTBqIAJBwAJqQTBqKQMANwMAIANBKGogAkHAAmpBKGopAwA3AwAgA0EgaiACQcACakEgaikDADcDACADQRhqIAJBwAJqQRhqKQMANwMAIANBEGogAkHAAmpBEGopAwA3AwAgBCACQcACakEIaikDADcDACADIAIpA8ACNwMADAELIAMgARBGCyAAKAIIQQJJDQcgASAAQQxqEIcMDAcLAkACQCADQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiBEUNAiAAKAIMIQMgBEEobCEEA0ACQCADKAIAQQdGDQAgAyABEJcDCyADQShqIQMgBEFYaiIEDQAMAwsLIAAoAhAiA0UNASAAKAIMIQUgA0E4bCEGQQAhAwNAAkACQAJAAkACQAJAAkAgBSADaiIEKAIADgMAAQIACyAEQQhqKAIAQQNHDQQgBEEMaigCACIHKAIAQRpHDQIgAkGAD2ogASgCACABKAIEIAdBCGoiCBC1DCACKAKAD0EyRg0EIAcQyQEgB0E4aiACQYAPakE4aikDADcDACAHQTBqIAJBgA9qQTBqKQMANwMAIAdBKGogAkGAD2pBKGopAwA3AwAgB0EgaiACQYAPakEgaikDADcDACAHQRhqIAJBgA9qQRhqKQMANwMAIAdBEGogAkGAD2pBEGopAwA3AwAgCCACQYAPakEIaikDADcDACAHIAIpA4APNwMADAQLIARBMGooAgAiBEUNBCAEKAIAQRpHDQIgAkGAD2ogASgCACABKAIEIARBCGoiBxC1DCACKAKAD0EyRg0EIAQQyQEgBEE4aiACQYAPakE4aikDADcDACAEQTBqIAJBgA9qQTBqKQMANwMAIARBKGogAkGAD2pBKGopAwA3AwAgBEEgaiACQYAPakEgaikDADcDACAEQRhqIAJBgA9qQRhqKQMANwMAIARBEGogAkGAD2pBEGopAwA3AwAgByACQYAPakEIaikDADcDACAEIAIpA4APNwMADAQLIARBBGooAgAgARCXAwwDCyAHIAEQRgwBCyAEIAEQRgwBCyAEQShqKAIAIAEQlwMLIAYgA0E4aiIDRw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAw4LFAABAgMEBQYHCBQUCyAAKAIoIgMoAgBBGkcNCCACQcAOaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAOQTJGDRIgAxDJASADQThqIAJBwA5qQThqKQMANwMAIANBMGogAkHADmpBMGopAwA3AwAgA0EoaiACQcAOakEoaikDADcDACADQSBqIAJBwA5qQSBqKQMANwMAIANBGGogAkHADmpBGGopAwA3AwAgA0EQaiACQcAOakEQaikDADcDACAEIAJBwA5qQQhqKQMANwMAIAMgAikDwA43AwAMEgsgACgCCEEBRw0SIAAoAgwiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNEiADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwSCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDREgAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMEQsCQCAAKAIEIgMoAgAiBUEDRw0AIANBBGogARDPBgwRCyADKAIgIgQoAgBBGkcNCCACQcAOaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAsAOQTJGDQ4gBBDJASAEQThqIAJBwA5qQThqKQMANwMAIARBMGogAkHADmpBMGopAwA3AwAgBEEoaiACQcAOakEoaikDADcDACAEQSBqIAJBwA5qQSBqKQMANwMAIARBGGogAkHADmpBGGopAwA3AwAgBEEQaiACQcAOakEQaikDADcDACAGIAJBwA5qQQhqKQMANwMAIAQgAikDwA43AwAMDgsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0PIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADA8LIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNDiADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwOCyAAKAIEIgMoAgBBGkcNCCACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDQ0gAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMDQsgACgCBCIDKAIAQRpHDQggAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0MIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAwLIAAoAgQiAygCAEEaRw0IIAJBgA9qIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgA9BMkYNCyADEMkBIANBOGogAkGAD2pBOGopAwA3AwAgA0EwaiACQYAPakEwaikDADcDACADQShqIAJBgA9qQShqKQMANwMAIANBIGogAkGAD2pBIGopAwA3AwAgA0EYaiACQYAPakEYaikDADcDACADQRBqIAJBgA9qQRBqKQMANwMAIAQgAkGAD2pBCGopAwA3AwAgAyACKQOADzcDAAwLCyADIAEQRgwJCyADIAEQRgwJCyADIAEQRgwICyAEIAEQRgwFCyADIAEQRgwGCyADIAEQRgwFCyADIAEQRgwECyADIAEQRgwDCyADIAEQRgwCCyAFQQJJDQECQCADKAIEIgMoAgBBGkcNACACQYAPaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAPQTJGDQIgAxDJASADQThqIAJBgA9qQThqKQMANwMAIANBMGogAkGAD2pBMGopAwA3AwAgA0EoaiACQYAPakEoaikDADcDACADQSBqIAJBgA9qQSBqKQMANwMAIANBGGogAkGAD2pBGGopAwA3AwAgA0EQaiACQYAPakEQaikDADcDACAEIAJBgA9qQQhqKQMANwMAIAMgAikDgA83AwAMAgsgAyABEEYMAQsgACgCCEECSQ0AAkAgACgCDCIDKAIAQRpHDQAgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0BIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAELIAMgARBGCyAAKAI4IgAoAgAiA0EaRw0DIAJBgAJqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAJBMkYNBiAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAEgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwGCwJAAkAgACgCBCIDKAIAQRpHDQAgAkHAAWogASgCACABKAIEIANBCGoiBBC1DCACKALAAUEyRg0BIAMQyQEgA0E4aiACQcABakE4aikDADcDACADQTBqIAJBwAFqQTBqKQMANwMAIANBKGogAkHAAWpBKGopAwA3AwAgA0EgaiACQcABakEgaikDADcDACADQRhqIAJBwAFqQRhqKQMANwMAIANBEGogAkHAAWpBEGopAwA3AwAgBCACQcABakEIaikDADcDACADIAIpA8ABNwMADAELIAMgARBGCyAAKAIIIgAoAgAiA0EaRw0CIAJBgAFqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgAFBMkYNBSAAEMkBIABBOGogAkGAAWpBOGopAwA3AwAgAEEwaiACQYABakEwaikDADcDACAAQShqIAJBgAFqQShqKQMANwMAIABBIGogAkGAAWpBIGopAwA3AwAgAEEYaiACQYABakEYaikDADcDACAAQRBqIAJBgAFqQRBqKQMANwMAIAEgAkGAAWpBCGopAwA3AwAgACACKQOAATcDAAwFCyAAKAIMIgAoAgAiA0EaRw0BIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCQEEyRg0EIAAQyQEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMBAsgACgCBCIAKAIAIgNBGkcNAAsgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsCQCAAKAIgIghBCGooAgAiAEUNACAIQQRqKAIAIgYgAEEGdGohBwNAAkAgBkE4aigCACIARQ0AIAZBNGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkHADWogASgCACABKAIEIABBCGoiBRC1DCACKALADUEyRg0BIAAQyQEgAEE4aiACQcANakE4aikDADcDACAAQTBqIAJBwA1qQTBqKQMANwMAIABBKGogAkHADWpBKGopAwA3AwAgAEEgaiACQcANakEgaikDADcDACAAQRhqIAJBwA1qQRhqKQMANwMAIABBEGogAkHADWpBEGopAwA3AwAgBSACQcANakEIaikDADcDACAAIAIpA8ANNwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCyAGIAEQgwQgBkHAAGoiACEGIAAgB0cNAAsLAkAgCEEUaigCACIARQ0AIAhBEGooAgAhAyAAQQxsIQQDQAJAAkAgAygCACIAKAIAQRpHDQAgAkGADWogASgCACABKAIEIABBCGoiBRC1DCACKAKADUEyRg0BIAAQyQEgAEE4aiACQYANakE4aikDADcDACAAQTBqIAJBgA1qQTBqKQMANwMAIABBKGogAkGADWpBKGopAwA3AwAgAEEgaiACQYANakEgaikDADcDACAAQRhqIAJBgA1qQRhqKQMANwMAIABBEGogAkGADWpBEGopAwA3AwAgBSACQYANakEIaikDADcDACAAIAIpA4ANNwMADAELIAAgARBGCyADQQxqIQMgBEF0aiIEDQALCyAIKAIYQYCAgIB4Rg0BIAgoAiAiA0UNASAIKAIcIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ADAILCyAAKAIMIgNFDQAgACgCCCIJIANBDGxqIQoDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJKAIAIgANAAJAAkACQAJAAkAgCSgCBCIAKAIAIgRBe2oiA0EEIANBBkkbDgYQAAECAwQQCyAAKAIIQQNHDQ4gACgCDCIDKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0OIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADA4LIAAoAigiACgCAEEaRw0FIAJBgA9qIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCgA9BMkYNDiAAEMkBIABBOGogAkGAD2pBOGopAwA3AwAgAEEwaiACQYAPakEwaikDADcDACAAQShqIAJBgA9qQShqKQMANwMAIABBIGogAkGAD2pBIGopAwA3AwAgAEEYaiACQYAPakEYaikDADcDACAAQRBqIAJBgA9qQRBqKQMANwMAIAMgAkGAD2pBCGopAwA3AwAgACACKQOADzcDAAwOCyAAKAIIQQNHDQsgACgCDCIDKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIANBCGoiBBC1DCACKAKAD0EyRg0LIAMQyQEgA0E4aiACQYAPakE4aikDADcDACADQTBqIAJBgA9qQTBqKQMANwMAIANBKGogAkGAD2pBKGopAwA3AwAgA0EgaiACQYAPakEgaikDADcDACADQRhqIAJBgA9qQRhqKQMANwMAIANBEGogAkGAD2pBEGopAwA3AwAgBCACQYAPakEIaikDADcDACADIAIpA4APNwMADAsLIABBIGohAyAEQQNHDQkgACgCBCIEKAIAQRpHDQUgAkGAD2ogASgCACABKAIEIARBCGoiBRC1DCACKAKAD0EyRg0JIAQQyQEgBEE4aiACQYAPakE4aikDADcDACAEQTBqIAJBgA9qQTBqKQMANwMAIARBKGogAkGAD2pBKGopAwA3AwAgBEEgaiACQYAPakEgaikDADcDACAEQRhqIAJBgA9qQRhqKQMANwMAIARBEGogAkGAD2pBEGopAwA3AwAgBSACQYAPakEIaikDADcDACAEIAIpA4APNwMADAkLIAAoAghBA0cNByAAKAIMIgMoAgBBGkcNBSACQcAOaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAOQTJGDQcgAxDJASADQThqIAJBwA5qQThqKQMANwMAIANBMGogAkHADmpBMGopAwA3AwAgA0EoaiACQcAOakEoaikDADcDACADQSBqIAJBwA5qQSBqKQMANwMAIANBGGogAkHADmpBGGopAwA3AwAgA0EQaiACQcAOakEQaikDADcDACAEIAJBwA5qQQhqKQMANwMAIAMgAikDwA43AwAMBwsgACgCAEEaRw0FIAJBwAxqIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCwAxBMkYNCiAAEMkBIABBOGogAkHADGpBOGopAwA3AwAgAEEwaiACQcAMakEwaikDADcDACAAQShqIAJBwAxqQShqKQMANwMAIABBIGogAkHADGpBIGopAwA3AwAgAEEYaiACQcAMakEYaikDADcDACAAQRBqIAJBwAxqQRBqKQMANwMAIAMgAkHADGpBCGopAwA3AwAgACACKQPADDcDAAwKCyADIAEQRgwICyAAIAEQRgwICyADIAEQRgwFCyAEIAEQRgwDCyADIAEQRgwBCyAAIAEQRgwECwJAIAAoAigiC0EIaigCACIARQ0AIAtBBGooAgAiDCAAQQZ0aiENA0ACQCAMQThqKAIAIgBFDQAgDEE0aigCACEDIABBDGwhBANAAkACQCADKAIAIgAoAgBBGkcNACABKAIAQQFHDQEgASgCBCIGIAAoAhhHDQECQAJAIAApAwgiD0IDg0IAUg0AIA+nIgUgBSgCACIFQQFqNgIAIAVBf0wNAQtBAC0AwPGdARogACgCFCEHIAAoAhAhCCAALQAcIQ5BwAAQhQEiBUUNACAFIA46ABwgBSAGNgIYIAVCADcDECAFIA83AwggBUEaNgIAIAAQyQEgACAFNgIoIAAgBzYCJCAAIAg2AiAgAEIANwMYIABCkb4BNwMQIABBADYCCCAAQRQ2AgAMAgsACyAAIAEQRgsgA0EMaiEDIARBdGoiBA0ACwsgDCABEIMEIAxBwABqIgAhDCAAIA1HDQALCwJAIAtBFGooAgAiAEUNACALQRBqKAIAIQMgAEEMbCEEA0ACQAJAIAMoAgAiACgCAEEaRw0AIAJBgA9qIAEoAgAgASgCBCAAQQhqIgUQtQwgAigCgA9BMkYNASAAEMkBIABBOGogAkGAD2pBOGopAwA3AwAgAEEwaiACQYAPakEwaikDADcDACAAQShqIAJBgA9qQShqKQMANwMAIABBIGogAkGAD2pBIGopAwA3AwAgAEEYaiACQYAPakEYaikDADcDACAAQRBqIAJBgA9qQRBqKQMANwMAIAUgAkGAD2pBCGopAwA3AwAgACACKQOADzcDAAwBCyAAIAEQRgsgA0EMaiEDIARBdGoiBA0ACwsgCygCGEGAgICAeEYNAyALQSBqKAIAIgNFDQMgC0EcaigCACEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwECwsCQCADKAIAQQdGDQAgAyABEJcDCyAAKAJoIAEQlwMgACgCSEGAgICAeEYNAiAAKAJQIgNFDQIgACgCTCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwDCwsgACgCKEGAgICAeEYNASAAKAIwIgNFDQEgACgCLCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwCCwsCQCAAKAIoIgAoAgBBGkcNACACQcAOaiABKAIAIAEoAgQgAEEIaiIDELUMIAIoAsAOQTJGDQEgABDJASAAQThqIAJBwA5qQThqKQMANwMAIABBMGogAkHADmpBMGopAwA3AwAgAEEoaiACQcAOakEoaikDADcDACAAQSBqIAJBwA5qQSBqKQMANwMAIABBGGogAkHADmpBGGopAwA3AwAgAEEQaiACQcAOakEQaikDADcDACADIAJBwA5qQQhqKQMANwMAIAAgAikDwA43AwAMAQsgACABEEYLIAlBDGoiCSAKRw0ACwsgAkHAD2okAAurbwI8fwJ+IwBB4AprIgIkACACIAEoAkwiAzYCLAJAAkACQAJAIANBAUcNACABLQA8IQQgAS0ANCIDQQNGDQEgA0ECRg0BIAEoAigiBSAFKAIAIgZBAWo2AgAgBkF/TA0DIAEoAjAhBiABKAIsIQcMAgsgAkEANgLoBEEAQYCGmwEgAkEsaiACQegEakH82oMBEJkZAAsLIAEtAF0hCCABLQBbIQkgAS0AWiEKIAEtAFkhCyABLQBYIQwgAS0AVyENIAEtAFYhDiABLQBVIQ8gAS0AVCEQIAEoAlAhESABLQA5IRIgAS0AOCETIAEtAEEh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QEEkRSIBDQAgAkGQBGogE0Ek/AoAAAsgAigCpAUhBCABDRQgAkHgAmogAkGQBGpBJPwKAAAMFAsCQEEkRQ0AIAJBuARqIAJBhANqQST8CgAACyACQegEaiACQdQCaiACQbgEahD0AyACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDBILAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkHoBGogAkHUAmogAkG4BGoQvgIgAkGABGpBCGoiICATQQhqKQIANwMAIAIgEykCADcDgAQgAigC/AQhBiACKAL4BCEHIAIoAvQEIQEgAigC8AQhBSACKALsBCEDIAIoAugEIhpBIkYNByAKIAkpAgA3AgAgCkEQaiAJQRBqKAIANgIAIApBCGogCUEIaikCADcCACACQeACakEIaiACQYAEakEIaikDADcDACACIAIpA4AENwPgAgwRCwJAQSRFDQAgAkG4BGogAkGEA2pBJPwKAAALIAJB6ARqIAJB1AJqIAJBuARqEOUEIAJBgARqQQhqIiAgE0EIaikCADcDACACIBMpAgA3A4AEIAIoAvwEIQYgAigC+AQhByACKAL0BCEBIAIoAvAEIQUgAigC7AQhAyACKALoBCIaQSJGDQcgCiAJKQIANwIAIApBEGogCUEQaigCADYCACAKQQhqIAlBCGopAgA3AgAgAkHgAmpBCGogAkGABGpBCGopAwA3AwAgAiACKQOABDcD4AIMEAsgAkHoBGogAkHUAmoQ3gIgAigCgAUhBiACKAL8BCEHIAIoAvgEISYgAigC9AQhICACKALwBCEDIAIoAuwEIRogAigC6AQhCwJAQSRFIgwNACACQbgEaiAOQST8CgAACyACKAKoBSEEIAtBiYDEAEcNB0EkRQ0QIAJB4AJqIAJBuARqQST8CgAADBALAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEDNgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDA4LAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEENgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDA0LAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkEFNgLUCiACQegEaiACQdQCaiACQbgEaiACQdQKahCABCACQYAEakEIaiIgIBNBCGopAgA3AwAgAiATKQIANwOABCACKAL8BCEGIAIoAvgEIQcgAigC9AQhASACKALwBCEFIAIoAuwEIQMgAigC6AQiGkEiRg0HIAogCSkCADcCACAKQRBqIAlBEGooAgA2AgAgCkEIaiAJQQhqKQIANwIAIAJB4AJqQQhqIAJBgARqQQhqKQMANwMAIAIgAikDgAQ3A+ACDAwLAkBBJEUNACACQbgEaiACQYQDakEk/AoAAAsgAkHoBGogAkHUAmogAkG4BGoQ8wEgAkGABGpBCGoiICATQQhqKQIANwMAIAIgEykCADcDgAQgAigC/AQhBiACKAL4BCEHIAIoAvQEIQEgAigC8AQhBSACKALsBCEDIAIoAugEIhpBIkYNByAKIAkpAgA3AgAgCkEQaiAJQRBqKAIANgIAIApBCGogCUEIaikCADcCACACQeACakEIaiACQYAEakEIaikDADcDACACIAIpA4AENwPgAgwLCyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwJCyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwICyAYIAIpA4AENwIAIBhBCGogICkDADcCAAwHCwJAQTBFIg0NACACQagDaiAPQTD8CgAACwJAIAwNACACQdwDaiACQbgEakEk/AoAAAtBAC0AwPGdARpB9AAQhQEiIkUNECAiIAY2AhggIiAHNgIUICIgJjYCECAiICA2AgwgIiADNgIIICIgGjYCBCAiIAs2AgACQCAMDQAgIkEcaiACQdwDakEk/AoAAAsgIiAENgJAAkAgDQ0AICJBxABqIAJBqANqQTD8CgAACwJAIAEgAigChANHDQAgAkGEA2pB7ISFARD5FSACKAKIAyEFCyAFIAFBA3RqIgMgIjYCBCADQQc2AgAMDgsgGCACKQOABDcCACAYQQhqICApAwA3AgAMBQsgGCACKQOABDcCACAYQQhqICApAwA3AgAMBAsgGCACKQOABDcCACAYQQhqICApAwA3AgAMAwsgGCACKQOABDcCACAYQQhqICApAwA3AgAMAgsgCCACQdQCahCvDCACQdQCahCaCBpBhICAgHghAwwICyACICA2AoQEIAIgAzYCgAQgAkHoBGogAkHUAmogAkGABGoQnQICQCACKALoBCIaQSJGDQAgAigC/AQhBiACKAL4BCEHIAIoAvQEISYgAigC8AQhICACKALsBCEDAkBBJEUNACACQeACaiATQST8CgAACyACKAKkBSEEIAJBgARqELADDAQLAkAgAigC7AENACACKAL4ASEGIAJBADYC+AEgAigC9AEhByACKALwASEmIAJCgICAgMAANwLwAQwFC0GMhYUBEPgUAAsgAiAGNgKUAyACIAc2ApADIAIgATYCjAMgAiAFNgKIAyACIAM2AoQDDAgLIAIoAqQFIQQgBSEgIAEhJgwBCyACQYQDahDlFyAaQSJGDQELAkBBJEUiAQ0AIAJByAFqIAJB4AJqQST8CgAACwJAIAENACACQTBqIAJByAFqQST8CgAACyACQewBahDPCUEAIR5BACETDAELAkAgBkUNACAHIQEDQCABKAIAIAFBBGooAgBBAUEBEMARIAFBJGohASAGQX9qIgYNAAsLICYgB0EEQSQQwBEgAkHsAWoQzwkCQCACKAK4ASIFIAIoArABRw0AIAJBsAFqQfSRhAEQ+RULIAIoArQBIgEgBUEDdGoiBiAgNgIEIAYgAzYCACACIAVBAWoiAzYCuAEgASADQQN0aiENIAJB6ARqQQRqIRogAkHsAWpBFGohDiACQegEakEUaiEQIAJBuARqQQxqIR4gAkHcA2pBEGohCSACQewBakEEaiEMQQAhCEEAIQsDQCACQdQKaiEDAkACQAJAAkACQAJAAkAgCEEIRw0AQQghCCABIQpBACEBDAELIAsNASAIQQhqIQVBASELAkAgASANRw0AIAUhCCANIQpBACEBDAELIAIgAkGoAWogCGo2AtQKIAFBCGohCiACQdQCaiEDIAUhCAsgAyABNgIAIAIoAtQKIgFFDQEgAigC1AIhGCAJQQRqICRBBGovAAA7AAAgCSAkKAAANgAAIAIgAi0AmAE6APMDIAJCBDcC5AMgAkIANwLcAyACIAItAJ8BOgDyAyACIAEpAgA3AoQEIAIgAkHcA2o2AoAEIAJCgICAgMAANwK4BCACQgQ3AsgEIAJCADcCwAQgAkHcA2ohAwNAIBhBBGoiBCgCACEFAkACQAJAAkACQAJAAkACQCAYKAIAIgFBeWoOBQABAgUDBwsgAy0AFCIBQQJGDQMgAUEBcQ0DIAJBADYCsAMgAkKAgICAEDcCqAMgGiACQagDahDcEyACQQo2AugEIAMgAkHoBGoQww4MBQsgAkELNgLoBCADIAJB6ARqEMMODAQLAkACQAJAIAUoAgBBgoCAgHhGDQAgAkEDOgCoAwwBCyACQagDaiADIAVBCGooAgAgBUEMaigCABCqByACQagDaiEBIAItAKgDQQNHDQELIANBEGohAQsgGiABKAAANgAAIBpBBGogAUEEai8AADsAACACQQw2AugEIAMgAkHoBGoQww4MAwsgAkENNgLoBCADIAJB6ARqEMMODAILIAJBADYCsAMgAkKAgICAwAA3AqgDIBogAkGoA2oQ3RMgAkEJNgLoBCADIAJB6ARqEMMODAELIAJBDjYC6AQgAyACQegEahDDDiAFKAIIRQ0AIAJBDzYC6AQgAyACQegEahDDDgsgGCgCACEBC0EEISAgGEEEaigCACEDQQEhIgJAAkACQAJAAkACQCABQXlqDgUABAECAwULIAMgAygCAEGIgMQARiIBQQJ0aiEFAkACQANAIAIoAoAEIQMCQAJAIAFBAXFFDQACQCADLQAUIgZBAkYNACAGQQFxDQAgAkEANgLQASACQoCAgIAQNwLIASAaIAJByAFqENwTIAJBCjYC6AQgAyACQegEahDDDgwCCyACQQA2AtABIAJCgICAgMAANwLIASAaIAJByAFqEN0TIAJBCTYC6AQgAyACQegEahDDDgwBCyAFKAIAQYaAxABHDQACQCADLQAUIgZBAkYNACAGQQFxDQAgAkEANgLQASACQoCAgIAQNwLIASAaIAJByAFqENwTIAJBCjYC6AQgAyACQegEahDDDgwBCyACQQA2AtABIAJCgICAgMAANwLIASAaIAJByAFqEN0TIAJBCTYC6AQgAyACQegEahDDDgsgAkHgAmogASAFEIYNAkAgAigC4AJBBEYNACACQRhqIAJB4AJqEPEQIAIoAhwhByACKAIYIRMCQCACKALMBCIGIAIoAsQERw0AIB4Q+hULIAIoAsgEIAZBGGxqIgMgBTYCBCADIAE2AgAgAyACKQLgAjcCCCADQRBqIAJB4AJqQQhqKQIANwIAIAIgBkEBajYCzAQgByEFIBMhAQwBCyACQegEaiABIAUgAkGABGoQZQJAIAIoAugEIgNBgICAgHhGDQAgAkGoA2pBCGogEEEIaikCADcDACACQagDakEQaiAQQRBqKAIANgIAIAIgECkCADcDqAMgAikC9AQhPiACKALwBCEBIAIoAuwEIQUMDAsgAigCzAQiA0UNAiACKALIBCADQRhsakFoaiEGA0AgA0F/aiEBIAYoAgAiB0ECRg0CIAZBFGooAgAhBSAGQQRqKAIAIRMCQAJAAkACQCAGQQhqIiYoAgAOBAADAQMACyAFRQ0CIAZBEGooAgAhASACQQA2AoQDIAIgBUF/aiIPNgKQAyACIAE2AogDIAIgAUHYAGo2AowDDAELIAIgATYCzAQgAiAPNgKQAyACIAU2AowDIAJBAzYChAMgAiAGKAIMNgKIAwJAIAIoAoAEIgEtABQiBUECRg0AIAVBAXENACACQQA2AtABIAJCgICAgBA3AsgBIBogAkHIAWoQ3BMgAkEKNgLoBCABIAJB6ARqEMMODAELIAJBADYC0AEgAkKAgICAwAA3AsgBIBogAkHIAWoQ3RMgAkEJNgLoBCABIAJB6ARqEMMOCyACQRBqIAJBhANqEPEQIAIoAhQhBSACKAIQIQEgBiATNgIEIAYgBzYCACAmQQhqIAJBhANqQQhqKQIANwIAICYgAikChAM3AgAgAiADNgLMBAwCCyACQegEaiAHIBMgAkGABGoQZQJAIAIoAugEIgNBgICAgHhGDQAgAkGoA2pBCGogEEEIaikCADcDACACQagDakEQaiAQQRBqKAIANgIAIAIgATYCzAQgAiAQKQIANwOoAyACKALsBCEFIAIoAvAEIQEgAikC9AQhPgwNCyAGQWhqIQYgASEDIAENAAsLQQAhAQsgAiABNgLMBAsMBAtBASEgQQAhBkEAISIMAwsgAygCCCIBRQ0CIAFBf2ohBiADKAIEIgNBCGohBUEDISBBACEiDAILIAMoAggiAUUNASABQX9qIQYgAygCBCIDQQhqIQVBAiEgQQAhIgwBC0EAIQZBACEiQQAhIAsCQAJAICINACAGrUIghiE+IAWtIT9BJCEBIAMhEwJAAkACQCAgDgQBAAICAQtBLCEBCyADIAFqKAIAIRMLID4gP4QhPgJAIAIoAsAEIgUgAigCuARHDQAgAkG4BGoQ+xULIAIoArwEIAVBFGxqIgEgPjcCDCABIAM2AgggASAgNgIEIAEgGDYCACAFQQFqIQUMAQsgAkHoBGogAkGABGogGCgCACAEKAIAEFwCQAJAIAIoAugEIgNBgICAgHhGDQBBJEUNBwwBCwJAIAIoAsAEIgVFDQAgAigCvAQgBUEUbGpBbGohAQJAA0ACQAJAAkACQAJAAkAgAUEEaigCACIGQQRGDQAgAUEQaigCACEHIAFBDGooAgAhEyABKAIAIQMgBg4EBQUCAQULIAVBf2ohAQwGCyAHDQEMAwsgB0UNAgwBCyACQQ82AugEIAIoAoAEIAJB6ARqEMMOCyABIBM2AgggASAGNgIEIAEgAzYCACABIAdBf2o2AhAgASATQQhqNgIMDAULIAJB6ARqIAJBgARqIAMoAgAgA0EEaigCABBcAkAgAigC6AQiA0GAgICAeEYNAEEkDQQMCgsgAUFsaiEBIAVBf2oiBQ0AC0EAIQELIAIgATYCwAQLAkAgAigCgAQiASgCACIDQf////8HTw0AIAEgA0EBajYCACACIAEoAgwiBTYChAMCQAJAIAVBAUcNACABIAM2AgAgAkHoBGogARCoDyACKALoBEEQRw0BQaSyhQEQmyAACyACQQA2AugEQQAgAkGEA2pBgIabASACQegEakG0soUBEJkZAAsgAkGoA2pBGGogAkHoBGpBGGooAgA2AgAgAkGoA2pBEGogAkHoBGpBEGopAgA3AwAgAkGoA2pBCGogAkHoBGpBCGopAgA3AwAgAiACKQLoBDcDqAMgDCACQagDahC5CUEBIQFBgICAgHghAwwIC0GUsoUBEPkUAAsgDCAaQST8CgAADAULIAIgBTYCwAQgAigCgAQhAyATIRgMAAsLQeT5hAEQmyAACyACLQCQASEhIAItAI8BISMgAi0AjgEhKCACKALEASEGIAIoAsABIQECQAJAIAItAIgBIhxBA0YNACAcQQJGDQAgAigCfCIdIB0oAgAiA0EBajYCACADQX9MDQsgAigChAEhKSACKAKAASEqDAELCyACLQCNASErIAItAIwBISwgAi0AlQEhLSACLQCUASEuIAItAJMBIS8gAigCeCEwIAIoAnQhMSACKAJwITIgAigCbCEzIAItAJIBITQgAi0AkQEhNSACKAJYITYgAigCVCE3IAIoAmghOCACKAJkITkgAigCYCE6IAIoAlwhOyACLQCWASE8IAJB6ARqIAZBBEEEEM0NIAIoAuwEIT0CQCACKALoBEEBRg0AIAIoAvAEIRBBACETQQAhGQJAIAZFDQAgECEDIAYhBQNAIAMgATYCACADQQRqIQMgAUEcaiEBIAVBf2oiBQ0ACyAGIRkLIAJBADYC5AQgAkKAgICAwAA3AtwEAkACQCAZDQBBASEUQQQhFUEAIRFBBCEmQQAhDQwBCyAGQQJ0IRNBACEFQQQhB0EAIQYDQCAQIAVqKAIAIQMQrR0iASADKAIYIgMtADI6ADIgASADLwEwOwEwIAEgAykCKDcCKCABIAMpAiA3AiAgASADKQIYNwIYIAEgAykCEDcCECABIAMpAgg3AgggASADKQIANwIAAkAgBiACKALcBEcNACACQdwEahD8FSACKALgBCEHCyAHIAVqIAE2AgAgAiAGQQFqIgY2AuQEIBMgBUEEaiIFRw0ACyACKALgBCIRQQRqISYgESAGQQJ0aiEVIBEoAgAiASgCFCESIAEoAhAhDUF/IRNBACEUC0EAIQNBASEGQQEhB0EAIRpBACEeIBMhIEEAISJBASEFQQAhCEEAIQ5BACEEA0BBACEYA0AgCCEbA0AgGCEIAkACQAJAAkACQAJAAkACQAJAAkAgBUEBcQ0AICYgFUYNAiAmIQEgJkEEaiEmDAELIBEhASAUDQELIAEo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ASAKIQEMAAsLIAIoAsABIgEgAigCxAEQ7hsgAigCvAEgARCzICACKAK0ASEYAkAgAigCuAEiBUUNACAYIQEDQCABELADIAFBCGohASAFQX9qIgUNAAsLIAIoArABIBhBBEEIEMARAkACQCATQQJHDQAgACAnNgIMIAAgJTYCCCAAIBo2AgQgACAeNgIADAELAkBBJEUNACACQbgEaiACQTBqQST8CgAACyAlICUoAgAiAUF/ajYCAAJAIAFBAUcNACAlICcQ+hcLIAIgBjYChAUgAiAHNgKABSACICY2AvwEIAIgIDYC+AQgAiADNgL0BCACIBo2AvAEIAIgHjYC7AQgAiATNgLoBAJAQSRFDQAgAkGIBWogAkG4BGpBJPwKAAALIAIgBDYCrAUgAkHwBGohGAJAAkAgE0EBcSIBRQ0AIBpBJ0cNACAAQYCAgIB4NgIEIAAgAzYCCAwBCyAAQQRqIR4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDQBBACEBIAJBADYC3AogAkKAgICAEDcC1AoCQCAaQSJHDQAgAkEANgKUAyACICY2AogDIAIgIDYChAMgAiACQYAFajYCkAMgAiACQZgFajYCjAMgAkGoA2ogAkGEA2oQsQYgAkGMA2ohICACKAKEAyEBAkACQAJAIAIoAogDIgNBB0sNACADRQ0BA0AgAS0AAEEKRg0DIAFBAWohASADQX9qIgMNAAwCCwsgAkEKIAEgAxCQCSACKAIAQQFGDQELIAJB1ApqQciehQFB256FARCKFCACQewBaiACQYQDahCxBiACQdwDaiACQewBahD6AiACQewBahDeEiACQQE2AvABIAJBmO+bATYC7AEgAkIBNwL4ASACQfUANgLkAiACIAJB4AJqNgL0ASACIAJB3ANqNgLgAgJAIAJB1ApqQfDZgwEgAkHsAWoQzgUNACACQQE2AvABIAJB5J6FATYC7AEgAkIBNwL4ASACQfYANgLkAiACICA2AuACIAIgAkHgAmo2AvQBIAJB1ApqQfDZgwEgAkHsAWoQzgUNACACKALcAyACKALgA0EBQQEQwBEMDgsgAigC3AMgAigC4ANBAUEBEMARDAoLIAJB7AFqQQhqIgFBADYCACACQoCAgIAQNwLsASACQewBakH+AEHPABDYDyACQYAEakEIaiABKAIANgIAIAIgAikC7AE3A4AEIAJB1ApqQciehQFB256FARCKFCACQQI2AvABIAJB0J+FATYC7AEgAkIBNwL4ASACQfUANgLgAyACIAJB3ANqNgL0ASACIAJBgARqNgLcAyACQdQKakHw2YMBIAJB7AFqEM4FRQ0HDAgLIAIoApQFIQMgAigCkAUhBQJAIBpBEUsNAEEBIBp0QYDACXFFDQAgAkH0BGohAQsgAiABNgKUAyACIBg2AowDIAIgAzYCiAMgAiAFNgKEAyACIAJBmAVqNgKQAyACQagDaiACQYQDahCxBiACQYwDaiEgIAIoAoQDIQECQAJAAkAgAigCiAMiA0EHSw0AIANFDQEDQCABLQAAQQpGDQMgAUEBaiEBIANBf2oiAw0ADAILCyACQQhqQQogASADEJAJIAIoAghBAUYNAQsgAkHUCmpByJ6FAUHbnoUBEIoUIAJB7AFqIAJBhANqELEGIAJB3ANqIAJB7AFqEPoCIAJB7AFqEN4SIAJBATYC8AEgAkGY75sBNgLsASACQgE3AvgBIAJB9QA2AuQCIAIgAkHgAmo2AvQBIAIgAkHcA2o2AuACAkAgAkHUCmpB8NmDASACQewBahDOBQ0AIAJBATYC8AEgAkHknoUBNgLsASACQgE3AvgBIAJB9wA2AuQCIAIgIDYC4AIgAiACQeACajYC9AEgAkHUCmpB8NmDASACQewBahDOBQ0AIAIoAtwDIAIoAuADQQFBARDAEQwHCyACKALcAyACKALgA0EBQQEQwBEMBAsgAkHsAWpBCGoiAUEANgIAIAJCgICAgBA3AuwBIAJB7AFqQf4AQc8AENgPIAJBgARqQQhqIAEoAgA2AgAgAiACKQLsATcDgAQgAkHUCmpByJ6FAUHbnoUBEIoUIAJBAjYC8AEgAkHQn4UBNgLsASACQgE3AvgBIAJB9QA2AuADIAIgAkHcA2o2AvQBIAIgAkGABGo2AtwDIAJB1ApqQfDZgwEgAkHsAWoQzgVFDQEMAgsgAkHsAWpBCGoiAUEANgIAIAJCgICAgBA3AuwBIAJB7AFqQbT8gwFBxvyDARCKFCAeQQhqIAEoAgA2AgAgHiACKQLsATcCAAwMCyACQTBqIAJBqANqEPoCIAJBATYC8AEgAkGY75sBNgLsASACQgE3AvgBIAJB9QA2AuADIAIgAkHcA2o2AvQBIAIgAkEwajYC3AMCQCACQdQKakHw2YMBIAJB7AFqEM4FDQAgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAkH1ADYC4AMgAiACQdwDajYC9AEgAiACQYAEajYC3AMgAkHUCmpB8NmDASACQewBahDOBQ0AAkAgAigCvAMiAUUNAEEAIQUgAkEANgLQASACQoCAgIDAADcCyAEgAUEYbCEHIAIoArgDIgNBEGohASADQRRqIQZBBCEaQQAhAwNAIAJBBTYC4AMgAkGAoIUBNgLcAyACQgQ3AugDIAYoAgAhEyACQQ42AogCIAJBDjYCgAIgAkEONgL4ASACQQ42AvABIAIgE0F/ajYC1AIgAiABNgL8ASACIAFBeGo2AvQBIAIgAUF0ajYC7AEgAiACQewBajYC5AMgAiACQdQCajYChAIgAkHgAmogAkHcA2oQxQkCQCADIAIoAsgBRw0AIAJByAFqEP8VIAIoAswBIRoLIBogBWoiEyACKQLgAjcCACATQQhqIAJB4AJqQQhqKAIANgIAIAIgA0EBaiIDNgLQASABQRhqIQEgBkEYaiEGIAVBDGohBSAHQWhqIgcNAAsgAkHcA2ogAigCzAEgA0HYoZsBQQEQzgQgAkH1ADYC5AIgAkECNgLwASACQdCfhQE2AuwBIAJCATcC+AEgAiACQdwDajYC4AIgAiACQeACajYC9AEgAkHUCmpB8NmDASACQewBahC/HiEBIAIoAtwDIAIoAuADQQFBARDAESACQcgBahD6FCABDQELIAJBATYC8AEgAkHknoUBNgLsASACQgE3AvgBIAJB9wA2AuADIAIgIDYC3AMgAiACQdwDajYC9AEgAkHUCmpB8NmDASACQewBahDOBUUNAwsgAigCMCACKAI0QQFBARDAEQsgAigCgAQgAigChARBAUEBEMARCyACQagDahDeEgwFCyACKAIwIAIoAjRBAUEBEMARIAIoAoAEIAIoAoQEQQFBARDAEQsgAkGoA2oQ3hIMBgsgAkEwaiACQagDahD6AiACQQE2AvABIAJBmO+bATYC7AEgAkIBNwL4ASACQfUANgLgAyACIAJB3ANqNgL0ASACIAJBMGo2AtwDAkAgAkHUCmpB8NmDASACQewBahDOBQ0AIAJBAjYC8AEgAkHQn4UBNgLsASACQgE3AvgBIAJB9QA2AuADIAIg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PEUNACAAQQRqIANB0ANqQQRyQTz8CgAACyAAIAU2AgAMEwsgACAGNgIIIAAgAjYCBCAAQSo2AgAMEgsgACABIAIoAgwgAi0AFCAGEPoBDBELIAMgBjYC3AMgA0EANgLYAyADIAU2AtQDIAMgATYC0AMgACABIANB0ANqENMEDBALIAAgASACKAIIIAIoAgwgAigCECACKAIEEOoCDA8LIAIoAggiBSACKAIMIgRBHGxqIQICQAJAAkACQAJAIAEtAAtBAXENACAERQ0CIANB0ANqIAEgBRBIIAMoAtgDIQQgAygC1AMhCCADKALQAyEGAkBBNEUNACADQegAaiADQdwDakE0/AoAAAsgBUEcaiEFDAELIARFDQEgA0HQA2ogASACQWRqIgIQSCADKALYAyEEIAMoAtQDIQggAygC0AMhBkE0RQ0AIANB6ABqIANB3ANqQTT8CgAACyAGQVZqDgICAAELIANB0ANqIAEQmxUgAEEIaiEEIAMoAtQDIQICQAJAIAMoAtADIgVBKkYNAEE4RQ0BIAQgA0HQA2pBCGpBOPwKAAAMAQsgBCACNgIACyAAIAU2AgAgACACNgIEDBALAkBBNEUNACAAQQxqIANB6ABqQTT8CgAACyAAIAQ2AgggACAINgIEIAAgBjYCAAwPCyADQdwDaiEHA0ACQAJAAkACQAJAIAEtAAtBAXENACAFIAJGDQIgA0HQA2ogASAFEEggAygC2AMhCSADKALUAyEKIAMoAtADIQYCQEE0RQ0AIANBnAFqIAdBNPwKAAALIAVBHGohBQwBCyAFIAJGDQEgA0HQA2ogASACQWRqIgIQSCADKALYAyEJIAMoAtQDIQogAygC0AMhBkE0RQ0AIANBnAFqIAdBNPwKAAALIAZBKkYNAiAGQStHDQELIAAgBDYCCCAAIAg2AgQgAEEqNgIADBELAkBBNEUNACAAQQxqIANBnAFqQTT8CgAACyAAIAk2AgggACAKNgIEIAAgBjYCAAwQCyADQdADaiABIAQgChCeCAJAIAMoAtADIgRBKkYNAAJAQTxFDQAgAEEEaiADQdADakEEckE8/AoAAAsgACAENgIADBALIAkhBAwACwsCQAJAAkACQCACKAIMIgpFDQAgAigCCCIGIApBHGwiCWohC0EAIQUgBiECIAohBANAIAUgAigCAEEBRmohBSAC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QQhqIANB0ANqQQhqQTj8CgAACyAAIAI2AgQgACAFNgIADAULIAAgCTYCCCAAIAI2AgQgAEEqNgIADAQLIAUgAygC2ANBlK+EARCqHgALAkACQAJAAkAgASgCIA0AIAFBfzYCICADQgA3ApADIANB0ANqIAFBJGoiDSADQZADahDbCyADKALUAyEMAkAgAygC0AMiAkEqRg0AAkBBOEUNACAAQQhqIANB0ANqQQhqQTj8CgAACyAAIAw2AgQgACACNgIAIAMoAuACIQQgAygC3AIhCQwECyADQQA2AowCIANCgICAgMAANwKEAgJAIAMoAuACIgRFDQAgA0GQAmogAygC3AIiCRCEDCADQShqQQRqIQ8gA0GQAmpBGGohCCADQZACakEEaiEuIAytITEgA0GQAmpBDGohByADQZADakEQaiELQQQhDkEAIRADQAJAAkACQAJAAkACQAJAIAMoAsACIgIgAygCxAJGDQAgAyACQQhqNgLAAgJAIAIoAgAiBiAETw0AIAIxAAQhMCADKAKcAiEKIAMoAqQCIQUCQCAJIAZBGGxqKAIIRQ0AAkAgBSAKRw0AIAdBiLeEARDvFQsgAygCoAIgBUEDdGogMEIohiAwQiCGhDcCACADIAVBAWo2AqQCAkAgECADKAKEAkcNACADQYQCahCIFiADKAKIAiEOCwJAQThFDQAgDiAQQThsaiADQZACakE4/AoAAAsgAyAQQQFqIhA2AowCIAIoAgAiAiAETw0DIANBkAJqIAkgAkEYbGoQhAwMCQsCQCAFIApHDQAgB0G4t4QBEO8VCyADKAKgAiAFQQN0aiAwQiCGIDGEIDBCKIaENwIAIAMgBUEBajYCpAIMCAsgBiAEQfi2hAEQsxEACyADKAKkAg4CBQIBCyACIARBqLeEARCzEQALIA8gBykCADcCACAPQQhqIAdBCGooAgA2AgAgA0EANgKkAiADQoCAgIDAADcCnAIgA0ECNgIoIANB0ANqIA0gA0EoahDbCyADKALUAyEFIAMoAtADIgJBKkYNAkE4RQ0BIABBCGogA0HQA2pBCGpBOPwKAAAMAQsgA0EANgKkAiADKAKgAikCACEwIANBATYCKCADIDA3AiwgA0HQA2ogDSADQShqENsLIAMoAtQDIQUgAygC0AMiAkEqRg0BQThFDQAgAEEIaiADQdADakEI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aiEKIAtBIGohEwwjCyALQRRqIQogC0EQaiETDCILIAtBIGohCiALQRxqIRMMIQsgC0EYaiEKIAtBFGohEwwgCyALQRRqIQogC0EQaiETDB8LIAtBFGohCiALQRBqIRMMHgsgCygCCA4HFhcYGRobHBYLIAtBIGohCiALQRxqIRMMHAsgC0EQaiEKIAtBDGohEwwbCyALQRhqIQogC0EUaiETDBoLIAsoAiAiE0EoaiEKIBNBJGohEwwZCyALQQhqIQogC0EEaiETDBgLIAtBCGohCiALQQRqIRMMFwsgC0EMaiEKIAtBCGohEwwWCyALQQxqIQogC0EIaiETDBULIAtBHGohCiALQRhqIRMMFAsgC0EsaiEKIAtBKGohEwwTCyALQQhqIQogC0EEaiETDBILIAsoAgQiE0EEaiEKDBELIAtBFGohCiALQRBqIRMMEAsgC0EQaiEKIAtBDGohEwwPCyALQQxqIQogC0EIaiETDA4LIAtBDGohCiALQQhqIRMMDQsgC0EQaiEKIAtBDGohEwwMCyALQRBqIQogC0EMaiETDAsLIAtBEGohCiALQQxqIRMMCgsgC0EUaiEKIAtBEGohEwwJCyALQQxqIQogC0EIaiETDAgLIAtBCGohCiALQQRqIRMMBwsgC0EcaiEKIAtBGGohEwwGCyALQRBqIQogC0EMaiETDAULIAtBEGohCiALQQxqIRMMBAsgC0EUaiEKIAtBEGohEwwDCyALQRRqIQogC0EQaiETDAILIAtBJGohCiALQSBqIRMMAQsgC0EkaiEKIAtBIGohEwsgCigCACEVIBMoAgAhGSACQdABaiALEIMCAkACQCACKALQAUGAgICAeEYNACACQcACakEIaiACQdABakEIaigCACIKNgIAIAIgAikC0AE3A8ACIAIoAsQCIQsMAQtBBCEKIAJB4AJqQQRBAUEBEMwNIAIoAuQCIRMgAigC4AJBAUYNBCACKALoAiILQd/WlcsHNgAAIAJBBDYCyAIgAiALNgLEAiACIBM2AsACCyACQcgAakHIypgBIAsgChCoAwJAAkACQCACKAJIDQAgCyAKQYTLmwFBBRCZHA0AIAJBwABqQbjLmAEgCyAKEKgDIAIoAkANACACQThqQejLmAEgCyAKEKgDIAIoAjgNACALIApqIREgCkUNCwJAIAssAAAiGkF/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QeACakHYAPwKAAALQQEhFSABIABBAWo2AggLIAJBGGpBAEEAIAEoAggiE0GE85oBEMkYIAIoAhwhDyABIAIoAhgiADYCCCACIAkgEkEEdGoiDTYC8AEgAiAWNgLsASACIAk2AugBIAIgCTYC5AEgAiABNgLYASACIA82AtwBIAIgEyAPayIWNgLgAQJAIAAgD0YNACABKAIEIgQgD0HYAGxqIQUgBCAAQdgAbGohACACQeACakEEciEMA0AgACgCACIEQQ1GDQECQEHUAEUNACAMIABBBGpB1AD8CgAACyACIAQ2AuACIAJB4AJqEIYFIABB2ABqIgAgBUcNAAsLIAJB5AFqIRQgAkKIgICAgAE3AtABAkACQAJAAkACQAJAIBMgD0cNACABIBQQnAcMAQsCQAJAAkAgASgCCCIAIA9GDQAgASgCBCIFIA9B2ABsaiEOIBJBBHQhBCAFIABB2ABsaiEAIAJBnQNqIQUgAkHgAmpBKGohDCACQZQDaiELA0AgBEUNAiAJKQMAISAgC0IANwIAIAtBCGpBADoAACAFQQA2AAAgBUEEakEAOwAAIAJBADYCiAMgAkIENwKMAyACQcACakEIaiIKIAxBCGooAgA2AgAgAkIANwPwAiACQgE3A+gCIAJCADcDgAMgAkEANgLgAiACQQM6AKMDIAIgDCkDADcDwAIgAkHgAmoQmQ0gAEEoakIANwMAIABBGGpCADcDACAAQRBqICA3AwAgAEEIakEANgIAIABBBzYCACAAQTBqIAIpA8ACNwMAIABBOGogCigCADYCACAAQTxqQgA3AgAgAEHDAGpCADcAACAAQcsAakEDOgAAIAEgASgCCEEBajYCCCAEQXBqIQQgCUEQaiEJIABB2ABqIgAgDkcNAAsgAiAJNgLoAQsCQCANIAlHDQAgDSEJDAILAkAgDSAJa0EEdiIAIAEoAgAgE2tNDQAgASATIABBCEHYABCfFwsgACAPaiIAQdgAbCEEAkAgFkHYAGwiBUUNACABKAIEIgwgBGogDCAPQdgAbGogBfwKAAALIAIgADYC3AEgASgCCCIFIABGDQEgASgCBCIAIARqIQsgACAFQdgAbGohACACQeACakEoaiEEIAJBlANqIQUgAkGdA2oiCkEEaiEPAkADQCAJIA1GDQEgCSkDACEgIAVCADcCACAFQQhqQQA6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AowBIAIgACkCeDcCkAEgAkGcAWpBDGogAEGoAWoiAS8BADsBACACQQYgESAHQYCAgIB4RiIEGzYC4AIgAkHIkIABIBMgBBs2AtwCIAIgACkCoAE3AqABIAIgAkHcAmo2ApwBIAJBrAFqQQxqIAEvAQA7AQAgAiAGNgLIASACIAApAqABNwKwASACIAJByAFqNgKsASACQYACakEMaiABLwEAOwEAIAIgFDYCxAIgAiAAKQKgATcChAIgAiACQcQCajYCgAIgAkGgAmpBDGogAEGKAWovAQA7AQAgAiAAKQGCATcCpAIgAiACQdACajYCoAIgAkEXNgKMAyACQRg2AoQDIAJBGDYC/AIgAkEZNgL0AiACQRk2AuwCIAIgAkGgAmo2AogDIAIgAkGAAmo2AoADIAIgAkGsAWo2AvgCIAIgAkGcAWo2AvACIAIgAkGMAWo2AugCIAJBADYC6AEgAkEGNgLcASACQeyQgAE2AtgBIAJBBTYC5AEgAiACQegCajYC4AEgAkH0AGogAkHYAWoQrR4hCCACLQDQAiACKALUAhDyFCAHIBMQlx4gAigChAEhBwJAIAIoAogBIgRFDQAgByEBA0AgASgCACABQQRqKAIAEK4eIAFBGGooAgAgAUEcaigCABDvGiABQSBqIQEgBEF/aiIEDQALCyACKAKAASAHQQRBIBCwESALIAkQvBogCiALEJogIAhFDQMMBQsgAigCiAEhBCACKAKEASEBIAIgAigCgAE2ArQBIAIgATYCsAEgAiABNgKsASACIAEgBEEFdGo2ArgBIABBEGohFSAAQcAAaiEWIABBxABqIRcgAEEYaiEYIABBFGohGSAAQSRqIRogAEE4aiEbIABBBGohHCAAKAJwIh0gACgCdEEKbGohHiACQaACakEEaiEfIAJB6AJqQQRqISAgAkHoAmpBIGohISACQegCakEcaiEiIAJB6AJqQRRqISMgACgCuAEhJCACQdgBakEEaiIlQQhqISYCQANAIAIoArABIgEgAigCuAFGDQEgAiABQSBqNgKwASABKAIAIidBgYCAgHhGDQEgASgCHCEoIAEoAhghKSABKAIEISogAkHoAmogDUEBIAEoAgwgASgCECAQIBAQegJAIAIoAugCQQFHDQAgAigC7AIgAigC8AIQ8hQMBgsgAkEwaiACKALsAiIrIAIo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AigC4AEQxR8gAigC2AEgCBCOICACQdgBaiAAKAIAEPASIAJBoAJqIAIoAtwBIgggAigC4AFBACArIA5rIgUgBSArSxsQ3AggAiACQaACajYC6AIgICABKQAUNwAAIAQgBy8AADsAACACQYACaiACQegCahDDECACQZwBaiACKAKEAiIFIAIoAogCEMUfIAIoAoACIAUQjiAgAigCoAIgAigCpAIQjiAgAigC2AEgCBCOICACIBk2AugCICAgASkAFDcAACAEIAcvAAA7AAAgAkHYAWogAkHoAmoQwhAgAkGcAWogAigC3AEiASACKALgARDFHyACKALYASABEI4gDAYLIAIgHDYC6AIgICABKQAUNwAAICBBCGogAUEcai8AADsAACACQdgBaiACQegCahDCECACQZwBaiACKALcASIBIAIoAuABEMUfIAIoAtgBIAEQjiAMAQsLIAJB6AJqIAEQ3wUgAigC6AIiBCACKALsAhCXHiABQRRqIQEgBEGAgICAeEYNASACIBs2AugCICAgASkAADcAACAgQQhqIAFBCGovAAA7AAAgAkHYAWogAkHoAmoQwhAgAkGcAWogAigC3AEiBCACKALgARDFHyACKALYASAEEI4gDAILIAJByAFqEJMVIAJBvAFqEKoVICcgKhCXHiApICgQ7RoMDQsgAiAaNgLoAiAgIAEpAAA3AAAgIEEIaiABQQhqLwAAOwAAIAJB2AFqIAJB6AJqEMIQIAJBnAFqIAIoAtwBIgQgAigC4AEQxR8gAigC2AEgBBCOIAsgAkHYAWogACgCABDwEiACQaACaiACKALcASIEIAIoAuABQQAgKyAOayIHIAcgK0sbENwIIAIgAkGgAmo2AugCICAgASkAADcAACAgQQhqIgcgAUEIaiIILwAAOwAAIAJBgAJqIAJB6AJqEMMQIAJBnAFqIAIoAoQCIgUgAigCiAIQxR8gAigCgAIgBRCOICACKAKgAiACKAKkAhCOICACKALYASAEEI4gIAIgGTYC6AIgICABKQAANwAAIAcgCC8AADsAACACQdgBaiACQegCahDCECACQZwBaiACKALcASIBIAIoAuABEMUfIAIoAtgBIAEQjiALQQEhAQsgAigCoAEhBAJAAkAgAigCpAEiB0EQSQ0AIAQgBxDWBSEEDAELIAQgBxCVGSEECyACQaAC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ayEEAkAgBiACKAKgAkcNACACQaACahDlFSACKAKkAiETCyATIAZBFGxqIgEgAikC6AI3AgAgAkHoAmpBCGooAgAhByABIAQ2AhAgASAUNgIMIAFBCGogBzYCACACIAZBAWoiBjYCqAIgAkEANgKIAiACKALYASEBIAUhBCAIIRQMAAsLCyACQawBahDPESALIAkQvBogCiALEJogDAILIAIoApgDIQggAigClAMhBQJAAkACQCACKAKIASIrRQ0AAkAgAigChAEiHyArQQV0aiIMQWBqIi5FDQAgDEF4aiIsKAIAIAxBfGoiFygCACgCGBEEACAsKAIAIBcoAgAoAiARBABqIAUgCCgCGBEEAEkNAiAMQXBqKAIAISwgDEFsaiIMKAIAIRcgAkE4aiAuEJgcIAJB6AJqIAIoAjggAigCPBDkHCACKALwAiEtIAIoAuwCIS4gAigC6AIhLyACQdgBaiANQQEgDCgCACIMIBQgBmoiOCAsIBdqIiwgOCAsSxsgDGsiLCAQIBAQegJAIAIoAtgBIhdFDQAgLyAuEJceIAIoAuABIQwCQCAXDQAgAigC3AEgDBDtGgwECyACLQDcASAMEPIUDAMLIAIgK0F/aiIGNgKIASACKALgASEUIAIoAtwBIRECQCAfIAZBBXRqIgYoAgAiEkGBgICAeEYNACAGKAIYISsgBigCHCEXIBIgBigCBBCXHiArIBcQ7RoLIAIgFDYChAMgAiARNgKAAyACQQA6APwCIAIgLDYC+AIgAiAMNgL0AiACIC02AvACIAIgLjYC7AIgAiAvNgLoAiACQYABaiACQegCakHsj4ABEIgRIAUgCBDtGiAHIBMQlx4MAwtB3I+AARCbIAALIAIgCDYChAMgAiAFNgKAAyACIBI6APwCIAIgFDYC+AIgAiAGNgL0AiACIBE2AvACIAIgEzYC7AIgAiAHNgLoAiACQYABaiACQegCakGMkIABEIgRDAELIAIgCDYChAMgAiAFNgKAAyACIBI6APwCIAIgFDYC+AIgAiAGNgL0AiACIBE2AvACIAIgEzYC7AIgAiAHNgLoAiACQYABaiACQegCakH8j4ABEIgRCyABQRhqIQEgBEEYaiEEDAALCyACKQJ4ITkgAigCdCEFDAILICcgKhCXHiApICgQ7RogAkGsAWoQzxEgCyAJELwaIAogCxCaIAsgAigCdCACKAJ4EI4gQYCAgIB4IQULIABBwAFqIQQLIAMoAjghCCACQQhqIAMoAjwiAUEEQShBsJibARCDFCACQQA2AuABIAIgAigCDDYC3AEgAiACKAIIIgc2AtgBAkACQCABIAdNDQAgAkHYAWpBACABQQRBKBCfFwwBCyABDQAgAkHIAGpBCGogAkHYAWpBCGooAgA2AgAgAiACKQLYATcDSAJAAkAgAygCAEECRw0AQQAhAQwBCyADKAIMIQcgAygCCCEBCwJAAkACQCADQSRqKAIARQ0AIAJB6AJqIAQoAgBBCGogA0EgaigCACgCABCZAwJAAkAgAigC6AJFDQAgAkGgAmpBCGogAkHoAmpBCGopAgA3AwAgAiACKQLoAjcDoAIMAQsgAkEANgKgAgsgA0EkaigCAEUNASACQegCaiAEKAIAQQhqIANBIGooAgAoAgQQmQMCQCACKALoAkUNACACQdgBakEIaiACQegCakEIaikCADcDACACIAIpAugCNwPYAQwDCyACQQA2AtgBDAILIAJBADYCoAILIAJBADYC2AELAkACQAJAAkAgAigCoAIiCA0AQYCAgIB4IQwMAQsgAkEANgKIAiACQoCAgIAQNwKAAiACQeiIgAE2AuwCIAJCoICAgA43AvACIAIgAkGAAmo2AugCIAhB6ABqIAJB6AJqEOcdDQEgAikChAIhOiACKAKAAiEMCwJAAkAgAUUNACACQegCaiABIAcQtRMMAQsgAkGAgICAeDYC6AILIAMoAhhFDQEgAkHoAGogAygCFCIBQQRqKAIAIAFBCGooAgAQ8xIgAkHYAGpBCGoiBiACQegCakEIaigCADYCACACIAIpAugCNwNYIAIoAuQBIRQgAigC3AEhEyACKALYASERIAIoAqwCIRIgAigCpAIhKyAAKAK8ASIEQQhqENUSIQACQCAEKAIUIgcgBCgCDEcNACAEQQxqEOYVCyAEKAIQIAdB3ABsaiIBIBQ2AhwgASARQQBHIhQ2AhggASATNgIUIAEgFDYCECABIBI2AgwgASAIQQBHIgg2AgggASArNgIEIAEgCDYCACABIAIpAmg3AiAgASACKQNINwIsIAEgAikDWDcCOCABQShqIAJB6ABqQQhqKAIANgIAIAFBNGogAkHIAGpBCGooAgA2AgAgAUHAAGogBigCADYC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JCIdQQJGDQAgBCgCICErIAQoAhwhIyAEKAIYIRkgBCkDECJBQgODQgBSDQAgQaciASABKAIAIgFBAWo2AgAgAUF/TA0XC0EALQDA8Z0BGkHIABCFASIYRQ0WIAQoAigiGygCBCEDIAJB8ABqIBsoAggiIkEIQcAAEMwNIAIoAnQhJiACKAJwQQFGDREgAigCeCElAkAgJkUNACADICJBBnRqISRBACEKICYhIQNAIAohHCADIiogJEYNASAqKAI0IQMgKigCLCEpICooAighJyACQfAAaiAqKAI4IiBBBEEMEMwNIAIoAnQhGiACKAJwQQFGDRQgAigCeCEfAkAgGkUNACAgQQxsIQUgHyEKIBohBgNAIAVFDQFBAC0AwPGdARogAygCCCEHIAMoAgQhCEHAABCFASIBRQ0aIAJB8ABqIAMoAgAQRCABQThqIAJB8ABqQThqKQMANwMAIAFBMGogAkHwAGpBMGopAwA3AwAgAUEoaiACQfAAakEoaikDADcDACABQSBqIAJB8ABqQSBqKQMANwMAIAFBGGogAkHwAGpBGGopAwA3AwAgAUEQaiACQfAAakEQaikDADcDACABQQhqIAJB8ABqQQhqKQMANwMAIAEgAikDcDcDACAKQQhqIAc2AgAgCkEEaiAINgIAIAogATYCACAKQQxqIQogBUF0aiEFIANBDGohAyAGQX9qIgYNAAsLICpBwABqIQMgHEEBaiEKIAJB8ABqICoQpwIgJSAcQQZ0aiIBICA2AjggASAfNgI0IAEgGjYCMCABICk2AiwgASAnNgIoIAFBIGogAkHwAGpBIGopAwA3AwAgAUEYaiACQfAAakEYaikDADcDACABQRBqIAJB8ABqQRBqKQMANwMAIAFBCGogAkHwAGpBCGopAwA3AwAgASACKQNwNwMAICFBf2oiIQ0ACwsgAkHAAGogG0EMahCRCEGAgICAeCEGIBsoAjghGiAbKAI0IRwgGygCMCEgAkAgGygCGEGAgICAeEYNACAbKAIcIQMgGygCLCEqIBsoAighCCAbKAIkIQcgAkHwAGogGygCICIfQQhBMBDMDSACKAJ0IQYgAigCcEEBRg0UIAIoAnghIQJAIAZFDQAgH0EwbCEKICEhASAGIQUDQCAKRQ0BIAJB8ABqIAMQgAEgAUEoaiACQfAAakEoaikDADcDACABQSBqIAJB8ABqQSBqKQMANwMAIAFBGGogAkHwAGpBGGopAwA3AwAgAUEQaiACQfAAakEQaikDADcDACABQQhqIAJB8ABqQQhqKQMANwMAIAEgAikDcDcDACABQTBqIQEgCkFQaiEKIANBMGohAyAFQX9qIgUNAAsLIB+tQiCGICGthCE/CyAbLQBFIQUgGy0ARCEfQQAhAUEAIQMCQCAbKAI8IgpFDQBBAC0AwPGdARpBFBCFASIDRQ0XIAopAgwhQCADIAooAgQgCigCCBCiBiADIEA3AgwLAkAgGygCQCIKRQ0AQQAtAMDxnQEaQQwQhQEiAUUNF0EALQDA8Z0BGiAKKAIIISkgCigCBCEnQeAAEIUBIiFFDRcgISAKKAIAEGQgASApNgIIIAEgJzYCBCABICE2AgALIAJB8ABqQQhqIAJBwABqQQhqKAIAIgo2AgAgAiACKQJAIkA3A3AgGCAiNgIIIBggJTYCBCAYICY2AgAgGCBANwIMIBhBFGogCjYCACAYIAU6AEUgGCAfOgBEIBggATYCQCAYIAM2AjwgGCAaNgI4IBggHDYCNCAYICA2AjAgGCAqNgIsIBggCDYCKCAYIAc2AiQgGCA/NwIcIBggBjYCGCAYrSE/DAELQQAtAMDxnQEaQcgAEIUBIgVFDRUgBCgCDCIIKAIYISUgCCgCFCEkIAgoAhAhJiAIKAIEISIgCCgCACE5AkAgCCkDCCJBQgODQgBSDQAgQaciASABKAIAIgFBAWo2AgAgAUF/TA0WCyAILQBEITogCC0AHCE7AkACQCAIKAIgIgMNAEEAIRgMAQtBAC0AwPGdARpBFBCFASIYRQ0WIAMoAgQhASADKAIQITwgAygCDCE9IAJB8ABqIAMoAggiPkEIQTAQzA0gAigCdCEbIAIoAnBBAUYNFCACKAJ4ISkCQCAbRQ0AID5BMGwhJ0EAIQogGyEZA0AgJyAKRg0BIAEoAhghIyABKAIUISogASgCECErIAEoAgQhHSABKAIAIRoCQCABKQMIIj9CA4NCAFINACA/pyIDIAMoAgAiA0EBajYCACADQX9MDRkLIAEtACohHCABLQApISAgAS0AKCEfIAEtABwhIUEAIQdBACEGAkAgASgCICIDRQ0AQQAtAMDxnQEaQeAAEIUBIgZFDRkgBiADEGQLAkAgASgCJCIDRQ0AQQAtAMDxnQEaQeAAEIUBIgdFDRkgByADEGQLIAFBMGohASApIApqIgMgGjYCACADQSpqIBw6AAAgA0EpaiAgOgAAIANBKGogHzoAACADQSRqIAc2AgAgA0EgaiAGNgIAIANBHGogIToAACADQRhqICM2AgAgA0EUaiAqNgIAIANBEGogKzYCACADQQhqID83AwAgA0EEaiAdNgIAIApBMGohCiAZQX9qIhkNAAsLIBggPDYCECAYID02AgwgGCA+NgIIIBggKTYCBCAYIBs2AgALIAJBwABqIAgoAjwgCCgCQBCnBSAIKAIoIQMgCCgCNCEjIAgoAjAhKiACQfAAaiAIKAIsIghBCEE4EMwNIAIoAnQhByACKAJwQQFGDRQgAigCeCEZAkAgB0UNACAIQThsIQogGSEBIAchBgNAIApFDQEgAkHwAGogAxDEASABQTBqIAJB8ABqQTBqKQMANwMAIAFBKGogAkHwAGpBKGopAwA3AwAgAUEgaiACQfAAakEgaikDADcDACABQRhqIAJB8ABqQRhqKQMANwMAIAFBEGogAkHwAGpBEGopAwA3AwAgAUEIaiACQfAAakEIaikDADcDACABIAIpA3A3AwAgAUE4aiEBIApBSGohCiADQThqIQMgBkF/aiIGDQALCyAFIAg2AiwgBSAZNgIoIAUgBzYCJCAFICM2AjQgBSAqNgIwIAUgGDYCICAFIDs6ABwgBSAlNgIYIAUgJDYCFCAFICY2AhAgBSBBNwMIIAUgIjYCBCAFIDk2AgAgBSACKQNANwM4IAUgOjoARCAFQcAAaiACQcAAakEIaigCADYCAAsgQUIgiKchGiBBpyEGDAULQQAtAMDxnQEaIAQoAgwhBSAEKAIIIQtBwAAQhQEiCkUNEyAKIAQoAgQQRAwFC0EALQDA8Z0BGiAEKAIMIQUgBCgCCCELQRgQhQEiCkUNEiAEKAIEIgEoAgwhAyABKAIIIQYCQCABKQMAIkFCA4NCAFINACBBpyIHIAcoAgAiB0EBajYCACAHQX9MDRMLAkAgASkDECI/UA0AID9CA4NCAFINACA/pyIBIAEoAgAiAUEBajYCACABQX9MDRMLIAogPzcDECAKIAM2AgwgCiAGNgIIIAogQTcDACAELQAUIRoCQCAEKAIQIgENAEEAIQYMBQtBAC0AwPGdARpBFBCFASIGRQ0SIAEpAgwhPyAGIAEoAgQgASgCCBCTByAGID83AgwMBAtBAC0AwPGdARpByAAQhQEiCkUNESAEKAIEIgEoAjghAyABKAI0IQUgASgCMCEGIAEtAEEhByABLQBAIQggASgCJCELIAEoAiAhGQJAIAEpAygiQEIDg0IAUg0AIECnIiMgIygCACIjQQFqNgIAICNBf0wNEgsgAS0APCEjAkACQCABKQMAIj9QDQAgASgCDCEqIAEoAgghKyABKAIcISggASgCGCEeAkAgP0IDg0IAUg0AID+nIh0gHSgCACIdQQFqNgIAIB1Bf0wNFAsgASkDECJBUA0BIEFCA4NCAFINASBBpyIBIAEoAgAiAUEBajYCACABQX9MDRMMAQsgAkHwAGogAUEIahDTCCACKAKEASEoIAIoAoABIR4gAikDeCFBIAIoAnQhKiACKAJwISsLIAogBzoAQSAKIAg6AEAgCiAjOgA8IAogAzYCOCAKIAU2AjQgCiAGNgIwIAogQDcDKCAKIAs2AiQgCiAZNgIgIAogKDYCHCAKIB42AhggCiBBNwMQIAogKjYCDCAKICs2AgggCiA/NwMADAMLQQAtAMDxnQEaIAQoAgwhBSAEKAIIIQtBwAAQhQEiCkUNECAKIAQoAgQQRAwCCyAEKAIgISsgBCgCHCEjIAQoAhghGSAEKAIMIQUgBCgCCCELIAQpAxAiP6chBgJAID9CA4NCAFINACAGIAYoAgAiAUEBajYCACABQX9MDRALID9CIIinIRogBC0AJCEdCwsgEiACLwFAOwAAIBJBAmogAkHAAGpBAmotAAA6AAAgAiAdOgAsIAIgKzYCKCACICM2AiQgAiAZNgIgIAIgBTYCFCACIAs2AhAgAiAKNgIMIAIgFzYCCCACIB42AjwgAiAoNgI4IAIgPzcDMCACIBqtQiCGIAathDcDGAsgBEE4aiEEIBAgCUE4bGoiASACKQMINwMAIAFBMGogAkEIakEwaikDADcDACABQShqIAJBCGpBKGopAwA3AwAgAUEgaiACQQhqQSBqKQMANwMAIAFBGGogAkEIakEYaikDADcDACABQRBqIAJBCGpBEGopAwA3AwAgAUEIaiATKQMANwMAIAlBAWohCSAWQX9qIhYNAAsLIAAgDDYCECAAIA02AgwgACAONgIIIAAgEDYCBCAAIA82AgBBAiED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CUECdGooAgAiDSAVSQ0ACwsgDSAVQZjxgwEQsxEACyAJIBVBmPKDARCzEQALIBIgFUGo8YMBEKMgAAsgEyAJQbjxgwEQjyAACyAJIBVBqPKDARCzEQALIAQgBkGMnYABELMRAAsgDUECaiICIBVJDQAgAiAVQYjygwEQsxEACyAWIAJBAnRqKAIAIQkLAkACQCAJIAEoArQCSw0AAkACQAJAAkACQAJAAkACQAJAIAlFDQAgCSABKAK4AksNAyAVIAlJDQUgFSAJRg0GIBUgCWshByAWIAlBAnRqIgktAAAiAkH/AUYNASACIAJBAnZqIAJBA3FBAEdqQQJqIQIMAgsgAEEANgIADBwLIAEoAihBAmohAgsgAiAHTw0EAkACQCAJIAJBAnRqKAIAIgtBf0wNAAJAIAJBAWoiAiAHTw0AIAkgAkECdGooAgAhAgwCCyACIAdBzOGDARCzEQALIAtB/////wdxIQILIAIgASgCFCIJTw0FIARBAWoiCSABKAIQIAJBAnRqKAIAIgFPDQEgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIANBCGogASgCHCABKAIgIgIoAghBf2pBeHFqQQhqIA4gBiAEIAUgAigCEBETAAJAIAMoAghFDQAgAygCDCICIARNDQYMBwsgAEEANgIADBkLIAAgAjYCDCAAIAk2AgggAEEBNgIAIAAgCSABazYCBAwYCyAJIBVByPKDARCjIAALQQBBAEHs4YMBELMRAAsgAiAHQbzhgwEQsxEACyACIAlBuPKDARCzEQALIARBAWohAgsgAiEEIAIgBUkNAAsLIABBADYCAAwQCyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAJQbjygwEQsxEACyACIAdBvOGDARCzEQALQQBBAEHs4YMBELMRAAsgCSACQcjygwEQoyAACyAAIAMpAgw3AgQgAEEMaiADQQhqQQxqKAIANgIACyAAIAI2AgAMCQsgCSABKAK4AksNACABKAIIIgsgCUkNBSALIAlGDQQgCyAJayEMAkACQCABKAIEIAlBAnRqIg0tAAAiC0H/AUYNACALIAtBAnZqIAtBA3FBAEdqQQJqIQsMAQsgASgCKEECaiELCyALIAxPDQMCQAJAIA0gC0ECdGooAgAiFUF/TA0AAkAgC0EBaiILIAxPDQAgDSALQQJ0aigCACEQDAILIAsgDEHM4YMBELMRAAsgFUH/////B3EhEAsgECABKAIUIgtPDQIgBCABKAIQIBBBAnRqKAIAIgtJDQEgBCALayERQQEhCAsgA0EIaiAHIAEoAiAiCygCCEF/akF4cWpBCGogAigCCCIPIAIoAgwiDiAEIAUgCygCEBETAAJAAkACQAJAIAMoAggiAg4DAgEAAgsgAUEsaiEKIAMoAgwhAgwCCyAAIAMpAgw3AgQgAEEMaiADQQhqQQxqKAIANgIACyAAIAI2AgAMCAsCQAJAAkACQANAAkACQAJAAkAgAiISIAVPDQACQAJAAkACQCASIA5PDQACQCAJIAEoAggiFUkNACAJIQ0MEwsgCiAPIBJqLQAAai0AACICQQJqIQYgASgCBCEWIAkhDQJAAkACQAJAA0ACQAJAAkACQCAWIA1BAnRqKAIAIglB/wFxQYJ+ag4CAgABCyAGIA1qIgkgFU8NBCAWIAlBAnRqKAIAIglBAUYNAgwLCyAVIA1BAmoiE0kNBCAJQQJ2QT9xIAlBA3FBAEdqIhQgFSATayIJSw0FIBRBAnQhByAWIBNBAnRqIQtBfyEMAkACQAJAA0AgB0UNBSAMQQFqIQwgAiALKAIAIglB/wFxRg0BIAIgCUEIdkH/AXFGDQIgAiAJQRB2Qf8BcUYNAyALQQRqIQsgB0F8aiEHIAIgCUEYdkcNAAsgFCATaiAMQQJ0akEDaiICIBVJDQwgAiAVQcjxgwEQsxEACyAMQQJ0IBQgE2pqIgIgFUkNCyACIBVB+PGDARCzEQALIBQgE2ogDEECdGpBAWoiAiAVSQ0KIAIgFUHo8YMBELMRAAsgFCATaiAMQQJ0akECaiICIBVJDQkgAiAVQdjxgwEQsxEACyACIAlBCHZB/wFxRg0HCyANQQFqIgkgFU8NBCAWIAlBAnRqKAIAIg0gFU8NFwwACwsgCSAVQZjygwEQsxEACyATIBVBqPGDARCjIAALIBQgCUG48YMBEI8gAAsgCSAVQajygwEQsxEACyASIA5BjJ2AARCzEQALIA1BAmoiAiAVSQ0AIAIgFUGI8oMBELMRAAsgFiACQQJ0aigCACEJCyAJIAEoArQCSw0DIAlFDQACQCAJIAEoArgCSw0AIBUgCUkNBiAVIAlGDQcgFSAJayEHAkACQCAWIAlBAnRqIgstAAAiAkH/AUYNACACIAJBAnZqIAJBA3FBAEdqQQJqIQIMAQsgASgCKEECaiECCyACIAdPDQgCQAJAIAsgAkECdGooAgAiDEF/TA0AAkAgAkEBaiICIAdPDQAgCyACQQJ0aigCACEQDAILIAIgB0HM4YMBELMRAAsgDEH/////B3EhEAsgECABKAIUIgJPDQkgEkEBaiIEIAEoAhAgEEECdGooAgAiAk8NAyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgA0EIaiABKAIcIAEoAiAiAigCCEF/akF4cWpBCGogDyAOIBIgBSACKAIQERMAIAMoAghFDQEgAygCDCICIBJNDQMMBAsgACAQNgIMIAAgBDYCCCAAIBE2AgQgACAINgIADA8LIABBADYCAAwOCyAEIAJrIRFBASEIIAQhAgwBCyASQQFqIQIMAAsLIAkgFUHI8oMBEKMgAAtBAEEAQezhgwEQsxEACyACIAdBvOGDARCzEQALIBAgAkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIBAgC0G48oMBELMRAAsgCyAMQbzhgwEQsxEAC0EAQQBB7OGDARCzEQALIAkgC0HI8oMBEKMgAAsgDSAVQZjxgwEQsxEACyAAIA42AgwgACAQNgIIIAAgDzYCBCAAIAo2AgALIANBIGokAAu1PwMPfwN+AnwjAEGwA2siAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAEFwag4UAAgBCAIICAgICAQHBggICAgICAUICyADQcQAakECaiACQRNqLQAAOgAAIAMgAi8AETsBRCACKAIMIQQgAigCCCEFIAIoAgQhBgJAAkACQCACLQAQIgdBA0sNACAHQQJHDQELQQAtAMDxnQEaQcAAEIUBIghFDRQgCCAHOgAQIAggBDYCDCAIIAU2AgggCCAGNgIEIAhBEDYCACAIIAMvAUQ7ABEgACAINgIEIABBAjYCACAIQRNqIANBxABqQQJqLQAAOgAADAELIANB8ABqIAEgBhBXAkAgAygCcEEBRw0AIAMrA3ghFQJAAkACQAJAIAcOBAEDAAIAC0Gyo5sBQShB5PCaARDdFwALIBWaIRUMAQsgFRCIFSEVCyAAQQE2AgAgACAVOQMIIANB8ABqEM0TDAELIANB6AJqIANB8ABqEK0EQQAtAMDxnQEaQcAAEIUBIghFDRMgCCADKQPoAjcDACAIQThqIANB6AJqQThqKQMANwMAIAhBMGogA0HoAmpBMGopAwA3AwAgCEEoaiADQegCakEoaikDADcDACAIQSBqIANB6AJqQSBqKQMANwMAIAhBGGogA0HoAmpBGGopAwA3AwAgCEEQaiADQegCakEQaikDADcDACAIQQhqIANB6AJqQQhqKQMANwMAQQAtAMDxnQEaQcAAEIUBIgFFDRMgASAHOgAQIAEgBDYCDCABIAU2AgggASAINgIEIAFBEDYCACAAIAE2AgQgAEECNgIACyACKAIAQXBqIghBE0sNF0EBIAh0QZWoIHENGSAIQQtGDRYMFwsgAigCECEJIAIoAgwhCiACLQAUIQYgAigCCCEEIAIoAgQhBRC1HSEIIANB6AJqIAUQRCAIQThqIANB6AJqQThqIgspAwA3AwAgCEEwaiADQegCakEwaiIMKQMANwMAIAhBKGogA0HoAmpBKGoiDSkDADcDACAIQSBqIANB6AJqQSBqIg4pAwA3AwAgCEEYaiADQegCakEYaiIPKQMANwMAIAhBEGogA0HoAmpBEGoiECkDADcDACAIQQhqIANB6AJqQQhqIhEpAwA3AwAgCCADKQPoAjcDABC1HSEHIANB6AJqIAQQRCAHQThqIAspAwA3AwAgB0EwaiAMKQMANwMAIAdBKGogDSkDADcDACAHQSBqIA4pAwA3AwAgB0EYaiAPKQMANwMAIAdBEGogECkDADcDACAHQQhqIBEpAwA3AwAgByADKQPoAjcDAAJAIAZBeGpBC0kNACAGQRdGDQBBAC0AwPGdARpBwAAQhQEiAUUNEiABIAY6ABQgASAJNgIQIAEgCjYCDCABIAc2AgggASAINgIEIAFBEjYCACAAIAE2AgQgAEECNgIAIAUgBBDzHAwVCyADQYABaiABIAUQVyADQYABakEQaiILIAEgBBBXIAMgBjoAoAEgAygCkAEhBUEBIQwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCgAEiBA4CAAEoCyAFDgIBAiYLIAUOAgIDJQsgBkELRg0SQQAhBQwkCwJAIAZBC0YNAEEBIQUMJAsgAyADKQOIATcDgAIgA0HYAmogAysDmAEQgw0gA0ECNgLsAiADQfTwmgE2AugCIANCAjcC9AIgA0G9Aq1CIIYgA0HYAmqthDcDuAIgA0G4Aq1CIIYgA0GAAmqthDcDsAIgAyADQbACajYC8AIgA0HoAWogA0HoAmoQgg1BACEBIANB6AFqEOocIRIgAEEANgIAIAAgEjcDCCADKALYAiADKALcAhCOICADKQOAAhDCGQwTCyAGQQtGDQFBACEFDCILIAMrA5gBIRUgAysDiAEhFiAGQXhqDhACAwQFBgcICQoLDAEBAQENAQsgAysDiAEhFSADIAMpA5gBNwOAAiADQdgCaiAVEIMNIANBAjYC7AIgA0H08JoBNgLoAiADQgI3AvQCIANBuAKtQiCGIANBgAJqrYQ3A7gCIANBvQKtQiCGIANB2AJqrYQ3A7ACIAMgA0GwAmo2AvACIANB6AFqIANB6AJqEIINIANB6AFqEOocIRIgAEEANgIAIAAgEjcDCCADKALYAiADKALcAhCOICADKQOAAhDCGQwPC0Gyo5sBQShBhPGaARDdFwALIBYgFRC1DiEVDAsLIBYgFRC2DiEVDAoLIBYgFRC3DiEVDAkLIBYgFaAhFQwICyAWIBWhIRUMBwsgFiAVoiEVDAYLIBYgFaMhFQwFCyAWIBUQ2AYhFQwECyAWIBUQ8Q4hFQwDCyAWIBUQ8g4hFQwCCyAWIBUQ8w4hFQwBCyAWIBUQ+RkhFQsgAEEBNgIAIAAgFTkDCEEAIQEMAgsgAyADKQOIATcDgAIgAyADKQOYATcD2AIgA0ECNgLsAiADQfTwmgE2AugCIANCAjcC9AIgA0G4Aq1CIIYiEiADQdgCaq2ENwO4AiADIBIgA0GAAmqthDcDsAIgAyADQbACajYC8AIgA0HoAWogA0HoAmoQgg0gA0HoAWoQ6hwhEiAAQQA2AgAgACASNwMIIAMpA9gCEMIZIAMpA4ACEMIZC0EBIQELIAgQ2QEgCEHAAEEIEJ4SIAcQ2QEgB0HAAEEIEJ4SIAQNAQwOCyADQcgAakEgaiACQShqKQMANwMAIANByABqQRhqIAJBIGopAwA3AwAgA0HIAGpBEGogAkEYaikDADcDACADQcgAakEIaiACQRBqKQMANwMAIAMgAikDCCISNwNIAkAgEqciBkEBRw0AIANB6AJqQSRqIAJBCGoiCEEgaikCADcCACADQegCakEcaiAIQRhqKQIANwIAIANB6AJqQRRqIAhBEGopAgA3AgAgA0HoAmpBDGogCEEIaikCADcCAEEALQDA8Z0BGiADIAgpAgA3AuwCQcAAEIUBIghFDREgCEEUNgIAIAggAykC6AI3AgQgCEEMaiADQfACaikCADcCACAIQRRqIANB+AJqKQIANwIAIAhBHGogA0GAA2opAgA3AgAgCEEkaiADQYgDaikCADcCACAIQSxqIANBkANqKAIANgIAIABBAjYCACAAIAg2AgQMDQsgASgCBCEQIAMoAmQhCyADKAJgIQwgAygCaCEEELUdIQEgA0HoAmogBBBEIAFBOGogA0HoAmpBOGoiBSkDADcDACABQTBqIANB6AJqQTBqIg4pAwA3AwAgAUEoaiADQegCakEoaikDADcDACABQSBqIANB6AJqQSBqKQMANwMAIAFBGGogA0HoAmpBGGopAwA3AwAgAUEQaiADQegCakEQaikDADcDACABQQhqIANB6AJqQQhqKQMANwMAIAEgAykD6AI3AwACQAJAIAYNACADKAJUIQcgAygCUCENIAMoAlwhCCADKAJYIQ4CQCADKQNQIhJCA4NCAFINACASpyIFIAUoAgAiBUEBajYCACAFQX9MDRMLIAMgBzYC6AIgA0GAAWohBQwBCyADKAJUIQggAygCUCENIAMoAkwhDxC1HSEHIANB6AJqIA8QRCAHQThqIAUpAwA3AwAgB0EwaiAOKQMANwMAIAdBKGogA0HoAmpBKGopAwA3AwAgB0EgaiADQegCakEgaikDADcDACAHQRhqIANB6AJqQRhqKQMANwMAIAdBEGogA0HoAmpBEGopAwA3AwAgB0EIaiADQegCakEIaikDADcDACAHIAMpA+gCNwMAIANB6AJqIQULIAUgCDYCAEEALQDA8Z0BGiADKAKAASEFIAMoAugCIQ9BwAAQhQEiCEUNECAIIAE2AiggCCALNgIkIAggDDYCICAIIAU2AhwgCCAONgIYIAggDzYCFCAIIA02AhAgCCAHNgIMIAggBjYCCCAIQRQ2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IQggBy0AGCILQQJGDQAgA0GwAmpBEGogB0EQaikDACISNwMAIANBsAJqQQhqIAdBCGopAwAiEzcDACADIAcpAwAiFDcDsAIgAyAHKAAZNgKoAiADIAdBHGooAAA2AKsCIANB6AJqQRBqIBI3AwAgA0HoAmpBCGogEzcDACADQegCakEcaiADKACrAjYAACADIBQ3A+gCIAMgCzoAgAMgAyADKAKoAjYAgQMgA0EANgLwASADQoCAgIAQNwLoASADQcDlmgE2AoQBIANCoICAgA43AogBIAMgA0HoAWo2AoABAkACQAJAIANB6AJqIANBgAFqEKEaDQAgAygC6AEhCyADKQLsASESIANB6AJqEK0QIAtBgICAgHhGDQMgAyASNwLYASADIAs2AtQBIANBADYCkAMgA0IANwKIAyADIAUgDkECdGo2AoQDIAMgDTYCgAMgAyAFNgL8AiADIAU2AvgCIAMgBDYC9AIgAyAMNgLwAiADIAg2AuwCIAMgBzYC6AIgA0HoAmpBEGohECAGQQFGDQIgA0GAAWpBGWoiBUEDaiELA0AgAyAIQSBqNgLsAgJAAkACQAJAAkACQAJAIAgtABgiB0ECRg0AIAUgCCgAGTYAACADQYABakEQaiIMIAhBEGoiDSkDADcDACADQYABakEIaiIOIAhBCGoiDykDADcDACALIAhBHGooAAA2AAAgAyAHOgCYASADIAgpAwA3A4ABAkAgAygC/AIiBiADKAKEA0cNACAIQSBqIQggA0GAAWoQrRAMCgsgA0HoAWpBCGogDykDACISNwMAIANB6AFqQRBqIA0pAwAiEzcDACADIAZBBGo2AvwCIAMgCCkDACIUNwPoASADIAhBGWoiDSgAADYC4AEgAyANQQNqKAAANgDjASAGKAIAIQYgDCATNwMAIA4gEjcDACAFIAMoAuABNgAAIAsgAygA4wE2AAAgAyAUNwOAASADIAc6AJgBIANBgAJqIAEgBhBXIAMoAoACDgICAwELIAhBIGohCAwICyAAIAMpA6gBNwMAIABBCGogA0GoAWpBCGopAwA3AwAgA0GAAmoQzRMgA0GAAWoQrRACQCAEIAhBIGoiCEYNACAEIAhrQQV2IQADQCAIEK0QIAhBIGohCCAAQX9qIgANAAsLIAMoAvACIAMoAugCEL8gIBAQphQgAygC1AEgAygC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IANBgAFqEK0EQQAtAMDxnQEaQcAAEIUBIgFFDQEgASADKQPoAjcDACABQThqIANB6AJqQThqKQMANwMAIAFBMGogA0HoAmpBMGopAwA3AwAgAUEoaiADQegCakEoaikDADcDACABQSBqIANB6AJqQSBqKQMANwMAIAFBGGogA0HoAmpBGGopAwA3AwAgAUEQaiADQegCakEQaikDADcDACABQQhqIANB6AJqQQhqKQMANwMAIAgQ2QEgCEHAAEEIEJ4SIARBAUshDCABIQgLAkACQCAFQQFNDQAgByEEDAELIANB6AJqIAsQrQRBAC0AwPGdARpBwAAQhQEiBEUNASAEIAMpA+gCNwMAIARBOGogA0HoAmpBOGopAwA3AwAgBEEwaiADQegCakEwaikDADcDACAEQShqIANB6AJqQShqKQMANwMAIARBIGogA0HoAmpBIGopAwA3AwAgBEEYaiADQegCakEYaikDADcDACAEQRBqIANB6AJqQRBqKQMANwMAIARBCGogA0HoAmpBCGopAwA3AwAgBxDZASAHQcAAQQgQnhILQQAtAMDxnQEaQcAAEIUBIgFFDQAgASAGOgAUIAEgCTYCECABIAo2AgwgASAENgIIIAEgCDYCBCABQRI2AgAgACABNgIEIABBAjYCACAFQQFNDQEgCxDNEwwBCwALIANBgAFqIQsgDEUNAQsgCxDNEwsgAigCAEFwaiIIQRNLDQFBASAIdEGVqCBxDQMgCEELRw0BCyACKAIIDgQCAQECAQsgAhDZAQwBCyACQQhqEOkICyACQcAAQQgQnhILIANBsANqJAALhUACKn8HfiMAQeAFayICJAAgASABKAJ4IgNB//97cTYCeCABKALAASEEIAEQhw4gAkHYAGpBCEEEQQxBkMKbARDYFCACQQA2AmggAiACKQNYNwJgQYoFrUIghiIsQYijmwGthCEtICxBgdqYAa2EIS4gAkGwBGpBBGohBSACQbAEakEEciEGIAJBsARqQQxqIQcgAkGQA2pBBGohCCACQZACakEQaiEJIAJBkAVqQSBqIQogAkGwBGpBCGohCyACQZADakEMaiEMIAJBkANqQQhqIQ0gAkGQBWpBDGohDiACQZADakHAAGohDyACQbAEakHIAGohECACQbAEakEgaiERIAJBwAVqIRIgAkGQBWpBBHIhEyAC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KEUNACARIAJB2ANqQSj8CgAACyACQbAEakEYaiACQcABakEYaikDADcDACACQbAEakEQaiACQcABakEQaikDADcDACALICgpAwA3AwAgECAUKQIANwIAIBBBCGogFEEIaikCADcCACAQQRBqIBRBEGopAgA3AgAgAiACKQPAATcDsARBCEHwABDrHyIZRQ0NAkBB4ABFDQAgGSACQbAEakHgAPwKAAALIBkgFzYCaCAZIB82AmQgGSAcNgJgIAwQzB0gAigCzAMQ7h8gDxCpH0EAIRcgAkEANgJwIAIgGTYCbAwDCyApEO4fCyACQbAEahDMHSABICQ2AnggAiABNgLgASACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgAkH0AGo2AugBIAIgAkG4AWo2AuQBIAIgFzYCcCACQcABahCRF0EBIRkMBAsgDCACKQKwBDcCACAMQQhqIAsoAgA2AgAgDSACQYAEakEIaigCADYCACACIAIpAoAENwOQAyABKAK8ASEfIAItANcFISkgAi0A1gUhKCACKALQBSEqQQRByAAQ6x8iGUUNCiAZIAIpA5ADNwIAIBkgHDYCHCAZICY2AhggGSACKQPAATcCICAZICg6AEUgGSApOgBEIBkgFzYCQCAZICU2AjwgGUEANgI4IBkgHzYCNCAZICo2AjAgGUEQaiACQZADakEQaikDADcCACAZQQhqIh8gDSkDADcCACAZQShqICcpAwA3AgAgASAkNgJ4IBkpAgAhMgJAQcAARSIXDQAgAkGQAmogH0HAAPwKAAALIBlByABBBBCeEiACIDE3A9gBIAIgIDYC1AEgAiAdNgLQASACICI2AswBIAIgHjYCyAEgAiAhNgLEASACIBs2AsABIAIgMjcCsAQCQCAXDQAgCyACQZACakHAAPwKAAALIAIoAvAEIRcCQCABLQCBAUEgcUUNACABLQCCAUH/AXENACACKAK8ASEZIAIoArgBIR8gAkGBgYCAeDYCkAMgASAfIBkgAkGQA2oQrxoLIAJBkAVqQQhqICcpAwA3AwAgAkGQBWpBEGogAkHAAWpBEGopAwA3AwAgAkGQBWpBGGogAkHAAWpBGGopAwA3AwAgCiAJKQIANwIAIApBCGogCUEIaikCADcCACAK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IANBuANqIANB+ARqEJwcIAMoArwDIQ0CQCADKAK4AyIOQZWAgIB4Rw0AIANBuAFqEOYRQQEhDCANIRUMCgsgA0HwAWpBCGogA0G4AWpBCGopAwA3AwAgAyADKQO4ATcD8AEgAyADKQPAAzcDiAIgAyANNgKEAiADIA42AoACIANBhAFqIANB8AFqELIRDAELCyADQbgBahCkHiADQfABaiADKAKIASADKAKMARCxASADLQDwAQ0GIAMvAfQBIANB8AFqQQZqLQAAQRB0ciEVIAMvAfIBIRYgAy0A8QEhF0EAIQwMBwsgA0HwAGogAygC2AYQuxoCQCADKAJwQQFxRQ0AIAMgAygCdCINNgLABiADIA0QDzYCyAMgA0EANgLEAyADQQA2AswDIANBADYCuAMgAyADQcAGajYCwAMgA0EANgKMASADQoCAgICAATcChAEDQCADQfgEaiADQbgDahDLEUGVgICAeCENAkAgAygC+ARBAUcNACADKAL8BCENIAMoAoAFIQ4gAygCuAMgAygCvAMQwh8gAyAONgK8AyADQQE2ArgDIANB8AFqIA0QhBAgAygC9AEhFSADKALwASINQZWAgIB4Rg0GIAMpA/gBISMLIAMgIzcD0AEgAyAVNgLMASADIA02AsgBAkAgDUGVgICAeEYNACADKAK4AyENIANBADYCuAMgDUUNBCADQfgEaiADKAK8AxDRASADKAL8BCENAkAgAygC+AQiDkGVgICAeEcNACADQcgBahDmEUEBIQwgDSEVDAgLIANB8AFqQQhqIANByAFqQQhqKQMANwMAIAMgAykDyAE3A/ABIAMgAykDgAU3A4gCIAMgDTYChAIgAyAONgKAAiADQYQBaiADQfABahCyEQwBCwsgA0HIAWoQpB4gA0HwAWogAygCiAEgAygCjAEQsQEgAy0A8AENAyADLwH0ASADQfABakEGai0AAEEQdHIhFSADLwHyASEWIAMtAPEBIRdBACEMDAULIANB2AZqIANBwAZqQeiEgAEQ2QYhFQwHCyAMEJIfQQIhCgwKC0HxjYABQSxBhI+AARDyEgALIAMoAvQBIRULQQEhDAsgA0GEAWoQ2hcgAygCuAMgAygCvAMQwh8gAygCwAYQkh8MAgsgAygC9AEhFUEBIQwLIANBhAFqENoXIANB+ARqEKUeCyADKALYBhCS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4OydAUEALQDA8Z0BGkGACBCFASITRQ0DQQBBAzoA4OydAUEAIBM2AtjsnQELIANBuANqEIgJIANBpARqIhMQpg0gA0KBgICAwAA3AuwEIANBwAZqQQFBABC1EyADQdgGakEBQQAQtRMgA0HEBWpBAUEAELUTIANB0AVqEIgJIAMpAuAFISMgAykCgAYhJCADKQKIBiElIAMpApAGISYgA0H4BGoQpg0gA0G4A2oQ5B0gA0GIBGogA0HABmpBCGooAgA2AgAgA0GUBGogA0HYBmpBCGooAgA2AgAgA0GgBGogA0HEBWpBCGooAgA2AgAgAyAmNwL4AyADICU3AvADIAMgJDcC6AMgA0KggICAgAQ3AuADIANCoICAgIAENwLYAyADQqCAgICABDcC0AMgAyAjNwLIAyADQqCAgICABDcCwAMgA0KggICAgAQ3ArgDIAMgAykCwAY3AoAEIAMgAykC2AY3AowEIAMgAykCxAU3ApgEAkBByABFDQAgEyADQfgEakHIAPwKAAALAkBBvAFFDQAgA0HwAWogA0G4A2pBvAH8CgAACyADIA42ArADIAMgEjYCrAMgA0HQBWoQhxwgEiASKAIAIg5BAWo2AgAgDkF/TA0CIAMpAvABISMgAykC+AEhJCADKQKAAiElIAMpAogCISYgAykCkAIhJyADKQKYAiEoIAMpAqACISkgAykCqAIhKiADKQKwAiErIANBgARqIAMoArwCIAMoAsACEPMSIANBjARqIAMoAsgCIAMoAswCEPMSIANBmARqIAMoAtQCIAMoAtgCEPMSIAMgKzcC+AMgAyAqNwLwAyADICk3AugDIAMgKDcC4AMgAyAnNwLYAyADICY3AtADIAMgJTcCyAMgAyAkNwLAAyADICM3ArgDIAMoAuACIQ4gA0HQBWogAygC5AIiE0EBQQoQ2QwgAygC1AUhHSADKALQBUEBRg0EIAMoAtgFIR4CQCATQQpsIhFFDQAgHiAOIBH8CgAACwJAQewARQ0AIANB0AVqIANBuANqQewA/AoAAAsgAygCsAMiESARKAIAIg5BAWo2AgAgDkF/TA0CIAMoAqgDIR8gAygCpAMhIAJAQewARSIhDQAgA0G4A2ogA0HQBWpB7AD8CgAACyADQZoDaiEZIANBkANqIRogA0GGA2ohDyADQfwCaiEXIANB8gJqIRgg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BEGsAWogASgCACIBIANBBGooAgAgA0EIaigCABCqByAEEN8SNgLEASAEQQA2AqwBIAEgBEGsAWoQww4MIwsgBEHYAGpBEGogA0EQaikCADcDACAEQdgAakEIaiADQQhqKQIANwMAIAQgAykCADcDWCABKAIAIgMsABYhBSADLQAVIQYgAy0AFCECIAMtABIhByADLQAXRQ0fQQEhCCAFQQBIDSAgAkH/AXFBAkYgAnJBAXENHwwgCyABKAIAIgEtABQiAkECRiACciEFIAEtABUhByABLQARIQZBASECAkACQAJAAkACQAJAAkACQCADLQAYDgwOAA8BAgMEBQQFBgcOC0EgQQggB0EBcRtBAiAGQQFxGyECDA4LQQIhAgwNC0GAAkHAACAFQQFxGyECDAwLQYAEQYABIAVBAXEbIQIMCwtBgCBBgAggBUEBcRshAgwKC0GAwABBgBAgBUEBcRshAgwJC0GAgARBgIABIAVBAXEbIQIMCAtBgIAIQYCAAiAFQQFxGyECDAcLIAEoAgAiBS0AFCICQQJGDQkgAkEBcQ0JIARBrAFqIAEgAxD5BiAEQYgDaiIDIARBrAFqQQxqKQIANwMAIAQgBCkCsAE3A4ADIAQoAqwBIgFBgICAgHhGDQggACAEKQLAATcCFCAAQSRqIARBrAFqQSRqKAIANgIAIABBHGogBEGsAWpBHGopAgA3AgAgAEEMaiADKQMANwIAIAAgBCkDgAM3AgQgACABNgIADCELIAEoAgAiAi0AFCIFQQJGDQkgBUEBcQ0JIARBrAFqIAIQqA8gBCgCrAFBEEYNEiAEQYADakEYaiAEQawBakEYaigCADYCACAEQYADakEQaiAEQawBakEQaikCADcDACAEQYADakEIaiAEQawBakEIaikCADcDACAEIAQpAqwBNwOAAyAEQegCaiAEQYADahD3ECAEQawBaiABIANB2ABqIAMtAHAgBEHoAmoQ/Q8gBCgCrAEiA0GAgICAeEYNFAJAQSRFDQAgAEEEaiAEQawBakEEakEk/AoAAAsgACADNgIAIAQoAugCIAQoAuwCQQFBAhDAEQwgCyAEQawBaiABKAIAIgIQqA8gBCgCrAFBEEYNCyAEQYADakEYaiIBIARBrAFqQRhqIgUoAgA2AgAgBEGAA2pBEGogBEGsAWpBEGopAgA3AwAgBEGA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IAALIARBATYCsAEgBEG0sYUBNgKsASAEQgE3ArgBIARB+AA2AuwCIAQgBEHoAmo2ArQBIAQgBEGAA2o2AugCIARBrAFqQbyxhQEQhRsAC0HEsoUBEJsgAAtB1LKFARCbIAALIARBjANqIARB6AJqQQhqKQIANwIAIAQgBCkC6AI3AoQDIARBATYCgAMgBEGsAWogBEGAA2oQsgggAiAEQawBahDDDgwKC0Gks4UBEJsgAAsgBEEBNgKwASAEQfyxhQE2AqwBIARCATcCuAEgBEH4ADYC7AIgBCAEQegCajYCtAEgBCAEQYADajYC6AIgBEGsAWpBhLKFARCFGwALAkACQCAWp0EBcUUNACABKAIAIgMoAgANASAWQgiIpyECIANBfzYCAAJAAkACQCADKAIMIgFFDQAgAygCCCABQRxsaiIBQWRqIgVFDQAgBSgCAEEIRg0BC0EALQDA8Z0BGkEBEIUBIgFFDQYgASACOgAAAkAgAygCDCICIAMoAgRHDQAgA0EEakHktoUBEP4VCyADIAJBAWo2AgwgAygCCCACQRxsaiICQQE2AgwgAiABNgIIIAJCiICAgBA3AgAMAQsCQCABQXBqIgcoAgAiBSABQWhqIgYoAgBHDQAgBkHUtoUBEMENCyABQWxqKAIAIAVqIAI6AAAgByAFQQFqNgIACyADIAMoAgBBAWo2AgAMCQsgFkIgiKchAgJAAkAgASgCACIDLQAQQQFxDQAgBEEINgKwAQwBCwJAIAMtABQiAUECRg0AIAFBAXENAAJAIBZCgICAgIAQVA0AIARBCDYCsAEMAgsCQCACQd8AcUG/f2pBGUsNAEEALQDA8Z0BGkECEIUBIgFFDQYgASACOgABIAEgAjoAACAEQQE2ArQBIAQgATYCsAEgBEEBNgKsASAEQegCaiAEQawBahDcEyAEQegCahC8ByAEQYwDaiAEQfACaikCADcCACAEIAQpAugCNwKEAyAEQQE2AoADIARBsAFqIARBgANqELIIDAILIARBCDYCsAEMAQsCQCACIAIQtxANACAEQQg2ArABDAELQQAtAMDxnQEaQQgQhQEiAUUNBCABIAI2AgQgASACNgIAIARBATYCtAEgBCABNgKwASAEQQE2AqwBIARB6AJqIARBrAFqEN0TIARB6AJqENsEIARBjANqIARB6AJqQQhqKQIANwIAIAQgBCkC6AI3AoQDIARBADYCgAMgBEGwAWogBEGAA2oQsggLIARBIGpBCGoiASAEQawBakEQaikCADcDACAEQSBqQRBqIgUgBEHEAWopAgA3AwAgBCAEKQK0ATcDIAJAIAQoArABIgdBCEYNACAEQcABaiAFKQMANwIAIARBuAFqIAEpAwA3AgAgBCAEKQMgNwKwASAEIAc2AqwBIAMgBEGsAWoQww4MCQsgAyACEJgGDAgLQcS2hQEQ+BQACwtBAC0AwPGdARogAy0AQCEIIAItABMhCUEcEIUBIgMNAQsACyADIAQpAtQBNwIAIANBGGogBEHUAWpBGGooAgAiBjYCACADQRBqIARB1AFqQRBqKQIANwIAIANBCGogBEHUAWpBCGopAgA3AgAgBCABNgKMAyAEIAU2AoQDIAQgBzYCgAMgBCADNgKIAyAEIAggCUEBcXM6AJADAkACQCAGKAIIQQFHDQAgBigCDA0AQQEhBiAEQQE2AoADIAQgAUEARyIBNgKMAyAEIAVBAEcgB0EBc3IiBTYChAMMAQsgByEGCwJAAkACQAJAAkAgAQ4CAAECCyAGRQ0BIAUNARDfEiEBIAMQ9R1BACEFDAILIAZFDQAgBUEBRw0AIARB8AJqIARB4AFqKQIANwMAIARB+AJqIARB6AFqKAIANgIAIAQgBCkC2AE3A+gCIAQoAuwBIQEgBCgC1AEhBQwBCyAEQYADahDzByEBIARB6AJqQRBqIARBgANqQRBqKAIANgIAIARB6AJqQQhqIARBgANqQQhqKQIANwMAIAQgBCkCgAM3A+gCQQQhBQwBCyADQRxBBBCeEgsgBEG4AWogBEHwAmopAwA3AgAgBEHAAWogBEH4AmooAgA2AgAgBCAFNgKsASAEIAQpA+gCNwKwASAEIAE2AsQBIAIgBEGsAWoQww4MAwsgAkH/AXFBAkYgAnIhAgJAAkACQAJAAkACQCAHQQFxDQACQCACQQFxDQAgBkEBcQ0EIARB1AJqIAVBCHQgBUH/AXFyEO0PIARB1AJqEI4FIARB9AJqIARB1AJqQQhqKQIANwIAIAQgBCkC1AI3AuwCIARBATYC6AIgBEGAA2ogBEHoAmoQsggMBgsgBkEBcQ0CIAVBf0oNAUECIQgMBgsgAkEBcQ0DIARB7AJqQYD+AxDtDyAEQQE2AugCIARBgANqIARB6AJqELIIDAQLIARB1AJqIAWtQv8BgyIWQiCGIBaEEO4PIARB1AJqEPAEIARB9AJqIARB3AJqKQIANwIAIAQgBCkC1AI3AuwCIARBADYC6AIgBEGAA2ogBEHoAmoQsggMAwsgBEKOgICA8P+/CDcC+AIgBEKLgICAwAE3AvACIARCgICAgJABNwLoAiAEQdgCaiAEQegCahCQDCAEQQA2AtQCIARBgANqIARB1AJqELIIDAILIARBjv4DOwDYAiAEQYCSrOAANgDUAiAEQewCaiAEQdQCahDcDCAEQQE2AugCIARBgANqIARB6AJqELIIDAELIARB7AJqQoCAgIDw/78IEO4PIARBADYC6AIgBEGAA2ogBEHoAmoQsggLIARByAFqIARBmANqKAIANgIAIARBwAFqIARBkANqKQIANwIAIARBuAFqIARBiANqKQIANwIAIAQgBCkCgAM3ArABDAELIARBrAFqIAEoAgQgASgCCCAEQdgAaiAIEJcPIAQoAqwBIgFBgICAgHhGDQAgBEHQAGogBEGsAWpBHGooAgAiAzYCACAEQcgAaiAEQawBakEUaikCACIWNwMAIARBwABqIARBrAFqQQxqKQIAIhc3AwAgBCAEKQKwASIYNwM4IAQpAswBIRkgAEEcaiADNgIAIABBFGogFjcCACAAQQxqIBc3AgAgACAYNwIEIAAgGTcCICAAIAE2AgAMAgsgBEHQAGogBEHIAWooAgA2AgAgBEHIAGogBEHAAWopAgA3AwAgBEHAAGogBEG4AWopAgA3AwAgBCAEKQKwATcDOCADIARBOGoQww4LIABBgICAgHg2AgALIARBoANqJAALxToBG38jAEGAAWsiBSQAIAJBADYCaCACQQA2AlQgAkEANgI4IAJBADYCJCACQQA2AggCQAJAAkACQAJAAkAgAygCECIGIAMoAhQiB0sNACADKAIMIghBf0YNAyADKAIIIQkgBUE4aiAAIAMoAgAgAygCBBCnEiAFLQA4IgpBAkYNACABQf8BcUECRiABciELIAUoAjwhDCACQdgAaiENIAJBKGohDiAEKAIIIQ8gAy0AGEEBcSEQIAYhEQNAIAsgD0EAR3EhAwJAAkACQCACKAIkRQ0AIBEhEiADRQ0BDAILIAMgCiARIAZLcXINAwsCQCACKAIIIgMgAigCAEcN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CyAAIAE6AAAgAkHQAGokAAvsOAIdfwd+IwBBoAVrIgMkACABIAEoAngiBEH/v39xNgJ4IAEoAsABIQUCQAJAIAFBEhDPCyIGRQ0AIABBgYCAgHg2ApABIAAgBjYCAAwBCyABQcABaiEHAkAgAS0AyAEiBkFbaiIIQRJLDQBBASAIdEGDgBpxRQ0AIANByAJqIAEgASgCwAEQtgQgB0EIaiADQcgCakEIaigCADYCACAHIAMpAsgCNwIAIAEtAMgBIQYLAkAgBkH/AXFBE0cNACABKALAASEIIAEoAsQBIQYgA0HIAmogARDTASABIAY2ArwBIAEgCDYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIAIANBKGogARCPAiABKALAASEJAkACQCABQTwQzwsiCA0AAkAgAS0AyAEiCEFbaiIKQRJLDQBBASAKdEGDgBpxRQ0AIANByAJqIAEgASgCwAEQtgQgB0EIaiADQcgCakEIaigCADYCACAHIAMpAsgCNwIAIAEtAMgBIQgLIANBEzoAmAIgCEH/AXFBE0YNASABKALEASEGIAEoAsABIQkgA0G4AWogCBDeGyADQQE2AswCIANBmO+bATYCyAIgA0IBNwLUAiADQYoFrUIghiADQZgCaq2ENwNoIAMgA0HoAGo2AtACIANB6AFqIANByAJqEI0VIANB/AFqIANBwAFqKAIANgIAIAMgAykCuAE3AvQBIAkgBiADQegBahCFFSEIIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgAEGBgICAeDYCkAEgACAINgIAIANBKGoQsR8MAgsCQAJAIAINACABKALAASEKIAEoAsQBIQggA0HIAmogARDTASABIAg2ArwBIAEgCjYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIADAELIAEQhw4gASgCvAEhCAsgACADKQIoNwIAIABBgICAgHg2ApABIAAgCDYCICAAIAk2AhwgACAGNgIYIAAgBTYCFCAAIAg2AhAgACAFNgIMIABBCGogA0EoakEIaigCADYCAAwBCyABIAEoAngiBkH/v39xNgJ4IANByAJqIAEQjwQgASAGNgJ4IAMoAsgCIQgCQCADLQD0AiIJQQZGDQACQEEoRQ0AIANBKGpBBHIgA0HIAmpBBHJB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0hcMBQsgA0HlAWohBiABKAK8ASEJAkBBLEUNACADQegAaiADQbgBakEs/AoAAAsgA0H8BGpBAmogBkECai0AADoAACADIAYvAAA7AfwEIAghBiADLQDkASIKQQZGDQQgACAJNgIMAkBBLEUNACAAQRBqIANB6ABqQSz8CgAACyAAQT9qIANB/gRqLQAAOgAAIAAgAy8B/AQ7AD0gAUG8AUHAASACG2ooAgAhBgJAQdAARQ0AIABBwABqIANByAJqQdAA/AoAAAsgACAKOgA8IAAgCDYCCCAAIAY2AgQgACAFNgIAIABBmAFqIANBvAJqKAIANgIAIAAgAykCtAI3ApABDA0LIAFBEBDPCyIGRQ0BDAILIAmtQiCGIAqthCEkIAatQiCGIAithCEjQgAhIgwDCwJAIAEtAMgBIgZBW2oiCEESSw0AQQEgCHRBg4AacUUNACADQcgCaiABIAEoAsABELYEIAdBCGogA0HIAmpBCGooAgA2AgAgByADKQLIAjcCACABLQDIASEGCyADQRM6AJgCAkAgBkH/AXFBE0YNACABKALEASEIIAEoAsABIQkgA0G4AWogBhDeGyADQQE2AswCIANBmO+bATYCyAIgA0IBNwLUAiADICAgA0GYAmqthDcDaCADIANB6ABqNgLQAiADQegBaiADQcgCahCNFSADQfwBaiADQcABaigCADYCACADIAMpArgBNwL0ASAJIAggA0HoAWoQhRUhBiABLQDIAUGiAUcNASABEMcRIQggARCHDiABIAgQ5REMAQsCQAJAIAINACABKALAASEIIAEoAsQBIQYgA0HIAmogARDTASABIAY2ArwBIAEgCDYCuAEgByADKQLIAjcCACAHQQhqIANByAJqQQhqKAIANgIADAELIAEQhw4gASgCvAEhBgsgBygCACEIAkBBMEUNACAAQcAAaiADQShqQTD8CgAACyAAQQA2ApgBIABCgICAgIABNwOQASAAQQE6AIgBIAAgCzYCeCAAIAYgCCACGyIGNgJ0IAAgBTYCcCAAQQY6ADwgACAGNgIEIAAgBTYCACAAQYQBaiADQeQAaigCADYCACAAIAMpAlw3AnwMCgsgAEGBgICAeDYCkAEgACAGNgIAIANB3ABqENUdDAcLIABBgYCAgHg2ApABIAAgBjYCACADQbQCahCxHyADQcgCahCI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QRhqIREgBEHgAmpBFGohEiAEQeACakEQaiETIARB4AJqQTRqIRQgBEHgAmpBMGohFSAEQeACakEMaiEWIAGnIRcgBEHgAmpBBHIhGCAEQcgDakEEciEFIARB4AFqQSVqIRkgBEHgAmpBCGohGgNAIAQgDSIDQThqIg02AsQBIAQgAykAJTcD0AEgBCADQSxqKAAANgDXASADKAIAIgZBCkYNAiADLQAkIRsgAygCICEcIAMoAhwhCCADKAIYIR0gAykCECE4IAMoAgwhByADKAIIIQogAygCBCEJIAMpAjAhOiAZIANBJWoiAykAADcAACAZQQdqIANBB2oiHigAADYAACAEIBs6AIQCIAQgHDYCgAIgBCAINgL8ASAEIB02AvgBIAQgODcD8AEgBCAHNgLsASAEIAo2AugBIAQgCTYC5AEgBCA6NwOQAiAEIAY2AuABAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQQFGDQAgBkF6ag4EAQICAwILIAQgAykAADcDmAIgBCAeKAAANgCfAgJAAkAgCkECSQ0AIApBAkcNBSAEQQA2ArACIARBADYCqAIgBCAHKAIANgLAAiAEIAcoAgQiCDYCvAIgBCAINgK4AiAEIAggBygCCCIDQThsIh9qIiA2AsQCAkACQCADRQ0AQQAhBgJAA0AgCCAGaiIDQThqISEgAygCACIJQQdGDQEgA0EoaigCACEiIANBLGooAgAhIyADQTBqKAIAIQogBSADQQRqIiQpAgA3AgAgBUEIaiIdIANBDGopAgA3AgAgBUEQaiIbIANBFGopAgA3AgAgBUEYaiIcIANBHGopAgA3AgAgBUEgaiIeIANBJGooAgA2AgAgBCAJNgLIAwJAIApFDQAgBCAhNgK8AiAYICQpAgA3AgAgGEEIaiIlICRBCGopAgA3AgAgGEEQaiImICRBEGopAgA3AgAgGEEYaiInICRBGGopAgA3AgAgGEEgaiIoICRBIGooAgA2AgAgBCAJNgLgAiAEQfADaiAEQeACahDMBSAEKALwA0EMRg0LIARB4AJqQShqIikgBEHwA2pBKGoiKikDADcDACAEQeACakEgaiIrIARB8ANqQSBqIiwpAwA3AwAgBEHgAmpBGGoiLSAEQfADakEYaiIuKQMANwMAIARB4AJqQRBqIi8gBEHw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NyAdNgIYIDcgODcDECA3QQA2AgggN0EBNgIAQRIhCAwICyAEQeACakEwaiAEQeABakEwaikDADcDACAEQeACakEoaiAEQeABakEoaikDADcDACAEQeACakEgaiAEQeABakEgaikDADcDACAEQeACakEYaiAEQeABakEYaikDADcDACAEQeACakEQaiAEQeABakEQaikDADcDACAEQeACakEIaiAEQeABakEIaikDADcDACAEIAQpA+ABNwPgAkEAKALc8J0BIglFDQUgEiEDIBEhBgJAAkACQAJAAkACQCAEKALgAiIKDgoFAQIBAwMEAwMABQsgESEDIBAhBgJAAkACQAJAAkAgBCgC6AIOEwkAAAEABgYGAQIGAwEBCQICBAYJCyAWIQMgEyEGDAgLIBIhAyARIQYMBwsgECEDIA8hBgwGCyAEKALsAiIDQfwAaiEGIANB+ABqIQMMBQsCQAJAAkACQAJAAkACQCAEKALwAg4IAAECAwQEBQYACyAEKAKQAyIDQShqIQYgA0EkaiEDDAoLIAQoApADIgNBNGohBiADQTBqIQMMCQsgBCgC9AIiA0EQaiEGIANBDGohAwwICyAEKAL0AiIDQRBqIQYgA0EMaiEDDAcLIAQoAvQCIgNBBGohBgwGCyAEKAL0AiIDQRxqIQYgA0EYaiEDDAULIAQoAvQCIgNBzABqIQYgA0HIAGohAwwECyAVIQMgFCEGDAMLIBMhAyASIQYMAgsgGiEDIBYhBgwBCyAEKALkAiIDQSRqIQYgA0EgaiEDCyADKAIAIQcgBigCACEIIARB8ANqIAlBA0G965oBQT8QqQ1BAC0AwPGdARogBCgC9AMhA0EIEIUBIgZFDQ8gBiAINgIEIAYgBzYCACADKAIcIANBIGoiBygCABCeICADQSxqIgkoAgAgA0EwaigCABC+GiADKAIoIAkoAgAQnyAgCUIENwIAIANCATcCJCAHIAY2AgAgA0EBNgIcIARByANqQQhqIARB8ANqQQhqKAIANgIAIAQgBCkC8AM3A8gDIARByANqELcCIARByANqEOAMIApBCUYNBiAEQeABahCmBQwNCwJAIAQoArwBIgYgBCgCtAFHDQAgBEG0AWpB0OqaARCDFwsgBCgCuAEgBkEwbGoiAyAbOgAcIAMgHDYCGCADIAg2AhQgAyAdNgIQIAMgODcD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ADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACADIAIpAwA3AwAMCQsgACgCCEEDRw0HIAAoAgwiAygCAEEaRw0BIAJBwABqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCQEEyRg0HIAMQyQEgA0E4aiACQcAAakE4aikDADcDACADQTBqIAJBwABqQTBqKQMANwMAIANBKGogAkHAAGpBKGopAwA3AwAgA0EgaiACQcAAakEgaikDADcDACADQRhqIAJBwABqQRhqKQMANwMAIANBEGogAkHAAGpBEGopAwA3AwAgBCACQcAAakEIaikDADcDACADIAIpA0A3AwAMBwsCQCAAKAIgIgVBCGooAgAiA0UNACAFQQRqKAIAIgYgA0EGdGohAANAAkAgBkE4aigCACIDRQ0AIAZBNGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHAB2ogASgCACABKAIEIANBCGoiCBC1DCACKALAB0EyRg0BIAMQyQEgA0E4aiACQcAHakE4aikDADcDACADQTBqIAJBwAdqQTBqKQMANwMAIANBKGogAkHAB2pBKGopAwA3AwAgA0EgaiACQcAHakEgaikDADcDACADQRhqIAJBwAdqQRhqKQMANwMAIANBEGogAkHAB2pBEGopAwA3AwAgCCACQcAHakEIaikDADcDACADIAIpA8AHNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAGIAEQgwQgBkHAAGoiAyEGIAMgAEcNAAsLAkAgBUEUaigCACIDRQ0AIAVBEGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIANBCGoiCBC1DCACKAKAB0EyRg0BIAMQyQEgA0E4aiACQYAHakE4aikDADcDACADQTBqIAJBgAdqQTBqKQMANwMAIANBKGogAkGAB2pBKGopAwA3AwAgA0EgaiACQYAHakEgaikDADcDACADQRhqIAJBgAdqQRhqKQMANwMAIANBEGogAkGAB2pBEGopAwA3AwAgCCACQYAHakEIaikDADcDACADIAIpA4AHNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAFKAIYQYCAgIB4Rg0IIAVBIGooAgAiBEUNCCAFQRxqKAIAIQMgBEEwbCEEA0AgAyABEG8gA0EwaiEDIARBUGoiBA0ADAkLCyADIAEQRgwFCyADIAEQRgwFCwJAIAAoAggiA0EFRg0AIANBA0cNAAJAIAAoAgwiAygCAEEaRw0AIAJBwARqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCwARBMkYNASADEMkBIANBOGogAkHABGpBOGopAwA3AwAgA0EwaiACQcAEakEwaikDADcDACADQShqIAJBwARqQShqKQMANwMAIANBIGogAkHABGpBIGopAwA3AwAgA0EYaiACQcAEakEYaikDADcDACADQRBqIAJBwARqQRBqKQMANwMAIAQgAkHABGpBCGopAwA3AwAgAyACKQPABDcDAAwBCyADIAEQRgsCQCAAKAI8IgNFDQACQCADKAIAQRpHDQAgAkGABGogASgCACABKAIEIANBCGoiBBC1DCACKAKABEEyRg0BIAMQyQEgA0E4aiACQYAEakE4aikDADcDACADQTBqIAJBgARqQTBqKQMANwMAIANBKGogAkGABGpBKGopAwA3AwAgA0EgaiACQYAEakEgaikDADcDACADQRhqIAJBgARqQRhqKQMANwMAIANBEGogAkGABGpBEGopAwA3AwAgBCACQYAEakEIaikDADcDACADIAIpA4AENwMADAELIAMgARBGCyAAKAI4IgNFDQUgACgCNCEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQcADaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAsADQTJGDQEgAxDJASADQThqIAJBwANqQThqKQMANwMAIANBMGogAkHAA2pBMGopAwA3AwAgA0EoaiACQcADakEoaikDADcDACADQSBqIAJBwANqQSBqKQMANwMAIANBGGogAkHAA2pBGGopAwA3AwAgA0EQaiACQcADakEQaikDADcDACAIIAJBwANqQQhqKQMANwMAIAMgAikDwAM3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAwGCwsgACgCDCIERQ0EIAAoAgghAyAEQTBsIQQDQCADIAEQbyADQTBqIQMgBEFQaiIEDQAMBQsLAkAgACgCJCIDRQ0AAkAgAygCAEEaRw0AIAJBgANqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgANBMkYNASADEMkBIANBOGogAkGAA2pBOGopAwA3AwAgA0EwaiACQYADakEwaikDADcDACADQShqIAJBgANqQShqKQMANwMAIANBIGogAkGAA2pBIGopAwA3AwAgA0EYaiACQYADakEYaikDADcDACADQRBqIAJBgANqQRBqKQMANwMAIAQgAkGAA2pBCGopAwA3AwAgAyACKQOAAzcDAAwBCyADIAEQRgsgACgCNCIDRQ0DIAAoAjAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkHAAmogASgCACABKAIEIANBCGoiCBC1DCACKALAAkEyRg0BIAMQyQEgA0E4aiACQcACakE4aikDADcDACADQTBqIAJBwAJqQTBqKQMANwMAIANBKGogAkHAAmpBKGopAwA3AwAgA0EgaiACQcACakEgaikDADcDACADQRhqIAJBwAJqQRhqKQMANwMAIANBEGogAkHAAmpBEGopAwA3AwAgCCACQcACakEIaikDADcDACADIAIpA8ACNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQAMBAsLAkAgACgCCEEDRw0AAkAgACgCDCIDKAIAQRpHDQAgAkGAAmogASgCACABKAIEIANBCGoiBBC1DCACKAKAAkEyRg0BIAMQyQEgA0E4aiACQYACakE4aikDADcDACADQTBqIAJBgAJqQTBqKQMANwMAIANBKGogAkGAAmpBKGopAwA3AwAgA0EgaiACQYACakEgaikDADcDACADQRhqIAJBgAJqQRhqKQMANwMAIANBEGogAkGAAmpBEGopAwA3AwAgBCACQYACakEIaikDADcDACADIAIpA4ACNwMADAELIAMgARBGCwJAIAAoAjwiA0UNAAJAIAMoAgBBGkcNACACQcABaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsABQTJGDQEgAxDJASADQThqIAJBwAFqQThqKQMANwMAIANBMGogAkHAAWpBMGopAwA3AwAgA0EoaiACQcABakEoaikDADcDACADQSBqIAJBwAFqQSBqKQMANwMAIANBGGogAkHAAWpBGGopAwA3AwAgA0EQaiACQcABakEQaikDADcDACAEIAJBwAFqQQhqKQMANwMAIAMgAikDwAE3AwAMAQsgAyABEEYLIAAoAjgiA0UNAiAAKAI0IQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBgAFqIAEoAgAgASgCBCADQQhqIggQtQwgAigCgAFBMkYNASADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAggAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ADAMLCwJAIAAoAjAiBUEIaigCACIDRQ0AIAVBBGooAgAiBiADQQZ0aiEAA0ACQCAGQThqKAIAIgNFDQAgBkE0aigCACEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQcAGaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAsAGQTJGDQEgAxDJASADQThqIAJBwAZqQThqKQMANwMAIANBMGogAkHABmpBMGopAwA3AwAgA0EoaiACQcAGakEoaikDADcDACADQSBqIAJBwAZqQSBqKQMANwMAIANBGGogAkHABmpBGGopAwA3AwAgA0EQaiACQcAGakEQaikDADcDACAIIAJBwAZqQQhqKQMANwMAIAMgAikDwAY3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAsLIAYgARCDBCAGQcAAaiIDIQYgAyAARw0ACwsCQCAFQRRqKAIAIgNFDQAgBUEQaigCACEEIANBDGwhBwNAAkACQCAEKAIAIgMoAgBBGkcNACACQYAGaiABKAIAIAEoAgQgA0EIaiIIELUMIAIoAoAGQTJGDQEgAxDJASADQThqIAJBgAZqQThqKQMANwMAIANBMGogAkGABmpBMGopAwA3AwAgA0EoaiACQYAGakEoaikDADcDACADQSBqIAJBgAZqQSBqKQMANwMAIANBGGogAkGABmpBGGopAwA3AwAgA0EQaiACQYAGakEQaikDADcDACAIIAJBgAZqQQhqKQMANwMAIAMgAikDgAY3AwAMAQsgAyABEEYLIARBDGohBCAHQXRqIgcNAAsLIAUoAhhBgICAgHhGDQEgBUEgaigCACIERQ0BIAVBHGooAgAhAyAEQTBsIQQDQCADIAEQbyADQTBqIQMgBEFQaiIEDQAMAgsLAkAgACgCSCIDRQ0AIAAoAkQiBiADQQZ0aiEFA0ACQAJAIAYoAgBBB0YNAAJAIAZBOGooAgAiA0UNACAGQTRqKAIAIQQgA0EMbCEHA0ACQAJAIAQoAgAiAygCAEEaRw0AIAJBwAVqIAEoAgAgASgCBCADQQhqIggQtQwgAigCwAVBMkYNASADEMkBIANBOGogAkHABWpBOGopAwA3AwAgA0EwaiACQcAFakEwaikDADcDACADQShqIAJBwAVqQShqKQMANwMAIANBIGogAkHABWpBIGopAwA3AwAgA0EYaiACQcAFakEYaikDADcDACADQRBqIAJBwAVqQRBqKQMANwMAIAggAkHABWpBCGopAwA3AwAgAyACKQPABTcDAAwBCyADIAEQRgsgBEEMaiEEIAdBdGoiBw0ACwsgBiABEJcDDAELAkAgBkE4aigCACIDRQ0AIAZBNGooAgAhBCADQQxsIQcDQAJAAkAgBCgCACIDKAIAQRpHDQAgAkGABWogASgCACABKAIEIANBCGoiCBC1DCACKAKABUEyRg0BIAMQyQEgA0E4aiACQYAFakE4aikDADcDACADQTBqIAJBgAVqQTBqKQMANwMAIANBKGogAkGABWpBKGopAwA3AwAgA0EgaiACQYAFakEgaikDADcDACADQRhqIAJBgAVqQRhqKQMANwMAIANBEGogAkGABWpBEGopAwA3AwAgCCACQYAFakEIaikDADcDACADIAIpA4AFNwMADAELIAMgARBGCyAEQQxqIQQgB0F0aiIHDQALCyAGLQAcQQJHDQACQAJAAkACQAJAAkAgBigCCCIDKAIADgcFAAECBAUDBQsgA0EMaigCACIERQ0EIANBCGooAgAhAyAEQShsIQQDQAJAIAMoAgBBB0YNACADIAEQlwMLIANBKGohAyAEQVhqIgQNAAwFCwsgAygCBCABEJcDDAMLIANBDGooAgAiBEUNAiADQQhqKAIAIQMgBEE4bCEEA0ACQAJAAkACQAJAIAMoAgAOAwABAgALIANBCGogARCJBAwDCyADQTBqKAIAIgdFDQIgBygCAEEaRw0BIAJBwAhqIAEoAgAgASgCBCAHQQhqIggQtQwgAigCwAhBMkYNAiAHEMkBIAdBOGogAkHACGpBOGopAwA3AwAgB0EwaiACQcAIakEwaikDADcDACAHQShqIAJBwAhqQShqKQMANwMAIAdBIGogAkHACGpBIGopAwA3AwAgB0EYaiACQcAIakEYaikDADcDACAHQRBqIAJBwAhqQRBqKQMANwMAIAggAkHACGpBCGopAwA3AwAgByACKQPACDcDAAwCCyADQQRqIAEQuAUMAQsgByABEEYLIANBOGohAyAEQUhqIgQNAAwDCwsCQCADKAIEIgMoAgBBGkcNACACQcAIaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAsAIQTJGDQIgAxDJASADQThqIAJBwAhqQThqKQMANwMAIANBMGogAkHACGpBMGopAwA3AwAgA0EoaiACQcAIakEoaikDADcDACADQSBqIAJBwAhqQSBqKQMANwMAIANBGGogAkHACGpBGGopAwA3AwAgA0EQaiACQcAIakEQaikDADcDACAEIAJBwAhqQQhqKQMANwMAIAMgAikDwAg3AwAMAgsgAyABEEYMAQsgAygCBCABEJcDAkAgAygCCCIDKAIAQRpHDQAgAkHACGogASgCACABKAIEIANBCGoiBBC1DCACKALACEEyRg0BIAMQyQEgA0E4aiACQcAIakE4aikDADcDACADQTBqIAJBwAhqQTBqKQMANwMAIANBKGogAkHACGpBKGopAwA3AwAgA0EgaiACQcAIakEgaikDADcDACADQRhqIAJBwAhqQRhqKQMANwMAIANBEGogAkHACGpBEGopAwA3AwAgBCACQcAIakEIaikDADcDACADIAIpA8AINwMADAELIAMgARBGCwJAIAYoAgwiAygCAEEaRw0AIAJBgAhqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAhBMkYNASADEMkBIANBOGogAkGACGpBOGopAwA3AwAgA0EwaiACQYAIakEwaikDADcDACADQShqIAJBgAhqQShqKQMANwMAIANBIGogAkGACGpBIGopAwA3AwAgA0EYaiACQYAIakEYaikDADcDACADQRBqIAJBgAhqQRBqKQMANwMAIAQgAkGACGpBCGopAwA3AwAgAyACKQOACDcDAAwBCyADIAEQRgsg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IAo6AIkBIARBADoAiAEgBEGIAWoQlxohBgsgAEECNgIAIAAgBjYCBAwDCyAFIQlBASEFIAEoAoAFIAEoAoQFIAIgBhD1GiELCyAAIAk2AgggACALNgIECyAAIAU2AgALIARBsAFqJAAPCyAGIANB0P6DARCzEQALjSgBBX8jAEHAB2siAiQAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEwAaGgECAxoaBAUGBwgJChUUExIACyAAKAIMIgNFDRkgACgCCCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwaCwsgACgCBCIDKAIAQRpHDQ8gAiABKAIAIAEoAgQgA0EIaiIEELUMAkAgAigCAEEyRg0AIAMQyQEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBCACQQhqKQMANwMAIAMgAikDADcDAAsgACgCCCEADBcLIAAoAgwiAEUNFyAAKAIAQRpHDQ0gAkHABGogASgCACABKAIEIABBCGoiARC1DCACKALABEEyRg0XIAAQyQEgAEE4aiACQcAEakE4aikDADcDACAAQTBqIAJBwARqQTBqKQMANwMAIABBKGogAkHABGpBKGopAwA3AwAgAEEgaiACQcAEakEgaikDADcDACAAQRhqIAJBwARqQRhqKQMANwMAIABBEGogAkHABGpBEGopAwA3AwAgASACQcAEakEIaikDADcDACAAIAIpA8AENwMADBcLIAAoAighAAwVCyAAKAIEIgMoAgBBGkcNCiACQcAAaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAkBBMkYNEyADEMkBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAQgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADBMLIAAoAhAiAygCAEEaRw0IIAJBgAFqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAFBMkYNESADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAQgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwRCyAAKAIEIgAoAgBBGkcNBiACQcABaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAsABQTJGDRMgABDJASAAQThqIAJBwAFqQThqKQMANwMAIABBMGogAkHAAWpBMGopAwA3AwAgAEEoaiACQcABakEoaikDADcDACAAQSBqIAJBwAFqQSBqKQMANwMAIABBGGogAkHAAWpBGGopAwA3AwAgAEEQaiACQcABakEQaikDADcDACABIAJBwAFqQQhqKQMANwMAIAAgAikDwAE3AwAMEwsCQCAAKAIEIgQoAlAiA0UNACAEKAJMIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsCQAJAAkAgBCgCAEF5ag4CAQIACyAEIAEQlwMLIAQoAjAiA0UNACAEKAIsIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsgBCgCYEGAgICAeEYNEiAEKAJoIgNFDRIgBCgCZCEAIANBMGwhAwNAIAAgARBvIABBMGohACADQVBqIgMNAAwTCwsgACgCBCIDKAIAQRpHDQMgAkGAAmogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAoACQTJGDQAgAxDJASADQThqIAJBgAJqQThqKQMANwMAIANBMGogAkGAAmpBMGopAwA3AwAgA0EoaiACQYACakEoaikDADcDACADQSBqIAJBgAJqQSBqKQMANwMAIANBGGogAkGAAmpBGGopAwA3AwAgA0EQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAMgAikDgAI3AwALIAAoAgghAAwQCyAAKAIEIgMoAgBBGkcNASACQcACaiABKAIAIAEoAgQgA0EIaiIEELUMAkAgAigCwAJBMkYNACADEMkBIANBOGogAkHAAmpBOGopAwA3AwAgA0EwaiACQcACakEwaikDADcDACADQShqIAJBwAJqQShqKQMANwMAIANBIGogAkHAAmpBIGopAwA3AwAgA0EYaiACQcACakEYaikDADcDACADQRBqIAJBwAJqQRBqKQMANwMAIAQgAkHAAmpBCGopAwA3AwAgAyACKQPAAjcDAAsgACgCCCEADA8LIAAoAgQiA0ECRg0LAkACQCADQQFxRQ0AIAAoAggiAygCAEEaRw0BIAJBgAZqIAEoAgAgASgCBCADQQhqIgQQtQwgAigCgAZBMkYNDSADEMkBIANBOGogAkGABmpBOGopAwA3AwAgA0EwaiACQYAGakEwaikDADcDACADQShqIAJBgAZqQShqKQMANwMAIANBIGogAkGABmpBIGopAwA3AwAgA0EYaiACQYAGakEYaikDADcDACADQRBqIAJBgAZqQRBqKQMANwMAIAQgAkGABmpBCGopAwA3AwAgAyACKQOABjcDAAwNCyAAKAIIIgMoAggiBEUNDCADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADA0LCyADIAEQRgwLCyADIAEQRiAAKAIIIQAMDQsgAyABEEYgACgCCCEADAwLIAAgARBGDAwLIAMgARBGDAgLIAMgARBGDAgLIAAgARBGDAkLIAMgARBGIAAoAgghAAwHCwJAIAAoAgQiACgCAEEaRw0AIAJBgARqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCgARBMkYNCCAAEMkBIABBOGogAkGABGpBOGopAwA3AwAgAEEwaiACQYAEakEwaikDADcDACAAQShqIAJBgARqQShqKQMANwMAIABBIGogAkGABGpBIGopAwA3AwAgAEEYaiACQYAEakEYaikDADcDACAAQRBqIAJBgARqQRBqKQMANwMAIAEgAkGABGpBCGopAwA3AwAgACACKQOABDcDAAwICyAAIAEQRgwHCyAAQQhqIAEQxQEMBgsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQgwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQlwMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhC1DCACKAKAB0EyRg0BIAQQyQEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkHAA2ogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAsADQTJGDQAgAxDJASADQThqIAJBwANqQThqKQMANwMAIANBMGogAkHAA2pBMGopAwA3AwAgA0EoaiACQcADakEoaikDADcDACADQSBqIAJBwANqQSBqKQMANwMAIANBGGogAkHAA2pBGGopAwA3AwAgA0EQaiACQcADakEQaikDADcDACAEIAJBwANqQQhqKQMANwMAIAMgAikDwAM3AwALIAAoAhAhAAwFCyADIAEQRiAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAgEACyAAKAIIIgMoAggiBEUNAiADKAIEIgMgBEE4bGohBQNAIAMgARCXAwJAIANBMGooAgAiBEUNAAJAIAQoAgBBGkcNACACQYAHaiABKAIAIAEoAgQgBEEIaiIGELUMIAIoAoAHQTJGDQEgBBDJASAEQThqIAJBgAdqQThqKQMANwMAIARBMGogAkGAB2pBMGopAwA3AwAgBEEoaiACQYAHakEoaikDADcDACAEQSBqIAJBgAdqQSBqKQMANwMAIARBGGogAkGAB2pBGGopAwA3AwAgBEEQaiACQYAHakEQaikDADcDACAGIAJBgAdqQQhqKQMANwMAIAQgAikDgAc3AwAMAQsgBCABEEYLIANBOGoiAyAFRw0ADAMLCyAAKAIIIAEQgwQMAQsgACgCCCIDKAIIIgRFDQAgAygCBCIDIARBOGxqIQUDQCADIAEQlwMCQCADQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAB2ogASgCACABKAIEIARBCGoiBhC1DCACKAKAB0EyRg0BIAQQyQEgBEE4aiACQYAHakE4aikDADcDACAEQTBqIAJBgAdqQTBqKQMANwMAIARBKGogAkGAB2pBKGopAwA3AwAgBEEgaiACQYAHakEgaikDADcDACAEQRhqIAJBgAdqQRhqKQMANwMAIARBEGogAkGAB2pBEGopAwA3AwAgBiACQYAHakEIaikDADcDACAEIAIpA4AHNwMADAELIAQgARBGCyADQThqIgMgBUcNAAsLAkAgACgCDCIDKAIAQRpHDQAgAkGAA2ogASgCACABKAIEIANBCGoiBBC1DAJAIAIoAoADQTJGDQAgAxDJASADQThqIAJBgANqQThqKQMANwMAIANBMGogAkGAA2pBMGopAwA3AwAgA0EoaiACQYADakEoaikDADcDACADQSBqIAJBgANqQSBqKQMANwMAIANBGGogAkGAA2pBGGopAwA3AwAgA0EQaiACQYADakEQaikDADcDACAEIAJBgANqQQhqKQMANwMAIAMgAikDgAM3AwALIAAoAhAhAAwECyADIAEQRiAAKAIQIQAMAwsCQCAAKAIYIgNFDQACQCADKAIAQRpHDQAgAkHABWogASgCACABKAIEIANBCGoiBBC1DCACKALABUEyRg0BIAMQyQEgA0E4aiACQcAFakE4aikDADcDACADQTBqIAJBwAVqQTBqKQMANwMAIANBKGogAkHABWpBKGopAwA3AwAgA0EgaiACQcAFakEgaikDADcDACADQRhqIAJBwAVqQRhqKQMANwMAIANBEGogAkHABWpBEGopAwA3AwAgBCACQcAFakEIaikDADcDACADIAIpA8AFNwMADAELIAMgARBGCwJAAkAgACgCHCIDRQ0AIAMoAgBBGkcNASACQYAFaiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAoAFQTJGDQAgAxDJASADQThqIAJBgAVqQThqKQMANwMAIANBMGogAkGABWpBMGopAwA3AwAgA0EoaiACQYAFakEoaikDADcDACADQSBqIAJBgAVqQSBqKQMANwMAIANBGGogAkGABWpBGGopAwA3AwAgA0EQaiACQYAFakEQaikDADcDACAEIAJBgAVqQQhqKQMANwMAIAMgAikDgAU3AwALIAAoAgwhAAwDCyADIAEQRiAAKAIMIQAMAgsgACgCDCIDRQ0CIAAoAggiBCADQRhsaiEFA0ACQCAEKAIUIgBFDQACQCAAKAIAQRpHDQAgAkHABmogASgCACABKAIEIABBCGoiAxC1DCACKALABkEyRg0BIAAQyQEgAEE4aiACQcAGakE4aikDADcDACAAQTBqIAJBwAZqQTBqKQMANwMAIABBKGogAkHABmpBKGopAwA3AwAgAEEgaiACQcAGakEgaikDADcDACAAQRhqIAJBwAZqQRhqKQMANwMAIABBEGogAkHABmpBEGopAwA3AwAgAyACQcAGakEIaikDADcDACAAIAIpA8AGNwMADAELIAAgARBGCwJAIARBCGooAgAiA0UNACAEQQRqKAIAIQAgA0EwbCEDA0AgACABEG8gAEEwaiEAIANBUGoiAw0ACwsgBEEYaiIEIAVGDQMMAAsLIAAoAgggARBvIAAoAhQiAA0ACwsgAkHAB2okAAuRJwIbfwh+IwBB4A5rIgQkACABvSEfAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAGZRAAAAAAAAPB/Yg0AQQMhBQwBCyAfQoCAgICAgID4/wCDIiBCgICAgICAgPj/AFENBSAfQv////////8HgyIhQoCAgICAgIAIhCAfQgGGQv7///////8PgyAfQjSIp0H/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CCACQQE2AgAgAiAGIAdrNgIEDCALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyANIAtBjOKDARCzEQALIAEgC0G84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgBkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyAEIAxBjOKDARCzEQALIAEgDEG84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgB0G48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyANIAtBjOKDARCzEQALIAEgC0G84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgBkG48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAYgB0HY8oMBEKMgAAtBAEEAQezhgwEQsxEACyAEIAxBjOKDARCzEQALIAEgDEG84YMBELMRAAsgA0EANgIIQQBBlLeYASADQQRqIANBCGpB3OGDARCZGQALIAEgB0G48oMBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAJBADYCGCACIAY2AhQgAkEBNgIQIAIgBDYCICACQQA2AgALAkAgBCAFTw0AIABBLGohDiABKAIMIQ8gASgCCCEQA0ACQAJAAkACQAJAAkACQAJAIAQgD08NAAJAAkAgBiAAKAIIIg1JDQAgBiEIDAELIA4gECAEai0AAGotAAAiAUECaiERIAAoAgQhCSAGIQgDQAJAAkACQAJAIAkgCEECdGooAgAiBkH/AXFBgn5qDgICAAELIBEgCGoiBiANTw0GIAkgBkECdGooAgAiBkEBRg0CDAwLIA0gCEECaiIKSQ0GIAZBAnZBP3EgBkEDcUEAR2oiEiANIAprIgZLDQcgEkECdCEHIAkgCkECdGohC0F/IQwC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AmohAQwBCyAAKAIoQQJqIQELIAEgB08NAwJAAkAgBiABQQJ0aigCACILQX9MDQACQCABQQFqIgEgB08NACAGIAFBAnRqKAIAIQEMAgsgASAHQczhgwEQsxEACyALQf////8HcSEBCyABIAAoAhQiBk8NBCAEQQFqIgYgACgCECABQQJ0aigCACIHSQ0FIAIgATYCDCACIAY2AgggAkEBNgIAIAIgBiAHazYCBAsgA0EgaiQADwsgBiANQcjygwEQoyAAC0EAQQBB7OGDARCzEQALIAEgB0G84YMBELMRAAsgASAGQbjygwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAvoMQECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAygCACIAQTQgAEG9gYCAeEgbQf8BcQ69AQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGf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ARCzEQALIAkgB0GMroABELMRAAsgAEEANgIADAsLAkACQCAGQQFxDQBBACEIAkACQAJAAkACQCABKALYAiIJDQAMAQsgCSABKALUAksNACADQSBqIAEgCRCbGSADIAMpAyA3AjggA0EYaiADQThqQQAQmAwgAygCGEEBcUUNAyADKAIcIhMgASgCOCIHTw0CIAQgASgCNCATQQJ0aigCACIHSQ0BIAQgB2shEEEBIQgLAkAgBCAFSQ0AIAQhFAwFCyACKAIMIg4gBCAOIARLGyEKIAFByABqIQ8gAigCCCERIAQhFANAAkACQAJAAkACQCAEIApGDQACQAJAAkACQCAJIAEoAggiDE8NACAPIBEgBGotAAAiB2ohDSABKAIEIQYDQCAGIAlBFGxqIhIhCQJAAkACQCASKAIEIgJFDQAgAiANLQAAaiIJIAEoAiAiAk8NBiABKAIcIAlBAnRqIQkMAQsDQCAJKAAAIglFDQIgCSABKAIUIgJPDQcgASgCECAJQQlsaiICQQVqIQkgByACLQAAIgtLDQALIAcgC0cNASACQQFqIQkLIAkoAAAiCUEBRw0DCyASKAIMIgkgDEkNAAsLIAkgDEGs44MBELMRAAsgCSABKALQAksNBiAJRQ0MIAkgASgC1AJLDQYgCSAMTw0DAkACQCAGIAlBFGxqKAIIIgJFDQAgAiABKAIsIgdJDQEgAiAHQZzjgwEQsxEAC0H48oMBEJsgAAsgASgCKCACQQN0aigCACITIAEoAjgiAk8NBCAEQQFqIhQgASgCNCATQQJ0aigCACICSQ0FIBQgAmshEEEBIQgMBgsgCSACQbzjgwEQsxEACyAJIAJBjOODARCzEQALIAogDkGMnYABELMRAAsgCSAMQYyugAEQsxEACyATIAJB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyAEQQFqIgQgBUYNBQwACwsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIBMgB0Ho8oMBELMRAAtB+PKDARCbIAALAkACQAJAAkAgASgC2AIiCUUNACAJIAEoAtQCSw0AIANBEGogASAJEJsZIAMgAykDEDcCOCADQQhqIANBOGpBABCYDCADKAIIQQFxRQ0DIAMoAgwiCSABKAI4IgJPDQIgBCABKAI0IAlBAnRqKAIAIgFJDQEgACAJNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDA8LAkAgBCAFTw0AIAIoAgwiEyAEIBMgBEsbIQogAUHIAGohDyACKAIIIREDQAJAAkACQAJAAkACQAJAAkACQCAEIApGDQACQCAJIAEoAggiDE8NACAPIBEgBGotAAAiB2ohDSABKAIEIQYDQCAGIAlBFGxqIhIhCQJAAkACQCASKAIEIgJFDQAgAiANLQAAaiIJIAEoAiAiAk8NByABKAIcIAlBAnRqIQkMAQsDQCAJKAAAIglFDQIgCSABKAIUIgJPDQggASgCECAJQQlsaiICQQVqIQkgByACLQAAIgtLDQALIAcgC0cNASACQQFqIQkLIAkoAAAiCUEBRw0ECyASKAIMIgkgDEkNAAsLIAkgDEGs44MBELMRAAsgCiATQYydgAEQsxEACyAJIAEoAtACSw0GIAlFDQIgCSABKALUAksNBiAJIAxPDQMCQAJAIAYgCUEUbGooAggiCUUNACAJIAEoAiwiAkkNASAJIAJBnOODARCzEQALQfjygwEQmyAACyABKAIoIAlBA3RqKAIAIgkgASgCOCICTw0EIARBAWoiAiABKAI0IAlBAnRqKAIAIgFJDQUgACAJNgIMIAAgAjYCCCAAQQE2AgAgACACIAFrNgIEDBcLIAkgAkG844MBELMRAAsgCSACQYzjgwEQsxEACyAAQQA2AgAMFAsgCSAMQYyugAEQsxEACyAJIAJB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyAEQQFqIgQgBUcNAAsLIABBADYCAAwOCyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgCSACQejygwEQsxEAC0H48oMBEJsgAAsgACATNgIMIAAgFDYCCCAAIBA2AgQgACAINgIADAoLAkACQAJAAkACQCABKALYAiIJRQ0AIAkgASgC1AJLDQAgA0EoaiABIAkQmxkCQAJAIAMoAiwiCUUNACAJIAMoAigiAigCLCIHSQ0BIAkgB0Gc44MBELMRAAtB+PKDARCbIAALIAIoAiggCUEDdGooAgAiCSABKAI4IgJPDQIgBCABKAI0IAlBAnRqKAIAIgFJDQEgACAJNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDA4LIANBOGogByABKAJAIgsoAghBf2pBeHFqQQhqIAIoAggiDyACKAIMIgogBCAFIAsoAhAREwACQCADKAI4IgIOAwQDAAQLAkAgAygCPCIEIAVPDQAgAUHIAGohEQNAAkACQAJAAkACQAJAAkACQAJAIAQgCk8NAAJAIAkgASgCCCIMTw0AIBEgDyAEai0AACIHaiENIAEoAgQhBgNAIAYgCUEUbGoiEiEJAkACQAJAIBIoAgQiAkUNACACIA0tAABqIgkgASgCICICTw0HIAEoAhwgCUECdGohCQwBCwNAIAkoAAAiCUUNAiAJIAEoAhQiAk8NCCABKAIQIAlBCWxqIgJBBWohCSAHIAItAAAiC0sNAAsgByALRw0BIAJBAWohCQsgCSgAACIJQQFHDQQLIBIoAgwiCSAMSQ0ACwsgCSAMQazjgwEQsxEACyAEIApBjJ2AARCzEQALIAkgASgC0AJLDQUgCUUNAgJAAkAgCSABKALUAksNACAJIAxPDQUCQAJAIAYgCUEUbGooAggiCUUNACAJIAEoAiwiAkkNASAJIAJBnOODARCzEQALQfjygwEQmyAACyABKAIoIAlBA3RqKAIAIgkgASgCOCICTw0GIARBAWoiAiABKAI0IAlBAnRqKAIAIgFPDQEgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIANBOGogASgCPCABKAJAIgIoAghBf2pBeHFqQQhqIA8gCiAEIAUgAigCEBETAAJAIAMoAjhFDQAgAygCPCICIARNDQcMCAsgAEEANgIADBcLIAAgCTYCDCAAIAI2AgggAEEBNgIAIAAgAiABazYCBAwWCyAJIAJBvOODARCzEQALIAkgAkGM44MBELMRAAsgAEEANgIADBMLIAkgDEGMroABELMRAAsgCSACQejygwEQsxEACyAEQQFqIQILIAIhBCACIAVJDQALCyAAQQA2AgAMDQsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAkgAkHo8oMBELMRAAsgACADKQI8NwIEIABBDGogA0E4akEMaigCADYC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IANBwABqIAIgA0EoakHjxJsBQQEQuAwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0DCyADQShqIAFBCGogAhCyEwJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQMLIAEoAiAhAQwACwsCQCACLQBdDQAgA0EoaiACEOIOIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogASACEOICIAMtAChBBEYNCCADKQMoIg1C/wGDQgRRDQgLIA1C/wGDQgRRDQcgACANNwIADAgLIAEoAgQiASgCHCEEIANBKGogAiABKAIYIglBABCVAgJAAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCABLQAsRQ0AIANBADYCKCADQRhqIAIgA0EoakHuoZsBQQcQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCABLQAtRQ0AIANBADYCKCADQRhqIAIgA0EoakHelpsBQQUQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgA0EANgJAIANBKGogAiADQcAAakHMoJsBQQQQuQwCQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAIQ4g4CQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAEgAhCyEwJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELAkAgAi0AXQ0AIANBKGogAhDiDiADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpB16ybAUEBELgMAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgASgCJCEFIANBKGogAiAJIAEoAigiDEHRACAMENYXAkACQAJAIAMtAChBBUYNACADKQMoIQ0MAQsgA0EoahCEHwJAAkACQAJAIAxFDQACQCACLQBdDQAgA0EoaiACEIsSIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQULIANBADoATyACLQBdRQ0BDAILIAItAF0NAiADQShqIAIQixIgAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAgwDCyACIAIoAjhBAWo2AjgLIANBADoAOCAFQShqIQEgDCEFQQAhC0EAIQYDQAJAAkACQAJAAkACQCAFRQ0AIAFBfGooAgAhCiADQShqIAIgBEHRACALIAYgA0E4aiADQc8AahChBQJAIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQkLIANBKGogAiABQXhqKAIAQQAQlQICQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0FCyABQWBqIQsgAUFYaigCAEEBRw0BIANBKGogCyACEIcBIAMtAChBBEYNAyADKQMoIg1C/wGDQgRSDQIMAwsgA0EoaiACIAkgBEHRACALIAYQuQIgAy0AKEEERg0GIAMpAygiDUL/AYNCBFINBwwGCyADQShqIAsgAhCyEyADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCyABKAIARQ0BAkAgAi0AXQ0AIANBKGogAhDiDiADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCyADQQA2AiggA0EYaiACIANBKGpB+5abAUEBELgMAkAgAy0AGEEERg0AIAMpAxgiDUL/AYNCBFINAQsCQCACLQBdDQAgA0EoaiACEOIOIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogASACENogIAMtAChBBEYNASADKQMoIg1C/wGDQgRRDQELIA1C/wGDQgRSDQMLAkACQCADLQBPDQAgA0EBOgBPDAELIAIoAlRFDQAgA0EoaiACIApBABDUAyADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0DCwJAIAMtADhFDQAgAiACKAI4QX9qNgI4IANBADoAOAsgBUF/aiEFIAFBMGohAUEBIQsgCiEGDAALCyADQShqIAIgBCAMRUHRABDAECADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BCyANQv8Bg0IEUg0BCyADQShqIAIgA0HAAGpBpsSbAUEBELgMIAMtAChBBEYNByADKQMoIg1C/wGDQgRRDQcLIA1C/wGDQgRRDQYgACANNwIADAcLIANBwABqIAIgASgCBCIBKAIAQQAQlQICQAJAIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELAkAgAS0AKEUNACADQQA2AkAgA0EYaiACIANBwABqQe6hmwFBBxC5DAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRSDQILIANBwABqIAIQ4g4gAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0EANgIoIANBwABqIAIgA0EoakHooJsBQQQQuQwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCyADQcAAaiACEOIOAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0HAAGogAUEIaiACELITAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsCQCABKAIgRQ0AIANBwABqIAFBIGogAhDzBCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCwJAIAItAF0NACADQcAAaiACEOIOIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELIANBwABqIAIgA0EoakH7lpsBQQEQuAwCQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCwJAIAItAF0NACADQcAAaiACEOIOIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELIANBwABqIAFBJGogAhBPAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0HAAGogAiADQShqELoMIAMtAEBBBEYNBiADKQNAIg1C/wGDQgRRDQYLIA1C/wGDQgRRDQUgACANNwIADAYLIANBKGogAUEEaiACEMIDIAMtAChBBEYNBCADKQMoIg1C/wGDQgRRDQQgACANNwIADAULIANBKGogAUEEaiACEMYHIAMtAChBBEYNAyADKQMoIg1C/wGDQgRRDQMgACANNwIADAQLIANBKGogAiABKAIEEOcDAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFENACAAIA03AgAMBAsgA0EANgIoIANBwABqIAIgA0EoahC6DAJAIAMtAEBBBEYNACADKQNAIg1C/wGDQgRRDQAgACANNwIADAQLIANBEGogARD3CyADKAIUIgFFDQIgA0EoaiACIAEQtBogAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAiAAIA03AgAMAwsCQCABLQAkRQ0AIANBADYCKCADQRhqIAIgA0EoakHuoZsBQQcQuQwCQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ4g4gAy0AKEEERg0AIAMp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BGooAgAtAAAhCwJAIAMgBUcNACACQfABakGcyIUBEMENIAIoAvQBIQwLIAwgA2ogCzoAACACIANBAWoiBTYC+AEgAUEcaiIBIApHDQALIAIoAvABIg1BgICAgHhGDQUgBUEBdCIBQX9MDQIgAigC9AEhDEEAIQtBAC0AwPGdARogARCFASIBRQ0GIAJB9AFqIQcgAkEANgKwASACIAE2AqwBIAIgBTYCqAEgA0EBaiEJA0AgAUEBaiAMIAtqLQAAIgM6AAAgASADOgAAIAFBAmohASAJIAtBAWoiC0cNAAwECwtB5MaFARCbIAALQQAhDSACQQA2ArABIAJCgICAgBA3A6gBIAJB9AFqIQdBASEMQQAhBQwBC0Gc+poBENMZAAsgDSAMQQFBARDAESACKQOoASERIAJBqAFqQQhqIgEgBTYCACACIAVFOgC0ASACIBE3A6gBIAJBqAFqEOQEIAdBCGogASkDADcCACAHIAIpA6gBNwIAIAJBATYC8AEgACACQfABahCyCAwHCyAFIAxBAUEBEMARCyACQQA2AvgBIAJCgICAgMAANwLwASACQeQAaiACQfABahDdEyACQfABakEEciENIAJBqAFqQQRqIQQgByEMAkACQANAIAwoAgBBAkcNAgJAAkAgDCgCBEEBRw0AIAxBEGooAgAiAUEBdCEFIAxBDGooAgAhAwJAIAFFDQAgAyAFaiILQX5qRQ0AIAtBf2osAABBAEgNBQsgBUH+////A0sNAyABQQN0IglB/f///wdPDQMgAUH/////B3EhC0EAIQUCQAJAIAkNAEEEIQFBACEJDAELQQAtAMDxnQEaIAkQhQEiAUUNBiALIQkLIAJBADYC+AEgAiABNgL0ASACIAk2AvABAkAgC0UNAEEAIQUDQCABIAMtAAA2AgAgAUEEaiADQQFqLQAANgIAIAFBCGohASADQQJqIQMgCyAFQQFqIgVHDQALCyACIAIpA/ABNwPwASACIAU2AvgBIAIgBUU6APwBIAJB8AFqEPUEIAJBmAFqQQhqIgMgDUEIaigCADYCACACIA0pAgA3A5gBIAIoAvABIgFBgICAgHhGDQQgBCACKQOYATcCACAEQQhqIAMoAgA2AgAgAiABNgKoASACQeQAaiACQagBahCGCyABIAIoAqwBQQRBCBDAEQwBCyACQeQAaiAMQQhq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akEQaikCADcCACABQRhqIAJB8AFqQRhqKAIANgIAIAIgA0EBajYC6AEgAkHkAGogAkHgAWoQsgEgAigCZEEIRg0AIAAgAikCZDcCACAAQRhqIAJB5ABqQRhqKAIANgIAIABBEGogAkHkAGpBEGopAgA3AgAgAEEIaiACQeQAakEIaikCADcCAAwDCyACQQhqIgEgAkHkAGpBDGooAgAiAzYCACACIAIpAmg3AwAgACACKAIEIgUgBSADQRxsahDhBDYCGCAAQQc2AgAgAEEMaiABKAIANgIAIAAgAikDADcCBAwCCyACQQA2ArABIAJCgICAgBA3AqgBIAJB9AFqIAJBqAFqENwTIAJBATYC8AEgAkHwAWoQ2wchASAAQQI2AgAgACABNgIYIAAgAikC8AE3AgQgAEEMaiACQfgBaikCADcCACAAQRRqIAJBgAJqKAIANgIACyACEOkXCyACQZACaiQAC+oiAgp/AX4jAEGgAmsiAyQAIAEoAgwhBCADQeABaiACIAEoAggiBUEAEJUCAkACQCADLQDgAUEERg0AIAMpA+ABIg1C/wGDQgRRDQAgACANNwIADAELAkACQAJAAkAgBUUNACADQeABaiACIAUQtBogAy0A4AFBBEYNACADKQPgASINQv8Bg0IEUg0BCyADQZgBaiABEP0RIANB4AFqIAMoApgBIgUgAygCnAEiBkEAEMMIIAMoAuABDQIgBSAGQdXJmwFBChCbHEUNAiABKQMQQgBSDQEMAgsgACANNwIADAILIANBkAFqIAFBEGoiBRD+ESADKAKQASADKAKUAUHcABC1GkUNAAJAIAItAGBFDQAgA0GIAWogBRD+ESADKAKIASADKAKMAUHfyZsBQQYQsxMNAQsgA0GAAWogBRD+ESADQeABaiACQQBBACADKAKAASADKAKEARC/DQJAIAMtAOABQQRGDQAgAykD4AEiDUL/AYNCBFENACAAIA03AgAMAgsCQAJAIARFDQAgA0HgAWogAiAEELQaIAMtAOABQQRGDQAgAykD4AEiDUL/AYNCBFINAQsgAEEEOgAADAILIAAgDTcCAAwBCyACLQBiIQcCQCACLQBdDQAgASkDEEIAUQ0AIAFBEGohBQJAIAdB/wFxQQFLDQAgA0H4AGogBRD+ESADKAJ4IAMoAnxB5cmbAUEDELMTDQELAkAg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IANBOGogA0G0AWpBCGoiBhCVCCADIAMoAjw2ArgBIAMgAygCOCIENgK0AQJAAkACQCAEQQFxRQ0AIANB1AFqIAEgBRCzDCADQeABakEYaiADQbQBakEYaikCADcDACADQeABakEQaiADQbQBakEQaikCADcDACADQeABakEIaiIKIAYpAgA3AwAgAyADKQK0ATcD4AEgA0EANgKAAgNAIAMoAuABIQEgA0ECNgLgAQJAAkAgAUECRg0AIAMoAuQBIQUMAQsgA0EwaiAKEJUIIAMoAjQhBSADKAIwIQELAkAgAUEBcUUNACADIAMoAoACQQFqIgE2AoACIANBGGogA0HUAWoQ4RcCQCABIAVqIgFFDQACQCABIAMoAhwiBUkNACABIAVGDQEMBgsgAygCGCABaiwAAEG/f0wNBQsgAy0A3wEhBSADKALYASEGIANB1AFqQQEQgwcgA0EQaiADQdQBahCWFSADKAIQIAFqIQQCQCAGIAVBwABqQf8BcSIJQQwgCUEMSRsgBUH+AUYbIgUgAWsiAUUNACAEQQFqIAQgAfwKAAALIARB3AA6AAAgBUEBaiEBAkAgAy0A3wFB/gFGDQAgAUELSw0CIAMgAUHAAXI6AN8BDAILIAMgATYC2AEMAQsLIANBiAJqQQhqIANB1AFqQQhqKAIANgIAIAMgAykC1AE3A4gCDAELIANB/wE6AJMCIAMgBTYCjAIgAyABNgKIAgsgA0EoaiADQYgCahDBEyADQbQBaiADKAIoIAMoAixB6MmbAUEEQezJmwFBBxDECyADQdQBaiADKAK4ASIJIAMoArwBQfPJmwFBA0H2yZsBQQYQxAsCQAJAAkACQCADKALUASIFQf7//wdLDQAgBQ0BQQAhAUGAgICAfCEKIAMoAtgBIQRBACEGDAILIAMoAtgBIQQgA0HgAWogAygC3AEiARC4DSADKALgASEKIAMoAuQBIQYgAUUNASAGIAQgAfwKAAAMAQsgAygC2AEhBAJAIAMoAtwBIgFBDE0NACAFQf///wcgBUH///8HSRtBgICAcHIhCiAEIQYMAgsgA0EANgDnASADQgA3A+ABIAMgAUHAAXI6AOsBAkAgAUUNACADQeABaiAEIAH8CgAACyADKALoASEKIAMoAuQBIQEgAygC4AEhBgsgBSAEEJASCyADQaQBahCmHSADIAo2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BkEBcQ0AIBEhDCATIQ4gEiENDAcLIAAgETYCDCAAIBM2AgggACASNgIEIABBATYCAAwSCyAIIBFB9O6DARCzEQALIAcgD0GMnYABELMRAAsgESASQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIBEgEkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgAkEBaiICRg0KDAALCyAAIAw2AgwgACAENgIIIAAgDTYCBCAAQQE2AgAMCQsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAwgB0GE74MBELMRAAtBAEEAQaTvgwEQsxEACyAHIAtBlO+DARCzEQALIABBADYCAAwECwJAAkAgBkEBcQ0AAkAgASgC0AIiCA0AQQEQxxwhASAAQQI2AgAgACABNgIEDAYLAkACQAJAAkACQAJAIAggASgCzAIiBk0NAEEAIRIMAQsgCCABKAI8dkF+aiIHIAEoAhQiC08NBCABKAIQIAdBDGxqIgcoAghFDQMgBygCBCgCACIRIAEoAiAiB08NAiAEIAEoAhwgEUECdGooAgAiB0kNASAEIAdrIQxBASESCwJAIAQgBUkNACAEIQkMBgsgAigCDCINIAQgDSAESxshByABQcAAaiELIAIoAgghECAEIQkDQAJAAkACQAJAAkACQCAHIARGDQACQCAIIAsgECAEai0AAGotAABqIgIgASgCCCIITw0AIAEoAgQgAkECdGooAgAiCCABKALIAksNBiAIRQ0NIAggBksNBiAIIAEoAjx2QX5qIgIgASgCFCIRTw0CIAEoAhAgAkEMbGoiAigCCEUNAyACKAIEKAIAIhEgASgCICICTw0EIAEoAhwgEUECdGooAgAiAiAEQQFqIglLDQVBASESIAQgAmtBAWohDAwGCyACIAhB9O6DARCzEQALIAcgDUGMnYABELMRAAsgAiARQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIBEgAkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgBEEBaiIERg0GDAALCyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgESAHQYTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAcgC0GU74MBELMRAAsCQCABKALQAiIIDQBBARDHHCEBIABBAjYCACAAIAE2AgQMBQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAIIAEoAswCIhFNDQACQCAEIAVPDQAgAigCDCIGIAQgBiAESxshByABQcAAaiELIAIoAgghEANAIAcgBEYNCiAIIAsgECAEai0AAGotAABqIgIgASgCCCIITw0JAkAgASgCBCACQQJ0aigCACIIIAEoAsgCSw0AIAhFDQQgCCARTQ0FCyAFIARBAWoiBEcNAAsLIABBADYCAAwRCyAIIAEoAjx2QX5qIgIgASgCFCIITw0CIAEoAhAgAkEMbGoiAigCCEUNAyACKAIEKAIAIgIgASgCICIITw0EIAQgASgCHCACQQJ0aigCACIBSQ0FIAAgAjYCDCAAIAQ2AgggAEEBNgIAIAAgBCABazYCBAwQCyAAQQA2AgAMDwsgCCABKAI8dkF+aiICIAEoAhQiCE8NBiABKAIQIAJBDGxqIgIoAghFDQcgAigCBCgCACICIAEoAiAiCE8NCCAEQQFqIgggASgCHCACQQJ0aigCACIBSQ0JIAAgAjYCDCAAIAg2AgggAEEBNgIAIAAgCCABazYCBAwOCyACIAhBlO+DARCzEQALQQBBAEGk74MBELMRAAsgAiAIQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAIQfTugwEQsxEACyAHIAZBjJ2AARCzEQALIAIgCEGU74MBELMRAAtBAEEAQaTvgwEQsxEACyACIAhBhO+DARCzEQALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQhRsACyAAIBE2AgwgACAJNgIIIAAgDDYCBCAAIBI2AgAMAwsCQCABKALQAiIIDQBBARDHHCEBIABBAjYCACAAIAE2AgQMAwsCQAJAAkACQAJAAkACQCAIIAEoAswCSw0AIAggASgCPHZBfmoiAiABKAIUIghPDQQgASgCECACQQxsaiICKAIIRQ0DIAIoAgQoAgAiAiABKAIgIghPDQIgBCABKAIcIAJBAnRqKAIAIgFJDQEgACACNgIMIAAgBDYCCCAAQQE2AgAgACAEIAFrNgIEDAkLIANBCGogByABKAIsIhAoAghBf2pBeHFqQQhqIAIoAggiCyACKAIMIgcgBCAFIBAoAhAREwACQCADKAIIIgIOAwYFAAYLAkAgAygCDCICIAVPDQAgAUHAAGohEANAAkACQAJAAkACQAJAIAIgB08NAAJAIAggECALIAJqLQAAai0AAGoiCCABKAIIIgRPDQAgASgCBCAIQQJ0aigCACIIIAEoAsgCSw0FAkACQAJAIAhFDQAgCCABKALMAksNASAIIAEoAjx2QX5qIgggASgCFCIETw0FIAEoAhAgCEEMbGoiCCgCCEUNBiAIKAIEKAIAIgggASgCICIETw0HIAJBAWoiAiABKAIcIAhBAnRqKAIAIgFPDQIgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIABBADYCAAwTCyADQQhqIAEoAiggASgCLCIEKAIIQX9qQXhxakEIaiALIAcgAiAFIAQoAhAREwACQCADKAIIRQ0AIAMoAgwiBCACTQ0HDAgLIABBADYCAAwSCyAAIAg2AgwgACACNgIIIABBATYCACAAIAIgAWs2AgQMEQsgCCAEQfTugwEQsxEACyACIAdBjJ2AARCzEQALIAggBEGU74MBELMRAAtBAEEAQaTvgwEQsxEACyAIIARBhO+DARCzEQALIAJBAWohBAsgBCECIAQgBUkNAAsLIABBADYCAAwICyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgAiAIQYTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAIgCEGU74MBELMRAAsgACADKQIMNwIEIABBDGogA0EIakEMaigCADYCAAsgACACNgIADAILAkACQAJAAkACQAJAIAggASgCzAJNDQBBACEJDAELIAggASgCPHZBfmoiCyABKAIUIhBPDQQgASgCECALQQxsaiILKAIIRQ0DIAsoAgQoAgAiBiABKAIgIgtPDQIgBCABKAIcIAZBAnRqKAIAIgtJDQEgBCALayESQQEhCQsgA0EIaiAHIAEoAiwiECgCCEF/akF4cWpBCGogAigCCCILIAIoAgwiByAEIAUgECgCEBETAAJAAkACQAJAIAMo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QQJGDQAgA0Gw650BNgJkIANBsOudATYCVCADIANB7wZqNgKAASADIANB1ABqNgJ8IAMgA0HkAGo2AnhBwOudASADQfgAakHk4ZsBEJEGCyADKAI0IQUgAygCMCEGQQAoArTrnQEhBAJAAkACQEEAEPYOKAIAIgcgBCgC+AUiC0YNAAJAAkACQAJAIAsNACAEIAQoAvgFIgtBASALGzYC+AUgC0UNAQsgBEGEBmooAgAiC0UNASAEQYAGaigCACALIAcgC3BBmJubARCVHCILLQAAIQcgC0EBOgAAIAdFDQIgA0H4AGogBCgC8AUgBCgC9AUoAhQRBwBB8AVBCBD7HiEHAkBB8AVFDQAgByADQfgAakHwBfwKAAALQQEhC0EAIQgMBQsgA0H4AGogBCgC8AUgBCgC9AUoAhQRBwAgBBD6HgJAQfAFRQ0AIAQgA0H4AGpB8AX8CgAAC0EAIQtBASEIDAQLQYibmwEQzxkACwJAIAsoAgwiB0UNACALIAdBf2oiBzYCDCALKAIIIAdBAnRqKAIAIQdBACEIIAtBADoAAAwCC0EAIQggC0EAOgAAIANB+ABqIAQoAvAFIAQoAvQFKAIUEQcAQfAFQQgQ+x4hB0HwBUUNASAHIANB+ABqQfAF/AoAAAwBC0EBIQggBEEBNgL4BQtBACELCyADQYcBaiADQdQAakECai0AADoAACADQasBaiADQeQAakECai0AADoAACADQcABaiADQThqQQhqKQIANwIAIANByAFqIANBOGpBEGopAgA3AgAgA0HQAWogA0E4akEYaigCADYCACADIAs6AIQBIAMgBDYCgAEgAyAHNgJ8IAMgCDYCeCADIAMvAFQ7AIUBIAMgAy8AZDsAqQEgAyADKQI4NwK4ASADQQA2AtwBIANCADcC1AEgAyAFNgK0ASADIAY2ArABIANBsOudATYCrAEgA0EAOgCoASADIAU2AqQBIANBADYCoAEgAyAFNgKcASADIAY2ApgBIANBADYCkAEgA0EANgKIASADQfgAakEYaiEPIANB+ABqQRBqIRAgA0G4AWohEUEAIRJBACEEAkACQANAIANBOGogERCwCgJAAkAgAygCOEEBRw0AAkACQCADKAJ4QQFHDQAgAygCgAEhCAwBCyADKAJ8IQgLIAMoAjwhByADKAKsASITKAIAIgsoAhAhBQJAIAMoAqABIhRFDQAgBSgCWC0AHEEBcQ0BCwJAAkAgAygCpAEiBiADKAKcASIJSQ0AIAUoAlghBQwBCyAFKAJYIgUtACBBAnENAQsCQCAFKAIAQQFHDQBBACAGIBRrIhQgFCAGSxsiFCAFKAIESQ0BAkAgAygCkAFBf2pBAkkNACAFLQAcQQFxRQ0BCyAFLQAgQQJxRQ0AIAUoAghBAUcNACAUIAUoAgxLDQELIANBOGogCygCCCALKAIMIgUoAghBf2pBeHFqQQhqIAggDyAFKAIkEQ4AIAMoAjwhCwJAAkAgAygCOCIFQQJGDQAgBUEBcUUNAiALIAMpAkCnIgVJDQMgAygCiAFBAUcNAyADKAKMASAFRw0DIANBOGogECALIAUgEygCACADQfgAahDyBiADKAI4IgVBAkcNASADKAI8IQsLIAMgCzYCZCADQQI2AjwgA0H8mZsBNgI4IANCATcCRCADQcEBNgJYIAMgA0HUAGo2AkAgAyADQeQAajYCVCADQThqQYyamwEQhRsACyAFQQFxRQ0AIAMpAkCnIQUgAygCnAEhCSADKAKkASEGDAELIANB+ABqEMAJIANB+ABqIAIgEiAOahC0GgJAIAMtAHhBBEYNACADKQN4IhVC/wGDQgRRDQAgACAVNwIADAMLIANBCGogBCABIApBwN+bARCCFCADQfgAaiACQQBBACADKAIIIAMoAgwQvw0CQCADLQB4QQRGDQAgAykDeCIVQv8Bg0IEUQ0AIAAgFTcCAAwDCyADQfgAaiACIA0QtBoCQCADLQB4QQRGDQAgAykDeCIVQv8Bg0IEUQ0AIAAgFTcCAAwDCyAMIAEQlyIMGgsgAyAFNgJkIAMgBjYCaAJAAkAgBiAJSw0AIAUgBkEBak0NAQsgA0ECNgI8IANBgJ2bATYCOCADQgI3AkQgA0EONgJgIANBwAE2AlggAyAJNgJ0IAMgA0HUAGo2AkAgAyADQfQAajYCXCADIANB5ABqNgJUIANBOGpBkJ2bARCFGwALIAMgBTYCoAEgAyAFNgKMASADQQE2AogBAkACQCAHRQ0AIANBOGogAiASIA5qELQaAkAgAy0AOEEERg0AIAMpAzgiFUL/AYNCBFINAgsgB0F/Rg0ECyAHQQFqIgYgBEkNBQJAIARFDQACQCAEIApJDQAgBCAKRg0BDAcLIAEgBGosAABBQEgNBgsCQAJAIAYgCkkNACAGIApGDQEMBwsgASAGaiwAAEG/f0wNBgsgA0E4aiACQQBBACABIARqIAYgBGsQvw0CQCADLQA4QQRGDQAgBSESIAYhBCADKQM4IhVC/wGDQgRSDQEMAgsgBSESIAYhBAwBCwsgACAVNwIAIANB+ABqEMAJCyAMIAEQlyIMGAsQ2BkAC0HUpJsBQSsgA0HvBmpBqNCYAUGA2ZgBEOgPAAsgASAKIAQgBkHQ35sBEJUfAAsgA0HkAGpB3AAQ6AkgA0HkAGpB+wAQ6AkMEQsgA0HkAGpB3AAQ6AkgA0HkAGpB7gAQ6AkMDwsgA0EANgKIASADQQE2AnwgA0HQ2JgBNgJ4IANCBDcCgAEgA0HkAGogA0H4AGoQrR5FDQBB1KSbAUErIANB7wZqQajQmAFB2NiYARDoDwALIAsNDQsgA0HkAGogBBDoCQwMCyAEDg0IAwMDAwMDAwUBAAcGAgsgA0HkAGpBChDoCQwKCyADQeQAakEJEOgJDAkLIARBJEYNASAEQYCAxABGDQgLIARBYGpB3wBPDQYgBCEFDAULIANB5ABqQSQQ6AlBASEKDAYLIANB5ABqQZH6mgFBk/qaARDiGAwFCyADQeQAakGT+poBQZX6mgEQ4hgMBAsgA0HkAGpBrtWYAUGw1ZgBEOIYDAMLAkACQCADQdQAahD4GiIERQ0AIAQoAgBBT2pBCUkNAQsgA0HkAGpBqNWYAUGq1ZgBEOIYDAMLIANB5ABqQarVmAFBrtWYARDiGAwCCyADQeQAaiAFEOgJDAELAkACQAJAAkACQAJAIARBgX9qQYEBSQ0AIARB2L9/ag4CAgMBCyADQQE2AnwgA0HI2JgBNgJ4IANCATcChAEgA0HgATYCPCADIAQ6AHQgAyADQThqNgKAASADIANB9ABqNgI4IANB5ABqIANB+ABqEK0eGgwFCyAEQf/9A0YNAgJAIAlFDQAgBEH/AEsNBAsgA0HkAGogBBDoCQwECyADQeQAakH/05gBQYXUmAEQ4hgMAwsgA0HkAGpBhdSYAUGL1JgBEOIYDAILIANB5ABqQbDVmAFBttWYARDiGAwBCyADQThqIAQQtAogA0H4AGpBCGogA0E4akEIai8AADsBACADIAMpADg3A3ggA0HkAGogAy0AQyIFIAMtAEIiBGtB/wFxEOYbIAQgBSAFIARJGyEGA0AgBiAERg0BIANB5ABqQfUAIANB+ABqIARqLQAAIgVB3wBxIAUgBUGff2pB/wFxQRpJGyAFQfUARhsQ6AkgBEEBaiEEDAALCwsLIANB+ABqIAIgASgCCCABKAIMIAMoAjAgAygCNBC/DSADLQB4QQRGDQAgAykDeCIVQv8Bg0IEUQ0AIAAgFTcCAAwBCyAAQQQ6AAALIAMoAiwgAygCMBCXIiADQfAGaiQAC7weAgh/An4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUF0aiICQQcgAkEmSRtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIAAoAgghAwJAIAAoAgwiAUUNACADIQIDQAJAIAIoAgBBAkYNACACQQxqKAIAIgQQkAEgBEHAAEEIEJ4SCyACQRBqIQIgAUF/aiIBDQALCyAAKAIEIANBBEEQEK8RDwsgACgCCCEDAkAgACgCDCIERQ0AIAMhAgNAAkACQCACKAIAIgFFDQAgARCQASABQcAAQQgQnhIMAQsgAkEEaigCACIBEPcDIAFB8ABBCBCeEgsgAkEMaiECIARBf2oiBA0ACwsgACgCBCADQQRBDBCvEQ8LAkAgAC0AHEECRg0AIAApAwgiCUIDg0IAUg0AIAmnIgIgAigCACIBQX9qNgIAIAFBAUcNACACIAIoAhAQwRsLIAAoAiAiBUEEaigCACEGAkAgBSgCCCIHRQ0AQQAhAwNAIAYgA0EGdGoiBEE0aiIIKAIAIQACQCAEKAI4IgJFDQADQCAAKAIAIgEQkAEgAUHAAEEIEJ4SIABBDGohACACQX9qIgINAAsgCCgCACEACyAEKAIwIABBBEEMEK8RIAQQ2AcgA0EBaiIDIAdHDQALIAVBBGooAgAhBgsgBSgCACAGQQhBwAAQrxEgBUEQaigCACEAAkAgBSgCFCICRQ0AA0AgACgCACIBEJABIAFBwABBCBCeEiAAQQxqIQAgAkF/aiICDQALIAVBEGooAgAhAAsgBSgCDCAAQQRBDBCvEQJAIAUoAhgiAUGAgICAeEYNACAFQRxqKAIAIQACQCAFKAIgIgJFDQADQCAAEOMCIABBMGohACACQX9qIgINAAsgBUEcaigCACEAIAUoAhghAQsgASAAQQhBMBCvEQsCQCAFKAI8IgBFDQAgABDkDSAAKAIAIABBBGooAgBBCEEwEK8RIABBFEEEEJ4SCwJAIAUoAkAiAEUNACAAKAIAIgIQqwIgAkHgAEEIEJ4SIABBDEEEEJ4SCyAFQcgAQQQQnhIPCyAAKAIEIgAQkAEgAEHAAEEIEJ4SDwsgACgCDCIAEJABIABBwABBCBCeEg8LIAAoAgQiAhCQASACQcAAQQgQnhIgACgCCCIAEJABIABBwABBCBCeEg8LAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEODAABAgMEBQYHCAkLCgsLIABBCGoQrRIMCgsgAEEIahDlDQwJCyAAQQhqEOsTDAgLIABBBGoQzR4MBwsgAEEEahCfCgwGCyAAQQRqEPYbDAULIABBBGoQ9hsMBAsgAEEEahDNHgwDCyAAQQRqEPYbDAILIABBBGoQuhAMAQsCQAJAIAAoAgQOAgABAgsgAEEIahDMEAwBCyAAQQhqEPkICyAAKAI4IgAQkAEgAEHAAEEIEJ4SDwsgACgCKCICEJABIAJBwABBCBCeEiAAQQhqEPwODwsCQCAAKAIIDQAgACkDECIJQgODQgBSDRogCaciACAAKAIAIgJBf2o2AgAgAkEBRw0aIAAgACgCEBDBGw8LIABBDGoQzh4PCyAAKAIEIgIQkAEgAkHAAEEIEJ4SIAAoAggiAhCQASACQcAAQQgQnhIgACgCDCIAEJABIABBwABBCBCeEg8LAkAgAC0AGEEFRw0AIAAoAhAiAhCQASACQcAAQQgQnhILIAAoAgghAwJAIAAoAgwiAUUNACADQQxqIQIDQCACKAIAIgQQkAEgBEHAAEEIEJ4SIAJBEGohAiABQX9qIgENAAsLIAAoAgQgA0EEQRAQrxEgACgCKCIARQ0XIAAQohUgAEEUQQQQnhIPCyAAKAIQIgIQkAEgAkHAAEEIEJ4SAkAgACgCBCICQYCAgIB4Rg0AIABBBGoQ6xcgAiAAKAIIQQRBEBCvEQsgACgCICIARQ0WIAAQohUgAEEUQQQQnhIPCyAAKAIIIQMCQCAAKAIMIgFFDQAgAyECA0AgAigCACIEEJABIARBwABBCBCeEiACQQRqIQIgAUF/aiIBDQALCyAAKAIEIANBBEEEEK8RDwsgACkDCCIJQgODQgBSDRQgCaciACAAKAIAIgJBf2o2AgAgAkEBRw0UIAAgACgCEBDBGw8LAkACQAJAAkACQCAAKAIIDgYBGBgCAwQACyAAQRBqEOMQDwsgAEEQahCnEA8LIAApAyAiCVANFSAJQgODQgBSDRUgCaciACAAKAIAIgJBf2o2AgAgAkEBRw0VIAAgACgCEBDBGw8LIAApAxggACgCIBCbFA8LIAApAxghCQJAIAApAxAiCkIDg0IAUg0AIAqnIgAgACgCACICQX9qNgIAIAJBAUcNACAAIAAoAhAQwRsLIAlCA4NCAFINEyAJpyIAIAAoAgAiAkF/ajYCACACQQFHDRMgACAAKAIQEMEbDwsgACgCCCEDAkAgACgCDCIBRQ0AIAMhAgNAIAIoAgAiBBCQASAEQcAAQQgQnhIgAkEEaiECIAFBf2oiAQ0ACwsgACgCBCADQQRBBBCvESAAKAIUIgIgACgCGBCbDiAAKAIQIAJBCEEgEK8RDwsgACgCBCICEJABIAJBwABBCBCeEgJAIAAoAhgiAkUNACACEKIVIAJBFEEEEJ4SCyAAKAIIIgRBBGooAgAhAAJAIAQoAggiAkUNAANAIAAoAgAiARCQASABQcAAQQgQnhIgAEEEaiEAIAJBf2oiAg0ACyAEQQRqKAIAIQALIAQoAgAgAEEEQQQQrxEgBEEQaiIAKAIAIARBFGooAgAQmw4gBCgCDCAAKAIAQQhBIBCvESAEQSBBBBCeEg8LIAAoAgghBAJAIAAoAgwiAUUNACAEIQIDQCACENgHIAJBKGohAiABQX9qIgENAAsLIAAoAgQgBEEIQSgQrxECQAJAIAAoAhAiAigCAEGAgICAeEYNACACEOwXDAELIAJBBGoQzh4LIAJBGEEEEJ4SAkAgACgCICICRQ0AIAIQ+gwgAkEUQQQQnhILIAAoAiQiAEUNECAAEM8eIABBDEEEEJ4SDwsCQCAALQAcQQJGDQAgACkDCCIJQgODQgBSDQAgCaciAiACKAIAIgFBf2o2AgAgAUEBRw0AIAIgAigCEBDBGwsgACgCICIFQQRqKAIAIQACQCAFKAIIIgJFDQADQCAAKAIAIgEQkAEgAUHAAEEIEJ4SIABBDGohACACQX9qIgINAAsgBUEEaigCACEACyAFKAIAIABBBEEMEK8RIAVBEGooAgAhAAJAIAUoAhQiAkUNAANAIAAQuAMgAEHYAGohACACQX9qIgINAAsgBUEQaigCACEACyAFKAIMIABBCEHYABCvEQJAIAUoAjAiAEUNACAAEJABIABBwABBCBCeEgsCQCAFKAI0IgBFDQAgABDkDSAAKAIAIABBBGooAgBBCEEwEK8RIABBFEEEEJ4SCwJAIAUoAjgiAEUNACAAELgYIAAoAgAgAEEEaigCAEEEQQQQrxEgAEEUQQQQnhILIAVBHGooAgAhCAJAIAUoAiAiBkUNAEEAIQMDQCAIIANBBHRqIgAoAgAiAhCQASACQcAAQQgQnhICQCAAKAIMIgRFDQAgBEEEaiIHKAIAIQACQCAEKAIIIgJFDQADQCAAKAIAIgEQqwIgAUHgAEEIEJ4SIABBBGohACACQX9qIgINAAsgBygCACEACyAEKAIAIABBBEEEEK8RIARBFEEEEJ4SCyADQQFqIgMgBkcNAAsgBUEcaigCACEICyAFKAIYIAhBBEEQEK8RIAVBwABBBBCeEg8LIAAoAgwiAEUNDiAAEJABIABBwABBCBCeEg8LIAAoAgQiABCQASAAQcAAQQgQnhIPCyAAKAIEIgAQkAEgAEHAAEEIEJ4SDwsgAEEIahD9Dg8LIABBCGoQ5BAPCyAAKAIEIgNBwABqEJMRIANBgAFqKAIAIQICQCADKAKEASIBRQ0AA0ACQAJAIAIoAgBBBUYNAAJAAkAgAkEwaiIEKQMAQgBSDQAgAkE4aikDACIJQgODQgBSDQEgCaciBCAEKAIAIghBf2o2AgAgCEEBRw0BIAQgBCgCEBDBGwwBCyAEEOQQCwJAAkACQAJAIAIoAgAOBQECAwAFAQsgAkEEaiIEEIoPIAQoAgAgAkEIaigCAEEIQSgQrxEMBAsgAkEIahCnEAwDCyACQQRqKAIARQ0CIAJBCGooAgAiBBCQASAEQcAAQQgQnhIMAgsgAkEEahDdCAwBCyACQQRqKAIAIgQQkAEgBEHAAEEIEJ4SCyACQdgAaiECIAFBf2oiAQ0ACyADQYABaigCACECCyADKAJ8IAJBCEHYABCvEQJAIAMoAngiAkUNACACELgYIAIoAgAgAkEEaigCAEEEQQQQrxEgAkEUQQQQnhILIANBkAFqEIoPIAMoApABIANBlAFqKAIAQQhBKBCvEQJAIAMtADxBBkYNACADQRBqEJMRCyAAKAIEQaABQQgQnhIPCyAAKAIIIQQCQCAAKAIMIgFFDQAgBCECA0AgAhDUCyACQShqIQIgAUF/aiIBDQALCyAAKAIEIARBCEEoEK8RDwsgACgCBCICEJABIAJBwABBCBCeEiAAKAIIIgAQqwIgAEHgAEEIEJ4SDwsgACgCBCIAEJABIABBwABBCBCeEg8LIAAoAgQiABCQASAAQcAAQQgQnhIPCyAAKAIEIgIQkAEgAkHAAEEIEJ4SIAAoAggiABCrAiAAQeAAQQgQnhIPCyAAKAIEIgIQkAEgAkHAAEEIEJ4SIAAoAggiBEEEaigCACEAAkAgBCgCCCICRQ0AA0AgACgCACIBEKsCIAFB4ABBCBCeEiAAQQRqIQAgAkF/aiICDQALIARBBGooAgAhAAsgBCgCACAAQQRBBBCvESAEQRRBBBCeEg8LIAAoAgQiAhCQASACQcAAQQgQnhIgACgCCCIAEKsCIABB4ABBCBCeEg8LIAApAwgiCUIDg0IAUg0BIAmnIgAgACgCACICQX9qNgIAIAJBAUcNASAAIAAoAhAQwRsPCwJAAkAgACgCBCIAKAIAQQNGDQAgABDlDQwBCyAAQQRqEJoMCyAAQShBCBCeEgsL7R0BEn8jAEGABWsiBCQAAkACQCACQQFxDQBBACECAkBBgAJFDQAgBEGcAmpBAEGAAvwLAAsDQCAEQZwCaiACaiACOgAAIAJBAWoiAkGAAkcNAAsCQEH/AUUNACAEQRFqIARBnAJqQf8B/AoAAAsgBC0AmwQhBQwBCwJAQf8BRQ0AIARBEWogA0HIAGpB/wH8CgAACyADLQDHAiEFCyADKAIEIQYgBEGQAmogAygCCCIHQZysgAEQ4QsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADKAI4IghB/////wNLDQAgCEECdCICQf3///8HTw0AIAMoAjQhCQJAAkAgAg0AQQQhCkEAIQsMAQtBAC0AwPGdARogAhCFASIKRQ0CIAghCwsCQCACRQ0AIAogCSAC/AoAAAsCQAJAIAMoAjwiAg0ADAELIAIgAigCACIJQQFqNgIAIAlBf0wNAiADKAJEIQkgAygCQCEMCyADLQDgAiENIARByAJqIQ4CQEH/AUUNACAOIARBEWpB/wH8CgAACyAEQdgEakIANwIAIARCADcC0AQgBCANOgDgBCAEIAk2AsACIAQgDDYCvAIgBCACNgK4AiAEIAc2ArQCIAQgCDYCsAIgBCAKNgKsAiAEIAs2AqgCIARBADYCpAIgBEKAgICAwAA3ApwCIAQgAykCyAI3AsgEIAQgBToAxwQgBCAFQf8BcUEBajYCxAIgBxDZEyIPRQ0CIAYgB0EUbGohECADKAIoIQwgAygCLCEJIAMoAhAhBSADKAIUIQdBACERIAYhEgJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgESAPTw0AAkAgEUEBRg0AIBIoAhAhCyAEKAKkAiETAkACQAJAIAYgEUEUbGoiFCgCACINRQ0AQX8hCCANIQIDQCAIIQogAiAHTw0GIApBAWohCCAFIAJBCWxqKAAFIgINAAsgCyABSQ0BIApBAmoiAkH/AEsNASAIDQsgEigCCEUNAkEBIQIMCwsgCyABSQ0AQQAhAgwKCwJAIBMgBCgCnAIiCEcNACAEQZwCakGwqoABEOkVIAQoApwCIQgLIAQoAqACIgogE0ECdGpB/wE2AgAgBCATQQFqIgI2AqQCIBIoAgwhCwJAIAIgCEcNACAEQZwCakHAqoABEOkVIAQoAqACIQoLIAogAkECdGogCzYCACAEIBNBAmoiDTYCpAIgBC0AxwQiAkEBaiEKIA0hCAJAIAQoApwCIA1rIAJLDQAgBEGcAmogDSAKQQRBBBCgFyAEKAKkAiEICyAIIAJqQQFqIQIgBCgCoAIgCEECdGohCANAIAhBATYCACAIQQRqIQggCkF/aiIKDQALIAQgAjYCpAIgDSACTw0EIBQoAgAiCEUNCiAEKAKgAiEVA0AgCCAHTw0GIA0gDiAFIAhBCWxqIgotAABqLQAAaiILIAJPDQcgCigABSEIIBUgC0ECdGogCigAATYCACAIDQAMCwsLIA0gB08NBiAOIAUgDUEJbGoiAi0AAGotAABBCHRB/gFyIQogAigAASELAkAgEyAEKAKcAiICRw0AIARBnAJqQYCqgAEQ6RUgBCgCnAIhAgsgBCgCoAIiCCATQQJ0aiAKNgIAIAQgE0EBaiIKNgKkAiASKAIMIQ0CQCAKIAJHDQAgBEGcAmpBkKqAARDpFSAEKAKcAiECIAQoAqACIQgLIAggCkECdGogDTYCACAEIBNBAmoiCjYCpAICQCAKIAJHDQAgBEGcAmpBoKqAARDpFSAEKAKgAiEICyAIIApBAnRqIAs2AgAgBCATQQNqIgI2AqQCDAkLIAQoApgCIgpBAU0NBiAEKAKUAiIIQQE2AgRBAiERDA4LQbjGgAEQmyAACyACIAdBjOODARCzEQALIARBADYC+AQgBEEBNgLsBCAEQeSrgAE2AugEIARCBDcC8AQgBEHoBGpB7KuAARCFGwALIAggB0GM44MBELMRAAsgCyACQfyrgAEQsxEACyANIAdBjOODARCzEQALQQEgCkGsrYABELMRAAsCQCATIAQoApwCIghHDQAgBEGcAmpB4KmAARDpFSAEKAKcAiEICyAEKAKgAiILIBNBAnRqIAI2AgAgBCATQQFqIgI2AqQCIBIoAgwhCgJAIAIgCEcNACAEQZwCakHwqYABEOkVIAQoAqACIQsLIAsgAkECdGogCjYCACAEIBNBAmoiAjYCpAIgBEEANgLoBCAUKAIAIghFDQACQAJAAkAgCCAHTw0AQQAhCgNAIARB6ARqIApqIA4gBSAIQQlsaiIILQAAai0AACIVOgAAIAgoAAUhCAJAAkAgCkEBaiINQQRHDQAgBCgC6AQhCgJAIAIgBCgCnAJHDQAgBEGcAmpBsKuAARDpFSAEKAKgAiELCyALIAJBAnRqIAo2AgAgBCACQQFqIgI2AqQCQQAhCiAEQQA2AugEIAgNAQwFCyAIRQ0DIA0hCgsgCCAHSQ0ACwsgCCAHQYzjgwEQsxEACwJAIApBAksNAEEDIAprIghFDQAgBEHoBGogDWogFSAI/AsACyAEKALoBCEIAkAgAiAEKAKcAkcNACAEQZwCakGQq4ABEOkVIAQoAqACIQsLIAsgAkECdGogCDYCACAEIAJBAWoiAjYCpAILIBQoAgAiCEUNACACQQJ0IQoDQCAIIAdPDQIgBSAIQQlsaiINKAAFIQggDSgAASENAkAgAiAEKAKcAkcNACAEQZwCakGgq4ABEOkVIAQoAqACIQsLIAsgCmogDTYCACAEIAJBAWoiAjYCpAIgCkEEaiEKIAgNAAsLIBIoAghFDQQCQAJAAkAgFCgCCCINDQBBACEIDAELQX8hCiANIQgDQCAKIQsgCCAJTw0EIAtBAWohCiAMIAhBA3RqKAIEIggNAAsCQCAKDQAgDSAJTw0FIAQgDCANQQN0aigCACIKQYCAgIB4cSIINgLkBAJAIAgNACAKQYCAgIB4ciEIAkAgAiAEKAKcAkcNACAEQZwCakHQqoABEOkVCyAEKAKgAiACQQJ0aiAINgIAIAQgAkEBajYCpAIMCAsgBEEANgLoBCAEQeQEaiAEQegEahCYGQALIAQgC0ECaiIIQYCAgIB4cSIKNgLkBCAKDQELIBRBCGohCgJAIAIgBCgCnAJHDQAgBEGcAmpB8KqAARDpFQsgBCgCoAIgAkECdCILaiAINgIAIAQgAkEBaiIINgKkAiAKKAIAIgJFDQUgC0EEaiEKA0AgAiAJTw0FIAwgAkEDdGoiCygCBCECIAsoAgAhCwJAIAggBCgCnAJHDQAgBEGcAmogCEEBQQRBBBCgFwsgBCgCoAIgCmogCzYCACAEIAhBAWoiCDYCpAIgCkEEaiEKIAJFDQYMAAsLIARBADYC6ARBAEGUt5gBIARB5ARqIARB6ARqQYCrgAEQmRkACyAIIAdBjOODARCzEQALIAggCUGc44MBELMRAAsgDSAJQZzjgwEQsxEACyACIAlBnOODARCzEQALIBEgBCgCmAIiCk8NAiAEKAKUAiIIIBFBAnRqIBM2AgAgEUEBaiERCyASQRRqIhIgEEcNAAsgCCAKQQJ0aiEJDAQLIBEgCkGcrYABELMRAAtBvOCbARDTGQsACyAEKAKYAiIKRQ0BIAQoApQCIgggCkECdGohCQsgBEGoAmohDiAIIQsDQAJAIAsoAgAiAkEBRg0AIAQoAqQCIgcgAkkNAyAHIAJGDQQgByACayEHAkACQAJAIAQoAqACIAJBAnRqIgItAAAiBUGCfmoOAgECAAsgB0EBRg0HIAIoAgQiDCAKTw0KIAIgCCAMQQJ0aigCADYCBCAHIAVBAnYgBUEDcUEAR2pBAmoiDEkNCCAFIAcgDGsiB0sNCSAFRQ0CIAIgDEECdGohAiAFQQJ0IQcCQANAIAIoAgAiBSAKTw0BIAIgCCAFQQJ0aigCADYCACACQQRqIQIgB0F8aiIHDQAMBAsLIAUgCkHQp4ABELMRAAsgB0EBRg0KIAIoAgQiBSAKTw0LIAIgCCAFQQJ0aigCADYCBCAHQQJGDQwCQCACKAIIIgcgCk8NACACIAggB0ECdGooAgA2AggMAgsgByAKQZCogAEQsxEACyAHQQFGDQwgAigCBCIMIApPDQ4gBCgCxAIhBSACIAggDEECdGooAgA2AgQgBSAHQX5qIgdLDQ0gBUUNACAFQQJ0IQcgAkEIaiECA0AgAigCACIFIApPDRAgAiAIIAVBAnRqKAIANgIAIAJBBGohAiAHQXxqIgcNAAsLIAtBBGoiCyAJRg0PDAALCyADKALQAiECQQAhCgwOCyACIAdBjK2AARCjIAALQQBBAEHs4YMBELMRAAtBAUEBQZCngAEQsxEACyAMIAdBsKeAARCjIAALIAUgB0HAp4ABEI8gAAsgDCAKQaCngAEQsxEAC0EBQQFB4KeAARCzEQALIAUgCkHwp4ABELMRAAtBAkECQYCogAEQsxEAC0EBQQFBoKiAARCzEQALIAUgB0HAqIABEI8gAAsgDCAKQbCogAEQsxEACyAFIApB0KiAARCzEQALIAMoAtACIgIgCk8NACAEIAggAkECdGooAgA2AtAEIAMoAtQCIgIgCk8NASAEIAggAkECdGooAgA2AtQEIAMoAtgCIgIgCk8NAiAEIAggAkECdGooAgA2AtgEIAMoAtwCIgIgCk8NAyAEIAggAkECdGooAgA2AtwEAkAgBCgCnAIgBCgCpAIiAk0NACAEQQhqIARBnAJqIAJBBEEEEO0MIAQoAggiAkGBgICAeEcNBQsCQCAEKAKoAiAEKAKwAiICTQ0AIAQgDiACQQRBBBDtDCAEKAIAIgJBgYCAgHhHDQYLAkBByAJFDQAgACAEQZwCakHIAvwKAAALIAQoApACIAhBBEEEELURIARBgAVqJAAPCyACIApBrKyAARCzEQALIAIgCkG8rIABELMRAAsgAiAKQcysgAEQsxEACyACIApB3KyAARCzEQALIAIgBCgCDEHsrIABEKoeAAsgAiAEKAIEQfysgAEQqh4AC4wdAQ1/IwBBwABrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkADQAJAIAIoAgAiBEEFRg0AAkACQAJAIAQOCAABBgACDAgFAAtBAC0AwPGdARpBEBCFASICRQ0LIAJBAToADCACQQA2AgggAkKAgICAEDcCACAAQQE2AgggACACNgIEIABBATYCAAwUCyACKAIIIgRBf0wNBSACKAIEIQICQAJAIAQNAEEBIQUMAQtBAC0AwPGdARogBBCFASIFRQ0LCwJAIARFDQAgBSACIAT8CgAAC0EALQDA8Z0BGkEQEIUBIgJFDQogAkEBOgAMIAIgBDYCCCACIAU2AgQgAiAENgIAIANBKGpBCGoiBEEBNgIAIAMgAjYCLCADQQE2AiggASgCCCABLQAQIANBKGoQ1wkgAEEIaiAEKAIANgIAIAAgAykCKDcCAAwTCyADIAEgAigCDBCSASACKAIEIQQCQCACKAIQIgYNACACLQAUIQUCQAJAIARFDQAgAigCCEEBRg0BCyADKAIAQYCAgIB4Rg0AIAMoAggiAkUNACACQQR0IQQgAygCBEEMaiECA0AgAkEAOgAAIAJBEGohAiAEQXBqIgQNAAsLQQAtAMDxnQEaQRAQhQEiAkUNCiACQQE6AAwgAkEANgIIIAJCgICAgBA3AgAgA0EBNgIgIAMgAjYCHCADQQE2AhgCQCAFQQFxDQBBACECA0AgAyACaiIEKAIAIQUgBCADQRhqIAJqIgcoAgA2AgAgByAFNgIAIAJBBGoiAkEMRw0ACwsgA0EoakEIaiADQQhqKAIANgIAIAMgAykCADcDKCAAIAEoAgwgAS0AECADQShqIANBGGoQngQgA0EYahCuGwwTC0EALQDA8Z0BGiACKAIIIQIgASgCBCEIQRAQhQEhBwJAIARFDQAgBiACRw0AIAdFDQogB0EBOgAMQQAhCSAHQQA2AgggB0KAgICAEDcCAAJAAkAgCEUNACAIIAYgCCAGSRshCiADKAIIIQsgAygCBCEMIAMoAgBBgICAgHhGIQ1BASEOQQEhDwNAIA9BgICAgHhGDRQgCUEBaiEJIA5BBHQhAiAHIQQCQANAIAJFDQEgAkFwaiECIAQtAAwhBSAEQRBqIQQgBUEBRw0ACyADIA42AhQgAyAHNgIQIAMgDzYCDAJAAkAgDQ0AIANBKGogDCALELALDAELIANBgICAgHg2AigLIANBGGpBCGogA0EoakEIaigCADYCACADIAMpAig3AxggA0EoaiABIANBDGogA0EYahDqASADKAIoIQ8gAygCLCEHIAMoAjAhDiADQRhqEK4bIAkgCkcNAQsLIAYgCE0NFCAPQYCAgIB4Rg0UIA5FDRIgByAOQQR0aiEEDAELIAdBEGohBEEBIQ9BASEOCyAHIQIDQCACQQxqQQA6AAAgAkEQaiICIARHDQAMEwsLIAdFDQkgB0EBOgAMQQAhCSAHQQA2AgggB0KAgICAEDcCAAJAIAgNACAHQRBqIQRBASEPQQEhDgwPCyAIIAYgCCAGSRshBiADKAIIIQogAygCBCENIAMoAgBBgICAgHhGIQhBASEOQQEhDwNAIA9BgICAgHhGDREgCUEBaiEJIA5BBHQhAiAHIQQDQCACRQ0PIAJBcGohAiAELQAMIQUgBEEQaiEEIAVFDQALIAMgDjYCFCADIAc2AhAgAyAPNgIMAkACQCAIDQAgA0EoaiANIAoQsAsMAQsgA0GAgICAeDYCKAsgA0EYakEIaiADQShqQQhqKAIANgIAIAMgAykCKDcDGCADQShqIAEgA0EMaiADQRhqEOoBIAMoAighDyADKAIsIQcgAygCMCEOIANBGGoQrhsgCSAGRw0ADA4LCyACKAIEIQIMAAsLAkACQCACKAIMIgUNAEEEIQdBACECQQAhDwwBCyACKAIIIQQgBUEcbEFkaiEFIAEtABAhDiABKAIMIQZBBCEHQQAhD0EAIQIDQCADIA82AiAgAyAHNgIcIAMgAjYCGCADQShqIAEgBBCSASADQQxqIAYgDiADQRhqIANBKGoQngQgAygCDCECIAMoAhAhByADKAIUIQ8gA0EoahCuGyAFRQ0BIAVBZGohBSAEQRxqIQQgAkGAgICAeEcNAAsLIAAgDzYCCCAAIAc2AgQgACACNgIADA8LIAIoAgQNBCACKAIQIgRFDQIgAigCDCILIARBA3QiBWohDCABKAIAIQdBACEEIAshAgJAAkADQCAEIAdLDQEgBCACQQRqKAIAaiACKAIAa0EBaiEEIAJBCGohAiAFQXhqIgUNAAsgBCAHSw0AIANBADYCFCADQoCAgIDAADcCDCADQSpqIQ1BACEHQQQhCgwBCyAAQYCAgIB4NgIADA8LA0ACQCALKAIAIgIgCygCBCIPSw0AA0AgA0EANgIAAkACQAJAIAJBgAFJDQAgAkGAEEkNAQJAIAJBgIAESQ0AIAMgAkE/cUGAAXI6AAMgAyACQRJ2QfABcjoAACADIAJBBnZBP3FBgAFyOgACIAMgAkEMdkE/cUGAAXI6AAFBBCEEDAMLIAMgAkE/cUGAAXI6AAIgAyACQQx2QeABcjoAACADIAJBBnZBP3FBgAFyOgABQQMhBAwCCyADIAI6AABBASEEDAELIAMgAkE/cUGAAXI6AAEgAyACQQZ2QcABcjoAAEECIQQLIANBADYCICADQoCAgIAQNwIYIANBgPyEATYCLCADQqCAgIAONwIwIAMgA0EYajYCKAJAIANBKGogAyAEEO0FDQAgAygCHCEEIAMoAhghDgJAAkACQCADKAIMIgVBgICAgHhGDQAgAygCICEIIAdBBHQhBiAHRQ0BIAogBmoiCUFwakUNASAJQXRqKAIAIAlBeGooAgAgBCAIEJscRQ0BIAlBfGotAABB/wFxRQ0BCyAOIARBAUEBEMARDAELAkAgByAFRw0AIANBDGpB1KiFARCfFiADKAIQIQoLIAogBmoiBUEBOgAMIAUgCDYCCCAFIAQ2AgQgBSAONgIAIAUgAy8AKDsADSAFQQ9qIA0tAAA6AAAgAyAHQQFqIgc2AhQLIAIgD08iBA0CIAJBgMADIAJBAWogAkH/rwNGGyAEGyICIA9LDQIMAQsLQfjPmwFBNyADQT9qQZj8hAFBsNCbARDoDwwHCyALQQhqIgsgDEYNBAwACwtBvOCbARDTGQALIAIoAgwhBCACKAIIIQ8CQCABLQAQDQBBAC0AwPGdARpBEBCFASIHRQ0EQQEhDiAHQQE6AAwgB0EANgIIIAdCgICAgBA3AgACQAJAIAQNAEEBIQYMAQsgDyAEQRxsaiEJQQEhBkEBIQ4DQAJAIA5BgICAgHhHDQBBgICAgHghDgwCCyAPQRxqIQggBkEEdCECIAchBANAIAJFDQIgAkFwaiECIAQtAAwhBSAEQRBqIQQgBUEBRw0ACyADIAY2AiAgAyAHNgIcIAMgDjYCGCADQShqIAEgDxCSASADQQxqIAEgA0EYaiADQShqEOoBIAMoAgwhDiADKAIQIQcgAygCFCEGIANBKGoQrhsgCCEPIAggCUcNAAsLIAAgBjYCCCAAIAc2AgQgACAONgIADA0LQQAtAMDxnQEaQRAQhQEiB0UNA0EBIQ4gB0EBOgAMIAdBADYCCCAHQoCAgIAQNwIAAkACQCAEDQBBASEGDAELIA8gBEEcbGohCEEBIQZBASEOA0ACQCAOQYCAgIB4Rw0AQYCAgIB4IQ4MAgsgCEFkaiEIIAZBBHQhAiAHIQQDQCACRQ0CIAJBcGohAiAELQAMIQUgBEEQaiEEIAVBAUcNAAsgAyAGNgIgIAMgBzYCHCADIA42AhggA0EoaiABIAgQkgEgA0EMaiABIANBGGogA0EoahDqASADKAIMIQ4gAygCECEHIAMoAhQhBiADQShqEK4bIA8gCEcNAAsLIAAgBjYCCCAAIAc2AgQgACAONgIADAwLIANBADYCFCADQoCAgIDAADcCDAsgASgCCCABLQAQIANBDGoQ1wkgAEEIaiADQQxqQQhqKAIANgIAIAAgAykCDDcCAAwKCyACKAIQIgRFDQIgAigCDCIJIARBAXQiBWohCiABKAIAIQ5BACEEIAkhAgJAAkADQCAEIA5LDQEgAkEBai0AACIHIAItAAAiD0kNBCACQQJqIQIgBCAHIA9rQf8BcWpBAWohBCAFQX5qIgUNAAsgBCAOSw0AIANBADYCMCADQoCAgIDAADcCKEEAIQ9BBCEIDAELIABBgICAgHg2AgAMCgsDQAJAIAktAAAiAiAJLQABIgVLDQADQEEALQDA8Z0BGkEBEIUBIgRFDQMgBCACOgAAAkACQAJAIAMoAigiB0GAgICAeEYNACAPQQR0IQ4gD0UNASAIIA5qIgZBcGpFDQEgBkF0aigCACAGQXhqKAIAIARBARCbHEUNASAGQXxqLQAAQf8BcUUNAQtBASAEQQFBARDAEQwBCwJAIA8gB0cNACADQShqQdSohQEQnxYgAygCLCEICyAIIA5qIgdBAToADCAHQQE2AgggByAENgIEIAdBATYCACAHIAMvABg7AA0gB0EPaiADQRhqQQJqLQAAOgAAIAMgD0EBaiIPNgIwCyACQf8BcSIEIAVPDQEgAiAEIAVJaiICQf8BcSAFTQ0ACwsgCUECaiIJIApGDQQMAAsLAAtB6MeFARCbIAALIANBADYCMCADQoCAgIDAADcCKAsgASgCCCABLQAQIANBKGoQ1wkgAEEIaiADQShqQQhqKAIANgIAIAAgAykCKDcCAAwFCyAPQYCAgIB4Rg0CIA5FDQEgByAOQQR0aiEECyAHIQIDQCACQQxqQQA6AAAgAkEQaiICIARHDQAMAwsLQQAhDgwBC0GAgICAeCEPCyAAIA42AgggACAHNgIEIAAgDzYCACADEK4bCyADQcAAaiQAC90bAg9/AX4jAEEwayICJAACQAJAIAEoAlwiA0UNACABKAJoIQQgASgCWCIFLQAAIQYgAkGAgICAeDYCDEHAupkBQcC8mQEgBkEiRiIHGyEIIARBAWohCSADQX9qIQogBUEBaiELIAZBJ0YhDAwBC0GExZkBEJsgAAsCQAJAAkACQAJAAkADQAJAAkAgDA0AIAkhDQNAQQAhBkEAIQ4CQAJAIApBIUkNAEEAIQ9BACEQA0ACQCAIIAsgEGoiBS0AACIDai0AAEUNACAQIQ4MAwsCQCAIIAVBAWotAAAiA2otAABFDQAgECEOQQEhDwwDCwJAIAggBUECai0AACIDai0AAEUNACAQIQ5BAiEPDAMLAkAgCCAFQQNqLQAAIgNqLQAARQ0AIBAhDkEDIQ8MAwsCQCAIIAVBBGotAAAiA2otAABFDQAgECEOQQQhDwwDCwJAIAggBUEFai0AACIDai0AAEUNACAQIQ5BBSEPDAMLAkAgCCAFQQZqLQAAIgNqLQAARQ0AIBAhDkEGIQ8MAwsCQCAIIAVBB2otAAAiA2otAABFDQAgECEOQQchDwwDCwJAIAggBUEIai0AACIDai0AAEUNACAQIQ5BCCEPDAMLAkAgCCAFQQlqLQAAIgNqLQAARQ0AIBAhDkEJIQ8MAwsCQCAIIAVBCmotAAAiA2otAABFDQAgECEOQQohDwwDCwJAIAggBUELai0AACIDai0AAEUNACAQIQ5BCyEPDAMLAkAgCCAFQQxqLQAAIgNqLQAARQ0AIBAhDkEMIQ8MAwsCQCAIIAVBDWotAAAiA2otAABFDQAgECEOQQ0hDwwDCwJAIAggBUEOai0AACIDai0AAEUNACAQIQ5BDiEPDAMLAkAgCCAFQQ9qLQAAIgNqLQAARQ0AIBAhDkEPIQ8MAwsCQCAIIAVBEGotAAAiA2otAABFDQAgECEOQRAhDwwDCwJAIAggBUERai0AACIDai0AAEUNACAQIQ5BESEPDAMLAkAgCCAFQRJqLQAAIgNqLQAARQ0AIBAhDkESIQ8MAwsCQCAIIAVBE2otAAAiA2otAABFDQAgECEOQRMhDwwDCwJAIAggBUEUai0AACIDai0AAEUNACAQIQ5BFCEPDAMLAkAgCCAFQRVqLQAAIgNqLQAARQ0AIBAhDkEVIQ8MAwsCQCAIIAVBFmotAAAiA2otAABFDQAgECEOQRYhDwwDCwJAIAggBUEXai0AACIDai0AAEUNACAQIQ5BFyEPDAMLAkAgCCAFQRhqLQAAIgNqLQAARQ0AIBAhDkEYIQ8MAwsCQCAIIAVBGWotAAAiA2otAABFDQAgECEOQRkhDwwDCwJAIAggBUEaai0AACIDai0AAEUNACAQIQ5BGiEPDAMLAkAgCCAFQRtqLQAAIgNqLQAARQ0AIBAhDkEbIQ8MAwsCQCAIIAVBHGotAAAiA2otAABFDQAgECEOQRwhDwwDCwJAIAggBUEdai0AACIDai0AAEUNACAQIQ5BHSEPDAMLAkAgCCAFQR5qLQAAIgNqLQAARQ0AIBAhDkEeIQ8MAwsCQCAIIAVBH2otAAAiA2otAABFDQAgECEOQR8hDwwDCyAQQcAAaiEDIBBBIGoiDiEQIAMgCkkNAAsLIAogDmshBSALIA5qIRADQCAFIAZGDQkgECAGaiEDIAZBAWohBiAIIAMtAAAiA2otAABFDQALIAZBf2ohDwsgASAPIA5qIgYgDWoiBTYCaCABIAogBmsiEDYCXCABIAsgBmoiBjYCWAJAAkACQCADQXZqDhkJAgIJAgICAgICAgICAgICAgICAgICAgIBAAsgA0HcAEYNBAwBCyAHDQYLIAEgBUEBaiINNgJoIAEgEEF/aiIKNgJcIAEgBkEBaiILNgJYDAALCyAJIQ0DQEEAIQZBACEOAkACQCAKQSFJDQBBACEPQQAhEANAAkAgCCALIBBqIgUtAAAiA2otAABFDQAgECEODAMLAkAgCCAFQQFqLQAAIgNqLQAARQ0AIBAhDkEBIQ8MAwsCQCAIIAVBAmotAAAiA2otAABFDQAgECEOQQIhDwwDCwJAIAggBUEDai0AACIDai0AAEUNACAQIQ5BAyEPDAMLAkAgCCAFQQRqLQAAIgNqLQAARQ0AIBAhDkEEIQ8MAwsCQCAIIAVBBWotAAAiA2otAABFDQAgECEOQQUhDwwDCwJAIAggBUEGai0AACIDai0AAEUNACAQIQ5BBiEPDAMLAkAgCCAFQQdqLQAAIgNqLQAARQ0AIBAhDkEHIQ8MAwsCQCAIIAVBCGotAAAiA2otAABFDQAgECEOQQghDwwDCwJAIAggBUEJai0AACIDai0AAEUNACAQIQ5BCSEPDAMLAkAgCCAFQQpqLQAAIgNqLQAARQ0AIBAhDkEKIQ8MAwsCQCAIIAVBC2otAAAiA2otAABFDQAgECEOQQshDwwDCwJAIAggBUEMai0AACIDai0AAEUNACAQIQ5BDCEPDAMLAkAgCCAFQQ1qLQAAIgNqLQAARQ0AIBAhDkENIQ8MAwsCQCAIIAVBDmotAAAiA2otAABFDQAgECEOQQ4hDwwDCwJAIAggBUEPai0AACIDai0AAEUNACAQIQ5BDyEPDAMLAkAgCCAFQRBqLQAAIgNqLQAARQ0AIBAhDkEQIQ8MAwsCQCAIIAVBEWotAAAiA2otAABFDQAgECEOQREhDwwDCwJAIAggBUESai0AACIDai0AAEUNACAQIQ5BEiEPDAMLAkAgCCAFQRNqLQAAIgNqLQAARQ0AIBAhDkETIQ8MAwsCQCAIIAVBFGotAAAiA2otAABFDQAgECEOQRQhDwwDCwJAIAggBUEVai0AACIDai0AAEUNACAQIQ5BFSEPDAMLAkAgCCAFQRZqLQAAIgNqLQAARQ0AIBAhDkEWIQ8MAwsCQCAIIAVBF2otAAAiA2otAABFDQAgECEOQRchDwwDCwJAIAggBUEYai0AACIDai0AAEUNACAQIQ5BGCEPDAMLAkAgCCAFQRlqLQAAIgNqLQAARQ0AIBAhDkEZIQ8MAwsCQCAIIAVBGmotAAAiA2otAABFDQAgECEOQRohDwwDCwJAIAggBUEbai0AACIDai0AAEUNACAQIQ5BGyEPDAMLAkAgCCAFQRxqLQAAIgNqLQAARQ0AIBAhDkEcIQ8MAwsCQCAIIAVBHWotAAAiA2otAABFDQAgECEOQR0hDwwDCwJAIAggBUEeai0AACIDai0AAEUNACAQIQ5BHiEPDAMLAkAgCCAFQR9qLQAAIgNqLQAARQ0AIBAhDkEfIQ8MAwsgEEHAAGohAyAQQSBqIg4hECADIApJDQALCyAKIA5rIQUgCyAOaiEQA0AgBSAGRg0IIBAgBmohAyAGQQFqIQYgCCADLQAAIgNqLQAARQ0ACyAGQX9qIQ8LIAEgDyAOaiIGIA1qIgU2AmggASAKIAZrIhA2AlwgASALIAZqIgY2AlgCQAJAIANBdmoOHgcBAQcBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBgALIANB3ABGDQILIAEgBUEBaiINNgJoIAEgEEF/aiIKNgJcIAEgBkEBaiILNgJYDAALCyABIAU2AmggASABKAJkIAUgASgCbCIDayIGazYCXCABIAEoAmAiBSAGaiIKNgJYIAUgCSADayIQaiEDAkACQCACKAIMQYCAgIB4Rw0AIAJBGGogBiAQayIGQQFBARDMDSACKAIcIRAgAigCGEEBRg0DIAIoAiAhBQJAIAZFDQAgBSADIAb8CgAACyACIAY2AhQgAiAFNgIQIAIgEDYCDAwBCyACQQxqIAMgChDiGAsgAkEYaiABQQAQ2gIgAigCHCEDAkAgAigCGCIGQQJHDQAgACADNgIEQQEhBgwHCwJAAkAgBkEBcUUNACACKAIMQYCAgIB4Rg0BIAJBDGogAxDABgsgASgCXCEKIAEoAlghCyABKAJoIQkMAQsLQZTFmQEQmyAACyAQIAIoAiBBvOCbARCqHgALIAUgASgCbCIIayEGIAkgCGshAyABKAJkIRAgASgCYCEIAkACQCACKAIMQYCAgIB4Rg0AIAJBDGogCCADaiAIIAZqEOIYIAEoAnRBCGogAigCECACKAIUEMsDIREMAQsgASgCdEEIaiAIIANqIAYgA2sQywMhEQsgASAFQQFqNgJoIAEgECAGQX9zajYCXCABIAggBmpBAWo2AlgCQCABKAIIQQpGDQAgAUEIahDECAsgASARNwMQIAFBBDYCCCAAQcAAOgABDAILIAEgBTYCaCABIAEoAmQgBSABKAJsIghrIgZrNgJcIAEgASgCYCIDIAZqNgJYIAJBm4CAgHg2AhggASAEIAJBGGoQ5x8gASgCdEEIaiADIAkgCGsiCGogBiAIaxDLAyERAkAgASgCCEEKRg0AIAFBCGoQxAgLIAEgETcDECABQQQ2AgggAEHAADoAAQwBCyABIAogDWoiBjYCaCABIAEoAmQgBiABKAJsIghrIgZrNgJcIAEgASgCYCIDIAZqNgJYIAJBm4CAgHg2AhggASAEIAJBGGoQ5x8gASgCdEEIaiADIAkgCGsiCGogBiAIaxDLAyERAkAgASgCCEEKRg0AIAFBCGoQxAgLIAEgETcDECABQQQ2AgggAEHAADoAAQtBACEGCyAAIAY6AAACQCACKAIMIgZBgICAgHhGDQAgBiACKAIQEI4gCyACQTBqJAAL8xsBC38jAEHAAWsiAiQAAkAgAC0AbEECRw0AIABBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgACgChAEiA0UNACAAKAKAASIEIANB2ABsaiEFA0ACQAJAAkACQCAEKAIAIgNBBUcNACAEKAIEIgMoAgBBGkcNASACIAEoAgAgASgCBCADQQhqIgYQtQwgAigCAEEyRg0DIAMQyQEgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDACADQShqIAJBKGopAwA3AwAgA0EgaiACQSBqKQMANwMAIANBGGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgBiACQQhqKQMANwMAIAMgAikDADcDAAwDCyADQQRGDQICQAJAAkAgAw4EBQABBAULIAQoAgRBAUcNBCAEKAIIIgMoAgBBGkcNASACQYABaiABKAIAIAEoAgQgA0EIaiIGELUMIAIoAoABQTJGDQQgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsCQCAEKAIEIgctAGxBAkcNACAHQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCwJAIAcoAoQBIgZFDQAgBygCgAEhAyAGQdgAbCEGA0ACQAJAAkACQCADKAIAQXxqDgIDAAELIANBBGooAgAiCCgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAIQQhqIgkQtQwgAigCgAFBMkYNAiAIEMkBIAhBOGogAkGAAWpBOGopAwA3AwAgCEEwaiACQYABakEwaikDADcDACAIQShqIAJBgAFqQShqKQMANwMAIAhBIGogAkGAAWpBIGopAwA3AwAgCEEYaiACQYABakEYaikDADcDACAIQRBqIAJBgAFqQRBqKQMANwMAIAkgAkGAAWpBCGopAwA3AwAgCCACKQOAATcDAAwCCyADIAEQ/gEMAQsgCCABEEYLIANB2ABqIQMgBkGof2oiBg0ACwsCQCAHQZgBaigCACIDRQ0AIAdBlAFqKAIAIgkgA0EobGohCgNAAkACQAJAAkACQAJAAkAgCSgCAA4FBgABAgUGCyAJKAIEQQFHDQUgCSgCCCIDKAIAQRpHDQMgAkGAAWogASgCACABKAIEIANBCGoiBhC1DCACKAKAAUEyRg0FIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAULIAkoAgQiAygCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCADQQhqIgYQtQwgAigCgAFBMkYNBCADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAYgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwECwJAIAkoAgQiCy0AbEECRw0AIAtBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgC0GEAWooAgAiBkUNACALQYABaigCACEDIAZB2ABsIQYDQAJAAkACQCADKAIAQQVHDQAgA0EEaigCACIIKAIAQRpHDQEgAkGAAWogASgCACABKAIEIAhBCGoiDBC1DCACKAKAAUEyRg0CIAgQyQEgCEE4aiACQYABakE4aikDADcDACAIQTBqIAJBgAFqQTBqKQMANwMAIAhBKGogAkGAAWpBKGopAwA3AwAgCEEgaiACQYABakEgaikDADcDACAIQRhqIAJBgAFqQRhqKQMANwMAIAhBEGogAkGAAWpBEGopAwA3AwAgDCACQYABakEIaikDADcDACAIIAIpA4ABNwMADAILIAMgARCnCAwBCyAIIAEQRgsgA0HYAGohAyAGQah/aiIGDQALCwJAIAtBmAFqKAIAIgZFDQAgC0GUAWooAgAhAyAGQShsIQYDQCABIAMQuwIgA0EoaiEDIAZBWGoiBg0ACwsgCy0APCIDQQZGDQMgA0ECRw0DIAtBEGohAwNAIAMoAhgiAy0ALEECRg0ADAQLCyADIAEQRgwCCyADIAEQRgwBCyAJKAIMIQYgCSgCCCEDIAIgATYCgAEgBkUNACAGQShsIQYDQCACQYABaiADELwDIANBKGohAyAGQVhqIgYNAAsLIAlBKGoiCSAKRw0ACwsgBy0APCIDQQZGDQMgA0ECRw0DIAdBEGohAwNAIAMoAhgiAy0ALEECRg0ADAQLCyADIAEQRgwCCyADIAEQRgwBCyAEKAIMIQYgBCgCCCEDIAIgATYCgAEgBkUNACAGQShsIQYDQCACQYABaiADELwDIANBKGohAyAGQVhqIgYNAAsLIARB2ABqIgQgBUcNAAsLAkAgACgCmAEiA0UNACAAKAKUASIJIANBKGxqIQsDQAJAAkACQAJAAkACQAJAIAkoAgAOBQYAAQIFBgsgCSgCBEEBRw0FIAkoAggiAygCAEEaRw0DIAJBgAFqIAEoAgAgASgCBCADQQhqIgYQtQwgAigCgAFBMkYNBSADEMkBIANBOGogAkGAAWpBOGopAwA3AwAgA0EwaiACQYABakEwaikDADcDACADQShqIAJBgAFqQShqKQMANwMAIANBIGogAkGAAWpBIGopAwA3AwAgA0EYaiACQYABakEYaikDADcDACADQRBqIAJBgAFqQRBqKQMANwMAIAYgAkGAAWpBCGopAwA3AwAgAyACKQOAATcDAAwFCyAJKAIEIgMoAgBBGkcNASACQYABaiABKAIAIAEoAgQgA0EIaiIGELUMIAIoAoABQTJGDQQgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMBAsCQCAJKAIEIgwtAGxBAkcNACAMQcAAaiEDA0AgAygCGCIDLQAsQQJGDQALCyAMQZABaiEKAkAgDEGEAWooAgAiBkUNACAMQYABaigCACEDIAZB2ABsIQYDQAJAAkACQCADKAIAQQVHDQAgA0EEaigCACIIKAIAQRpHDQEgAkGAAWogASgCACABKAIEIAhBCGoiBBC1DCACKAKAAUEyRg0CIAgQyQEgCEE4aiACQYABakE4aikDADcDACAIQTBqIAJBgAFqQTBqKQMANwMAIAhBKGogAkGAAWpBKGopAwA3AwAgCEEgaiACQYABakEgaikDADcDACAIQRhqIAJBgAFqQRhqKQMANwMAIAhBEGogAkGAAWpB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RQ0BIAEtAAANASAFIAEQlQEMAQsgBUEEaigCACABEPMICyAHIANBOGoiA0cNAAwFCwsgAygCBCABEPMIIAEtAAANAyADKAIIIAEQlQEMAwsgAS0AAA0CIAMoAgQgARCVAQwCCyADKAIwIgNFDQEgAS0AAA0BIAMgARCVAQwBCwJAAkACQAJAAkAgAygCBCIDKAIADgcFAAECAwUEBQsgA0EMaigCACIFRQ0EIANBCGooAgAhAyAFQShsIQUDQAJAIAMoAgBBB0YNACADIAEQ8wgLIANBKGohAyAFQVhqIgUNAAwFCwsgAygCBCABEPMIDAMLIANBDGooAgAiBUUNAiADQQhqKAIAIQYgBUE4bCEHQQAhAwNAAkACQAJAAkAgBiADaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACABLQAADQAgBUEMaigCACABEJUBCyAFQShqKAIAIAEQ8wgMAgsgBUEwaigCACIFRQ0BIAEtAAANASAFIAEQlQEMAQsgBUEEaigCACABEPMICyAHIANBOGoiA0cNAAwDCwsgAygCBCABEPMIIAEtAAANASADKAIIIAEQlQEMAQsgAS0AAA0AIAMoAgQgARCVAQsgAiAERw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAIAIOCwoAAQIDBAUGBwgKCgsCQCABLQAADQAgACgCKCABEJUBCyAAKAIIQQJHDQkgAS0AAA0JIABBDGohAwwICyAAKAIIQQFHDQggAS0AAA0IIABBDGohAwwHCyABLQAADQcgAEEEaiEDDAYLAkAgACgCBCIDKAIAIgJBA0cNAAJAIAEtAAANACADKAIQIAEQlQELIANBDGooAgAiAkUNByABLQAADQcgAkEEdCECIANBCGooAgBBDGohAwNAAkAgAS0AAA0AIAMoAgAgARCVAQsgA0EQaiEDIAJBcGoiAg0ADAgLCwJAIAEtAAANACADKAIgIAEQlQELIAJBAkcNBiABLQAADQYgA0EEaiEDDAULIAEtAAANBSAAQQRqIQMMBAsgAS0AAA0EIABBBGohAwwDCyABLQAADQMgAEEEaiEDDAILIAEtAAANAiAAQQRqIQMMAQsgAS0AAA0BIABBBGohAwsgAygCACABEJUBCyABLQAADRggACgCOCEADBYLAkAgAS0AAA0AIAAoAiggARCVAQsg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IAFBABCeASADKAJEIQogAygCQCIEQQdGDQQgA0HoAWpBGGoiDSAHQRhqKQMANwMAIANB6AFqQRBqIg4gB0EQaikDADcDACADQegBakEIaiIPIAdBCGopAwA3AwAgAyAHKQMANwPoASABKAK8ASEIQQhBKBDrHyIFDQEMCwsgA0HAAGogARDVByADKAJEIQogAygCQCIMQQdGDQMgA0H4AGpBGGoiDSAHQRhqKQMANwMAIANB+ABqQRBqIg4gB0EQaikDADcDACADQfgAakEIaiIPIAdBCGopAwA3AwAgAyAHKQMANwN4AkAgAiADKAKoAUcNACADQagBakGwtJsBELUWCyADKAKsASIEIAJBKGxqIgUgCjYCBCAFIAw2AgAgBSADKQN4NwMIIAVBEGogDykDADcDACAFQRhqIA4pAwA3AwAgBUEgaiANKQMANwMADAELIAUgCjYCBCAFIAQ2AgAgBSADKQPoATcDCCAFQRBqIA8pAwA3AwAgBUEYaiAOKQMANwMAIAVBIGogDSkDADcDAAJAIAIgAygCqAFHDQAgA0GoAWpBwLSbARC1FgsgAygCrAEiBCACQShsaiIKQQA2AhggCiAMNgIUIAogCTYCECAKIAg2AgwgCiAJNgIIIAogBTYCBCAKQQI2AgALIAMgAkEBaiICNgKwAQJAAkAgAS0AyAEiBUF7ag4DAgEAAQsgARCHDiALQRxHDQEgAS0AyAFB/wFxQQVHDQEgASgCvAEhBSABKAK4ASEKIANBuoCAgHg2AkAgASAKIAUgA0HAAGoQrxoMAQsLIAEoAsQBIQIgASgCwAEhBCADQcgBaiAFEN4bIANBATYCRCADQZjvmwE2AkAgA0IBNwJMIANBigWtQiCGQbynmwGthDcDMCADIANBMGo2AkggA0GQAmogA0HAAGoQjRUgA0GkAmogA0HQAWooAgA2AgAgAyADKQLIATcCnAIgBCACIANBkAJqEIUVIQogAS0AyAFBogFHDQAgARDHESECIAEQhw4gASACEOURCyAAQQc2AgAgACAKNgIEIANBqAFqENYdDAULIANBEGogASACEN0FAkACQCADLQAkQQJGDQAgA0HcAGogA0EoaikDADcCACADQdQAaiADQSBqKQMANwIAIANBzABqIANBGGopAwA3AgAgAyADKQMQNwJEAkBBJEUNACAAQQRqIANBwABqQST8CgAAC0EAIQEMAQsgACADKAIQNgIEQQchAQsgACABNgIADAQLIARBogFGDQELIANBwABqQQRyIAQQ3hsgA0EcNgJUIANB0LWbATYCUCADQbCAgIB4NgJAIAEoAsABIAEoAsQBIANBwABqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBBzYCACAAIAI2AgQMAgsgARDHESECIAEQhw4gAEEHNgIAIAAgAjYCBAwBCyABIAEoAngiEEH//3txNgJ4IAEoAsABIREgARCHDiADQQhqQQhBCEE4QZDCmwEQ2BQgA0EANgI4IAMgAygCDCILNgI0IAMgAygCCDYCMCADQegBakEIaiECIANB6AFqQQRqIQwgA0HAAGpBEGohEiADQegBakEEciETIANByAFqQQhqIQYgA0HAAGpBCGohFCADQcAAakEEciEVIAEtAMgBIQVBACEKQQAhFgJAAkADQCAKQThsIQcCQANAAkAgBUH/AXEiBUEDRw0AIAEQhw4gASgCvAEhBiADQcAAakEIaiADQTBqQQhqKAIAIgQ2AgAgAyADKQIwNwNAIAMgFjYCWCADIAY2AlQgAyARNgJQIAMgATYCTCAEQX9qIQUgAygCRCICIARBOGxqIQcgAyAYNwJcIBhCIIinIQggGKchCyAWQQFxIQkCQANAAkACQAJAIAIgB0YiBA0AIAIoAgAhCiAFRQ0BIApBAkcNAiACKAIMIQogAigCCCEMIANBu4CAgHg2AugBIAEgDCAKIANB6AFqEK8aDAILAkACQAJAIAEtAIEBQQRxDQBBACECIAEtAHlBwABxRQ0CIAEtAMgBQf8BcUEKRg0BDAILQQAhAiABLQDIAUEKRw0BCyABEIcOQQEhAgsgACADKQIwNwIEIAAgAjoAHCAAQQA2AhggACAGNgIUIAAgETYCECAAQQM2AgAgAEEMaiADQThqKAIANgIADAkLIApBAkcNACACKAIEKAIADQIgCUUNACADQbqAgIB4NgLoASABIAsgCCADQegBahCvGgsgAkEAQTggBBtqIQIgBUF/aiEFDAALCyACKAIIIQUgAigCDCECIANB7oCAgHg2AugBIAUgAiADQegBahCFFSECAkAgAS0AyAFBogFHDQAgARDHESEFIAEQhw4gASAFEOURCyAA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KAIIIQULIAJBADYCKCACQgA3AyAgAiAFNgIYIAIgDTcDECACIAMgAEEEdGo2AgwgAiAENgIIIAIgAzYCBCACIAM2AgAgAUHAAGogAhCfBgwLCwJAIA1CA4NCAFINACANpyIAIAAoAgAiAEEBajYCACAAQX9MDQkLIAIgAUHAAGogDCADIA0gASgCCBCbBQsgAikDAFANCSACKQMIIg1QDQkgDUIDg0IAUg0JIA2nIgMgAygCACIAQX9qNgIAIABBAUcNCSADIAMoAhAQwRsMCQsgACgCDCIDKAIADQggAiADKQMIIANBGGooAgAQuhggAigCCCEDIAIpAwAhDAJAAkAgASkDACINQgBSDQAgAiABQcAAaiAMIANCACADEJsFDAELAkAgDUIDg0IAUg0AIA2nIgAgACgCACIAQQFqNgIAIABBf0wNCAsgAiABQcAAaiAMIAMgDSABKAIIEJsFCyACKQMAUA0IIAIpAwgiDVANCCANQgODQgBSDQggDaciAyADKAIAIgBBf2o2AgAgAEEBRw0IIAMgAygCEBDBGwwICyAALQAgDQcgACgCGA0HAkAgACgCDCIERQ0AIAAoAgghAyAEQdAAbCEEIAFBwABqIQYDQEEIIQVBGCEHAkACQAJAAkAgAykDACIMQn58Ig1CAiANQgJUG6cOAwACAQALIANBCGooAgANAkEgIQdBECEFDAELIANByABqLQAADQECQAJAAkACQAJAIAEtAKABDQAgDKdBAXENAyACIANBCGoiBSkDACADQRhqIgcoAgAQuhggAigCCCEIIAIpAwAhDCABKQMAIg1CAFINASACIAYgDCAIQgAgAxCbBQwCCwJAIAynQQFxDQAgASADQQhqKQMAIANBGGooAgAQ1QwLIANBIGopAwAiDUICUQ0FIA2nQQFxDQUMAwsCQCANQgODQgBSDQAgDaciCSAJKAIAIglBAWo2AgAgCUF/TA0NCyACIAYgDCAIIA0gASgCCBCbBQsCQCACKQMAUA0AIAIpAwgiDVANACANQgODQgBSDQAgDaciCCAIKAIAIglBf2o2AgAgCUEBRw0AIAggCCgCEBDBGwsgASAFKQMAIAcoAgAQ1QwLIANBIGopAwAiDUICUQ0CIA2nQQFxDQILQTghB0EoIQULIAEgAyAFaikDACADIAdqKAIAENUMCyADQdAAaiEDIARBsH9qIgQNAAsLIAAoAhwiA0UNByADQQhqKAIAIgBFDQcgA0EEaigCACEDIABBDGwhAANAAkACQCADKAIAIgQNACADQQRqKAIAIAEQsQUMAQsgBCABEKgBCyADQQxqIQMgAEF0aiIADQAMCAsLIAEgACkDECAAKAIgENUMDAYLIAAoAgQgARCoAQwFCyAAKAIEIQQCQCABKAKcASIDRQ0AIAEoApgBIQAgAiAEKQMoIARBOGooAgAQuhggAigCCCEFIAIpAwAhDSAELQBBIQcgBC0AQCEIIAQoAiQhBiAEKAIgIQkCQCAAIANBLGxqIgNBXGoiCigCACIAIANBVGoiCygCAEcNACALEIcXCyADQVhqKAIAIABBBXRqIgMgBzoAGSADIAg6ABggAyAGNgIUIAMgCTYCECADIAU2AgggAyANNwMAIAogAEEBajYCAAsCQCABLQCgAQ0AIAQtAEBFDQAgAiAEKQMoIARBOGooAgAQuhggAigCCCEDIAIpAwAhDAJAAkAgASkDACINQgBSDQAgAiABQcAAaiAMIANCACADEJsFDAELAkAgDUIDg0IAUg0AIA2nIgAgACgCACIAQQFqNgIAIABBf0wNBQsgAiABQcAAaiAMIAMgDSABKAIIEJsFCyACKQMAUA0AIAIpAwgiDVANACANQgODQgBSDQAgDaciAyADKAIAIgBBf2o2AgAgAEEBRw0AIAMgAygCEBDBGwsgBC0AQQ0EIAQpAwBCAFINBCAEQQhqIQMCQCAELQAcQQJHDQADQCADKAIAIgBBGGohAyAALQAsQQJGDQALCwJAIAEoApwBIgBFDQAgASgCmAEgAEEsbGohAAJAIAQtAEANACACIAQpAyggBEE4aigCABC6GCACKAIIIQUgAikDACENIAIgAykDACADQRBqKAIAELoYIAIgAEFwaiANIAUgAikDACACKAIIEJ8FIAIpAwAiDVANASANQgODQgBSDQEgDaciACAAKAIAIgVBf2o2AgAgBUEBRw0BIAAgACgCEBDBGwwBCyACIAMpAwAgA0EQaigCABC6GCAAQWBqIgAgAikDACACKAIIEOcFGiACIAQpAyggBEE4aigCABC6GCAAIAIpAwAgAigCCBDnBRoLAkAgBC0AQA0AIAIgBCkDKCAEQThqKAIAELoYIAIoAgghACACKQMAIQ0gAiADKQMAIANBEGooAgAQuhggAiABQYABaiANIAAgAikDACACKAIIEJ8FIAIpAwAiDVANBSANQgODQgBSDQUgDaciAyADKAIAIgBBf2o2AgAgAEEBRw0FIAMgAygCEBDBGwwFCyABIAMpAwAgA0EQaigCABDVDCABIAQpAyggBEE4aigCABDVDAwECyAAKAIQIgNFDQMgA0EIaigCACIARQ0DIANBBGooAgAhAyAAQQxsIQADQAJAAkAgAygCACIEDQAgA0EEaigCACABELEFDAELIAQgARCoAQsgA0EMaiEDIABBdGoiAA0ADAQLCyAAKAIEIgMgARCoASABLQCgAQ0CIAMoAgBBGkcNAiACIAMpAwggA0EYaigCABC6GCACKAIIIQMgAikDACEMAkACQCABKQMAIg1CAFINACACIAFBwABqIAwgA0IAIAMQmwUMAQsCQCANQgODQgBSDQAgDaciACAAKAIAIgBBAWo2AgAgAEF/TA0CCyACIAFBwABqIAwgAyANIAEoAggQmwULIAIpAwBQDQIgAikDCCINUA0CIA1CA4NCAFINAiANpyIDIAMoAgAiAEF/ajYCACAAQQFHDQIgAyADKAIQEMEbDAILAAsCQAJAIAAoAggOAwABAgALAkAgACgCKCIEQQhqKAIAIgBFDQAgBEEEaigCACEDIABBDGwhAANAIAMoAgAgARCoASADQQxqIQMgAEF0aiIADQALCwJAIARBFGooAgAiAEUNACAEQRBqKAIAIQMgAEHYAGwhAANAIAMgARDxAiADQdgAaiEDIABBqH9qIgANAAsLIAQoAjAiA0UNASADIAEQqAEMAQsCQCAAKAIoIgZBCGooAgAiA0UNACAGQQRqKAIAIgQgA0EGdGohCANAAkAgBEE4aigCACIARQ0AIARBNGooAgAhAyAAQQxsIQADQCADKAIAIAEQqAEgA0EMaiEDIABBdGoiAA0ACwsCQAJAAkACQAJAAkAgBCgCAA4HBQABAgMFBAULIARBDGooAgAiAEUNBCAEQQhqKAIAIQMgAEEobCEAA0ACQCADKAIAQQdGDQAgAyABEKwJCyADQShqIQMgAEFYaiIADQAMBQsLIAQoAgQgARCsCQwDCyAEQQxqKAIAIgNFDQIgBEEIaigCACEFIANBOGwhB0EAIQMDQAJAAkACQAJAIAUgA2oiACgCAA4D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IAIgCkEBajYCHCADQShqIAAgBxCbGSADIAMpAyg3AjggA0EgaiADQThqIAoQmAwgAygCIEEBcUUNDCADKAIkIgcgACgCOCIITw0NIAQgACgCNCAHQQJ0aigCACIASQ0OIAIgBzYCDCACIAQ2AgggAkEBNgIAIAIgBCAAazYCBAwYCyAHIAAoAggiCE8NDgJAAkAgACgCBCAHQRRsaigCCCIIRQ0AIAIoAhwhCiAAKAIoIQsgACgCLCEJQQAhDANAIAggCU8NEiAMQQFqIQwgCyAIQQN0aigCBCIIDQALIAogDEkNAQsgAkEANgIYIAJBADYCACACIAIoAiBBAWoiBDYCIAwVCyACQQE2AhggAiAKQQFqNgIcIAIoAiAhCCADQRhqIAAgBxCbGSADIAMpAxg3AjggA0EQaiADQThqIAoQmAwgAygCEEEBcUUNECADKAIUIgcgACgCOCIBTw0RIAhBAWoiCCAAKAI0IAdBAnRqKAIAIgBJDRIgAiAHNgIMIAIgCDYCCCACQQE2AgAgAiAIIABrNgIEDBcLIAcgCEGMroABELMRAAsgCCALQZzjgwEQsxEACyAJIAtBnOODARCzEQALIAcgCEHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAcgCEGMroABELMRAAsgCCALQZzjgwEQsxEACyAJIAtBnOODARCzEQALIAcgAUHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAggCUGc44MBELMRAAtB+PKDARCbIAALIAcgCEHo8oMBELMRAAsgA0EANgJIIANBATYCPCADQcTmgwE2AjggA0IENwJAIANBOGpBzOaDARCFGwALIAcgCEGMroABELMRAAsgCCAJQZzjgwEQsxEAC0H48oMBEJsgAAsgByABQejygwEQsxEACyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgAkEANgIYIAIgBzYCFCACQQE2AhAgAiAENgIgIAJBADYCAAsCQCAEIAVPDQAgAEE8akEAIAYbIQ0gAEHIAGohDiABKAIMIQ8gASgCCCEQA0ACQAJAAkACQAJAAkACQAJAAkAgBCAPTw0AAkACQCAHIAAoAggiBk8NACAOIBAgBGotAAAiAWohCiAAKAIEIQsDQCALIAdBFGxqIgkhBwJAAkACQCAJKAIEIghFDQAgCCAKLQAAaiIHIAAoAiAiCE8NCCAAKAIcIAdBAnRqIQcMAQsDQCAHKAAAIgdFDQIgByAAKAIUIghPDQkgACgCECAHQQlsaiIIQQVqIQcgASAILQAAIgxLDQALIAEgDEcNASAIQQFqIQcLIAcoAAAiB0EBRw0DCyAJKAIMIgcgBkkNAAsLIAcgBkGs44MBELMRAAsgByAAKALQAk0NASAEIQgMBwsgBCAPQZydgAEQsxEACyACIAc2AhQgAkEBNgIQIAdFDQsCQCAHIAAoAtQCSw0AIAJCgYCAgBA3AhggA0EIaiAAIAcQmxkgAyADKQMINwI4IAMgA0E4akEAEJgMIAMoAgBBAXFFDQMgAygCBCIHIAAoAjgiCE8NBCAEQQFqIgggACgCNCAHQQJ0aigCACIASQ0FIAIgBzYCDCACIAg2AgggAkEBNgIAIAIgCCAAazYCBAwMCyADQThqIA0oAgAgDSgCBCIIKAIIQX9qQXhxakEIaiAQIA8gBCAFIAgoAhAREwAgAygCOEUNCyADKAI8IgQgAigCICIITQ0FDAYLIAcgCEG844MBELMRAAsgByAIQYzjgwEQsxEAC0H48oMBEJsgAAsgByAIQejygwEQsxEACyADQQA2AkggA0EBNgI8IANBxOaDATYCOCADQgQ3AkAgA0E4akHM5oMBEIUbAAsgCEEBaiEECyACIAQ2AiAgBCAFSQ0ACwsgAiAHNgIUIAJBATYCEAwCCyACQQA2AhggAiAHNgIUIAJBATYCECACIAQ2AiAgAkEANgIACwJAIAQgBU8NACAEIAEoAgwiESAEIBFLGyEQIABByABqIQ4gASgCCCENIAEtABBBAXEhBgNAAkACQAJAAkACQAJAIAQgEEYNAAJAIAcgACgCCCIKTw0AIA4gDSAEai0AACIBaiEPIAAoAgQhCwNAIAsgB0EUbGoiCSEHAkACQAJAIAkoAgQiCEUNACAIIA8tAABqIgcgACgCICIITw0HIAAoAhwgB0ECdGohBwwBCwNAIAcoAAAiB0UNAiAHIAAoAhQiCE8NCCAAKAIQIAdBCWxqIghBBWohByABIAgtAAAiDEsNAAsgASAMRw0BIAhBAWohBwsgBygAACIHQQFHDQQLAkAgBkUNACACQgE3AhAMCwsgCSgCDCIHIApJDQALCyAHIApBrOODARCzEQALIBAgEUGcnYABELMRAAsgByAAKALQAksNAyACIAc2AhQgAkEBNgIQIAcNAgwGCyAHIAhBvOODARCzEQALIAcgCEGM44MBELMRAAsgByAAKALUAksNACACQoGAgIAQNwIYAkACQAJAIAcgCk8NAAJAAkAgCyAHQRRsaigCCCIHRQ0AIAcgACgCLCIISQ0BIAcgCEGc44MBELMRAAtB+PKDARCbIAALIAAoAiggB0EDdGooAgAiByAAKAI4IghPDQEgBEEBaiIIIAAoAjQgB0ECdGooAgAiAEkNAiACIAc2AgwgAiAINgIIIAJBATYCACACIAggAGs2AgQMBgsgByAKQYyugAEQsxEACyAHIAhB6PKDARCzEQALIANBADYCSCADQQE2AjwgA0HE5oMBNgI4IANCBDcCQCADQThqQczmgwEQhRsACyACIARBAWoiBDYCICAEIAVHDQALCyACIAc2AhQgAkEBNgIQCyADQdAAaiQAC40YAhh/B34jAEGAAWsiBiQAIAAoAgghByAAQQA2AgggACgCACEIIAAoAgQhCSAAQoCAgICAATcCACAAKAIQIQogACgCDCELIABBACkDkPucASIeNwIMIABBFGpBACkDmPucASIfNwIAIAZBGGpBCGogHzcDACAGIB43AxggBkEANgIsIAsgChDVGiADQRBqIQwgCSAHQRhsaiENQYcFrUIghiAGQcgAaq2EISBBuAKtQiCGIAZBMGqthCEhIAUoAgAiDkF4aiEPIAZBGGpBEGohECAFKAIEIREgBSgCDCESIAkhCgJAA0ACQCAKIgcgDUcNACANIQoMAgsgB0EYaiEKIAcpAwAiHlANASAGIAcoAgg2AjggBiAeNwMwAkACQCAEIAZBMGoQixkNACABIAZBMGoQyAoNACACIAZBMGoQyAoNACAGQTBqQdzPmwEQ9hkNAAJAAkAgBigCJEUNACAGKQMwEPUYIh5CGYhCgYKEiJCgwIABfiEfIAYoAhwiEyAep3EhB0EAIRQgBigCGCELA0AgCyAHaikAACIiIB+FIh5Cf4UgHkL//fv379+//358g0KAgYKEiJCgwIB/gyEeAkACQANAIB5QDQEgBkEw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akEMaikCADcDACACQcABakEQaiIDIAJBsAJqQRRqKQIANwMAIAJBwAFqQRhqIgUgAkGwAmpBHGopAgA3AwAgAiACKQK0AjcDwAECQAJAIAIoArACIgRBIkYNACAAIAIpAtQCNwIkIABBPGogAkGwAmpBPGooAgA2AgAgAEE0aiACQbACakE0aikCADcCACAAQSxqIAJBsAJqQSxqKQIANwIAIABBHGogBSkDADcCACAAQRRqIAMpAwA3AgAgAEEMaiABKQMANwIAIAAgAikDwAE3AgQMAQsgAkHoAGpBCGoiBiABKQMANwMAIAJB6ABqQRBqIAMpAwAiCDcDACACQegAakEYaiAFKQMAIgk3AwAgAkHoAGpBDGogAkEIakEIaigCADYCACACIAIpA8ABNwNoIABBgoCAgHg2AgQgAEEYaiAINwIAIABBIGogCTcCACACIAIpAwg3AmwgACACKQNoNwIIIABBEGogBikDADcCAAsgACAENgIADAgLAkBBOEUiAw0AIAJBiAFqIAJBwAFqQTj8CgAACyACQawBaiACQRBqKAIANgIAIAIgAikDCDcCpAEgAw0AIABBBGogAkGIAWpBOPwKAAALIAAgATYCAAwGCyACQdAAaiABEK8MIAJBOGpBFGogAkHQAGpBFGooAgA2AgAgAkE4akEIaiACQQhqQQhqKAIANgIAIAIgAikCXDcCRCACIAIpAwg3AzggAkEgNgLAASACQbACaiABKAIEIAEoAgggAkE4aiACQcABahDRDEHAAEUNBSAAIAJBsAJqQcAA/AoAAAwFCyAAIAIpA5gCNwIMIABBAToAJCAAIAQ2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiADKQMANwIADAQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEHtAEoNAAJAIARBRGoOBw0CDgICCQwACyAEQZ9/ag4GAgoBAQEDAQsCQCAEQY5/ag4JBgEEAQcBAQEJAAsgBEHuAEYNBAsgAkELNgLAASACQbACaiABKAIEIAEoAgggAkGYAmogAkHAAWoQ0QxBwABFDREgACACQbACakHAAPwKAAAMEQsgACACKQOYAjcCDCAAQQY7ASQgAEEHNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMEAsgACACKQOYAjcCDCAAQYYCOwEkIABBDDYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADA8LIAAgAikDmAI3AgwgAEGGBDsBJCAAQQk2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwOCyAAIAIpA5gCNwIMIABBhgY7ASQgAEEKNgIIIABCooCAgKCAgICAfzcCACAAQRxqIAJBqAJqKQMANwIAIABBFGogAkGgAmopAwA3AgAMDQsgACACKQOYAjcCDCAAQYYIOwEkIABBDTYCCCAAQqKAgICggICAgH83AgAgAEEcaiACQagCaikDADcCACAAQRRqIAJBoAJqKQMANwIADAwLIAAgAikDmAI3AgwgAEGGCjsBJCAAQQs2AgggAEKigICAoICAgIB/NwIAIABBHGogAkGoAmopAwA3AgAgAEEUaiACQaACaikDADcCAAwLCyAAIAIpA5gCNwIIIABBAjoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBoAJqKQMANwIADAoLIAAgAikDmAI3AgggAEEDOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJBmAJqQRBqKQMANwIAIABBEGogAkGgAmopAwA3AgAMCQsgAkHAAWpBEGoiBCACQZgCakEQaikDADcDACACQcABakEIaiIGIAJBmAJqQQhqKQMANwMAIAIgAikDmAI3A8ABQQQhAyAFKAIAIAEoAghGDQQgARC+CUH7AEcNBCACQbACaiABIAJBCGoQlQMgAi0AtAIhASACKAKwAiIHQSJGDQMCQEE7RQ0AIABBBWogAkGwAmpBBWpBO/wKAAALIAAgAToABCAAIAc2AgAMCAsgACACKQOYAjcCCCAAQQU6ACAgAEKigICAsICAgIB/NwIAIABBGGogAkGYAmpBEGopAwA3AgAgAEEQaiACQaACaikDADcCAAwHCyAAIAIpA5gCNwIIIABBCDoAICAAQqKAgICwgICAgH83AgAgAEEYaiACQZgCakEQaikDADcCACAAQRBqIAJBmAJqQQhqKQMANwIADAYLIAAgAikDmAI3AgggAEEJOgAgIABCooCAgLCAgICAfzcCACAAQRhqIAJBmAJqQRBqKQMANwIAIABBEGogAkGgAmopAwA3AgAMBQsgAUH/AXFBDEYNACACQdQBaiAFQQhqKAIANgIAIAIgBSkCADcCzAEgASEDCyAAIAIpA8ABNwIIIAAgAzoAICAAQqKAgICwgICAgH83AgAgAEEYaiAEKQMANwIAIABBEGogBikDADcCAAwDCwJAIAMtAGUNACACQdAAaiABEK8MIAJBOGpBFGogAkHQAGpBFGooAgA2AgAgAkE4akEIaiACQQhqQQhqKAIANgIAIAIgAikCXDcCRCACIAIpAwg3AzggAkEgNgLAASACQbACaiABKAIEIAEoAgggAkE4aiACQcABahDRDEHAAEUNAyAAIAJBsAJqQcAA/AoAAAwDCyACQRhqIAEQmQUgAkEkaiACQQhqQQhqKAIANgIAIABCooCAgKCAgICAfzcCACAAQRhqIAJBGGpBEGopAgA3AgAgAEEgaiACQRhqQRhqKQIANwIAIAIgAikDCDcCHCAAIAIpAhg3AgggAEEQaiACQRhqQQhqKQIANwIADAILIAJBADYCsAIgAkEEakGgh4UBIAJBsAJqQaSHhQEQtBkACyACQfgBaiABEN0JIAJB+AFqQQhqIgEgAkEIakEIaigCADYCACAAQqKAgIDQgICAgH83AgAgACACKQMIIgg3AgggAEEYaiACQfgBakEQaikDADcCACAAQSBqIAJB+AFqQRhqKAIANgIAIABBEGogASkDADcCACACIAg3A/gBCyACQfACaiQAC48XAhZ/AX4jAEGAAWsiAyQAIANBBjYCJEG4iIABIQQgA0G4iIABNgIgIANBlYCAgHg2AgggAyABIAJBBXRqIgU2AhwgA0HgAGpBBHIhBiADQfQAaiEHIANB0ABqQQRyIQggA0HAAGpBBHIhCSADQeAAakEQaiEKIANBCGpBBHIhC0EGIQJBAiEMQQQhDUECIQ5BAiEPQQIhEEECIREDQCACQQN0IRICQAJAAkACQAJAAkACQAJAAkADQAJAAkACQAJAIAEgBUYNACADQeAAaiETIAEoAgAiAkGVgICAeEYNA0EIIRQCQAJAAkACQCACQYCAgIB4cyICQRUgAkEVSRsiAkF0ag4EAwIAAQcLIANB0ABqIAEoAgggASgCDBDFBCADKAJQDQYMBAsgA0HQAGogASgCBCABKAIIEMUEIAMoAlBFDQMMBQtBCCECQQQhFAsgASACaigCACEVIAEgFGooAgAhFgwCCyAAIAxBAXE6AAUgACAOQQFxOgAEIAAgD0EBcToAAyAAIBBBAXE6AAIgACARQQFxOgABQQAhAiAAQQAgDSANQf8BcUEERhs6AAYgAyABNgIYDAsLIAMoAlghFSADKAJUIRYLIBIhFCAEIQIDQCAURQ0BIBRBeGohFCACKAIEIRcgAigCACEYIAJBCGohAiAYIBcgFiAVEJscRQ0ACyADQeAAakEYaiABQRhqKQMANwMAIAogAUEQaikDADcDACADQeAAakEIaiABQQhqKQMANwMAIAMgASkDADcDYCABIRMLIAFBIGohASATQZWAgIB4NgIAAkACQCADKAJgQZWAgIB4Rg0AIAMgATYCGCADKAJkIRcgAygCaCECIAMoAmwhGCADKAJgIRQgA0EIahCZHiADQQhqQQhqIApBCGopAwA3AwAgAyAKKQMANwMIAkACQAJAAkACQAJAAkACQAJAIBRBgICAgHhzIhRBFSAUQRVJG0F/ag4PAQAAAgAAAAAAAAADBAUGAAsgA0HgAGogA0HAAGpB+ICAARDqGiECIANBAToAUCADIAI2AlQMBwsgA0EAOgBQIAMgF0H/AXEiAkEGIAJBBkkbOgBRDAULIANBADoAUCADIBitQiCGIAKthCIZQgYgGUIGVBs8AFEMBAsgA0HQAGogAiAYEP4NIBcgAhCOIAwECyADQdAAaiAXIAIQ/g0MAgsgA0HQAGogAiAYEOYCIBcgAhCOIAwCCyADQdAAaiAXIAIQ5gILIANB4ABqEOYRCwJAIAMtAFBFDQAgAygCVCECDAoLAkACQAJAAkACQAJAAkACQAJAIAMtAFEOBwECAwQFBgABCyADKAIIIQIgA0GVgICAeDYCCCACQZWAgIB4Rg0HIAYgCykCADcCACAGQQhqIAtBCGooAgA2AgAgAyACNgJgIANB4ABqEOYRDBMLAkAgEUH/AXFBAkYNAEGohoABQRQQ1BIhAgwRCyADQeAAaiADQQhqEKUNIAMtAGANBSADLQBhIREMEgsCQCAQQf8BcUECRg0AQbyGgAFBFRDUEiECDBALIANB4ABqIANBCGoQpQ0gAy0AYA0EIAMtAGEhEAwRCwJAIA9B/wFxQQJGDQBB0YaAAUEVENQSIQIMDwsgAygCCCECIANBlYCAgHg2AggCQCACQZWAgIB4Rg0AIAMoAhQhASADKAIQIRcgAygCDCEUIAJBgICAgHhzIhhBFSAYQRVJGyIYQXRqQQJJDQcCQCAYQRVGDQAgAyABNgJcIAMgFzYCWCADIBQ2AlQgAyACNgJQIANB4ABqIANB0ABqEMEIIAMgA0HgAGpB0ICAAUGwgIABEOgRNgIsIANBAToAKCADQdAAahDmEQwOCyADIAI2AjggAyAUNgIwIAMgFDYCNCADIBQgF0EFdGo2AjwCQAJAAkACQCAXRQ0AIAMgFEEgaiICNgI0IBQoAgAiGEGVgICAeEYNACAJIBQpAgQ3AgAgCUEIaiAUQQxqKAIANgIAIANB0ABqQQhqIBRBGGopAgA3AwAgAyAYNgJAIAMgFCkCEDcDUCAXQQFHDQEgA0GVgICAeDYCYAwCCyADQQs6AGAgAyADQeAAakGogIABEOcRNgIsIANBAToAKAwPCyADQeAAakEIaiACQQhqKQMANwMAIAogAkEQaikDADcDACADQeAAakEYaiACQRhqKQMANwMAIAMgFEHAAGo2AjQgAyACKQMAIhk3A2AgGadBlYCAgHhHDQELIANB4ABqEJoeIANB4ABqQQhqIANBwABqQQhqKQMANwMAIAcgCCkCADcCACAHQQhqIAhBCGooAgA2AgAgAyADKQNANwNgIAMoAlAhAiADQTBqEKwXIAMgAjYCcCADQShqIANB4ABqEN4GDA4LIANB4ABqEJoeIANBCzoAYCADIANB4ABqQaiAgAEQ5xE2AiwgA0EBOgAoIANB0ABqEOYRIANBwABqEOYRDAwLQeGNgAFBEBCrGCECIANBAToAKCADIAI2AiwMDAsCQCAOQf8BcUECRg0AQeaGgAFBDRDUEiECDA4LIANB4ABqIANBCGoQpQ0gAy0AYA0CIAMtAGEhDgwPCwJAIA1B/wFxQQRGDQBB84aAAUEYENQSIQIMDQsgAygCCCECIANBlYCAgHg2AggCQCACQZWAgIB4Rg0AIAMoAhQhASADKAIQIRcgAygCDCEUIAJBgICAgHhzIhhBFSAYQRVJGyIYQXRqQQJJDQcCQCAYQRVGDQAgAyABNgJcIAMgFzYCWCADIBQ2AlQgAyACNgJQIANB4ABqIANB0ABqEMEIIAMgA0HgAGpB0ICAAUGwgIABEOgRNgIsIANBAToAKCADQdAAahDmEQwKCyADIAI2AjggAyAUNgIwIAMgFDYCNCADIBQgF0EFdGo2AjwCQAJAAkACQCAXRQ0AIAMgFEEgaiICNgI0IBQoAgAiGEGVgICAeEYNACAJIBQpAgQ3AgAgCUEIaiAUQQxqKAIANgIAIANB0ABqQQhqIBRBGGopAgA3AwAgAyAYNgJAIAMgFCkCEDcDUCAXQQFHDQEgA0GVgICAeDYCYAwCCyADQQs6AGAgAyADQeAAakGogIABEOcRNgIsIANBAToAKAwLCyADQeAAakEIaiACQQhqKQMANwMAIAogAkEQaikDADcDACADQeAAakEYaiACQRhqKQMANwMAIAMgFEHAAGo2AjQgAyACKQMAIhk3A2AgGadBlYCAgHhHDQELIANB4ABqEJoeIANB4ABqQQhqIANBwABqQQhqKQMANwMAIAcgCCkCADcCACAHQQhqIAhBCGooAgA2AgAgAyADKQNANwNgIAMoAlAhAiADQTBqEKwXIAMgAjYCcCADQShqIANB4ABqEMYGDAoLIANB4ABqEJoeIANBCzoAYCADIANB4ABqQaiAgAEQ5xE2AiwgA0EBOgAoIANB0ABqEOYRIANBwABqEOYRDAgLQeGNgAFBEBCrGCECIANBAToAKCADIAI2AiwMCAsCQCAMQf8BcUECRg0AQYuHgAFBDxDUEiECDAwLIANB4ABqIANBCGoQpQ0gAy0AYA0AIAMtAGEhDAwNCyADKAJkIQIMCgtB4Y2AAUEQEKsYIQIMCQsgA0HgAGoQmh4MAQsLIANBlYCAgHg2AnAgAyABNgJsIAMgFzYCaCADIBQ2AmQgAyACNgJgIANBKGogA0HgAGoQ3gYMBAsgA0GVgICAeDYCcCADIAE2AmwgAyAXNgJoIAMgFDYCZCADIAI2AmAgA0EoaiADQeAAahDGBgwBCyADQTBqEKwXCyADLQAoDQIgAy0AKSENDAULIANBMGoQrBcLIAMtACgNACADLQApIQ8MAwsgAygCLCECCyAAIAI2AgRBASECCyAAIAI6AAAgA0EIahCZHiADQYABaiQADwsgAygCJCECIAMoAiAhBCADKAIcIQUgAygCGCEBDAALC60WAhN/AX4jAEGQAmsiAiQAIAJBADYCJCACQoCAgIDAADcCHCACQYCAgIB4NgIoIAEoAgghAyABKAIEIQQgAiABKAIANgI8IAIgBDYCOCACIAQ2AjQgAiAEIANBHGxqNgJAAkACQAJAAkAgAw0AIAJBNGoQsxUMAQsgAkGMAWpBBGohBSACQcQAakEEaiEGQQQhB0EAIQgCQAJAAkACQANAIAQiAUEcaiEEIAEoAgAiA0EIRg0BIAYgASkCBDcCACAGQRBqIAFBFGopAgA3AgAgBkEIaiABQQxqKQIANwIAIAIgAzYCRCACQeAAakEQaiIDIAJBxABqQRBqKQIANwMAIAJB4ABqQQhqIgkgAkHEAGpBCGopAgA3AwAgAikCRCEVIAJBADYCRCACIBU3A2AQ3xIhASACKAJcIQogAiABNgJcIAJBxABqEPUdAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJgDgcFAQQEBAQABAsgAigCbCEBIAIoAmghAyACIAIoAmQ2AoQBIAIgAzYCfCACIAMgAUEcbGoiCzYCiAEgAQ0CIAIgAzYCgAEgAkH8AGoQsxUMAQsgAigCaCEBIAIoAmQhAwJAAkAgAigCKEGAgICAeEYNACACQShqIAMgAyABahCKFAwBCyABQX9MDQUCQAJAIAENAEEBIQkMAQtBAC0AwPGdARogARCFASIJRQ0NCwJAIAFFDQAgCSADIAH8CgAACyACIAE2AjAgAiAJNgIsIAIgATYCKAsgAUUNACADIAFBARCeEgsgCkE0QQQQnhIMBwsDQCADIgEoAgAiDEEIRg0FIAVBEGogAUEUaiIJKQIANwIAIAVBCGogAUEMaiINKQIANwIAIAUgAUEEaikCADcCACACKAKQASEOIAIoApQBIQMgAkGoAWpBCGoiDyAJKAIANgIAIAJBADYCjAEgAiANKQIANwOoARDfEiEJIAIoAqQBIQ0gAiAJNgKkASACQYwBahD1HQJAAkAgDEEBRw0AAkACQCACKAIoQYCAgIB4Rg0AIAJBKGogDiAOIANqEIoUDAELIANBf0wNBwJAAkAgAw0AQQEhCQwBC0EALQDA8Z0BGiADEIUBIglFDQ4LAkAgA0UNACAJIA4gA/wKAAALIAIgAzYCMCACIAk2AiwgAiADNgIoCwJAIANFDQAgDiADQQEQnhILIA1BNEEEEJ4SDAELIAJBuAFqQQhqIgsgDygCADYCACACIAIpA6gBNwO4ASACKAIoIQkgAkGAgICAeDYCKAJAIAlBgICAgHhGDQAgAiACKQIsNwLMASACIAk2AsgBIAJBEGogAkHIAWpB9MWFARDyEAJAAkAgAigCFCIJRQ0AQQEhDyACKAIQIhAgCRDEDiERIAkhEgwBC0EAIQ8Q3xIhEQsCQCAIIAIoAhxHDQAgAkEcakGkxoUBEP4VIAIoAiAhBwsgByAIQRxsaiIJIBI2AgggCSAQNgIEIAkgDzYCACAJIAIpAtQBNwIMIAlBFGogAkHUAWpBCGooAgA2AgAgCSARNgIYIAIgCEEBaiIINgIkCwJAIAggAigCHEcNACACQRxqQbTGhQEQ/hULIAIoAiAiByAIQRxsaiIJIAM2AgggCSAONgIEIAkgDDYCACAJIAIpA7gBNwIMIAkgDTYCGCAJQRRqIAsoAgA2AgAgAiAIQQFqIgg2AiQgAigCiAEhCwsgAUEcaiIDIAtHDQAMBQsLIAJB4AFqQRBqIgwgAykDADcDACACQeABakEIaiIDIAkpAwA3AwAgAiACKQNgNwPgASACKAIoIQEgAkGAgICAeDYCKAJAIAFBgICAgHhGDQAgAiACKQIsNwL8ASACIAE2AvgBIAJBCGogAkH4AWpB9MWFARDyEAJAAkAgAigCDCIBRQ0AQQEhCSACKAIIIhMgARDEDiEOIAEhFAwBC0EAIQkQ3xIhDgsCQCAIIAIoAhxHDQAgAkEcakHExoUBEP4VIAIoAiAhBwsgByAIQRxsaiIBIBQ2AgggASATNgIEIAEgCTYCACABIAIpAnw3AgwgAUEUaiACQfwAakEIaigCADYCACABIA42AhggAiAIQQFqIgg2AiQLAkAgCCACKAIcRw0AIAJBHGpB1MaFARD+FQsgAigCICIHIAhBHGxqIgEgAikD4AE3AgAgASAKNgIYIAFBCGogAykDADcCACABQRBqIAwpAwA3AgAgAiAIQQFqIgg2AiQMBQsgCkE0QQQQnhIMAwtBvOCbARDTGQALQbzgmwEQ0xkACyACIAFBHGo2AoABIAIoAmAhASACQfwAahCzFSAKQTRBBBCeEiABQQFGDQEgAUEGRg0BCyACQeAAahDMCgsgBCACKAJARw0ACwsgAiAENgI4IAIoAighASACKQIsIRUgAkE0ahCzFQJAIAFBgICAgHhGDQAgAiAVNwKIAiACIAE2AoQCIAIgAkGEAmpB9MWFARDyEAJAAkAgAigCBCIDRQ0AQQEhBSACKAIAIgkgAxDEDiEMDAELQQAhBRDfEiEMCwJAIAggAigCHEcNACACQRxqQYTGhQEQ/hUgAigCICEHCyAHIAhBHGxqIgEgAzYCCCABIAk2AgQgASAFNgIAIAEgAikCYDcCDCABQRRqIAJB6ABqKAIANgIAIAEgDDYCGCACIAhBAWoiCDYCJAsCQAJAIAgOAgUAAQsgAkEANgIkIAIoAiAiASgCACIDQQhGDQMgACADNgIAIAAgASkCBDcCBCAAQQxqIAFBDGopAgA3AgAgAEEUaiABQRRqKQIANwIADAULIAIoAiAiEUEYaiEFIBEgCEEcbCIEaiESQQAhEEEBIQdBASEKQQAhFEEBIQxBACETQQAhD0EAIQNBASEOQQEhC0EBIQ0DQCAMIQYgBSgCACEBIA5BAXEhCUEAIQ4CQCAJRQ0AIAEtADAhDgtBACEJQQAhDAJAIAEoAhBBAUcNAEEAIQwgBkEBcUUNAEF/IAEoAhQiDCATaiIGIAYgDEkbIRNBASEMCwJAIAtBAXFFDQAgAS0AMSEJCyAJIQsgASgCLCEJIA1BAXEhBkEAIQ0CQCAGRQ0AIAEtADIhDQsgAyAJaiEJAkAgB0EBcUUNAEEAIQcgASgCAEUNAEF/IBAgASgCBGoiBiAGIBBJGyEQQQEhBwsgASgCGCEGIAkgA0khAwJAIApBAXFFDQBBACEKIAEoAghFDQAgASgCDCAUaiIBIBRPIQogASEUCyAGIA9yIQ9BfyAJIAMbIQMgBUEcaiEFIARBZGoiBA0ACyAIQRxsIQUgDUEBcSEEIAtBAXEhCyAOQQFxIQZBACEJQQAhDgJAA0AgBUUNASARKAIYIgEoAiQgCXIhCSABKAIcIA5yIQ4gASgCCEEBRw0BIAVBZGohBSARQRxqIREgASgCDEUNAAsLIAhBZGwhCEEAIQVBACENAkADQCAIRQ0BIBJBfGooAgAiASgCKCAFciEFIAEoAiAgDXIhDSABKAIIQQFHDQEgCEEcaiEIIBJBZGohEiABKAIMRQ0ACwtBAC0AwPGdARpBNBCFASIBDQELAAsgASAEOgAyIAEgCzoAMSABIAY6ADAgASADNgIsIAEgBTYCKCABIAk2AiQgASANNgIgIAEgDjYCHCABIA82AhggASATNgIUIAEgDDYCECABIBQ2AgwgASAKNgIIIAEgEDYCBCABIAc2AgAgACACKQIcNwIEIABBDGogAkEkaigCADYCACAAIAE2AhggAEEGNgIADAMLQZTGhQEQmyAACyAAEN8SNgIYIABBADYCAAsgAkEcahDpFwsgAkGQAmokAAusFQIRfwN+IwBBwABrIgIkAAJAAkACQAJAAkACQAJAIAEoAgBBAUcNAAJAAkAgASgCaCABKAIEIgNHDQAgASgCWCEEIAEoAlwhBQwBCyABKAJgIAMgASgCbGsiBmohBCABKAJkIAZrIQULIAEgA0EBaiIGNgJoIAEgBUF/aiIHNgJcIAEgBEEBajYCWAJAIAdFDQBBACEIQQAhBkEAIQlBACEKA0AgAyAGaiILQQFqIQwCQAJAAkACQAJAIAQgBmoiDUEBai0AACIOQYCAxAAgDsAiD0F/ShtBdmoOBAEAAAEACyAFIAhqIRAgCUEBcSERQQAhCSARDQMCQAJAAkACQCAOQaV/ag4DAQYCAAsgDkEvRg0CDAULQQEhCgwEC0EAIQoMAwsgCkEBcSEOQQEhCiAODQIgASALQQJqNgJoIAEgEEF+aiIGNgJcIAEgDUECaiIINgJYIAZFDQEgCCwAACIGQQBIDQEgBkHAp5kBai0AAEEBRw0BIAJBKGogARC2AiACKAIsIQYgAigCKCIIQYGAgIB4Rg0HIAEoAnRBCGogBiACKAIwEMsDIRMCQCAIQYCAgIB4Rg0AIAggBhCOIAsgAiATNwMQIAIgAkEQahD+EUEAIQoCQAJAIAIoAgQiBg0AQYj7nAEhC0EAIQlBACENDAELIAIoAgAiCCAGaiEFQYj7nAEhCyACQThqIRJBACEJQQAhEEEAIQ0DQAJAAkAgCCwAACIGQX9MDQAgCEEBaiEIIAZB/wFxIQ4MAQsgCC0AAUE/cSEOIAZBH3EhEQJAIAZBX0sNACARQQZ0IA5yIQ4gCEECaiEIDAELIA5BBnQgCC0AAkE/cXIhDgJAIAZBcE8NACAOIBFBDHRyIQ4gCEEDaiEIDAELIA5BBnQgCC0AA0E/cXIgEUESdEGAgPAAcXIiDkGAgMQARg0CIAhBBGohCAsgAiAJNgI0IAIgEDYCMCACIA02AiwgAiALNgIoIAIgDjYCOEEAIQdBACEGAkAgDkGcf2oiCUEVSw0AQQAhBkEBIAl0QamEmgFxRQ0AIA4hBgsgC0F4aiERIA0gBkHdy92eeWxBD3ciDnEhCSAOQRl2Ig+tQoGChIiQoMCAAX4hFAJAAkACQANAAkAgCyAJaikAACIVIBSFIhNCf4UgE0L//fv379+//358g0KAgYKEiJCgwIB/gyITUA0AA0AgESATeqdBA3YgCWogDXEiBEEDdGsoAgAgBkYNAyATQn98IBODIhNQRQ0ACwsCQCAVIBVCAYaDQoCBgoSIkKDAgH+DUEUNACAJIAdBCGoiB2ogDXEhCQwBCwsCQCAQDQAgAkEoaiASEKgCGgsgBkGAgMQARg0BAkAgAigCKCIJIAIoAiwiCyAOcSIOaikAAEKAgYKEiJCgwIB/gyITQgBSDQBBCCENA0AgDiANaiEOIA1BCGohDSAJIA4gC3EiDmopAABCgIGChIiQoMCAf4MiE1ANAAsLAkAgCSATeqdBA3YgDmogC3EiDmosAAAiDUEASA0AIAkgCSkDAEKAgYKEiJCgwIB/g3qnQQN2Ig5qLQAAIQ0LIAkgDmogDzoAACAJIA5BeGogC3FqQQhqIA86AAAgCSAOQQN0ayIOQXxqQQE2AgAgDkF4aiAGNgIAIAIgAigCMCANQQFxazYCMCACKAI0QQFqIQkMAgsgC0EAIARrQQN0aiEOCyAOQXxqIgYgBigCAEEBajYCACACKAI0IQkLIAIoAjAhECACKAIsIQ0gAigCKCELIAggBUcNAAsLIAtBeGohCEEAIQYCQAJAA0ACQCALIAZqKQAAIhNCgIGChIiQoMCAf4MiFUKAgYKEiJCgwIB/hSATQv/9+/fv37//fnyDIhRQDQADQCAIIBR6p0EDdiAGaiANcSIOQQN0aygCAEUNAyAUQn98IBSDIhRQRQ0ACwsgFSATQgGGg1BFDQIgBiAKQQhqIgpqIA1xIQYMAAsLIAsgDkEDdEEDdSIGaiIIQYB/QX8gCCkAACITIBNCAYaDQoCBgoSIkKDAgH+DeqdBA3YgCyAGQXhqIA1xaiIGKQAAIhMgE0IBhoNCgIGChIiQoMCAf4N5p0EDdmpBB0sbIgg6AAAgBkEIaiAIOgAAIAEoAmghBiACQfSAgIB4NgIoIAEgAyAGIAJBKGoQohMgCUF/aiEJCyALQQhqIQYgCykDAEJ/hUKAgYKEiJCgwIB/gyEUIAshCAJAA0AgCUUNASAUIRMCQCAUQgBSDQADQCAIQUBqIQggBikDACETIAZBCGoiDiEGIBNCgIGChIiQoMCAf4MiE0KAgYKEiJCgwIB/UQ0ACyATQoCBgoSIkKDAgH+FIRMgDiEGCyAJQX9qIQkgE0J/fCATgyEUIAggE3qnQfgAcWsiDkF8aigCAEECSQ0ACyABKAJoIQYgDkF4aigCACEIIAJB84CAgHg2AiggAiAINgIsIAEgAyAGIAJBKGoQohMLAkAgDUUNACANIA1BA3RBD2pBeHEiBmpBCWoiCEUNACALIAZrIAhBCBCeEgsgAikDECITQgODQgBSDQEgE6ciBiAGKAIAIghBf2o2AgAgCEEBRw0BIAYgBigCEBDBGwwBCyACQZ6AgIB4NgIoIAMgDCACQShqEIUVIQYMBgsCQCABKAIIQQpGDQAgAUEIahDECAsgASAMNgIMIAFBBjYCCCABKAJoIQRBwwAhDwwJCyAPQdwARiEJCyABIAtBAmo2AmggASAQQX5qNgJcIAEgDUECajYCWCAIQX9qIQggByAGQQFqIgZHDQALIAMgBmpBAWohBgsgAkGegICAeDYCKCADIAYgAkEoahCFFSEGDAELIAFBADoAHAJAIAEoAlwNACABQQA6AIMBIAEoAmghAwwDCwJAA0AgASABKAJYLQAAQQJ0QYDumQFqKAIAEQQAIQggASgCXCEGIAhFDQEgBg0ACwsgAUEAOgCDASABKAJoIQMgBkUNAiACQQhqIAEgASgCWC0AAEECdEHs5ZkBaigCABEHACACLQAIQQFxRQ0BIAIoAgwhBgsCQCABKAIIQQpGDQAgAUEIahDECAsgASAGNgIMIAFBCTYCCCABKAJoIQRBogEhDwwDCyABKAJoIQQgAi0ACSIPQaMBRw0CDAELIAEoAmghBAsgARCzBUGjASEPDAELIAEoAiBBgICAgHhGDQAgASgCNCEIIAFBADYCNCABKAIwIQYgAkEANgIgIAIgCDYCHCACIAFBLGo2AhggAiAGIAhBGGwiC2oiBTYCFAJAIAhFDQAgAUEgaiERIAEoAigiDkEFdCEJA0AgAkEoakEQaiINIAZBEGopAwA3AwAgAkEoakEIaiIQIAZBCGopAwA3AwAgAiAGKQMANwMoAkAgDiARKAIARw0AIBFB9KmZARCwFgsgBkEYaiEGIAEoAiQgCWoiCCACKQMoNwMAIAhBEGogDSkDADcDACAIQQhqIBApAwA3AwAgCEEcakEAOgAAIAhBGGogAzYCACABIA5BAWoiDjYCKCAJQSBqIQkgC0FoaiILDQALIAUhBgsgAiAGNgIQIAJBEGoQsQkLIAEgDzoAHSAAIA86AAggACAENgIEIAAgAzYCACABIAEoAmg2AhggACABLQAcOgAJIAJBwABqJAALpRcDBX8CfgJ8IwBB4AFrIgQkACACKAIEIQUgBEHIAWogASACKAIAIgZBABCVAgJAAkAgBC0AyAFBBEYNACAEKQPIASIJQv8Bg0IEUQ0AIAAgCTcCAAwBCyACQQhqIQcgAikDECEJAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKwMIIguZIgxEAAAAAAAA8H9iDQAgCVANAQsCQCAGRQ0AIARByAFqIAEgBhC0GiAELQDIAUEERg0AIAQpA8gBIgpC/wGDQgRSDQILIAJBEGohAiABLQBdDQIgCVANAyAEQegAaiACEP4RIAQoAmxBA0kNESABLQBiQf8BcUECSQ0EDBELIARByAFqIAcQ3g8gBEGoAWogASAGIAUgBCgCzAEiAiAEKALQARC/DSAELQCoAUEERg0GIAQpA6gBIglC/wGDQgRRDQYgACAJNwIAIAQoAsgBIAIQlyIMGAsgACAKNwIADBQLAkAgDEQAAAAAAADwf2INACAJUEUNBAsgBCALOQOAASALIAudoUQAAAAAAAAAAGINAiAMRAAAAAAAAPBDZUUNAiAEIAz8ByIJNwOIASAJQugHgiEKIAlCgK3iBFQNAiAKQgBRDQIgBEECNgLcASAEQfzWmAE2AtgBIARBAjYCzAEgBEH08JoBNgLIASAEQQI2AtQBIARBkgU2ArQBIARBCTYCrAEgBCALvSIJQj+IPgKYASAEQeeWmwFBASAJQgBTGzYClAEgBCAEQagBajYC0AEgBCAEQYgBajYCsAEgBCAEQZQBajYCqAEgBEHwAGogBEHIAWoQhBVBACEDDAoLIARByAFqIAcQ3g9BAEEBEJciIAQoAsgBIQYgBEHIAWogAUEAQQAgBCgCzAEiAiAEKALQASIFEL8NIAQtAMgBQQRGDQogBCkDyAEiCUL/AYNCBFENCiAAIAk3AgAMDAsgBEHgAGogAhD+ESAEKAJkIgZBAU0NAwJAIAQoAmAvAAAiBkGwhAFGDQAgBkGwngFGDQAgBkGw3gFGDQAgBkGwxAFHDQ0LAkAgDEQAAAAAAADwf2ENACAEQcgBaiAHEN4PQQBBARCXIiAEKALIASEGIARByAFqIAFBAEEAIAQoAswBIgIgBCgC0AEiBRC/DSAELQDIAUEERg0KIAQpA8gBIglC/wGDQgRRDQogACAJNwIADAwLIARB2ABqIAIQ/hFBACEFIARByAFqIAFBAEEAIAQoAlggBCgCXBC/DSAELQDIAUEERg0HIAQpA8gBIglC/wGDQgRSDQQMBgsgBEGUAWogBEGAAWoQzRAgBCgCmAEhBwJAAkAgBCgCnAEiCEEBSw0AQePEmwFBASAHIAgQmRwNAQwGCwJAIAhBB0sNACAIIQIgByEGA0AgAkUNByACQX9qIQIgBi0AACEFIAZBAWohBiAFQS5HDQAMAgsLIARBIGpBLiAHIAgQkAkgBCgCIEEBRw0FC0EAIQMMBAsgBEEoaiACEP4RQQAhBSAEQcgBaiABQQBBACAEKAIoIAQoAiwQvw0gBC0AyAFBBEYNBSAEKQPIASIJQv8Bg0IEUQ0EIAAgCTcCAAwPCyAEKALIASACEJciIABBBDsBAAwRC0ECIAZBvMmbARCPIAALIAAgCTcCAAwMCyAEQRhqIAcgCEGs15gBQQIQmhsCQAJAIAQoAhgiAkUNACAEKAIcIQYgBCACNgKgASAEIAY2AqQBAkAgAiAGEPYYIgVBAksNACAEQQE2AswBIARBsNeYATYCyAEgBEIBNwLUASAEQQk2AqwBIAQgBEGoAWo2AtABIAQgBEGgAWo2AqgBIARB8ABqIARByAFqEIQVDAILIARBEGogAiAGIAVBuNeYARDpFCAEIAQpAxA3ArwBIARBDjYCtAEgBEEJNgKsASAEQQI2AswBIARBzNeYATYCyAEgBEICNwLUASAEIAY2AsQBIAQgBEHEAWo2ArABIAQgBEG8AWo2AqgBIAQgBEGoAWo2AtABIARB8ABqIARByAFqEIQVDAELIARBCGogByAIQdzXmAFBAxCaGwJAIAQoAggiAkUNACAEKAIMIQYgBCACNgKgASAEIAY2AqQBAkAgAiAGEPYYIgVBAksNACAEQQE2AswBIARB5NeYATYCyAEgBEIBNwLUASAEQQk2AqwBIAQgBEGoAWo2AtABIAQgBEGgAWo2AqgBIARB8ABqIARByAFqEIQVDAILIAQgAiAGIAVB7NeYARDpFCAEIAQpAwA3ArwBIARBDjYCtAEgBEEJNgKsASAEQQI2AswBIARB/NeYATYCyAEgBEICNwLUASAEIAY2AsQBIAQgBEHEAWo2ArABIAQgBEG8AWo2AqgBIAQgBEGoAWo2AtABIARB8ABqIARByAFqEIQVDAELAkAgByAIQYzYmAFBAxCxG0UNAEEDIQICQCAIQQNJDQAgCEF9aiEFIAcgCGpBfGohBkEAIQIDQAJAAkAgBSACRg0AIAYtAABBMEYNASACIQULIAVBA2ohAgwCCyAGQX9qIQYgAkEBaiECDAALCyAEIAI2ArwBAkACQAJAIAggAkkNACAIIAJrIQYCQCAIIAJGDQAgBiAITw0AIAcgBmosAABBv39MDQILIAQgBjYCnAELIARBlAFqQeUAEOgJQQAhAyAEQQA2ArABIARCgICAgBA3AqgBIARBkNCYATYCzAEgBEKggICADjcC0AEgBCAEQagBajYCyAEgBEG8AWogBEHIAWoQnCANASAEKAKoASECIARBlAFqIAQoAqwBIgYgBCgCsAEQxR8gAiAGEI4gDAILQeTRmAFBMEGU0pgBEN0XAAtB+M+bAUE3IARB8ABqQajQmAFBsNCbARDoDwALIARB8ABqQQhqIARBlAFqQQhqKAIANgIAIAQgBCkClAE3A3AMAwsgBCgClAEgBxCOIAwCC0EBIQJBACEGDAILQQEhAkEAIQYgA0UNAkEAIQUMBQtBAEEBEJciIAQoAnAhBiAEQcgBaiABQQBBACAEKAJ0IgIgBCgCeCIFEL8NIAQtAMgBQQRGDQAgBCkDyAEiCUL/AYNCBFENACAAIAk3AgAMAgsgAw0DC0GAgICAeCEBDAULQYCAgIB4IQEMBgsgBEHQAGogAhD+EQJAAkACQAJAAkACQCAEKAJUQQNJDQAgAS0AYkH/AXFBCE8NACAEQcgAaiACEP4RIAQoAkggBCgCTEHfABC1Gg0BCyAEQcAAaiACEP4RIARByAFqIAFBAEEAIAQoAkAgBCgCRBC/DSAELQDIAUEERg0BIAQpA8gBIglC/wGDQgRRDQEgACAJNwIADAkLIARBMGogAhD+ESAEQcgBaiAEKAIwIAQoAjRB3wBBAUEAELQHIARBqAFqIAFBAEEAIAQoAswBIgUgBCgC0AEiBxC/DSAELQCoAUEERg0BIAQpA6gBIglC/wGDQgRRDQEgACAJNwIAIAQoAsgBIAUQlyIMCAsgAw0BIABBBDsBAAwHC0GAgICAeCAEEIUfIAQoAsgBIQEgAw0BQQEhAkEAIQYMBQsgBEE4aiACEP4RIARByAFqIAQoAjggBCgCPEHfAEEBQQAQtAdBgICAgHggBBCFHyAEKALQASEHIAQoAswBIQUgBCgCyAEhAQsgAUGAgICAeEcNAUEBIQJBACEFQQAhBgtBACEDIAIgBUEuELcaDQEgAiAFQeUAELcaQQFzIQMMAQtBACECAkACQANAIAcgAkYNASAFIAJqIQYgAkEBaiECIAYtAABBRmpB/wFxQfYBTw0AC0EAIQMMAQsCQCAHQQJPDQBBASEDDAELIAUtAABBMEchAwsgASAFEJciQQAhBkEBIQILIABBBDoAACAAIAM6AAEgBiACEJciDAQLIABBBDsBAAwCC0GAgICAeCEBQQAhBkEBIQILCyAGIAIQlyIgASAFEIUfCyAEQeABaiQAC8oVAQZ/AkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAUF0aiICQQcgAkEmSRsOJhoAAQIDBAUGBwgJCgsMGRoNDg8QERoSEhMaGhQVFhYWFhYWGhcaGgsgACgCDCICRQ0ZIAAoAgghACACQQR0IQIDQAJAIAAoAgBBAkYNACAAQQxqKAIAELUBCyAAQRBqIQAgAkFwaiICDQAMGgsLIAAoAgwiAkUNGCAAKAIIIgMgAkEMbGohBANAAkACQCADKAIAIgANAAJAAkACQAJAAkACQCADKAIEIgAoAgAiAUF7aiICQQQgAkEGSRsOBgABAgMEBQALIABBADYCGAwGCwJAIAAoAghBA0cNACAAKAIMELUBCyAAKAIoELUBDAULIABBADYCICAAKAIoELUBDAQLAkAgACgCCEEDRw0AIAAoAgwQtQELIAAoAihBgICAgHhGDQMgACgCMCICRQ0DIAAoAiwhACACQTBsIQIDQCAAEJYDIABBMGohACACQVBqIgINAAwECwsgAEEgaiECAkAgAUEDRw0AIAAoAgQQtQELAkAgAigCAEEHRg0AIAIQuwkLIAAoAmgQuwkgACgCSEGAgICAeEYNAiAAKAJQIgJFDQIgACgCTCEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAMLCwJAIAAoAghBA0cNACAAKAIMELUBCwJAIAAoAigiBUEIaigCACIARQ0AIAVBBGooAgAiASAAQQZ0aiEGA0ACQCABQThqKAIAIgJFDQAgAUE0aigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgARD/CiABQcAAaiIAIQEgACAGRw0ACwsCQCAFQRRqKAIAIgJFDQAgBUEQaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgBSgCGEGAgICAeEYNASAFQSBqKAIAIgJFDQEgBUEcaigCACEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAILCyAAELUBCyADQQxqIgMgBEcNAAwZCwsCQCAALQAcQQJGDQAgAEEANgIYCwJAIAAoAiAiBkEIaigCACIARQ0AIAZBBGooAgAiASAAQQZ0aiEDA0ACQCABQThqKAIAIgJFDQAgAUE0aigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgARD/CiABQcAAaiIAIQEgACADRw0ACwsCQCAGQRRqKAIAIgJFDQAgBkEQaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsgBigCGEGAgICAeEYNFyAGKAIgIgJFDRcgBigCHCEAIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADBgLCyAAKAIEIQAMFAsgACgCDCEADBMLIAAoAgQQtQEgACgCCCEADBILAkACQCABQQtHDQACQAJAIAAoAgQOAwABAwALIAAoAhAiAUUNAiAAKAIMIQIgAUEobCEBA0ACQCACKAIAQQdGDQAgAhC7CQsgAkEoaiECIAFBWGoiAQ0ADAMLCyAAKAIQIgJFDQEgACgCDCEDIAJBOGwhBkEAIQIDQAJAAkACQAJAIAMgAmoiASgCAA4DAAECAAsCQCABQQhqKAIAQQNHDQAgAUEMaigCABC1AQsgAUEoaigCABC7CQwCCyABQSBqQQA2AgAgAUEwaigCACIBRQ0BIAEQtQEMAQsgAUEEaigCABC7CQsgBiACQThqIgJHDQAMAgsLAkACQAJAAkACQAJAAkACQAJAAkAgAQ4LAAECAwQFBgcICQoACyAAQQA2AhggACgCOCEADBsLIAAoAigQtQEgACgCCEECSQ0IIAAoAgwQtQEgACgCOCEADBoLIAAoAghBAUcNByAAKAIMELUBIAAoAjghAAwZCyAAKAIEELUBIAAoAjghAAwYCwJAIAAoAgQiAigCACIBQQNHDQAgAigCEBC1ASACQQxqKAIAIgFFDQYgAUEEdCEBIAJBCGooAgBBDGohAgNAIAIoAgAQtQEgAkEQaiECIAFBcGoiAQ0ADAcLCyACKAIgELUBIAFBAkkNBSACKAIEELUBIAAoAjghAAwXCyAAKAIEELUBIAAoAjghAAwWCyAAKAIEELUBIAAoAjghAAwVCyAAKAIEELUBIAAoAjghAAwUCyAAKAIEELUBIAAoAjghAAwTCyAAKAIEELUBCyAAKAI4IQAMEQsgACgCKBC1ASAAKAIIQQJJDRIgACgCDCEADBALIAAoAghBAUcNESAAKAIMIQAMDwsgACgCBBC1ASAAKAIIELUBIAAoAgwhAAwOCwJAIAAtABhBBUcNACAAKAIQELUBCyAAKAIMIgJFDQ8gAkEEdCECIAAoAghBDGohAANAIAAoAgAQtQEgAEEQaiEAIAJBcGoiAg0ADBALCyAAKAIQELUBIAAoAgRBgICAgHhGDQ4gACgCDCICRQ0OIAJBBHQhAiAAKAIIQQxqIQADQCAAKAIAELUBIABBEGohACACQXBqIgINAAwPCwsgACgCDCICRQ0NIAAoAgghACACQQJ0IQIDQCAAKAIAELUBIABBBGohACACQXxqIgINAAwOCwsgACgCDCICRQ0MIAAoAgghACACQQJ0IQIDQCAAKAIAELUBIABBBGohACACQXxqIgINAAwNCwsgACgCBBC1ASAAKAIIIgBBCGooAgAiAkUNCyAAQQRqKAIAIQAgAkECdCECA0AgACgCABC1ASAAQQRqIQAgAkF8aiICDQAMDAsLAkAgACgCDCIBRQ0AIAAoAgghAiABQShsIQEDQCACELsJIAJBKGohAiABQVhqIgENAAsLIAAoAhAiAigCBCEAIAIoAgBBgICAgHhGDQggAigCCCICRQ0KIAJBMGwhAgNAIAAQlgMgAEEwaiEAIAJBUGoiAg0ADAsLCwJAIAAtABxBAkYNACAAQQA2AhgLAkAgACgCICIBQQhqKAIAIgJFDQAgAUEEaigCACEAIAJBDGwhAgNAIAAoAgAQtQEgAEEMaiEAIAJBdGoiAg0ACwsCQCABQRRqKAIAIgJFDQAgAUEQaigCACEAIAJB2ABsIQIDQCAAELoCIABB2ABqIQAgAkGof2oiAg0ACwsgASgCMCIADQcMCQsgACgCDCIADQYMCAsgACgCBCEADAULIABBCGohAgJAIAAtADRBAkcNAANAIAIoAhgiAi0ALEECRg0ACwsgAkEANgIoDwsgACgCBBDGAg8LIAAoAgwiAkUNBCACQShsIQIgACgCCEEEaiEAA0ACQAJAAkACQAJAIABBfGooAgAOBQQAAQIDBAsgACgCAEEBRw0DIABBBGooAgAQtQEMAwsgACgCABC1AQwCCyAAEKUHDAELIAAQ5AULIABBKGohACACQVhqIgINAAwFCwsgACgCBCEADAELAkAgACgCBCIAKAIAIgJBA0cNACAAKAIQELUBIAAoAgwiAkUNAyACQQR0IQIgACgCCEEMaiEAA0AgACgCABC1ASAAQRBqIQAgAkFwaiICDQAMBAsLIAAoAiAQtQEgAkECSQ0CIAAoAgQhAAwACwsgAEEANgIYCwuwFwIIfwN+IwBBwBprIgMkACADQoOAgIAQNwIcIANCg4CAgBA3AhAgA0KDgICAEDcCKCADQQA6ADEgA0GAAjsBJCADQQI2AgwgA0EBOgAYIANBAkEBIAJB9QNJGzoAMCADQYAOaiADQShqEPYGIANB8A1qQQhqIgQgA0GWDmovAQA7AQAgAyADKQGODjcD8A0gAy0AjQ4hBSADLQCMDiEGIAMoAogOIQcgAygChA4hCCADKAKADiEJAkACQAJAAkACQCADKAK0ESIKQYCAgIB4Rw0AIANB8AVqQQhqIAQvAQA7AQAgAyADKQPwDTcD8AUMAQsCQEGcA0UNACADQaAUakEYaiADQYAOakEYakGcA/wKAAALAkBB6AJFDQAgA0GgFGpBuANqIANBgA5qQbgDakHoAvwKAAALIANBthRqIANB8A1qQQhqLwEAOwEAIAMgBToArRQgAyAGOgCsFCADIAc2AqgUIAMgCDYCpBQgAyAJNgKgFCADIAo2AtQXIAMgAykD8A03Aa4UIANB4BdqIQYCQCADKALoFyIJIAMoAuAXRw0AIAZBtOSDARDsFQsgAygC5BcgCUEJbGoiCEIANwAAIAhBCGpBADoAACADIAlBAWo2AugXIANB+BdqIQcCQCADKAKAGCIJIAMoAvgXRw0AIAdBxOSDARDvFQsgA0HUF2ohBCADKAL8FyAJQQN0akIANwIAIAMgCUEBajYCgBggA0HsF2ohBQJAIAMoAvQXIgkgAygC7BdHDQAgBUHU5IMBEOkVCyADKALwFyAJQQJ0akEANgIAIAMgCUEBajYC9BcgA0GADmogBEEAEK4OAkACQAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwBCyADQYAOaiAEQQAQrg4CQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAQsgA0GADmogBEEAEK4OIAMoAoQOIQgCQAJAIAMoAoAOIglBA0YNACADQegNaiADQZYOai8BADsBACADIAMpAY4ONwPgDQwBCyADIAg2AqwaIANBgA5qIARBABCuDiADKAKEDiEIAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAELIAMgCDYCsBogA0GADmogA0GgFGoQ4gsCQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAgsgA0GADmogA0GgFGoQ2hACQCADKAKADiIJQQNGDQAgA0HoDWogA0GWDmovAQA7AQAgAyADKQGODjcD4A0MAgsgA0GADmogA0GgFGogASACEIgDAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIAQQ3hMgA0GADmogA0GgFGoQzgwCQEGAAkUNACADQZwYaiADQYAOakGAAvwKAAALIANBgA5qIANBoBRqEOwHAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBoBRqEMAOIANBgA5qIANBoBRqEPcGAkAgAygCgA4iCUEDRg0AIANB6A1qIANBlg5qLwEAOwEAIAMgAykBjg43A+ANDAILIANBgA5qIANB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A2pBCWoiAEUNACACKAKIASADayAAQQgQnhILIAJBmAFqENYVCyAEKAIAQYCAgIB4Rg0FIAQgARCXBwwFCyABKAIwEIESIQMgAkGIAWpBNGogAUE0aigCADYCACACQZABakEAKQOY+5wBIgg3AwAgAkGYAWpBACkDkPucASIJNwMAIAJBoAFqIAg3AwAgAiABNgKoASACIAM2AqwBIAJBADoAsAEgAiABKQIsNwK0ASACIAk3A4gBIAIgASgBOjYBwgEgAiABLQA4OgDAASACQQA6AMEBAkAgACgCBCIBQQJGDQACQCABQQFxRQ0AIAJBAToAwQEgACgCCCACQYgBahBsDAELIAJBiAFqIAAoAggQoAoLIAJBAToAwQECQCAAKAIYIgFFDQAgASACQYgBahBsCyACQQE6AMEBAkAgACgCHCIBRQ0AIAEgAkGIAWoQbCACQQE6AMEBCyACIAAoAgw2AugBIAJBiAFqIAJB6AFqEIYHAkAgAigCjAEiAUUNACACKAKIASACKAKUARCSDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQnhILIAJBmAFqENYVDAQLIAEoAjAQgRIhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmPucASIINwMAIAJBmAFqQQApA5D7nAEiCTcDACACQaABaiAINwMAIAIgATYCqAEgAiADNgKsASACQQE6AMEBIAIgASkCLDcCtAEgAiABKAE6NgHCASACIAEtADg6AMABIAIgCTcDiAECQAJAAkACQCAAKAIEDgMAAQIACyACQYgBaiAAKAIIEKAKDAILIAJBiAFqIAAoAggQiwsMAQsgACgCCCACQYgBahCEBAsgACgCDCEBIAItAMEBIQMgAkEBOgDBASABIAJBiAFqEGwgAiADOgDBASACIAAoAhA2AugBIAJBiAFqIAJB6AFqEIYHAkAgAigCjAEiAUUNACACKAKIASACKAKUARCSDCABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKAKIASAAayABQQgQnhILIAJBmAFqENYVDAMLIAEoAjAQgRIhAyACQYgBakE0aiABQTRqKAIANgIAIAJBADoAsAEgAkGQAWpBACkDmPucASIINwMAIAJBmAFqQQApA5D7nAEiCTcDACAC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GCAAIAM2AgQgAEEGNgIAIANBDGogBEGoAWopAwA3AgAgA0EUaiAEQbABaigCADYCAAwECyAEIAFBABDEAiAEKAIEIQMCQAJAIAQoAgBBAXENACADKAIIIQcgAygCBCEGIAMtABkhCCADKAIUIQkgAygCECEKIAMoAgAhAiAEKAIcIQsgA0EcQQQQnhIgAkGAgICAeEcNASAGIQMLIABBCTYCACAAIAM2AgQMBAtBBEEcEOsfIgNFDQYgAyAIOgAZIANBAToAGCADIAk2AhQgAyAKNgIQIAMgCzYCDCADIAc2AgggAyAGNgIEIAMgAjYCACAAIAM2AgQgAEECNgIADAMLIAZBtH9qQf8BcUHVAEkNACAAQQg2AgAgBEEgahDMHQwDCyAGIAEQiAshDyAEQThqIAEgBCgCGCADIA9BARCKBAJAIAQoAjgiA0EJRw0AQShFDQMgACAEQThqQSj8CgAADAMLQQghAgJAIANBCEYNACAEIAM2AtgBAkBBJEUiAw0AIARB2AFqQQRyIARBOGpBBHJBJPwKAAALIARBgAJqIARB2AFqEJoLIAQoAoACIQIgAw0AIARBtAFqIARBgAJqQQRyQST8CgAACyAAIAI2AgBBJEUNAiAAQQRqIARBtAFqQST8CgAADAILIAAgBCkDODcDCCAAIAM2AgQgACAINgIAIABBIGogBykDADcDACAAQRhqIAYpAwA3AwAgAEEQaiACKQMANwMACyAEQSBqEMwdCyABIAU2AngMAgsgAEEINgIAIAMQzB0MAQsACyAEQbACaiQAC8wTAg9/AX4jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXxqIgNBBCADQQdJGw4HAAECAwQFBgALIAEoAgghBCABKAIUIQUgASgCECEGIAJBCGogASgCDCIHQQhBKBDMDSACKAIMIQggAigCCEEBRg0HIAIoAhAhCQJAIAhFDQAgB0EobCEKIAkhAyAIIQsDQCAKRQ0BIAJBCGogBBDRAiADQSBqIAJBCGpBIGopAwA3AwAgA0EYaiACQQhqQRhqKQMANwMAIANBEGogAkEIakEQaikDADcDACADQQhqIAJBCGpBCGopAwA3AwAgAyACKQMINwMAIApBWGohCiADQShqIQMgBEEoaiEEIAtBf2oiCw0ACwtBACEEQQAh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AigCCEEBRg0FIAIoAhAhCQJAIAhFDQAgB0EobCEKIAkhAyAIIQsDQCAKRQ0BIAJBCGogBBDRAiADQSBqIAJBCGpBIGopAwA3AwAgA0EYaiACQQhqQRhqKQMANwMAIANBEGogAkEIakEQaikDADcDACADQQhqIAJBCGpBCGopAwA3AwAgAyACKQMINwMAIApBWGohCiADQShqIQMgBEEoaiEEIAtBf2oiCw0ACwsCQAJAIAEoAhAiBA0AQQAhAwwBC0EALQDA8Z0BGkEMEIUBIgNFDQNBAC0AwPGdARogBCgCCCELIAQoAgQhBUHgABCFASIKRQ0DIAogBCgCABBkIAMgCzYCCCADIAU2AgQgAyAKNgIACyAAIAM2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEEKNgIAIAAgAS8BHDsBHCAAIAEpAhQ3AhQLIAJBMGokAA8LIAggAigCEEGIn5oBEKoeCwALIAggAigCEEGIn5oBEKoeAAsgCCACKAIQQYifmgEQqh4ACyAIIAIoAhBBiJ+aARCqHgALuBICC38BfiMAQYADayICJAACQAJAAkACQAJAAkACQCAAKAIADggABQQDBgYCAQALAkAgACgCICIDQQhqKAIAIgBFDQAgA0EEaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQcAAaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAkBBMkYNASAAEMkBIABBOGogAkHAAGpBOGopAwA3AwAgAEEwaiACQcAAakEwaikDADcDACAAQShqIAJBwABqQShqKQMANwMAIABBIGogAkHAAGpBIGopAwA3AwAgAEEYaiACQcAAakEYaikDADcDACAAQRBqIAJBwABqQRBqKQMANwMAIAYgAkHAAGpBCGopAwA3AwAgACACKQNANwMADAELIAAgARBGCyAEQQxqIQQgBUF0aiIFDQALCwJAIANBFGooAgAiBEUNACADQRBqKAIAIQAgBEHYAGwhBANAIAAgARBoIABB2ABqIQAgBEGof2oiBA0ACwsgAygCMCIARQ0FAkAgACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiBBC1DCACKAIAQTJGDQYgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgACACKQMANwMADAYLIAAgARBGDAULIAAoAgQiAC0ARSIEQQNGDQQCQCAEQQJGDQACQCAAKAJAIgAtACVBAkYNACAAQSBqIAEQrBAMBgsgAEEIaigCACIERQ0FIABBBGooAgAhACAEQThsIQQDQAJAAkAgACgCAEEJRw0AIABBCGogARBvDAELIAAgARCgAgsgAEE4aiEAIARBSGoiBA0ADAYLCyAAQShqKAIAIgRFDQQgAEEkaigCACEAIARBOGwhBANAAkACQCAAKAIAQQlHDQAgAEEIaiABEG8MAQsgACABEKACCyAAQThqIQAgBEFIaiIEDQAMBQsLIAAoAgQiAEEoaigCACIERQ0DIARBMGwhBSAAQSRqKAIAQShqIQQDQAJAIAQoAgAiAEUNAAJAIAAoAgBBGkcNACACQcACaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAsACQTJGDQEgABDJASAAQThqIAJBwAJqQThqKQMANwMAIABBMGogAkHAAmpBMGopAwA3AwAgAEEoaiACQcACakEoaikDADcDACAAQSBqIAJBwAJqQSBqKQMANwMAIABBGGogAkHAAmpBGGopAwA3AwAgAEEQaiACQcACakEQaikDADcDACAGIAJBwAJqQQhqKQMANwMAIAAgAikDwAI3AwAMAQsgACABEEYLIARBMGohBCAFQVBqIgUNAAwECwsgACgCBCIAQQhqKAIAIgRFDQIgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQlwMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkGAAmogASgCACABKAIEIARBCGoiBhC1DCACKAKAAkEyRg0BIAQQyQEgBEE4aiACQYACakE4aikDADcDACAEQTBqIAJBgAJqQTBqKQMANwMAIARBKGogAkGAAmpBKGopAwA3AwAgBEEgaiACQYACakEgaikDADcDACAEQRhqIAJBgAJqQRhqKQMANwMAIARBEGogAkGAAmpBEGopAwA3AwAgBiACQYACakEIaikDADcDACAEIAIpA4ACNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwDCwsgACgCBCIAQQhqKAIAIgRFDQEgAEEEaigCACIAIARBOGxqIQUDQCAAIAEQlwMCQCAAQTBqKAIAIgRFDQACQCAEKAIAQRpHDQAgAkHAAWogASgCACABKAIEIARBCGoiBhC1DCACKALAAUEyRg0BIAQQyQEgBEE4aiACQcABakE4aikDADcDACAEQTBqIAJBwAFqQTBqKQMANwMAIARBKGogAkHAAWpBKGopAwA3AwAgBEEgaiACQcABakEgaikDADcDACAEQRhqIAJBwAFqQRhqKQMANwMAIARBEGogAkHAAWpBEGopAwA3AwAgBiACQcABakEIaikDADcDACAEIAIpA8ABNwMADAELIAQgARBGCyAAQThqIgAgBUcNAAwCCwsCQCAAKAIgIgdBCGooAgAiAEUNACAHQQRqKAIAIgggAEEGdGohCQNAAkAgCEE4aigCACIARQ0AIAhBNGooAgAhBCAAQQxsIQUDQAJAAkAgBCgCACIAKAIAQRpHDQAgASgCAEEBRw0BIAEoAgQiAyAAKAIYRw0BAkACQCAAKQMIIg1CA4NCAFINACANpyIGIAYoAgAiBkEBajYCACAGQX9MDQELQQAtAMDxnQEaIAAoAhQhCiAAKAIQIQsgAC0AHCEMQcAAEIUBIgZFDQAgBiAMOgAcIAYgAzYCGCAGQgA3AxAgBiANNwMIIAZBGjYCACAAEMkBIAAgBjYCKCAAIAo2AiQgACALNgIgIABCADcDGCAAQpG+ATcDECAAQQA2AgggAEEUNgIADAILAAsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAggARCDBCAIQcAAaiIAIQggACAJRw0ACwsCQCAHQRRqKAIAIgBFDQAgB0EQaigCACEEIABBDGwhBQNAAkACQCAEKAIAIgAoAgBBGkcNACACQYABaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAoABQTJGDQEgABDJASAAQThqIAJBgAFqQThqKQMANwMAIABBMGogAkGAAWpBMGopAwA3AwAgAEEoaiACQYABakEoaikDADcDACAAQSBqIAJBgAFqQSBqKQMANwMAIABBGGogAkGAAWpBGGopAwA3AwAgAEEQaiACQYABakEQaikDADcDACAGIAJBgAFqQQhqKQMANwMAIAAgAikDgAE3AwAMAQsgACABEEYLIARBDGohBCAFQXRqIgUNAAsLIAcoAhhBgICAgHhGDQAgB0EgaigCACIERQ0AIAdBHGooAgAhACAEQTBsIQQDQCAAIAEQbyAAQTBqIQAgBEFQaiIEDQALCyACQYADaiQAC8MSAhJ/A34jAEHAAGsiAiQAAkADQAJAAkACQAJAIAEoAgBBZ2oOCwABAQEBAQEBAQECAQsgASgCDEEBRg0CCyACQcAAaiQADwsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIEIgMoAgBBdGoiBEEHIARBJkkbDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIANBCGohBCADQQRqIQMMLAsgA0EUaiEEIANBEGohAwwrCyADQRRqIQQgA0EQaiEDDCoLIAMoAiAiA0E0aiEEIANBMGohAwwpCyADQQxqIQQgA0EIaiEDDCgLIANBCGohBCADQQRqIQMMJwsgA0EQaiEEIANBDGohAwwmCyADQTRqIQQgA0EwaiEDDCULIANBJGohBCADQSBqIQMMJAsgA0EkaiEEIANBIGohAwwjCyADQRRqIQQgA0EQaiEDDCILIANBIGohBCADQRxqIQMMIQsgA0EYaiEEIANBFGohAwwgCyADQRRqIQQgA0EQaiEDDB8LIANBFGohBCADQRBqIQMMHgsgAygCCA4HFhcYGRobHBYLIANBIGohBCADQRxqIQMMHAsgA0EQaiEEIANBDGohAwwbCyADQRhqIQQgA0EUaiEDDBoLIAMoAiAiA0EoaiEEIANBJGohAwwZCyADQQhqIQQgA0EEaiEDDBgLIANBCGohBCADQQRqIQMMFwsgA0EMaiEEIANBCGohAwwWCyADQQxqIQQgA0EIaiEDDBULIANBHGohBCADQRhqIQMMFAsgA0EsaiEEIANBKGohAwwTCyADQQhqIQQgA0EEaiEDDBILIAMoAgQiA0EEaiEEDBELIANBFGohBCADQRBqIQMMEAsgA0EQaiEEIANBDGohAwwPCyADQQxqIQQgA0EIaiEDDA4LIANBDGohBCADQQhqIQMMDQsgA0EQaiEEIANBDGohAwwMCyADQRBqIQQgA0EMaiEDDAsLIANBEGohBCADQQxqIQMMCgsgA0EUaiEEIANBEGohAwwJCyADQQxqIQQgA0EIaiEDDAgLIANBCGohBCADQQRqIQMMBwsgA0EcaiEEIANBGGohAwwGCyADQRBqIQQgA0EMaiEDDAULIANBEGohBCADQQxqIQMMBAsgA0EUaiEEIANBEGohAwwDCyADQRRqIQQgA0EQaiEDDAILIANBJGohBCADQSBqIQMMAQsgA0EkaiEEIANBIGohAwtBAC0AwPGdARogASgCDCEFIAEoAgghBiAEKAIAIQcgAygCACEIQcAAEIUBIgRFDQIgBEEANgIIIARCMTcDACABKAIEIQMgASAENgIEIAJBCGoiBCADQQhqKQMANwMAIAJBEGoiCSADQRBqKQMANwMAIAJBGGoiCiADQRhqKQMANwMAIAJBIGoiCyADQSBqKQMANwMAIAJBKGoiDCADQShqKQMANwMAIAJBMGoiDSADQTBqKQMANwMAIAJBOGoiDiADQThqKQMANwMAIAIgAykDADcDACABEMkBIAFBOGogDikDADcDACABQTBqIA0pAwA3AwAgAUEoaiAMKQMANwMAIAFBIGogCykDADcDACABQRhqIAopAwA3AwAgAUEQaiAJKQMANwMAIAFBCGogBCkDADcDACABIAIpAwA3AwAgA0HAAEEIEJ4SIAhB3cvdnnlsIAdqQd3L3Z55bEEPdyEJIAAoAgghDCAAKAIEIQ0CQCAAKAIUDQAgAEEMaiANIAwQ9QMaCyAAKAIMIgpBfGohDiAAKAIQIgsgCXEhBCAJQRl2Ig+tQoGChIiQoMCAAX4hFEEAIRBBACERAkACQAJAAkADQCAKIARqKQAAIhUgFIUiFkJ/hSAWQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIRYCQANAIBZQDQEgDiAWeqdBA3YgBGogC3FBAnRrKAIAIgMgDE8NAyAWQn98IBaDIRYgCCANIANBFGxqIhIoAgBHDQAgByASQQRqKAIARw0ACyADIAAoAggiBE8NAyAAKAIEIANBFGxqIgMgBTYCDCADIAY2AggMBwsgFUKAgYKEiJCgwIB/gyEWAkACQAJAAkAgEUUNAEEBIREMAQsgFkIAUiERIBZ6p0EDdiAEaiALcSETIBZQDQELIBYgFUIBhoNCAFINAQsgBCAQQQhqIhBqIAtxIQQMAQsLAkAgCiATaiwAACIDQQBIDQAgCiAKKQMAQoCBgoSIkKDAgH+DeqdBA3YiE2otAAAhAwsgACgCCCEEIAogE2ogDzoAACAKIAsgE0F4anFqQQhqIA86AAAgCiATQQJ0a0F8aiAENgIAIAAgACgCFCADQQFxazYCFCAAIAAoAhhBAWo2AhggACgCCCIDIAAoAgBHDQMgACgCGCAAKAIUaiIEQebMmTMgBEHmzJkzSRsgA2siBEEBTQ0CIAAgAyAEQQRBFBCxCyEEIAAoAgghAyAEQYGAgIB4Rw0CDAMLIAMgDEGsoJoBELMRAAsgAyAEQYSimgEQsxEACyAAIANBAUEEQRQQ+AogACgCCCEDCwJAIAMgACgCAEcNACAAEMkWCyAAIANBAWo2AgggACgCBCADQRRsaiIDIAk2AhAgAyAFNgIMIAMgBjYCCCADIAc2AgQgAyAINgIADAELQQAtAMDxnQEaIAEoAgghCUHAABCFASIERQ0BIARBADYCCCAEQjE3AwAgCSgCACEDIAkgBDYCACACQQhqIgQgA0EIaikDADcDACACQRBqIgkgA0EQaikDADcDACACQRhqIgggA0EYaikDADcDACACQSBqIgcgA0EgaikDADcDACACQShqIgogA0EoaikDADcDACACQTBqIgsgA0EwaikDADcDACACQThqIgUgA0E4aikDADcDACACIAMpAwA3AwAgARDJASABQThqIAUpAwA3AwAgAUEwaiALKQMANwMAIAFBKGogCikDADcDACABQSBqIAcpAwA3AwAgAUEYaiAIKQMANwMAIAFBEGogCSkDADcDACABQQhqIAQpAwA3AwAgASACKQMANwMAIANBwABBCBCeEgwACwsAC7gSAQx/IwBBEGsiAiQAAkAgAC0AbEECRw0AIABBwABqIQMDQCADKAIYIgMtACxBAkYNAAsLAkAgACgChAEiA0UNACAAKAKAASIEIANB2ABsaiEFA0ACQAJAIAQoAgAiA0EFRw0AIAEtACQhBiABQQI6ACQgAS0AJSEDIAEgBCgCBCIHEMYBIAcgARBSIAEgAzoAJSABQQI6ACQgASAHEJsBIAEgAzoAJSABIAY6ACQMAQsgA0EERg0AAkACQAJAAkACQCADDgQFAAECBQsgBCgCBEEBRw0EIAQoAgghAyABLQAkIgcNAyADKAIAQXRqIgZBByAGQSZJG0F7aiIG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AhQhByACKAIYDQIgAigCICEFDBALAkAgACgC0AIiBw0AQQEQxxwhBAwTCyAHIAAoAswCSw0OIAcgACgCPHZBfmoiCCAAKAIUIglPDQggAigCHEEAIAIoAhgbIgkgACgCECAIQQxsaiIIKAIITw0OIAJBATYCGCACIAlBAWo2AhwgCCgCBCAJQQJ0aigCACIHIAAoAiAiBk8NCSAFIAAoAhwgB0ECdGooAgAiAEkNCiACIAc2AgwgAiAFNgIIIAJBATYCACACIAUgAGs2AgQLQQAhBAwRCyAHIAAoAjx2QX5qIgUgACgCFCIITw0JAkAgAigCHCIIIAAoAhAgBUEMbGoiBSgCCEkNACACQQA2AhggAkEANgIAIAIgAigCIEEBaiIFNgIgDA4LIAJBATYCGCACIAhBAWo2AhwgBSgCBCAIQQJ0aigCACIFIAAoAiAiB08NCiACKAIgQQFqIgcgACgCHCAFQQJ0aigCACIASQ0LIAIgBTYCDCACIAc2AgggAkEBNgIAIAIgByAAazYCBAwQCyAIIAlBtO+DARCzEQALIAcgBkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAUgCEG074MBELMRAAsgBSAHQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAsgCCAJQbTvgwEQsxEACyAHIAZBhO+DARCzEQALIANBADYCGCADQQE2AgwgA0HE5oMBNgIIIANCBDcCECADQQhqQczmgwEQhRsACyAFIAhBtO+DARCzEQALIAUgB0GE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAJBADYCGCACIAc2AhQgAkEBNgIQIAIgBTYCICACQQA2AgALAkAgBSAGTw0AIABBwABqIQogASgCDCEIIAEoAgghCQNAAkACQAJAAkACQAJAAkACQAJAIAUgCE8NACAHIAogCSAFai0AAGotAABqIgcgACgCCCIBTw0CIAAoAgQgB0ECdGooAgAiByAAKALIAk0NASAFIQEMBwsgBSAIQZydgAEQsxEACyACIAc2AhQgAkEBNgIQIAdFDQsCQCAHIAAoAswCSw0AIAJCgYCAgBA3AhggByAAKAI8dkF+aiIHIAAoAhQiBk8NAiAAKAIQIAdBDGxqIgcoAghFDQMgBygCBCgCACIHIAAoAiAiBk8NBCAFQQFqIgUgACgCHCAHQQJ0aigCACIASQ0FIAIgBzYCDCACIAU2AgggAkEBNgIAIAIgBSAAazYCBAwMCyADQQhqIAAoAiggACgCLCIBKAIIQX9qQXhxakEIaiAJIAggBSAGIAEoAhAREwAgAygCCEUNCyADKAIMIgUgAigCICIBTQ0FDAYLIAcgAUH07oMBELMRAAsgByAGQZTvgwEQsxEAC0EAQQBBpO+DARCzEQALIAcgBkGE74MBELMRAAsgA0EANgIYIANBATYCDCADQcTmgwE2AgggA0IENwIQIANBCGpBzOaDARCFGwALIAFBAWohBQsgAiAFNgIgIAUgBkkNAAsLIAIgBzYCFCACQQE2AhAMAgsgAkEANgIYIAIgBzYCFCACQQE2AhAgAiAFNgIgIAJBADYCAAsCQAJAIAUgBk8NACAFIAEoAgwiCyAFIAtLGyEIIABBwABqIQkgASgCCCEBA0AgCCAFRg0FIAcgCSABIAVqLQAAai0AAGoiByAAKAIIIgpPDQQCQCAAKAIEIAdBAnRqKAIAIgcgACgCyAJLDQAgAiAHNgIUIAJBATYCECAHRQ0EIAcgACgCzAJNDQMLIAIgBUEBaiIFNgIgIAYgBUcNAAsLIAIgBzYCFCACQQE2AhAMAQsgAkKBgICAEDcCGCAHIAAoAjx2QX5qIgcgACgCFCIGTw0DIAAoAhAgB0EMbGoiBygCCEUNBCAHKAIEKAIAIgcgACgCICIGTw0FIAVBAWoiBSAAKAIcIAdBAnRqKAIAIgBJDQYgAiAHNgIMIAIgBTYCCCACQQE2AgAgAiAFIABrNgIECyADQSBqJAAgBA8LIAcgCkH07oMBELMRAAsgCCALQZydgAEQsxEACyAHIAZBlO+DARCzEQALQQBBAEGk74MBELMRAAsgByAGQYTvgwEQsxEACyADQQA2AhggA0EBNgIMIANBxOaDATYCCCADQgQ3AhAgA0EIakHM5oMBEIUbAAvpEAEFfyMAQcACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDDQACQAJAAkACQAJAIAAoAgQiAygCACIEQXtqIgBBBCAAQQZJGw4GEAABAgMEEAsgAygCCEEDRw0OIAMoAgwiACgCAEEaRw0FIAJBgAJqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCgAJBMkYNDiAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAQgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwOCyADKAIoIgMoAgBBGkcNBSACQcAAaiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAkBBMkYNDiADEMkBIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIAEgAkHAAGpBCGopAwA3AwAgAyACKQNANwMADA4LIAMoAghBA0cNCyADKAIMIgAoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgAEEIaiIEELUMIAIoAoACQTJGDQsgABDJASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAEIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMCwsgA0EgaiEAIARBA0cNCSADKAIEIgQoAgBBGkcNBSACQYACaiABKAIAIAEoAgQgBEEIaiIFELUMIAIoAoACQTJGDQkgBBDJASAEQThqIAJBgAJqQThqKQMANwMAIARBMGogAkGAAmpBMGopAwA3AwAgBEEoaiACQYACakEoaikDADcDACAEQSBqIAJBgAJqQSBqKQMANwMAIARBGGogAkGAAmpBGGopAwA3AwAgBEEQaiACQYACakEQaikDADcDACAFIAJBgAJqQQhqKQMANwMAIAQgAikDgAI3AwAMCQsgAygCCEEDRw0HIAMoAgwiACgCAEEaRw0FIAJBgAJqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCgAJBMkYNByAAEMkBIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIAQgAkGAAmpBCGopAwA3AwAgACACKQOAAjcDAAwHCyADKAIAQRpHDQUgAiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAgBBMkYNCiADEMkBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACADIAIpAwA3AwAMCgsgACABEEYMCAsgAyABEEYMCAsgACABEEYMBQsgBCABEEYMAwsgACABEEYMAQsgAyABEEYMBAsgAygCKCIGIAEQ1ggCQCAGQRRqKAIAIgNFDQAgBkEQaigCACEAIANBDGwhBANAAkACQCAAKAIAIgMoAgBBGkcNACACQcABaiABKAIAIAEoAgQgA0EIaiIFELUMIAIoAsABQTJGDQEgAxDJASADQThqIAJBwAFqQThqKQMANwMAIANBMGogAkHAAWpBMGopAwA3AwAgA0EoaiACQcABakEoaikDADcDACADQSBqIAJBwAFqQSBqKQMANwMAIANBGGogAkHAAWpBGGopAwA3AwAgA0EQaiACQcABakEQaikDADcDACAFIAJBwAFqQQhqKQMANwMAIAMgAikDwAE3AwAMAQsgAyABEEYLIABBDGohACAEQXRqIgQNAAsLIAYoAhhBgICAgHhGDQMgBkEgaigCACIARQ0DIAZBHGooAgAhAyAAQTBsIQADQCADIAEQbyADQTBqIQMgAEFQaiIADQAMBAsLAkAgACgCAEEHRg0AIAAgARCXAwsgAygCaCABEJcDIAMoAkhBgICAgHhGDQIgA0HQAGooAgAiAEUNAiADQcwAaigCACEDIABBMGwhAANAIAMgARBvIANBMGohAyAAQVBqIgANAAwDCwsgAygCKEGAgICAeEYNASADQTBqKAIAIgBFDQEgA0EsaigCACEDIABBMGwhAANAIAMgARBvIANBMGohAyAAQVBqIgANAAwCCwsCQCADKAIoIgMoAgBBGkcNACACQYABaiABKAIAIAEoAgQgA0EIaiIBELUMIAIoAoABQTJGDQEgAxDJASADQThqIAJBgAFqQThqKQMANwMAIANBMGogAkGAAWpBMGopAwA3AwAgA0EoaiACQYABakEoaikDADcDACADQSBqIAJBgAFqQSBqKQMANwMAIANBGGogAkGAAWpBGGopAwA3AwAgA0EQaiACQYABakEQaikDADcDACABIAJBgAFqQQhqKQMANwMAIAMgAikDgAE3AwAMAQsgAyABEEYLIAJBwAJqJAALgBECCn8BfiMAQZABayICJAACQAJAAkAgASgCACIDQQlHDQAgACABQQhqEN8BDAELAkACQAJAAkACQAJAAkACQCADDgkABwYFBAMJAgEACwJAIAEoAgwiBEUNACABKAIIIQNBACEFAkACQANAIAVBAWohBgJAIAMpAwBCAlYNACADQcAAai0AAEEBcQ0CCyADQcgAaiEDIAYhBSAEIAZHDQALQQAhBQwBCyADEL8JAkAgBiAERw0AQQEhBQwBCyAFQX9zIARqIQYgA0HIAGohA0EBIQUDQAJAAkAgAykDAEICVg0AIANBwABqLQAAQQFxRQ0AIAMQvwkgBUEBaiEFDAELQcgARQ0AIAMgBUG4f2xqIANByAD8CgAACyADQcgAaiEDIAZBf2oiBg0ACwsgASAEIAVrNgIMCyABKAIcIgNFDQcgA0EIaigCACIGRQ0HIANBBGooAgAhAyAGQQxsIQYDQAJAAkAgAygCACIFDQAgA0EEaigCACAAENwDDAELIAAgBRCMAQsgA0EMaiEDIAZBdGoiBg0ADAgLCyABQQA6ACQMBwsgACABKAIEEIwBDAULIAEoAhAiA0UNBCADQQhqKAIAIgZFDQQgA0EEaigCACEDIAZBDGwhBgNAAkACQCADKAIAIgUNACADQQRqKAIAIAAQ3AMMAQsgACAFEIwBCyADQQxqIQMgBkF0aiIGDQAMBQsLIAAgASgCBBCMAQwDCwJAAkACQCABKAIIDgMAAQYACwJAIAEtACQiB0ECRg0AIAFBADoAJAsgASgCKCIIQQA6ADwgCCgCICEFIAhBADYCIAJAIAVFDQAgCCgCHCEGA0AgBkEMaigCACEDIAYoAgAiBBDZASAEQcAAQQgQnhICQCADRQ0AIAMQuBggAygCACADQQRqKAIAEMAgIANBFEEEEJ4SCyAGQRBqIQYgBUF/aiIFDQALCyAIIAAQ6gwgB0ECRw0BDAQLAkAgAS0AJCIIQQJGDQAgAUEAOgAkCyAAIAEoAigiBRCLByAFQRhqIQQCQCAFKAIUIgZFDQAgBSgCECEDIAZBDGwhBgNAIAAgAygCABCMASADQQxqIQMgBkF0aiIGDQALCwJAIAQoAgBBgICAgHhGDQAgACAEEMECCwJAIAUoAjwiA0UNACADEOQNIAMoAgAgA0EEaigCABDCICADQRRBBBCeEgsgBUEANgI8AkAgBSgCQCIDRQ0AIAMoAgAiBhDGAyAGQeAAQQgQnhIgA0EMQQQQnhILIAVBADYCQCAIQQJGDQMLIAJB2ABqIAEpAxAgASgCIBC6GCAAQZABaiACKQNYIAIoAmAQ5wUaDAILAkAgASgCDCIERQ0AIAEoAgghA0EAIQUCQAJAA0AgBUEBaiEGAkAgAykDAEIBVg0AIANByABqLQAAQQFxDQILIANB0ABqIQMgBiEFIAQgBkcNAAtBACEFDAELIAMQyQgCQCAGIARHDQBBASEFDAELIAVBf3MgBGohBiADQdAAaiEDQQEhBQNAAkACQCADKQMAQgFWDQAgA0HIAGotAABBAXFFDQAgAxDJCCAFQQFqIQUMAQtB0ABFDQAgAyAFQbB/bGogA0HQAPwKAAALIANB0ABqIQMgBkF/aiIGDQALCyABIAQgBWs2AgwLIAEoAhwiA0UNASADQQhqKAIAIgZFDQEgA0EEaigCACEDIAZBDGwhBgNAAkACQCADKAIAIgUNACADQQRqKAIAIAAQ3AMMAQsgACAFEIwBCyADQQxqIQMgBkF0aiIGDQAMAgsLAkAgACgCAEUNACABKAIIQQJHDQAgASgCDCIDKAIIIgZFDQEgAygCBCEDIAZBOGwhBgNAIAMgABC+BAJAIAAoAgBFDQAgACADEIMICwJAIANBMGooAgAiBUUNACAAIAUQjAELIANBOGohAyAGQUhqIgYNAAwCCwsgAUEIaiAAEJYFCyABKAIAQQFHDQAgAkHYAGoQ7RcgAkEwakEgaiABQShqIgYpAwA3AwAgAkEwakEYaiABQSBqIgUpAwA3AwAgAkEwakEQaiABQRhqIgQpAwA3AwAgAkEwakEIaiABQRBqIgMpAwA3AwAgASkDCCEMIAEgAikDWDcDCCADIAJB2ABqQQhqIgcpAwA3AwAgBCACQdgAakEQaiIJKQMANwMAIAUgAkHYAGpBGGoiCikDADcDACAGIAJB2ABqQSBqIgspAwA3AwAgAiAMNwMwIAIgACACQTBqQQEQXiABQQhqIQACQAJAAkAgAigCAEFtaiIIQQIgCEECSRsOAwABAgALIAEpAwAhDCABQQk2AgAgAkHYAGpBMGogAUEwaikDADcDACACQdgAakEoaiAGKQMANwMAIAsgBSkDADcDACAKIAQpAwA3AwAgCSADKQMANwMAIAcgACkDADcDACADQQA2AgAgAEIBNwMAIAIgDDcDWAJAIAynQQlGDQAgAkHYAGoQpgUMAwsgAkHgAGoQ1wMMAgsgABD0BCAAQSBqIAJBKGopAwA3AwAgAEEYaiACQSBqKQMANwMAIABBEGogAkEYaikDADcDACAAQQhqIAJBEGopAwA3AwAgACACKQMINwMADAELIAJB2ABqQSxqIAJBKGopAwA3AgAgAkHYAGpBJGogAkEgaikDADcCACACQdgAakEcaiACQRhqKQMANwIAIAJB2ABqQRRqIAJBEGopAwA3AgAgAkHYAGpBDGogAkEIaikDADcCACACIAIpAwA3AlwgARCmBSABQQk2AgAgASACKQJYNwIEIAFBDGogBykCADcCACABQRRqIAkpAgA3AgAgAUEcaiAKKQIANwIAIAFBJGogCykCADcCACABQSxqIAJB2ABqQShqKQIANwIAIAFBNGogAkGIAWooAgA2AgALIAJBkAFqJAALzRECB38DfiMAQYAEayICJAACQAJAAkACQAJAIAAtAEUNACACQYACOwDEASABKAIEIQMCQCABKAIIIgRFDQAgBEEobCEFIAMhBgNAIAYgAkHEAWoQ8wggBkEoaiEGIAVBWGoiBQ0ACwsCQAJAIAEoAgwiBygCAEGAgICAeEcNACACLQDEAQ0BIAcoAgQgAkHEAWoQlQEMAQsgBygCCCIFRQ0AIAItAMQBDQAgBygCBCEGIAVBMGwhBQNAAkAgAi0AxAENACAGIAJBxAFqEPQCCyAGQTBqIQYgBUFQaiIFDQALCyACLQDEAUEBRw0AIARBKGwhBgNA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SAJAAkAgAS0AyAEiCEF9ag4FAwEBAQABCyABEIcODAELIARBBzoAhAIgBCAIOgDwASAEQcwAaiAEQfABahDWECABKALEASEIIAEoAsABIQ8gBEEBNgLUASAEQZjvmwE2AtABIARCATcC3AEgBCAWNwNwIAQgBEHwAGo2AtgBIARBiAFqIARB0AFqEI0VIBEgBEHMAGpBCGooAgA2AgAgCiAEKQJMNwIAIAEgDyAIIARBiAFqEK8aDAALCwJAIAQoAkAiCEGAgICAeEcNACANIQcMAgsgBCAHNgI8IAQgDTYCOCAEIAg2AjQgARCHDiABKAK8ASEBAkBBCEEwEOsfIgdFDQAgByABNgIcIAcgAjYCGEEAIQYgB0EAOgAUIAdBADYCECAHIAk2AgwgByAFNgIIIAcgFTcDACAHIAQpAjQ3AiAgByADOgAtIAdBADoALCAHQShqIARBNGpBCGooAgA2AgAMAwsACyABKALEASEHIAEoAsABIQogBEEoaiAIEN4bIARBATYC1AEgBEGY75sBNgLQASAEQgE3AtwBIARBigWtQiCGQeyhmwGthDcDcCAEIARB8ABqNgLYASAEQYgBaiAEQdABahCNFSAEQZwBaiAEQTBqKAIANgIAIAQgBCkCKDcClAEgCiAHIARBiAFqEIUVIQcgAS0AyAFBogFHDQAgARDHESEIIAEQhw4gASAIEOURCyAVEMYdCyAAIAc2AgQgACAGNgIAIARBkAJqJAAL4RACC38CfiMAQfAAayICJAACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgkAAQIDBAUGBwgACwJAIAAoAgwiA0UNACAAKAIIIQQgA0HIAGwhBSABQSxqIQYgAUGAAWohB0EAIQgDQAJAAkACQAJAIAQgCGoiAykDACINQn18Ig6nQQFqQQAgDkICVBsOAwABAgALIANBMGoiCSgCACEKAkAgAS0AkAENACAKRQ0AIAJB4ABqIANBIGopAwAgChC6GCAHIAIpA2AgAigCaBDnBRogAykDACENCwJAIA1CAlENACANp0EBcQ0AIAEtAJABDQAgA0EYaigCACILRQ0AIAJB4ABqIANBCGopAwAgCxC6GCAHIAIpA2AgAigCaBDnBRoLIAJB4ABqIANBIGoiAykDACAJKAIAELoYIAYgAikDYCACKAJoQQEQygsgASADKQMAIAoQjA8MAgsgA0EgaiILKAIAIgohCQJAIAEtAJABDQAgCiEJIApFDQAgAkHgAGogA0EQaikDACAKELoYIAcgAikDYCACKAJoEOcFGiALKAIAIQkLIAJB4ABqIANBEGoiAykDACAJELoYIAYgAikDYCACKAJoQQEQygsgASADKQMAIAoQjA8MAQsgA0EgaiILKAIAIgohCQJAIAEtAJABDQAgCiEJIApFDQAgAkHgAGogA0EQaikDACAKELoYIAcgAikDYCACKAJoEOcFGiALKAIAIQkLIAJB4ABqIANBEGoiAykDACAJELoYIAYgAikDYCACKAJoQQEQygsgASADKQMAIAoQjA8LIAUgCEHIAGoiCEcNAAsLIAAoAhwiA0UNCCADIAEQlQsMCAsgAEEIaiABENgCDAcLIAEtAJABIgwhBAJAIAAoAhgiC0UNAEEBIQQgAUEBOgCQAQsCQCAAKAIMIgNFDQAgACgCCCEKIANB0ABsIQkgAUGAAWohByABQSxqIQZBACEDA0ACQCAKIANqIggpAwAiDkIBVg0AIAFBAToAkAECQCAOp0EBcQ0AIAJB4ABqIAhBCGopAwAgCEEYaigCABC6GCAGIAIpA2AgAigCaBDRCgsCQCAIKAIADQAgAS0AkAENACAIQRhqKAIAIgVFDQAgAkHgAGogCEEIaikDACAFELoYIAcgAikDYCACKAJoEOcFGgsCQCAIQSBqKQMAIg5CAlENACAOp0EBcQ0AIAEtAJABDQAgCEE4aigCACIFRQ0AIAJB4ABqIAhBKGopAwAgBRC6GCAHIAIpA2AgAigCaBDnBRoLIAEgBDoAkAELIAkgA0HQAGoiA0cNAAsLAkAgACgCHCIDRQ0AIAMgARCVCwsgC0UNBiABIAw6AJABDAYLAkACQCAAKAIIDgMBAAcBCyAAQRBqIQMCQCAALQAkQQJGDQAgAkHgAGogACkDECAAKAIgELoYIAFBLGogAikDYCACKAJoQQEQygsLIAEgAxCFAwwGCyABQSxqIgQgAEEQaiIGEM8PAkAgAC0AJCIFQQJGDQAgASAAKQMQIAAoAiAQjA8LQQAhAyACQSBqQQApA5j7nAEiDjcCACACQTBqIA43AgAgAkEANgFaIAJBADYCFCACQoCAgICAATcCDCACQoCAgICAATcCSCACQoCAgIDAADcCOCACQQA2AlAgAkEAOgBEIAJBADYCQCACIAEvAXg7AVggAiABKAJ0NgJUIAJBACkDkPucASIONwIYIAIgDjcCKCACIAEtAH46AF4CQANAIANB1ABGDQEgASADakEsaiIIKAIAIQogCCACQQxqIANqIgkoAgA2AgAgCSAKNgIAIANBBGohAwwACwsCQCAFQQJGDQAgAS0AkAENACAAKAIgIgNFDQAgAkHgAGogBikDACADELoYIAFBgAFqIAIpA2AgAigCaBDnBRoLAkAgACgCKCIFQQhqKAIAIghFDQAgBUEEaigCACEDIAhBDGwhACABLQB5IQogAS0AKCEJA0AgAUEAOgB5IAFBADoAKAJAIAMoAgAiCCgCAEEaRw0AIAJB4ABqIAgpAwggCEEYaigCABC6GCAEIAIpA2AgAigCaBDRCgsgA0EMaiEDIAggARB3IAEgCToAKCABIAo6AHkgAEF0aiIADQALCwJAIAVBFGooAgAiCEUNACAFQRBqKAIAIQMgCEHYAGwhCANAIAMgARDsASADQdgAaiEDIAhBqH9qIggNAAsLAkAgBSgCMCIDRQ0AIAEtACghCCABQQA6ACggAS0AeSEAIAFBADoAeQJAIAMoAgBBGkcNACACQeAAaiADKQMIIANBGGooAgAQuhggBCACKQNgIAIoAmgQ0QoLIAMgARB3IAEgCDoAKCABIAA6AHkLIAQgAkEMahCTAwwFCyABLQAoIQggAUEAOgAoIAEtAHkhCiABQQA6AHkCQCAAKAIEIgMoAgBBGkcNACACQeAAaiADKQMIIANBGGooAgAQuhggAUEsaiACKQNgIAIoAmgQ0QoLIAMgARB3IAEgCDoAKCABIAo6AHkMBAsgACgCECIDRQ0DIAMgARCVCwwDCyABLQCQAQ0CIAAoAgQiA0E4aigCACIIRQ0CIAJB4ABqIAMpAyggCBC6GCABQYABaiACKQNgIAIoAmgQ5wUaDAILIAEtACghCCABQQA6ACggAS0AeSEKIAFBADoAeQJAIAAoAgQiAygCAEEaRw0AIAJB4ABqIAMpAwggA0EYaigCABC6GCABQSxqIAIpA2AgAigCaBDRCgsgAyABEHcgASAIOgAoIAEgCjoAeQwBCyABLQCQAQ0AIAAoAiAiA0UNACACQeAAaiAAKQMQIAMQuhggAUGAAWogAikDYCACKAJoEOcFGgsgAkHwAGokAAvEEAEMfyMAQSBrIgIkACABIABBwABqEMYIAkAgACgChAEiA0UNACAAKAKAASIEIANB2ABsaiEFIAJBDGohBiACQQhqIQcDQAJAAkAgBCgCACIDQQVHDQAgBCgCBCEDIAEtADkhCCABQQE6ADkgAkEDNgIIIAMgARBsIAEgCDoAOSACKAIIIgNBAUsNASAHIAIQoBggByACKQMAEO8XIANFDQEgAigCDCIDIAMoAgAiA0F/ajYCACADQQFHDQEgBhDfDwwBCyADQQRGDQACQAJAAkAgAw4EAwABAgMLIAQoAgRBAUcNAiABLQA5IQMgAUEBOgA5IAQoAgggARBsIAEgAzoAOQwCCyABIAQoAgQiCUHAAGoQxggCQCAJKAKEASIIRQ0AIAkoAoABIQMgCEHYAGwhCANAAkACQAJAIAMoAgBBfGoOAgIAAQsgA0EEaigCACEKIAEtADkhCyABQQE6ADkgAkEDNgIIIAogARBsIAEgCzoAOSACKAIIIgpBAUsNASAHIAIQoBggByACKQMAEO8XIApFDQEgAigCDCIKIAooAgAiCkF/ajYCACAKQQFHDQEgBhDfDwwBCyADIAEQ5QMLIANB2ABqIQMgCEGof2oiCA0ACwsCQCAJKAJ4IgNFDQAgAS0ANEEBRw0AIAEtADohCyABLQA5IQwgAUGBAjsAOQJAIAMoAggiCEUNACADKAIEIQMgCEECdCEIA0ACQCABLQA0QQFHDQAgAygCACEKIAFBgQI7ADkgCiABEPQBIAFBgQI7ADkLIANBBGohAyAIQXxqIggNAAsLIAEgCzoAOiABIAw6ADkLAkAgCSgCmAEiA0UNACAJKAKUASIKIANBKGxqIQsDQAJAAkACQAJAAkAgCigCAA4FBAABAgMECyAKKAIEQQFHDQMgAS0AOSEDIAFBAToAOSAKKAIIIAEQbCABIAM6ADkMAwsgAS0AOSEDIAFBAToAOSAKKAIEIAEQbCABIAM6ADkMAgsgASAKKAIEEOEFDAELIAooAgwhCCAKKAIIIQMgAiABNgIAIAhFDQAgCEEobCEIA0AgAiADEOoEIANBKGohAyAIQVhqIggNAAsLIApBKGoiCiALRw0ACwsgCS0APEEGRg0BIAEgCUEQahDGCAwBCyAEKAIMIQggBCgCCCEDIAIgATYCACAIRQ0AIAhBKGwhCANAIAIgAxDqBCADQShqIQMgCEFYaiIIDQALCyAEQdgAaiIEIAVHDQALCwJAIAAoAngiA0UNACABLQA0QQFHDQAgAS0AOiEEIAEtADkhCyABQYECOwA5AkAgAygCCCIIRQ0AIAMoAgQhAyAIQQJ0IQgDQAJAIAEtADRBAUcNACADKAIAIQogAUGBAjsAOSAKIAEQ9AEgAUGBAjsAOQsgA0EEaiEDIAhBfGoiCA0ACwsgASAEOgA6IAEgCzoAOQsCQCAAKAKYASIDRQ0AIAAoApQBIgsgA0EobGohCSACQQxqIQYgAkEIaiEFA0ACQAJAAkACQAJAIAsoAgAOBQQAAQIDBAsgCygCBEEBRw0DIAEtADkhAyABQQE6ADkgCygCCCABEGwgASADOgA5DAMLIAEtADkhAyABQQE6ADkgCygCBCABEGwgASADOgA5DAILIAEgCygCBCIHQcAAahDGCAJAIAdBhAFqKAIAIghFDQAgB0GAAWooAgAiAyAIQdgAbGohBANAAkACQCADKAIAIghBBUcNACADKAIEIQggAS0AOSEKIAFBAToAOSACQQM2AgggCCABEGwgASAKOgA5IAIoAggiCEEBSw0BIAUgAhCgGCAFIAIpAwAQ7xcgCEUNASACKAIMIgggCCgCACIIQX9qNgIAIAhBAUcNASAGEN8PDAELIAhBBEYNAAJAAkACQCAIDgQDAAECAwsgAygCBEEBRw0CIAEtADkhCCABQQE6ADkgAygCCCABEGwgASAIOgA5DAILIAMoAgQgARDWAQwBCyADKAIMIQogAygCCCEIIAIgATYCACAKRQ0AIApBKGwhCgNAIAIgCBDqBCAIQShqIQggCkFYaiIKDQALCyADQdgAaiIDIARHDQALCyAHQZABaiEEAkAgBygCeCIDRQ0AIAEtADRBAUcNACABLQA6IQwgAS0AOSENIAFBgQI7ADkCQCADKAIIIghFDQAgAygCBCEDIAhBAnQhCANAAkAgAS0ANEEBRw0AIAMoAgAhCiABQYECOwA5IAogARD0ASABQYECOwA5CyADQQRqIQMgCEF8aiIIDQALCyABIAw6ADogASANOgA5CyAEIAEQ+AIgBy0APEEGRg0BIAEgB0EQahDGCAwBCyALKAIMIgNFDQAgA0EobCEIIAsoAghBBGohAwNAAkACQAJAAkACQCADQXxqKAIADgUEAAECAwQLIAMoAgBBAUcNAyADQQRqKAIAIQogAS0AOSEEIAFBAToAOSACQQM2AgggCiABEGwgASAEOgA5IAIoAggiCkEBSw0DIAUgAhCgGCAFIAIpAwAQ7xcgCkUNAyACKAIMIgogCigCACIKQX9qNgIAIApBAUcNAyAGEN8PDAMLIAMoAgAhCiABLQA5IQQgAUEBOgA5IAJBAzYCCCAKIAEQbCABIAQ6ADkgAigCCCIKQQFLDQIgBSACEKAYIAUgAikDABDvFyAKRQ0CIAIoAgwiCiAKKAIAIgpBf2o2AgAgCkEBRw0CIAYQ3w8MAgsgAyABEM0FDAELIAMgARCNIgsgA0EoaiEDIAhBWGoiCA0ACwsgC0EoaiILIAlHDQALCwJAIAAtADxBBkYNACABIABBEGoQxggLIAJBIGokAAupEQIIfwF+IwBBkAJrIgIkAEECIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQDIASIEQfsAaiIFQQZ0IAVB/AFxQQJ2ckH/AXEOBwAGBgIGAQUGCyABKALAASEGIARB/wFxQYUBRw0CQQAhAwwKCyABKALAASEGIARB/wFxQZkBRw0CQQEhAwwJCyABKALAASEGIARB/wFxQZEBRg0IIAEoAsQBIQUgAkHYAWogBBDeGyACQQE2AlQgAkGY75sBNgJQIAJCATcCXCACQYoFrUIghkGJo5sBrYQ3A4gCIAIgAkGIAmo2AlggAkHwAWogAkHQAGoQjRUgAkGEAmogAkHgAWooAgA2AgAgAiACKQLYATcC/AEgBiAFIAJB8AFqEIUVIQUgBEH/AXFBogFHDQkgARDHESEEIAEQhw4gASAEEOURDAkLIAEoAsQBIQUgAkHIAWogBBDeGyACQQE2AlQgAkGY75sBNgJQIAJCATcCXCACQYoFrUIghkGApJsBrYQ3A4gCIAIgAkGIAmo2AlggAkHwAWogAkHQAGoQjRUgAkGEAmogAkHQAWooAgA2AgAgAiACKQLIATcC/AEgBiAFIAJB8AFqEIUVIQUgBEH/AXFBogFHDQggARDHESEEIAEQhw4gASAEEOURDAgLIAEoAsQBIQUgAkHEAGogBBDeGyACQQE2AlQgAkGY75sBNgJQIAJCATcCXCACQYoFrUIghkGBpJsBrYQ3A4gCIAIgAkGIAmo2AlggAkHwAWogAkHQAGoQjRUgAkGEAmogAkHMAGooAgA2AgAgAiACKQJENwL8ASAGIAUgAkHwAWoQhRUhBSAEQf8BcUGiAUcNByABEMcRIQQgARCHDiABIAQQ5REMBwsgASgCwAEhBgJAAkACQCAEQf8BcUGdAUcNACABEIcOIAJB0ABqIAEQwwsgAigCWCEFIAIpA1AiClANCSACKAJcIQNBACEEIAEtAIEBQSBxRQ0HIAEoAnghByACQdAAaiABEP8CIAEgB0EBcjYCeCABLQDIASIIQdkARw0BIAEQhw4gAkEoaiABEIMDIAIgAigCLCIENgL0ASACIAIoAigiCDYC8AECQCABKAJ4IglBgICAwABxDQAgAS0AyAFB/wFxQQpGDQMLIAhBAXFFDQQMBgsgASgCxAEhBSACQcQAaiAEEN4bIAJBATYCVCACQZjvmwE2AlAgAkIBNwJcIAJBigWtQiCGQYCimwGthDcD2AEgAiACQdgBajYCWCACQfABaiACQdAAahCNFSACQYQCaiACQcwAaigCADYCACACIAIpAkQ3AvwBIAYgBSACQfABahCFFSEFIARB/wFxQaIBRw0IIAEQxxEhBCABEIcOIAEgBBDlEQwICyABKALEASEEIAEoAsABIQcgAkHIAWogCBDeGyACQQE2AvQBIAJBmO+bATYC8AEgAkIBNwL8ASACQYoFrUIghkGBopsBrYQ3A4gCIAIgAkGIAmo2AvgBIAJB2AFqIAJB8AFqEI0VIAJB7AFqIAJB0AFqKAIANgIAIAIgAikCyAE3AuQBIAcgBCACQdgBahCFFSEEIAhBogFHDQQgARDHESEHIAEQhw4gASAHEOURDAQLIAJB9AFqIQQCQAJAIAgNACAEEOQGDAELIAQQ3x0LIAEgAkHQAGoQ8AVBACEEDAQLQQEhBCACQdAAaiABQYmjmwFBAUEAEIYGIAItAFBFDQEgAigCVCEFDAgLIAEgCUF+cSAHQQFxcjYCeCACQdAAahD9HgwCCyACLQBRIQUgAkEYaiABEFBBASEEIAIoAhwhAwJAIAIoAhhBAXENACAFQf8BcUGkAUchCAJAAkADQEEAIQQgAS0AyQENAyABLQDIAUH/AXFBBEcNAyABEIcOAkAgAS0AyAFBBUcNACABEIcOIAIgAxCsDiABKAK8ASEEIAIoAgAhBkEIQeAAEOsfIgVFDQogBSAENgIMIAUgBjYCCCAFIAM2AgQgBUEGNgIAIAUhAwwBCyACQRBqIAEQuwQgAigCFCEFIAIoAhBBAXENASACIAU2AkQCQCABLQDIASIEQQVHDQAgARCHDiACQQhqIAMQrA4gASgCvAEhBiACKAIIIQdBCEHgABDrHyIERQ0KIAQgCDoAFCAEIAY2AhAgBCAHNgIMIAQgBTYCCCAEIAM2AgQgBEEPNgIAIAQhAwwBCwsgAiADNgKIAiABKALAASEFIAEoAsQBIQMgAkHYAWogBBDeGyACQQE2AlQgAkGY75sBNgJQIAJCATcCXCACQYoFrUIghkGLo5sBrYQ3A8gBIAIgAkHIAWo2AlggAkHwAWogAkHQAGoQjRUgAkGEAmogAkHgAWooAgA2AgAgAiACKQLYATcC/AEgBSADIAJB8AFqEIUVIQUCQCABLQDIAUGiAUcNACABEMcRIQQgARCHDiABIAQQ5RELIAJBxABqEOQGDAELIAIgAzYCiAILIAJBiAJqEOQGDAQLIAMhBQwGCyACIAQ2AsQBIAJBATYCwAEgASACQdAAahDwBSACQcQBahDfHUEAIQQLIAJBwABqIgdBADsBACACQQA2AjwgASgCvAEhCEEIQeAAEOsfIgFFDQMgASAENgIwQQAhBCABQQA6ACwgAUEANgIoIAEgAzYCJCABIAU2AiAgASAKNwMYIAEgAzYCFCABIAU2AhAgASAINgIMIAEgBjYCCCABQQw2AgAgASACKAI8NgI0IAFBADoAOiABQThqIAcvAQA7AQAgASEFDAQLIAEQhw4gAkEgaiABENcBIAIoAiQhBCACKAIgQQFxRQ0BIAQhBQtBASEEDAILIAEoArwBIQFBCEHgABDrHyIFRQ0AIAUgAzoAECAFIAE2AgwgBSAGNgIIIAUgBDYCBCAFQQ42AgBBACEEDAELAAsgACAFNgIEIAAgBDYCACACQZACaiQAC/oPAgp/AX4jAEHwAGsiAyQAIAEoAhAhBCADQeAAaiACIAEoAgwiBUEAEJUCAkACQCADLQBgQQRGDQAgAykDYCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAAkACQCAFRQ0AIANB4ABqIAIgBRC0GiADLQBgQQRGDQAgAykDYCINQv8Bg0IEUg0BCyADQQA2AkggA0HgAGogAiADQcgAakHXrJsBQQEQuAwgAy0AYEEERg0BIAMpA2AiDUL/AYNCBFENASAAIA03AgAMAgsgACANNwIADAELIAEoAgQhBiADQeAAaiACIAUgASgCCCIHQZCDkAEgBxDWFwJAAkACQCADLQBgQQVGDQAgAykDYCENDAELIANB4ABqEIQfAkAgB0UNACADQQE6AFYgA0HAAGogBhCwEwJAIAItAF0NACADQeAAaiACEOIOIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQILIANBADoAVyAGQShqIQggByEJQQAhCkEAIQsDQAJAAkACQAJAAkACQCAJRQ0AIANBOGogCEFYaiIMELATIANB4ABqIAIgBEGQg5ABIAogCyADQdcAaiADQdYAahChBQJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQkLIAwoAgAOAwECAwELAkAgBiAHQThsakFIaiIIRQ0AIANBCGogCBCwEwsgA0HgAGogAiAFIARBkIOQASAKIAsQuQIgAy0AYEEERg0GIAMpA2AiDUL/AYNCBFINBwwGCyADQTBqIAhBYGoiChDSEiADQeAAaiACIAMoAjBBABCVAgJAAkAgAy0AYEEERg0AIAMpA2AiDUL/AYNCBFINAQsgA0EoaiAKENISAkAgAygCKCILRQ0AIANB4ABqIAIgCxC0GiADLQBgQQRGDQAgAykDYCINQv8Bg0IEUg0BCyADQeAAaiAKIAIQwgUCQCADLQBgQQRGDQAgAykDYCINQv8Bg0IEUg0BCyADQQA2AmAgA0HYAGogAiADQeAAakGhxJsBQQEQuAwCQCADLQBYQQRGDQAgAykDWCINQv8Bg0IEUg0BCwJAIAItAF0NACADQeAAaiACEOIOIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELIANB4ABqIAggAhDbIAJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELIANBIGogChDSEiADKAIkIgpFDQQgA0HgAGogAiAKELQaIAMtAGBBBEYNBCADKQNgIg1C/wGDQgRRDQQLIA1C/wGDQgRSDQIMAwsgCEFkaigCACELIANB4ABqIAIgCEFgaigCACIKQQAQlQICQAJAIAMtAGBBBEYNACADKQNgIg1C/wGDQgRSDQELAkAgCkUNACADQeAAaiACIAoQtBogAy0AYEEE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NgIIIAMgBCACQShqEM4FDQAgAkECNgIsIAJBrPqDATYCKCACQgE3AjQgAkEqNgIMIAIgAEE0ajYCCCACIAJBCGo2AjAgAyAEIAJBKGoQzgUNACACQQI2AiwgAkHM+oMBNgIoIAJCATcCNCACQSo2AgwgAiAAKAIgIhk2AiQgAiACQQhqNgIwIAIgAkEkajYCCCADIAQgAkEoahDOBQ0AIAJBAjYCLCACQfyegAE2AiggAkIBNwI0IAJBKjYCDCACIABBwAJqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0AIAJBAjYCLCACQaSfgAE2AiggAkIBNwI0IAJBKjYCDCACIABBxAJqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0AIAJBAjYCLCACQcifgAE2AiggAkIBNwI0IAJBKjYCDCACIABBOGo2AgggAiACQQhqNgIwQQEhEyADIAQgAkEoahCxHg0BIAJBAjYCLCACQeCfgAE2AiggAkIBNwI0IAJBygA2AgxBASETIAJBASAAKAI8dDYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqELEeDQEgAkECNgIsIAJBgKCAATYCKCACQgE3AjQgAkHGADYCDCACIABBwABqNgIIIAIgAkEIajYCMCADIAQgAkEoahCxHg0BIAJBoKCAATYCKCACQgE3AjQgAkEqNgIMIAAoAjAhFyAAKAIUIRQgACgCCCEdIAJBAjYCLCACIBRBDGwgHSAZakECdGogACgCJGogF0EAIAEbajYCJCACIAJBCGo2AjAgAiACQSRqNgIIIAMgBCACQShqELEeDQEgAkEANgI4IAJBATYCLCACQeD6gwE2AiggAkIENwIwIAMgBCACQShqELEeIRMMAQtBASETCyACQcAAaiQAIBMLhhEBCn8jAEGwAWsiAyQAAkACQCABKAIAIgQtABQiBUECRg0AIAVBAXENACAAIAEoAgQgASgCCCACQRxqQQAQlw8MAQsCQAJAAkACQAJAAkACQAJAAkAgAigCAEGAgICAeHMiBUECIAVBAkkbDgMCAAECCyADQeAAaiACKAIIIAIoAgwQpQggAkEcaiEGDAILIAIoAhQhBSACKAIQIQcgA0GYAWogAigCBCACKAIIEMUFIANBpAFqIAcgBRDFBSADQYgBaiADKAKcASIHIAMo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EKgXAkAgAygCKEGAgICAeEcNACADQeAAaiAEIAItADQgA0EoakEEahCtGyADKAJgIgFBgICAgHhGDQACQEEkRQ0AIABBBGogA0HgAGpBBGpBJPwKAAALIAAgATYCAAJAIAMoAigiAUGAgICAeEcNACADKAIsIAMoAjBBBEEIEMARDAILIAEgAygCLEEBQQEQwBEMAQtBKEUNACAAIANBKGpBKPwKAAALIANBsAFqJAAL/g8CC38BfiMAQZABayICJAACQAJAIAEQgAsNACABKAIAQQFGDQEgASkDACENIAFCATcDACACQeAAakEoaiABQShqKQMANwMAIAJB4ABqQSBqIAFBIGopAwA3AwAgAkHgAGpBGGogAUEYaikDADcDACACQeAAakEQaiABQRBqKQMANwMAIAJB4ABqQQhqIAFBCGoiAykDADcDACADQQA2AgAgAiANNwNgIAJB4ABqENcDDAELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAOEwASEgECAwQFBgcICQoLDA0ODxAACyAAIAFBBGoQwQIMEAsgACABKAIEEIwBIAAgASgCCBDfAQwPCyABKAIMIgNFDQ4gACADEIwBDA4LIAFBADoAJCAAIAEoAigQ3wEMDQsgAS0AJEECRg0NIAFBADoAJAwMCyABLQAkQQJGDQwgAUEAOgAkDAsLIAAgASgCBBCMASAAIAEoAggQ3wEgASgCFCIDRQ0KIAAgAxDfAQwKCyAAIAEoAhAQjAEgASgCDCIERQ0JIAEoAgghAyAEQRhsIQQDQAJAIANBFGooAgAiBUUNACAAIAUQjAELIAAgAxDBAiADQRhqIQMgBEFoaiIEDQAMCgsLIAAgASgCBBCMAQwICyAAIAEoAgQiA0HIAGoQwQIgA0HgAGohBAJAIAMoAgAiBUEIRg0AIANBKGohBgJAIAVBB0YNACADIAAQvgQgACgCAEUNACAAIAMQgwgLIAAgBhDBAgsgBCgCAEGAgICAeEYNByAAIAQQwQIMBwsgACABKAIEEIwBIAAgASgCCBDfAQwGCyAAIAEoAgQQjAEgACABKAIIEN8BDAULAkAgASgCBCIDQQJGDQACQCADQQFxRQ0AIAAgASgCCBCMAQwBCyABKAIIIgMoAggiBEUNACADKAIEIgcgBEE4bGohCANA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AAAAwKCjIA4gASARoaEiACABIACioKGhRAAAAAAAAPA/oCIBvSILQiCIp2oiA0GAgMAASA0AIAOtQiCGIAtC/////w+DhL8hAQwBCyABIAUQ/Q0hAQsgDyABoiEODAELRAAAAAAAAPA/IA6jIA4gC0IAUxshDiAMQn9VDQACQCAIIAdBgIDAgHxqcg0AIA4gDqEiASABow8LIA6aIA4gCEEBRhsPCyAOC5EQAg5/A34jAEGwBmsiAyQAAkACQCABKAIAQQFxRQ0AIANBkARqQRhqIAFBKGopAwA3AwAgA0GgBGogAUEgaikDADcDACADIAEpAxA3A5AEIAMgAUEYaikDADcDmAQMAQsgA0GoBGpCADcDACADQaAEakIANwMAIANCADcDmAQgA0IANwOQBAsCQAJAAkACQCACLwC5AkGzBnFFDQACQAJAIAEtAFtBAXENAEGAASEEA0AgBEH/AXFBAWoiBUH/AXEgBUcNAiADQcAAaiADQZAEaiAEQYABcUEDdmoiBikDACAGKQMIIARB/wBxEI0SIAUhBCADKQNAQgGDUEUNAAwECwtBgAEhBANAIANBMGpCAUIAIARB/wBxEIwSIANBkARqIARBA3ZBEHFqIgUgBSkDACADKQMwhDcDACAFIAUpAwggAykDOIQ3AwggBEH/AXFBAWoiBEH/AXEgBEYNAAwCCwsgAykDqARCAFkNAQsgA0GIAWogAykDmAQiETcCACADQZABaiADQZAEakEQaikDACISNwIAIANB0AFqQRhqIANBkARqQRhqKQMAIhM3AwAgA0HQAWpBEGogEjcDACADQdAAakEYaiATNwMAIANB0ABqQRBqIBI3AwAgAyADKQOQBCISNwKAASADIBE3A9gBIAMgEjcD0AEgAyARNwNYIAMgEjcDUAJAAkAgAUHaAGotAAAiBEECRg0AIARBAXENAEEAIQQCQEGAAkUNACADQbAEakEAQYAC/AsACwNAIANBsARqIARqIAQ6AAAgBEEBaiIEQYACRw0ADAILCyADQaABakEYaiACQagCaikDADcDACADQaABakEQaiACQaACaikDADcDACADIAIpA5ACNwOgASADIAJBmAJqKQMANwOoAQJAIANB0ABqQbDLhAFBIBCSFUUNAEEAIQUDQCAFQYACIAVBgAJLGyEGA0AgBiAFIgRGDQIgA0EgaiADQdAAaiAEQQN2QfD///8BcWoiBSkDACAFKQMIIARB/wBxEI0SIARBAWohBSADKQMgQgGDUA0ACwJAAkAgBEH+AU0NACAEIQcMAQsgBCEHA0AgA0EQaiADQdAAaiAFQQN2QfD///8BcWoiBikDACAGKQMIIAVB/wBxEI0SIAMpAxBCAYNQDQEgBSEHIAVBAWoiBiEFIAZBgAJHDQALQf8BIQdBgAIhBQsgA0GgAWogBCAHEJ4NDAALCyADQbAEaiADQaABahDQDAtBGCEFAkAgAS0AWUEBcUUNACACKALcAkEYbEEYaiEFCyACKALQAiEEIAMtAK8GIQggA0EIahCrDyADKAIMIQYgAygCCCIHIAcoAgAiCUF/ajYCAAJAIAlBAUcNACAHIAYQ+hcLAkACQAJAAkACQCABKAJEIglBgICAASABKAJAIgobIgcgBEEMbEEUQSAgCEEBamdrdGogBWogBkEDbGogBEEFbCACKALcAkECdGpBCWoiBGogBEEBdGpB5ABqIgRPDQAgAS0AXUEBcUUNASAEIQcLIAMtAK8GIQYCQEGAAkUNACADQfABakEAQYAC/AsACyADQagCakGBAjsAACADQbkCakKBgoSIkKDAgAE3AAAgA0HBAmpCgYKEiJCgwIABNwAAIANByQJqQYECOwAAIANB2QJqQoGChIiQoMCAATcAACADQeECakKBgoSIkKDAgAE3AAAgA0HpAmpBgQI7AAAgA0EEOgD9ASADQoGChIiQoMCAATcAoAIgA0KBgoSIkKDAgAE3ALECIANCgYKEiJCgwIABNwDRAiACLQDgAiEEIANBAzoA+gEgA0EBOgDPAgJAAkAgBEF2ag4EAQAAAQALIANB8AFqIARqQQU6AAALIAEtAFghCCABLQA8IgRBA0YNAiAEQQJGDQIgASgCMCIFIAUoAgAiC0EBajYCACALQX9MDQEgASgCOCEMIAEoAjQhDQwDCyAAQgA3AwggAEICNwMAIAAgBzYCGCAAIAQ2AhQgAEEqNgIQDAQLAAsLIAZBAWohBiABQdoAaiELAkACQCABKAIAQQFxDQBCACERDAELIANB8ANqQRhqIAFBKGopAwA3AwAgA0GABGogAUEgaikDADcDACADIAEpAxA3A/ADIAMgAUEYaikDADcD+ANCASERCyAGZyEGIAstAAAhCyABLQBb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AgAMBgsgAygCACIEIAEoAggiBUYNBCACQbABaiABEOYDIAJB0ABqQQhqIgYgAkHIAWopAgA3AwAgAkHQAGpBEGoiByACQdABaikCADcDACACIAIpAsABNwNQIAIoArwBIQQgAigCuAEhCCACKAK0ASEJAkAgAigCsAEiCkEiRg0AIAAgAikC2AE3AiwgAEE8aiACQegBaikCADcCACAAQTRqIAJB4AFqKQIANwIAIAAgBDYCECAAIAg2AgwgACAJNgIIIAAgAikDUDcCFCAAQRxqIAYpAwA3AgAgAEEkaiAHKQMANwIAIAAgCjYCBCAAQYSAgIB4NgIADAYLIAJB+ABqQQhqIAYpAwA3AwAgAkH4AGpBEGogBykDADcDACACIAIpA1A3A3ggAiABEL4JIgY2ApQBIAEQmggaAkACQCAGQSlGDQAgBkE6Rg0BIAJBADYCsAEgAkGUAWpBuIaFASACQbABakG8hoUBELQZAAsCQCAERQ0AIAJBrAFqIANBCGooAgA2AgAgACACKQN4NwIQIAAgBDYCDCAAIAg2AgggACAJNgIEIABBg4CAgHg2AgAgAkGYAWpBCGoiASACQSBqQQhqKAIANgIAIABBGGogAkH4AGpBCGopAwA3AgAgAEEgaiACQfgAakEQaikDADcCACACIAMpAgA3AqQBIAIgAikCIDcDmAEgAEE4aiACQZgBakEQaikDADcCACAAQTBqIAEpAwA3AgAgACACKQOYATcCKAwHCyACQRs2ArABIABBBGogASgCBCAFIAJBOGogAkGwAWoQ0QwgAEGEgICAeDYCACAJIAhBBEEcEMARDAYLIAAgBDYCDCAAIAg2AgggACAJNgIEIAAgAikDeDcCECAAQRhqIAJB+ABqQQhqKQMANwIAIABBIGogAkH4AGpBEGopAwA3AgAgAkHEAWogA0EIaigCACIBNgIAIAJBsAFqQQhqIAE2AgAgAiADKQIAIgs3ArwBIAIgCzcDsAEgAkEIaiACQbABahCdFUEALQDA8Z0BGiACKAIMIQNBCBCFASIBRQ0DIAFBADYCACAAIAIpAiA3AjAgACABNgIsIABBgoCAgHg2AgAgASADNgIEIABBOGogAkEgakEIaikCADcCACAAQcAAaiACQSBqQRBqKQIANwIADAULIAJBsAFqIAEgBBDuASACKAKwASEBAkBB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BEF8akEAIARBe2pBCEkbDgkAAQIDBAcHBQYACyABIAAQzwMMBgsgASAAQQhqEIIEDAULQQAhAyACQfAAakEAKQOY+5wBIgk3AgAgAkGAAWogCTcCACACQQA2AaoBIAJBADYCZCACQoCAgICAATcCXCACQoCAgICAATcCmAEgAkKAgICAwAA3AogBIAJBADYCoAEgAkEAOgCUASACQQA2ApABIAIgAS8BeDsBqAEgAiABKAJ0NgKkASACQQApA5D7nAEiCTcCaCACIAk3AnggAiABLQB+OgCuASABQSxqIQUgACgCICEGAkADQCADQdQARg0BIAEgA2pBLGoiBCgCACEHIAQgAkHcAGogA2oiCCgCADYCACAIIAc2AgAgA0EEaiEDDAALCwJAIAYoAhQiA0UNACAGKAIQIQQgA0EMbCEHIAEtAHkhCCABLQAoIQADQCAEKAIAIQMgAUEAOgB5IAFBADoAKAJAIAMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggBSACKQOwASACKAK4ARDRCgsgBEEMaiEEIAMgARB3IAEgADoAKCABIAg6AHkgB0F0aiIHDQALCwJAIAYoAggiBEUNACAGKAIEIQMgBEEGdCEEA0AgASADEKcLIANBwABqIQMgBEFAaiIEDQALCwJAIAYoAhhBgICAgHhGDQAgBkEgaigCACIERQ0AIAZBHGooAgAhAyAEQTBsIQQDQCABQQA6AH0gAyABEGsgA0EwaiEDIARBUGoiBA0ACwsgBSACQdwAahCTAwwECwJAIAAoAghBA0cNACABLQAoIQQgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAAKAIMIgMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggAUEsaiACKQOwASACKAK4ARDRCgsgAyABEHcgASAEOgAoIAEgBzoAeQsCQCAAKAI8IgNFDQAgAS0AKCEEIAFBADoAKCABLQB5IQcgAUEAOgB5AkAgAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABC6GCABQSxqIAIpA7ABIAIoArgBENEKCyADIAEQdyABIAQ6ACggASAHOgB5CyAAKAI4IgRFDQMgACgCNCEDIARBDGwhByABQSxqIQUgAS0AeSEIIAEtACghAANAIAFBADoAeSABQQA6ACgCQCADKAIAIgQoAgBBGkcNACACQbABaiAEKQMIIARBGGooAgAQuhggBSACKQOwASACKAK4ARDRCgsgA0EMaiEDIAQgARB3IAEgADoAKCABIAg6AHkgB0F0aiIHDQAMBAsLAkAgACgCJCIDRQ0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACQbABaiADKQMIIANBGGooAgAQuhggAUEsaiACKQOwASACKAK4ARDRCgsgAyABEHcgASAEOgAoIAEgBzoAeQsgACgCNCIERQ0CIAAoAjAhAyAEQQxsIQcgAUEsaiEFIAEtAHkhCCABLQAoIQADQCABQQA6AHkgAUEAOgAoAkAgAygCACIEKAIAQRpHDQAgAkGwAWogBCkDCCAEQRhqKAIAELoYIAUgAikDsAEgAigCuAEQ0QoLIANBDGohAyAEIAEQdyABIAA6ACggASAIOgB5IAdBdGoiBw0ADAMLCyACQRxqQQApA5j7nAEiCTcCACACQSxqIAk3AgAgAkEANgFWIAJBADYCECACQoCAgICAATcCCCACQoCAgICAATcCRCACQoCAgIDAADcCNCACQQA2AkwgAkEAOgBAIAJBADYCPCACIAEvAXg7AVQgAiABKAJ0NgJQIAJBACkDkPucASIJNwIUIAIgCTcCJCACIAEtAH46AFogAUEsaiEFAkADQCADQdQARg0BIAEgA2pBLGoiBCgCACEHIAQgAkEIaiADaiIIKAIANgIAIAggBzYCACADQQRqIQMMAAsLAkAgACgCDCIERQ0AIAAoAgghAyAEQTBsIQQDQCABQQA6AH0gAyABEGsgA0EwaiEDIARBUGoiBA0ACwsgBSACQQhqEJMDDAELAkAgACgCCCIDQQVGDQAgA0EDRw0AIAEtACghBCABQQA6ACggAS0AeSEHIAFBADoAeQJAIAAoAgwiAygCAEEaRw0AIAJBsAFqIAMpAwggA0EYaigCABC6GCABQSxqIAIpA7ABIAIoArgBENEKCyADIAEQdyABIAQ6ACggASAHOgB5CwJAIAAoAjwiA0UNACABLQAoIQQgAUEAOgAoIAEtAHkhByABQQA6AHkCQCADKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAELoYIAFBLGogAikDsAEgAigCuAEQ0QoLIAMgARB3IAEgBDoAKCABIAc6AHkLIAAoAjgiBEUNACAAKAI0IQMgBEEMbCEHIAFBLGohBSABLQB5IQggAS0AKCEAA0AgAUEAOgB5IAFBADoAKAJAIAMoAgAiBCgCAEEaRw0AIAJBsAFqIAQpAwggBEEYaigCABC6GCAFIAIpA7ABIAIoArgBENEKCyADQQxqIQMgBCABEHcgASAAOgAoIAEgCDoAeSAHQXRqIgcNAAsLIAJBwAFqJAAL8w4CDn8BfiMAQYABayICJAACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQXtqIgNBBCADQQZJGw4GAAECAwQFAAsgASgCGCEDIAEoAhQhBCABKAIQIQUCQCABKQMIIhBCA4NCAFINACAQpyIGIAYoAgAiBkEBajYCACAGQX9MDQcLIAAgAzYCGCAAIAQ2AhQgACAFNgIQIAAgEDcDCCAAQQU2AgAgACABLQAcOgAcDAULIAJB0ABqIAFBCGoQ+wRBAC0AwPGdARpBwAAQhQEiA0UNBSADIAEoAigQRCAAQSBqIAJB0ABqQRhqKQMANwMAIABBGGogAkHQAGpBEGopAwA3AwAgAEEQaiACQdAAakEIaikDADcDACAAIAIpA1A3AwggAEEGNgIAIAAgAzYCKAwECyABKAIgIQQgASgCHCEFIAEoAhghBiABKAIMIQcgASgCCCEIAkAgASkDECIQQgODQgBSDQAgEKciAyADKAIAIgNBAWo2AgAgA0F/TA0FC0EALQDA8Z0BGiABLQAkIQlBwAAQhQEiA0UNBCADIAEoAigQRCAAIAM2AiggACAJOgAkIAAgBDYCICAAIAU2AhwgACAGNgIYIAAgEDcDECAAIAc2AgwgACAINgIIIABBBzYCAAwDCyABKAJEIQggASgCQCEJIAJBKGogAUEIahD7BAJAAkAgASgCSCIDDQBBACEGDAELQQAtAMDxnQEaQQwQhQEiBkUNBEEALQDA8Z0BGiADKAIIIQUgAygCBCEHQeAAEIUBIgRFDQQgBCADKAIAEGQgBiAFNgIIIAYgBzYCBCAGIAQ2AgALQYCAgIB4IQcCQAJAIAEoAihBgICAgHhHDQAMAQsgASgCLCEDIAEoAjwhCiABKAI4IQsgASgCNCEMIAJB0ABqIAEoAjAiDUEIQTAQzA0gAigCVCEHIAIoAlBBAUYNBSACKAJYIQ4CQCAHRQ0AIA1BMGwhBCAOIQEgByEFA0AgBEUNASACQdAAaiADEIABIAFBKGogAkHQAGpBKGopAwA3AwAgAUEgaiACQdAAakEgaikDADcDACABQRhqIAJB0ABqQRhqKQMANwMAIAFBEGogAkHQAGpBEGopAwA3AwAgAUEIaiACQdAAakEIaikDADcDACABIAIpA1A3AwAgAUEwaiEBIARBUGohBCADQTBqIQMgBUF/aiIFDQALCyANrUIghiAOrYQhEAsgACACKQMoNwMIIABBIGogAkEoakEYaikDADcDACAAQRhqIAJBKGpBEGopAwA3AwAgAEEQaiACQShqQQhqKQMANwMAIAAgBjYCSCAAIAg2AkQgACAJNgJAIAAgCjYCPCAAIAs2AjggACAMNgI0IAAgEDcCLCAAIAc2AiggAEEINgIADAILIAEoAmQhCSABKAJgIQwgAkEIaiABEPsEQQchCAJAIAEoAiBBB0YNACACQdAAaiABQSBqEKcCIAJBMGogAkHcAGopAgA3AwAgAkE4aiACQeQAaikCADcDACACQcAAaiACQewAaikCADcDACACQShqQSBqIAJB9ABqKAIANgIAIAIgAikCVDcDKCACKAJQIQgLQQAtAMDxnQEaQSgQhQEiB0UNAiAHIAEoAmgQpwJBgICAgHghBgJAAkAgASgCSEGAgICAeEcNAAwBCyABKAJMIQMgASgCXCENIAEoAlghCiABKAJUIQsgAkHQAGogASgCUCIOQQhBMBDMDSACKAJUIQYgAigCUEEBRg0FIAIoAlghDwJAIAZFDQAgDkEwbCEEIA8hASAGIQUDQCAERQ0BIAJB0ABqIAMQgAEgAUEoaiACQdAAakEoaikDADcDACABQSBqIAJB0ABqQSBqKQMANwMAIAFBGGogAkHQAGpBGGopAwA3AwAgAUEQaiACQdAAakEQaikDADcDACABQQhqIAJB0ABqQQhqKQMANwMAIAEgAikDUDcDACABQTBqIQEgBEFQaiEEIANBMGohAyAFQX9qIgUNAAsLIA6tQiCGIA+thCEQCyAAIAIpAwg3AwAgACACKQMoNwIkIABBGGogAkEIakEYaikDADcDACAAQRBqIAJBCGpBEGopAwA3AwAgAEEIaiACQQhqQQhqKQMANwMAIABBLGogAkEoakEIaikDADcCACAAQTRqIAJBKGpBEGopAwA3AgAg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AiADQZABaiADQewBaiADQdgAaiADQfQAahC+BSADKAKUASEPAkAgAygCkAEiBEEiRg0AAkBBOEUNACAAQQhqIANBkAFqQQhqQTj8CgAACyAAIA82AgQgACAENgIAQQEhBAwCC0EBIQRBAiENQQAhDgsCQAJAIAUoAgAgC0YNACABEL4JQf0ARg0BCyADQaQBaiAFQQhqKAIANgIAIANBkAFqQQhqIANBCGooAgA2AgAgAyADKQMANwOQASADIAUpAgA3ApwBIANBGjYC7AEgACABKAIEIAsgA0GQAWogA0HsAWoQ0QwMAQtBASEQAkAgARDMG0UNACABEL4JQT9HDQAgARCaCBpBACEQCyADQeQBaiAFQQhqKAIANgIAIANB0AFqQQhqIANBCGooAgA2AgAgAyADKQMANwPQASADIAUpAgA3AtwBIA4gDCAPTXINASADQRg2AuwBIAAgASgCBCALIANB0AFqIANB7AFqENEMCyAKRQ0CIARFDQIgAygCGEEiRg0CIAMoAjQgAygCOEEBQQEQwBEMAgsgCSEBAkACQAJAAkACQAJAAkACQCAHQX5qDgoABwcBBwIDBAUGAAsgCUEEaiEBDAYLIAlBHGohAQwFCyAJQdgAaiEBDAQLIAlBKGohAQwDCyAJQTBqIQEMAgsgCUEMaiEBDAELIAlBDGohAQsgA0GQAWpBFGogBUEIaigCADYCACADQZABakEIaiIEIAFBCGooAgA2AgAgA0HsAWpBFGogA0HQAWpBCGopAwA3AgAgA0GIAmogA0HQAWpBEGopAwA3AgAgAyADKQPQATcC+AFBAC0AwPGdARogAyAFKQIANwKcASADIAEpAgA3A5ABQQgQhQEiAUUNACABIAk2AgQgASAHNgIAIANBnAJqIAQpAwA3AgAgA0GkAmogA0GQAWpBEGopAwA3AgAgAyADKQOQATcClAIgAyAQOgCsAiADIA82AvQBIAMgDDYC8AEgAyANNgLsASADIAE2ApACIAggA0HsAWoQ9xo2AgQgCEEINgIAIAIgBjYCCAJAQSRFDQAgAEEEaiACQST8CgAACyAAQSI2AgAMAwsACyADQRBqELADCyACEOUXCyADQbACaiQAC5QPAQV/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4UEhIAAQIDBAUGBwgJCgsMDQ4PEBESCyABLQA0QQFHDRECQCAAQQRqIgMoAgBBgICAgHhGDQAgAiADNgIEIAIgAEEQajYCDCACIABBHGo2AgggASACQQRqENUCDBILIAIgAEEUajYCDCACIABBIGo2AgggAiAAQQhqNgIEIAEgAkEEahDVAgwRCyABLQA0QQFHDRAgAS0AOiEEIAFBAToAOiAAQRBqIQMgAS0AOSEFAkAgAC0AJEECRw0AA0AgAygCACIGQRhqIQMgBi0ALEECRg0ACyABQQE6ADkLIAEgAxCXEAJAIAAoAigiAEUNACAAIAEQ7w8LIAEgBDoAOiABIAU6ADkMEAsgAS0ANEEBRw0PIAEtADohBSABQQE6ADogAEEQaiEDIAEtADkhBAJAAkAgAC0AREEERg0AIAEgAxCvDwwBCwJAIAAtACRBAkcNAANAIAMoAgAiBkEYaiEDIAYtACxBAkYNAAsgAUEBOgA5CyABIAMQlxALIAFBAToAOiABIAQ6ADkCQCAAKAJYIgBFDQAgACABEO8PCyABIAU6ADogASAEOgA5DA8LIAEtADRBAUcNDiAAKAIMIgNFDQ4gACgCCCEAIANBOGwhAwNAAkAgAS0ANEEBRw0AIAAgARBpCyAAQThqIQAgA0FIaiIDDQAMDwsLIAEtADRFDQ0gAS8AOSEDIAFBgQI7ADkgACgCBCABEPQBIAEgAzsAOQwNCyABLQA0QQFHDQwgAS0AOiEGIAFBAToAOiABLQA5IQQCQCAAKAIMIgNFDQAgA0E4bCEDIAAoAghBMGohAANAAkAgAS0ANEEBRw0AIAFBgQI7ADkgACgCACABEPQBIAFBgQI7ADkLIABBOGohACADQUhqIgMNAAsLIAEgBjoAOiABIAQ6ADkMDAsgAS0ANEEBRw0LIAEvADkhAyABQYECOwA5IAAoAgQgARD0ASABIAM7ADkMCwsgAS0ANEEBRw0KIAEvADkhAyABQYECOwA5IAAoAgQgARD0ASABIAM7ADkMCgsgAS0ANEEBRw0JIAAoAgRBAUcaIABBCGogARDCDwwJCyABLQA0QQFHDQggAS0AOiEDIAEtADkhBiABQYECOwA5IAAoAgQgARD0AQJAIAEtADRBAUcNACABQYECOwA5IAAoAgggARD0ASABLQA0QQFxRQ0AIAFBgQI7ADkgACgCDCABEPQBIAEtADRBAXFFDQAgAUGBAjsAOSAAKAIQIAEQ9AELIAEgAzoAOiABIAY6ADkMCAsgAS0ANEEBRw0HIAEtADohAyABQQE6ADogAS0AOSEGIAEgAEEYahCXEAJAIAAoAjQiBEUNACABLQA0QQFHDQAgAUGBAjsAOSAEIAEQ9AELAkAgACgCMCIARQ0AIAEtADRBAUcNACABQYECOwA5IAAgARD0AQsgASADOgA6IAEgBjoAOQwHCyABLQA0QQFHDQYgAS8AOSEDIAFBgQI7ADkgACgCBCABEPQBIAEgAzsAOQwGCyABLQA0QQFHDQUgAS8AOSEDIAFBgQI7ADkgACgCBCABEPQBIAEgAzsAOQwFCyABLQA0QQFHDQQgAS0AOSEDIAEtADohBiABQYECOwA5IAAoAgQgARD0ASABIAY6ADogASADOgA5IAEtADRBAUcNBCABQYECOwA5IAAoAgggARD0ASABIAY6ADogASADOgA5DAQLIAEtADRBAUcNAyABQQA6ADkgASAAQRhqEJcQAkAgACgCNCIDRQ0AIAEtADRBAUcNACABLQA6IQYgAUGBAjsAOSADIAEQ9AEgASAGOgA6CwJAIAAoAjAiA0UNACABLQA0QQFHDQAgAS0AOiEGIAFBgQI7ADkgAyABEPQBIAEgBjoAOgsCQCAAKAJAIgNFDQAgAS0ANEEBRw0AIAEtADohBiABQYECOwA5IAMgARD0ASABIAY6ADoLIAFBAToAOSAAKAJEIgBFDQMgAS0ANEEBRw0DIAEtADohAyABQQE6ADogACABEPQBIAEgAzoAOiABQQE6ADkMAwsgACgCCEGEgICAeEgNAiAAKAIQIgNFDQIgAS0ANEEBRw0CIAAoAgwhACADQQJ0IQMDQAJAIAEtADRBAUcNACABLwA5IQYgAUGBAjsAOSAAKAIAIAEQ9AEgASAGOwA5CyAAQQRqIQAgA0F8aiIDDQAMAwsLIAEtADRBAUcNASABLQA6IQMgAUEBOgA6IAEtADkhBgJAIAAtABxBAkYNACABIABBCGoQlxALIAEgAzoAOiABIAY6ADkgACgCKCIARQ0BIAAgARCeGwwBCyABLQA0QQFHDQAgACgCQCIARQ0AIAEtADohBCABLQA5IQUgAUGBAjsAOQJAIAAoAggiA0UNACAAKAIEIQAgA0ECdCEDA0ACQCABLQA0QQFHDQAgACgCACEGIAFBgQI7ADkgBiABEPQBIAFBgQI7ADkLIABBBGohACADQXxqIgMNAAsLIAEgBDoAOiABIAU6ADkLIAJBEGokAAu7DgEWfyMAQeAAayICJAAgASgCjAYhAyABKAKwAyIELQAEIQUgAkKAgICAwAA3AhAgAkIANwIYIAVBf2ohBkEAIQUCQCAELQAGQQFHDQAgAkEANgIsIAJBADYCJEEBIQULIAFBtANqIQcgAiAFNgIgIAEoArgDIQggASgCvAMhCSACQSRqIQogASgCxAMhCyABKALIAyEMIAZB/wFxQQFLIQ1BACEOAkADQCACQQhqIAcgAyAOIAUQ9w8CQCACKAIIIg5BAXENAAJAAkACQCACKAIcIgVFDQAgAUH8A2ohDyAGQf8BcUECSSEQAkACQANAIAIgBUF/ajYCHCACIAIoAhgiBUEBaiIEQQAgAigCECIOIAQgDkkbazYCGCACKAIUIAVBAnRqKAIAIRFBACESA0AgAiAHIBEgEiATEPcPAkACQAJAAkACQCACKAIAIhJBAXFFDQAgAigCBCITIAEoAsgDIgxPDQEgASgCxAMiCyATQQlsaiIFKAABIRQgBS0AACEOAkAgAigCIEEBRw0AIAIoAiQgAigCKCAUELcNDQYLIAJBEGogFEGMs4ABEPYSAkAgAigCIEEBRw0AIAogFBCRAwsgASgCvAMhBiAQRQ0EIBQgBk8NAiABKAK4AyAUQRRsaiIFKAIIRQ0EIAVBADYCDAwFCyAQDQIgAkEwaiAHIAEoAowGIBEQuwcgAigCMCIFQQNGDQIgACACKQI0NwIEIABBFGogAkEwakEUaigCADYCACAAQQxqIAJBMGpBDGopAgA3AgAMBgsgEyAMQfyygAEQsxEACyAUIAZBnLOAARCzEQALIAIoAhwiBQ0CDAULAkACQCARIAZPDQACQCABKAK4AyIJIBFBFGxqKAIMIgUgBk8NACAPIA5qIRUgASgC0AMhFiABKALUAyEXA0AgCSAFQRRsIghqIg0hBQJAAkAgDSgCBCIEDQACQAJAA0AgBSgAACIFRQ0EIAUgDE8NASALIAVBCWxqIgRBBWohBSAOIAQtAAAiA0sNAAsgDiADRw0DIAQoAAFBAUYNAwNAAkAgDSgAACIFDQBBASEFDAkLIAUgDE8NAiALIAVBCWxqIgVBBWohDSAOIAUtAAAiBEsNAAsgBSgAAUEBIA4gBEYbIQUMBwsgBSAMQYzjgwEQsxEACyAFIAxBjOODARCzEQALAkAgBCAVLQAAaiIFIBdJDQAgBSAXQbzjgwEQsxEACyAWIAVBAnRqKAIAIgVBAUcNBAsgCSAIaigCDCIFIAZJDQALCyAFIAZBrOODARCzEQALIBEgBkGss4ABELMRAAsgFCAGTw0DIAkgFEEUbGogBTYCDCACQTBqIAcgBSAUELsHIAIoAjAiBUEDRg0ACwsgACACKQI0NwIEIABBFGogAkEwakEUaigCADYCACAAQQxqIAJBMGpBDGopAgA3AgALIAAgBTYCACACKAIgRQ0DDAILIBQgBkG8s4ABELMRAAsgAEEDNgIAIAIoAiBFDQELQQAhDEEAIQUCQCACKAIkIgRFDQAgAiACKAIoIgU2AkwgAiAENgJIIAJBADYCRCACIAU2AjwgAiAENgI4IAJBADYCNEEBIQwgAigCLCEFCyACIAU2AlAgAiAMNgJAIAIgDDYCMAJAAkADQAJAIAIoAlAiBQ0AIAIoAjBBAXFFDQQgAigCOCEOAkAgAigCNCIFRQ0AIA4hBAwEC0EAIQQgAigCPCIFRQ0CA0AgDigCNCEOIAVBf2oiBQ0ADAMLCyACIAVBf2o2AlACQAJAAkAgDEEBcSIFRQ0AIAIoAjQNACACKAI4IQQgAigCPCIFRQ0BA0AgBCgCNCEEIAVBf2oiBQ0ADAILCwJAIAVFDQAgAigCNCEEDAILQYT9mgEQmyAACyACQgA3AjggAiAENgI0QQEhDCACQQE2AjALIAIoAjghBQJAIAIoAjwiDiAELwEySQ0AAkADQCACQdQAaiAEIAUQ9RQgAigCVCIERQ0BIAIoAlghBSACKAJcIg4gBC8BMkkNAgwACwtBwICbARCbIAALIA5BAWohDgJAAkAgBQ0AIAQhAwwBCyAEIA5BAnRqQTRqIQ4DQCAOKAIAIgNBNGohDiAFQX9qIgUNAAtBACEOCyACIA42AjwgAkEANgI4IAIgAzYCNCAERQ0DDAALCyAOIQULA0AgAkHUAGogBSAEEPUUIAIoAlQiBUUNASACKAJYIQQMAAsLIAIoAhAgAigCFEEEQQQQtREgAkHgAGokAA8LAkAgAigCDCIFIAxPDQAgAyALIAVBCWxqKAABIgRGDQECQCACKAIgQQFHDQAgAigCJCACKAIoIAQQtw0NAgsgAkEQaiAEQdyygAEQ9hICQCACKAIgQQFHDQAgCiAEEJEDCyANDQEgBCAJTw0CIAggBEEUbGoiBCgCCEUNASAEQQA2AgwMAQsLIAUgDEHMsoABELMRAAsgBCAJQeyygAEQsxEAC44PAgd/AX4jAEHAAGsiAiQAAkACQAJAIAAoAgAiAw0AIAAoAhAiAEUNASAAQeTEmwFBARDtBSEEDAILIAAgACgCDEEBaiIENgIMAkACQAJAAkACQAJAAkACQAJAIARB9QNJDQAgACgCECIERQ0BIARB5LSXAUEZEO0FRQ0BDAgLAkACQAJAAkACQCAAKAIIIgUgACgCBCIGSQ0AIAAoAhAiBEUNASAEQdS0lwFBEBDtBQ0MDAELQQEhBCAAIAVBAWoiBzYCCAJAAkACQAJAAkACQCADIAVqLQAAIghBt39qDgYCAQEBCAUACwJAIAhBvn9qDgIEAwALIAhBqH9qDgIHCwALIAAoAhAiA0UNBEEBIQQgA0HUtJcBQRAQ7QVFDQQMEQsgACABEPYBDRAgAQ0GDAwLIAJBMGogAEHzABDRDQJAIAItADBBAUcNACACLQAxIQMCQCAAKAIQIgFFDQBBASEEIAFB5LSXAUHUtJcBIANBAXEiBRtBGUEQIAUbEO0FDRELIAAgAzoABAwLCyACIAIpAzgiCTcDCAJAIAAoAgANACAAKAIQIgBFDQ8gAEHkxJsBQQEQ7QUhBAwQCyACQTBqIAAQswQCQCACKAIwDQAgAi0ANCEDAkAgACgCECIBRQ0AQQEhBCABQeS0lwFB1LSXASADQQFxIgUbQRlBECAFGxDtBQ0RCyAAIAM6AAQMCwsgAkEQakEIaiACQTBqQQhqKQIANwMAIAIgAikCMDcDECAAKAIQIgRFDQwgAkEQaiAEEPMCDQ0gACgCECIDRQ0MIAlQDQwgAygCCEGAgIAEcQ0MQQEhBCADKAIAQa7EmwFBASADQQRqKAIAKAIMEQwADQ8gAkEIaiAAKAIQEKIPDQ8gACgCECIDKAIAQa/EmwFBASADQQRqKAIAKAIMEQwARQ0MDA8LQQEhBCAAIAEQzQoNDgwLCwJAIAcgBk8NACAAIAVBAmo2AgggAyAHai0AACIDQb9/akH/AXFBGkkNAiADQZ9/aiEEQYCAxAAhAyAEQf8BcUEaSQ0CCyAAKAIQIgRFDQAgBEHUtJcBQRAQ7QUNCwtBACEEIABBADoABCAAQQA2AgAMDAtBASEEIAAgARD2AQ0LAkAgACgCAA0AIAAoAhAiAUUNCyABQciulwFBAhDtBQ0MIAAoAgANAEEAIQQgACgCECIARQ0MIABB5MSbAUEBEO0FIQQMDAsgAkEwaiAAQfMAENENAkAgAi0AMEEBRw0AIAItADEhAwJAIAAoAhAiAUUNAEEBIQQgAUHktJcBQdS0lwEgA0EBcSIFG0EZQRAgBRsQ7QUNDQsgACADOgAEDAcLAkAgACgCAA0AIAAoAhAiAEUNCyAAQeTEmwFBARDtBSEEDAwLIAIpAzghCSACQTBqIAAQswQCQCACKAIwDQAgAi0ANCEDAkAgACgCECIBRQ0AQQEhBCABQeS0lwFB1LSXASADQQFxIgUbQRlBECAFGxDtBQ0NCyAAIAM6AAQMBwsgAkEgakEIaiACQTBqQQhqKQIANwMAIAIgAikCMDcDIAJAAkACQAJAIANBgIDEAEYNAAJAIAAoAhAiBEUNACAEQYO1lwFBAxDtBQ0OCyADQcMARg0BIANB0wBGDQIgAiADNgIwIAAoAhAiBEUNAyACQTBqIAQQvAkNDQwDCyACKAIkIAIoAixyRQ0LIAAoAhAiA0UNC0EBIQQgA0HIrpcBQQIQ7QUNDiAAKAIQIgNFDQsgAkEgaiADEPMCRQ0LDA4LIAAoAhAiBEUNASAEQYa1lwFBBxDtBQ0LDAELIAAoAhAiBEUNACAEQY21lwFBBBDtBQ0KCyAAKAIQIQMgAigCJCACKAIsckUNBSADRQ0IQQEhBCADQaHEmwFBARDtBQ0LIAAoAhAiA0UNCCACQSBqIAMQ8wINCyAAKAIQIQMMBQsgAkEwaiAAQfMAENENIAItADBBAUcNAiACLQAxIQMCQCAAKAIQIgFFDQBBASEEIAFB5LSXAUHUtJcBIANBAXEiBRtBGUEQIAUbEO0FDQsLIAAgAzoABAwFCyAAKAIQIgNFDQVBASEEIANByK6XAUECEO0FRQ0FDAkLIABBAToABAwDCyAAENMVCwJAIAAoAhAiA0UNAEEBIQQgA0Gsl5sBQQEQ7QUNBwsgABD8Ag0EAkAgCEHNAEYNAAJAIAAoAhAiBEUNACAEQZG1lwFBBBDtBQ0GC0EBIQQgAEEAEPYBDQcLIAAoAhAiA0UNA0EBIQQgA0Gvl5sBQQEQ7QVFDQMMBgsgA0UNAkEBIQQgA0GP4JsBQQEQ7QUNBSAAKAIQIQMgAiAJNwMwIANFDQIgAkEwaiADEKIgDQUgACgCECIDRQ0CQQEhBCADQabEmwFBARDtBUUNAgwFC0EAIQQgAEEANgIADAQLAkAgACgCECIDRQ0AQQEhBCADQayXmwFBARDtBQ0EC0EBIQQgABCzCEEBcQ0DIAAoAhAiA0UNAEEBIQQgA0Gvl5sBQQEQ7QUNAwtBACEEIAAoAgBFDQIgACAAKAIMQX9qNgIMDAILQQEhBAwBC0EAIQQLIAJBwABqJAAgBAvuDQIKfwd+IwBB8ABrIgIkAAJAAkAgAEQAAAAAAAAAAGINACABQTA6AAAgAUEBaiEDDAELAkAgAL0iDEIAWQ0AIAFBLToAACABQQFqIQELIAxCAYZC/v///////w+DIQ0CQAJAAkAgDEI0iKdB/w9xIgQNAEHOdyEDDAELIARBzXdqIQMCQCANUA0AIA1CgICAgICAgBCEIQ0MAQsgAkHAAGpByKqCASADQYnEJmxB4YNwakEVdSIFQQR0aykDACINQjWIIA18QQsgBUGx2ZV/bEETdSADaiIDa0E/ca0iDohCAEKas+bMmbPmzBlCABDlDwJAIAIpA0giDEIKfiANIA1CNoh9IA6IIARBxXdqQXpJrXwiDlQNACAFQQFqIQUMAgtCfyANQQogA2tBP3GtiCIMIAxCAYh9IgwgDlStIg0gDKdBAXEbIA0gBEHmB0YbIAx8IQwMAQsgAkEwakECIANBhaITbEEUdSIFayIEQQR0IgZByKqCAWopAwAiDkIAIA1CAYQgBEHPpuoAbEETdSADaiIHQT9xIgOthiIPQgAQ5Q8gAkEgaiAGQcCqggFqKQMAIhBCACAPQgAQ5Q8gAkEQaiACKQM4IAIpAygiDyACKQMwfCIRIA9UrXwiD0IAQp7fn7W86c3EwQBCABDlDyAMQgGDIRICQAJAAkACQCAOIANBP3OtiKciBCACKQMYQgiIIgxCmPj//w9+IA98pyIDSw0AIAQgA0kNAyACQQhqIA1Cf3wgECAOIAcQ0hEgAi0ACA0BIBJQIAItAAlxDQEMAwsgEqdBAXMgEUIAUnIgA3JFDQELIAVBAWohBQwCCyAMQn98IQxB6AchAwsgDEIKfiADIARBAXZrIgRBkAVsQaCAAmoiA0EQdq0iD3whDCADQfD/A3FBkAVPDQAgAiANIBAgDiAHENIRAkAgBCACLQAAc0EBcQ0AIAwgD6cgAi0AAXGtQgGDfSEMDAELIAxCf3whDAsgAkHoAGpBADoAACACQdgAakEIakIANwMAIAJCADcDWCAMQqGcpJey6cEzfkIIiCAMQoCAgICAgICAIX6EIg1C4oj3mK8FVCIDQQJ0IgggDSAMIAMbIgxCPIYgDEKR/e3Xg86zxAJ+QgSIhCINQsyhnNaLt6MDVCIDQQF0IglyIA0gDCADGyIMQj6GIAxCqbi9lNyeiq6Pf35CAoiEIg1C3Z6Kro+F18cCVCIHckEBdCAFaiANIAwgBxsiDEI/hiAMQs2Zs+bMmbPmTH5CAYiEIg1CmrPmzJmz5swZVCIKaiEEAkACQCANIAwgChsiDEL/wdcvVg0AIAynIAJB2ABqEIoFIQsMAQsgAkHYAGogDEKAwtcvgCINpyACQdgAahCKBSIGQf8BcWoiAyAMIA1CgMLXL359QqLvm4YBfkIQiEIBfCIMQh+Ip0H+A3FBgMyYAWovAAA7AAAgAyAMQv////8Pg0LkAH4iDEIfiKdB/gFxQYDMmAFqLwAAOwACIAMgDEL8////D4NC5AB+IgxCH4inQf4BcUGAzJgBai8AADsABCADIAxC8P///w+DQuQAfkIfiKdB/gFxQYDMmAFqLwAAOwAGIAZBCGohCwsgBCALQf8BcSIGaiEDAkACQAJAAkACQAJAIARBAEgNACADQRZIDQELIANBf2oiBUEVSQ0BIANBBWpBBkkNAyABIAItAFg6AAAgC0H/AXFBAUcNAiABQQFqIQEMBAsCQCAGRQ0AIAEgAkHYAGogBvwKAAALIAEgBmohAyAFIAggCWogB2pBAXRqIApqIQEDQCABRQ0FIANBMDoAACABQX9qIQEgA0EBaiEDDAALCwJAIANFDQAgASACQdgAaiAD/AoAAAsgASADaiIBQS46AAAgAUEBaiEBAkBBACAEayIFRQ0AIAEgAkHYAGogA2ogBfwKAAALIAEgBGshAwwDCyABQS46AAEgAUECaiEBAkAgBkF/aiIERQ0AIAEgAkHYAGpBAXIgBPwKAAALIAEgBGohAQwBCyABQbDcADsAACABQQJqIQECQANAIANFDQEgAUEwOgAAIANBAWohAyABQQFqIQEMAAsLAkAgBkUNACABIAJB2ABqIAb8CgAACyABIAZqIQMMAQsgAUHlADoAACABQStBLSADQQBKGzoAASABQQJqIQQCQAJAIAUgBUEfdSIDcyADayIDQeMASw0AAkAgA0EJSw0AIAQgA0EwcjoAAEEBIQMMAgsgBCADQQF0QYDMmAFqLwAAOwAAQQIhAwwBCyABIANBmjNsIgVBEHZB9gFsIANqQTBqOgAEIAEgBUEPdkH+A3FBgMyYAWovAAA7AAJBAyEDCyAEIANqIQMLIAJB8ABqJAAgAwvXDAIRfwJ+IwBB0AJrIgUkACABrSIWQv//////////P3wgFoAhFgJAAkAgAUGBIEkNAEEBQSAgAUEBcmdrQQF2IgZ0IAEgBnZqQQF2IQcMAQsgASABQQF2ayIGQcAAIAZBwABJGyEHCyAAQXBqIQhBASEJQQAhCkEAIQsDQEEBIQxBACENAkAgASAKTQ0AIAAgCkEEdCIOaiEPAkACQCABIAprIhAgB0kNAAJAIBBBAkkNAAJAAkACQAJAAkAgDygCFCIRIA8oAgQgDygCGCIGIA8oAggiEiAGIBJJGxCSFSITIAYgEmsgExsiEg0AIA8tABwgDy0ADE8NAQwCCyASQQBIDQELQQIhFEEAIQwgEEECRg0CQQIhFCAPIRIDQAJAAkAgEkEkaigCACINIBEgEkEoaigCACITIAYgEyAGSRsQkhUiESATIAZrIBEbIgYNACASQSxqLQAAIBJBHGotAABJDQUMAQsgBkEATg0AQQAhDAwECyASQRBqIRIgEyEGIA0hESAQIBRBAWoiFEcNAAwCCwtBAiEUQQEhDCAQQQJGDQFBAiEUIA8hEgNAAkACQCASQSRqKAIAIg0gESASQShqKAIAIhMgBiATIAZJGxCSFSIRIBMgBmsgERsiBg0AIBJBLGotAAAgEkEcai0AAEkNAQwECyAGQX9KDQMLIBJBEGohEiATIQYgDSERIBAgFEEBaiIURw0AC0EBIQwLIBAhFAsgFCAHSQ0BAkAgDEUNACAUQQJJDQAgFEEBdiEMIAggFEEEdCAOamohEUEAIQ0DQEEAIQYDQCAPIAZqIhIoAgAhECASIBEgBmoiEygCADYCACATIBA2AgAgBkEEaiIGQRBHDQALIA9BEGohDyARQXBqIREgDUEBaiINIAxHDQALCyAUIRALIBBBAXRBAXIhDAwBCwJAIAQNACAQIAcgECAHSRtBAXQhDAwBCyAPIBBBICAQQSBJGyIGIAIgA0EAQQAQoAEgBkEBdEEBciEMCyAMQQF2IApqrSAKrSIXfCAWfiAKIAlBAXZrrSAXfCAWfoV5pyENCwJAAkAgC0ECSQ0AIAggCkEEdCIGaiEVIAAgBmohDgNAIAVBjgJqIAtBf2oiD2otAAAgDUkNAQJAAkACQAJAAkACQCAFQQRqIA9BAnRqKAIAIgZBAXYiECAJQQF2IgtqIhQgA0sNACAGIAlyQQFxRQ0BCyAAIAogFGtBBHRqIRECQCAGQQFxDQAgESAQIAIgAyAQQQFyZ0EBdEE+c0EAEKABCwJAIAlBAXENACARIBBBBHRqIAsgAiADIAtBAXJnQQF0QT5zQQAQoAELIAZBAkkNAyAJQQJJDQMgAyALIBAgCyAQSSIGGyIJSQ0DIBEgEEEEdGoiEyARIAYbIQYCQCAJQQR0IhJFDQAgAiAGIBL8CgAACyACIBJqIRICQCALIBBPDQAgFSEQA0ACQAJAIBJBdGooAgAgBkF0aigCACASQXhqKAIAIhMgBkF4aigCACIJIBMgCUkbEJIVIgsgEyAJayALGyITRQ0AIBNBH3YhEwwBCyASQXxqLQAAIAZBfGotAABJIRMLIBAgBkFwaiIGIBJBcGoiEiATGyIJKQIANwIAIBBBCGogCUEIaikCADcCACASIBNBBHRqIRIgBiATQQFzQQR0aiIGIBFGDQMgEEFwaiEQIBIgAkcNAAwDCwsgCUUNASATIA5GDQEgAiEQA0ACQAJAIBMoAgQgECgCBCATKAIIIgkgECgCCCILIAkgC0kbEJIVIhEgCSALayARGyIJRQ0AIAlBH3YhCQwBCyATLQAMIBAtAAxJIQkLIAYgEyAQIAkbIgspAgA3AgAgBkEIaiALQQhqKQIANwIAIAZBEGohBiAQIAlBAXNBBHRqIhAgEkYNAyATIAlBBHRqIhMgDkcNAAwDCwsgFEEBdCEJDAMLIAIhEAsgEiAQayISRQ0AIAYgECAS/AoAAAsgFEEBdEEBciEJC0EBIQYgDyELIA9BAUsNAAwCCwsgCyEGCyAFQY4CaiAGaiANOgAAIAVBBGogBkECdGogCTYCAAJAIAEgCk0NACAGQQFqIQsgDEEBdiAKaiEKIAwhCQwBCwsCQCAJQQFxDQAgACABIAIgAyABQQFyZ0EBdEE+c0EAEKABCyAFQdACaiQAC4kOAg1/AX4jAEHwAGsiASQAAkAgACgCACICIAAoAgQiA0YNACABQQhqQQRyIQQDQCACKAIAIgVBDUYNAQJAQdQARQ0AIAQgAkEEakHUAPwKAAALIAEgBTYCCCABQQhqEIYFIAJB2ABqIgIgA0cNAAsLIABCiICAgIABNwIAAkACQAJAAkACQAJAIAAoAhAiBg0AIAAoAgggAEEUahCcBwwBCwJAAkAgACgCCCIEKAIIIgIgACgCDCIHRw0AIAAoAiAhCCAAKAIYIQUMAQsgBCgCBCIFIAdB2ABsaiEJIAUgAkHYAGxqIQIgACgCGCEDIAFBCGpBKGohCiABQTxqIQsgACgCICEIIAFBxQBqIgxBBGohDQNAIAMgCEYNAiAAIANBEGoiBTYCGCADKQMAIQ4gC0IANwIAIAtBCGpBADoAACAMQQA2AAAgDUEAOwAAIAFBADYCMCABQgQ3AjQgAUHgAGpBCGoiAyAKQQhqKAIANgIAIAFCADcDGCABQgE3AxAgAUIANwMoIAFBADYCCCABQQM6AEsgASAKKQMANwNgIAFBCGoQmQ0gAkEoakIANwMAIAJBGGpCADcDACACQRBqIA43AwAgAkEIakEANgIAIAJBBzYCACACQTBqIAEpA2A3AwAgAkE4aiADKAIANgIAIAJBPGpCADcCACACQcMAakIANwAAIAJBywBqQQM6AAAgBCAEKAIIQQFqNgIIIAUhAyACQdgAaiICIAlHDQALCwJAAkAgCCAFRw0AIAghBQwBCwJAIAggBWtBBHYiAiAEKAIAIAcgBmoiA2tNDQAgBCADIAJBCEHYABCfFwsgAiAHaiICQdgAbCEDAkAgBkHYAGwiCkUNACAEKAIEIgsgA2ogCyAHQdgAbGogCvwKAAALIAAgAjYCDCAEKAIIIgogAkYNACAEKAIEIgIgA2ohCSACIApB2ABsaiECIAFBCGpBKGohAyABQTxqIQogAUHFAGoiDEEEaiENA0AgBSAIRg0CIAAgBUEQaiILNgIYIAUpAwAhDiAKQgA3AgAgCkEIakEAOgAAIAxBADYAACANQQA7AAAgAUEANgIwIAFCBDcCNCABQeAAakEIaiIFIANBCGooAgA2AgAgAUIANwMYIAFCATcDECABQgA3AyggAUEANgIIIAFBAzoASyABIAMpAwA3A2AgAUEIahCZDSACQShqQgA3AwAgAkEYakIANwMAIAJBEGogDjcDACACQQhqQQA2AgAgAkEHNgIAIAJBMGogASkDYDcDACACQThqIAUoAgA2AgAgAkE8akIANwIAIAJBwwBqQgA3AAAgAkHLAGpBAzoAACAEIAQoAghBAWo2AgggCyEFIAJB2ABqIgIgCUcNAAsgCyEFCyABQQhqIAggBWtBBHZBCEHYABDMDSABKAIMIQIgASgCCEEBRg0BIAFBADYCaCABIAEoAhA2AmQgASACNgJgIAFB4ABqIABBFGoQnAcgASgCZCIMIAEoAmgiBUHYAGxqIQcgASgCYCEGIAwhAgJAIAVFDQACQCAFIAAoAggiCigCACAAKAIQIgQgACgCDCICaiIDa00NACAKIAMgBUEIQdgAEJ8XCyACIAVqIgNB2ABsIQsCQCAEQdgAbCIERQ0AIAooAgQiCCALaiAIIAJB2ABsaiAE/AoAAAsgACADNgIMIAwhAiAKKAIIIgggA0YNACAKKAIEIgIgC2ohDSAFQdgAbCEEIAxB2ABqIQsgAiAIQdgAbGohAyAMIQUDQCALIQICQCAEDQAgByECDAILIAVB2ABqIQgCQCAFKAIAIgtBDUcNACAIIQIMAgsCQEHUAEUiCQ0AIAFBCGogBUEEakHUAPwKAAALIAMgCzYCAAJAIAkNACADQQRqIAFBCGpB1AD8CgAACyAKIAooAghBAWo2AgggBEGof2ohBCACQdgAaiELIAghBSADQdgAaiIDIA1HDQALCyAHIAJrQdgAbiEFAkAgByACRg0AA0AgAhCGBSACQdgAaiECIAVBf2oiBQ0ACwsgBiAMEMMgCyAAKAIEIQMgACgCACECIABCiICAgIABNwIAIAMgAmtB2ABuIQUgACgCCCEEAkAgAyACRw0AIAAoAhAiAkUNBCAAKAIMIgMgBCgCCCIFRg0DIAJB2ABsIgpFDQMgBCgCBCILIAVB2ABsaiALIANB2ABsaiAK/AoAAAwDCwNAIAIQhgUgAkHYAGohAiAFQX9qIgUNAAsgACgCECICRQ0DIAAoAgwiAyAEKAIIIgVGDQEgAkHYAGwiCkUNASAEKAIEIgsgBUHYAGxqIAsgA0HYAGxqIAr8CgAADAELIAIgASgCEEGwmJsBEKoeAAsgBCAFIAJqNgIIDAELIAQgBSACajYCCAsgAEEUahCAECABQfAAaiQAC6gOAQR/IwBB0ABrIgUkAAJAAkACQAJAIAQOAgABAgsCQAJAIAIoAhgiBCgCAEEBRw0AIAQoAgQNAQsgBSABIAIQSCAFKAIIIQIgBSgCBCEEAkAgBSgCACIGQSpGDQACQEE0RQ0AIABBDGogBUEMakE0/AoAAAsgACACNgIIIAAgBDYCBCAAIAY2AgAMBAsCQAJAIAMNACAFIAEQjhQMAQsgBSABEI8UCyAFKAIEIQYCQCAFKAIAIgdBKkYNAAJAQThFDQAgAEEIaiAFQQhqQTj8CgAACyAAIAY2AgQgACAHNgIADAQLIAUgASACIAYQnggCQCAFKAIAIgJBKkYNAAJAQTxFDQAgAEEEaiAFQQRyQTz8CgAACyAAIAI2AgAMBAsgBSABIAYgBBCeCAJAIAUoAgAiAkEqRg0AAkBBPEUNACAAQQRqIAVBBHJBPPwKAAALIAAgAjYCAAwECwJAAkAgAw0AIAUgARCOFAwBCyAFIAEQjxQLIAUoAgQhAgJAIAUoAgAiA0EqRg0AAkBBOEUNACAAQQhqIAVBCGpBOPwKAAALIAAgAjYCBCAAIAM2AgAMBAsgBSABEJsVIAUoAgQhAwJAIAUoAgAiB0EqRg0AAkBBOEUNACAAQQhqIAVBCGpBOPwKAAALIAAgAzYCBCAAIAc2AgAMBAsgBSABIAIgBBCeCAJAIAUoAgAiBEEqRg0AAkBBPEUNACAAQQRqIAVBBHJBPPwKAAALIAAgBDYCAAwECyAFIAEgAiADEJ4IAkAgBSgCACIEQSpGDQACQEE8RQ0AIABBBGogBUEEckE8/AoAAAsgACAENgIADAQLIAUgASAGIAMQnggCQCAFKAIAIgFBKkYNAAJAQTxFDQAgAEEEaiAFQQRyQTz8CgAACyAAIAE2AgAMBAsgACADNgIIIAAgAjYCBCAAQSo2AgAMAwsCQAJAIAMNACAFIAEQjhQMAQsgBSABEI8UCyAFKAIEIQQCQCAFKAIAIgNBKkYNAAJAQThFDQAgAEEIaiAFQQhqQTj8CgAACyAAIAQ2AgQgACADNgIADAMLIAUgASACEEggBSgCCCEDIAUoAgQhAgJAIAUoAgAiBkEqRg0AAkBBNEUNACAAQQxqIAVBDGpBNPwKAAALIAAgAzYCCCAAIAI2AgQgACAGNgIADAMLIAUgASAEIAIQnggCQCAFKAIAIgJBKkYNAAJAQTxFDQAgAEEEaiAFQQRyQTz8CgAACyAAIAI2AgAMAwsgBSABIAMgBBCeCAJAIAUoAgAiAUEqRg0AAkBBPEUNACAAQQRqIAVBBHJBPPwKAAALIAAgATYCAAwDCyAAIAQ2AgggACAENgIEIABBKjYCAAwCCyAFIAEgAhBIIAUoAgghAiAFKAIEIQQCQCAFKAIAIgZBKkYNAAJAQTRFDQAgAEEMaiAFQQxqQTT8CgAACyAAIAI2AgggACAENgIEIAAgBjYCAAwCCwJAAkAgAw0AIAUgARCOFAwBCyAFIAEQjxQLIAUoAgQhAwJAIAUoAgAiBkEqRg0AAkBBOEUNACAAQQhqIAVBCGpBOPwKAAALIAAgAzYCBCAAIAY2AgAMAgsgBSABIAIgAxCeCAJAIAUoAgAiAkEqRg0AAkBBPEUNACAAQQRqIAVBBHJBPPwKAAALIAAgAjYCAAwCCyAFIAEgAyAEEJ4IAkAgBSgCACIBQSpGDQACQEE8RQ0AIABBBGogBUEEckE8/AoAAAsgACABNgIADAILIAAgAzYCCCAAIAQ2AgQgAEEqNgIADAELIAUgBEF/ajYCTCAFQQA2AkggBSACNgJEIAUgATYCQCAFIAEgBUHAAGoQ0wQgBSgCCCEEIAUoAgQhBgJAIAUoAgAiB0EqRg0AAkBBNEUNACAAQQxqIAVBDGpBNPwKAAALIAAgBDYCCCAAIAY2AgQgACAHNgIADAELIAUgASACEEggBSgCCCEHIAUoAgQhAgJAIAUoAgAiCEEqRg0AAkBBNEUNACAAQQxqIAVBDGpBNPwKAAALIAAgBzYCCCAAIAI2AgQgACAINgIADAELAkACQCADDQAgBSABEI4UDAELIAUgARCPFAsgBSgCBCEDAkAgBSgCACIIQSpGDQACQEE4RQ0AIABBCGogBUEIakE4/AoAAAsgACADNgIEIAAgCDYCAAwBCyAFIAEgBCACEJ4IAkAgBSgCACIEQSpGDQACQEE8RQ0AIABBBGogBUEEckE8/AoAAAsgACAENgIADAELIAUgASAHIAMQnggCQCAFKAIAIgRBKkYNAAJAQTxFDQAgAEEEaiAFQQRyQTz8CgAACyAAIAQ2AgAMAQsgBSABIAMgAhCeCAJAIAUoAgAiAUEqRg0AAkBBPEUNACAAQQRqIAVBBHJBPPwKAAALIAAgATYCAAwBCyAAIAM2AgggACAGNgIEIABBKjYCAAsgBUHQAGokAAviDwEIfyMAQfABayICJAACQAJAAkAgAS0AgQFBIHFFDQAgASgCxAEhAyABKALAASEEAkAgAS0AyAEiBUE+Rg0AIAVBEkcNAQsCQAJAIAEQogsiBkH/AXEiB0G1f2oiBUEfSw0AQQEgBXRBgYCCkHhxDQELIAdBpAFGDQEgBkGNf2pB/wFxQS5JDQAgBkH/AXFByQBGDQAgBkG0f2pB/wFxQSZLDQELIAEgASgCeCIHQf//e3EiBTYCeAJAIAEtAIEBQSBxRQ0AIAJByABqIAEQ/wIgASAFQQFyNgJ4IAJBwABqIAFBAEEBEL8CIAIoAkQhBgJAAkAgAigCQEEBcUUNACACIAY2AsgBIAJBATYCxAEMAQsCQAJAAkAgAS0AgAFBAXFFDQAgBigCCEEBRw0AIAYoAgQiCCgCIA0AIAgoAiQNAEEAIQVBACEJIAYoAhAgCCgCBGtBAkkNAQsgAkE4aiABEPsBQQEhCSACKAI8IQUgAigCOEEBcQ0AIAIgBTYC6AECQCAFKAIAQR5HDQAgBSAGKAIMNgIUIAUoAiAQ7h8gBSAGNgIgDAILIAJB0AFqQQRyIAEtAMgBEN4bIAJBATYC5AEgAkGwupsBNgLgASACQbCAgIB4NgLQASABKALAASABKALEASACQdABahCFFSEFAkAgAS0AyAFBogFHDQAgARDHESEIIAEQhw4gASAIEOURCyACQegBahDrHgsgBhDvHyACIAU2AsgBIAIgCTYCxAEgCQ0BIAUNACABIAJByABqEPAFDAILIAEgASgCeEF+cSAHQQFxcjYCeCACQcgAahD9HiABIAc2AnggAS8BgAFBgOAAcUGA4ABHDQMgAkG7gYCAeDYCSCABIAQgAyACQcgAahCvGgwDCyABIAJByABqEPAFIAJBxAFqENscCyABIAc2AnggAkEANgLAASACQcABahCwHwsgAS0AyAEhBQJAAkACQAJAIAEtAHlBAXFFDQAgBUHxAEcNACABKALAASEDIAEQhw4CQCABKAJ4QYCAoAFxQYCAgAFHDQAgASgCvAEhBSABKAK4ASEHIAJB0ICAgHg2AkggByAFIAJByABqEIUVIQVBASEHIAEtAMgBQaIBRw0GIAEQxxEhAyABEIcOIAEgAxDlEQwGCwJAAkAgAS0AyAEiBUF9ag4EBAEBBAALIAVBowFGDQMLIAEtAMkBQQFGDQJBACEEAkACQCAFQUNqDjUDAwEDAwMDAQMDAQEDAQMDAQEBAwEBAQEDAQEBAQMBAQMBAwEBAQMDAQMBAwMDAQMBAwEBAwALAkAgBQ4jAwEDAQMBAQEBAQEDAwMDAAMBAwEBAQEBAQEDAQEDAwEBAQMBCyABEIcOQQEhBAwCCyAFQd8AakH/AXFB0gFJDQIMAQsCQCAFQaIBRw0AIAEQxxEhBSABEIcOQQEhBwwFCwJAAkAgBUGNf2pB/wFxQS5JDQAgBUUNACAFQcsARg0AIAVB8QBGDQAgASgCwAEhBEEAIQUMAQsgASgCwAEhBEEBIQULIAEgBDYC1AEgASAFNgLQASACQTBqIAEQnwlBASEHIAIoAjQhAwJAIAIoAjBBAXFFDQAgAyEFDAULIAIgAzYCvAECQAJAIAMoAgBBHkYNACABLQDIAUH/AXFBCkcNACABEIcOIAJBKGogAUHAgAYQjhUgAigCLCEGAkACQAJAIAIoAihBAXFFDQAgBiEFDAELIAIgBjYCwAECQAJAIAEtAMgBIgVBCUcNACABEIcOIAEgASgCeCIFQYCAAnI2AnggAkEgaiABEI8VIAIoAiAhCCABIAU2AnggAigCJCEJIAhBAXFFDQMgCSEFDAELIAEoAsQBIQMgASgCwAEhBCACQcQBaiAFEN4bIAJBATYCTCACQZjvmwE2AkggAkIBNwJUIAJBigWtQiCGQdmhmwGthDcD6AEgAiACQegBajYCUCACQdABaiACQcgAahCNFSACQeQBaiACQcwBaigCADYCACACIAIpAsQBNwLcASAEIAMgAkHQAWoQhRUhBSABLQDIAUGiAUcNACABEMcRIQMgARCHDiABIAMQ5RELIAJBwAFqEOseCyACQbwBahDrHgwHCyACQRhqIAkQvwMgAigCHCEHQQhBwAAQ6x8iBUUNBCAFIAQ2AhAgBSAJNgIMIAUgBjYCCCAFIAM2AgQgBUEWNgIAIAUgBzYCFAwBCyADIQULIAUoAgAiB0EeRg0DAkAgB0EWSw0AQQEgB3RBgICcAnENBAsgAkEQaiABIAQgBRDdAyACKAIUIQUgAigCECEHDAQLIAEoArwBIQUgAkEIaiABELMLIAIoAgwhBwJAIAIoAghBAXFFDQAgBygCBCEEIAcoAgAhBkEEQQQQ6x8iAUUNAiABIAc2AgAgAiAFNgJcIAIgAzYCWCACIAE2AkwgAkEjNgJUIAJB77ebATYCUCACQbmBgIB4NgJIIAYgBCACQcgAahCFFSEFQQEhBwwECyABKAK8ASEBQQhBwAAQ6x8iBUUNASAFIAQ6ABAgBSAHNgIMIAUgATYCCCAFIAM2AgQgBUEgNgIADAILIAEoArwBIQFBCEHAABDrHyIFRQ0AQQAhByAFQQA6ABAgBUEANgIMIAUgATYCCCAFIAM2AgQgBUEgNgIADAILAAtBACEHCyAAIAc2AgAgACAFNgIEIAJB8AFqJAAL9g0CJ38CfiMAQeAAayICJAAgASgCBCEDIAJBIGogASgCCCIEQQhBwAAQzA0gAigCJCEFAkACQAJAAkACQCACKAIgQQFGDQAgAigCKCEGAkAgBUUNACAEQQZ0IQcgBiEIIAUhCQNAIAdFDQEgAykDKCEpIAJBFGogA0EwahCRCCACQSBqIAMQpwIgAkEIakEIaiACQRRqQQhqKAIAIgo2AgAgAiACKQIUIio3AwggCEEgaiACQSBqQSBqKQMANwMAIAhBGGogAkEgakEYaikDADcDACAIQRBqIAJBIGpBEGopAwA3AwAgCEEIaiACQSBqQQhqKQMANwMAIAggAikDIDcDACAIQShqICk3AwAgCEEwaiAqNwMAIAhBOGogCjYCACAHQUBqIQcgCEHAAGohCCADQcAAaiEDIAlBf2oiCQ0ACwsgASgCECEDIAJBIGogASgCFCILQQRBDBDMDSACKAIkIQwgAigCIEEBRg0BIAIoAighDQJAIAxFDQAgC0EMbCEJIA0hByAMIQoDQCAJRQ0BQQAtAMDxnQEaIAMoAgghDiADKAIEIQ9BwAAQhQEiCEUNBCACQSBqIAMoAgAQRCAIQThqIAJBIGpBOGopAwA3AwAgCEEwaiACQSBqQTBqKQMANwMAIAhBKGogAkEgakEoaikDADcDACAIQSBqIAJBIGpBIGopAwA3AwAgCEEYaiACQSBqQRhqKQMANwMAIAhBEGogAkEgakEQaikDADcDACAIQQhqIAJBIGpBCGopAwA3AwAgCCACKQMgNwMAIAdBCGogDjYCACAHQQRqIA82AgAgByAINgIAIAdBDGohByAJQXRqIQkgA0EMaiEDIApBf2oiCg0ACwtBgICAgHghECABKAI4IREgASgCNCESIAEoAjAhEwJAAkAgASgCGEGAgICAeEcNAAwBCyABKAIcIQMgASgCLCEUIAEoAighFSABKAIkIRYgAkEgaiABKAIgIgpBCEEwEMwNIAIoAiQhECACKAIgQQFGDQQgAigCKCEOAkAgEEUNACAKQTBsIQcgDiEIIBAhCQNAIAdFDQEgAkEgaiADEIABIAhBKGogAkEgakEoaikDADcDACAIQSBqIAJBIGpBIGopAwA3AwAgCEEYaiACQSBqQRhqKQMANwMAIAhBEGogAkEgakEQaikDADcDACAIQQhqIAJBIGpBCGopAwA3AwAgCCACKQMgNwMAIAhBMGohCCAHQVBqIQcgA0EwaiEDIAlBf2oiCQ0ACwsgCq1CIIYgDq2EISoLIAEtAEUhFyABLQBEIRhBACEZQQAhGgJAIAEoAjwiA0UNAEEALQDA8Z0BGkEUEIUBIhpFDQMgAygCBCEIIAMoAhAhGyADKAIMIRwgAkEgaiADKAIIIh1BCEEwEMwNIAIoAiQhHiACKAIgQQFGDQUgAigCKCEfAkAgHkUNACAdQTBsISBBACEHIB4hDgNAICAgB0YNASAIKAIYIQ8gCCgCFCEhIAgoAhAhIiAIKAIEISMgCCgCACEkAkAgCCkDCCIpQgODQgBSDQAgKaciAyADKAIAIgNBAWo2AgAgA0F/TA0GCyAILQAqISUgCC0AKSEmIAgtACghJyAILQAcIShBACEKQQAhCQJAIAgoAiAiA0UNAEEALQDA8Z0BGkHgABCFASIJRQ0GIAkgAxBkCwJAIAgoAiQiA0UNAEEALQDA8Z0BGkHgABCFASIKRQ0GIAogAxBkCyAIQTBqIQggHyAHaiIDICQ2AgAgA0EqaiAlOgAAIANBKWogJjoAACADQShqICc6AAAgA0EkaiAKNgIAIANBIGogCTYCACADQRxqICg6AAAgA0EYaiAPNgIAIANBFGogITYCACADQRBqICI2AgAgA0EIaiApNwMAIANBBGogIzYCACAHQTBqIQcgDkF/aiIODQALCyAaIBs2AhAgGiAcNgIMIBogHTYCCCAaIB82AgQgGiAeNgIACwJAIAEoAkAiCEUNAEEALQDA8Z0BGkEMEIUBIhlFDQNBAC0AwPGdARogCCgCCCEHIAgoAgQhCUHgABCFASIDRQ0DIAMgCCgCABBkIBkgBzYCCCAZIAk2AgQgGSADNgIACyAAIBE2AjggACASNgI0IAAgEzYCMCAAIAs2AhQgACANNgIQIAAgDDYCDCAAIAQ2AgggACAGNgIEIAAgBTYCACAAIBc6AEUgACAYOgBEIAAgFDYCLCAAIBU2AiggACAWNgIkIAAgKjcCHCAAIBA2AhggACAZNgJAIAAgGjYCPCACQeAAaiQADwsgBSACKAIoQYifmgEQqh4ACyAMIAIoAihBiJ+aARCqHgsACyAQIAIoAihBiJ+aARCqHgALIB4gAigCKEGIn5oBEKoeAAuGDgIMfwF+IwBB4ABrIgMkACABKAIAIgEoAgQhBCADQdAAaiACIAEoAgAiBUEAEJUCAkACQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUQ0AIAAgDzcCAAwBCyADQQA2AiggA0HQAGogAiADQShqQayXmwFBARC4DAJAAkACQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0BCyADQdAAaiABQcAAaiACENgLAkAgAy0AUEEERg0AIAMpA1AiD0L/AYNCBFINAQsCQCABKAJ4RQ0AIANB0ABqIAFB+ABqIAIQ2gkgAy0AUEEERg0AIAMpA1AiD0L/AYNCBFINAQsCQCABKAKEASIGRQ0AIANB0ABqIAIQ4g4CQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0CCyABKAKAASEHIAEoAnQhCCADQdAAaiACIAEoAnAiCSAGQYCCCCAGENYXAkACQCADLQBQQQVGDQAgAykDUCEPDAELIANB0ABqEIQfIANBADoANiADQSBqIAcQ7BIgA0EAOgA3IAdBOGohCiAGIQtBACEMQQAhDQNAAkACQAJAAkAgC0UNACADQRhqIApBSGoiDhDsEiADQdAAaiACIAhBgIIIIAwgDSADQTdqIANBNmoQoQUCQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0GCyAOKAIAQQVHDQEgA0EANgI4IANB0ABqIAIgA0E4akHXrJsBQQEQuAwCQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0DCyADQdAAaiAKQUxqIAIQ1gcCQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0DCyADQdAAaiACIANBOGpBpsSbAUEBELgMIAMtAFBBBEYNAyADKQNQIg9C/wGDQgRSDQIMAwsCQCAHIAZB2ABsakGof2oiCkUNACADIAoQ7BILIANB0ABqIAIgCSAIQYCCCCAMIA0QuQICQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUg0FCyADQdAAaiACIAhBAEGAgggQwBAgAy0AUEEERg0FIAMpA1AiD0L/AYNCBFINBAwFCwJAAkACQAJAIApBeGoiDCkDAFANACADQdAAaiAMIAIQqwwgAy0AUEEERg0CIAMpA1AiD0L/AYNCBFINAQwCCyADQdAAaiAKIAIQ1RMgAy0AUEEERg0BIAMpA1AiD0L/AYNCBFENAQsgD0L/AYNCBFINAQsgDigCAEEERg0CIANBADYCUCADQcgAaiACIANB0ABqQfuWmwFBARC4DAJAIAMtAEhBBEYNACADKQNIIg9C/wGDQgRSDQELAkACQAJAAkACQCAOKAIADgQAAQIDAAsgA0HQAGogCkFQaiACEIcBIAMtAFBBBEYNBiADKQNQIg9C/wGDQgRSDQMMBgsgA0HQAGogCkFMaiACEMAIIAMtAFBBBEYNBSADKQNQIg9C/wGDQgRSDQIMBQsgA0HQAGogCkFMaiACEP0BIAMtAFBBBEYNBCADKQNQIg9C/wGDQgRSDQEMBAsgA0HQAGogCkFMaiACENsJIAMtAFBBBEYNAyADKQNQIg9C/wGDQgRRDQMLIA9C/wGDQgRRDQILIA9C/wGDQgRRDQELIA9C/wGDQgRSDQILAkACQCADLQA2DQAgA0EAOgA2DAELIAIoAlRFDQAgA0EQaiAOEOwSIANB0ABqIAIgAygCFEEAENQDIAMtAFBBBEYNACADKQNQIg9C/wGDQgRSDQILAkAgAy0AN0UNACACIAIoAjhBf2o2AjggA0EAOgA3CyADQQhqIA4Q7BIgC0F/aiELIApB2ABqIQpBASEMIAMoAgwhDQwACwsgD0L/AYNCBFINAQsCQCABLQCIAUUNACADQdAAaiACIANBKGpBupebAUEBELgMIAMtAFBBBEYNACADKQNQIg9C/wGDQgRSDQELIANB0ABqIAIgA0EoakGvl5sBQQEQuAwgAy0AUEEERg0BIAMpA1AiD0L/AYNCBFENAQsgD0L/AYNCBFENACAAIA83AgAMAQsgA0HQAGogAiAFIAQgASgClAEgASgCmAEQ7gMCQCADLQBQQQRGDQAgAykDUCIPQv8Bg0IEUQ0AIAAgDzcCAAwBCwJAAkAgAS0APEEGRg0AIANBADYCUCADQThqIAIgA0HQAGpB+MibAUECELgMAkACQCADLQA4QQRGDQAgAykDOCIPQv8Bg0IEUg0BCyADQThqIAFBEGogAhDYCwJAIAMtADhBBEYNACADKQM4Ig9C/wGDQgRSDQELIANBOGogAiADQdAAakGvl5sBQQEQuAwgAy0AOEEERg0BIAMpAzgiD0L/AYNCBFENAQsgD0L/AYNCBFINAQsgAEEEOgAADAELIAAgDzcCAAsgA0HgAGokAAvoDQEIfyMAQdACayICJAACQAJAAkACQAJAIAAoAgAOBAQAAQMECyAAKAIEQQFHDQMgACgCCCIAKAIAQRpHDQEgAkEIaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAghBMkYNAyAAEMkBIABBOGogAkEIakE4aikDADcDACAAQTBqIAJBCGpBMGopAwA3AwAgAEEoaiACQQhqQShqKQMANwMAIABBIGogAkEIakEgaikDADcDACAAQRhqIAJBCGpBGGopAwA3AwAgAEEQaiACQQhqQRBqKQMANwMAIAEgAkEIakEIaikDADcDACAAIAIpAwg3AwAMAwsCQCAAKAIEIgMtAGxBAkcNACADQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIANBhAFqKAIAIgRFDQAgA0GAAWooAgAhACAEQdgAbCEEA0ACQAJAAkACQCAAKAIAQXxqDgIDAAELIABBBGooAgAiBSgCAEEaRw0BIAJB0AFqIAEoAgAgASgCBCAFQQhqIgYQtQwgAigC0AFBMkYNAiAFEMkBIAVBOGogAkHQAWpBOGopAwA3AwAgBUEwaiACQdABakEwaikDADcDACAFQShqIAJB0AFqQShqKQMANwMAIAVBIGogAkHQAWpBIGopAwA3AwAgBUEYaiACQdABakEYaikDADcDACAFQRBqIAJB0AFqQRBqKQMANwMAIAYgAkHQAWpBCGopAwA3AwAgBSACKQPQATcDAAwCCyAAIAEQ/gEMAQsgBSABEEYLIABB2ABqIQAgBEGof2oiBA0ACwsCQCADQZgBaigCACIARQ0AIANBlAFqKAIAIgYgAEEobGohBwNAAkACQAJAAkACQAJAAkAgBigCAA4FBgABAgUGCyAGKAIEQQFHDQUgBigCCCIAKAIAQRpHDQMgAkGQAWogASgCACABKAIEIABBCGoiBBC1DCACKAKQAUEyRg0FIAAQyQEgAEE4aiACQZABakE4aikDADcDACAAQTBqIAJBkAFqQTBqKQMANwMAIABBKGogAkGQAWpBKGopAwA3AwAgAEEgaiACQZABakEgaikDADcDACAAQRhqIAJBkAFqQRhqKQMANwMAIABBEGogAkGQAWpBEGopAwA3AwAgBCACQZABakEIaikDADcDACAAIAIpA5ABNwMADAULIAYoAgQiACgCAEEaRw0BIAJB0ABqIAEoAgAgASgCBCAAQQhqIgQQtQwgAigCUEEyRg0EIAAQyQEgAEE4aiACQdAAakE4aikDADcDACAAQTBqIAJB0ABqQTBqKQMANwMAIABBKGogAkHQAGpBKGopAwA3AwAgAEEgaiACQdAAakEgaikDADcDACAAQRhqIAJB0ABqQRhqKQMANwMAIABBEGogAkHQAGpBEGopAwA3AwAgBCACQdAAakEIaikDADcDACAAIAIpA1A3AwAMBAsCQCAGKAIEIggtAGxBAkcNACAIQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIAhBhAFqKAIAIgRFDQAgCEGAAWooAgAhACAEQdgAbCEEA0ACQAJAAkAgACgCAEEFRw0AIABBBGooAgAiBSgCAEEaRw0BIAJBkAJqIAEoAgAgASgCBCAFQQhqIgkQtQwgAigCkAJBMkYNAiAFEMkBIAVBOGogAkGQAmpBOGopAwA3AwAgBUEwaiACQZACakEwaikDADcDACAFQShqIAJBkAJqQShqKQMANwMAIAVBIGogAkGQAmpBIGopAwA3AwAgBUEYaiACQZACakEYaikDADcDACAFQRBqIAJBkAJqQRBqKQMANwMAIAkgAkGQAmpBCGopAwA3AwAgBSACKQOQAjcDAAwCCyAAIAEQpwgMAQsgBSABEEYLIABB2ABqIQAgBEGof2oiBA0ACwsCQCAIQZgBaigCACIERQ0AIAhBlAFqKAIAIQAgBEEobCEEA0AgASAAELsCIABBKGohACAE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gHg2ApABIAMgAjYClAEMBQsgASgCxAEhBiABKALAASEHIANBzAFqIAIQ3hsgA0EBNgK0AiADQZjvmwE2ArACIANCATcCvAIgA0GKBa1CIIZBiKObAa2ENwPoASADIANB6AFqNgK4AiADQfABaiADQbACahCNFSADQYQCaiADQdQBaigCADYCACADIAMpAswBNwL8ASAHIAYgA0HwAWoQhRUhAgJAIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgA0GBgICAeDYCkAEgAyACNgKUAQwECyABLQDIASEGCyADIAI2AtgBAkAgBkH/AXFBG0cNACABEIcOIANBkAFqQQhqIANBsAFqQQhqKAIANgIAIAMgAjYCoAEgAyAFNgKcASADIAMpArABIg83A5ABIA+nIQIMBgsgASgCxAEhAiABKALAASEHIANB3AFqIAYQ3hsgA0EBNgK0AiADQZjvmwE2ArACIANCATcCvAIgA0GKBa1CIIZByKibAa2ENwPoASADIANB6AFqNgK4AiADQfABaiADQbACahCNFSADQYQCaiADQeQBaigCADYCACADIAMpAtwBNwL8ASAHIAIgA0HwAWoQhRUhAgJAIAEtAMgBQaIBRw0AIAEQxxEhBiABEIcOIAEgBhDlEQsgA0GBgICAeDYCkAEgAyACNgKUASADQdgBahCpHwwCCyADQYGAgIB4NgKQASADIAc2ApQBDAILAAsgA0GwAWoQ1B0LQYGAgIB4IQILIAUQ7x8LAkACQCACQYCAgIB4ag4CAAEDCyABIANBIGoQ8AUgAygCkAFBgYCAgHhHDQMgA0GQAWoQshoMAwsgAygCkAEhAiABIANBIGoQ8AUgAkGBgICAeEcNAgsgA0GQAWoQshoMAQsgASABKAJ4QX5xIARBAXFyNgJ4IAMoApABIQIgAygCoAEhByADKAKcASEGIAMpApQBIQ8gA0EgahD9HiACQYCAgIB4Rg0AIAEgASgCeCINQf98cUGAAXI2AnggAyACNgKwAiADIAc2AsQCIAMgBjYCwAIgAyAPNwK0AiADIANBHGo2ArwCIAMgAUEBIA+nIA9CIIinENsYEK8JIAMoAgQhDgJAAkAgAygCAEEBcUUNACAAIA42AgQgA0GwAmoQ1B0gBhDvHyADQcQCahCpH0GBgICAeCECDAELIAAgDzcCBCABKAK8ASEMIAMoAhwhCRDcGiELIANBxABqQQA7AQAgAEEBOwEkIAAgBzYCICAAIAY2AhwgAEEANgIYIAAgDDYCFCAAIAk2AhAgACAONgIMIANBADYCOCADQgA3AjAgA0IANwI8IAMgCzYCLCADQQA2AiggA0KAgICAgAE3AiAgA0EgahDYHAsgACACNgIAIAEgDTYCeAwBCyAAQYCAgIB4NgIACyADQfACaiQAC5oOAQt/IwBB4AJrIgIkACACQaACaiABEMYXIAIoAqACIQMCQEE4RQ0AIAJB+ABqIAJBoAJqQQRqQTj8CgAACwJAAkAgA0EiRg0AIAIoAtwCIQECQEE4RQ0AIABBCGogAkH4AGpBOPwKAAALIAAgATYCQCAAIAM2AgQgAEGIgMQANgIADAELAkBBOEUNACACQQhqIAJB+ABqQTj8CgAACyABEOADAkACQAJAIAEoAgAoAlAgASgCCCIERg0AIAJBCGpBBGohAyABEL4JQS1HDQIgARCHBEHdAEYNAiABEIcEQS1GDQICQCABEMwbDQAgAEEEaiABELUKIABBiIDEADYCAAwCCyACQaACaiABEMYXIAIoAqACIQUCQEE4RQ0AIAJB+ABqIAJBpAJqQTj8CgAACwJAIAVBIkYNACACKALcAiEBAkBBOEUNACAAQQhqIAJB+ABqQTj8CgAACyAAIAE2AkAgACAFNgIEIABBiIDEADYCAAwCCwJAQThFDQAgAkHAAGogAkH4AGpBOPwKAAALIAJBCGpBCGohBQJAAkACQCACKAIIQf7///8HaiIGQQQgBkEESRsOBQIAAAABAgsgAyEFDAELIAJBCGpBHGohBQsgAkHAAGpBCGohAwJAAkACQCACKAJAQf7///8HaiIGQQQgBkEESRsOBQIAAAABAgsgAkHAAGpBBGohAwwBCyACQcAAakEcaiEDCyACQegBakEUaiADQRRqKAIANgIAIAJB6AFqQQhqIAVBCGooAgA2AgAgAiADKQIMNwL0ASACIAUpAgA3A+gBIAJBoAJqIAJBCGogASgCBCIDIAQQowwgAkGAAmpBCGoiBSACQaACakEQaiIHKQIANwMAIAJBgAJqQRBqIgggAkGgAmpBGGoiCSkCADcDACACQYACakEYaiIKIAJBwAJqIgsoAgA2AgAgAiACKQKoAjcDgAIgAigCpAIhAQJAIAIoAqACIgxBIkYNACAAIAIpAsQCNwIoIABBwABqIAJB3AJqKAIANgIAIABBOGogAkHUAmopAgA3AgAgAEEwaiACQcwCaikCADcCACAAQSRqIAooAgA2AgAgAEEcaiAIKQMANwIAIABBFGogBSkDADcCACAAIAIpA4ACNwIMIAAgATYCCCAAIAw2AgQgAEGIgMQANgIAIAZBBEkNBCACQcAAahDjFAwECyACQaACaiACQcAAaiADIAQQowwgAkH4AGpBCGogBykCADcDACACQfgAakEQaiAJKQIANwMAIAJB+ABqQRhqIAsoAgA2AgAgAiACKQKoAjcDeCACKAKkAiEFAkAgAigCoAIiBkEiRg0AIAAgAikCxAI3AiggAEHAAGogAkHcAmooAgA2AgAgAEE4aiACQdQCaikCADcCACAAQTBqIAJBzAJqKQIANwIAIABBJGogAkGQAWooAgA2AgAgAEEcaiACQYgBaikDADcCACAAQRRqIAJBgAFqKQMANwIAIAAgAikDeDcCDCAAIAU2AgggACAGNgIEIABBiIDEADYCAAwECyACQbABakEIaiACQfgAakEIaikDADcDACACQbABakEQaiACQfgAakEQaikDADcDACACQbABakEYaiACQfgAakEYaigCADYCACACQbABakEkaiACQegBakEIaikDADcCACACQdwBaiACQegBakEQaikDADcCACACIAIpA3g3A7ABIAIgAikD6AE3AswBAkAgASAFTQ0AIAJBAjYCoAIgAEEEaiADIAQgAkHoAWogAkGgAmoQ0QwgAEGIgMQANgIADAQLIAAgAikDgAI3AgQgAEEcaiACQYACakEYaigCADYCACAAQRRqIAJBgAJqQRBqKQMANwIAIABBDGogAkGAAmpBCGopAwA3AgACQEE0RQ0AIABBJGogAkGwAWpBNPwKAAALIAAgBTYCICAAIAE2AgAMAwsgAEEEaiABELUKIABBiIDEADYCAAsgAigCCEH+////B2pBBEkNASACQQhqEOMUDAELAkBBOEUNACACQaACaiACQQhqQTj8CgAACwJAAkACQAJAIAIoAqACQf7///8HaiIFQQQgBUEESSIFGw4FAQAAAgMACyACQQE2AnggAEEEaiABKAIEIAQgAkGgAmpBBGogAkH4AGoQ0QwgAEGIgMQANgIAIAUN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AgBBGkcNACACQYACaiABKAIAIAEoAgQgAEEIaiIGELUMIAIoAoACQTJGDQEgABDJASAAQThqIAJBgAJqQThqKQMANwMAIABBMGogAkGAAmpBMGopAwA3AwAgAEEoaiACQYACakEoaikDADcDACAAQSBqIAJBgAJqQSBqKQMANwMAIABBGGogAkGAAmpBGGopAwA3AwAgAEEQaiACQYACakEQaikDADcDACAGIAJBgAJqQQhqKQMANwMAIAAgAikDgAI3AwAMAQsgACABEEYLIANBDGohAyAFQXRqIgUNAAsLAkAgBEEUaigCACIDRQ0AIARBEGooAgAhACADQdgAbCEDA0AgACABEGggAEHYAGohACADQah/aiIDDQALCyAEKAIwIgBFDQQCQCAAKAIAQRpHDQAgAkHAAWogASgCACABKAIEIABBCGoiARC1DCACKALAAUEyRg0FIAAQyQEgAEE4aiACQcABakE4aikDADcDACAAQTBqIAJBwAFqQTBqKQMANwMAIABBKGogAkHAAWpBKGopAwA3AwAgAEEgaiACQcABakEgaikDADcDACAAQRhqIAJBwAFqQRhqKQMANwMAIABBEGogAkHAAWpBEGopAwA3AwAgASACQcABakEIaikDADcDACAAIAIpA8ABNwMADAULIAAgARBGDAQLAkAgACgCBCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiARC1DCACKAJAQTJGDQQgABDJASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwECyAAIAEQRgwDCyAAKAIQIgBFDQIgAEEIaigCACIDRQ0CIABBBGooAgAhACADQQxsIQMDQCAAIAEQywEgAEEMaiEAIANBdGoiAw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARC1DCACKAIAQTJGDQIgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAA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CwsCQCAAKAIkIgJFDQAgASACEKcBCyAAKAI0IgVFDQIgACgCMCECIAVBDGwhBQNAIAEgAigCABCnASACQQxqIQIgBUF0aiIFDQAMAwsLIAAoAgwiBUUNASAAKAIIIQIgBUEwbCEFA0AgAiABEI8DIAJBMGohAiAFQVBqIgUNAAwCCwsCQCAAKAIIIgJBBUYNACACQQNHDQAgASAAKAIMEKcBCwJAIAAoAjwiAkUNACABIAIQpwELIAAoAjgiBUUNACAAKAI0IQIgBUEMbCEFA0AgASACKAIAEKcBIAJBDGohAiAFQXRqIgUNAAsLC+ULAQd/IwBBwAJrIgIkAAJAIAAoAggiA0UNACAAKAIEIgQgA0EobGohBQNAAkACQAJAAkACQAJAAkAgBCgCAA4FBgABAgUGCyAEKAIEQQFHDQUgBCgCCCIAKAIAQRpHDQMgAkHAAWogASgCACABKAIEIABBCGoiAxC1DCACKALAAUEyRg0FIAAQyQEgAEE4aiACQcABakE4aikDADcDACAAQTBqIAJBwAFqQTBqKQMANwMAIABBKGogAkHAAWpBKGopAwA3AwAgAEEgaiACQcABakEgaikDADcDACAAQRhqIAJBwAFqQRhqKQMANwMAIABBEGogAkHAAWpBEGopAwA3AwAgAyACQcABakEIaikDADcDACAAIAIpA8ABNwMADAULIAQoAgQiACgCAEEaRw0BIAJBgAFqIAEoAgAgASgCBCAAQQhqIgMQtQwgAigCgAFBMkYNBCAAEMkBIABBOGogAkGAAWpBOGopAwA3AwAgAEEwaiACQYABakEwaikDADcDACAAQShqIAJBgAFqQShqKQMANwMAIABBIGogAkGAAWpBIGopAwA3AwAgAEEYaiACQYABakEYaikDADcDACAAQRBqIAJBgAFqQRBqKQMANwMAIAMgAkGAAWpBCGopAwA3AwAgACACKQOAATcDAAwECwJAIAQoAgQiBi0AbEECRw0AIAZBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgBkGEAWooAgAiA0UNACAGQYABaigCACEAIANB2ABsIQMDQAJAAkACQAJAIAAoAgBBfGoOAgMAAQsgAEEEaigCACIHKAIAQRpHDQEgAkGAAmogASgCACABKAIEIAdBCGoiCBC1DCACKAKAAkEyRg0CIAcQyQEgB0E4aiACQYACakE4aikDADcDACAHQTBqIAJBgAJqQTBqKQMANwMAIAdBKGogAkGAAmpBKGopAwA3AwAgB0EgaiACQYACakEgaikDADcDACAHQRhqIAJBgAJqQRhqKQMANwMAIAdBEGogAkGAAmpBEGopAwA3AwAgCCACQYACakEIaikDADcDACAHIAIpA4ACNwMADAILIAAgARDFCAwBCyAHIAEQRgsgAEHYAGohACADQah/aiIDDQALCwJAIAZBmAFqKAIAIgBFDQAgAEEobCEDIAZBlAFqKAIAQQRqIQADQAJAAkACQAJAAkACQAJAIABBfGooAgAOBQYAAQIDBgsgACgCAEEBRw0FIABBBGooAgAiBygCAEEaRw0DIAJBwABqIAEoAgAgASgCBCAHQQhqIggQtQwgAigCQEEyRg0FIAcQyQEgB0E4aiACQcAAakE4aikDADcDACAHQTBqIAJBwABqQTBqKQMANwMAIAdBKGogAkHAAGpBKGopAwA3AwAgB0EgaiACQcAAakEgaikDADcDACAHQRhqIAJBwABqQRhqKQMANwMAIAdBEGogAkHAAGpBEGopAwA3AwAgCCACQcAAakEIaikDADcDACAHIAIpA0A3AwAMBQsgACgCACIHKAIAQRpHDQMgAiABKAIAIAEoAgQgB0EIaiIIELUMIAIoAgBBMkYNBCAHEMkBIAdBOGogAkE4aikDADcDACAHQTBqIAJBMGopAwA3AwAgB0EoaiACQShqKQMANwMAIAdBIGogAkEgaikDADcDACAHQRhqIAJBGGopAwA3AwAgB0EQaiACQRBqKQMANwMAIAggAkEIaikDADcDACAHIAIpAwA3AwAMBAsgACABELMGDAMLIAAgARCyAgwCCyAHIAEQRgwBCyAHIAEQRgsgAEEoaiEAIANBWGoiAw0ACwsgBi0APCIAQQZGDQMgAEECRw0DIAZBEGohAANAIAAoAhgiAC0ALEECRg0ADAQLCyAAIAEQRgwCCyAAIAEQRgwBCyAEQQxqKAIAIgNFDQAgBEEIaigCACEAIANBKGwhAwNAIAEgABC7AiAAQShqIQAgA0FYaiIDDQALCyAEQShqIgQgBUcNAAsLIAJBwAJqJAALyAwCFH8DfiMAQdAAayICJAAgACgCACEDAkACQCABKAIAIgRBkPqDAUEOIAEoAgQiBSgC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lwwCCX8DfiMAQZABayIBJAACQAJAIAAoAgQiAi0ATCIDQQdGDQAgACgCACEEQQAhBQJAAkBBAC0AzPCdAUUNAEEAKALQ8J0BIgVB/////wdJDQFBvLqYARD5FAALQQBBAToAzPCdAUEAQQE2AtTwnQFBAEGAxZgBNgLY8J0BQQBBADYC0PCdAQtBACAFNgLQ8J0BAkAgAigCAEECRg0AIARBNGoiBRCUBCACKAIAIQMgAUEUaiACKAIIIAIoAgwQ8xIgASADNgIQIARBOGohAyABQRBqEMgFIQogASABQRBqNgKIAQJAIAQoAkANACADIARByABqEOEGGgsgASADNgJUIAEgAUGIAWo2AlAgAUEIaiAEKAI4IAQoAjwgCiABQdAAakElEIYJAkACQCABKAIIQQFxRQ0AIAQoAjgiAyABKAIMIgZqIgctAAAhCCABQRBqQQhqKQIAIQsgASkCECEMIAcgCkIZiKciCToAACADIAQoAjwgBkF4anFqQQhqIAk6AAAgBCAEKAJEQQFqNgJEIAQgBCgCQCAIQQFxazYCQCADIAZBBHRrQXBqIgMgDDcCACADQQhqIAs3AgAMAQsgASgCFCABKAIYEI4gCyAFEP0MIAItAEwhAwsgAUHIAGpCADcDACABQcAAakIANwMAIAFBOGpCADcDACABQgA3AzAgAULzytHLp4zZsvQANwMoIAFCg9+R85bM3LfkADcDICABQuHklfPW7Nm87AA3AxggAUL1ys2D16zbt/MANwMQIAMgAUEQahC8ICACQRRqKAIAIAJBGGooAgAgAUEQahCmECABQRBqIAIoAgAiA0ECRxDOHAJAIANBAkYNACABQRBqIAMQzhwgAkEIaigCACACQQxqKAIAIAFBEGoQnx8LIAJBHGogAUEQahDIDSACKAI4IQggAUEQaiACKAI8IgMQmCEgA0EGdCEHQQAhBQJAA0AgByAFRg0BIAggBWoiA0E8ai0AACABQRBqELwgIANBBGooAgAgA0EIaigCACABQRBqEKYQIANBDGogAUEQahDIDSABQRBqIANBJGoiBigCACIDQYCAgIB4RxDOHAJAIANBgICAgHhGDQAgBiABQRBqEMgNCyAFQcAAaiEFDAALCyACKAJEIQggAUEQaiACKAJIIgMQmCEgCCADQRxsaiEJAkADQCAIIAlGDQEgCCgC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AgBBGkcNASACIAAoAgAgACgCBCABQQhqIgAQtQwgAigCAEEyRg0EIAEQyQEgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgACACQQhqKQMANwMAIAEgAikDADcDAAwECwJAIAEoAgQiAy0AbEECRw0AIANBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgA0GEAWooAgAiBEUNACADQYABaigCACEBIARB2ABsIQQDQAJAAkACQAJAIAEoAgBBfGoOAgMAAQsgAUEEaigCACIFKAIAQRpHDQEgAkGAAmogACgCACAAKAIEIAVBCGoiBhC1DCACKAKAAkEyRg0CIAUQyQEgBUE4aiACQYACakE4aikDADcDACAFQTBqIAJBgAJqQTBqKQMANwMAIAVBKGogAkGAAmpBKGopAwA3AwAgBUEgaiACQYACakEgaikDADcDACAFQRhqIAJBgAJqQRhqKQMANwMAIAVBEGogAkGAAmpBEGopAwA3AwAgBiACQYACakEIaikDADcDACAFIAIpA4ACNwMADAILIAEgABDFCAwBCyAFIAAQRgsgAUHYAGohASAEQah/aiIEDQALCwJAIANBmAFqKAIAIgFFDQAgAUEobCEEIANBlAFqKAIAQQRqIQEDQAJAAkACQAJAAkACQAJAIAFBfGooAgAOBQYAAQIDBgsgASgCAEEBRw0FIAFBBGooAgAiBSgCAEEaRw0DIAJBwAFqIAAoAgAgACgCBCAFQQhqIgYQtQwgAigCwAFBMkYNBSAFEMkBIAVBOGogAkHAAWpBOGopAwA3AwAgBUEwaiACQcABakEwaikDADcDACAFQShqIAJBwAFqQShqKQMANwMAIAVBIGogAkHAAWpBIGopAwA3AwAgBUEYaiACQcABakEYaikDADcDACAFQRBqIAJBwAFqQRBqKQMANwMAIAYgAkHAAWpBCGopAwA3AwAgBSACKQPAATcDAAwFCyABKAIAIgUoAgBBGkcNAyACQYABaiAAKAIAIAAoAgQgBUEIaiIGELUMIAIoAoABQTJGDQQgBRDJASAFQThqIAJBgAFqQThqKQMANwMAIAVBMGogAkGAAWpBMGop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ACADQfAAakEIaiADQZABakEMaiIMKQIANwMAIAMgAykClAE3A3AgDCAIQQxqKQIANwIAIAsgCEEUaikCADcCACAJIAhBHGopAgA3AgAgAyAKNgKQASADIAgpAgQ3ApQBAkBBLEUNACADQcQAaiAIQSRqQSz8CgAACyADQShqQQhqIAhB3ABqKAIANgIAIAMgCCkCVDcDKAwBCyAILQBsIQcgCCgCUCEGIANBnAFqIAlBCGopAgA3AgAgA0GkAWogCUEQaikCADcCACADQawBaiAJQRhqKQIANwIAIAMgCjYCkAEgAyAJKQIANwKUAQJAQSxFDQAgA0HEAGogCEEkakEs/AoAAAsgA0EoakEIaiAIQdwAaigCADYCACADIAgpAlQ3AyhBgICAgHghBQsgBCAHQQFxOgBkIAIgBCkCUDcCGCACQSBqIARB2ABqIggoAgA2AgAgARCaCBogA0EoakEUaiAIKAIANgIAIAMgBCkCUDcCNAJAAkAgBUGAgICAeEYNACADQcgCaiADQfAAakEIaikDADcCACADQbwCakEUaiADQYABaigCADYCACADQbwCakEgaiACQRhqIgFBCGooAgA2AgAgAyADKQNwNwLAAiADIAEpAgA3AtQCIAMgBTYCvAICQEEkRQ0AIANBtAFqIAJBJPwKAAALIANBGGogA0G0AWoQmQ4gAygCHCECIAMoAhghCAJAIAMoAsQCIgEgBUcNACADQbwCakG4gYUBEPkVCyADKALAAiIJIAFBA3RqIgUgAjYCBCAFIAg2AgAgAyABQQFqIgE2AsQCAkACQAJAAkACQCABDgIBAgALIANBCGogA0G8AmoQ8RhBCiEBIAMoAgwhCAwDCyADQRBqIANByAJqEJ0VQQAhASADKAIUIQgMAQsgA0EANgLEAiAJKAIEIQggCSgCACEBCyADQbwCahDlFwtBAC0AwPGdARpBCBCFASICDQEMAwsCQEEkRQ0AIANBtAFqIAJBJPwKAAALIAMgA0G0AWoQmQ5BAC0AwPGdARogAygCBCEIIAMoAgAhAUEIEIUBIgJFDQILIAIgATYCACACIAg2AgQgBhCwAyAGQQhBBBCeEkEALQDA8Z0BGkHIABCFASIBRQ0BAkBBLEUNACABIANBxABqQSz8CgAACyABIAI2AiwgASADKQMoNwIwIAFBOGogA0EwaikDADcCACABQcAAaiADQThqKQMANwIAAkAgAygCmAEiAiAKRw0AIANBkAFqQciBhQEQ+RULIAMoApQBIAJBA3RqIgggATYCBCAIQQk2AgAgAyACQQFqNgKYAQJAQSRFDQAgAEEEaiADQZABakEk/AoAAAsgAEEiNgIAIAQgBCgCEEEBajYCEAwEC0GogYUBEPgUAAsACyADQaQCaiABEK8MIANBFjYCcCAAIAEoAgQgASgCCCADQaQCaiADQfAAahDRDAJAIApBgICAgHhHDQAgA0G0AWoQyBsLIANBkAFqEOUXCyAEIAQoAhBBAWo2AhAgAhDlFwsgA0HgAmokAAulDAIRfwJ+IwBB8ABrIgQkACABIAEoAngiBUGAIHI2AnggASgCwAEhBgJAAkACQAJAAkAgAS0AyAEiB0E+Rg0AIAdBEkcNAQsgARCHDiAEQQA2AiAgBEKAgICAgAE3AhhBigWtQiCGIRVBCCEIIARB1wBqIQkgBEHUAGohCkEAIQcDQCABLQDIAUETRg0CIAEoAsABIQtBACEMQQAhDUEAIQ4CQANAIARB2ABqIAFBgqKbAUEJQQAQhgYCQAJAAkAgBC0AWEEBRw0AIAQoAlwhDwwBCwJAAkACQAJAAkAgBC0AWSIQQaQBRg0AIBBB0QBGDQEgEEHgAEYNAiAQQYsBRg0DIAQgEDoASCABKAK4ASEQIAEoArwBIREgBEEwaiAEQcgAahDWECAEIARBMGoQ6hw3A2AgBEGkgYCAeDYCWCABIBAgESAEQdgAahCvGgwHCyABIAEoAngiEEGAIHI2AnggBEHYAGogARDDCyABIBA2AnggBCgCYCESIAQpA1giFlBFDQMgEiEPDAQLQQEhDCADDQUgASgCvAEhECABKAK4ASERIARBpoGAgHg2AlggBELRxr3zto4dNwNgIAEgESAQIARB2ABqEK8aDAULAkAgAg0AIAEoArwBIRAgASgCuAEhESAEQaWBgIB4NgJYIARCodK5AzcDYCABIBEgECAEQdgAahCvGkEBIQ4MBQsgDkEBcQ0DQQEhDiANQQFxIRBBACENIBBFDQQgASgCvAEhECABKAK4ASENIARCsd7Vowc3A2ggBEKh0rkDNwNgIARB+oCAgHg2AlggASANIBAgBEHYAGoQrxpBASENQQEhDgwECwJAIAINACABKAK8ASEQIAEoArgBIQ0gBEGlgYCAeDYCWCAEQrHe1aMHNwNgIAEgDSAQIARB2ABqEK8aQQEhDQwECyANQQFxIRBBASENIBBFDQMgASgCvAEhECABKAK4ASENIARB+4CAgHg2AlggBEKx3tWjBzcDYCABIA0gECAEQdgAahCvGkEBIQ0MAwsgBCgCZCETIARBEGogAUHZABDtECAEKAIUIRECQAJAAkAgBCgCEEEBcUUNACARIQ8MAQsgBCARNgJYIARBCGogAUEXEO0QIAQoAgwhDyAEKAIIQQFxRQ0BIARB2ABqEK0fCyAWEMYdDAELIAEoArwBIRQCQCAHIAQoAhhHDQAgBEEYahDCFiAEKAIcIQgLIAggB0EwbGoiEEEAOgAcIBBBADYCGCAQIBM2AhQgECASNgIQIBAgFDYCBCAQIAs2AgAgECAPNgIkIBAgETYCICAJLQAAIREgBC8AVSEPIBAgDEEBcToAKiAQIA1BAXE6ACkgECAOQQFxOgAoIBAgDzsAHSAQQR9qIBE6AAAgECAWNwIIIBBBL2ogCi0AADoAACAQIAQoAFA2ACsgBCAHQQFqIgc2AiAgAS0AyAEiEEEHRg0DIBBBE0YNBiABKALEASEHIAEoAsABIQ0gBEEkaiAQEN4bIARBATYCXCAEQZjvmwE2AlggBEIBNwJkIAQgFUG8p5sBrYQ3A0ggBCAEQcgAajYCYCAEQTBqIARB2ABqEI0VIARBxABqIARBLGooAgA2AgAgBCAEKQIkNwI8IA0gByAEQTBqEIUVIQ8gAS0AyAFBogFHDQAgARDHESEQIAEQhw4gASAQEOURCyAEQRhqEK8fQQEhEAwGCyABKAK8ASEQIAEoArgBIREgBEH7gICAeDYCWCAEQqHSuQM3A2AgASARIBAgBEHYAGoQrxpBASEODAALCyABEIcODAALCyAEQdgAakEEciAHEN4bIARBETYCbCAEQaCjmwE2AmggBEGwgICAeDYCWCAGIAEoAsQBIARB2ABqEIUVIQ9BASEQIAdBogFHDQEgARDHESEHIAEQhw4gASAHEOURDAELIAQoAhwhDUEBIRACQCAEKAIYIhFBgICAgHhHDQAgDSEPDAELIAEQhw4gASgCvAEhEEEEQRQQ6x8iD0UNASAPIBA2AhAgDyAGNgIMIA8gBzYCCCAPIA02AgQgDyARNgIAQQAhEAsgASAFNgJ4IAAgDzYCBCAAIBA2AgAgBEHwAGokAA8LAAupCwIKfwF+IwBBwABrIgIkAAJAIAEoAjgNACAAKAIkIgNFDQAgAUEAIAMQ4wU2AjgLAkAgASgCPCIDRQ0AIAAtADRBAUcNACAALQA6IQQgAEGAAjsAOQJAIAMoAggiBUUNACAFQTBsIQYgAygCBCIHQQhqIQMDQCAAIAMQlxAgA0EwaiEDIAZBUGoiBg0ACyAALQA0QQFHDQAgBUEwbCEGIAdBIGohAwNAAkAgAC0ANEEBRw0AIAAgA0FoahCXECAALQA5IQUCQCADQQRqKAIAIgdFDQAgAC0ANEEBRw0AIAAtADohCCAAQYECOwA5IAcgABD0ASAAIAg6ADogACAFOgA5CwJAIAMoAgAiB0UNACAALQA0QQFHDQAgAC0AOiEIIABBgQI7ADkgByAAEPQBIAAgCDoAOgsgACAFOgA5CyADQTBqIQMgBkFQaiIGDQALCyAAIAQ6ADoLIABBAToAOQJAAkAgASgCFCIGDQAMAQsgASgCECEDIAZBDGwhBiACQRhqQQxqIQQgAkEgaiEIA0AgAygCACEFIAAtADkhByAAQQE6ADkgAkEDNgIgIAUgABBsIAAgBzoAOQJAIAIoAiAiBUEBSw0AIAggAkEYahCgGCAIIAIpAxgQ7xcgBUUNACACKAIkIgUgBSgCACIFQX9qNgIAIAVBAUcNACAEEN8PCyADQQxqIQMgBkF0aiIGDQALIAIoAhwhByACKAIkIQgLIAEoAgghBCACIAEoAgQiCTYCOCACQQA2AiggAkEANgIYIAIgCSAEQQZ0aiIKNgI8QQAhBSAJIQNBACEGAkACQANAAkACQCAGRQ0AIAcgCEcNASACQRhqEIAQQQAhBSACQQA2AhgLIAMgCkYNAgJAA0AgA0HAAGohBiADKAIAQQJHDQEgBiEDIAYgCkYNBAwACwsgAiAGNgI4IAJBADYCFCACQoCAgICAATcCDCACQQxqIAMQqAsgAigCDCIDQYCAgIB4Rg0DIAIpAhAhDCACIAM2AiAgAiAMpyIFNgIcIAIgBTYCGCACIAUgDEIgiKdBBHRqIgg2AiQgBiEDIAUhByAFIQYMAQsgAiAHQRBqIgs2AhwgACAHKQMAQQEQ6AUgCyEHDAALCyACIAo2AjgLAkAgBUUNACACQRhqEIAQCwJAIARFDQAgCUHAAGohAyACQRhqQQxqIQsgAkEgaiEIA0AgAyEEIABBADoAOQJAIAlBOGooAgAiBkUNACAJQTRqKAIAIQMgBkEMbCEGA0AgAygCACEFIAAtADkhByAAQQE6ADkgAkEDNgIgIAUgABBsIAAgBzoAOQJAIAIoAiAiBUEBSw0AIAggAkEYahCgGCAIIAIpAxgQ7xcgBUUNACACKAIkIgUgBSgCACIFQX9qNgIAIAVBAUcNACALEN8PCyADQQxqIQMgBkF0aiIGDQALCyAJIAAQhAQgBCAEIApHIgZBBnRqIQMgBCEJIAYNAAsLAkAgASgCQCIDRQ0AIAAtADRBAUcNACAALQA6IQYgAEGBAjsAOSADKAIAIAAQ9AEgACAGOgA6CyAAQQE6ADkCQCABKAIYQYCAgIB4Rg0AAkAgASgCLA0AIAAoAiQiA0UNACABQQAgAxDjBTYCLAsgAUEYaiEDIAEoAiAhBgJAIAAtAD0iBQ0AAkAgBg0AIABBADoAPQwBCyAAIAEoAhwiBygCACAHQQRqKAIAEOcUOgA9CyACQQA7AD0gAkEgakEAKQOY+5wBIgw3AwAgAkEwaiAMNwMAIAIgADYCOCACIAAtADg6ADwgAkEAKQOQ+5wBIgw3AxggAiAMNwMoIAJBGGogAxD0BiACQRhqENYVIAJBKGoQ1hUCQCAGRQ0AIAEoAhwhAyAGQTBsIQYDQCADIAAQvwEgA0EwaiEDIAZBUGoiBg0ACwsgACAFOgA9CyACQcAAaiQAC+cKAgp/AX4jAEEwayICJAAgACkCqAEhDCAAQoCAgICAATcDqAEgAkEIakEIaiIDIABBsAFqIgQoAgA2AgBBACEFIARBADYCACACIAw3AwggAEGoAWohBgJAAkACQCABKAIIIgcNACAGIAIpAwg3AgAgBkEIaiADKAIANgIAQQBBCBDRIAwBCyABKAIEIgghBAJAAkADQCAEKAIAIQMgACAEEN8BIAVBAWohBQJAIANBAUYNACAEKAIAQQFGDQILIARBMGohBCAHIAVHDQALQQAhCQwBCyAEENcDAkAgBSAHRw0AQQEhCQwBC0F/IQpBASEJA0AgCCAFQTBsaiEEIAggBSAKakEwbGohAwNAIAQoAgAhCyAAIAQQ3wECQCALQQFGDQAgBCgCAEEBRw0AIAQQ1wMgCkF/aiEKIAlBAWohCSAFQQFqIgUgB0cNAgwDCyADIAQpAwA3AwAgA0EoaiAEQShqKQMANwMAIANBIGogBEEgaikDADcDACADQRhqIARBGGopAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBCGogBEEIaikDADcDACAEQTBqIQQgA0EwaiEDIAcgBUEBaiIFRw0ACwsLIAEgByAJayIDNgIIIAAoAqwBIQsgACgCqAEhCSAGIAIpAwg3AgAgACgCsAEhBCAGQQhqIAJBCGpBCGooAgA2AgACQCAEDQACQCADRQ0AIAEoAgRBMGohBEEAIQUCQAJAA0ACQCAEQVBqIgAoAgBBAUcNACAEQVRqKAIAIgdB/v97Sw0CIARBWGooAgAgB3JFDQILIARBMGohBCADIAVBAWoiBUcNAAtBACEHDAELIAAQ1wNBASEHIAVBAWogA0YNACAFQX9zIANqIQBBASEHA0ACQAJAIAQoAgBBAUcNAAJAIARBBGooAgAiBUH+/3tLDQAgBEEIaigCACAFcg0BCyAEENcDIAdBAWohBwwBCyAEIAdBUGxqIgUgBCkDADcDACAFQShqIARBKGopAwA3AwAgBUEgaiAEQSBqKQMANwMAIAVBGGogBEEYaikDADcDACAFQRBqIARBEGopAwA3AwAgBUEIaiAEQQhqKQMANwMACyAEQTBqIQQgAEF/aiIADQALCyABIAMgB2s2AggLIAkgCxDRIAwBCyACIAk2AhwgAiALNgIYIAIgCzYCFCACIAsgBEEEdGo2AiAgAkEkaiACQRRqELYIQQAtAMDxnQEaQRwQhQEiBEUNASAEIAIpAiQ3AgAgBEIANwIMIARBEmpCADcBACAEQQhqIAJBJGpBCGooAgA2AgACQCADIAEoAgBHDQAgAUGg6ZoBEIMXCyABIANBAWoiADYCCCABKAIEIgcgA0EwbGoiBSAENgIMIAVBAjYCCCAFQRE2AgBBACEFQQBBCBC+ICAARQ0AIAdBMGohBAJAAkADQAJAIARBUGoiBygCAEEBRw0AIARBVGooAgAiC0H+/3tLDQIgBEFYaigCACALckUNAgsgBEEwaiEEIAAgBUEBaiIFRw0AC0EAIQcMAQsgBxDXAwJAIAMgBUcNAEEBIQcMAQsgAyAFayEDQQEhBwNAAkACQCAEKAIAQQFHDQACQCAEQQRqKAIAIgVB/v97Sw0AIARBCGooAgAgBXINAQsgBBDXAyAHQQFqIQcMAQsgBCAHQVBsaiIFIAQpAwA3AwAgBUEoaiAEQShqKQMANwMAIAVBIGogBEEgaikDADcDACAFQRhqIARBGGopAwA3AwAgBUEQaiAEQRBqKQMANwMAIAVBCGogBEEIaikDADcDAAsgBEEwaiEEIANBf2oiAw0ACwsgASAAIAdrNgIICyACQTBqJAAPCwAL9AsBE38jAEHAAWsiAiQAIAJBADYCICACQoCAgICAATcCGCACQcAAakEIaiEDIAJB6ABqQQhqIQQgAkHoAGpBHGohBUEAIQZBCCEHQQAhCEEAIQlBACEKA0ACQAJAAkAgAS0AyAFBAUcNACAAIAIpAhg3AgAgAEEIaiACQRhqQQhqKAIANgIADAELAkAgCkH+/3tLDQAgCiAJckUNACACQfiAgIB4NgJoIAEgCiAJIAJB6ABqEK8aCyABKALAASELIAJB6ABqIAFBABDuAiACKAJsIQwCQAJAIAIoAmgiDUGAgICAeEcNACAAQYCAgIB4NgIAIAAgDDYCBAwBCyACIAIoAnA2AiwgAiAMNgIoIAIgDTYCJAJAAkACQAJAAkACQCABLQDIAUEcRw0AIAEoAsABIQ0gARCHDiABKAK8ASEOIAJB6ABqIAFBABCeASACKAJsIQwgAigCaCIPQQdHDQEgAEGAgICAeDYCACAAIAw2AgQMAgsgAkHoAGogARDTAiACKAJsIRACQCACKAJoIhFBB0cNACAAQYCAgIB4NgIAIAAgEDYCBAwCCyACQTBqQQhqIAVBCGooAgA2AgAgAiAFKQIANwMwIAIoAoABIQ8gAigCfCEOIAIoAnghEiACKAJ0IRMgAigCcCENDAQLIAMgBCkDADcDACADQRhqIARBGGopAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBCGogBEEIaikDADcDACACIAw2AkQgAiAPNgJAAkACQCABLQDIASIMQRdHDQAgARCHDiACQRBqIAEQswsgAigCFCEPIAIoAhBBAXENASACQQhqIAJBwABqENMNIAIoAgwhDCACKAIIIREgAkGAgYCAeDYCaCABIBEgDCACQegAahCvGiABKAK8ASERQQhBKBDrHyIMRQ0EAkBBKEUNACAMIAJBwABqQSj8CgAACyACIBE2AlAgAiANNgJMIAIgDzYCSCACIAw2AkQgAkEENgJAIAEtAMgBIQwLQQAhDwJAIAEtAIEBQSBxRQ0AIAxB/wFxQQlHDQAgAiABQQEgASgCwAEQ8A0gAigCBCEPIAIoAgBBAXENAQsgASgCvAEhE0EIQSgQ6x8iEEUNAwJAQShFDQAgECACQcAAakEo/AoAAAtBAiERIAEtAIEBQSBxRQ0CIAEtAMgBQf8BcUEKRw0CIAEQhw4gASgCvAEhDCABKAK4ASEKIAJB/4CAgHg2AmggASAKIAwgAkHoAGoQrxoMAgsgAEGAgICAeDYCACAAIA82AgQgAkHAAGoQ6xILIAJBJGoQzB0MAwsgDSESIBMhCSANIQoMAQsACyABKAK8ASEUAkAgCCACKAIYRw0AIAJBGGoQwRYgAigCHCEHCyAHIAZqIgwgETYCACAMQRhqIA82AgAgDEEUaiAONgIAIAxBEGogEjYCACAMQQxqIBM2AgAgDEEIaiANNgIAIAxBBGogEDYCACAMQRxqIAIpAzA3AgAgDEEkaiACQTBqQQhqKAIANgIAIAxBLGogFDYCACAMQShqIAs2AgAgDEEwaiACKQIkNwIAIAxBOGogAkEkakEIaigCADYCACACIAhBAWoiCDYCIAJAAkAgAS0AyAEiDEEHRg0AIAxBAUcNAQwECyABEIcOIBFBAkcNAyABLQDIAUH/AXFBAUcNAyABKAK8ASEMIAEoArgBIQ0gAkG6gICAeDYCaCABIA0gDCACQegAahCvGgwDCyABKALEASEIIAEoAsABIQYgAkGUAWogDBDeGyACQQE2AmwgAkGY75sBNgJoIAJCATcCdCACQYoFrUIghkG8p5sBrYQ3A7gBIAIgAkG4AWo2AnAgAkGgAWogAkHoAGoQjRUgAkG0AWogAkGcAWooAgA2AgAgAiACKQKUATcCrAEgBiAIIAJBoAFqEIUVIQwCQCABLQDIAUGiAUcNACABEMcRIQggARCHDiABIAgQ5RELIABBgICAgHg2AgAgACAMNgIECyACQRhqEMsdCyACQcABaiQADwsgBkHAAGohBgwACwvgCwEFfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDQXRqIgRBByAEQSZJGw4mHwABAgMEBQYHCAkKCwwfHw0ODxARHxITFB8fFRYXGBkaGxwfHR8fCyAAKAIMQQR0IQQgACgCCCEAA0AgBEUNHwJAIAAoAgBBAkYNACAAQQxqIAEQyyELIABBEGohACAEQXBqIQQMAAsLIABBBGogARCnBgwdCyAAQSBqIAEQqAwMHAsgAEEEaiABEMshDBsLIABBDGogARDLIQwaCyAAQQRqIAEQyyEgAEEIaiABEMshDBkLIABBOGohBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDgwBAgMEBQYHCAkKCwABCwJAAkAgACgCBA4DAAEMAAsgASAAQQhqELwPDAsLIAEgAEEIahD/CwwKCyABIABBCGoQ1xQMCQsgAEEIaiABEIIcDAgLIABBCGogARCYHQwHCyAAQQRqIAEQyyEMBgsgAEEEaiABENgYDAULIAEgAEEEahDEDwwECyABIABBBGoQxA8MAwsgASAAQQRqEKkaDAILIAEgAEEEahCxDwwBCyABIABBBGoQihULIAQgARDLIQwYCyAAQQhqIAEQghwMFwsgAEEIaiABEJgdDBYLIABBBGogARDLISAAQQhqIAEQyyEgAEEMaiABEMshDBULIABBBGohBAJAIAAtABhBBUcNACAAQRBqIAEQyyELIAQgARC+GCAAKAIoIAEQ2RgMFAsgAEEQaiABEMshAkAgACgCBEGAgICAeEYNACAAQQRqIAEQvhgLIAAoAiAgARDZGAwTCyAAQQRqIAEQhBkMEgsgAEEEaiABEIQZDBELIABBBGogARDLISAAKAIYIAEQ2RggACgCCCABEIQZDBALIAAoAiAiBEUNDiABIAQoAgwgBCgCEBC9GCAALQAoRQ0OIAJBCGogASgCKCABKAIsIAQoAgwgBCgCEBCOFyACIAIoAggiAyACKAIMajYCHCACIAM2AhggAkEYahCIEkUNDiABKAIcIAEoAiAgBCgCEBDgHiEDIAQoAgwhBCABIAMoAgBBIBDzFyABIARBKBDzFwwOCyAAQSBqIAEQzwEMDgsgACgCDCIERQ0NIABBDGogARDLISAEKAIAQR5HDQ0gBC0AKA0NIAEgBEEgaigCABCODgwNCyAAQQRqIAEQyyEMDAsgAEEEaiABEMshDAsLIABBIGoQ1hwMCgsgAEEEaiABELMNDAkLIABBBGogARDREAwICyABIABB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dEEAIQkDQCALIAlqIgdCgICAgMAANwIAIAdBCGpBADYCACAJQQxqIglB9AVHDQALQQAhBCALIAlqIglBADYCACAJQQRqQgQ3AgAgAkE4akHAADYCACACIAIpAnQ3AzAgAiAINgJEIAIgBjYCQCACIAo2AjwgCkEQaiEFIApBDGohA0EAIQcCQANAIAcgBSgCACIJTw0BIAcgCigCHCILTw0FIAIgAygCACAJIAooAhggBGooAgAiCBCoGyACKAIAIglFDQEgAigCQCILIAIoAgQiBksNBiACQTBqIAkgCxDrDyIGQT9xIgkgAigCOCILTw0HAkAgAigCNCAJQQxsaiIJKAIIIgsgCSgCAEcNACAJEO4VCyAJIAtBAWo2AgggCSgCBCALQQN0aiIJIAg2AgQgCSAGNgIAIAdBAWohByAEQQRqIQQMAAsLIAJB2ABqQRBqIAJBMGpBEGopAwA3AwAgAkHYAGpBCGogAkEwakEIaikDADcDACACIAIpAzA3A1gCQAJAIAEtACYiCUECRg0AIAlBAXENAQsgCiAKKAIAIglBAWo2AgAgCUF/TA0BIAEtACVFDQcgCigCEEHBAEkNByAKIAooAgAiCUF/ajYCACAJQQFHDQkMCAsgACACKQNYNwIAIABBADYCLCAAQQA2AhwgACAKNgIYIABBEGogAkHYAGpBEGopAwA3AgAgAEEIaiACQdgAakEIaikDADcCAAwJCwALQbzgmwEQ0xkAC0GMuYABQSVBoLqAARDdFwALIAcgC0H8uIABELMRAAsgCyAGQeC6gAEQjyAACyAJIAtB8LqAARCzEQALIAogCigCACIJQX9qNgIAIAlBAUcNAQsgChD7EQsgAEGAgICAeDYCACACQdgAahDeFyAKIAooAgAiCUF/ajYCACAJQQFHDQAgChD7EQsgAkGAAWokAAvVCgIMfwJ+IwBBgAFrIgEkACAAKAIAIgIoAgAhAyACQQA2AgAgA0EIaigCACECIANBBGooAgAhBCADKAJkIQVBBEEEEOcbIgMgBTYCACABQQE2AmQgASADNgJgIAFBATYCXCABQQA2AnAgAUKAgICAwAA3AmggAUEANgJ8IAFCgICAgMAANwJ0IAQgAmohBkEEIQdBACEIQQAhAwN/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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DQIgBiAJaiALNgIACyAKQQFqIgogBEcNAAsgByAEQRRsaiENIAAtAPsFIg5BAWohDyAOQQJ0QQRqIRAgACgC0AMhESAAKALUAyECIAAoAsQDIQkgACgCyAMhBANAAkACQAJAAkAgBygCDCIDIAVPDQAgByAGIANBAnRqKAIANgIMIAcoAAAiA0UNAwNAIAMgBE8NAiAJIANBCWxqIgMoAAEiCyAFTw0DIAMgBiALQQJ0aigCADYAASADKAAFIgNFDQQMAAsLIAMgBUGMxIABELMRAAsgAyAEQeytgAEQsxEACyALIAVBjMSAARCzEQALAkAgBygCBCIDRQ0AAkACQAJAIAIgA0kNACACIANrIgsgDk0NASARIANBAnRqIQMgECELA0AgAygCACIKIAVPDQMgAyAGIApBAnRqKAIANgIAIANBBGohAyALQXxqIgtFDQQMAAsLIAMgAkHMrYABEKMgAAsgDyALQdytgAEQjyAACyAKIAVBjMSAARCzEQALIAdBFGoiByANRw0ACyAMIAhBBEEEELURIAEoAgggBkEEQQQQtREgAUEwaiQADwsgCiAFQfzDgAEQsxEACyALIAVB7MOAARCzEQALIAUgBUHcw4ABELMRAAtBvOCbARDTGQALAAvYCgINfwF+IwBBwAFrIgMkAAJAAkACQCABLQCAAUEEcUUNACADQQA2AiwgA0KAgICAwAA3AiRBigWtQiCGQYijmwGthCEQIANBmAFqQQxqIQQgA0HAAGpBDGohBSABKALAASEGQQAhBwNAAkACQAJAAkACQCABLQDIASIIQRhHDQAgASgCwAEhCSABEIcOAkACQAJAAkAgAS0AyAENACABEIcOIANBEGogARC/CCADKAIUIQggAygCEEEBcQ0FIAMgCDYCMCABLQDIASIHQQFHDQIgARCHDgwBCyADQZgBaiABQQBBABCfAwJAAkAgAy0ArAFBAkYNACADQeAAakEQaiADQZgBakEQaikDADcDACADQeAAakEIaiADQZgBakEIaikDADcDACADIAMpA5gBNwNgQQhBwAAQ6x8iBw0BDA0LIAMoApgBIQgMBQsgB0EaNgIAAkBBOEUNACAHQQhqIANB4ABqQTj8CgAACyADQQU6AKABIAMgBzYCmAEgA0EYaiABIANBmAFqQQBBARBmIAMoAhwhCCADKAIYQQFxDQQLIAMgCDYCQCABLQDIASEHQQAhCgJAAkACQCABLQCBAUEgcUUNACAHQf8BcUESRw0AIANBCGogARCZBCADKAIMIQoCQCADKAIIQQFxRQ0AIAohCAwCCyABEIcOIAEtAMgBIQcLAkAgCg0AIAdB/wFxDQQLIANBmAFqIAEQ6wQgAygCnAEhCyADKAKYASIMQYCAgIB4Rw0BIAoQ8B8gCyEICyADQcAAahDrHgwECyADKAKgASENIAMgCBC/AyABKAK8ASEOIAMoAgAhDyADQgA3ArABIANBAzoArAEgA0EANgKoASADQgA3ArgBIANCADcCoAEgA0KAgICAwAA3ApgBQQhBwAAQ6x8iB0UNCiAHQgA3AiQgByAONgIgIAcgDzYCHCAHQQU6ABggByAINgIQIAcgDTYCDCAHIAs2AgggByAMNgIEIAdBFzYCACAKEPAfIAQQ7R4gA0GYAWoQsh8gASgCvAEhCwwGCyABKALEASEIIAEoAsABIQogA0E0aiAHEN4bIANBATYCnAEgA0GY75sBNgKYASADQgE3AqQBIAMgEDcDWCADIANB2ABqNgKgASADQcAAaiADQZgBahCNFSAFQQhqIANBNGpBCGooAgA2AgAgBSADKQI0NwIAIAogCCADQcAAahCFFSEIAkAgAS0AyAFBogFHDQAgARDHESEHIAEQhw4gASAHEOURCyADQTBqEOseDAILAkAgCEUNACABKAK8ASELIAghBwwFCyAJIQgMAQsgB0UNAiAIQdgARw0BIAEoAngiB0GAgAhxDQEgB0GAgCBxIQcCQAJAIAINACAHDQAgASgCxAEhByABKALAASEIIANBjoCAgHg2AmAgCCAHIANB4ABqEIUVIQggAS0AyAFBogFGDQEMAgsgBw0CIAEtAIABQQhxDQIgASgCvAEhByADQdqAgIB4NgJgIAYgByADQeAAahCFFSEIIAEtAMgBQaIBRw0BCyABEMcRIQcgARCHDiABIAcQ5RELIABBgICAgHg2AgAgACAINgIEIANBJGoQzB0MBQsgACADKQIkNwIAIABBCGogA0EkakEIaigCADYCAAwECyAAIAMpAiQ3AgAgAEEIaiADQSRqQQhqKAIANgIADAMLAkAgAygCLCIIIAMoAiRHDQAgA0EkahDDFgsgAygCKCAIQQxsaiIKIAs2AgggCiAJNgIEIAogBzYCACADIAhBAWoiBzYCLAwACwsgAEEANgIIIABCgICAgMAANwIACyADQcABaiQADwsAC/wJAQh/IABBAToAHCAAKAJYIQFBACECQQAhAwJAAkACQCAAKAJcIgRBIUkNAEEAIQVBACEGA0ACQCABIAZqIgctAABBwLKZAWotAABFDQAgBiEDDAMLAkAgB0EBai0AAEHAspkBai0AAEUNACAGIQNBASEFDAMLAkAgB0ECai0AAEHAspkBai0AAEUNACAGIQNBAiEFDAMLAkAgB0EDai0AAEHAspkBai0AAEUNACAGIQNBAyEFDAMLAkAgB0EEai0AAEHAspkBai0AAEUNACAGIQNBBCEFDAMLAkAgB0EFai0AAEHAspkBai0AAEUNACAGIQNBBSEFDAMLAkAgB0EGai0AAEHAspkBai0AAEUNACAGIQNBBiEFDAMLAkAgB0EHai0AAEHAspkBai0AAEUNACAGIQNBByEFDAMLAkAgB0EIai0AAEHAspkBai0AAEUNACAGIQNBCCEFDAMLAkAgB0EJai0AAEHAspkBai0AAEUNACAGIQNBCSEFDAMLAkAgB0EKai0AAEHAspkBai0AAEUNACAGIQNBCiEFDAMLAkAgB0ELai0AAEHAspkBai0AAEUNACAGIQNBCyEFDAMLAkAgB0EMai0AAEHAspkBai0AAEUNACAGIQNBDCEFDAMLAkAgB0ENai0AAEHAspkBai0AAEUNACAGIQNBDSEFDAMLAkAgB0EOai0AAEHAspkBai0AAEUNACAGIQNBDiEFDAMLAkAgB0EPai0AAEHAspkBai0AAEUNACAGIQNBDyEFDAMLAkAgB0EQai0AAEHAspkBai0AAEUNACAGIQNBECEFDAMLAkAgB0ERai0AAEHAspkBai0AAEUNACAGIQNBESEFDAMLAkAgB0ESai0AAEHAspkBai0AAEUNACAGIQNBEiEFDAMLAkAgB0ETai0AAEHAspkBai0AAEUNACAGIQNBEyEFDAMLAkAgB0EUai0AAEHAspkBai0AAEUNACAGIQNBFCEFDAMLAkAgB0EVai0AAEHAspkBai0AAEUNACAGIQNBFSEFDAMLAkAgB0EWai0AAEHAspkBai0AAEUNACAGIQNBFiEFDAMLAkAgB0EXai0AAEHAspkBai0AAEUNACAGIQNBFyEFDAML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AgwhByACIAIoAngiBUH//99+cSIGQYCAgAFyIgg2AnggAiAGQYCBgAFyIAhB//5fcSABKAIQIgktAAAbIgY2AnggAkGAAkEAIActAAAbIAZB//1fcXI2AnggA0HoAGogAhDCAiACIAU2AnggAygCbCEGIAMoAmgiBUGAgICAeEcNASAGIQoMAgsgAigCxAEhBiACKALAASEIIANBFGogBRDeGyADQQE2AmwgA0GY75sBNgJoIANCATcCdCADQYoFrUIghkGB2pgBrYQ3AyAgAyADQSBqNgJwIANBOGogA0HoAGoQjRUgA0HMAGogA0EcaigCADYCACADIAMpAhQ3AkQgCCAGIANBOGoQhRUhCiACLQDIAUGiAUcNASACEMcRIQUgAhCHDiACIAUQ5REMAQsgAyADKAJwIgg2AiggAyAGNgIkIAMgBTYCIAJAAkACQCACLQDIASIFQQFHDQAgAhCHDkEAIQoCQCACLQCBAUEgcUUNACACLQDIAUH/AXFBCUcNACADIAJBCRCYBCADKAIEIQogAygCAEEBcQ0CCyADIAo2AjggA0HoAGogAiAJLQAAIActAAAgBiAIEN0YEL8KIAMoAmwhCyADKAJoIgxBgYCAgHhHDQIgA0E4ahCpHyALIQoMAQsgAigCxAEhBiACKALAASEIIANBLGogBRDeGyADQQE2AmwgA0GY75sBNgJoIANCATcCdCADQYoFrUIghkGIo5sBrYQ3A1AgAyADQdAAajYCcCADQThqIANB6ABqEI0VIANBzABqIANBNGooAgA2AgAgAyADKQIsNwJEIAggBiADQThqEIUVIQogAi0AyAFBogFHDQAgAhDHESEFIAIQhw4gAiAFEOURCyADQSBqEMsdDAELIANB2ABqQQhqIANB+ABqKQIANwMAIAMgAykCcDcDWAJAIAxBgICAgHhHDQAgAi8BgAFBgMAAcUUNACAGIAhBBnRqIQgDQCAGIgUgCEYNASAFIAUgCEdBBnRqIQYgBSgCAEEERw0AIAUoAhAhDSAFKAIMIQUgA0GqgYCAeDYCaCACIAUgDSADQegAahCvGgwACwsgA0H8AGogAUEIaigCADYCACADQegAakEIaiADQSBqQQhqKAIANgIAIAMgAykCIDcDaCADIAEpAgA3AnQgBy0AACEFIAktAAAhBiACKAK8ASEIIAEoAhQoAgAhAQJAQQRByAAQ6x8iAg0AAAsgAiADKQNoNwIAIAIgCzYCHCACIAw2AhggAiADKQNYNwIgIAIgBjoARSACIAU6AEQgAiAKNgJAIAIgBDYCPEEAIQUgAkEANgI4IAIgCDYCNCACIAE2AjAgAkEQaiADQegAakEQaikDADcCACACQQhqIANB6ABqQQhqKQMANwIAIAJBKGogA0HYAGpBCGopAwA3AgAgAiEEDAILIAQQ7h8gCiEECyABEMwdQQEhBQsgACAENgIEIAAgBTYCACADQYABaiQAC9AJAgx/AX4jAEHgAGsiAiQAIAJBADYCECACQoCAgIAQNwIIIAEoAhghAyABKAIcIQQgAkEANgI8IAJBADsBOCACIAQ2AjQgAkEANgIwIAJBAToALCACQQo2AiggAiAENgIkIAJBADYCICACIAQ2AhwgAiADNgIYIAJBCjYCFCABKAIgIgVBAmpBBCAFGyEGIAEoAgQhByABKAIIIQgDQCACIAJBFGoQyQkCQAJAAkAgAigCACIBRQ0AIAIoAgQhCSACIAIoAjwiBEEBaiIDNgI8AkACQAJAAkAgBQ0AIAJBCGpB1MWbAUHYxZsBEIoUDAELIAJBADYCSCACQoCAgIAQNwJAIAJBgPyEATYCUCACQqCAgIAONwJUIAIgAkHAAGo2AkwgA0EBIAJBzABqEMcHDQIgBSACKAJIIgpJDQEgAigCRCEDIAIoAkAhCyACQQA2AlQgAkKAgICAEDcCTCACQcwAakEgIAUgCmsQ2A8gAkHMAGogAyADIApqEIoUIAIoAkwhDCACKAJUIQ0gAigCUCEKIAsgA0EBQQEQwBEgAkEIaiAKIAogDWoQihQgDCAKQQFBARDAESACQQhqQeiZmAFB6pmYARCKFAsgAkEIaiABIAEgCWoQihQgAigCECIBIQMCQCACKAIIIAFHDQAgAkEIaiABQQFBAUEBEKYXIAIoAhAhAwsgAigCDCADakEKOgAAIAIgAUEBajYCEAJAIAQgCE8NACAHIARBDGxqIgooAggiAUUNBiACQQA2AlQgAkKAgICAEDcCTAJAAkAgBkUNAEEAIQFBASEDA0AgASEEAkAgASACKAJMRw0AIAJBzABqIAFBAUEBQQEQphcgAigCUCEDIAIoAlQhBAsgAyAEakEgOgAAIAIgAUEBaiIBNgJUIAYgAUcNAAsgCigCCCIBRQ0GIAooAgQiCSABQRhsaiENDAELIAooAgQiCSABQRhsaiENC0EAIQQgBiEBA0ACQAJAIAQgCSgCCCIDQX9qIgxJDQAgBCEMDAELIARBf3MgA2ohBANAIAEhAwJAIAEgAigCTEcNACACQcwAaiABQQFBAUEBEKYXIAIoAlQhAwsgAigCUCADakEgOgAAIAIgAUEBaiIBNgJUIARBf2oiBA0ACyAJKAIIIQMLIAlBGGohC0EAIAkoAhQiBCADayIDIAMgBEsbIgRBASAEQQFLGyIJIQQDQCABIQMCQCABIAIoAkxHDQAgAkHMAGogAUEBQQFBARCmFyACKAJUIQMLIAIoAlAiCiADakHeADoAACACIAFBAWoiATYCVCAEQX9qIgQNAAsgCSAMaiEEIAshCSALIA1GDQYMAAsLIAQgCEH4oIUBELMRAAtBiKGFARCbIAALQfjPmwFBNyACQd8AakGY/IQBQbDQmwEQ6A8ACyAAIAIpAgg3AgAgAEEIaiACQQhqQQhqKAIANgIAIAJB4ABqJAAPCyACKAJQIQoLIAIpAlAhDiACKAJMIgRBgICAgHhGDQAgAkEIaiAOpyIBIAEgDkIgiKdqEIoUIAIoAhAiASEDAkAgAigCCCABRw0AIAJBCGogAUEBQQFBARCmFyACKAIQIQMLIAIoAgwgA2pBCjoAACACIAFBAWo2AhAgBCAKQQFBARDAEQwACwvQCQEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEPsCIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEL0BIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEL0BDwsgACgCKCEADAkLIAEgACgCBBC9ASAAKAIIIAEQ+wIgACgCFCIADQgMCgsgASAAKAIQEL0BIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABC9AQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARD7AiAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgAS0ADCECIAFBAToADCABIAAoAgQQvQEgASACOgAMDAgLIABBCGogARCCBQ8LAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwCCwsgACgCCCABEJ0HCyABIAAoAgwQvQEgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrgkCQCACQTBqKAIAIgNFDQAgASADEL0BCyACQThqIgIgBEcNAAwCCwsgACgCCCABEJ0HCyABIAAoAgwQvQEgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFxRQ0AIAEgACgCCBC9AQwBCyAAKAIIIgIoAggiA0UNACACKAIEIgIgA0E4bGohBANAIAIgARCuCQJAIAJBMGooAgAiA0UNACABIAMQvQELIAJBOGoiAiAERw0ACwsCQCAAKAIYIgJFDQAgASACEL0BCwJAIAAoAhwiAkUNACABIAIQvQELIAAoAgwhAAwCCyABIAAoAgQQvQEgACgCCCEADAELIAEgACgCBBC9ASAAKAIIIQAMAAsLAkAgACgCBCIDQdAAaigCACICRQ0AIANBzABqKAIAIQAgAkEwbCECA0AgACABEPsCIABBMGohACACQVBqIgINAAsLAkACQAJAIAMoAgBBeWoOAgECAAsgAyABEK4JCyADQTBqKAIAIgJFDQAgA0EsaigCACEAIAJBMGwhAgNAIAAgARD7AiAAQTBqIQAgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0AIANB6ABqKAIAIgJFDQAgA0HkAGooAgAhACACQTBsIQIDQCAAIAEQ+wIgAEEwaiEAIAJBUGoiAg0ACwsPCyABIAAoAgQQvQELgQoCB38BfiMAQSBrIgEkAAJAAkACQCAAKAIAIgINACAAKAIQIgBFDQEgAEHkxJsBQQEQ7QUhAgwCCwJAAkACQAJAAkACQAJAAkAgACgCCCIDIAAoAgQiBEkNACAAKAIQIgJFDQEgAkHUtJcBQRAQ7QVFDQEMBwsgACADQQFqIgU2AgggAUEIaiACIANqLQAAIgYQnxUCQCABKAIIIgdFDQAgACgCECIARQ0IIAAgByABKAIMEO0FIQIMCQsgACAAKAIMQQFqIgc2AgwCQCAHQfUDSQ0AAkAgACgCECICRQ0AIAJB5LSXAUEZEO0FDQgLIABBAToABAwGCwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQb9/ag4UAgYOBQ4EDg4ODg4ODg4BAQAAAgMOCwJAIAAoAhAiA0UNAEEBIQIgA0G+l5sBQQEQ7QUNFCAAKAIAIgJFDQggACgCCCEFIAAoAgQhBAsgBSAETw0HIAIgBWotAABBzABHDQcgACAFQQFqNgIIIAFBEGogABDpByABLQAQRQ0GIAEtABEhAwJAIAAoAhAiBEUNAEEBIQIgBEHktJcBQdS0lwEgA0EBcSIHG0EZQRAgBxsQ7QUNFAsgACADOgAEDBALAkAgACgCECIDRQ0AQQEhAiADQbmXmwFBARDtBQ0TCyAGQdAARw0HIAAoAhAiAkUNCCACQZm1lwFBBhDtBQ0QDAgLAkAgACgCECIDRQ0AQQEhAiADQa7EmwFBARDtBQ0SC0EBIQIgABD8Ag0RAkAgBkHBAEcNAAJAIAAoAhAiA0UNACADQZ+1lwFBAhDtBQ0TC0EBIQIgAEEBEJQCDRILIAAoAhAiA0UNDUEBIQIgA0GvxJsBQQEQ7QUNEQwNCwJAIAAoAhAiA0UNAEEBIQIgA0GwupsBQQEQ7QUNEQsgASAAEJoOQQEhAiABKAIAQQFxDRACQCABKAIEQQFHDQAgACgCECIDRQ0NQQEhAiADQeLEmwFBARDtBQ0RCyAAKAIQIgNFDQxBASECIANBs/2cAUEBEO0FDRAMDAsgABC6CA0NDAsLAkAgACgCECICRQ0AIAJBobWXAUEEEO0FDQ0LQQEhAiAAEK8IDQ4gACgCACIDRQ0FIAAoAggiBCAAKAIETw0FIAMgBGotAABBzABHDQUgACAEQQFqNgIIIAFBEGogABDpByABLQAQRQ0HIAEtABEhAwJAIAAoAhAiBEUNAEEBIQIgBEHktJcBQdS0lwEgA0EBcSIHG0EZQRAgBxsQ7QUNDwsgACADOgAEDAsLIAAQ5goNCwwJCyABKQMYIghQDQAgACAIEMgMDQogACgCECIDRQ0AQQEhAiADQaSWmwFBARDtBQ0MCyAGQdIARg0GIAAoAhAiAkUNBiACQZW1lwFBBBDtBQ0JDAYLIAAoAhAiAkUNACACQZW1lwFBBBDtBQ0ICyAAEPwCDQcMBQsgACgCECIDRQ0AIANB1LSXAUEQEO0FDQgLQQAhAiAAQQA6AAQgAEEANgIADAcLIAEpAxgiCFANAgJAIAAoAhAiAkUNACACQaW1lwFBAxDtBQ0FCyAAIAgQyAwNBAwCCyAAIAM2AgggAEEAEPYBDQMMAQsgABD8Ag0CC0EAIQIgACgCAEUNAyAAIAAoAgxBf2o2AgwMAwtBACECIABBADYCAAwCC0EBIQIMAQtBACECCyABQSBqJAAgAguBCQILfwF+IwBBMGsiAiQAIAApAqgBIQ0gAEKAgICAgAE3A6gBIAJBCGpBCGoiAyAAQbABaiIEKAIANgIAQQAhBSAEQQA2AgAgAiANNwMIIABBqAFqIQYCQCABKAIIIgdFDQAgAEHdAWohCCABKAIEIQRBACEJAkACQAJAA0AgCUEBaiEFAkAgCCAEEOIJDQAgBCgCAEEJRg0CIAQQpgUMAwsgBEE4aiEEIAUhCSAHIAVHDQALQQAhCgwCCyAEQQhqENcDCwJAIAUgB0cNAEEBIQoMAQsgBEE4aiEEIAlBf3MgB2ohCUEBIQoDQAJAAkAgCCAEEOIJDQAgCkEBaiEKAkAgBCgCAEEJRg0AIAQQpgUMAgsgBEEIahDXAwwBCyAEIApBSGxqIgUgBCkDADcDACAFQTBqIARBMGopAwA3AwAgBUEoaiAEQShqKQMANwMAIAVBIGogBEEgaikDADcDACAFQRhqIARBGGopAwA3AwAgBUEQaiAEQRBqKQMANwMAIAVBCGogBEEIaikDADcDAAsgBEE4aiEEIAlBf2oiCQ0ACwsgASAHIAprIgk2AggCQCAJDQBBACEFDAELQQAhBSABKAIEIgshBAJAAkADQAJAAkACQCAEKAIAQQlHDQAgBEEIaigCACEIIAAgBBDMASAIQQFHDQEMAgsgACAEEMwBCyAEKAIAQQlHDQAgBEEIaigCAEEBRg0CCyAEQThqIQQgCSAFQQFqIgVHDQALQQAhCgwBCyAEQQhqENcDQQEhCiAFQQFqIgggCUYNAEF/IQxBASEKA0AgCyAIQThsaiEEIAsgCCAMakE4bGohBQNAAkACQAJAIAQoAgBBCUcNACAEQQhqKAIAIQcgACAEEMwBIAdBAUcNAQwCCyAAIAQQzAELIAQoAgBBCUcNACAEQQhqIgcoAgBBAUcNACAHENcDIAxBf2ohDCAKQQFqIQogCEEBaiIIIAlHDQIMAwsgBSAEKQMANwMAIAVBMGogBEEwaikDADcDACAFQShqIARBKGopAwA3AwAgBUEgaiAEQSBqKQMANwMAIAVBGGogBEEYaikDADcDACAFQRBqIARBEGopAwA3AwAgBUEIaiAEQQhqKQMANwMAIARBOGohBCAFQThqIQUgCSAIQQFqIghHDQALCwsgASAJIAprIgU2AggLIAAoAqwBIQQgACgCqAEhCCAGIAIpAwg3AgAgACgCsAEhCSAGQQhqIAMoAgA2AgACQAJAAkAgCUUNACACIAg2AhwgAiAENgIYIAIgBDYCFCACIAQgCUEEdGo2AiAgAkEkaiACQRRqELYIQQAtAMDxnQEaQRwQhQEiBEUNASAEIAIpAiQ3AgAgBEIANwIMIARBEmpCADcBACAEQQhqIAJBJGpBCGooAgA2AgACQCAFIAEoAgBHDQAgAUH855oBEIQXCyABIAVBAWo2AgggASgCBCAFQThsaiIFIAQ2AhQgBUECNgIQIAVBETYCCCAFQQk2AgBBAEEIEL4gDAILIAggBBDRIAwBCwALIAJBMGokAAvbCAISfwF+IwBBwABrIgEkAAJAAkACQCAAKAIMIgJBf0YNAAJAIAIgACgCBCIDIANBAWoiBEEDdiIFQQdsIANBCEkbIgZBAXZJDQACQAJAIAYgAiAGIAJLGyIFQQ5JDQAgBUH+////AUsNA0F/IAVBA3RBCGpBB25Bf2pndkEBaiEFDAELQQRBCEEQIAVBB0kbIAVBA0kbIQULIAFBGGpBDCAFEPYPIAEoAhgiB0UNASABKAIgIQMgAUEQaiAHIAEoAhwQqRwgASgCECIHRQ0CIABBEGohBCAHIANqIQgCQCAFQQhqIgdFDQAgCEH/ASAH/AsACyABQQA2AjAgASAFQX9qIgk2AiggASAINgIkIAFCjICAgIABNwIcIAEgBDYCGCABIAkgBUEDdkEHbCAFQQlJGyIKNgIsIAhBdGohCyAAKAIAIgcpAwBCf4VCgIGChIiQoMCAf4MhEyABQRhqQQxqIQxBACEFAkADQCACRQ0BAkADQCATQgBSDQEgBUEIaiEFIAdBCGoiBykDAEJ/hUKAgYKEiJCgwIB/gyETDAALCyABQQhqIAggCSAAKAIAQQAgE3qnQQN2IAVqIgNrQQxsaiIEQXRqKAIAIg0gBEF4aigCACANG60QtBUgCyABKAIIQXRsaiIEIAAoAgAgA0F0bGpBdGoiAykAADcAACAEQQhqIANBCGooAAA2AAAgAkF/aiECIBNCf3wgE4MhEwwACwsgASAAKAIMIgU2AjAgASAKIAVrNgIsIAAgDEEEEPwXIAEoAigiBUUNAyABQTRqIAEoAhwgASgCICAFQQFqEJEPIAEoAiQgASgCPGsgASgCNCABKAI4EKMeDAMLIAUgBEEHcUEAR2ohByAAKAIAIg0hBQNAAkAgBw0AAkACQCAEQQhJDQAgDSAEaiANKQAANwAADAELIARFDQAgDUEIaiANIAT8CgAACyANQQhqIQ4gDUF0aiEPQQAhBwNAAkACQCAHIgUgBE8NACAFIAUgBElqIQcgDSAFaiIJLQAAQYABRw0CIA8gBUF0bGohECANQQAgBWtBDGxqIghBeGohCiAIQXRqIQwDQCAFIAwoAgAiCCAKKAIAIAgbIgggA3EiC2sgDSADIAitEIwQIhEgC2tzIANxQQhJDQIgDSARaiILLQAAIRIgCyAIQRl2Igg6AAAgDiARQXhqIANxaiAIOgAAIA8gEUF0bGohCAJAIBJB/wFHDQAgCUH/AToAACAOIAVBeGogA3FqQf8BOgAAIAhBCGogEEEIaigAADYAACAIIBApAAA3AAAMBAsgECAIQQMQ/BcMAAsLIAAgBiACazYCCAwGCyAJIAhBGXYiCDoAACAOIAVBeGogA3FqIAg6AAAMAAsLIAUgBSkDACITQn+FQgeIQoGChIiQoMCAAYMgE0L//v379+/fv/8AhHw3AwAgBUEIaiEFIAdBf2ohBwwACwsQ2RkACwALIAFBwABqJABBgYCAgHgLtwkCEH8CfiMAQRBrIgIkAEEKIQMgASgCGCEEIAEoAgQhBSABKAIAIQYgAS0AHCEHIAEoApABIQgCQAJAAkAgASgCCCIJQQpHDQAMAQsCQAJAAkACQAJAAkACQAJAAkACQCAJQX5qIgNBASADQQhJGw4IAAUBAgYGAwQAC0ECIQMgASkDECISQgODQgBSDQggEqciCSAJKAIAIglBAWo2AgAgCUF/Sg0JDAoLQQQhAyABKQMQIhJCA4NCAFINByASpyIJIAkoAgAiCUEBajYCACAJQX9MDQkMCAtBBSEDIAEpAxAiEkIDg0IAUg0GIBKnIgkgCSgCACIJQQFqNgIAIAlBf0wNCAwHCyABKAIMIQkQuB0hCiAJQQRqKAIAIQsgCS0ADCEMIAIgCUEIaigCACIJQQBBBEEEENsMIAIoAgQhDSACKAIAQQFGDQMgAigCCCEDAkAgCUECdCIORQ0AIAMgCyAO/AoAAAsgCiAMOgAMIAogCTYCCCAKIAM2AgQgCiANNgIAQQghAwwGC0EALQDA8Z0BGkEgEIUBIgpFDQYgCiABKAIMEJwBQQkhAwwFCyAJQQFxDQJBACEDIAEpAxAiEkIDg0IAUg0DIBKnIgkgCSgCACIJQQFqNgIAIAlBf0wNBQwECyABKQMQIRIgASgCDCEKIAkhAwwDCyANIAIoAghBvOCbARCqHgALQQAtAMDxnQEaQSAQhQEiCkUNAiAKIAEoAgwQnAFBASEDDAELC0EAIQ1BACEMAkAgASgCIEGAgICAeEYNACABKAI0IQwgASgCKCENCyABKAJoIQsgASgCeCEOIAEtAB0hD0ELIQkCQAJAIAEoApgBIhBBC0cNAAwBC0EKIQkCQAJAIBBBCkcNAAwBC0EIIQkCQAJAAkACQAJAAkACQAJAAkAgEEF+aiIRQQEgEUEISRsOCAAFAQIGBgMEAAtBAiEJIAEpA6ABIhNCA4NCAFINByATpyIRIBEoAgAiEEEBajYCACAQQX9MDQoMCAtBBCEJIAEpA6ABIhNCA4NCAFINBiATpyIRIBEoAgAiEEEBajYCACAQQX9MDQkMBwtBBSEJIAEpA6ABIhNCA4NCAFINBSATpyIRIBEoAgAiEEEBajYCACAQQX9MDQgMBgsgASgCnAEQ0xMhEQwFC0EJIQkgAUGcAWoQpgEhEQwECyAQQQFxDQFBACEJIAEpA6ABIhNCA4NCAFINAiATpyIRIBEoAgAiEEEBajYCACAQQX9MDQUMAwsgASkDoAEhEyABKAKcASERIBAhCQwCC0EBIQkgAUGcAWoQpgEhEQwBCwsgAkEIaiABQagBaiIQQQhqKAIANgIAIAIgECkCADcDAAsgACAINgIwIAAgCzYCLCAAIA42AiggACAMNgIkIAAgDTYCICAAIA86AB0gACAHOgAcIAAgBDYCGCAAIBI3AxAgACAKNgIMIAAgAzYCCCAAIAU2AgQgACAGNgIAIAAgASkDuAE3A1ggACABKQPAATcDYCAAQegAaiABQcgBaigCADYCACAAIBM3A0AgACARNgI8IAAgCTYCOCAAIAIpAwA3AkggAEHQAGogAkEIaigCADYCACACQRBqJAAPCwALjAkCC38CfiMAQSBrIgIkAAJAAkAgACgCCCIDIAFJDQAgAUUNAQJAAkAgAyABayIEIAAoAhgiBSAAKAIUIgZqQQF2Tw0AIAAoAgQhBwJAIAVFDQBBACEGAkAgACgCECIIRQ0AAkAgCEEJaiIJRQ0AIAAoAgxB/wEgCfwLAAsgCCAIQQFqQQN2QQdsIAhBCEkbIQYLIAAgBjYCFCAAQQA2AhgLIAYgBEkNASADIAFGDQMgByABQRRsaiEIIAcgA0EUbGohBiAAQQxqIQoDQAJAIAAoAgwiAyAAKAIQIgcgCCgCECIBcSIEaikAAEKAgYKEiJCgwIB/gyINQgBSDQBBCCEJA0AgBCAJaiEEIAlBCGohCSADIAQgB3EiBGopAABCgIGChIiQoMCAf4MiDVANAAsLAkAgAyANeqdBA3YgBGogB3EiBGosAAAiCUEASA0AIAMgAykDAEKAgYKEiJCgwIB/g3qnQQN2IgRqLQAAIQkLIAAoAhghCyABrSENIAlBAXEhCQJAAkACQAJAIAAoAhQiDEUNACAJIQUMAQtBACEFIAkNAQsgACAMIAVrNgIUIAMgBGogDUIZiKciAToAACADIARBeGogB3FqIQcMAQsgChDcBhoCQCAAKAIMIgMgACgCECIHIAFxIgRqKQAAQoCBgoSIkKDAgH+DIg5CAFINAEEIIQEDQCAEIAFqIQQgAUEIaiEBIAMgBCAHcSIEaikAAEKAgYKEiJCgwIB/gyIOUA0ACwsCQCADIA56p0EDdiAEaiAHcSIEaiwAACIJQQBIDQAgAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiBGotAAAhCQsgAyAEaiANQhmIpyIBOgAAIAAgACgCFCAJQQFxazYCFCADIARBeGogB3FqIQcLIAdBCGogAToAACAAIAAoAhhBAWo2AhggAyAEQQJ0a0F8aiALNgIAIAhBFGoiCCAGRw0ADAQLCyAFRQ0CIAAoAgwiCUEIaiEDIAkpAwBCf4VCgIGChIiQoMCAf4MhDSAAKAIQIQogBSEHIAkhBANAAkAgDUIAUg0AA0AgBEFgaiEEIAMpAwAhDSADQQhqIgghAyANQoCBgoSIkKDAgH+DIg1CgIGChIiQoMCAf1ENAAsgDUKAgYKEiJCgwIB/hSENIAghAwsgB0F/aiEHIA1Cf3wgDYMhDgJAAkAgBCANeqdBAXZBPHFrIgtBfGoiCCgCACIMIAFJDQAgCCAMIAFrNgIADAELQYABIQgCQCAJIAkgC2tBAnUiC2oiDCkAACINIA1CAYaDQoCBgoSIkKDAgH+DeqdBA3YgCSALQXhqIApxaiILKQAAIg0gDUIBhoNCgIGChIiQoMCAf4N5p0EDdmpBB0sNACAAIAZBAWoiBjYCFEH/ASEICyAMIAg6AAAgACAFQX9qIgU2AhggC0EIaiAIOgAACyAOIQ0gB0UNAwwACwtBjKGaAUHFAEHUoZoBEN0XAAsgAkEANgIYIAJBATYCDCACQfTRmwE2AgggAkIENwIQIAJBCGpBlKKaARCFGwALIAJBIGokAAvkCQEFfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4LAAECAwQFBgcICQoACyABIABBCGoQ8QoMCQsgAS0AKCEDIAFBADoAKCABLQB5IQQgAUEAOgB5IAFBLGohBQJAIAAoAigiBigCAEEaRw0AIAIgBikDCCAGQRhqKAIAELoYIAUgAikDACACKAIIENEKCyAGIAEQdyABIAM6ACggASAEOgB5IAAoAghBAkkNCCABQQA6AHkgAUEAOgAoAkAgACgCDCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggBSACKQMAIAIoAggQ0QoLIAAgARB3IAEgAzoAKCABIAQ6AHkMCAsgACgCCEUNByABLQAoIQYgAUEAOgAoIAEtAHkhAyABQQA6AHkCQCAAKAIMIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASAGOgAoIAEgAzoAeQwHCyABLQAoIQYgAUEAOgAoIAEtAHkhAyABQQA6AHkCQCAAKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASAGOgAoIAEgAzoAeQwGCwJAIAAoAgQiACgCACIGQQNHDQAgAEEEaiABENgKDAYLIAEtACghBCABQQA6ACggAS0AeSEFIAFBADoAeQJAIAAoAiAiAygCAEEaRw0AIAIgAykDCCADQRhqKAIAELoYIAFBLGogAikDACACKAIIENEKCyADIAEQdyABIAQ6ACggASAFOgB5IAZBAkkNBSABQQA6AHkgAUEAOgAoAkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBDoAKCABIAU6AHkMBQsgAS0AKCEGIAFBADoAKCABLQB5IQMgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBjoAKCABIAM6AHkMBAsgAS0AKCEGIAFBADoAKCABLQB5IQMgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBjoAKCABIAM6AHkMAwsgAS0AKCEGIAFBADoAKCABLQB5IQMgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBjoAKCABIAM6AHkMAgsgAS0AKCEGIAFBADoAKCABLQB5IQMgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBjoAKCABIAM6AHkMAQsgAS0AKCEGIAFBADoAKCABLQB5IQMgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAiAAKQMIIABBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAAgARB3IAEgBjoAKCABIAM6AHkLIAJBEGokAAvHCQECfwJAAkBBACgC5PCdASIARQ0AIAAoAgRB/////wdPDQFBASEBAkAgAC0ACA0AQQEhASAALQAJDQBBASEBIAAtAAoNAEEBIQEgAC0ACw0AQQEhASAALQAMDQBBASEBIAAtAA0NAEEBIQEgAC0ADg0AQQEhASAALQAPDQBBASEBIAAtABANAEEBIQEgAC0AEQ0AQQEhASAALQASDQBBASEBIAAtABMNAEEBIQEgAC0AFA0AQQEhASAALQAVDQBBASEBIAAtABYNAEEBIQEgAC0AFw0AQQEhASAALQAYDQBBASEBIAAtABkNAEEBIQEgAC0AGg0AQQEhASAALQAbDQBBASEBIAAtABwNAEEBIQEgAC0AHQ0AQQEhASAALQAeDQBBASEBIAAtAB8NAEEBIQEgAC0AIA0AQQEhASAALQAhDQBBASEBIAAtACINAEEBIQEgAC0AIw0AQQEhASAALQAkDQBBASEBIAAtACUNAEEBIQEgAC0AJg0AQQEhASAALQAnDQBBASEBIAAtACgNAEEBIQEgAC0AKQ0AQQEhASAALQAqDQBBASEBIAAtACsNAEEBIQEgAC0ALA0AQQEhASAALQAtDQBBASEBIAAtAC4NAEEBIQEgAC0ALw0AQQEhASAALQAwDQBBASEBIAAtADENAEEBIQEgAC0AMg0AQQEhASAALQAzDQBBASEBIAAtADQNAEEBIQEgAC0ANQ0AQQEhASAALQA2DQBBASEBIAAtADcNAEEBIQEgAC0AOA0AQQEhASAALQA5DQBBASEBIAAtADoNAEEBIQEgAC0AOw0AQQEhASAALQA8DQBBASEBIAAtAD0NAEEBIQEgAC0APg0AQQEhASAALQA/DQBBASEBIAAtAEANAEEBIQEgAC0AQQ0AQQEhASAALQBCDQBBASEBIAAtAEMNAEEBIQEgAC0ARA0AQQEhASAALQBFDQBBASEBIAAtAEYNAEEBIQEgAC0ARw0AQQEhASAALQBIDQBBASEBIAAtAEkNAEEBIQEgAC0ASg0AQQEhASAALQBLDQBBASEBIAAtAEwNAEEBIQEgAC0ATQ0AQQEhASAALQBODQBBASEBIAAtAE8NAEEBIQEgAC0AUA0AQQEhASAALQBRDQBBASEBIAAtAFINAEEBIQEgAC0AUw0AQQEhASAALQBUDQBBASEBIAAtAFUNAEEBIQEgAC0AVg0AQQEhASAALQBXDQBBASEBIAAtAFgNAEEBIQEgAC0AWQ0AQQEhASAALQBaDQBBASEBIAAtAFsNAEEBIQEgAC0AXA0AQQEhASAALQBdDQBBASEBIAAtAF4NAEEBIQEgAC0AXw0AQQEhASAALQBgDQBBASEBIAAtAGENAEEBIQEgAC0AYg0AQQEhASAALQBjDQBBASEBIAAtAGQNAEEBIQEgAC0AZQ0AQQEhASAALQBmDQBBASEBIAAtAGcNAEEBIQEgAC0AaA0AQQEhASAALQBpDQBBASEBIAAtAGoNAEEBIQEgAC0Aaw0AQQEhASAALQBsDQBBASEBIAAtAG0NAEEBIQEgAC0Abg0AQQEhASAALQBvDQAgAC0AcCEBCyABQQFxDwtB4JCbAUHIAEGIkpsBEIwhAAtB1KaaARD5FAAL2AkBB38jAEHwAmsiAiQAAkACQAJAAkACQAJAAkAgAS0AyAEiA0ESRg0AAkAgAw0AIAJByAFqIAEQ/wIgASABKAJ4QQFyNgJ4IAEQhw4CQAJAAkACQAJAIAEtAMgBIgNBHEYNACADQQFHDQELIAJBAToAwQEMAQsgAkHIAmogARCADAJAAkACQAJAAkAgAi0AyAINACABLQDIASIDQbV/aiIEQRlLDQFBASAEdEGBgIIQcUUNAQwCCyACIAIoAswCNgLEAUEBIQMMBgsCQCADQZZ/ag4FAQAAAAUACyADQbR/akH/AXFB1ABLDQELIAEQhw4MAQsCQCADQX5qDgMAAwADCyACQcgCaiABQQAQngECQCACKALIAkEHRw0AIAJByAJqQQRyEN8dDAMLIAJByAJqEOsSCwJAAkACQCABLQDIASIDQX9qDgoCBAQEBAQBBAEBAAsgA0EXRw0DCyACQQE6AMEBDAELIAEQhw4gAS0AyAFBG0cNASACQQE6AMEBC0EAIQRBACEDDAELQQAhAyACQQA6AMEBQQEhBAsgAiADOgDAASABIAJByAFqEPAFAkACQCADRQ0AIAJBwAFqEJMeDAELIAQgA3JBAXFFDQILIAEtAMgBIQMLAkACQAJAIANB/wFxIgRB4wBGDQAgBEHzAEcNASABEKILQf8BcUHjAEYNACABLQDIASIDQf8BcUHjAEcNAQsgAkHIAWogAUEAEMEEIAIoAsgBIgRBgYCAgHhHDQEgAigCzAEhA0EBIQUMBwsgASgCwAEhBiADQf8BcUEURg0CDAULIAJB6ABqQRhqIAJBzAFqIgFBGGooAgA2AgAgAkHoAGpBEGogAUEQaikCADcDACACQegAakEIaiABQQhqKQIANwMAIAIgASkCADcDaEEIQeAAEOsfIgNFDQYgAyAENgIEIANBAjYCAEHYAEUNAyADQQhqIAJB6ABqQdgA/AoAAAwDC0EBIQUgAkHIAWogAUEBEMEEIAIoAsgBIgRBgYCAgHhGDQEgAkEQakEYaiACQcwBaiIBQRhqKAIANgIAIAJBEGpBEGogAUEQaikCADcDACACQRBqQQhqIAFBCGopAgA3AwAgAiABKQIANwMQQQhB4AAQ6x8iA0UNBSADIAQ2AgQgA0ECNgIAQdgARQ0CIANBCGogAkEQakHYAPwKAAAMAgsgARCHDgwCCyACKALMASEDDAILQQAhBQwBCyACQQhqIAEQvghBASEFIAIoAgwhAyACKAIIQQFxDQBBACEFIAEtAMgBQRRHDQBBBEEEEOsfIgdFDQEgByADNgIAIAIgBzYCwAIgAkEBNgK8AkEEIQhBASEEAkACQANAIAIgBDYCxAIgAS0AyAFBFEcNASABEIcOIAIgARC+CCACKAIEIQMgAigCAEEBcQ0CAkAgBCACKAK8AkcNACACQbwCakG4qJsBELEWIAIoAsACIQcLIAcgCGogAzYCACAIQQRqIQggBEEBaiEEDAALCyABKAK8ASEBQQhB4AAQ6x8iA0UNAiADQgo3AwAgAyACKQK8AjcCCCADIAE2AhggAyAGNgIUIANBEGogAkG8AmpBCGooAgA2AgAMAQsgAkG8AmoQrB9BASEFCyAAIAM2AgQgACAFNgIAIAJB8AJqJAAPCwAL2wgCC38BfiMAQTBrIgckAAJAAkACQAJAAkACQAJAAkAgBEEQSQ0AIAZBf2ohCCABQRhqIQlBASEKIAEoAgQhCyABKAIAQQFHDQECQCAGDQBBASEKDAMLIAEoAhAiDCAGIAwgBksbIQ0gASkDCCESQQAhCiAMQX9qIAZPIQ5BACEPA0AgDyAGaiAESw0HAkAgAhDiF0UNACAHQRhqIA8gAyAEQbDbggEQ8RogB0EQaiACIAkgBygCGCAHKAIcEPkPIAcoAhBBAXFFDQggBygCFCAPaiIPIAZqIARLDQgLIAggD2oiASAETw0FIAYhEAJAIBIgAyABajEAAIhCAYNQDQAgAyAPaiEQIAwhAQJAA0ACQCANIAFHDQAgDCEBAkACQANAIAFFDQ0gAUF/aiEBIA4NAiABIA9qIhAgBE8NASAFIAFqLQAAIAMgEGotAABGDQALIAshEAwFCyAQIARB8NuCARCzEQALIAEgBkHg24IBELMRAAsgDyABaiAETw0BAkAgBSABai0AACAQIAFqLQAARw0AIAFBAWohAQwBCwsgDyAMayABakEBaiEPDAILIAQgDCAPaiIBIAQgAUsbIARB0NuCARCzEQALIBAgD2ohDwwACwsgB0EIaiABKAIoIAEoAiwgAyAEIAUgBhC8DCAHKAIMIQ8gBygCCCEKDAYLIAYNAQtBACEPDAQLIAYgC2shESABKQMIIRIgASgCECEMQQAhCkEAIQ8CQAJAAkADQCAPIAZqIARLDQMCQAJAIAIQ4hcNACAKIAwgCiAMSxshDgwBCyAHQShqIA8gAyAEQcDaggEQ8RogB0EgaiACIAkgBygCKCAHKAIsEPkPIAcoAiBBAXFFDQRBACEKIAwhDiAHKAIkIA9qIg8gBmogBEsNCAsCQCAIIA9qIgEgBEkNACABIARB0NqCARCzEQALAkACQCASIAMgAWoxAACIQgGDUA0AIA4gBiAOIAZLGyENIAMgD2ohECAOIQECQAJAAkADQAJAIA0gAUcNACAMIQEMAgsgDyABaiAETw0FIAUgAWotAAAgECABai0AAEcNAiABQQFqIQEMAAsLAkACQANAIAEgCk0NAiABIAZPDQggDyABaiINIARPDQECQCAFIAFqLQAAIBAgAWotAABHDQAgAUF/aiEBDAELCyARIQogCyEBDAMLIA0gBEGA24IBELMRAAsgCiAGTw0GAkAgDyAKaiIQIARPDQAgBSAKaiENIBEhCiALIQEgDS0AACADIBBqLQAARg0KDAILIBAgBEGg24IBELMRAAsgASAMa0EBaiEBQQAhCgsgASAPaiEPDAILIA8gBmohD0EAIQoMAQsLIAQgDiAPaiIBIAQgAUsbIARB4NqCARCzEQALIAEgBkHw2oIBELMRAAsgCiAGQZDbggEQsxEAC0EAIQoMAwsgASAEQcDbggEQsxEAC0EBIQoMAQsLIAAgCjYCACAAIA82AgQgB0EwaiQAC+oJAgx/An4jAEHAAWsiAiQAAkACQAJAAkACQCABLQAUQQJGDQBBACEDIAJBHGpBACkDmPucASIONwIAIAJBLGogDjcCACACQQA2AVYgAkEANgIQIAJCgICAgIABNwIIIAJCgICAgIABNwJEIAJCgICAgMAANwI0IAJBADYCTCACQQA6AEAgAkEANgI8IAIgAC8BeDsBVCACIAAoAnQ2AlAgAkEAKQOQ+5wBIg43AhQgAiAONwIkIAIgAC0AfjoAWiAAQSxqIQQCQANAIANB1ABGDQEgACADakEsaiIFKAIAIQYgBSACQQhqIANqIgcoAgA2AgAgByAGNgIAIANBBGohAwwACwsgAkGwAWogASkDACIOIAEoAhAiCBC6GCAEIAIpA7ABIAIoArgBQQEQygtBACEDIAJB8ABqQQApA5j7nAEiDzcCACACQYABaiAPNwIAIAJBADYCZCACQoCAgICAATcCXCACQQA2ApABIAJBADoAlAEgAkEANgKgASACQQA2AaoBIAJCgICAgMAANwKIASACQoCAgICAATcCmAEgAiAALwF4OwGoASACIAAoAnQ2AqQBIAJBACkDkPucASIPNwJoIAIgDzcCeCACIAAtAH46AK4BAkADQCADQdQARg0BIAAgA2pBLGoiBSgCACEGIAUgAkHcAGogA2oiBygCADYCACAHIAY2AgAgA0EEaiEDDAALCyABKAIYIgkoAggiBUUNAyAJKAIEIQMgAC0AfkEBcQ0BIAVBBnQhBQNAAkAgAygCAEF+ag4DBAAEAAsgA0HAAGohAyAFQUBqIgUNAAwECwsgACABKAIYEN4EDAMLIAVBBnQhBQNAIAMoAgBBf2pBBEkNASADQcAAaiEDIAVBQGoiBQ0ADAILCyACQbABaiAOIAgQuhggBCACKQOwASACKAK4ARDRCgsCQCAJKAIUIgNFDQAgCSgCECEFIANBDGwhBiAALQB5IQcgAC0AKCEBA0AgBSgCACEDIABBADoAeSAAQQA6ACgCQCADKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAELoYIAQgAikDsAEgAigCuAEQ0QoLIAMgABB3IAAgAToAKCAAIAc6AHkgBUEMaiEFIAZBdGoiBg0ACwsCQCAJKAIIIgNFDQAgCSgCBCIBIANBBnRqIQogAUHAAGohAyAALQB6IQsgAC0AeSEMIAAtACghDQNAIAMhByAAQQE6ACggAEEAOgB5IAAgAC0Ae0EBczoAegJAIAEoAjgiA0UNACABKAI0IQUgA0EMbCEGA0AgBSgCACEDIABBADoAeSAAQQA6ACgCQCADKAIAQRpHDQAgAkGwAWogAykDCCADQRhqKAIAELoYIAQgAikDsAEgAigCuAEQ0QoLIAVBDGohBSADIAAQdyAAQQE6ACggAEEAOgB5IAZBdGoiBg0ACwsgAEEBOgB5IAEgABDnBCAAIAw6AHkgACALOgB6IAAgDToAKCAHIAcgCkciBUEGdGohAyAHIQEgBQ0ACwsCQCAJKAIYQYCAgIB4Rg0AIAlBIGooAgAiBUUNACAJQRxqKAIAIQMgBUEwbCEFA0AgAEEAOgB9IAMgABBrIANBMGohAyAFQVBqIgUNAAsLIAQgAkHcAGoQkwMgBCACQQhqEJMDIAAgDiAIEIwPCyACQcABaiQAC/gIAgt/AX4jAEHgAGsiAyQAAkACQAJAAkACQAJAAkAgASgCACIEKAJADQBBACEFIARBADYCTCAEQX82AkAgA0EIaiAEQdgAaigCADYCACADIAQpAlA3AwAgBEHQAGohBiAEQcQAaiEHIAJB/wFxQQJ0QdS7nQFqKAIAIQgDQAJAIAVFDQAgARDMGw0AIANBJGogBkEIaigCACIJNgIAIANBEGpBCGogCTYCACADIAYpAgAiDjcCHCADIA43AxAgA0EKNgIsIAAgASgCBCABKAIIIANBEGogA0EsahDRDAwICwJAIAEQvgkiCUFQakEKSQ0AIAlBv39qQQZJDQAgCUGff2pBBkkNACADQRBqIAEQrwwgA0EJNgIsIAAgASgCBCABKAIIIANBEGogA0EsahDRDAwICwJAAkAgARC+CSIJQYABSSIKRQ0AQQEhCwwBCwJAIAlBgBBPDQBBAiELDAELQQNBBCAJQYCABEkbIQsLIAQoAkwiDCENAkAgCyAHKAIAIAxrTQ0AIAcgDCALQQFBARCmFyAEKAJMIQ0LIAQoAkggDWohDQJAAkACQCAKDQAgCUGAEEkNAQJAIAlBgIAESQ0AIA0gCUE/cUGAAXI6AAMgDSAJQRJ2QfABcjoAACANIAlBBnZBP3FBgAFyOgACIA0gCUEMdkE/cUGAAXI6AAEMAwsgDSAJQT9xQYABcjoAAiANIAlBDHZB4AFyOgAAIA0gCUEGdkE/cUGAAXI6AAEMAgsgDSAJOgAADAELIA0gCUE/cUGAAXI6AAEgDSAJQQZ2QcABcjoAAAsgBCALIAxqNgJMIAggBUEBaiIFRw0ACyABEMwbGiAEKAJIIQkgBCgCTCIFDgIFAgELQbCKhQEQ+BQACwJAAkAgCS0AAEErRw0AIAVBf2ohCyAJQQFqIQkgBUEKTw0BDAMLIAUhCyAFQQlJDQILQQAhBQNAIAVB/////wBLDQQgCS0AACIMQb9/akFfcUEKaiAMQVBqIAxBOUsbIgxBEE8NBCAJQQFqIQkgDCAFQQR0ciEFIAtBf2oiCw0ADAMLC0EBIQsgCS0AAEFVag4DAgACAAtBACEFA0AgCS0AACIMQb9/akFfcUEKaiAMQVBqIAxBOUsbIgxBD0sNAiAJQQFqIQkgDCAFQQR0ciEFIAtBf2oiCw0ACwsgBUGAsANzQYCAvH9qQYCQvH9JDQAgA0HIAGpBCGoiCSADQQhqKAIANgIAIANB3ABqIAZBCGooAgA2AgAgACAFNgIEIAAgAykDACIONwIIIAAgAjoAISAAQQQ6ACAgAyAGKQIANwJUIABBEGogCSkDADcCACAAQRhqIANByABqQRBqKQMANwIAIAMgDjcDSCAAQSI2AgAMAQsgA0EQakEIaiADQQhqKAIANgIAIANBJGogBkEIaigCADYCACADIAMpAwA3AxAgAyAGKQIANwIcIANBCDYCLCAAIAEoAgQgASgCCCADQRBqIANBLGoQ0QwLIAQgBCgCQEEBajYCQCADQeAAaiQAC/gIAgp/AX4jAEHAAGsiAyQAIAEoAhAhBCADQThqIAIgASgCDCIFQQAQlQICQAJAIAMtADhBBEYNACADKQM4Ig1C/wGDQgRRDQAgACANNwIADAELAkACQAJAIAVFDQAgA0E4aiACIAUQtBogAy0AOEEERg0AIAMpAzgiDUL/AYNCBFINAQsgA0EANgIoIANBOGogAiADQShqQa7EmwFBARC4DCADLQA4QQRGDQEgAykDOCINQv8Bg0IEUQ0BIAAgDTcCAAwCCyAAIA03AgAMAQsgASgCBCIGIAEoAggiB0EobGpBWGohCEGQghAhCQJAIAdFDQAgCEUNAEGQgtAAQZCCECAIKAIAQQdGGyEJCyADQThqIAIgBSAHIAkgBxDWFwJAAkACQCADLQA4QQVGDQAgAykDOCENDAELIANBOGoQhB8CQCAHRQ0AIANBAToANiADQSBqIAYQjBUgA0EAOgA3IAchCkEAIQtBACEMA0ACQAJAAkAgCkUNACADQRhqIAYQjBUgA0E4aiACIAQgCSALIAwgA0E3aiADQTZqEKEFAkAgAy0AOEEERg0AIAMpAzgiDUL/AYNCBFINBgsCQCAGKAIAQQdGDQAgA0E4aiAGIAIQqAYgAy0AOEEERg0AIAMpAzgiDUL/AYNCBFINBgsgAy0ANg0BIANBAToANgwCCwJAIAhFDQAgAyAIEIwVCyADQThqIAIgBSAEIAkgCyAMELkCIAMtADhBBEYNAyADKQM4Ig1C/wGDQgRSDQQMAwsgAigCVEUNACADQRBqIAYQjBUgA0E4aiACIAMoAhRBABDUAyADLQA4QQRGDQAgAykDOCINQv8Bg0IEUg0DCwJAIAMtADdFDQAgAiACKAI4QX9qNgI4IANBADoANwsgCkF/aiEKIANBCGogBhCMFSAGQShqIQZBASELIAMoAgwhDAwACwsgA0E4aiACIAQgB0UgCRDAECADLQA4QQRGDQEgAykDOCINQv8Bg0IEUQ0BCyANQv8Bg0IEUQ0AIAAgDTcCAAwBCyADQThqIAIgA0EoakGvxJsBQQEQuAwCQCADLQA4QQRGDQAgAykDOCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAIAEtABhFDQAgA0E4aiACIANBKGpB5MSbAUEBELgMIAMtADhBBEYNACADKQM4Ig1C/wGDQgRRDQAgACANNwIADAELAkAgASgCFEUNACADQThqIAIgA0EoakGhxJsBQQEQuAwCQCADLQA4QQRGDQAgAykDOCINQv8Bg0IEUQ0AIAAgDTcCAAwCCyADQThqIAIQ4g4CQCADLQA4QQRGDQAgAykDOCINQv8Bg0IEUQ0AIAAgDTcCAAwCCyADQThqIAFBFGogAhCgDyADLQA4QQRGDQAgAykDOCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAAkAgBEUNACADQThqIAIgBBC0GiADLQA4QQRGDQAgAykDOCINQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACANNwIACyADQcAAaiQAC44JARF/IwBBMGsiBCQAAkACQCADRQ0AIAIgA0EMbGohBSABQfwDaiEGIAFBIGohByABQeQDaiEIIAFBtANqIQlBACEKA0AgBCAKIgs2AhACQCACQQhqKAIAIgxB/v///wdNDQAgACAMNgIIIAAgCzYCBCAAQQI2AgAMAwsgAkEEaigCACENIAEgDCABKAL8BSIDIAwgA0kbNgL8BSABIAwgASgCgAYiAyAMIANLGzYCgAYgBCABKALsAyIDNgIUAkACQAJAIAsgA0cNAAJAIAsgCCgCAEcNACAIEIAWCyABKALoAyALQQJ0aiAMNgIAIAEgC0EBaiIKNgLsAyABKAKwAy0ABQ0BDAILIARCADcCJCAEQoGAgIDAADcCHCAEQfzjgwE2AhhBACAEQRBqIARBFGogBEEYakGE5IMBEJkZAAsgByANIAwQ7AMLIAEoAowGIQMCQAJAIAxFDQAgDSAMaiEOQQAhD0EAIRADQCADIREgDS0AACESAkACQCAPQQFxRQ0AQQEhDyABKAKwAy0ABEEBRg0EDAELAkAgESABKAK8AyIDTw0AIAEoArgDIBFBFGxqQQhqKAIAIgxBAEcgASgCsAMtAARBAUciA3EhDyADDQEgDEUNAQwECyARIANBpOSDARCzEQALIAEgEiASEJ4NAkAgASgCsAMtAAZFDQAgASASEOgYIgMgAxCeDQsCQAJAAkACQCARIAEoArwDIgNPDQACQAJAAkAgASgCuAMgEUEUbGooAgQiA0UNACADIAYgEmotAABqIgMgASgC1AMiDE8NBCABKALQAyADQQJ0aiEDDAELIARBCGogCSAREJwZIAQoAgwhAyAEKAIIIQwDQCADRQ0CIAMgDCgCFCITTw0FIAwoAhAgA0EJbGoiEygABSEDIBIgEy0AACIUSw0ACyASIBRHDQEgE0EBaiEDCyADKAAAIgNBAUcNBAsgBEEYaiAJIBAQrg4gBCgCHCEDAkAgBCgCGCIMQQNGDQAgACAEKQMgNwMIIABBEGogBEEYakEQaikDADcDACAAIAM2AgQgACAMNgIADAoLIARBGGogCSARIBIgAxDvBQJAIAQoAhgiDEEDRg0AIAAgBCkCHDcCBCAAQRRqIARBGGpBFGooAgA2AgAgAEEMaiAEQRhqQQxqKQIANwIAIAAgDDYCAAwKCyABKAKwAy0ABkEBRw0DIARBGGogCSARIBIQ6BggAxDvBSAEKAIYIgxBA0YNAyAAIAQpAhw3AgQgAEEUaiAEQRhqQRRqKAIANgIAIABBDGogBEEYakEMaikCADcCACAAIAw2AgAMCQsgESADQazjgwEQsxEACyADIAxBvOODARCzEQALIAMgE0GM44MBELMRAAsgEEEBaiEQIA1BAWoiDSAORw0ACwsgBEEYaiAJIAMgCxD7CiAEKAIYIgNBA0YNACAAIAQpAhw3AgQgAEEUaiAEQRhqQRRqKAIANgIAIABBDGogBEEYakEMaikCADcCACAAIAM2AgAMAwsgAkEMaiICIAVHDQALCyAAQQM2AgALIARBMGokAAvjCAIVfwR+IwBBMGsiAiQAAkACQAJAAkAgAC0A/wEiA0H/AUYNACABKAIAIgRBrcqEAUEMIAEoAgQiBSgCDCIGEQwARQ0BDAILIAEoAgBB4MqEAUEZIAEoAgQoAgwRDAAhBwwCCyADQQJqIQggA0EQdCIBQYGABGohCSABQYCABGohCkEAIQtBACEBA0AgCCEMIAohAyAJIQ0CQAJAAkACQAJAIAFBAWoiDiAIRg0AAkAgASAISQ0AQQIhDUEAIQMgASEMDAELIAFBgAJPDQEgDiEMIAFBCHQiAyENCyANQf8BcSADciIBIA9BgH5xQQJyIAFB/wFxQQJHIgEbIg9B/wFxQQJGDQEgCyAQIAEbIhANAgwDC0HUpJsBQSsgAkEYakH46IMBQfzKhAEQ6A8ACyACQQA2AiggAkEBNgIcIAJB6L+EATYCGCACQgQ3AiAgBCAFIAJBGGoQsR4hBwwECyAEQdOOmAFBAiAGEQwADQILIAJBAjYCHCACQcDKhAE2AhggAkIBNwIkIAJBKjYCDEEBIQcgAiAPQRB2IA9BCHZB/wFxIg4gD0EBcRs2AgQgAiACQQhqNgIgIAIgAkEEajYCCCAEIAUgAkEYahDOBQ0CIAsgAWohC0GBgIAIQQIgD0EBcSIRGyESIBFBGHQhEyAXQoB+g0IChCEYQQAhFANAIBRBgAIgFEGAAksbIQ0gFCEDAkACQAJAAkACQAJAAkACQANAAkAgDSADIgFHDQBBgQIhAyATIRUgEiEWIBRBgQJJDQIMAwsgAUEBaiEDIAAgAWotAAAgDkcNACARDQALIAFBCHQiFSEWCyAWQQNxIg1BAkcNASADIQ0LIBhCgH6DQgKEIRcgGEIgiKchAQwBCyAVQQh2IhStIRcgGEL/AYNCAlENASAYQiCIpyEBIBdCKIYgDa0iGUIghoQhGgJAIBZBAXEiDQ0AIBhCMIinIBhCKIinQf8BcSABQQFxG0EBaiAVQRB2IBRB/wFxIA0bRw0AIBogGEL/////D4OEIRggAyEUDAYLIBogF0IIhoQgGYQhFyADIQ0LIBhC/wGDQgJRDQEgAiAYpyIDNgIAIAIgATYCBCADQf8BcSABQf8BcUcNAgJAAkAgAUEBcUUNACABIANzQYCABEkNAQwECyAYQgiIp0H/AXEgAUEIdkH/AXFHDQMLIAJBATYCHCACQZjvmwE2AhggAkIBNwIkIAJBggE2AgwgAiACQQhqNgIgIAIgAjYCCCAEIAUgAkEYahDOBQ0HDAMLIBdCKIYgDa0iGEIghoQgF0IIhoQgGIQhGCADIRQMAwtBASEHIAwhASAEQa/EmwFBASAGEQwARQ0DDAULIAJBAjYCHCACQdDKhAE2AhggAkICNwIkIAJBggE2AhQgAkGCATYCDCACIAJBCGo2AiAgAiACQQRqNgIQIAIgAjYCCCAEIAUgAkEYahDOBQ0ECyAXIRggDSEUDAALCwtBASEHCyACQTBqJAAgBwuJCQIKfwF+IwBBwABrIgMkACADQRhqIAIgASgCGCIEKAIwQQAQlQICQAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELAkACQAJAAkAgBCgCMCIFRQ0AIANBGGogAiAFELQaIAMtABhBBEYNACADKQMYIg1C/wGDQgRSDQELAkACQCABLQAUIgZBAkcNAEEAIQUMAQsgAyABEP4RIAMoAgQhByADKAIAIQULIANBATYCGCADIAQpAjA3AhwgAigCSEUNAiADQQhqIAIgBSAHQQJBASADQRhqEM0IIAMtAAhBBEYNASADKQMIIg1C/wGDQgRRDQEgACANNwIADAMLIAAgDTcCAAwCCyACKAJIRQ0AIANBADYCECADQoCAgIDAADcCCCAEKAIIQQZ0IQUgBCgCBCEHIAMgA0EIajYCGAJAA0AgBUUNASAFQUBqIQUgByADQRhqEJQKIAdBwABqIQcMAAsLIAMoAhAhByADKAIMIQUgAyADKAIINgIgIAMgBTYCGCADIAUgB0EMbCIHaiIINgIkA0ACQAJAIAdFDQACQCAFKAIAIglBgICAgHhGDQAgBUEMaiEKIAVBBGoiCygCACEFIAIoAkhFDQIgA0E4aiACIAspAgAiDaciCyANQiCIpyIMIAsgDEEBELsGIAMtADhBBEYNAiADKQM4Ig1C/wGDQgRRDQIgACANNwIAIAMgCjYCHCAJIAUQlyIgA0EYahDlFAwFCyAFQQxqIQgLIAMgCDYCHCADQRhqEOUUDAILIAkgBRCXIiAHQXRqIQcgCiEFDAALCwJAAkAgBC0ARQ0AIANBADYCGCADQQhqIAIgA0EYakHpypsBQQgQuQwgAy0ACEEERg0BIAMpAwgiDUL/AYNCBFENASAAIA03AgAMAgsgA0EANgIsIANBGGogAiADQSxqQZK4mwFBBRC5DAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAILIANBGGogAhDiDgJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAILIANBGGogAiADQSxqQenKmwFBCBC5DCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAIAQtAERFDQAgA0EANgIYIANBCGogAiADQRhqQbmXmwFBARC4DCADLQAIQQRGDQAgAykDCCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAIAZBAkYNACADQRhqIAIQ4g4CQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwCCyADQRhqIAEgAhCyEyADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCyADQRhqIAIgBBCXBQJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELAkAgAigCSEUNACADQRhqIAIQhxEgAy0AGEEERg0AIAMpAxgiDUL/AYNCBFENACAAIA03AgAMAQsgAEEEOgAACyADQcAAaiQAC9QJAwh/An4BfCMAQYABayICJAAgASABKAJ4IgNBgICABHI2AnggASgCwAEhBAJAAkACQAJAAkACQAJAAkACQCABLQDIASIFQbV/aiIGQR9LDQBBASAGdEGBgIKQeHENAQsCQAJAAkACQAJAIAVBQGoOAwABAgQLIAJB6ABqIAEQrA0gAikDeCIKQoCAgIBwgyELIAIrA3AhDCACKAJsIQYgAigCaCEHIAqnIQhBASEJDAkLIAEoAsQBIQUgARCGESEMIAEQhw4gAkEYaiABIAQgBRCqFyABKAK8ASEGIAIoAhggAigCHBD1FSIKQoCAgIBwgyELIAqnIQhBAiEJDAELIAEoAsQBIQUgARDJESEIIAEQhw4gAkEgaiABIAQgBRCqFyABKAK8ASEGIAIoAiAgAigCJBD1Fb8hDEEEIQlCACELCyAEIQcMBgsgBUG0f2pB/wFxQdUASQ0AIAVBBEcNAiABEIcOIAEoAsABIQkgAkEQaiABQcAAEI4VIAIoAhQhBSACKAIQQQFxRQ0BIABBBTYCACAAIAU2AgQMBwsgBSABEIgLIQsgARCHDiALpyEHIAtCIIinIQYgATUCvAFCIIYgBK2EvyEMQQAhCUIAIQsMBAsgAiAFNgIsIAEtAMgBIQYgAS0AgQFBIHFFDQIgBkH/AXFBB0cNAkEEQQQQ6x8iCEUNASAIIAU2AgAgAiAINgI0IAJBATYCMEEEIQZBASEFA0AgAiAFNgI4AkACQCABLQDIAUEHRw0AIAEQhw4gAkEIaiABQcAAEI4VIAIoAgwhByACKAIIQQFxRQ0BIABBBTYCACAAIAc2AgQgAkEwahDTHQwICyABKAK8ASEFIAJBlYGAgHg2AmggASAJIAUgAkHoAGoQrxogASgCvAEhBkEIQcAAEOsfIgVFDQMgBUEZNgIAIAUgAikCMDcCBCAFIAY2AhQgBSAJNgIQIAVBDGogAkEwakEIaigCADYCACACIAU2AiwgAS0AyAEhBgwECwJAIAUgAigCMEcNACACQTBqQYywmwEQsRYgAigCNCEICyAIIAZqIAc2AgAgBkEEaiEGIAVBAWohBQwACwsgAkHoAGpBBHIgBRDeGyACQcUANgJ8IAJBnLCbATYCeCACQbCAgIB4NgJoIAEoAsABIAEoAsQBIAJB6ABqEIUVIQUCQCABLQDIAUGiAUcNACABEMcRIQQgARCHDiABIAQQ5RELIABBBTYCACAAIAU2AgQMBAsACwJAIAZB/wFxQQVHDQAgARCHDiABKAK8ASEGQQMhCUIAIQsgBCEHDAILIAEoAsQBIQUgASgCwAEhBCACQTxqIAYQ3hsgAkEBNgJsIAJBmO+bATYCaCACQgE3AnQgAkGKBa1CIIZBi6ObAa2ENwNgIAIgAkHgAGo2AnAgAkHIAGogAkHoAGoQjRUgAkHcAGogAkHEAGooAgA2AgAgAiACKQI8NwJUIAQgBSACQcgAahCFFSEFAkAgAS0AyAFBogFHDQAgARDHESEEIAEQhw4gASAEEOURCyAAQQU2AgAgACAFNgIEIAJBLGoQ6x4MAgsLIAAgDDkDECAAIAY2AgwgACAHNgIIIAAgBTYCBCAAIAk2AgAgACALIAithDcDGAsgASADNgJ4IAJBgAFqJAAL2wgCD38BfiMAQcAAayIBJAACQAJAAkAgACgCDCICQX9GDQACQCACIAAoAgQiAyADQQFqIgRBA3YiBUEHbCADQQhJGyIGQQF2SQ0AAkACQCAGIAIgBiACSxsiBkEHSQ0AIAZB/v///wFLDQNBfyAGQQN0QQhqQQduQX9qZ3ZBAWohBwwBC0EEQQggBkEDSRshBwsgAUEMakEMQQggBxCUDiABKAIMIgZFDQEgASgCFCEFIAYgASgCEBDtHSIGRQ0CIABBEGohCCAGIAVqIQUCQCAHQQhqIgZFDQAgBUH/ASAG/AsACyABIAdBf2oiAzYCHCABIAU2AhggAUKMgICAgAE3AhAgASAINgIMIAAoAgAiCSkDACEQIAEgCTYCOCABIAI2AjQgAUEANgIwIAEgEEJ/hUKAgYKEiJCgwIB/gzcDKCAFQXRqIQogBUEIaiELIAdBA3ZBB2whDCAJQXRqIQ0gAUEYaiEOIAIhCAJAA0AgCEUNAQJAA0AgASABQShqEPMVIAEoAgBBAXENASABIAEoAjgiBkEIajYCOCABIAEoAjBBCGo2AjAgASAGKQMIQn+FQoCBgoSIkKDAgH+DNwMoDAALCyABKAIEIQYgASABKAI0QX9qIgg2AjQgBSAFIAMgCSAGIAEoAjBqIg8Q4h0iEBCTECIGaiAQQhmIpyIEOgAAIAsgAyAGQXhqcWogBDoAACAKIAZBdGxqIgZBCGogDSAPQXRsaiIPQQhqKAAANgAAIAYgDykAADcAAAwACwsgASACNgIkIAEgAyAMIAdBCUkbIAJrNgIgIAAgDkEEEPUXIAEoAhwiBkUNAyABKAIYIAYgASgCECABKAIUEPQVDAMLIAUgBEEHcUEAR2ohBSAAKAIAIgghBgJAA0AgBUUNASAGIAYpAwAiEEJ/hUIHiEKBgoSIkKDAgAGDIBBC//79+/fv37//AIR8NwMAIAZBCGohBiAFQX9qIQUMAAsLAkACQCAEQQhJDQAgCCAEaiAIKQAANwAADAELIARFDQAgCEEIaiAIIAT8CgAACyAIQQhqIQcgCEF0aiEMQQAhBQNAAkACQCAEIAUiBkYNACAGQQFqIQUgCCAGaiIJLQAAQYABRw0CIAwgBkF0bGohDgNAIAYgAyAIIAYQ4h0iEKdxIgprIAggAyAQEJMQIg8gCmtzIANxQQhJDQIgCCAPaiIKLQAAIQsgCiAQQhmIpyINOgAAIAcgAyAPQXhqcWogDToAACAMIA9BdGxqIQ8CQCALQf8BRg0AIA4gD0EDEPUXIAAoAgQhAwwBCwsgCUH/AToAACAHIAAoAgQiAyAGQXhqcWpB/wE6AAAgD0EIaiAOQQhqKAAANgAAIA8gDikAADcAAAwCCyAAIAMgA0EBakEDdkEHbCADQQhJGyACazYCCAwECyAJIBBCGYinIg86AAAgByADIAZBeGpxaiAPOgAADAALCxDbGQsACyABQcAAaiQAQYGAgIB4C4YJARF/IwBBMGsiBCQAIAFB/ANqIQUgAUEgaiEGIAFB5ANqIQcgAUG0A2ohCCACIANBBHRqIQlBACEKAkADQCAEIAoiCzYCEAJAIAJBCGooAgAiDEH+////B00NACAAIAw2AgggACALNgIEIABBAjYCAAwCCyACQQRqKAIAIQ0gASAMIAEoAvwFIgMgDCADSRs2AvwFIAEgDCABKAKABiIDIAwgA0sbNgKABiAEIAEoAuwDIgM2AhQCQAJAAkAgCyADRw0AAkAgCyAHKAIARw0AIAcQgBYLIAEoAugDIAtBAnRqIAw2AgAgASALQQFqIgo2AuwDIAEoArADLQAFDQEMAgsgBEIANwIkIARCgYCAgMAANwIcIARB/OODATYCGEEAIARBEGogBEEUaiAEQRhqQYTkgwEQmRkACyAGIA0gDBDsAwsgASgCjAYhAwJAAkAgDEUNACANIAxqIQ5BACEPQQAhEANAIAMhESANLQAAIRICQAJAIA9BAXFFDQBBASEPIAEoArADLQAEQQFGDQQMAQsCQCARIAEoArwDIgNPDQAgASgCuAMgEUEUbGpBCGooAgAiDEEARyABKAKwAy0ABEEBRyIDcSEPIAMNASAMRQ0BDAQLIBEgA0Gk5IMBELMRAAsgASASIBIQng0CQCABKAKwAy0ABkUNACABIBIQ6BgiAyADEJ4NCwJAAkACQAJAIBEgASgCvAMiA08NAAJAAkACQCABKAK4AyARQRRsaigCBCIDRQ0AIAMgBSASai0AAGoiAyABKALUAyIMTw0EIAEoAtADIANBAnRqIQMMAQsgBEEIaiAIIBEQnBkgBCgCDCEDIAQoAgghDANAIANFDQIgAyAMKAIUIhNPDQUgDCgCECADQQlsaiITKAAFIQMgEiATLQAAIhRLDQALIBIgFEcNASATQQFqIQMLIAMoAAAiA0EBRw0ECyAEQRhqIAggEBCuDiAEKAIcIQMCQCAEKAIYIgxBA0YNACAAIAQpAyA3AwggAEEQaiAEQRhqQRBqKQMANwMAIAAgAzYCBCAAIAw2AgAMCQsgBEEYaiAIIBEgEiADEO8FAkAgBCgCGCIMQQNGDQAgACAEKQIcNwIEIABBFGogBEEYakEUaigCADYCACAAQQxqIARBGGpBDGopAgA3AgAgACAMNgIADAkLIAEoArADLQAGQQFHDQMgBEEYaiAIIBEgEhDoGCADEO8FIAQoAhgiDEEDRg0DIAAgBCkCHDcCBCAAQRRqIARBGGpBFGooAgA2AgAgAEEMaiAEQRhqQQxqKQIANwIAIAAgDDYCAAwICyARIANBrOODARCzEQALIAMgDEG844MBELMRAAsgAyATQYzjgwEQsxEACyAQQQFqIRAgDUEBaiINIA5HDQALCyAEQRhqIAggAyALEPsKIAQoAhgiA0EDRg0AIAAgBCkCHDcCBCAAQRRqIARBGGpBFGooAgA2AgAgAEEMaiAEQRhqQQxqKQIANwIAIAAgAzYCAAwCCyACQRBqIgIgCUcNAAsgAEEDNgIACyAEQTBqJAALxAgBBn8CQCAAKAIIIgMgAUcNAEEBDwsgACgCBCIEIAFBMGxqIQUgBCADQTBsaiEBIAIoAgQhBCACKAIMIQYDQAJAIAQiAyAGRw0AQQAPCyACIANBBGoiBDYCBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAgAiAygCAEF0aiIHQQcgB0EmSRsOJiwAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkLAsgA0EUaiEHIANBEGohCAwsCyADQRRqIQcgA0EQaiEIDCsLIAMoAiAiCEE0aiEHIAhBMGohCAwqCyADQQxqIQcgA0EIaiEIDCkLIANBCGohByADQQRqIQgMKAsgA0EQaiEHIANBDGohCAwnCyADQTRqIQcgA0EwaiEIDCYLIANBJGohByADQSBqIQgMJQsgA0EkaiEHIANBIGohCAwkCyADQRRqIQcgA0EQaiEIDCMLIANBIGohByADQRxqIQgMIgsgA0EYaiEHIANBFGohCAwhCyADQRRqIQcgA0EQaiEIDCALIANBFGohByADQRBqIQgMHwsgAygCCA4HFhcYGRobHBYLIANBIGohByADQRxqIQgMHQsgA0EQaiEHIANBDGohCAwcCyADQRhqIQcgA0EUaiEIDBsLIAMoAiAiCEEoaiEHIAhBJGohCAwaCyADQQhqIQcgA0EEaiEIDBkLIANBCGohByADQQRqIQgMGAsgA0EMaiEHIANBCGohCAwXCyADQQxqIQcgA0EIaiEIDBYLIANBHGohByADQRhqIQgMFQsgA0EsaiEHIANBKGohCAwUCyADQQhqIQcgA0EEaiEIDBMLIAMoAgQiCEEEaiEHDBILIANBFGohByADQRBqIQgMEQsgA0EQaiEHIANBDGohCAwQCyADQQxqIQcgA0EIaiEIDA8LIANBDGohByADQQhqIQgMDgsgA0EQaiEHIANBDGohCAwNCyADQRBqIQcgA0EMaiEIDAwLIANBEGohByADQQxqIQgMCwsgA0EUaiEHIANBEGohCAwKCyADQQxqIQcgA0EIaiEIDAkLIANBCGohByADQQRqIQgMCAsgA0EcaiEHIANBGGohCAwHCyADQRBqIQcgA0EMaiEIDAYLIANBEGohByADQQxqIQgMBQsgA0EUaiEHIANBEGohCAwECyADQRRqIQcgA0EQaiEIDAMLIANBJGohByADQSBqIQgMAgsgA0EkaiEHIANBIGohCAwBCyADQQhqIQcgA0EEaiEICyAIKAIAIQggAUEMaiAHKAIANgIAIAFBCGogCDYCACABQQRqIAM2AgAgAUESNgIAIAAgACgCCEEBajYCCCABQTBqIgEgBUcNAAtBAQulCQEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiAAKAIIIQAgAkEwbCECA0AgACABEI8DIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEKcBIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEKcBDwsgACgCKCEADAkLIAEgACgCBBCnASAAKAIIIAEQjwMgACgCFCIADQgMCgsgASAAKAIQEKcBIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABCnAQsCQCADQQhqKAIAIgJFDQAgA0EEaigCACEAIAJBMGwhAgNAIAAgARCPAyAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgASAAKAIEEKcBDAgLIABBCGogARDQAw8LAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwCCwsgACgCCCABEIwLCyABIAAoAgwQpwEgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQrQkCQCACQTBqKAIAIgNFDQAgASADEKcBCyACQThqIgIgBEcNAAwCCwsgACgCCCABEIwLCyABIAAoAgwQpwEgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFxRQ0AIAEgACgCCBCnAQwBCyAAKAIIIgIoAggiA0UNACACKAIEIgIgA0E4bGohBANAIAIgARCtCQJAIAJBMGooAgAiA0UNACABIAMQpwELIAJBOGoiAiAERw0ACwsCQCAAKAIYIgJFDQAgASACEKcBCwJAIAAoAhwiAkUNACABIAIQpwELIAAoAgwhAAwCCyABIAAoAgQQpwEgACgCCCEADAELIAEgACgCBBCnASAAKAIIIQAMAAsLAkAgACgCBCIDKAJQIgJFDQAgAygCTCEAIAJBMGwhAgNAIAAgARCPAyAAQTBqIQAgAkFQaiIC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A0AgABCWAyAAQTBqIQAgAUFQaiIBDQALCyACKAJgQYCAgIB4Rg0AIAIoAmgiAUUNACACKAJkIQAgAUEwbCEBA0AgABCWAyAAQTBqIQAgAUFQaiIBDQALCw8LIAAoAgQQtQEL3QgBBn8jAEGAAmsiAiQAAkACQAJAAkADQAJAIAAoAgAiA0ECRg0AAkACQCADDgcHAQAEBgcFBwsACyAAKAIMIgNFDQUgACgCCCEAIANBKGwhAwNAAkAgACgCAEEHRg0AIAAgARCXAwsgAEEoaiEAIANBWGoiAw0ADAYLCyAAKAIEIQAMAAsLIAAoAgwiA0UNAiAAKAIIIQQgA0E4bCEFQQAhAANAAkACQAJAAkACQAJAAkAgBCAAaiIDKAIADgMAAQIACyADQQhqKAIAQQNHDQQgA0EMaigCACIGKAIAQRpHDQIgAkHAAWogASgCACABKAIEIAZBCGoiBxC1DCACKALAAUEyRg0EIAYQyQEgBkE4aiACQcABakE4aikDADcDACAGQTBqIAJBwAFqQTBqKQMANwMAIAZBKGogAkHAAWpBKGopAwA3AwAgBkEgaiACQcABakEgaikDADcDACAGQRhqIAJBwAFqQRhqKQMANwMAIAZBEGogAkHAAWpBEGopAwA3AwAgByACQcABakEIaikDADcDACAGIAIpA8ABNwMADAQLIANBMGooAgAiA0UNBCADKAIAQRpHDQIgAkGAAWogASgCACABKAIEIANBCGoiBhC1DCACKAKAAUEyRg0EIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBiACQYABakEIaikDADcDACADIAIpA4ABNwMADAQLIANBBGooAgAgARCDBAwDCyAGIAEQRgwBCyADIAEQRgwBCyADQShqKAIAIAEQgwQLIAUgAEE4aiIARw0ADAMLCwJAIAAoAgQiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiAxC1DCACKAIAQTJGDQIgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcD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AEHYAGohACADQah/aiIDDQALCwJAIAQoApgBIgNFDQAgBCgClAEhACADQShsIQMDQCAAIAEQjQUgAEEoaiEAIANBWGoiAw0ACwsgBC0APCIAQQZGDQUgAEECRw0FIARBEGohAANAIAAoAhgiAC0ALEECRg0ADAYLCyAFQQxqKAIAIgNFDQQgBUEIaigCACEAIANBKGwhAwNAIAEgABDiAyAAQShqIQAgA0FYaiIDDQAMBQsLIAAgARDbAQwDCyABQQA6AAQMAgsgACABENsBDAELIAFBADoABAsgBUEoaiIFIAJHDQALCw8LIAAgARDbAQ8LIAFBADoABAvSCAENfyMAQbABayICJAAgAkEoaiABEMICIAIoAiwhAwJAAkAgAigCKCIEQYCAgIB4Rw0AIABBgICAgHg2AgAgACADNgIEDAELIAIoAjAhBSACQQRBCEEoQcCnmwEQ2BRBACEGIAJBADYCFCACIAIoAgQiBzYCECACIAIoAgA2AgwgAiAENgIgIAIgAzYCGCACIAMgBUEGdCIIaiIJNgIkIAJB2ABqIQogAkHoAGpBBGohCyACQShqQQRyIQxBBCENAkACQANAAkACQAJAAkACQAJAIAhFDQACQCADKAIAIgVBB0YNACADQQRqIQQgAiAFNgIoAkBBPEUNACAMIARBPPwKAAALIANBwABqIQ4gBQ4EAgMEBQgLIANBwABqIQkLIAIgCTYCHCACQRhqEMMRAkAgAS0AyAEiA0EBRw0AIAEQhw4gAEEIaiACQQxqQQhqKAIANgIAIAAgAikCDDcCAAwJCyABKALEASEEIAEoAsABIQUgAkGMAWogAxDeGyACQQE2AiwgAkGY75sBNgIoIAJCATcCNCACQYoFrUIghkGIo5sBrYQ3AxggAiACQRhqNgIwIAJBmAFqIAJBKGoQjRUgAkGsAWogAkGUAWooAgA2AgAgAiACKQKMATcCpAEgBSAEIAJBmAFqEIUVIQMCQCABLQDIAUGiAUcNACABEMcRIQQgARCHDiABIAQQ5RELIABBgICAgHg2AgAgACADNgIEDAcLIAtBGGogA0EgaikCADcCACALQRBqIANBGGopAgA3AgAgC0EIaiADQRBqKQIANwIAIAsgA0EIaikCADcCAAwDCyACQegAakEYaiAEQRhqKAIANgIAIAJB6ABqQRBqIARBEGop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AhBBMkYNBCABEMkBIAFBOGogAkEQakE4aikDADcDACABQTBqIAJBEGpBMGopAwA3AwAgAUEoaiACQRBqQShqKQMANwMAIAFBIGogAkEQakEgaikDADcDACABQRhqIAJBEGpBGGopAwA3AwAgAUEQaiACQRBqQRBqKQMANwMAIAAgAkEQakEIaikDADcDACABIAIpAxA3AwAMBAsCQCABKAIEIgQtAGxBAkcNACAEQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIARBhAFqKAIAIgBFDQAgBEGAAWooAgAhASAAQdgAbCEAA0ACQAJAAkACQCABKAIAQXxqDgIDAAELIAFBBGooAgAiBSgCAEEaRw0BIAJBkAFqIAMoAgAgA0EEaigCACAFQQhqIgYQtQwgAigCkAFBMkYNAiAFEMkBIAVBOGogAkGQAWpBOGopAwA3AwAgBUEwaiACQZABakEwaikDADcDACAFQShqIAJBkAFqQShqKQMANwMAIAVBIGogAkGQAWpBIGopAwA3AwAgBUEYaiACQZABakEYaikDADcDACAFQRBqIAJBkAFqQRBqKQMANwMAIAYgAkGQAWpBCGopAwA3AwAgBSACKQOQATcDAAwCCyABIAMQxQgMAQsgBSADEEYLIAFB2ABqIQEgAEGof2oiAA0ACwsgBEGYAWooAgAhACAEQZQBaigCACEBIAIgAzYCDAJAIABFDQAgAEEobCEAA0AgAkEMaiABELwDIAFBKGohASAAQVhqIgANAAsLIAQtADwiAUEGRg0DIAFBAkcNAyAEQRBqIQEDQCABKAIYIgEtACxBAkYNAAwECwsgASADEEYMAgsgASADEEYMAQsgAUEEaiADELICCyACQdABaiQAC40IAgd/AX4jAEHQAGsiAiQAIAIgARC+CSIDNgIMAkACQAJAAkACQAJAAkACQCADQdsARw0AIAJBKGpBCGoiBCABKAIAIgNB2ABqKAIANgIAIAIgAykCUDcDKCADQdAAaiEDIAEQmghFDQUgARC+CUE6Rw0FAkAgARCaCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsCQCABEL4JIgVB3gBHDQAgARCaCA0AIAMgAikDKDcCACADQQhqIAJBKGpBCGooAgA2AgAMBwsgAygCACEGAkADQCABEL4JQTpGDQEg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AAvSBwIBfwF+IwBBIGsiAyQAIANBEGogAiABKAIAQQAQlQICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKkUNACADQQA2AhAgA0EIaiACIANBEGpB3pabAUEFELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKEUNACADQQA2AhAgA0EIaiACIANBEGpBw5ebAUECELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkAgAS0AKUUNACADQQA2AhAgA0EIaiACIANBEGpBsq2bAUEDELkMAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EQaiACEOIOIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBEGogAUEIaiACELITAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAQsCQCABKAIgRQ0AIANBEGogAhDiDgJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAILIANBADYCECADQQhqIAIgA0EQakHbxJsBQQcQuQwCQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwCCyADQRBqIAIQ4g4CQCADLQAQQQRGDQAgAykDECIEQv8Bg0IEUQ0AIAAgBDcCAAwCCyADQRBqIAFBIGogAhBPIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkACQAJAAkAgASgCJEUNAAJAIAItAF0NACADQRBqIAIQ4g4gAy0AEEEERg0AIAMpAxAiBEL/AYNCBFINBAsgA0EANgIQIANBCGogAiADQRBqQfuWmwFBARC4DAJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAULAkAgAi0AXQ0AIANBEGogAhDiDiADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyADQRBq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IAAQ4AoCQAJAAkAgASgCDCICDQAgAS0AECEDAkAgACgCECIERQ0AQQEhAiAEQeS0lwFB1LSXASADQQFxIgUbQRlBECAFGxDtBQ0FCyAAIAM6AARBACECDAELAkAgASgCECIDQQFxDQAgAUKAgICAIDcCGCABIAI2AgwgASADNgIQIAEgAiADaiIFNgIUAkADQCABQQxqELoDQYCAvH9qDgICAQALCyAAKAIQIgRFDQMgBCgCAEEiIARBBGoiBigCACgCEBEIAA0CIAFCgICAgCA3AhggASAFNgIUIAEgAzYCECABIAI2AgwgAUEoaiEHA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBDGoQugMiA0GBgMQARg0AIANBgIDEAEYNCiADQSdGDQsCQCADQSFKDQAgA0F3ag4FBwQDAwgCCyADQSJGDQQgA0HcAEcNAkHcACEIQQAhCUECIQpBACELQQAhA0EAIQxB3AAhBQwNCyAEKAIAQSIgBEEEaigCACgCEBEIACECDBILIANFDQMLIANB/wVNDQkgAxDmB0UNCSABQSBqIAMQtAogASkAIiIOQjCIpyELIA5CEIinIQMgAS0AKyEKIAEtACohDCABLQAhIQggAS0AICEFIA6nIQkMCgtB3AAhBUHuACEIDAQLQdwAIQVBIiEIDAMLQdwAIQVBMCEIQQAhCUECIQpBACELDAMLQdwAIQVB9AAhCAwBC0HcACEFQfIAIQgLQQAhCUECIQpBACELQQAhAwtBACEMDAMLQdSkmwFBKyABQSBqQcSslwFBtKyXARDoDwALIAQoAgBBJyAGKAIAKAIQEQgADQUMAgtBgAEhBSADEOsLDQAgAUEgaiADELQKIAEpACIiDkIwiKchCyAOQhCIpyEDIAEtACshCiABLQAqIQwgAS0AISEIIAEtACAhBSAOpyEJCyABIAg6ACEgASAFOgAgIAEgC61CMIYgCa1C//8Dg4QgA61CEIaENwEiIAohDSAMIQADQAJAAkAgBUH/AXFBgAFHDQBBACEFIAdBADsBACABQgA3AyBBACENQQAhACADIQJBACEDDAELIABB/wFxIgIgDUH/AXFPDQIgAEEBaiEAIAFBIGogAmotAAAhAgsgBCgCACACIAYoAgAoAhARCAANBAwACwsLAkAgACgCECICRQ0AIAJB1LSX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NgKIASAAIAEoAgQgASgCCCACQTRqIAJBiAFqENEMDAQLIAJBMGogBkEIaigCADYCACACIAYpAgA3AigCQEEkRQ0AIABBBGogAkEQakEk/AoAAAsgAEEiNgIADAQLAkACQAJAIAEQvglBLUYiAw0AIAJByAFqIAEQrwwgAkGIAWogARDJCyACLQCMASEEIAIoAogBIgVBIkYNAQJAQTtFDQAgAEEFaiACQYgBakEFakE7/AoAAAsgACAEOgAEIAAgBTYCAAwFCyACQTRqIAEQrwwgAkHMAGogARCvDCACQQc6AGQgAiACQRBqIAJBzABqELYKIAIoAgBBAXENAwwBCyACQegAakEIaiACQcgBakEIaikCADcDACACQegAakEQaiACQcgBakEQaikCADcDACACIAIpAsgBNwNoIAIgBDoAgAEgAkEIaiACQRBqIAJB6ABqELYKIAIoAghBAXFFDQAgAigCDCEDIAJByAFqIAEQrwwCQCADIAIoAhgiBE8NACACQZQBaiACKAIUIANBHGxqIgNBCGopAgA3AgAgAkGcAWogA0EQaikCADcCACACQQ02AogBIAIgAykCADcCjAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMBAsgAyAEQZCHhQEQsxEACyABEJoIDQALIAJB3AFqIAZBCGooAgAiAzYCACACQcgBakEIaiADNgIAIAIgBikCACIHNwLUASACIAc3A8gBIAJBDzYCiAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMAQsgAigCBCEDIAJByAFqIAEQrwwCQCADIAIoAhgiBE8NACACQZQBaiACKAIUIANBHGxqIgNBCGopAgA3AgAgAkGcAWogA0EQaikCADcCACACQQ42AogBIAIgAykCADcCjAEgACABKAIEIAEoAgggAkHIAWogAkGIAWoQ0QwMAQsgAyAEQYCHhQEQsxEACyACKAIQIAIoAhRBBEEcEMARCyACQeABaiQAC44HAgp/AX4jAEEwayIDJAAgA0EYaiABIAIoAgwiBEEAEJUCAkACQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCwJAAkACQAJAIARFDQAgA0EYaiABIAQQtBogAy0AGEEERg0AIAMpAxgiDUL/AYNCBFINAQsgASgCSEUNAiACLQAZIQUgA0EANgIQIANCgICAgMAANwIIIAIoAghBOGwhBiADIANBCGo2AhggAigCBCEHA0AgBkUNAiAGQUhqIQYgByADQRhqEJsKIAdBOGohBwwACwsgACANNwIADAILIAMoAhAhByADKAIMIQYgAyADKAIINgIgIAMgBjYCGCADIAYgB0EMbCIHaiIINgIkIAVB/wFxQQBHIQkDQAJAAkAgB0UNAAJAIAYoAgAiBUGAgICAeEYNACAGQQxqIQogBkEEaiILKAIAIQYgASgCSEUNAiADQShqIAEgCykCACINpyILIA1CIIinIgwgCyAMIAkQuwYgAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAiAAIA03AgAgAyAKNgIcIAUgBhCXIiADQRhqEOUUDAULIAZBDGohCAsgAyAINgIcIANBGGoQ5RQMAgsgBSAGEJciIAdBdGohByAKIQYMAAsLAkAgAi0AGEUNACADQQA2AhggA0EIaiABIANBGGpB7qGbAUEHELkMAkAgAy0ACEEERg0AIAMpAwgiDUL/AYNCBFENACAAIA03AgAMAgsgA0EYaiABEOIOIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELIANBADYCGCADQQhqIAEgA0EYaiACLQAZQQJ0IgZB6OCdAWooAgAgBkHc4J0BaigCABC5DAJAIAMtAAhBBEYNACADKQMIIg1C/wGDQgRRDQAgACANNwIADAELIAIoAgQhBgJAAkACQCACKAIIIgdFDQAgBigCAEF/akEDSQ0BCyADQRhqIAEQ4g4gAy0AGEEERg0BIAMpAxgiDUL/AYNCBFENASAAIA03AgAMAgsgAS0AXQ0AIANBGGogARDiDiADLQAYQQRGDQAgAykDGCINQv8Bg0IEUQ0AIAAgDTcCAAwBCyADQRhqIAEgBCACKAIQIAYgBxCTBAJAIAMtABhBBEYNACADKQMYIg1C/wGDQgRRDQAgACANNwIADAELIABBBDoAAAsgA0EwaiQAC/UHAQl/IwBBwABrIgMkACABQQhqIQQCQAJAAkACQAJAAkACQCABKAIIQbmBgIB4Rw0AIAEoAhwhBSABKAIYIQYgASgCECEHIAEoAhQhCCADQTRqIAEoAgwiCSgCACACEOgDIAMoAjghCiADIAhBAUEBEMwNIAMoAgQhCyADKAIA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AkAgACgCAA4JAAECAwQFBwYHAAsgACgCHCIARQ0GIABBCGooAgAiAkUNBiAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AIABBBGooAgAgARDJBAwBCyABLQAADQAgAyABEJUBCyAAQQxqIQAgAkF0aiICDQAMBwsLIABBCGogARCtAw8LIAAoAhgNBCAAKAIcIgBFDQQgAEEIaigCACICRQ0EIABBBGooAgAhACACQQxsIQIDQAJAAkAgACgCACIDDQAgAEEEaigCACABEMkEDAELIAEtAAANACADIAEQlQELIABBDGohACACQXRqIgINAAwFCwsCQAJAIAAoAggOAwABBQALAkAgACgCKCIDQQhqKAIAIgJFDQAgAS0AAA0AIANBBGooAgAhACACQQxsIQIDQAJAIAEtAAANACAAKAIAIAEQlQELIABBDGohACACQXRqIgINAAsLAkAgA0EUaigCACICRQ0AIANBEGooAgAhACACQdgAbCECA0AgACABEPYCIABB2ABqIQAgAkGof2oiAg0ACwsgAygCMCIARQ0EIAEtAAANBCAAIAEQlQEPCwJAIAAoAigiBEEIaigCACICRQ0AIARBBGooAgAiACACQQZ0aiEFA0ACQCAAIgNBOGooAgAiAkUNACABLQAADQAgA0E0aigCACEAIAJBDGwhAgNAAkAgAS0AAA0AIAAoAgAgARCVAQsgAEEMaiEAIAJBdGoiAg0ACwsgAyABEPMIIANBwABqIgAgBUcNAAsLAkAgBEEUaigCACICRQ0AIAEtAAANACAEQRBqKAIAIQAgAkEMbCECA0ACQCABLQAADQAgACgCACABEJUBCyAAQQxqIQAgAkF0aiICDQALCyAEKAIYQYCAgIB4Rg0DIARBIGooAgAiAkUNAyABLQAADQMgBEEcaigCACEAIAJBMGwhAgNAAkAgAS0AAA0AIAAgARD0AgsgAEEwaiEAIAJBUGoiAg0ADAQLCyABLQAADQIgACgCBCABEJUBDwsgACgCECIARQ0BIABBCGooAgAiAkUNASAAQQRqKAIAIQAgAkEMbCECA0ACQAJAIAAoAgAiAw0AIABBBGooAgAgARDJBAwBCyABLQAADQAgAyABEJUBCyAAQQxqIQAgAkF0aiICDQAMAgsLIAEtAAANACAAKAIEIAEQlQELC9MHAQd/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IQYgAUEAOgB5AkAgACgCBCIDKAIAQRpHDQAgAiADKQMIIANBGGooAgAQuhggAUEsaiACKQMAIAIoAggQ0QoLIAMgARB3IAEgBToAKCABIAY6AHkLAkAgBCgCAEEHRg0AIAQgARDnBAsgACgCaCABEOcEIAAoAkhBgICAgHhGDQEgASAAQcgAahDNCQwBCwJAIAAoAghBA0cNACABLQAoIQMgAUEAOgAoIAEtAHkhBSABQQA6AHkCQCAAKAIMIgQoAgBBGkcNACACIAQpAwggBEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgBCABEHcgASADOgAoIAEgBToAeQsgASAAKAIoEN4ECyACQRBqJAALlQcBB38jAEEQayICJAACQAJAAkACQAJAIAAoAgAOBQQAAQIDBAsgACgCBEEBRw0DIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAggiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAFBLGogAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAEOgB5DAMLIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAFBLGogAikDACACKAIIENEKCyAAIAEQdyABIAM6ACggASAEOgB5DAILIAAoAgQiBUHAAGogARDDCgJAIAVBhAFqKAIAIgNFDQAgBUGAAWooAgAhACADQdgAbCEDIAFBLGohBgNAAkACQAJAIAAoAgBBfGoOAgIAAQsgAS0AKCEHIAFBADoAKCABLQB5IQggAUEAOgB5AkAgAEEEaigCACIEKAIAQRpHDQAgAiAEKQMIIARBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAQgARB3IAEgBzoAKCABIAg6AHkMAQsgACABELoFCyAAQdgAaiEAIANBqH9qIgMNAAsLAkAgBUGYAWooAgAiAEUNACAFQZQBaigCACIEIABBKGxqIQcgAUEsaiEGA0ACQAJAAkACQAJAIAQoAgAOBQQAAQIDBAsgBCgCBEEBRw0DIAEtACghAyABQQA6ACggAS0AeSEIIAFBADoAeQJAIAQoAggiACgCAEEaRw0AIAIgACkDCCAAQRhqKAIAELoYIAYgAikDACACKAII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QQIQsRtFDQAgBCADIAZBAyAFQYC4mAEQmw8gEyENIAAgASAEKAIAIAQoAgQQmRxFDQALCwsgBEGAAWokACAKIAdHC+AGAQJ/IwBBwAFrIgIkAAJAAkACQAJAAkACQAJAIAEoAgAOAwABAgALIAFBCGogABCJBAwFCyABKAIwIgFFDQQgASgCAEEaRw0BIAJBgAFqIAAoAgAgACgCBCABQQhqIgAQtQwgAigCgAFBMkYNBCABEMkBIAFBOGogAkGAAWpBOGopAwA3AwAgAUEwaiACQYABakEwaikDADcDACABQShqIAJBgAFqQShqKQMANwMAIAFBIGogAkGAAWpBIGopAwA3AwAgAUEYaiACQYABakEYaikDADcDACABQRBqIAJBgAFqQRBqKQMANwMAIAAgAkGAAWpBCGopAwA3AwAgASACKQOAATcDAAwECwJAAkACQAJAAkAgASgCBCIBKAIADgcIAAECAwgECAsgAUEMaigCACIDRQ0HIAFBCGooAgAhASADQShsIQMDQAJAIAEoAgBBB0YNACABIAAQlwMLIAFBKGohASADQVhqIgMNAAwICwsgASgCBCAAEJcDDAYLIAFBDGooAgAiA0UNBSABQQhqKAIAIQEgA0E4bCEDA0AgACABEP4DIAFBOGohASADQUhqIgMNAAwGCwsgASgCBCAAEJcDIAEoAggiASgCAEEaRw0CIAJBwABqIAAoAgAgACgCBCABQQhqIgAQtQwgAigCQEEyRg0EIAEQyQEgAUE4aiACQcAAakE4aikDADcDACABQTBqIAJBwABqQTBqKQMANwMAIAFBKGogAkHAAGpBKGopAwA3AwAgAUEgaiACQcAAakEgaikDADcDACABQRhqIAJBwABqQRhqKQMANwMAIAFBEGogAkHAAGpBEGopAwA3AwAgACACQcAAakEIaikDADcDACABIAIpA0A3AwAMBAsgASgCBCIBKAIAQRpHDQIgAiAAKAIAIAAoAgQgAUEIaiIAELUMIAIoAgBBMkYNAyABEMkBIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMAwsg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sAMMAQsACyACEOUXCyAEQaABaiQAC4QHAgh/A34jAEGgAWsiASQAAkACQAJAAkACQAJAIAAoAgAOCAUFBQUAAQIDBQsgACgCDCICKAIAIAJBDGooAgAQxxpFDQQMAwsgACgCBCICKAIAIAJBDGooAgAQxxpFDQMMAgsgACgCDA0BDAILIAAoAgxFDQELQQAtAMDxnQEaAkACQEEcEIUBIgJFDQAQ3xIhAyACIAApAgA3AgAgAEEANgIAIAJBGGogAEEYaiIEKAIANgIAIAJBEGogAEEQaikCADcCACACQQhqIABBCGopAgA3AgAgBCADNgIAIAEgAjYCEEEBIQQgAUEBNgIMIAFBOGohAwNAIAFBGGpBCGoiBSABKAIQIgYgBEF/aiICQRxsaiIAQQxqKQIANwMAIAFBGGpBEGoiByAAQRRqKQIANwMAIAEgAjYCFCABIAApAgQ3AxgCQAJAAkACQAJAAkACQCAAKAIAIghBCEYNACADIAEpAxg3AgAgA0EIaiAFKQMANwIAIANBEGogBykDADcCACABIAg2AjQgCA4IBQUFBQIDAQQFCyABKAIMIQMgAkUNCCAGIQADQCAAEPUdIABBHGohACACQX9qIgINAAwJCwsgASgCQCEAIAFBADYCQCABKAI8IQIgAUEANgKcASABIAA2ApgBIAEgAzYClAEgASACIABBHGxqNgKQASABIAI2AowBIAFBDGogAUGMAWoQwwYMAwsgASgCQCECEN8SIQggAkEYaiIFKAIAIQcgBSAINgIAIAIpAgAhCSACQQA2AgAgAkEQaikCACEKIAJBCGopAgAhCyAAIAk3AgAgAEEIaiALNwIAIABBEGogCjcCACAAQRhqIAc2AgAgASAENgIUDAMLIAEoAjghAhDfEiEIIAJBGGoiBSgCACEHIAUgCDYCACACKQIAIQkgAkEANgIAIAJBEGopAgAhCiACQQhqKQIAIQsgACAJNwIAIABBCGogCzcCACAAQRBqIAo3AgAgAEEYaiAHNgIAIAEgBDYCFAwCCyABKAJAIQAgAUEANgJAIAEoAjwhAiABQQA2ApwBIAEgADYCmAEgASADNgKUASABIAIgAEEcbGo2ApABIAEgAjYCjAEgAUEMaiABQYwBahDDBgsgASgCFCEECyABQTRqEPUdIAQNAAsgASgCECEGIAEoAgwhAwwBCwALIAMgBkEEQRwQwBELIAFBoAFqJAALhAcCCn8BfiMAQfAAayICJAACQAJAIAEoAgBBA0YNACAALQB5IQMMAQsgAC0AKCEEIABBADoAKCAALQB5IQMgAEEAOgB5AkAgASgCBCIFKAIAQRpHDQAgAkHgAGogBSkDCCAFQRhqKAIAELoYIABBLGogAikDYCACKAJoENEKCyAFIAAQdyAAIAQ6ACggACADOgB5C0EAIQUgAkEgakEAKQOY+5wBIgw3AgAgAkEwaiAMNwIAIAIgAzoAWSACQQA2AhQgAkKAgICAgAE3AgwgAkEANgJAIAJBADoARCACQQA2AlAgAkEANgFaIAJCgICAgMAANwI4IAJCgICAgIABNwJIIAIgAC0AeDoAWCACIAAoAnQ2AlQgAkEAKQOQ+5wBIgw3AhggAiAMNwIoIAIgAC0AfjoAXiAAQSxqIQYCQANAIAVB1ABGDQEgACAFakEsaiIDKAIAIQQgAyACQQxqIAVqIgcoAgA2AgAgByAENgIAIAVBBGohBQwACwsCQCABKAIoIggoAhQiBUUNACAIKAIQIQMgBUEMbCEEIAAtAHkhByAALQAoIQEDQCADKAIAIQUgAEEAOgB5IABBADoAKAJAIAUoAgBBGkcNACACQeAAaiAFKQMIIAVBGGooAgAQuhggBiACKQNgIAIoAmgQ0QoLIANBDGohAyAFIAAQdyAAIAE6ACggACAHOgB5IARBdGoiBA0ACwsCQCAIKAIIIgVFDQAgCCgCBCIHIAVBBnRqIQEgAC0AeiEJIAAtAHkhCiAALQAoIQsDQCAAQQE6ACggAEEAOgB5IAAgAC0Ae0EBczoAegJAIAcoAjgiBUUNACAHKAI0IQMgBUEMbCEEA0AgAygCACEFIABBADoAeSAAQQA6ACgCQCAFKAIAQRpHDQAgAkHgAGogBSkDCCAFQRhqKAIAELoYIAYgAikDYCACKAJoENEKCyADQQxqIQMgBSAAEHcgAEEBOgAoIABBADoAeSAEQXRqIgQNAAsLIABBAToAeSAHIAAQ5wQgACAKOgB5IAAgCToAeiAAIAs6ACggB0HAAGoiBSEHIAUgAUcNAAsLAkAgCCgCGEGAgICAeEYNACAIQSBqKAIAIgNFDQAgCEEcaigCACEFIANBMGwhAwNAIABBADoAfSAFIAAQayAFQTBqIQUgA0FQaiIDDQALCyAGIAJBDGoQkwMgAkHwAGokAAvYBgEEfyMAQcABayICJAACQAJAAkACQAJAAkAgACgCAA4HBQABAgQFAwULIAAoAgwiA0UNBCAAKAIIIQAgA0EobCEDA0ACQCAAKAIAQQdGDQAgACABEJcDCyAAQShqIQAgA0FYaiIDDQAMBQsLIAAoAgQgARCXAwwDCyAAKAIMIgNFDQIgACgCCCEAIANBOGwhAwNAAkACQAJAAkACQCAAKAIADgMAAQIACyAAQQhqIAEQiQQMAwsgAEEwaigCACIERQ0CIAQoAgBBGkcNASACQYABaiABKAIAIAEoAgQgBEEIaiIFELUMIAIoAoABQTJGDQIgBBDJASAEQThqIAJBgAFqQThqKQMANwMAIARBMGogAkGAAWpBMGopAwA3AwAgBEEoaiACQYABakEoaikDADcDACAEQSBqIAJBgAFqQSBqKQMANwMAIARBGGogAkGAAWpBGGopAwA3AwAgBEEQaiACQYABakEQaikDADcDACAFIAJBgAFqQQhqKQMANwMAIAQgAikDgAE3AwAMAgsgAEEEaiABELgFDAELIAQgARBGCyAAQThqIQAgA0FIaiIDDQAMAwsLAkAgACgCBCIAKAIAQRpHDQAgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACgCBCABEJcDAkAgACgCCCIAKAIAQRpHDQAgAkHAAGogASgCACABKAIEIABBCGoiARC1DCACKAJAQTJGDQEgABDJASAAQThqIAJBwABqQThqKQMANwMAIABBMGogAkHAAGpBMGopAwA3AwAgAEEoaiACQcAAakEoaikDADcDACAAQSBqIAJBwABqQSBqKQMANwMAIABBGGogAkHAAGpBGGopAwA3AwAgAEEQaiACQcAAakEQaikDADcDACABIAJBwABqQQhqKQMANwMAIAAgAikDQDcDAAwBCyAAIAEQRgsgAkHAAWokAAv9BgELfyMAQSBrIgIkAAJA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KAIAIQUMAQsgA0HoAGogBUEUaikCADcDACADQdgAakEIaiIGIAVBDGopAgA3AwAgA0H4AGogBEHQAGoiB0EIaigCADYCACADIAUpAgQ3A1ggAyAHKQIANwNwAkBBJEUNACADQfABaiACQST8CgAACyADQRBqIANB8AFqEJkOIAMoAhQhBSADKAIQIQcCQCAGKAIAIgIgAygCWEcNACADQdgAakH4gYUBEPkVCyADKAJcIAJBA3RqIgYgBTYCBCAGIAc2AgAgAyACQQFqNgJgIANBCGogA0HYAGoQ8RhBCiEFIAMoAgwhAgsgAyAFNgIcIANBIjYCGCADIAI2AiAgBCgCHCICRQ0BIAQgAkF/aiICNgIcIAQoAhggAkHwAGxqIQICQEHwAEUNACADQYABaiACQfAA/AoAAAsgAygCgAFBgICAgHhqDgIDAQILAkBByABFDQAgA0HwAWogBUEkakHIAPwKAAALIANByAJqIAVB5ABqKQIANwMAIANBwAJqIAVB3ABqKQIANwMAIAMgBSkCVDcDuAIgA0EVNgLUAiAAIAEoAgQgASgCCCADQbgCaiADQdQCahDRDCADQfABahDkFCADQYABahDlFyAEIAQoAhBBAWo2AhAgAhDlFwwECwJAQcAARQ0AIAAgA0EYakHAAPwKAAALIAQgBCgCEEEBajYCEAwDCyADQRxqIQUCQEHIAEUNACADQfABaiACQSRqQcgA/AoAAAsgA0HIAmogAkHkAGopAgA3AwAgA0HAAmogAkHcAGopAgA3AwAgAyACKQJUNwO4AiADQRU2AtQCIAAgASgCBCABKAIIIANBuAJqIANB1AJqENEMIANB8AFqEOQUIAUQsAMgBCAEKAIQQQFqNgIQIANBgAFqEOUXDAILQbKjmwFBKEGIgoUBEN0XAAtB6IGFARD4FAALIANB8AJqJAALxgYBA38jAEHAAWsiAiQAAkAgACgCAEEDRw0AAkAgACgCBCIDKAIAQRpHDQAgAkGAAWogASgCACABKAIEIANBCGoiBBC1DCACKAKAAUEyRg0BIAMQyQEgA0E4aiACQYABakE4aikDADcDACADQTBqIAJBgAFqQTBqKQMANwMAIANBKGogAkGAAWpBKGopAwA3AwAgA0EgaiACQYABakEgaikDADcDACADQRhqIAJBgAFqQRhqKQMANwMAIANBEGogAkGAAWpBEGopAwA3AwAgBCACQYABakEIaikDADcDACADIAIpA4ABNwMADAELIAMgARBGCwJAAkACQAJAAkACQAJAAkAgACgCICIAKAIADgcHAAECAwcEBwsgAEEMaigCACIDRQ0GIABBCGooAgAhACADQShsIQMDQAJAIAAoAgBBB0YNACAAIAEQlwMLIABBKGohACADQVhqIgMNAAwHCwsgACgCBCABEJcDDAULIABBDGooAgAiA0UNBCAAQQhqKAIAIQAgA0E4bCEDA0AgASAAEP4DIABBOGohACADQUhqIgMNAAwFCwsgACgCBCABEJcDIAAoAggiACgCAEEaRw0BIAJBwABqIAEoAgAgASgCBCAAQQhqIgEQtQwgAigCQEEyRg0DIAAQyQEgAEE4aiACQcAAakE4aikDADcDACAAQTBqIAJBwABqQTBqKQMANwMAIABBKGogAkHAAGpBKGopAwA3AwAgAEEgaiACQcAAakEgaikDADcDACAAQRhqIAJBwABqQRhqKQMANwMAIABBEGogAkHAAGpBEGopAwA3AwAgASACQcAAakEIaikDADcDACAAIAIpA0A3AwAMAwsgACgCBCIAKAIAQRpHDQEgAiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAgBBMkYNAiAAEMkBIABBOGogAkE4aikDADcDACAAQTBqIAJBMGopAwA3AwAgAEEoaiACQShqKQMANwMAIABBIGogAkEgaikDADcDACAAQRhqIAJBGGopAwA3AwAgAEEQaiACQRBqKQMANwMAIAEgAkEIaikDADcDACAAIAIpAwA3AwAMAgsgACABEEYMAQsgACABEEYLIAJBwAFqJAAL+wYBA38jAEHwAGsiBiQAIAYgBDcDQCAGQThqIAZBwABqEP4RAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBigCOCIHIAYoAjwiCEHEoJsBQQgQmRwNAAJAIAcgCEHMoJsBQQQQmRwNAAJAIAcgCEHQoJsBQQkQmRwNAAJAAkACQCAHIAhB2aCbAUEGEJkcDQAgByAIQd+gmwFBCRCZHA0BIAcgCEHooJsBQQQQmRxFDQ0gBQ0GIAEtAMkBDQ0gASgCeCABLQDIARCmFUUNDQwOCyABLQDJAUUNAQwMCwJAIAUNACABKAJ4IAEtAMgBEKYVRQ0MDAsL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GzYCACAHIAIpAgQ3AgwgB0EUaiACQQxqKQIANwIAIAdBHGogAkEEakEQaikCADcCACAHQSRqIAJBBGpBGGooAgA2AgAMAQsgAkEEakEUaiAAQRhqKQIANwIAIAJBEGogAEEQaikCADcCAEEAIQRBAC0AwPGdARogAiAAKQIINwIIQcAAEIUBIgdFDQMgB0EENgIIIAdBGzYCACAHIAIpAgQ3AgwgB0EUaiACQQxqKQIANwIAIAdBHGogAkEEakEQaikCADcCACAHQSRqIAJBBGpBGGooAgA2AgALQQIhBkEAIQULC0EALQDA8Z0BGkHAABCFASIARQ0AIAAgASkDADcDACAAQThqIAFBOGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwBBAC0AwPGdARpBwAAQhQEiAUUNACABQQA6ADwgASAANgI4IAFCADcDMCABIAM2AiggAUIANwMgIAEgCDcCGCABIAQ2AhQgASAFNgIQIAEgBzYCDCABIAY2AgggAUEBNgIAIAJBIGokACABDwsAC90GAg5/A34jAEHwAGsiAiQAIAEoAsABIQMgARC3ASACQdAAaiABEJAKAkACQAJAAkACQAJAAkAgAi0AZEECRw0AIAIoAlAhAQwBCyACKQNYIRAgAikDUCERIAEtAMgBQQlHDQIgARCHDiABELcBIAJB0ABqIAEQkAogAi0AZEECRw0BIAIoAlAhASAREMYdCyAAQQY6ACwgACABNgIADAQLIAIpA1AhEiARUEUNASAQIREgEiEQC0EAIQQgAkEAOgAUIAJBADYCECACIBA+AgggAiAQQiCIPgIMQQMhBQwBCyACKAJYIQUgAiACKAJcIgY2AiQgAiADNgIgIAIgBjYCHCACIAU2AhggAiAQNwMIIAIgEjcDECASQiCIpyEEQQUhBQsgAiAFOgAsIAIgETcDACACQS1qIQcgAkEcaiEIIAJBFWohCSACQQRyIQoDQAJAAkAgAS0AyAFBCEcNACABEIcOIAEQtwEgAkHQAGogARCQCiACLQBkQQJHDQEgAigCUCEBIABBBjoALCAAIAE2AgAgAhDSFwwDC0EwRQ0CIAAg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QQFyIQsMBAsgA0EIdCADQRB0ckEBciELDAELIAtBgP7/B3EhAyALQQFxRQ0BIAtB////B3EiAUEQdiEOIAFBCHYhASADIQsLIAIgAToABiACIA46AAcCQCABQf8BcSAORg0AIAJBAjYCHCACQdDKhAE2AhggAkICNwIkIAJBxwA2AhQgAkHHADYCDCACIAJBCGo2AiAgAiACQQdqNgIQIAIgAkEGajYCCCAEIAUgAkEYahDOBQ0EDAILQQEhASACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACQccANgIMIAIgAkEIajYCICACIAJBBmo2AgggBCAFIAJBGGoQzgVFDQEMBAsLQQEhASAEQa/EmwFBASAGEQwARQ0ADAILC0EBIQELIAJBMGokACABC6YHAgF/AXwjAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkECNgIUIAJBzIuYATYCECACQgE3AhwgAkEDNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwRCyACIAApAwg3AwggAkECNgIUIAJB6IuYATYCECACQgE3AhwgAkEENgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwQCyACIAApAwg3AwggAkECNgIUIAJB6IuYATYCECACQgE3AhwgAkEFNgIsIAIgAkEoajYCGCACIAJBCGo2AiggASgCACABKAIEIAJBEGoQtx4hAQwPCyAAKwMIIQMgAkECNgIUIAJBiIyYATYCECACQgE3AhwgAkEGNgIMIAIgAzkDKCACIAJBCGo2AhggAiACQShqNgIIIAEoAgAgASgCBCACQRBqELceIQEMDgsgAiAAKAIENgIIIAJBAjYCFCACQaSMmAE2AhAgAkIBNwIcIAJBBzYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqELceIQEMDQsgAiAAKQIENwIIIAJBATYCFCACQbyMmAE2AhAgAkIBNwIcIAJBCDYCLCACIAJBKGo2AhggAiACQQhqNgIoIAEoAgAgASgCBCACQRBqELceIQEMDAsgASgCAEG5i5gBQQogASgCBCgCDBEMACEBDAsLIAEoAgBBxIyYAUEKIAEoAgQoAgwRDAAhAQwKCyABKAIAQc6MmAFBDCABKAIEKAIMEQwAIQEMCQsgASgCAEHajJgBQQ4gASgCBCgCDBEMACEBDAgLIAEoAgBB6IyYAUEIIAEoAgQoAgwRDAAhAQwHCyABKAIAQb+NmwFBAyABKAIEKAIMEQwAIQEMBgsgASgCAEHMoJsBQQQgASgCBCgCDBEMACEBDAULIAEoAgBB8IyYAUEMIAEoAgQoAgwRDAAhAQwECyABKAIAQfyMmAFBDyABKAIEKAIMEQwAIQEMAwsgASgCAEGLjZgBQQ0gASgCBCgCDBEMACEBDAILIAEoAgBBmI2YAUEOIAEoAgQoAgwRDAAhAQwBCyABKAIAIAAoAgQgACgCCCABKAIEKAIMEQwAIQELIAJBMGokACABC44GAgV/AX4CQCAAKAIEIgFFDQAgACgCACICIAAoAgwQkwwgASABQQR0QRdqQXBxIgNqQQlqIgFFDQAgAiADayABQQgQnhILAkAgACgCFCIBRQ0AIAAoAhAiAiAAKAIcEJMMIAEgAUEEdEEXakFwcSIDakEJaiIBRQ0AIAIgA2sgAUEIEJ4SCwJAIAAoAiQiAUUNACAAKAIgIgIgACgCLBCTDCABIAFBBHRBF2pBcHEiA2pBCWoiAUUNACACIANrIAFBCBCeEgsCQCAAKAI0IgRFDQACQCAAKAI8IgVFDQAgACgCMCICQQhqIQEgAikDAEJ/hUKAgYKEiJCgwIB/gyEGA0ACQCAGQgBSDQADQCACQYB+aiECIAEpAwAhBiABQQhqIgMhASAGQoCBgoSIkKDAgH+DIgZCgIGChIiQoMCAf1ENAAsgBkKAgYKEiJCgwIB/hSEGIAMhAQsgAiAGeqdBAnRB4ANxa0FgahCwECAGQn98IAaDIQYgBUF/aiIFDQALCyAEIARBBXRBJ2pBYHEiAWpBCWoiAkUNACAAKAIwIAFrIAJBCBCeEgsCQCAAKAJEIgRFDQACQCAAKAJMIgVFDQAgACgCQCICQQhqIQEgAikDAEJ/hUKAgYKEiJCgwIB/gyEGA0ACQCAGQgBSDQADQCACQcB9aiECIAEpAwAhBiABQQhqIgMhASAGQoCBgoSIkKDAgH+DIgZCgIGChIiQoMCAf1ENAAsgBkKAgYKEiJCgwIB/hSEGIAMhAQsgAkEAIAZ6p0EDdmtBKGxqIgNBWGoQ6RAgA0FwahDNEyAGQn98IAaDIQYgBUF/aiIFDQALCyAEIARBKGxBL2pBeHEiAWpBCWoiAkUNACAAKAJAIAFrIAJBCBCeEgsCQCAAKAJUIgFFDQAgACgCUCICIAAoAlwQkwwgASABQQR0QRdqQXBxIgNqQQlqIgFFDQAgAiADayABQQgQnhILAkAgACgCZCIBRQ0AIAEgAUEDdEEPakF4cSICakEJaiIBRQ0AIAAoAmAgAmsgAUEIEJ4SCwvHBgELfyMAQbABayICJAACQAJAIAEoAgAiAyABKAIERg0AIAEgA0EYajYCAAJAAkAgASgCECIEIAEoAhRGDQAgASAEQQpqNgIQIAQtAAAiBUECRg0AIAJBgAFqIARBCWotAAA6AAAgAiAEKQABNwN4DAELIAEgASgCDCIGNgIUIAEgASgCCCIENgIQIAQgBkYNASABIARBCmo2AhAgAkGAAWogBEEJai0AADoAACACIAQpAAE3A3ggBC0AACIFQQJGDQELIAJBIGpBCGoiByACQfgAakEIai0AADoAACACIAIpA3g3AyAgAkEYaiADEJgcIAJBLGogAigCGCACKAIcEOQcQYCAgIB4IQQgAygCECEIIAMoAgwhCQJAAkAgAigCLCIKQYCAgIB4Rw0ADAELIAIoAjAhCyACKAI0IQRBACEDIAJBADYCeCACQRBqQQogAkH4AGoQwBUgAigCeCEGIAIoAhQhDEEBIQEgAkEBOwFcIAIgBDYCWCACQQA2AlQgAiAMOgBQIAIgBjYCTCACIAQ2AkggAkEANgJEIAIgBDYCQCACIAs2AjwgAkEKNgI4IAJB7ABqIAJBOGoQ+AZBBCEGQQAhBAJAIAIoAmxBgICAgHhGDQBBDCEDIAJBCGpBBEEEQQxBsJibARCDFCACQewAakEIaigCACEEIAIoAgghDCACKAIMIgYgAikCbDcCACAGQQhqIAQ2AgAgAkEBNgJoIAIgBjYCZCACIAw2AmACQEEoRQ0AIAJB+ABqIAJBOGpBKPwKAAALAkADQCACQaQBaiACQfgAahD4BiACKAKkAUGAgICAeEYNAQJAIAEgAigCYEcNACACQeAAakEBEOQbIAIoAmQhBgsgBiADaiIEIAIpAqQBNwIAIARBCGogAkGkAWpBCGooAgA2AgAgAiABQQFqIgE2AmggA0EMaiEDDAALC0GAgICAeCACKAKoARCXHiACKAJkIQYgAigCYCEEIAEhAwsgCiALEI4gCyAAIAIpAyA3ABUgAEEdaiAHLQAAOgAAIAAgBToAFCAAIAg2AhAgACAJNgIMIAAgAzYCCCAAIAY2AgQgACAENgIADAELIABBgYCAgHg2AgALIAJBsAFqJAALyAUBCH8gASACaiEDQQAhBAJAAkACQCACDQAgASECQQAhBQwBCyABIQIDQCAEIQUCQAJAIAIiBCwAACIGQX9MDQAgBEEBaiECIAZB/wFxIQYMAQsgBC0AAUE/cSECIAZBH3EhBwJAIAZBX0sNACAHQQZ0IAJyIQYgBEECaiECDAELIAJBBnQgBC0AAkE/cXIhAgJAIAZBcE8NACACIAdBDHRyIQYgBEEDaiECDAELIAJBBnQgBC0AA0E/cXIgB0ESdEGAgPAAcXIhBiAEQQRqIQILIAIgBGsgBWohBAJAIAZBd2pBBUkNACAGQSBGDQAgBkGAAUkNAgJAAkAgBkEIdiIHQR9KDQAgB0UNASAHQRZHDQQgBkGALUcNBAwCCwJAIAdBIEYNACAHQTBHDQQgBkGA4ABHDQQMAgsgBkH/AXFBzuybAWotAABBAnFFDQMMAQsgBkH/AXFBzuybAWotAABBAXFFDQILIAIgA0cNAAtBACEFQQAhBAwBCyACIANGDQADQAJAIAMiB0F/aiIDLAAAIgZBf0oNAAJAAkAgB0F+aiIDLQAAIgjAIglBQEgNACAIQR9xIQgMAQsCQAJAIAdBfWoiAy0AACIIwCIKQUBIDQAgCEEPcSEIDAELIAdBfGoiAy0AAEEHcUEGdCAKQT9xciEICyAIQQZ0IAlBP3FyIQgLIAhBBnQgBkE/cXIhBgsCQCAGQXdqQQVJDQAgBkEgRg0AAkAgBkGAAUkNAAJAAkACQCAGQQh2IghBH0oNACAIRQ0BIAhBFkcNAyAGQYAtRg0EDAMLIAhBIEYNASAIQTBHDQIgBkGA4ABGDQMMAgsgBkH/AXFBzuybAWotAABBAXFFDQEMAgsgBkH/AXFBzuybAWotAABBAnENAQsgBCACayAHaiEEDAILIAIgA0cNAAsLIAAgBCAFazYCBCAAIAEgBWo2AgALmAYBE38jAEHgAGsiAyQAQQAhBCADQQA2AhAgA0EIakEKIANBEGoQwBUgAygCECEFIAMoAgwhBiADQQA2AjggA0EBOwE0IAMgAjYCMCADQQA2AiwgAyAGOgAoIAMgBTYCJCADIAI2AiAgAyACNgIYIAMgATYCFCADQQo2AhAgA0EQaiAGQf8BcSIHakETaiEIIANBJGohCSAALQAMIQogACgCBCELIAAoAgAhDCAAKAIIIg1BBGohDiAGQQVJIQ9BACEFQQAhEEEAIRECQANAIAUhEiAEIRMgECIUQQFxDQECQAJAAkADQAJAAkAgAiARSQ0AIAEgEWohBSAILQAAIRACQAJAIAIgEWsiBEEHSw0AQQAhFUEAIQYDQAJAIAQgBkcNACAEIQYMAwsCQCAFIAZqLQAAIBBB/wFxRw0AQQEhFQwDCyAGQQFqIQYMAAsLIAMgECAFIAQQkAkgAygCBCEGIAMoAgAhFQsgFUEBcQ0BIAIhEQtBASEQIANBAToANSASIQUgAiEGDAILIAMgBiARakEBaiIRNgIcIBEgB0kNACARIAdrIQYgESACSw0AIA9FDQIgASAGaiAHIAkgBxCbHEUNAAsgAyARNgIsQQAhECARIQULIAMgE0EBaiIENgI4AkAgCkEBcQ0AIABBAToADAJAIAxBAXFFDQAgAyALNgI8IANBDjYCXCADQQE2AlQgA0Gcz4ABNgJQIANBAjYCRCADQciomAE2AkAgA0EBNgJMIAMgA0E8ajYCWCAOKAIAIRUgAyADQdgAajYCSCANKAIAIBUgA0HAAGoQzgVFDQMMBQsgDSgCAEHUxZsBQQQgDigCACgCDBEMAA0EDAILIBNFDQEgDSgCAEEKIA4oAgAoAhARCAANAyAOKAIAKAIMIRUgDSgCACETAkAgDA0AIBNB1MWbAUEEIBURDAANBAwCCyATQbTPgAFBByAVEQwADQMMAQsgB0EEQaDgmwEQjyAAC0EBIQogDSgCACABIBJqIAYgEmsgDigCACgCDBEMAEUNAAsLIANB4ABqJAAgFEF/c0EBcQuFBgIDfwF+IwBBIGsiBCQAIARBEGogASACKAIYIgUoAiRBABCVAgJAAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsCQAJAAkACQCAFKAIkIgZFDQAgBEEQaiABIAYQtBogBC0AEEEERg0AIAQpAxAiB0L/AYNCBFINAQsgAi0AHA0BDAILIAAgBzcCAAwCCyAEQQA2AhAgBEEIaiABIARBEGpB7qGbAUEHELkMAkAgBC0ACEEERg0AIAQpAwgiB0L/AYNCBFENACAAIAc3AgAMAgsgBEEQaiABEOIOIAQtABBBBEYNACAEKQMQIgdC/wGDQgRRDQAgACAHNwIADAELAkAgAw0AIAUoAghBDGwhAyAFKAIEIQYDQCADRQ0BIARBEGogBiABEPYHAkACQCAELQAQQQRGDQAgBCkDECIHQv8Bg0IEUg0BCyAGQQxqIQYgA0F0aiEDDAELCyAAIAc3AgAMAQsCQCAFLQA8RQ0AIARBADYCECAEQQhqIAEgBEEQakHEoJsBQQgQuQwCQCAELQAIQQRGDQAgBCkDCCIHQv8Bg0IEUQ0AIAAgBzcCAAwCCyAEQRBqIAEQ4g4gBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgBEEANgIQIARBCGogASAEQRBqQeTKmwFBBRC5DAJAIAQtAAhBBEYNACAEKQMIIgdC/wGDQgRRDQAgACAHNwIADAELIARBEGogARDiDgJAIAQtABBBBEYNACAEKQMQIgdC/wGDQgRRDQAgACAHNwIADAELIARBEGogAiABELITAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgBEEQaiAFQTRqIAEQ4BwCQCAELQAQQQRGDQAgBCkDECIHQv8Bg0IEUQ0AIAAgBzcCAAwBCyAEQRBqIAEgBRBLAkAgBC0AEEEERg0AIAQpAxAiB0L/AYNCBFENACAAIAc3AgAMAQsgAEEEOgAACyAEQSBqJAAL+QUCCn8GfiMAQcAAayIEJAAgA0F/aiEFAkAgA0UNACADQX5qIQYCQCADQQFGDQAgAiAFQQJ0aigCACEHIAIgBkECdGo1AgAhDiAEQSRqIAEoAggiBSADa0EBaiIIQczkggEQpBIgB60iD0IghiEQQQAhCQJAAkACQANAIAhFDQIgBUUNAyABKAIEIgYgBUECdGpBfGoiCkUNAyAKKAIAIQogBiAFIAVBfmpB/OSCARCNHDUCACERAkACQCAJIAdJDQAgCq0gCa18IRJBfyELDAELIARBGGogCSAKIAcQtxcgBDUCHCESIAQoAhghCwsgCEF/aiEIIBJCIIYgEYQhEQJAA0ACQAJAAkAgEkKAgICAEFQNACALrSETDAELIBEgC60iEyAOflQNAQsgBEEQaiAIIAYgBUGM5YIBEI8aIAMgBCgCFCIFIAMgBUkbIQZBfyEKQQAhBSAEKAIQIQwCQANAIAZFDQEgDCAFaiINIAqtIA01AgB8IBMgAiAFajUCAH59QoGAgIBgfCISPgIAIBJCIIinIQogBkF/aiEGIAVBBGohBQwACwsCQCAJIApBf3NPDQAgBEEIaiAIIAEoAgQgASgCCEGc5YIBEI8aIAQoAgggBCgCDCACIAMQ7QoaIAtBf2ohCwsgCCAEKAIsIgVPDQIgBCgCKCAIQQJ0aiALNgIAIAEoAggiBUUNBCABIAVBf2oiBTYCCCABKAIEIAVBAnRqKAIAIQkMAwsgESAQfCERIBIgD3whEiALQX9qIQsMAAsLCyAIIAVBrOWCARCzEQALQbzlggEQmyAACyABIAlB3OSCARCkGSABEOMIIARBMGpBCGoiBSAEQSRqQQhqKAIANgIAIAQgBCkCJDcDMCAEQTBqEOMIIABBFGogAUEIaigCADYCACAAIAEpAgA3AgwgACAEKQMwNwIAIABBCGogBSgCADYCACAEQcAAaiQADwtB7OSCARCbIAALIAZBAUG85IIBELMRAAsgBUEAQazkggEQsxEAC+AGAQJ/IwBBIGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEOKAYBAQEBAQEBAQIEAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEIAQEBAQcACyABQdwARg0ECyACQQFxRQ0HIAFB/wVNDQcgARDmB0UNByADQQA6AAogA0EAOwEIIAMgAUEUdkHY+ZwBai0AADoACyADIAFBBHZBD3FB2PmcAWotAAA6AA8gAyABQQh2QQ9xQdj5nAFqLQAAOgAOIAMgAUEMdkEPcUHY+ZwBai0AADoADSADIAFBEHZBD3FB2PmcAWotAAA6AAwgA0EIaiABQQFyZ0ECdiICaiIEQfsAOgAAIARBf2pB9QA6AAAgA0EIaiACQX5qIgJqQdwAOgAAIANBCGpBCGoiBCABQQ9xQdj5nAFqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIINwIAIANB/QA6ABEgAEEIaiAELwEAOwEADAkLIABBgAQ7AQogAEIANwECIABB3OgBOwEADAgLIABBgAQ7AQogAEIANwECIABB3OQBOwEADAcLIABBgAQ7AQogAEIANwECIABB3NwBOwEADAYLIABBgAQ7AQogAEIANwECIABB3LgBOwEADAULIABBgAQ7AQogAEIANwECIABB3OAAOwEADAQLIAJBgAJxRQ0BIABBgAQ7AQogAEIANwECIABB3M4AOwEADAMLIAJB////B3FBgIAETw0BCwJAIAEQ6wsNACADQQA6ABYgA0EAOwEUIAMgAUEUdkHY+ZwBai0AADoAFyADIAFBBHZBD3FB2PmcAWotAAA6ABsgAyABQQh2QQ9xQdj5nAFqLQAAOgAaIAMgAUEMdkEPcUHY+ZwBai0AADoAGSADIAFBEHZBD3FB2PmcAWotAAA6ABggA0EUaiABQQFyZ0ECdiICaiIEQfsAOgAAIARBf2pB9QA6AAAgA0EUaiACQX5qIgJqQdwAOgAAIANBFGpBCGoiBCABQQ9xQdj5nAFqLQAAOgAAIABBCjoACyAAIAI6AAogACADKQIUNwIAIANB/QA6AB0gAEEIaiAELwEAOwEADAILIAAgATYCBCAAQYABOgAADAELIABBgAQ7AQogAEIANwECIABB3MQAOwEACyADQSBqJAALlwYBBH8CQAJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAOFA8PAAECAwgECAgFBgcICAkLDA0ODwsCQCAAKAIEQYCAgIB4Rg0AIAEgAEEEahCOGSABIABBHGoQ0xcgAEEQaiABEOIhDwsgASAAQQhqEI4ZIAEgAEEgahDTFyAAQRRqIAEQ4iEPCyAAQRBqIAEoAhQQtRsgASAAQShqEI0eDwsgAEHYAGohAiAAQRBqIQMCQAJAIAAtAERBBEYNACADIAEQ/AkMAQsgAyABKAIUELUbCyABIAIQjR4PCyAAKAIMQThsIQQgACgCCCEFQQAhAANAIAQgAEYNDAJAAkACQAJAAkACQAJAAkAgBSAAaiICKAIAQXxqIgNBBCADQQdJGw4HAAECAwQFBgALIAEgAkEEahCOGSACQRhqIAEQ9R4gASACQRxqENMXDAYLIAEgAkEEahCOGSACQRhqIAEQ9R4gASACQRxqENMXDAULIAJBEGooAgAgARDeAyACQQxqIAEQ9R4MBAsgAkEEaigCACABEN4DIAJBEGogARD1HgwDCyACQTBqKAIAIAEQ3gMgAiABEL0KDAILIAJBEGooAgAgARDeAyABIAJBBGoQjhkgAkEcaiABEPUeIAEgAkEgahDTFwwBCyACQQRqIAEQ+B4LIABBOGohAAwACwsgACgCDEE4bCECIAAoAgghAANAIAJFDQsgACABEJAeIABBMGogARCqBCACQUhqIQIgAEE4aiEADAALCyABIABBCGoQjxkPCyAAQQRqIAEQqgQgAEEIaiABEKoEIABBDGogARCqBCAAQRBqIQAMAwsgAEEQaiABENsbDwsgAEEEaiEADAELIABBBGogARCqBCAAQQhqIQAMAAsLIABBEGogARDbGyABIABBwABqEPkeIAEgAEHEAGoQ+R4PCyAAKAIIQYSAgIB4SA0CIAEgAEEIahCPGQ8LIABBKGohAgJAIAAtABxBAkYNACABKAIUIABBCGoQ/A0aCyACIAEQ9R4PCyAAQQhqIAEQ/AkLC6QGAQJ/AkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgIoAgAiA0F0aiIAQQcgAEEmSRsOJg4AAQIDBAUGBwgJCgsMDg4NDxAREg4TFBUODhYXGBkaGxwdDh8ODgsgAigCDEEEdCEAIAIoAgghAgNAIABFDQ4CQCACKAIAQQJGDQAgAkEMaiABEKsECyACQRBqIQIgAEFwaiEADAALCyACQQRqIAEQZw8LIAEgAkEIahCBAg8LIAJBBGohAAwaCyACQQxqIQAMGQsgAkEEaiABEKsEIAJBCGohAAwYCyACQThqIQACQAJAAkACQAJAAkACQAJAAkACQCADDgwhAQIDBAUGBwgJIQAhCwJAAkAgAigCBA4DAAEiAAsgAkEIaiABEIkZDCELIAJBCGogARDUEAwgCyACQQhqIAEQhRwMHwsgAkEIaiABEKIdDB4LIAJBBGogARCrBAwdCyACQQRqIAEQrRoMHAsgAkEEaiABEKsEDBsLIAJBBGogARCrBAwaCyACQQRqIAEQqwQMGQsgAkEEaiABEKsEDBgLIAJBBGogARCrBAwXCyACQQhqIAEQhRwPCyACQQhqIAEQoh0PCyACQQRqIAEQqwQgAkEIaiABEKsEIAJBDGohAAwUCyACQQRqIQACQCACLQAYQQVHDQAgAkEQaiABEKsECyAAIAEQwBgPCyACQRBqIAEQqwQgAigCBEGAgICAeEYNAiACQQRqIAEQwBgPCyABIAJBBGoQihkPCyABIAJBBGoQihkLDwsgAkEEaiABEKsEIAEgAigCCBCKGQ8LIAEgAkEEahDNAQ8LIAJBIGogARDbIQ8LIAEgAkEMahDzHg8LIAJBBGohAAwKCyACQQRqIQAMCQsgAkEgahDZHA8LIAJBBGogARDfDQ8LIAJBBGogARDTEA8LIAJBBGohAAwFCyACQQRqIQAMBAsgAkEEaiEADAMLIAJBBGohAAwCCyACQQRqIQAMAQsgAkEEaiEADAALCyACQQRqIAEQrRoL4gYCCX8BfiMAQdAAayIDJAAgA0E4aiABEMMLIAMoAkAhBAJAAkACQCADKQM4IgxCAFINAEEBIQUMAQsgAyADKAJEIgY2AiQgAyAENgIgIAMgDDcDGCADQRBqIANBGGoQ/hECQAJAIAMoAhAiBSADKAIUIgdBg6SbAUEGEJkcDQAgBSAHQYmkmwFBBBCZHA0AIAUgB0GNpJsBQQYQmRwNACAFIAdBk6SbAUEGEJkcDQAgBSAHQZmkmwFBAxCZHA0AIAUgB0GcpJsBQQcQmRwNACAFIAdBo6SbAUEHEJkcDQAgBSAHQaqkmwFBBhCZHA0AIAUgB0GwpJsBQQYQmRwNACAFIAdB8ZabAUEEEJkcDQAgBSAHQbakmwFBBRCZHA0AIAUgB0G7pJsBQQkQmRxFDQELIANBroGAgHg2AjggASAEIAYgA0E4ahCvGgtBASEFIANBCGogAUEBQQAQ1BMgAygCDCEGAkACQAJAIAMoAghBAXFFDQAgBiEEDAELAkACQAJAIAEtAMgBQdkARw0AIAEQhw4gA0E4aiABEKAEIAMoAjwhBCADKAI4IgdBgICAgHhGDQIgAyADKAJANgIwIAMgBDYCLCADIAc2AiggAS0AyAFB2QBHDQEgASgCxAEhByABKALAASEEIANBloGAgHg2AjggASAEIAcgA0E4ahCvGgNAIAEtAMgBIgdBAkYNAiAHQaMBRg0CIAEQhw4MAAsLIANBADYCMCADQoCAgIDAADcDKAsgASgCwAEhCCABIAEoAngiB0GAIHI2AnggA0E4aiABEIgBIAEgBzYCeCADKAI8IQQgAygCOCIJQYCAgIB4Rw0CIANBKGoQzR0LIAYQ7h8LIAMpAxgQxh0MAQsgAygCQCEFIAEoArwBIQEgAygCJCEKIAMoAiAhCyADKQMYIQxBCEHIABDrHyIHRQ0BIAcgATYCNCAHIAg2AjAgByAFNgIsIAcgBDYCKCAHIAk2AiQgByAGNgIgQQAhBSAHQQA6ABwgB0EANgIYIAcgCjYCFCAHIAs2AhAgByAMNwMIIAcgATYCBCAHIAI2AgAgByADKQMoNwM4IAdBADoARCAHQcAAaiADQShqQQhqKAIANgIAIAchBAsgACAENgIEIAAgBTYCACADQdAAaiQADwsAC6IGAwJ/An4BfCMAQRBrIgIkAAJAAkACQAJAAkACQAJAIAEoAgAOBAADAQIACyACIAEpAwg3AwggAiACQQhqEP4RIAIoAgAgAigCBBD2FSEEAkAgAikDCCIFQgODQgBSDQAgBaciASABKAIAIgNBf2o2AgAgA0EBRw0AIAEgASgCEBDBGwsgAEIANwMYIAAgBDcDECAAQQA2AgggAEEbNgIAIABBIGpCADcDAAwFCyAAIAEoAgQiASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEoaiABQShqKQMANwMAIABBMGogAUEwaikDADcDACAAQThqIAFBOGopAwA3AwAgAUHAAEEIEJ4SDAQLQQAtAMDxnQEaQcAAEIUBIgNFDQEgA0IANwMQIANBAzYCCCADQRs2AgAgA0EYakIANwMAIANBIGpCADcDAEEALQDA8Z0BGkHAABCFASIBRQ0BIAEgAzYCBCABQRA2AgAgAUEQaiIDQQU6AAAgAUEIakIANwMAIABBCGpCADcDACAAIAEpAwA3AwAgAEEYaiABQRhqKQMANwMAIABBIGogAUEgaikDADcDACAAQShqIAFBKGopAwA3AwAgAEEwaiABQTBqKQMANwMAIABBOGogAUE4aikDADcDACAAQRBqIAMpAwA3AwAgAUHAAEEIEJ4SDAMLIAErAwgiBiAGYg0BAkAgBplEAAAAAAAA8H9hDQAgAEIANwMgIAAgBjkDGCAAQgA3AxAgAEEDNgIIIABBGzYCAAwDCxChGCEEAkAgBr1CAFMNACAAQgA3AxAgACAENwMIIABBGjYCACAAQRVqQgA3AAAMAwtBAC0AwPGdARpBwAAQhQEiAUUNACABQgA3AxAgASAENwIIIAFBGjYCACAAQgA3AwggACABNgIEIABBEDYCACABQRVqQgA3AAAgAEEQakEAOgAADAILAAsgAEIANwMQIABCsZyF8wQ3AwggAEEaNgIAIABBFWpCADcAAAsgAkEQaiQAC8EGAQR/AkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgsAAQIDBAUGBwgJCgALIABBCGohAiABLQA6IQMgAS0AOSEEAkAgACgCICIARQ0AIAEtADRBAUcNACABQYECOwA5IAAoAgAgARD0ASABIAM6ADoLIAEgBDoAOSABIAIQlxAgASAEOgA5IAEgAzoAOg8LIAEtADkhBCABQQE6ADkgACgCKCABEGwgASAEOgA5IAAoAghBAkcNCCABQQE6ADkgACgCDCABEGwgASAEOgA5DwsgACgCCEEBRw0HIAEtADkhBCABQQE6ADkgACgCDCABEGwgASAEOgA5DwsgAS0AOSEEIAFBAToAOSAAKAIEIAEQbCABIAQ6ADkPCwJAIAAoAgQiACgCACIEQQNHDQAgAEEEaiABEJIIDwsgAS0AOSEDIAFBAToAOSAAKAIgIAEQbCABIAM6ADkgBEECRw0FIAFBAToAOSAAKAIEIAEQbCABIAM6ADkPCwJAAkAgAS0ANA0AIAEtADkhBAwBCyABLQA5IQQgAS0AOiEDIAFBgQI7ADkgACgCCCABEPQBIAEgAzoAOgsgAUEBOgA5IAAoAgQgARBsIAEgBDoAOQ8LAkACQCABLQA0DQAgAS0AOSEEDAELIAEtADkhBCABLQA6IQMgAUGBAjsAOSAAKAIIIAEQ9AEgASADOgA6CyABQQE6ADkgACgCBCABEGwgASAEOgA5DwsgAS0AOSEEIAFBAToAOSAAKAIEIAEQbCABIAQ6ADkPCwJAAkAgAS0ANA0AIAEtADkhBAwBCyABLQA5IQQgAS0AOiEDIAFBgQI7ADkgACgCCCABEPQBIAEgAzoAOgsgAUEBOgA5IAAoAgQgARBsIAEgBDoAOQ8LIAEtADkhAiABQQE6ADkgACgCBCABEGwgASACOgA5IAEtADRBAUcNACAAKAIIIQAgAS0AOiEFIAFBgQI7ADkCQCAAKAIIIgRFDQAgACgCBCEAIARBAnQhBANAAkAgAS0ANEEBRw0AIAAoAgAhAyABQYECOwA5IAMgARD0ASABQYECOwA5CyAAQQRqIQAgBEF8aiIEDQALCyABIAU6ADogASACOgA5CwvTBQEGfyMAQSBrIgMkAAJAAkACQAJAIAEgAkkNAAJAIAINAEEAIQQMBAtBACACQXxqIgUgBSACSxsiBiACQX9qIgUgBiAFSRshBwJAAkADQCAFIAZNDQEgBSACTw0CIAAgBWohBCAFQX9qIgghBSAELAAAQb9/TA0ACyAIQQFqIQcLIAIgB0kNAkEAIQQgAiAHRg0EAkAgACAHaiIGLAAAIgVBf0wNACAFQf8BcSEFDAQLIAVBQEkNBCACIAdrIQcCQAJAAkACQCAFQWBPDQBBAiEIDAELIAVBcE8NAUEDIQgLIAggB0sNBgwBC0EEIQggB0EESQ0FIAVBd0sNBQsgA0EMaiAGIAgQxQQgAygCDEEBRg0EIAMgAygCECIFIAMoAhRqNgIcIAMgBTYCGCADQRhqEKIMIgVBgIDEAEcNA0HA6oQBEJsgAAsgBSACQdDqhAEQsxEACyACIAFBpNOEARCPIAALIAcgAkHg6oQBEKMgAAsgBRDEDUH/AXEhBAtBASEFAkACQCABIAJGDQACQAJAIAAgAmoiBiwAACIAQX9MDQAgAEH/AXEhBQwBCyAAQUBJDQEgASACayEIAkACQAJAAkAgAEFgTw0AQQIhAgwBCyAAQXBPDQFBAyECCyACIAhNDQEMAwsgAEF3Sw0CQQQhAiAIQQRJDQILIANBDGogBiACEMUEQQEhBSADKAIMQQFGDQEgAygCFEUNAgJAIAMoAhAiAiwAACIFQX9MDQAgBUH/AXEhBQwBCyACLQABQT9xIQAgBUEfcSEGAkAgBUFfSw0AIAZBBnQgAHIhBQwBCyAAQQZ0IAItAAJBP3FyIQACQCAFQXBPDQAgACAGQQx0ciEFDAELIABBBnQgAi0AA0E/cXIgBkESdEGAgPAAcXIiBUGAgMQARg0CCyAFEMQNQf8BcUEBcyEFCyADQSBqJAAgBCAFcQ8LQcDqhAEQmyAAC5QGAQV/QQAhAgJAIAAoAgAiAyABKAIARw0AAkACQAJAAkACQAJAAkACQAJAIAMOCAgGAAECAwQFCAsgACgCBCIDIAEoAgRHDQgCQCADRQ0AIAAoAgwgACgCECABKAIMIAEoAhAQ9hANCAwJCyAAKAIMIAAoAhAgASgCDCABKAIQEPARDQcMCAsgACgCBCABKAIERg0GDAcLIAAoAhAgASgCEEcNBiABKAIEIQMCQAJAIAAoAgRBAUcNACADRQ0IIAAoAgggASgCCEYNAQwICyADDQcLIAAtABQgAS0AFEcNBiAAKAIMIAEoAgwQsAQNBQwGCyAAKAIIIAEoAghHDQUgASgCDCEDAkAgACgCDCIERQ0AIANFDQAgBCAAKAIQIAMgASgCEBCbHEUNBgwECyAEIANyRQ0DDAULIAAoAgwiBSABKAIMRw0EIAEoAgghAyAAKAIIIQQgBUEBaiEFA0AgBUF/aiIFRQ0EIAQgAxCwBCEGIANBHGohAyAEQRxqIQQgBg0ADAULCyAAKAIMIgUgASgCDEcNAyABKAIIIQMgACgCCCEEIAVBAWohBQNAIAVBf2oiBUUNAyAEIAMQsAQhBiADQRxqIQMgBEEcaiEEIAYNAAwECwsgACgCBCAAKAIIIAEoAgQgASgCCBCbHEUNAgwBCyAAKAIEIAEoAgQQsARFDQELIAEoAhgiAygCACEBAkACQCAAKAIYIgAoAgBBAUcNACABRQ0CIAAoAgQgAygCBEYNAQwCCyABDQELIAMoAgghAQJAAkAgACgCCEEBRw0AIAFFDQIgACgCDCADKAIMRg0BDAILIAENAQsgACgCGCADKAIYRw0AIAAoAhwgAygCHEcNACAAKAIgIAMoAiBHDQAgACgCJCADKAIkRw0AIAAoAiggAygCKEcNACAALQAwIAMtADBHDQAgACgCLCADKAIsRw0AIAMoAhAhAQJAAkAgACgCEEEBRw0AIAFFDQIgACgCFCADKAIURg0BDAILIAENAQsgAC0AMSADLQAxRw0AIAAtADIgAy0AMkYhAgsgAguOBgEGfwJAAkACQAJAIAAoAgAOBAMAAQIDCyAAKAIEQQFHDQIgACgCCCABEKgBDwsgASAAKAIEIgJBwABqEPsIAkAgAkGEAWooAgAiA0UNACACQYABaigCACIAIANB2ABsaiEEA0ACQAJAIAAoAgAiA0EFRw0AIAAoAgQgARCoAQwBCyADQQRGDQACQAJAAkAgAw4EAwABAgMLIAAoAgRBAUcNAiAAKAIIIAEQqAEMAgsgASAAKAIEEI8KDAELIABBDGooAgAiBUUNACAAQQhqKAIAIQMgBUEobCEFA0AgAyABELkHIANBKGohAyAFQVhqIgUNAAsLIABB2ABqIgAgBEcNAAsLAkAgAkGYAWooAgAiA0UNACACQZQBaigCACEAIANBKGwhAwNAIAAgARC5ByAAQShqIQAgA0FYaiIDDQALCyACLQA8QQZGDQEgASACQRBqEPsIDwsgACgCDCIDRQ0AIAAoAggiAiADQShsaiEGA0ACQAJAAkACQAJAIAIoAgAOBQQAAQIDBAsgAigCBEEBRw0DIAIoAgggARCoAQwDCyACKAIEIAEQqAEMAgsgASACKAIEIgdBwABqEPsIAkAgBygChAEiA0UNACAHKAKAASIAIANB2ABsaiEEA0ACQAJAIAAoAgAiA0EFRw0AIAAoAgQgARCoAQwBCyADQQRGDQACQAJAAkAgAw4EAwABAgMLIAAoAgRBAUcNAiAAKAIIIAEQqAEMAgsgASAAKAIEEI8KDAELIAAoAgwiBUUNACAAKAIIIQMgBUEobCEFA0AgAyABELkHIANBKGohAyAFQVhqIgUNAAsLIABB2ABqIgAgBEcNAAsLAkAgBygCmAEiA0UNACAHKAKUASEAIANBKGwhAwNAIAAgARC5ByAAQShqIQAgA0FYaiIDDQALCyAHLQA8QQZGDQEgASAHQRBqEPsIDAELIAJBDGooAgAiA0UNACACQQhqKAIAIQAgA0EobCEDA0AgASAAEPQFIABBKGohACADQVhqIgMNAAsLIAJBKGoiAiAGRw0ACwsL1gYCA38CfiMAQaACayICJAACQAJAQQAtAPDwnQFFDQBBACkDgPGdASEFQQApA/jwnQEhBgwBCyACQQhqEJcVQQBBAToA8PCdAUEAIAIpAxAiBTcDgPGdASACKQMIIQYLQQAgBkIBfDcD+PCdASABKAKABSgC0AIhAyACQgQ3AhggAkIANwIQIAJCgICAgMAANwIIAkAgA0F/TA0AIAJBADYCIAJAAkACQCADRQ0AIAJBCGogAxCwDiADIAIoAhwiBEsNAQsgAiADNgIcDAELIAJBFGogAyAEaxCwDgsgAkGAAmpBGGogAkEIakEYaigCADYCACACQYACakEQaiACQQhqQRBqKQIANwMAIAJBgAJqQQhqIAJBCGpBCGopAgA3AwAgAiACKQIINwOAAiACQQA2AiAgAkIENwIYIAJCADcCECACQoCAgIDAADcCCAJAAkACQCADRQ0AIAJBCGogAxCwDiADIAIoAhwiBEsNAQsgAiADNgIcDAELIAJBFGogAyAEaxCwDgsgAkH8AWogAkEIakEYaigCADYCACACQfQBaiACQQhqQRBqKQIANwIAIAJB7AFqIAJBCGpBCGoiAykCADcCACACQcgBakEIaiACQYACakEIaikDADcDACACQcgBakEQaiACQYACakEQaikDADcDACACQcgBakEYaiACQYACakEYaigCADYCACACIAIpAgg3AuQBIAIgAikDgAI3A8gBIAJBADYCnAEgAkKAgICAwAA3ApQBIAJCBDcCjAEgAkIANwKEASACQoCAgIDAADcCfCADQQApA5j7nAE3AwAgAkEAKQOQ+5wBNwMIIAIgBTcDICACIAY3AxgCQEE4RQ0AIAJBOGogAkHIAWpBOPwKAAALIAJCATcDsAEgAkIANwOoASACQoCAgIDAADcDoAEgAkEANgK4ASACQQA2AnggAkIANwNwIAJBADYCKCACIAE2AsgBIAIgAkEIajYCzAEgAkHIAWoQ/wECQEHAAUUNACAAIAJBCGpBwAH8CgAACyACQaACaiQADwsgAkEBNgLMASACQbzlhAE2AsgBIAJCATcC1AEgAkEqNgKEAiACQbDihAE2AoACIAIgAkGAAmo2AtABIAJByAFqQbTmhAEQhRsAC+EFAgd/AX5BACECAkAgASgCCCIDIAEoAgQiBE8NACABKAIAIANqLQAAQfUARw0AQQEhAiABIANBAWoiAzYCCAsCQAJAIAMgBE8NACABKAIAIgUgA2otAABBUGoiBkH/AXEiB0EKSQ0BCyAAQQA2AgAgAEEAOgAEDwsgASADQQFqIgM2AggCQAJAAkAgBw0AQQAhBwwBCyAGQf8BcSEHA0ACQCAEIANHDQAgBCEDDAMLIAUgA2otAABBUGpB/wFxIgZBCUsNASABIANBAWoiAzYCCAJAIAetQgp+IglCIIinDQAgCaciCCAGaiIHIAhPDQELCyAAQQA2AgAgAEEAOgAEDwsgAyAETw0AIAUgA2otAABB3wBHDQAgASADQQFqIgM2AggLAkAgAyAHaiIGIANPDQAgAEEANgIAIABBADoABA8LIAEgBjYCCAJAAkACQAJAIAYgBEsNACADRQ0BIAMgBE8NASAFIANqLAAA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DQAgAiAJKQMIIAlBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAkgARB3IAEgBzoAKCABIAg6AHkLIABBKGooAgAgARDnBAwCCyABIABBEGoQ8QogAEEIaiEJAkAgAEEwaigCACIARQ0AIAEtACghByABQQA6ACggAS0AeSEIIAFBADoAeQJAIAAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASAHOgAoIAEgCDoAeQsgASAJEPsQDAELIABBBGooAgAgARDnBAsgBSADQThqIgNHDQAMAwsLIAAoAgQgARDnBCABLQAoIQMgAUEAOgAoIAEtAHkhBCABQQA6AHkCQCAAKAIIIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBDoAeQwBCyABLQAoIQMgAUEAOgAoIAEtAHkhBCABQQA6AHkCQCAAKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCABQSxqIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBDoAeQsgAkEQaiQAC+kFAQl/IwBB8AFrIgMkACADQaABakEEaiEEIANBCGpBCGohBSADQQhqQQRyIQYgACgCACEHAkACQANAIAEtAMgBIQACQAJAIActAAAiCEGkAUYNACADIAg6ANsBAkAgAEH/AXEiCUGjAUcNACADQdwBakGjARDeGyABKALEASEAIAEoAsABIQIgA0EBNgIMIANBmO+bATYCCCADQgE3AhQgA0GKBa1CIIYgA0HbAWqthDcD6AEgAyADQegBajYCECADQaABaiADQQhqEI0VIANBtAFqIANB5AFqKAIANgIAIAMgAykC3AE3AqwBIAEgAiAAIANBoAFqEK8aDAQLIAkgCEcNAQwDCyAAQf8BcUGjAUYNAgsgASgCwAEhCgJAAkAgAEH/AXFBGEYNAEEEIQhBACELQQAhCQwBCyADQaABaiABQQEQ7gIgAygCpAEhCCADKAKgASIJQYCAgIB4Rg0DIAMoAqgBIQsgAS0AyAEhAAsCQAJAIABB/wFxIgBB2ABGDQAgAEHfAEYNACABIAEoAngiAEH///v/fnFBgICAgAFyNgJ4IAMgCzYCqAEgAyAI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AkACQAJAIAIoAggiBEUNACABKAIIIgVFDQECQAJAAkACQAJAIARBAUcNACACKAIEIgIoAgBBAUYNASADQTRqIAEoAgQgBRDcEiADQRBqIANBNGogAkEBQQBB/OOCARCNHCgCABCUCCAAQQhqIANBEGpBCGooAgA2AgAgACADKQIQNwIAIABBDGogAygCHBDtEQwICyABKAIEIgYgBSACKAIEIgcgBBDrGEH/AXEOAgIDAQsgACABKAIEIAUQ3BIgAEEUakEAKALgj5sBNgIAIABBACkC2I+bATcCDAwGCyAAQQxqIAYgBRDcEiAAQQhqQQAoAuCPmwE2AgAgAEEAKQLYj5sBNwIADAULQQRBBBCJHSECIABBATYCCCAAIAI2AgQgAEEBNgIAIAJBATYCACAAQQApAtiPmwE3AgwgAEEUakEAKALgj5sBNgIADAQLIAcgBEECdGpBfGoiCEUNAgJAIAgoAgAiCWciCA0AIANBEGogBiAFENwSIAAgA0EQaiAHIAQQqAQMBAsgA0EoaiABIAgQiRQgA0E0aiACIAgQiRQgA0EQaiADQShqIAMoAjgiAiADKAI8EKgEIABBCGogA0EQakEIaigCADYCACAAIAMpAhA3AgAgA0EIaiADQSRqKAIANgIAIAMgAykCHDcDACADKAI0IAIQsSAgAEEMaiEAAkAgAygCBCADIAMoAgBBgICAgHhGGygCCEUNACAAIAMgCUUgCEEfcRCtCAwECyAAIAMQohcMAwsgA0EANgIgIANBATYCFCADQeTjggE2AhAgA0IENwIYIANBEGpBnOSCARCFGwALIABBCGpBACgC4I+bASICNgIAIABBACkC2I+bASIKNwIAIAAgCjcCDCAAQRRqIAI2AgAMAQtBjOSCARCbIAALIANBwABqJAALwQUBBn8jAEGwDmsiAyQAIAJBBHQhBCABQQhqKAIAIQUCQCACQQFGDQAgAUEYaiEGIARBcGpBBHYhBwNAIAYoAgAiCCAFIAggBUkbIQUgBkEQaiEGIAdBf2oiBw0ACwsgA0ECOwGMCSADQYCCiBA2AogJQQAhBiADQQA6AIQJIANC/////w83AvwIIANCBDcC9AggA0IANwLsCCADQoCAgIDAADcC5AgDQAJAIAMtAI0JDQACQCADKALsCEGAAUkNACADQQE6AI0JIANB5AhqEIcU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AHkMAgsgACgCBCIEQcAAaiABEMMKIARBgAFqKAIAIARBhAFqKAIAIAEQgggCQCAEQZgBaigCACIDRQ0AIARBlAFqKAIAIQAgA0EobCEDA0AgACABEJsHIABBKGohACADQVhqIgMNAAsLIAQtADxBBkYNASAEQRBqIAEQwwoMAQsgACgCDCIDRQ0AIAAoAggiBCADQShsaiEFIAFBLGohBgNAAkACQAJAAkACQCAEKAIADgUEAAECAwQLIAQoAgRBAUcNAyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIIIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBzoAeQwDCyABLQAoIQMgAUEAOgAoIAEtAHkhByABQQA6AHkCQCAEKAIEIgAoAgBBGkcNACACIAApAwggAEEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgACABEHcgASADOgAoIAEgBzoAeQwCCyABIAQoAgQQ7wYMAQsgBEEMaigCACIDRQ0AIARBCGooAgAhACADQShsIQMDQCABIAAQoQMgAEEoaiEAIANBWGoiAw0ACwsgBEEoaiIEIAVHDQALCyACQRBqJAAL1QQCBH8BfiMAQYABayICJAACQAJAIAEtABRBAkYNACACQQhqIAAgARDSBSACLQA0QQZGDQAgAkE4akEoaiACQQhqQShqKQMANwMAIAJBOGpBIGogAkEIakEgaikDADcDACACQThqQRhqIAJBCGpBGGopAwA3AwAgAkE4akEQaiACQQhqQRBqKQMANwMAIAJBOGpBCGogAkEIakEIaikDADcDACACIAIpAwg3AzgCQAJAAkACQCACLQBkIgNBfWoiAEEBIABB/wFxQQNJG0H/AXEOAwACAQALIAJB8ABqQQhqIAJBFGopAgA3AwAgAkHuAGogAkEfai0AADoAACACIAIpAgw3A3AgAiACLwAdOwFsIAItAEwhBCACKAI4IQAMAgtBtuSaAUEPQYDlmgEQ3RcAC0EALQDA8Z0BGkEwEIUBIgBFDQIgACACKQMINwMAIABBKGogAkEIakEoaikDADcDACAAQSBqIAJBCGpBIGopAwA3AwAgAEEYaiACQQhqQRhqKQMANwMAIABBEGogAkEIakEQaikD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IQEDQCADIAFqQQhGDQIgACAGajEAACEKIAAgAWogCCAHiDwAACAKIAggCYNCCn58IQggAUEBaiEBIAUgBkEBaiIGakEIRw0ACyAIUA0DDAILQQAhBCAIQgBSDQEgAEEANgIADAMLIAZBeGpBgAZBjOqAARCzEQALA0AgCCIKIAmDQgp+IQggCiAHiKchAQJAAkAgBEGABkkNACABQf8BcUUNASAAQQE6AIgGDAELIAIgBGogAToAACAEQQFqIQQLIAhCAFINAAsLIAAgBDYCACAEQYAGSw0BIARBB2ohAQNAIAAgAWotAAANASAAIAFBeGo2AgAgAUF/aiIBQQdHDQALCw8LIARBf2pBgAZB3OmAARCzEQAL3gQCAn8BfiMAQcAAayIDJAACQAJAAkACQAJAAkACQAJAIAEoAgAOBQABAgMEAAsgA0EwaiACIAEoAhAiBEEAEJUCIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAYLIANBMGogAUEIaiACEIcBIAMtADBBBEYNBCADKQMwIgVC/wGDQgRRDQQgACAFNwIADAULIANBMGogAUEIaiACENsUIAMtADBBBEYNAyADKQMwIgVC/wGDQgRRDQMgACAFNwIADAQLIANBMGogAUEEaiACEOIIIAMtADBBBEYNAiADKQMwIgVC/wGDQgRRDQIgACAFNwIADAMLIANBMGogAUEIaiACEKkDIAMtADBBBEYNASADKQMwIgVC/wGDQgRRDQEgACAFNwIADAILAkACQAJAIARFDQAgA0EwaiACIAQQtBogAy0AMEEERg0AIAMpAzAiBUL/AYNCBFINAQsgAUEIaiEBIAItAFwNASADQTBqIAEgAhDVEyADLQAwQQRGDQIgAykDMCIFQv8Bg0IEUQ0CIAAgBTcCAAwDCyAAIAU3AgAMAgsgA0EQaiABEP4RIANBMGogAygCECADKAIUEMYEIANBJGogAygCNCIBIAMoAjhBASACLQBiENABIANBCGogA0EkahDBEyADQRhqIAIgAygCCCADKAIMEMANAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAgA0EkahCmHSADKAIwIAEQhR8MAgsgA0EkahCmHSADKAIwIAEQhR8LIABBBDoAAAsgA0HAAGokAAuPBQECfyMAQTBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBfmoiBEEGIARBCUkbDgkAAQIDBAUGBwgACyADQQE2AhQgA0GY75sBNgIQIANCATcCHCADQYsCNgIMIAMgACkCCDcCKCADIANBCGo2AhggAyADQShqNgIIIAEgAiADQRBqELceIQAMCAsgAyAAQQRqNgIIIANBAjYCFCADQeDBmAE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahC3HiEADAcLIANBADYCICADQQE2AhQgA0GEwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAYLIANBADYCICADQQE2AhQgA0GUwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAULIANBADYCICADQQE2AhQgA0GwwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAQLIANBADYCICADQQE2AhQgA0HQwpgBNgIQIANCBDcCGCABIAIgA0EQahC3HiEADAMLIAMgADYCCCADQQE2AhQgA0GY75sBNgIQIANCATcCHCADQYwCNgIsIAMgA0EoajYCGCADIANBCGo2AiggASACIANBEGoQtx4hAAwCCyADIABBBGo2AgggA0ECNgIUIANB2MKYATYCECADQgE3AhwgA0H6ADYCLCADIANBKGo2AhggAyADQQhqNgIoIAEgAiADQRBqELceIQAMAQsgAyAAQQRqNgIIIANBATYCFCADQZjvmwE2AhAgA0IBNwIcIANB+gA2AiwgAyADQShqNgIYIAMgA0EIajYCKCABIAIgA0EQahC3HiEACyADQTBqJAAgAAv0BAEHfyMAQRBrIgIkACAAKAIAIQACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAggiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAELoYIABBLGogAikDACACKAIIENEKCyABIAAQdyAAIAM6ACggACAEOgB5DAMLIAAtACghAyAAQQA6ACggAC0AeSEEIABBADoAeQJAIAEoAgQiASgCAEEaRw0AIAIgASkDCCABQRhqKAIAELoYIABBLGogAikDACACKAIIENEKCyABIAAQdyAAIAM6ACgg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BUUNAiAFIAQ2AAAgBUEEaiEEDAELQQAhAyAEIAVB////B3EiBUYNASACQQA2AhwgAiAFNgIYQQEhAyACQQE2AhQgAkEIaiACQRRqQfDSgAEQrhUgAigCCCEFIAIoAgwhBiAEQX9zQR92IARBgNCYARCJGiEEIAJBADYCHCACIAQ2AhggAkEBNgIUIAJBCGogAkEUakHw0oABEK4VIAIoAggiByACKAIMakF/akEAIAdrcSIHIARJDQEgACgCACAFIAZqQX9qQQAgBWtxIAUgBxDaAyIERQ0BCyAAIAFB////ByABQf///wdJG0GAgIBwcjYCCCAAIAQ2AgBBACEDCyACQSBqJAAgAwvpBAIEfwR+IwBB0ABrIgIkAAJAAkACQAJAAkACQAJAAkAgASgCAA4HBAEAAgADBgALIABBDDYCACAAIAEpAwA3AwggAEEoaiABQSBqKQMANwMAIABBIGogAUEYaikDADcDACAAQRhqIAFBEGopAwA3AwAgAEEQaiABQQhqKQMANwMADAYLIAJBEGogAUEQaikCADcDACACQQhqQRBqIAFBGGopAgA3AwAgAiABKQIINwMIIAEoAgQhAUELIQNBACEEDAMLIAJBEGogAUEQaikCADcDACACQQhqQRBqIAFBGGopAgA3AwAgAiABKQIINwMIIAEoAgQhAUELIQNBASEEDAILIABBCjYCACAAIAEpAgQ3AgQgARDYBwwDCyACQRBqIAFBFGopAgA3AwAgAkEYaiABQRxqKQIANwMAIAIgASkCDDcDCCABKAIkIQUgASgCCCEBQQAhAwsgACABNgIIIAAgBDYCBCAAIAM2AgAgACACKQMINwIMIAAgBTYCJCAAQRRqIAJBEGopAwA3AgAgAEEcaiACQRhqKQMANwIADAELIAJBIGogASgCBBCdBSACKAIkIQECQCACKAIgIgNBC0YNACACQRBqIAJBIGpBFGopAgAiBjcDACACQRhqIAJBIGpBHGopAgAiBzcDACACIAIpAiwiCDcDCCACKAJEIQQgAikDSCEJIAAgAigCKDYCCCAAIAE2AgQgACADNgIAIAAgCDcCDCAAQRRqIAY3AgAgAEEcaiAHNwIAIAAgCTcDKCAAIAQ2AiQMAQsgACABNgIMIABBBjYCCCAAQQw2AgALIAJB0ABqJAAL4AQBB38jAEEgayICJAAg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F2ogA0EWai0AADoAAAwCCyAAQQI6ABQgACACNgIADAELIAEoAsQBIQQgASgCwAEhAiADQcsAIAEQiAs3AwggARCHDiADEIoYIgs3AxggA0EYaiADQQhqELYLIQUgCxDGHQJAAkAgBQ0AIANCwcrZi8YNNwMYIANBGGogA0EIahC2CyEFQsHK2YvGDRDGHSAFRQ0BCyADQamAgIB4NgIYIAEgAiAEIANBGGoQhA0LIABBADYCGCAAQQA6ABQgAEEANgIQIAAgBDYCDCAAIAI2AgggACADKQMINwMACyADQTBqJAAL4AQCBn8BfiMAQYABayIDJAACQAJAAkACQCABLQDIASIEQYABRw0AIANBKGogARDDCyADKAIwIQUgAykDKCIJUA0CIANBADYCeCADIAMoAjQ2AnQgAyAFNgJwIANBADoAfCADIAk3A2hCACEJDAELAkAgBEHAAEYNACADQShqQQRyIAQQ3hsgA0EaNgI8IANByaibATYCOCADQbCAgIB4NgIoIAEoAsABIAEoAsQBIANBKGoQhRUhBSABLQDIAUGiAUcNAiABEMcRIQQgARCHDiABIAQQ5REMAgsgA0HoAGogARCsDUIBIQkLIANBCGpBEGogA0HwAGopAwA3AwAgA0EgaiADQegAakEQaikDADcDACADIAk3AwggAyADKQNoNwMQAkACQAJAAkAgAS0AyAFBAkcNACADQegAaiABEOcIIAMoAmgiBkGAgICAeEcNASADKAJsIQUMAwsgARCiDSIFDQJBAyEHDAELIANByABqIANB9ABqKQIANwMAIAMgAykCbDcDQEECIQcLIAEoArwBIQgCQEEIQdgAEOsfIgVFDQAgBSADKQMINwMAIAUgBjYCICAFQRhqIANBCGpBGGopAwA3AwAgBUEQaiADQQhqQRBqKQMANwMAIAVBCGogA0EIakEIaikDADcDAAJAQSFFDQAgBUEkaiADQcAAakEh/AoAAAtBACEBIAVBADoAUiAFIARBgAFGOgBRIAVBADoAUCAFIAg2AkwgBSACNgJIIAUgBzoARQwDCwALIANBCGoQuxwLQQEhAQsgACAFNgIEIAAgATYCACADQYABaiQAC88EAQl/IwBBMGsiAiQAAkACQAJAAkACQCABKAIAQYCAgIB4Rg0AAkACQCABKAIIIgNFDQAgA0EMbCIEQXRq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IAAgBSAJGygCADYCDA8LIAMgBEHMuIABELMRAAsgBSAEQdy4gAEQsxEACyAGIARBzLiAARCzEQALIAcgBEHcuIABELMRAAsgByAEQcy4gAEQsxEACyADIARB3LiAARCzEQALIAwgBEHMuIABELMRAAsgCSAEQdy4gAEQsxEACyAMIARBzLiAARCzEQALIAsgBEHcuIABELMRAAuxBAEHfwJAAkACQAJAAkACQAJAAkACQCACIAEoAggiBU8NAAJAIAEoAgQgAkEUbGoiBigCBCIHRQ0AIAcgASADQf8BcWotAEhqIgcgASgCICIITw0CIAEoAhwgB0ECdGogBDYCAAsCQCAGKAIAIgYNACABKAIUIQcMBwsgBiABKAIUIgdPDQIgA0H/AXEiCSABKAIQIgggBkEJbGoiCi0AACILSQ0GIAkgC0YNAyABQQxqIQogA0H/AXEhBQNAAkAgCCAGIgJBCWxqKAAFIgYNAEEAIQYMBwsgBiAHTw0FIAUgCCAGQQlsaiILLQAAIglLDQALIANB/wFxIAlJDQUgCyAENgABDAcLIAIgBUG8roABELMRAAsgByAIQcyugAEQsxEACyAGIAdB3K6AARCzEQALIAogBDYAAQwDCyAGIAdB7K6AARCzEQALAkAgByAKKAIARw0AIApB2LGAARDsFSABKAIQIQgLIAEgB0EBaiIFNgIUIAggB0EJbGoiASAGNgAFIAEgBDYAASABIAM6AAACQCACIAdLDQAgCCACQQlsaiAHNgAFDAILIAIgBUH8roABELMRAAsCQCAHIAEoAgxHDQAgAUEMakHYsYABEOwVIAEoAgghBQsgASAHQQFqNgIUIAEoAhAgB0EJbGoiCCAGNgAFIAggBDYAASAIIAM6AAAgAiAFTw0BIAEoAgQgAkEUbGogBzYCAAsgAEEDNgIADwsgAiAFQYyvgAEQsxEAC7QEAgV/AX4CQCABKAIwIgIgACgCkAFLDQAgACACNgKQAQsgAEEIaiECAkAgACgCCEEKRg0AIAIQxAgLIAAgASkDADcDACAAIAEoAig2AnggAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACACIAFBCGopAwA3AwACQCAAKAJoIAEoAiwiAkYNACAAIAI2AmggACAAKAJkIAIgACgCbGsiAms2AlwgACAAKAJgIAJqNgJYCwJAIAAoAiBBgICAgHhGDQAgASgCJCEDAkAgACgCKCIEIAEoAiAiAkkNACAAIAI2AiggBCACRg0AIAQgAmshBCAAKAIkIAJBBXRqIQIDQAJAIAIpAwAiB0IDg0IAUg0AIAenIgUgBSgCACIGQX9qNgIAIAZBAUcNACAFIAUoAhAQwRsLIAJBIGohAiAEQX9qIgQNAAsLIAAoAjQiAiADSQ0AIAAgAzYCNCACIANGDQAgAiADayEEIAAoAjAgA0EYbGohAgNAAkAgAikDACIHQgODQgBSDQAgB6ciBSAFKAIAIgZBf2o2AgAgBkEBRw0AIAUgBSgCEBDBGwsgAkEYaiECIARBf2oiBA0ACwsgACABKQNgNwPAASAAQcgBaiABQegAaigCADYCACAAQZgBahD8HiAAQbABaiABQdAAaikDADcDACAAQagBaiABQcgAaikDADcDACAAQaABaiABQcAAaikDADcDACAAIAEpAzg3A5gBIAAgASkDWDcDuAEL1AQDBn8CfgF8IwBBwABrIgIkACABKALAASEDIAIgAS0AyAEiBDoAHwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQeQARg0AAkAgBEFAag4DAwQFAAsgBEHaAEYNASAEQeoARg0BIARB3n5qDgIFBgcLIAEQhw4gASgCvAEhBEECIQVCACEIDAgLIARB6gBGIQYgARCHDiABKAK8ASEEQQEhBUIAIQgMBwsgAkEgaiABEKwNIAIpAzAiCUKAgICAcIMhCCACLwAlIAItACdBEHRyIQEgAisDKCEKIAItACQhBiACKAIgIQQgCachB0EAIQUMBwsgAkEIaiABIAMgASgCxAEQqhcgAigCCCACKAIMEPUVIQkgARCGESEKIAEQhw4gCUKAgICAcIMhCCABKAK8ASIGQQh2IQEgCachB0EDIQUgAyEEDAYLIAJBEGogASADIAEoAsQBEKoXIAIoAhAgAigCFBD1FSEIIAEQyREhByABEIcOIAEoArwBIgZBCHYhASAIvyEKQQQhBUIAIQggAyEEDAULIAEQxxEhBCABEIcODAILIAEoAnAQgRshBAwBCyACQQE2AiQgAkHgu5sBNgIgIAJCATcCLCACQYoFrUIghiACQR9qrYQ3AzggAiACQThqNgIoIAJBIGpB6LubARCFGwALIABBBzYCACAAIAQ2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fGohAQNAIAcgAy0AAEYNAiADQQFqIQMgAUF/aiIBDQAMAwsLIAMgBU8NAQNAIAcgAy0AAEYNASADQQFqIgMgBUcNAAwCCwsgACADIAhrIARqIgM2AgRBASEGIAAgA0EBajYCCAsgACAGNgIAC9kDAQR/IwBBgAFrIgIkAAJAAkAgACgCDCIDKAIAQRpHDQAgAiABKAIAIAEoAgQgA0EIaiIEELUMIAIoAgBBMkYNASADEMkBIANBOGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAgA0EoaiACQShqKQMANwMAIANBIGogAkEgaikDADcDACADQRhqIAJBGGopAwA3AwAgA0EQaiACQRBqKQMANwMAIAQgAkEIaikDADcDACADIAIpAwA3AwAMAQsgAyABEEYLAkAgACgCCCIDRQ0AIANBBHQhBCAAKAIEQQxqIQADQAJAAkAgACgCACIDKAIAQRpHDQAgAkHAAGogASgCACABKAIEIANBCGoiBRC1DCACKAJAQTJGDQEgAxDJASADQThqIAJBwABqQThqKQMANwMAIANBMGogAkHAAGpBMGopAwA3AwAgA0EoaiACQcAAakEoaikDADcDACADQSBqIAJBwABqQSBqKQMANwMAIANBGGogAkHAAGpBGGopAwA3AwAgA0EQaiACQcAAakEQaikDADcDACAFIAJBwABqQQhqKQMANwMAIAMgAikDQDcDAAwBCyADIAEQRgsgAEEQaiEAIARBcGoiBA0ACwsgAkGAAWokAAvdAwEFfyMAQYABayICJAACQAJAAkAgAS0AFEECRg0AIABBGjYCACAAIAEpAwA3AwggAEEYaiABQRBqKQMANwMAIABBEGogAUEIaikDADcDAAwBCyACQQhqIAEoAgAiA0EgaikDADcDACACQRBqIANBKGopAwA3AwAgAkEYakEIaiIEIANBCGopAwA3AwAgAiADKQMYNwMAIAIgAykDADcDGCADKAIUIQUgAygCECEGIAJBKGogAhDQBkEALQDA8Z0BGkHAABCFASIBRQ0BIAEgAikDKDcDACABQThqIAJBKGpBOGopAwA3AwAgAUEwaiACQShqQTBqKQMANwMAIAFBKGogAkEoakEoaikDADcDACABQSBqIAJBKGpBIGopAwA3AwAgAUEYaiACQShqQRhqKQMANwMAIAFBEGogAkEoakEQaikDADcDACABQQhqIAJBKGpBCGopAwA3AwAgAkH4AGogBCkDADcCACAAQQA2AgggACABNgIoIAAgBTYCJCAAIAY2AiAgAEEUNgIAIAIgAikDGDcCcCAAIAIpAmw3AgwgAEEUaiACQewAakEIaikCADcCACAAQRxqIAJB7ABqQRBqKAIANgIAIANBMEEIEJ4SCyACQYABaiQADwsAC/EDAQd/IwBB0ABrIgckAAJAAkACQCABKAIAIghBf2pBAkkNACAHIAEoAgQ2AgQgByAINgIAIAcgASgCECIINgIQIAcgASgCDCIJNgIMIAcgASgCCCIKNgIIIAcgAS0AGDoAGCABKAIUIgFBf2ogCUshCwJAA0ACQAJAIAQgCUkNACAEIAlHDQEMBQsgCiAEaiwAAEG/f0oNBAtBACEMAkAgAUUNACAHIAg2AhwgByABQX9qIgQ2AiAgCw0CIAggAUsNAiAHIAQ2AhQgB0EkaiAFIAYgBxBuIAcoAighAgJAIAcoAiQiDUECRw0AIAAgAjYCBEECIQwMAQsgBCEBIAcoAiwiAyEEIA1BAXENAQsLIAAgDDYCAAwDCyAHQQI2AiggB0GAnZsBNgIkIAdCAjcCMCAHQQ42AkggB0HAATYCQCAHIAk2AkwgByAHQTxqNgIsIAcgB0HMAGo2AkQgByAHQRxqNgI8IAdBJGpBkJ2bARCFGwALAkACQAJAIAQgASgCDCIISQ0AIAQgCEYNAQwCCyABKAIIIARqLAAAQb9/TA0BCyAAIAM2AgggACACNgIEIABBATYCAAwCCyAAIAM2AgggACACNgIEIABBADYCAAwBCyAAIAM2AgggACACNgIEIABBATYCAAsgB0HQAGokAAviAwEHfwJAAkACQAJAAkAgBSAESQ0AIAUgA0sNAUEAIQYgBSAERg0EIAEtAAEhByABLQAAIQggAiAEaiEJAkAgBSAEayIBQQNLDQAgCSEDA0AgCCADLQAAIgVGDQUgByAFRg0FIANBAWohAyABQX9qIgENAAwGCwsCQAJAQYCChAggCSgAACIKIAhBgYKECGwiC3MiA2sgA3JBgIGChHhxQYCBgoR4Rg0AIAkhAwwBCyAJIQNBgIKECCAKIAdBgYKECGwiDHMiCmsgCnJBgIGChHhxQYCBgoR4Rg0DCwNAIAggAy0AACIFRg0EIAcgBUYNBCADQQFqIQMgAUF/aiIBDQAMBQsLIAQgBUGE1oQBEKkgAAsgBSADQYTWhAEQjyAACwJAIAlBfHFBBGoiAyACIAVqIgJBfGoiCksNAANAQYCChAggAygCACIFIAtzIgFrIAFyQYCBgoR4cUGAgYKEeEcNAUGAgoQIIAUgDHMiAWsgAXJBgIGChHhxQYCBgoR4Rw0BIANBBGoiAyAKTQ0ACwsgAyACTw0BA0AgCCADLQAAIgFGDQEgByABRg0BIANBAWoiAyACRw0ADAILCyAAIAMgCWsgBGoiAzYCBEEBIQYgACADQQFqNgIICyAAIAY2AgAL3AMBD38jAEEgayICJAACQCAAKAIIIgNFDQACQCABKAIIIgRFDQAgACgCBCEFIAEoAgQhBkEAIQcgAyEIQQEhCUEBIQpBACELAkACQAJAAkADQCAHIARPDQICQCAGIAdBAXRqIgwtAAAiDSAFIAtBAXQiDmoiDy0AACIQIA0gEEsbIhAgDC0AASINIA8tAAEiDyANIA9JGyINSw0AAkAgCCAAKAIARw0AIABBxKKFARCjFiAAKAIEIQULIAAgCEEBaiIPNgIIIAUgCEEBdGoiCCANOgABIAggEDoAACAPIQgLIAsgCE8NAyAJIAogACgCBCIFIA5qLQABIAwtAAFJIgwbIg0gAyAEIAwbTw0BIA1BAWohDQJAAkAgDEUNACAJIQsgDSEJDAELIAohByANIQoLIAsgCEkNAAsgCyAIQaSihQEQsxEACyAIIANJDQIgAEEANgIIIAIgADYCFCACIAM2AhggAiAIIANrNgIcIAIgBTYCDCACIAUgA0EBdGo2AhAgAkEMahDlCyAAIAAtAAwgAS0ADHE6AAwMBAsgByAEQbSihQEQsxEACyALIAhB1KKFARCzEQALIAMgCEGE85oBEI8gAAsgAEEBOgAMIABBADYCCAsgAkEgaiQAC9wDAQ9/IwBBIGsiAiQAAkAgACgCCCIDRQ0AAkAgASgCCCIERQ0AIAAoAgQhBSABKAIEIQZBACEHIAMhCEEBIQlBASEKQQAhCwJAAkACQAJAA0AgByAETw0CAkAgBiAHQQN0aiIMKAIAIg0gBSALQQN0Ig5qIg8oAgAiECANIBBLGyIQIAwoAgQiDSAPKAIEIg8gDSAPSRsiDUsNAAJAIAggACgCAEcNACAAQcSihQEQ+RUgACgCBCEFCyAAIAhBAWoiDzYCCCAFIAhBA3RqIgggDTYCBCAIIBA2AgAgDyEICyALIAhPDQMgCSAKIAAoAgQiBSAOaigCBCAMKAIESSIMGyINIAMgBCAMG08NASANQQFqIQ0CQAJAIAxFDQAgCSELIA0hCQwBCyAKIQcgDSEKCyALIAhJDQALIAsgCEGkooUBELMRAAsgCCADSQ0CIABBADYCCCACIAA2AhQgAiADNgIYIAIgCCADazYCHCACIAU2AgwgAiAFIANBA3RqNgIQIAJBDGoQ5AsgACAALQAMIAEtAAxxOgAMDAQLIAcgBEG0ooUBELMRAAsgCyAIQdSihQEQsxEACyADIAhBhPOaARCPIAALIABBAToADCAAQQA2AggLIAJBIGokAAuCBAIFfwF+IAAoAgwiASAAKAIEIgJrQQxuIQMCQCABIAJGDQADQAJAAkAgAigCACIBRQ0AIAEQwQEgAUHAAEEIEJ4SDAELAkACQAJAAkACQAJAAkAgAkEEaigCACIBKAIAQXtqIgRBBCAEQQZJGw4FAQIDBAUACyABQQhqEJsNIAEoAigQxQwMBQsgASkDCCIGQgODQgBSDQQgBqciBCAEKAIAIgVBf2o2AgAgBUEBRw0EIAQgBCgCEBDBGwwECyABQQhqEJsNIAEoAigiBBDBASAEQcAAQQgQnhIMAwsCQCABKQMQIgZCA4NCAFINACAGpyIEIAQoAgAiBUF/ajYCACAFQQFHDQAgBCAEKAIQEMEbCyABKAIoIgQQwQEgBEHAAEEIEJ4SDAILIAFBCGoQmw0CQCABKAJIIgRFDQAgBCgCACIFEMcDIAVB4ABBCBCeEiAEQQxBBBCeEgsgASgCKCIEQYCAgIB4Rg0BIAEoAiwiBSABKAIwEPobIAQgBRDCIAwBCyABEJsNAkAgASgCIEEHRg0AIAFBIGoQvAoLIAEoAmgiBBC8CiAEQShBCBCeEiABKAJIIgRBgICAgHhGDQAgASgCTCIFIAEoAlAQ+hsgBCAFEMIgCyABQfAAQQgQnhILIAJBDGohAiADQX9qIgMNAAsLIAAoAgggACgCABDFIAvzAwEFfyMAQSBrIgEkAAJAAkACQCAAKAIAIgJFDQBBACEDA0ACQCAAKAIIIgQgACgCBE8NACACIARqLQAAQcUARw0AIAAgBEEBajYCCAwCCwJAAkAgA0UNACAAKAIQIgJFDQAgAkHTjpgBQQIQ7QUNBCAAKAIADQAgACgCECIERQ0BQQEhAiAEQeTEmwFBARDtBUUNAQwFCyABIABB8wAQ0Q0CQCABLQAAQQFHDQAgAS0AASECAkAgACgCECIERQ0AIARB5LSXAUHUtJcBIAJBAXEiBRtBGUEQIAUbEO0FDQULIAAgAjoABCAAQQA2AgAMAQsCQCAAKAIADQAgACgCECIERQ0BQQEhAiAEQeTEmwFBARDtBUUNAQwFCyABIAAQswQCQCABKAIADQAgAS0ABCECAkAgACgCECIERQ0AIARB5LSXAUHUtJcBIAJBAXEiBRtBGUEQIAUbEO0FDQULIAAgAjoABCAAQQA2AgAMAQsgAUEQakEIaiABQQhqKQIANwMAIAEgASkCADcDEAJAIAAoAhAiAkUNACABQRBqIAIQ8wINBCAAKAIQIgJFDQAgAkHomZgBQQIQ7QUNBAtBASECIABBARCUAg0ECyADQX9qIQMgACgCACICDQALC0EAIQIMAQtBASECCyABQSBqJAAgAgvaAwIGfwN+IAIpAwAgAigCCBDuFyEJIAEoAgAiA0FgaiEEIAlCGYhCgYKEiJCgwIABfiEKIAEoAgQiBSAJp3EhBkEAIQcCQAJAAkADQAJAIAMgBmopAAAiCyAKhSIJQn+FIAlC//379+/fv/9+fINCgIGChIiQoMCAf4MiCVANAANAIAIgBCAJeqdBA3YgBmogBXEiCEEFdGsQ+x0NAyAJQn98IAmDIglQRQ0ACwsgCyALQgGGg0KAgYKEiJCgwIB/g1BFDQIgBiAHQQhqIgdqIAVxIQYMAAsLIANBACAIa0EFdGohBkGAASECAkAgAyAIQQV0QQV1IghqIgQpAAAiCSAJQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAMgCEF4aiAFcWoiAykAACIJIAlCAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdLDQAgASABKAIIQQFqNgIIQf8BIQILIAQgAjoAACADQQhqIAI6AAAgASABKAIMQX9qNgIMIAZBYGopAwAiCUIAUg0BCyAAQgA3AwAPCyAAIAZBeGooAgA2AgggACAGQXBqKQMANwMAAkAgCUIDg0IAUg0AIAmnIgEgASgCACIDQX9qNgIAIANBAUcNACABIAEoAhAQwRsLC9QDAgR/Bn4CQAJAIAC9IgZCgICAgICAgPj/AINCgICAgICAgPj/AFENAEIAIAG9Igd9QoCAgICAgID4/wCDUA0AAkAgBkL///////////8AgyIIIAdC////////////AIMiB1QNACAHQgAgB0KAgICAgICAeHwiCSAJIAdWGyIJQoCAgICAgID4/wCDIgpRDQIgCUI0iCIJpyECIAhCACAIQoCAgICAgIB4fCILIAsgCFYbIgtCgICAgICAgPj/AIN9IAcgCn0iB4IhCAJAIAtCNIgiCiAJUQ0AIAqnIgMgAmsiBEEDcSEFAkAgAiADa0F8Sw0AIARBfHEhAwNAIAhCAYYiCEIAIAcgCCAHVBt9QgGGIghCACAHIAggB1QbfUIBhiIIQgAgByAIIAdUG31CAYYiCEIAIAcgCCAHVBt9IQggA0F8aiIDDQALCyAFRQ0AQQAgBWshAwNAIAhCAYYiCEIAIAcgCCAHVBt9IQggA0EBaiIDDQALCyAGQoCAgICAgICAgH+DIQcCQCAIUA0AIAJBNCAIeadBP3NrIgMgAiADIAJJGyIDa61CNIYgB3wgCCADQT9xrYZ8vw8LIAe/IQALIAAPCyAAIAGiIgAgAKMPCwAL8AMCB38BfCMAQeAAayIDJAACQAJAAkACQCAAKAIAIgQQkCANAEEAIQUCQEEBQQIgBBAFIgZBAUYbQQAgBhsiBkECRg0AQQAhB0EAIQAMAwsgA0EYaiAEEAwCQCADKAIYRQ0AIAMrAyAhCkEDIQBBACEFQQAhBwwDCyADQRBqIAQQBgJAIAMoAhAiBEUNACADQQhqIAQgAygCFBDAHyADKAIMIghBgICAgHhGDQAgAygCCCEEIAMgCDYCMCADIAQ2AiwgAyAINgIoQQUhAEEAIQdBASEFDAILIANBNGogABC6DgJAAkAgAygCNCIJQYCAgIB4RiIFDQBBBiEAIAMoAjghBCADKAI8IQgMAQsgA0EBNgJEIANBmO+bATYCQCADQgE3AkwgA0ENNgJcIAMgADYCWCADIANB2ABqNgJIIANBKGogA0HAAGoQ9wxBESEAIAMoAiwhBCADKAIwIQgLIAlBgICAgHhHIQcMAQsgA0EHOgBAIANBwABqIAEgAhDoESEADAILIAitvyEKCyADIAo5A0ggAyAENgJEIAMgBjoAQSADIAA6AEAgA0HAAGogASACEOgRIQACQAJAIAcNACAFRQ0CDAELIAkgBBCwICAFRQ0BIAMoAiwhBAsgAygCKCAEELAgCyADQeAAaiQAIAALhQQBAn8gACABaiECAkACQCAAKAIEIgNBAXENACADQQJxRQ0BIAAoAgAiAyABaiEBAkAgACADayIAQQAoAqDwnQFHDQAgAigCBEEDcUEDRw0BQQAgATYCmPCdASACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQ2gcLAkACQAJAAkAgAigCBCIDQQJxDQAgAkEAKAKk8J0BRg0CIAJBACgCoPCdAUYNAyACIANBeHEiAxDaByAAIAMgAWoiAUEBcjYCBCAAIAFqIAE2AgAgAEEAKAKg8J0BRw0BQQAgATYCmPCdAQ8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACwJAIAFBgAJJDQAgACABEPYIDwsgAUH4AXFBiO6dAWohAgJAAkBBACgCkPCdASIDQQEgAUEDdnQiAXENAEEAIAMgAXI2ApDwnQEgAiEBDAELIAIoAgghAQsgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBACAANgKk8J0BQQBBACgCnPCdASABaiIBNgKc8J0BIAAgAUEBcjYCBCAAQQAoAqDwnQFHDQFBAEEANgKY8J0BQQBBADYCoPCdAQ8LQQAgADYCoPCdAUEAQQAoApjwnQEgAWoiATYCmPCdASAAIAFBAXI2AgQgACABaiABNgIADwsLiQQBBX8jAEHQAGsiAyQAIANCADcCQCADIAEgA0HAAGoQ2wsgAygCBCEEAkACQCADKAIAIgVBKkYNAAJAQThFDQAgAEEIaiADQQhqQTj8CgAACyAAIAQ2AgQgACAFNgIADAELAkACQCACKAIIIgZFDQAgAiACLwEQQQFqIgU7ARAgBUH//wNxIAVGDQEgA0IANwIIIANCgICAgMAANwIAIANBADsBECADQcAAaiADIAIoAgxB3LmEARCiCCACKAIEIgUgBhDuGSACKAIAIAVBBEEUELURIAJBCGogA0HAAGpBCGooAgA2AgAgAiADKQJANwIADAELIANCADcCCCADQoCAgIDAADcCACADQQA7ARAgA0HAAGogAyACKAIMQey5hAEQogggAigCBCIFQQAQ7hkgAigCACAFQQRBFBC1ESACQQhqIANBwABqQQhqKAIANgIAIAIgAykCQDcCAAsgAigCHCEGIAJBADYCHCACKAIYIQcCQCAGRQ0AIAchBQNAIAUoAgAgBUEEaigCAEEEQQgQtREgBUEQaiEFIAZBf2oiBg0ACwsCQCACKAIUDQAgAkEUakGAtIQBEIwWIAIoAhghBwsgB0EAOgAMIAdBADYCCCAHQoCAgIDAADcCACAAIAQ2AgwgACACNgIIIAAgATYCBCAAQSo2AgAgAkEBNgIcCyADQdAAaiQAC9oDAgV/AX4jAEHAAGsiASQAIAAoAgwhAiABIAFBP2o2AgwCQAJAAkACQAJAAkAgAkF/Rg0AIAIgACgCBCIDIANBAWpBA3ZBB2wgA0EISRsiA0EBdkkNAyADIAIgAyACSxsiAkEOSQ0BIAJB/v///wFLDQBBfyACQQN0QQhqQQduQX9qZ3ZBAWohAgwCCxDaGQALQQRBCEEQIAJBB0kbIAJBA0kbIQILIAFBLGogAhC4DyABKAIwIQIgASgCLCIDRQ0CIAEoAjQhBAJAIAJBCWoiBUUNACADQf8BIAX8CwALIAEgAjYCICABIAM2AhwCQCAAKAIMRQ0AIAAoAgAhAgNAIAIpAwAhBiACQQhqIQIgBkKAgYKEiJCgwIB/g0KAgYKEiJCgwIB/UQ0AC0Gyo5sBQShB5KGaARDdFwALQQAhAiABQQA2AiggASAENgIkAkADQCACQRBGDQEgACACaiIDKAIAIQQgAyABQRBqIAJqQQxqIgUoAgA2AgAgBSAENgIAIAJBBGohAgwACwsgASgCICICRQ0BIAEoAhwgAkECdEELakF4cSIDayACIANqQQlqQQgQnhIMAQsgACABQQxqQe8EENAEC0GBgICAeCECCyABQcAAaiQAIAIL2gMCCX8BfiMAQcAAayICJAAgAiABNgIMIAAoAgwhAyACIAJBDGo2AhACQCADQX9GDQACQAJAAkAgAyAAKAIEIgEgAUEBakEDdkEHbCABQQhJGyIBQQF2SQ0AIAJBMGpBDEEIIAEgAyABIANLG0EBahCFDCACKAI0IQQgAigCMCIFRQ0CIAIoAjghBiACIAIoAjw2AiwgAiAGNgIoIAIgBDYCJCACIAU2AiAgAkKMgICAgAE3AhggAiAAQRBqNgIUIAAoAgAiBykDAEJ/hUKAgYKEiJCgwIB/gyELIAJBFGpBDGohCEEAIQECQANAIANFDQECQANAIAtCAFINASABQQhqIQEgB0EIaiIHKQMAQn+FQoCBgoSIkKDAgH+DIQsMAAsLIAIgBSAEIAEgACALeqdBA3YgAWoiCRC7GRC1FSAFIAIoAgBBf3NBDGxqIgogACgCACAJQX9zQQxsaiIJKQAANwAAIApBCGogCUEIaigAADYAACADQX9qIQMgC0J/fCALgyELDAALCyACIAAoAgwiATYCLCACIAYgAWs2AiggACAIEJEhIAJBFGoQghUMAQsgACACQRBqQf8BQQwQjwULQYGAgIB4IQQLIAJBwABqJAAgBA8LENkZAAv0AwIEfwF+IwBBMGsiAiQAIAEpAwghBiABKAIEIQMCQAJAAkACQAJAAkACQAJAAkAgASgCAEGAgICAeHMiBEEVIARBFUkbQX9qDg8BAAACAAAAAAAAAAMEBQYACyABIAJBL2pB2ICAARDqGiEEIAJBAToAJCACIAQ2AigMBwsgAkEkaiADQf8Bca0QzBEMBQsgAkEkaiAGEMwRDAQLIAEoAgQhBCACQSRqIAEoAggiAyABKAIMENYTIAQgAxCOIAwECyACQSRqIAMgBqcQ1hMMAgsgASgCBCEEIAJBJGogASgCCCIDIAEoAgwQxQogBCADEI4gDAILIAJBJGogAyAGpxDFCgsgARDmEQsgAUEQaiEDAkACQAJAAkACQCACLQAkQQFHDQAgAigCKCEEIAMQmR4gBEGAfnEhBQwBCyACLQAlIQRBACEFIAMoAgAiA0GWgICAeEcNAQsgBSAEQf8BcXIhAQwBCyACQRxqIAFBHGooAgA2AgAgAiADNgIQIAIgASkCFDcCFEEBIQMgAkEIaiACQRBqEJsQIAIoAgwhASACKAIIIQUCQAJAIARBAXFFDQAgBUEBcQ0CDAELIAVBAXEhBEEAIQMgBA0BCyAAIAM6AAFBACEBDAELIAAgATYCBEEBIQELIAAgAToAACACQTBqJAAL2gMBB38gAkH/AXEhBAJAAkACQAJAAkACQCADQQFGDQAgACgCDCgCACAEaiIBIAAoAggiAigCCCIFTw0BIAIoAgQgAUECdGogAzYCACAAKAIQKAIAIARqIgEgAigCCCIFTw0CIAIoAgQgAUECdGogAzYCAA8LAkAgACgCACgCDCIDDQBBACEDDAULAkAgAyAAKAIEIgIoAggiBk8NACACIAFB/wFxIgVqQcgAaiEHIAIoAgQhCANAIAggA0EUbGoiCSEDAkACQAJAIAkoAgQiAUUNACABIActAABqIgMgAigCICIBTw0HIAIoAhwgA0ECdGohAwwBCwNAIAMoAAAiA0UNAiADIAIoAhQiAU8NCCACKAIQIANBCWxqIgFBBWohAyAFIAEtAAAiCksNAAsgBSAKRw0BIAFBAWohAwsgAygAACIDQQFHDQcLIAkoAgwiAyAGSQ0ACwsgAyAGQazjgwEQsxEACyABIAVBwKWAARCzEQALIAEgBUHQpYABELMRAAsgAyABQbzjgwEQsxEACyADIAFBjOODARCzEQALAkAgACgCDCgCACAEaiICIAAoAggiASgCCCIFTw0AIAEoAgQgAkECdGogAzYCAA8LIAIgBUHgpYABELMRAAvKAwEGfwJAAkACQAJAAkACQCAFIARJDQAgBSADSw0BQQAhBiAFIARGDQUgAS0AACEHIAIgBGohCAJAIAUgBGsiAUEDSw0AIAghAwNAIAcgAy0AAEYNBiADQQFqIQMgAUF/aiIBDQAMBwsLAkBBgIKECCAIKAAAIAdBgYKECGwiCXMiA2sgA3JBgIGChHhxQYCBgoR4Rg0AIAghAwNAIAcgAy0AAEYNBiADQQFqIQMgAUF/aiIBDQAMBwsLIAhBBCAIQQNxIgprIgtqIQMgAUEJSQ0CIAMgAiAFaiIFQXhqIgJLDQMDQEGAgoQIIAMoAgAgCXMiAWsgAXJBgIGChHhxQYCBgoR4Rw0EQYCChAggA0EEaigCACAJcyIBayABckGAgYKEeHFBgIGChHhHDQQgA0EIaiIDIAJNDQAMBAsLIAQgBUGwwoABEKkgAAsgBSADQbDCgAEQjyAACyALIAFPDQIgBSAKaiAEa0F8aiEBA0AgByADLQAARg0CIANBAWohAyABQX9qIgENAAwDCwsgAyAFTw0BA0AgByADLQAARg0BIANBAWoiAyAFRw0ADAILCyAAIAMgCGsgBGo2AgRBAiEGCyAAIAY2AgAL1wMCCX8BfiMAQcAAayICJAAgAiABNgIMIAAoAgwhAyACIAJBDGo2AhACQCADQX9GDQACQAJAAkAgAyAAKAIEIgEgAUEBakEDdkEHbCABQQhJGyIBQQF2SQ0AIAJBMGpBEEEIIAEgAyABIANLG0EBahCFDCACKAI0IQQgAigCMCIFRQ0CIAIoAjghBiACIAIoAjw2AiwgAiAGNgIoIAIgBDYCJCACIAU2AiAgAkKQgICAgAE3AhggAiAAQRBqNgIUIAAoAgAiBykDAEJ/hUKAgYKEiJCgwIB/gyELIAJBIGohCEEAIQECQANAIANFDQECQANAIAtCAFINASABQQhqIQEgB0EIaiIHKQMAQn+FQoCBgoSIkKDAgH+DIQsMAAsLIAIgBSAEIAEgACALeqdBA3YgAWoiCRD5HRC1FSAFIAIoAgBBf3NBBHRqIgogACgCACAJQX9zQQR0aiIJKQAANwAAIApBCGogCUEIaikAADcAACADQX9qIQMgC0J/fCALgyELDAALCyACIAAoAgwiATYCLCACIAYgAWs2AiggACAIEJEhIAJBFGoQghUMAQsgACACQRBqQY4CQRAQjwULQYGAgIB4IQQLIAJBwABqJAAgBA8LENkZAAvXAwIJfwF+IwBBwABrIgIkACACIAE2AgwgACgCDCEDIAIgAkEMajYCEAJAIANBf0YNAAJAAkACQCADIAAoAgQiASABQQFqQQN2QQdsIAFBCEkbIgFBAXZJDQAgAkEwakEQQRAgASADIAEgA0sbQQFqEIUMIAIoAjQhBCACKAIwIgVFDQIgAigCOCEGIAIgAigCPDYCLCACIAY2AiggAiAENgIkIAIgBTYCICACQpCAgICAAjcCGCACIABBEGo2AhQgACgCACIHKQMAQn+FQoCBgoSIkKDAgH+DIQsgAkEgaiEIQQAhAQJAA0AgA0UNAQJAA0AgC0IAUg0BIAFBCGohASAHQQhqIgcpAwBCf4VCgIGChIiQoMCAf4MhCwwACwsgAiAFIAQgASAAIAt6p0EDdiABaiIJEM8cELUVIAUgAigCAEF/c0EEdGoiCiAAKAIAIAlBf3NBBHRqIgkpAAA3AAAgCkEIaiAJQQhqKQAANwAAIANBf2ohAyALQn98IAuDIQsMAAsLIAIgACgCDCIBNgIsIAIgBiABazYCKCAAIAgQkSEgAkEUahCCFQwBCyAAIAJBEGpBjwJBEBCPBQtBgYCAgHghBAsgAkHAAGokACAEDwsQ2RkAC+IDAQd/IwBBEGsiAiQAAkACQAJAAkACQCABKAIgIgMNACABKAIAIQMgAUEANgIAIANBAXFFDQMgASgCCCEEAkAgASgCBCIDRQ0AIAQhBQwDC0EAIQUgASgCDCIDRQ0BA0AgBCgCNCEEIANBf2oiAw0ADAILCyABIANBf2o2AiACQAJAIAEoAgBBAUcNAAJAAkAgASgCBA0AIAEoAgghAwJAIAEoAgwiBUUNAANAIAMoAjQhAyAFQX9qIgUNAAsLIAFCADcCCCABIAM2AgQgAUEBNgIADAELIAEoAgQhAwsgASgCCCEGAkAgASgCDCIHIAMvATJJDQADQCACQQRqIAMgBhD1FCACKAIEIgNFDQMgAigCCCEGIAIoAgwiByADLwEyTw0ACwsgB0EBaiEFAkACQCAGDQAgAyEIDAELIAMgBUECdGpBNGohBSAGIQQDQCAFKAIAIghBNGohBSAEQX9qIgQNAAtBACEFCyAAIAc2AgggACAGNgIEIAAgAzYCACABIAU2AgwgAUEANgIIIAEgCDYCBAwFC0GE/ZoBEJsgAAtBwICbARCbIAALIAQhAwsDQCACQQRqIAMgBRD1FCACKAIEIgNFDQEgAigCCCEFDAALCyAAQQA2AgALIAJBEGokAAuIBAEBfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAA4TEhIBAgMEBQYHCAkKCwwNDg8QEQALIABBCGoQkxwMEQsCQCAAKAIEQYCAgIB4Rw0AIABBCGoQqx8gACgCIBDuHyAAQRRqEOkeDBELIABBBGoQqx8gACgCHBDuHyAAQRBqEOkeDBALIABBEGoQ/RkgACgCKBDwHwwPCyAAQRBqEJ0dIAAoAlgQ8B8MDgsgAEEEahCqHwwNCyAAQQRqEOQGDAwLIABBBGoQzh0MCwsgAEEEahDkBgwKCyAAQQRqEOQGDAkLIABBCGoQrB8MCAsgAEEEahDkBiAAQQhqEOQGIABBDGoQ5AYgAEEQahDkBgwHCyAAQRBqEJ4dDAYLIABBBGoQ5AYMBQsgAEEEahDkBgwECyAAQQRqEOQGIABBCGoQ5AYMAwsgAEEQahCeHSAAQcAAahCtHyAAQcQAahCtHwwCCwJAAkACQAJAIAAoAghBgICAgHhzIgFBBCABQQRJGw4EAQIFAwALIABBCGoQrB8gAEEUahDPHQwECyAAKQMgEKcfDAMLIAApAxAgAEEgaikDABDWIQwCCyAAQRhqKQMAIABBIGooAgAQ1yEMAQsgACkDCCAAQRxqLQAAEIQeIABBKGoQqR8LIABB4ABBCBCeEgvJAwEBfwJAAkACQAJAAkACQAJAAkACQAJAIAAtAAgNACABQQlGDQIgAUEbRw0BIABBAToACAwICyABQe0ARg0DDAcLIAFB/wBJDQEgAUGfAU0NBiABQQ12QYC/nAFqLQAAIgJBFE8NAyACQQZ0IAFBB3ZBP3FyQYDBnAFqLQAAIgJBugFPDQQgAkEFdCABQQJ2QR9xckGAy5wBai0AACABQQF0QQZxdkEDcSICQQNHDQcgAUH/g3xqIgJBDksNBUEBIAJ0QYHAAXENBgwFCwJAIAAoAgAiAkUNACACIAAoAgQgAnBrIQIMBwtByJKAARDPGQALIAFBH0shAgwFC0EAIQIgAEEAOgAIDAQLIAJBFEGQsZgBELMRAAsgAkG6AUGgsZgBELMRAAsCQCABQZmlempBAkkNACABQdwLRg0AAkAgAUHYL0YNACABQZA0Rg0BQQEhAiABQYOYBEYNA0EBQQFBAUEBQQFBAiABQZqceGpBGkkbIAFBz6V/akE/SRsgAUGAUWpBMEkbIAFB3nNqQeEESRsgAUH+//8AcUH8yQJGGyECDAMLQQMhAgwCC0EBIQIMAQtBACECCyAAIAAoAgQgAmo2AgQgAguuAwEMfyACIAFBAnRBfGoiBGohBSAAIARqIQYgACABQQF2IgdBAnRqIgRBfGohCAJAAkACQAJAAkADQCAEKAIAIgkgAygCACIKKAIIIgtPDQEgACgCACIMIAtPDQIgAiAJIAwgCigCBCILIAlBDGxqKAIIIgogCyAMQQxsaigCCCINSyIOGzYCACAGKAIAIgkgAygCACIPKAIIIgtPDQMgCCgCACIMIAtPDQQgAkEEaiECIAAgCiANTUECdGohACAEIA5BAnRqIQQgBSAMIAkgDygCBCILIAlBDGxqKAIIIgogCyAMQQxsaigCCCILSyINGzYCACAFQXxqIQUgCEF8QQAgDRtqIQggBkF8QQAgCiALTRtqIQYgB0F/aiIHDQALIAhBBGohCAJAIAFBAXFFDQAgAiAAIAQgACAISSIFGygCADYCACAEIAAgCE9BAnRqIQQgACAFQQJ0aiEACwJAIAAgCEcNACAEIAZBBGpGDQULEM0ZAAsgCSALQcy4gAEQsxEACyAMIAtB3LiAARCzEQALIAkgC0HMuIABELMRAAsgDCALQdy4gAEQsxEACwvWAwEHfwJAAkACQAJAAkAgBSAESQ0AIAUgA0sNAUEAIQYgBSAERg0EIAEtAAEhByABLQAAIQggAiAEaiEJAkAgBSAEayIBQQNLDQAgCSEDA0AgCCADLQAAIgVGDQUgByAFRg0FIANBAWohAyABQX9qIgENAAwGCwsCQAJAQYCChAggCSgAACIKIAhBgYKECGwiC3MiA2sgA3JBgIGChHhxQYCBgoR4Rg0AIAkhAwwBCyAJIQNBgIKECCAKIAdBgYKECGwiDHMiCmsgCnJBgIGChHhxQYCBgoR4Rg0DCwNAIAggAy0AACIFRg0EIAcgBUYNBCADQQFqIQMgAUF/aiIBDQAMBQsLIAQgBUHAwoABEKkgAAsgBSADQcDCgAEQjyAACwJAIAlBfHFBBGoiAyACIAVqIgJBfGoiCksNAANAQYCChAggAygCACIFIAtzIgFrIAFyQYCBgoR4cUGAgYKEeEcNAUGAgoQIIAUgDHMiAWsgAXJBgIGChHhxQYCBgoR4Rw0BIANBBGoiAyAKTQ0ACwsgAyACTw0BA0AgCCADLQAAIgFGDQEgByABRg0BIANBAWoiAyACRw0ADAILCyAAIAMgCWsgBGo2AgRBAiEGCyAAIAY2AgALvQMCBH8GfiMAQSBrIgMkAEEAIQRCACEHAkAgAUKqfVMNACACUA0AQf8PIQQgAUK0AlUNAEIAIQcgA0EQaiABpyIFQQR0IgZBoNSBAWopAwBCACACIAJ5IgiGIglCABDlDyADKQMQIQoCQCADKQMYIgJC/wODQv8DUg0AIAMgBkHAqYEBakHoKmopAwBCACAJQgAQ5Q8gAykDCCIJIAp8IgogCVStIAJ8IQILAkAgAUIbfELTAFQNACAKQn9SDQBBfyEEDAELIAIgAkI/iCILQgl8IgyIIQkCQCAFQeqkDWxBEHUgCKdrIAunakE/aiIFQYJ4SA0AQYAIQf8HIAlC/P////////8AgyAJIAkgDIYgAlEbIAkgCUIDg0IBURsgCSAKQgJUGyAJIAFCBHxCHFQbIgFCAYMgAXwiAUL/////////H1YiBhsgBWoiBUH+D0sNAUIAIAFCAYhC//////////f/AIMgBhshByAFIQQMAQtBACEEIAVBw3dJDQAgCUECIAVrQT9xrYgiAUIBgyABfCIBQv////////8PViEEIAFCAYghBwsgACAENgIIIAAgBzcDACADQSBqJAALwQMBA38jAEEgayIDJAACQAJAIAEgAk0NAAJAAkACQAJAIAAgAmoiBCwAACIFQX9MDQAgBUH/AXEhAgwBC0EAIQAgBUFASQ0EIAEgAmshAQJAAkACQAJAIAVBYE8NAEECIQIMAQsgBUFwTw0BQQMhAgsgAiABTQ0BDAYLIAVBd0sNBUEEIQIgAUEESQ0FCyADQRRqIAQgAhDFBCADKAIUQQFGDQQgAygCHEUNAgJAIAMoAhgiACwAACICQX9KDQAgAkFgSQ0AIAJBcEkNACAALQABQT9xQQx0IAAtAAJBP3FBBnRyIAAtAANBP3FyIAJB/wFxQRJ0QYCA8ABxckGAgMQARg0DCwJAAkACQAJAIAVBYE8NAEECIQIMAQsgBUFwTw0BQQMhAgsgAiABSw0FDAELQQEhACAFQXdLDQVBBCECIAFBBEkNBQsgA0EUaiAEIAIQxQRBASEAIAMoAhRBAUYNBCADIAMoAhgiAiADKAIcajYCECADIAI2AgwgA0EMahCiDCICQYCAxABGDQELIAIQxA1B/wFxQQFzIQAMAwtBwOqEARCbIAALQcDqhAEQmyAAC0EBIQALIANBIGokACAAC/ADAgJ/AX4CQAJAIAAoAgAiAUEJRg0AAkACQAJAAkACQAJAAkACQAJAIAEOCAECAwQFBgcIAAsgACkDECIDQgODQgBSDQkgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0JIAAgACgCEBDBGw8LIAAoAggiASAAKAIMENQIIAAoAgQgAUEIQcgAEK8RIAAoAhAiARCnECABQRhBCBCeEiAAKAIcRQ0IIABBHGoQwQ8PCyAAQQhqEO8BDwsgACgCCCIBIAAoAgwQ4gcgACgCBCABQQhB0AAQrxECQCAAKAIYIgFFDQAgARCnECABQRhBCBCeEgsgACgCHEUNBiAAQRxqEMEPDwsCQAJAAkAgACgCCA4CAQIACyAAQQxqEJUGDwsgAEEQahCMBQ8LIABBEGoQ/QQPCyAAKAIEIgAQkAEgAEHAAEEIEJ4SDwsgACgCBCIBEKcQIAFBGEEIEJ4SIAAoAhBFDQMgAEEQahDBDw8LAkAgACgCBCIAKQMoIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEMEbCwJAAkAgACkDAEIAUg0AIABBCGoQzg4MAQsgABCnEAsgAEHIAEEIEJ4SDwsgACgCBCIAEJABIABBwABBCBCeEg8LIABBCGoQ4wILC90DAQV/IwBBEGsiAiQAIAAoAgAhA0EEIQACQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEUNA0EIIQALIAMgASAAaigCABCnAQwCCwJAIAEoAgQiBC0AbEECRw0AIARBwABqIQEDQCABKAIYIgEtACxBAkYNAAsLAkAgBCgChAEiAUUNACAEKAKAASIFIAFB2ABsaiEGA0ACQAJAAkACQAJAIAUoAgAOBgQBAgMEAAQLIAMgBSgCBBCnAQwDCyAFKAIEQQFHDQIgAyAFKAIIEKcBDAILIAVBBGogAxD1BwwBCyAFQQxqKAIAIgBFDQAgBUEIaigCACEBIABBKGwhAANAIAEgAxCfBCABQShqIQEgAEFYaiIADQALCyAFQdgAaiIFIAZHDQALCyAEQZgBaigCACEAIARBlAFqKAIAIQEgAiADNgIMAkAgAEUNACAAQShsIQADQCACQQxqIAEQ6wYgAUEoaiEBIABBWGoiAA0ACwsgBC0APCIBQQZGDQEgAUECRw0BIARBEGohAQNAIAEoAhgiAS0ALEECRg0ADAILCyABKAIMIgBFDQAgASgCCCEBIABBKGwhAANAIAEgAxCfBCABQShqIQEgAEFYaiIADQALCyACQRBqJAAL1QMCCX8BfiMAQcAAayICJAAgAiABNgIMIAAoAgwhAyACIAJBDGo2AhACQCADQX9GDQACQAJAAkAgAyAAKAIEIgEgAUEBakEDdkEHbCABQQhJGyIBQQF2SQ0AIAJBMGpBECABIAMgASADSxtBAWoQlgwgAigCNCEEIAIoAjAiBUUNAiACKAI4IQYgAiACKAI8NgIsIAIgBjYCKCACIAQ2AiQgAiAFNgIgIAJCkICAgIABNwIYIAIgAEEQajYCFCAAKAIAIgcpAwBCf4VCgIGChIiQoMCAf4MhCyACQSBqIQhBACEBAkADQCADRQ0BAkADQCALQgBSDQEgAUEIaiEBIAdBCGoiBykDAEJ/hUKAgYKEiJCgwIB/gyELDAALCyACIAUgBCABIAAgC3qnQQN2IAFqIgkQ3h0QtRUgBSACKAIAQX9zQQR0aiIKIAAoAgAgCUF/c0EEdGoiCSkAADcAACAKQQhqIAlBCGopAAA3AAAgA0F/aiEDIAtCf3wgC4MhCwwACwsgAiAAKAIMIgE2AiwgAiAGIAFrNgIoIAAgCBCRISACQRRqEIIVDAELIAAgAkEQakGJBUEQEJAFC0GBgICAeCEECyACQcAAaiQAIAQPCxDZGQAL6QMBBH8CQCAAKAIIIgJFDQAgACgCBCIDIAJBKGxqIQQDQAJAAkACQAJAAkAgAygCAA4FBAABAgMECyADKAIEQQFHDQMgASADKAIIEIwBDAMLIAEgAygCBBCMAQwCCyABIAMoAgQiBUHAAGoQhQoCQCAFKAKEASICRQ0AIAUoAoABIQAgAkHYAGwhAgNAAkACQAJAIAAoAgBBfGoOAgIAAQsgASAAQQRqKAIAEIwBDAELIAAgARCyDQsgAEHYAGohACACQah/aiICDQALCwJAIAUoAngiAEUNACAAELgYIAAoAgAgAEEEaigCABDAICAAQRRBBBCeEgsgBUEANgJ4AkAgBUGYAWooAgAiAEUNACAAQShsIQIgBUGUAWooAgBBBGohAANAAkACQAJAAkACQCAAQXxqKAIADgUEAAECAwQLIAAoAgBBAUcNAyABIABBBGooAgAQjAEMAwsgASAAKAIAEIwBDAILIAAgARCBCQwBCyAAIAEQ7QYLIABBKGohACACQVhqIgINAAsLIAUtADxBBkYNASABIAVBEGoQhQoMAQsgA0EMaigCACICRQ0AIANBCGooAgAhACACQShsIQIDQCABIAAQoQcgAEEoaiEAIAJBWGoiAg0ACwsgA0EoaiIDIARHDQALCwvNAwICfwF+IwBBIGsiAyQAIANBEGogAiABKAIYIgRBABCVAgJAAkAgAy0AEEEERg0AIAMpAxAiBUL/AYNCBFENACAAIAU3AgAMAQsCQAJAAkAgBEUNACADQRBqIAIgBBC0GiADLQAQQQRGDQAgAykDECIFQv8Bg0IEUg0BCyADQRBqIAEoAiAgASgCJCACEKoRIAMtABBBBEYNASADKQMQIgVC/wGDQgRRDQEgACAFNwIADAILIAAgBTcCAAwBCwJAAkACQAJAIAEoAgBBAUcNACADQRBqIAFBBGogAhDiCCADLQAQQQRGDQMgAykDECIFQv8Bg0IEUg0BDAMLAkAgASgCECIERQ0AIANBEGogAiAEQX9qQQAQlQIgAy0AEEEERg0AIAMpAxAiBUL/AYNCBFINAgsgA0EANgIQIANBCGogAiADQRBqQePEmwFBARC4DAJAIAMtAAhBBEYNACADKQMIIgVC/wGDQgRRDQAgACAFNwIADAQLIANBEGogAUEIaiACENUTIAMtABBBBEYNAiADKQMQIgVC/wGDQgRRDQIgACAFNwIADAMLIAAgBTcCAAwCCyAAIAU3AgAMAQsgAEEEOgAACyADQSBqJAAL4AMBB38jAEEQayICJAAgAUHAAGogABDDCgJAIAEoAoQBIgNFDQAgASgCgAEiBCADQdgAbGohBSAAQSxqIQYDQAJAAkAgBCgCACIDQQVHDQAgAC0AKCEHIABBADoAKCAALQB5IQggAEEAOgB5AkAgBCgCBCIDKAIAQRpHDQAgAiADKQMIIANBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAMgABB3IAAgBzoAKCAAIAg6AHkMAQsgA0EERg0AAkACQAJAIAMOBAMAAQIDCyAEKAIEQQFHDQIgAC0AKCEHIABBADoAKCAALQB5IQggAEEAOgB5AkAgBCgCCCIDKAIAQRpHDQAgAiADKQMIIANBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAMgABB3IAAgBzoAKCAAIAg6AHkMAgsgACAEKAIEEO8GDAELIAQoAgwiB0UNACAEKAIIIQMgB0EobCEHA0AgAyAAEJsHIANBKGohAyAHQVhqIgcNAAsLIARB2ABqIgQgBUcNAAsLAkAgASgCmAEiA0UNACABKAKUASEEIANBKGwhAwNAIAQgABCbByAEQShqIQQgA0FYaiIDDQALCwJAIAEtADxBBkYNACABQRBqIAAQwwoLIAJBEGokAAvYAwEFfyMAQRBrIgIkACAAKAIAIQMCQAJAAkACQAJAIAEoAgAOBQQAAQIDBAsgASgCBEEBRw0DIAMgASgCCBC9AQwDCyADIAEoAgQQvQEMAgsCQCABKAIEIgQtAGxBAkcNACAEQcAAaiEBA0AgASgCGCIBLQAsQQJGDQALCwJAIARBhAFqKAIAIgBFDQAgBEGAAWooAgAiASAAQdgAbGohBQNAAkACQCABKAIAIgBBBUcNACADIAEoAgQQvQEMAQsgAEEERg0AAkACQAJAIAAOBAMAAQIDCyABKAIEQQFHDQIgAyABKAIIEL0BDAILIAEoAgQgAxCuAgwBCyABQQxqKAIAIQYgAUEIaigCACEAIAIgAzYCDCAGRQ0AIAZBKGwhBgNAIAJBDGogABDwBiAAQShqIQAgBkFYaiIGDQALCyABQdgAaiIBIAVHDQALCyAEQZgBaigCACEAIARBlAFqKAIAIQEgAiADNgIIAkAgAEUNACAAQShsIQADQCACQQhqIAEQ8AYgAUEoaiEBIABBWGoiAA0ACwsgBC0APCIBQQZGDQEgAUECRw0BIARBEGohAQNAIAEoAhgiAS0ALEECRg0ADAILCyABQQRqIAMQwAULIAJBEGokAAvKAwEGfyMAQSBrIgUkAAJAIAJFDQAgASACQQJ0akF8aiIGRQ0AIAYoAgANACACQQJ0IQYgAUF8aiEHIAJB/////wNxIQgDQCAIIQkCQCAGDQBBACECDAILIAlBf2ohCCAHIAZqIQogBkF8aiEGIAooAgBFDQALAkAgCSACSw0AIAkhAgwBCyAJIAJBkOqCARCPIAALAkAgBEUNACADIARBAnRqQXxqIgZFDQAgBigCAA0AIARBAnQhBiADQXxqIQcgBEH/////A3EhCANAIAghCQJAIAYNAEEAIQQMAgsgCUF/aiEIIAcgBmohCiAGQXxqIQYgCigCAEUNAAsCQCAJIARLDQAgCSEEDAELIAkgBEGg6oIBEI8gAAsCQAJAAkACQCABIAIgAyAEEOsYQf8BcQ4CAQIACyAFQRRqIAMgBBDcEiAFKAIYIAUoAhwgASACEO0HIABBBGogBUEUahCwFSAAQQA6AAAMAgsgAEEBOgAAIABBACkC2I+bATcCBCAAQQxqQQAoAuCPmwE2AgAMAQsgBUEIaiABIAIQ3BIgBSgCDCAFKAIQIAMgBBDtByAAQQRqIAVBCGoQsBUgAEECOgAACyAFQSBqJAAL0AMBA38jAEHAAGsiBiQAAkACQAJAIAIgA0kNACABKAIYIgdBAWoiAkUNASAGIAEoAhwiAzYCECAGIAI2AgwgASgCFCEIIAcgA0EBak8NAiADIAhLDQIgASACNgIYAkACQCAFKAIAQQFHDQAgBSgCCCEHDAELIAUoAgQhBwsCQAJAIAQoAhAoAlgiBS0AHEEBcQ0AAkAgAyAITw0AIAUtACBBAnENAQsgAUEIaiEBAkAgBSgCAEEBRw0AQQAgAyACayICIAIgA0sbIgMgBSgCBEkNASABKAIAQX9qQQFLDQAgBS0AIEECcUUNACAFKAIIQQFHDQAgAyAFKAIMSw0BCyAGQRRqIAQoAgggBCgCDCIDKAIIQX9qQXhxakEIaiAHIAEgAygCJBEOAAwBCyAGQQA2AhQLIAAgBikCFDcCACAAQQhqIAZBFGpBCGopAgA3AgAgBkHAAGokAA8LQdzPhAFBHkH8z4QBEN0XAAtBjNCEARCbIAALIAZBAjYCGCAGQYCdmwE2AhQgBkICNwIgIAZBDjYCOCAGQcABNgIwIAYgCDYCPCAGIAZBLGo2AhwgBiAGQTxqNgI0IAYgBkEMajYCLCAGQRRqQZCdmwEQhRsAC+0DAQR/IwBB0ANrIgMkACADIAEQvgkiBDYCDAJAAkAgBEHbAEcNACADQaQBaiABEKsDIAMoAqQBIQQCQEHAAEUNACADQeQAaiADQagBakHAAPwKAAALAkACQCAEQYmAxABHDQACQEHAAEUNACAAIANB5ABqQcAA/AoAAAsgAhDnFwwBCwJAQdQARQ0AIANBEGogA0HoAWpB1AD8CgAACwJAQcAARQ0AIANB7AJqIANB5ABqQcAA/AoAAAsCQEEwRQ0AIANBvAJqIANBEGpBMPwKAAALAkBBJEUNACADQawDaiADQRBqQTBqQST8CgAACyABKAIAIgEoAiANAiABQX82AiACQCABKAIsIgUgASgCJEcNACABQSRqQayChQEQoBYLIAEoAiggBUGYAWxqIgYgBDYCAAJAQcAARQ0AIAZBBGogA0HsAmpBwAD8CgAACwJAQTBFDQAgBkHEAGogA0G8AmpBMPwKAAALAkBBJEUiBA0AIAZB9ABqIAJBJPwKAAALIAEgBUEBajYCLCABIAEoAiBBAWo2AiACQCAEDQAgAEEEaiADQawDakEk/AoAAAsgAEEiNgIACyADQdADaiQADwsgA0EANgKkASADQQxqQZiChQEgA0GkAWpBvIKFARC0GQALQZyChQEQ+BQAC70DAQZ/IwBBIGsiAiQAAkACQAJAAkACQAJAIAEoAggiA0UNACABKAIEIgEgA0EwbCIDaiEEA0AgASgCAEERRw0CIAFBCGooAgBBf2pBAUsNAyABIAAQyAIgAUEwaiEBIANBUGoiAw0ACwtBBCEDQQAhBQwDCyABQTBqIQMMAQsgAUEwaiEDCyACQRRqQQRBBEEEEMwNQQEhBSACKAIYIQYgAigCFEEBRg0BIAIoAhwiByABNgIAIAJBATYCECACIAc2AgwgAiAGNgIIAkAgAyAERg0AQQEhBQNAIAMhAQJAA0AgASgCAEERRw0BIAFBCGooAgBBf2pBAUsNASABIAAQyAIgAUEwaiIDIQEgAyAERw0ADAMLCyABQTBqIQMCQCAFIAIoAghHDQAgAkEIaiAFQQFBBEEEEJ8XIAIoAgwhBwsgByAFQQJ0aiABNgIAIAIgBUEBaiIFNgIQIAMgBEcNAAsLIAVBAnQhBCACKAIMIQMgAigCCCEFQQAhAQNAIAMgAWooAgAgABDIAiAEIAFBBGoiAUcNAAsLIAUgA0EEQQQQrxEgAkEgaiQADwsgBiACKAIcQbCYmwEQqh4AC5YEAQJ/IwBBIGsiAiQAAkACQAJAAkACQAJAIAAtAAAOBAABAgMACyACIAAoAgQ2AgQgASgCAEGbpZgBQQIgASgCBCgCDBEMACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpBnaWYAUEEIAJBBGpB8AAQoQkhASACQSk6ABMgAUHw/pkBQQQgAkETakHxABChCSEAQQAtAMDxnQEaQRQQhQEiAUUNBCABQRBqQQAoAOCtmAE2AAAgAUEIakEAKQDYrZgBNwAAIAFBACkA0K2YATcAACACQRQ2AhwgAiABNgIYIAJBFDYCFCAAQYD2mQFBByACQRRqQfIAEKEJELQRIQEgAigCFCIARQ0DIAIoAhggAEEBEJ4SDAMLIAIgAC0AAToACCACIAEoAgBBoaWYAUEEIAEoAgQoAgwRDAA6ABwgAiABNgIYIAJBADoAHSACQQA2AhQgAkEUaiACQQhqQfEAEIMLEPcOIQEMAgsgACgCBCEAIAEoAgBBsNabAUEFIAEoAgQoAgwRDAAhAyACQQA6ABkgAiADOgAYIAIgATYCFCACQRRqQfD+mQFBBCAAQQhqQfEAEKEJQYD2mQFBByAAQfMAEKEJELQRIQEMAQsgAiAAKAIEIgA2AhQgAUGlpZgBQQZB8P6ZAUEEIABBCGpB8QBByNibAUEFIAJBFGpB9AAQ2AwhAQsgAkEgaiQAIAEPCwALpgQBBn8jAEGwAmsiAiQAIAEtAAQhAyACQRxqQYACQaTBgAEQlBVBACEEIAJBGmpBADsBACACQQA2AiggAkESaiACQSRqKQIANwEAIAIgAikCHDcBCiACLQAvIQUgAS0ABiEGAkBBgAJFDQAgAkEwakEAQYAC/AsACyADQQJ0QayEnQFqKAIAIQcDQCACQTBqIARqIAQ6AAAgBEEBaiIEQYACRw0ACyAAQgA3AoQGIABBjAZqQgA3AgACQEHGAkUNACAAQQBBxgL8CwALIABBADoAjQMgAEGBhIgQNgCJAyAAQYKABCADQQN0djoAiAMgAEEAOgCEAyAAQQA2AoADIABCgICAgHA3A/gCIABCgICAgMAANwPwAiAAQgQ3A+gCIAAgBzYC5AIgAEIANwLcAiAAQYCAgIB4NgLQAiAAQQE6AMcCIAAgBjoAxgIgACACKQEINwGOAyAAQZYDaiACQRBqKQEANwEAIABBngNqIAJBGGooAQA2AQAgAEIANwLsAyAAQoCAgIDAADcC5AMgAEIENwLcAyAAQgA3AtQDIABCgICAgMAANwLMAyAAQgE3AsQDIABCADcCvAMgAEKAgICAwAA3ArQDIAAgATYCsAMgAEEBOgClAyAAIAY6AKQDIAAgBToAowMgACAGOgCiAwJAQYACRQ0AIABB/ANqIAJBMGpBgAL8CgAACyAAIAM6AJQGIABC/////w83AvwFIAJBsAJqJAALzQMBEH8jAEEQayICJAACQAJAAkACQAJAIAEoArwDIgNFDQAgAUG0A2ohBCABQfwDaiEFIAFBzANqIQZBACEHIAMhCANAAkAgB0ECSQ0AIAcgCE8NAyABKAK4AyAHQRRsIglqKAIQIAEoArADKAIATw0AIAEtAPsFIgpBAWohCyABKALUAyIMIQgCQCABKALMAyAMayAKSw0AIAYgDCALQQRBBBCgFyABKALUAyEICyAIIApqQQFqIQ0gASgC0AMiDiAIQQJ0aiEIA0AgCEEBNgIAIAhBBGohCCALQX9qIgsNAAsgASANNgLUAyABKALEAyEPIAEoAsgDIRBBACELAkADQCACQQhqIAQgByALIAgQ9w8gAigCCCILQQFxRQ0BIAIoAgwiCCAQTw0GIAwgBSAPIAhBCWxqIhEtAABqLQAAaiIKIA1PDQcgDiAKQQJ0aiARKAABNgIADAALCyAHIAEoArwDIghPDQYgASgCuAMgCWogDDYCBAsgB0EBaiIHIANHDQALCyAAQQM2AgAgAkEQaiQADwsgByAIQZS1gAEQsxEACyAIIBBBpLWAARCzEQALIAogDUG0tYABELMRAAsgByAIQcS1gAEQsxEAC7sDAQ5/IwBBEGsiAiQAAkACQAJAIAEtACUNACABQRRqIQMgASABLQAYIgRqQRNqIQUgASgCDCEGIAEoAgghByABKAIQIQggASgCBCEJIARBBUkhCgJAAkACQANAIAggBkkNAiAIIAdLDQIgCSAGaiELIAUtAAAhDAJAAkAgCCAGayINQQdLDQBBACEOIAxB/wFxIQ9BACEMA0ACQCANIAxHDQAgDSEMDAMLAkAgCyAMai0AACAPRw0AQQEhDgwDCyAMQQFqIQwMAAsLIAJBCGogDCALIA0QkAkgAigCDCEMIAIoAgghDgsgDkEBcUUNASABIAwgBmpBAWoiBjYCDCAGIARJDQAgBiAEayEMIAYgB0sNACAKRQ0GIAkgDGogBCADIAQQmRxFDQALIAEoAhwhDSABIAY2AhwgDCANayEMDAILIAEgCDYCDAsgAUEBOgAlAkACQCABLQAkQQFHDQAgASgCICEMIAEoAhwhDQwBCyABKAIgIgwgASgCHCINRg0CCyAMIA1rIQwLIAAgCSANaiAMELUTDAELIABBgICAgHg2AgALIAJBEGokAA8LIARBBEGg4JsBEI8gAAvSAwEIfyMAQTBrIgMkAAJAAkACQAJAAkAgASgCACIELQAUIgVBAkYNACAFQQFxDQAgA0EIaiACLQAYQQJ0QeC7nQFqKAIALQAAEJ8aIAMoAgwiBiADKAIIIgVrIgdBAEgNAQJAAkAgBiAFRw0AQQAhCCADQQA2AiwgA0KAgICAEDcCJAwBC0EAIQhBAC0AwPGdARogBxCFASIGRQ0DIANBADYCLCADIAY2AiggAyAHQQF2Igk2AiQDQCAGQQFqIAUtAAAiByAFQQFqLQAAIgogByAKSxs6AAAgBiAHIAogByAKSRs6AAAgBkECaiEGIAVBAmohBSAJIAhBAWoiCEcNAAsLIAMgCDYCLCADQRRqIANBJGoQ3BMgAi0AGQ0DDAQLQb3BhQFBKUHowYUBEN0XAAtBsJibARDTGQsACyADQRRqEI4FCwJAAkACQCAELQAXRQ0AIAMoAhwiBUUNACADKAIYIAVBAXRqIgVBfmpFDQAgBUF/aiwAAEEASA0BCyAAIAMpAhQ3AgQgAEGAgICAeDYCACAAQQxqIANBHGopAgA3AgAMAQsgACABKAIEIAEoAgggAkEBEJcPIAMoAhQgAygCGEEBQQIQwBELIANBMGokAAvsAwECfyMAQTBrIgIkAAJAAkACQCABEL8QDQAgARDhDEUNAQsgAkEIaiABEPcLIAAgAigCCCACKAIMEL0YIAIgARD3CyAAIAIoAgAgAigCBBD7DQwBCwJAAkACQAJAAkACQAJAAkAgASgCAA4IAAECAwQFBgcACyABQSBqIAAQzwEMBwsgAUEgaiAAEKgMDAYLIAFBBGogABDNIQwFCyABQQRqIAAQziEMBAsgAUEEaiAAEN4IDAMLIAAgASgCBCIBKAIAIgMgAUEEaigCACIBEL0YIAAgAyABEPsNDAILQQAoAtzwnQEiAEUNASACQRRqIAAgASgCBCIBQRhqKAIAIAFBHGooAgBBqOmbAUEzEPIPIAJBJGpBv+abAUEREM8TIAJBADYCICACKAIYIgEQjx0gAUEIaiACQSBqQQhqKQIANwIAIAEgAikCIDcCACACQRRqELcCIAJBFGoQ4gwMAQtBACgC3PCdASIARQ0AIAJBFGogACABKAIEIgFByABqKAIAIAFBzABqKAIAQdvpmwFBxAAQ8g8gAkEkakG/5psBQREQzxMgAkEANgIgIAIoAhgiARCPHSABQQhqIAJBIGpBCGopAgA3AgAgASACKQIgNwIAIAJBFGoQtwIgAkEUahDiDAsgAkEwaiQAC8YDAQV/IwBB0ABrIgIkAEF/IABBA2wiAEF/amd2QQFqQQEgAEEBSxsiA0EGdCEAQQAhBAJAAkAgA0H///8fSw0AIABBwP///wdLDQBBwAAhBUEAIQQgAEUNASACQQhqIAAQ7BggAyEEIAIoAggiBQ0BQcAAIQQLIAQgAEHo14MBEKoeAAsgAkEANgIcIAIgBTYCGCACIAQ2AhRBECEGQQAhAAJAA0AgAyAARg0BAkAgACACKAIURw0AIAJBFGoQ1AogAigCGCEFCyAFIAZqIgRBfGogAEEBaiIANgIAIARBeGpBADYCACAEQXBqQgA3AwACQEEwRQ0AIAQgAkEgakEw/AoAAAsgAiAANgIcIAZBwABqIQYMAAsLAkACQAJAIAIoAhQiACADTQ0AIABBBnQhACACKAIYIQQCQAJAIAMNAEHAACEGIARBwAAgABCjHgwBCyAEIABBwAAgA0EGdCIFENoDIgZFDQILIAIgBjYCGAsgAigCGCEEIAJBBEEQEMMbIAIoAgAiAEUNASAAIAE2AgwgACADNgIEIAAgBDYCACAAQR8gA2drNgIIIAJB0ABqJAAgAA8LQcAAIAVB+NeDARCqHgsAC9MDAQZ/IwBBIGsiBCQAAkACQAJAAkACQCABLQCsDUEBRg0AAkACQAJAIAEpAwBCAoUgASkDCIRQDQAgAigCyARBAkYNBCACQdgBaiEFAkACQAJAIAEoAoAFIgYtAOICDQAgBEEQaiABIAUgAxBNIAQoAhAiBkECRw0BDAgLIAYtAOMCIQcgBEEQaiABIAUgAxBNIAQoAhAiBkECRg0HIAQoAhghCCAEKAIUIQkgBkEBcSIGRQ0EIAdBAXFFDQQgBEEEaiADIAkgCCAIIAEgBRCdBiAEKAIEIgZBAkcNASAEKAIIIQUMCAsgBkEBcQ0CQQAhBgwDCyAEKAIMIQggBCgCCCEJDAILIARBEGogASACIAMQvwQCQAJAIAQoAhANAEEAIQEMAQsgACAEKQIYQiCJNwIEQQEhAQsgACABNgIADAYLIAQoAhghCCAEKAIUIQkLIAAgCDYCCCAAIAk2AgQgACAGNgIADAQLQbKjmwFBKEHcoYQBEN0XAAtB7KCEARCbIAALIAQoAhQhBQsgBRC1EBogBEEQaiABIAIgAxC/BAJAAkAgBCgCEA0AQQAhAQwBCyAAIAQpAhhCIIk3AgRBASEBCyAAIAE2AgALIARBIGokAAvPAwEGfyMAQSBrIgIkACABIAAoAghBfmoiA0EGIANBCUkbIgMQzhwCQAJAAkACQAJAAkAgAw4JAAQFBQUFAwIBBQtBACEDIAJBGGpBACAAQRBqKAIAIABBFGooAgBBpLSYARDxGiACKAIcIQQgAigCGCEFQQAhBkEAIQcDQAJAIAQgAyIARw0AAkAgByAETw0AIAJBCGogByAFIARBtLSYARDxGiABIAIoAgggAigCDCIAELcKIAAgBmpBHnchBgsgASAGEJghDAYLIABBAWohAyAFIABqLQAAQS9HDQACQCAAIAdNDQAgASAFIAdqIAAgB2siABC3CiAAIAZqQR53IQYLIAJBEGogAyAFIARBxLSYARDxGiACKAIQIQACQAJAAkACQAJAIAIoAhQOAgIAAQsgAC0AAEEuRw0BDAILIAAtAABBLkcNACAALQABQS9GDQELQQAhAAwBC0EBIQALIAAgA2ohBwwACwsgAEEQaigCACAAQRRqKAIAIAEQnx8MAwsgAEEQaigCACAAQRRqKAIAIAEQnx8MAgsgAEEcaigCACAAQSBqKAIAIAEQnx8MAQsgAEEQaigCACAAQRRqKAIAIAEQnx8LIAJBIGokAAu8AwEHfyMAQRBrIgMkAAJAAkAgAigCBCIERQ0AIAAgAigCACAEIAEoAgwRDABFDQBBASECDAELAkAgAigCDCIERQ0AIAIoAggiBSAEQQxsaiEGIANBCGpBBGohBwNAAkACQAJAAkAgBS8BAA4DAAIBAAsCQAJAIAUoAgQiAkHBAEkNACABQQxqKAIAIQQDQAJAIABByJGBAUHAACAEEQwARQ0AQQEhAgwJCyACQUBqIgJBwABLDQAMAgsLIAJFDQMgAUEMaigCACEECyAAQciRgQEgAiAEEQwARQ0CQQEhAgwFCyAAIAUoAgQgBSgCCCABQQxqKAIAEQwARQ0BQQEhAgwECyAFLwECIQIgB0EAOgAAIANBADYCCAJAAkAgAkHoB0kNAEEEQQUgAkGQzgBJGyEIDAELQQEhCCACQQpJDQBBAkEDIAJB5ABJGyEICyAIIQQDQCAEQX9qIgQgA0EIamogAiACQf//A3FBCm4iCUEKbGtBMHI6AAAgCSECIAQNAAsgACADQQhqIAggAUEMaigCABEMAEUNAEEBIQIMAwsgBUEMaiIFIAZHDQALC0EAIQILIANBEGokACACC9EDAQh/IwBBEGsiAiQAAkACQAJAIAEoAgAOAwABAgALIAEoAgwiA0UNASABKAIIIQEgA0EobCEDA0ACQCABKAIAQQdGDQAgASAAEOcECyABQShqIQEgA0FYaiIDDQAMAgsLIAEoAgwiA0UNACABKAIIIQQgA0E4bCEFIABBLGohBkEAIQMDQAJAAkACQAJAIAQgA2oiASgCAA4DAAECAAsCQCABQQhqKAIAQQNHDQAgAC0AKCEHIABBADoAKCAALQB5IQggAEEAOgB5AkAgAUEMaigCACIJKAIAQRpHDQAgAiAJKQMIIAlBGGooAgAQuhggBiACKQMAIAIoAggQ0QoLIAkgABB3IAAgBzoAKCAAIAg6AHkLIAFBKGooAgAgABDnBAwCCyAAIAFBEGoQ8QogAUEIaiEJAkAgAUEwaigCACIBRQ0AIAAtACghByAAQQA6ACggAC0AeSEIIABBADoAeQJAIAEoAgBBGkcNACACIAEpAwggAUEYaigCABC6GCAGIAIpAwAgAigCCBDRCgsgASAAEHcgACAHOgAoIAAgCDoAeQsgACAJEPsQDAELIAFBBGooAgAgABDnBAsgBSADQThqIgNHDQALCyACQRBqJAAL2AMCA38CfiMAQcABayIDJAAgACgCMBCBEiEEIANBNGoiBSAAQTRqKAIANgIAIANBCGpBACkDmPucASIGNwMAIANBEGpBACkDkPucASIHNwMAIANBGGogBjcDACADIAA2AiAgAyAENgIkIANBAToAOSADQQE6ACggAyAAKQIsNwIsIAMgBzcDACADIAAoATo2ATogAyAALQA4OgA4IAMgAUEDEPkNIAMoAjAQgRIhACADQeAAakE0aiAFKAIANgIAIANB4ABqQQhqIAY3AwAgA0HgAGpBEGoiASAHNwMAIANB4ABqQRhqIAY3AwAgAyAANgKEASADQQE6AJkBIANBAToAiAEgAyADKQIsNwKMASADIAc3A2AgAyADKAE6NgGaASADIAMtADg6AJgBIAMgAzYCgAEgA0HgAGogAigCABDAAgJAIAMoAmQiAEUNACADKAJgIAMoAmwQkgwgACAAQQR0QRdqQXBxIgJqQQlqIgBFDQAgAygCYCACayAAQQgQnhILIAEQ1hUCQCADKAIEIgBFDQAgAygCACADKAIMEJIMIAAgAEEEdEEXakFwcSIBakEJaiIARQ0AIAMoAgAgAWsgAEEIEJ4SCyADQRBqENYVIANBwAFqJAAL0QMCCn8BfiMAQaABayICJAAgAiABKAIIIgNBCEEwQbSUmwEQ2BQgASgCACEEIAIoAgAhBSACKAIEIQYgAUEANgIAIAEoAgQhByABQQg2AgQgAUEANgIIIAJBADYCFCACIAY2AhAgAiAFNgIMIAIgByADQTBsIghqIgk2AiQgAiAENgIgIAIgBzYCGCACQShqQQRyIQogACkCDCEMIAAoAhQhC0EAIQBBACEEIAchAwJAA0AgCCAARg0BAkAgAygCACIFQRNGDQAgAiAFNgIoAkBBLEUNACAKIANBBGpBLPwKAAALIAIg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IANBEGpBDGogA0EgakEMaigAADYAACADIAMpACU3ABUgAyACOgAUIAMgATYCECADQRBqEPAEIABBCGogA0EQakEIaikCADcCACAAIAMpAhA3AgAMAwsgA0EgakGk54gBQaTriAEQnQsgACADQSBqEN0TDAILIANBIGpBsJiOAUG4mI4BEJ0LIAAgA0EgahDdEwwBCyADQSBqQaiYjgFBsJiOARCdCyAAIANBIGoQ3RMLIANBMGokAAu5AwIGfwF+IwBB4ABrIgQkACAEQQxqQSBBCEEQEMwNIAQoAhAhBQJAIAQoAgxBAUcNACAFIAQoAhRBjKWaARCqHgALIAQoAhQhBkEAEIESIQcgBEEMakEIaiIIQQA2AgAgBEEMakEwakIENwIAIARBDGpBOGoiCUEAOgAAIARBIGpBACkDmPucASIKNwIAIARBMGogCjcCACAEIAc2AlQgBEEANgJYIARCgICAgIABNwIMIARBADYCOCAEQoCAgICAATcCSCAEQQA7AVwgBEEAOgBeIARBADYCUCAEQQApA5D7nAEiCjcCGCAEIAo3AiggACACNgJIIAAgAToATCAAQQA7AE0gAEEAOgBPIABBMGpCBDcCACAAQThqIAkoAgA2AgAgACAEKQIMNwIAIABBCGogCCkCADcCACAAQRBqIARBDGpBEGopAgA3AgAgAEEYaiAEQQxqQRhqKQIANwIAIABBIGogBEEMakEgaikCADcCACAAQShqIARBDGpBKGopAgA3AgAgAEEBOwBRIAAgAzoAUCAAQQA2AkQgACAGNgJAIAAgBTYCPCAEQcgAahC9ECAEQeAAaiQAC7sDAQJ/AkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyAAIAEoAggQjAEPCyAAIAEoAgQQjAEPCyAAIAEoAgQiAkHAAGoQhQoCQCACQYQBaigCACIDRQ0AIAJBgAFqKAIAIQEgA0HYAGwhAwNAAkACQAJAIAEoAgBBfGoOAgIAAQsgACABQQRqKAIAEIwBDAELIAEgABCyDQsgAUHYAGohASADQah/aiIDDQALCwJAIAIoAngiAUUNACABELgYIAEoAgAgAUEEaigCABDAICABQRRBBBCeEgsgAkEANgJ4AkAgAkGYAWooAgAiAUUNACABQShsIQMgAkGUAWooAgBBBGohAQNAAkAC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DDcCAAwBCyAEIAYoAiBBsJibARCqHgALIAZBwABqJAALhAMCBn8CfiMAQSBrIgMkAEEUIQQgACEJAkAgAELoB1QNAEEUIQQgACEKA0AgA0EMaiAEaiIFQX1qIAogCkKQzgCAIglCkM4Afn2nIgZB//8DcUHkAG4iB0EBdCIIQYHMmAFqLQAAOgAAIAVBfGogCEGAzJgBai0AADoAACAFQX9qIAYgB0HkAGxrQf//A3FBAXQiBkGBzJgBai0AADoAACAFQX5qIAZBgMyYAWotAAA6AAAgBEF8aiEEIApC/6ziBFYhBSAJIQogBQ0ACwsCQCAJQglYDQAgA0EMaiAEakF/aiAJpyIFIAVB//8DcUHkAG4iBUHkAGxrQf//A3FBAXQiBkGBzJgBai0AADoAACADQQxqIARBfmoiBGogBkGAzJgBai0AADoAACAFrSEJCwJAAkAgAFANACAJUA0BCyADQQxqIARBf2oiBGogCadBAXRBHnFBgcyYAWotAAA6AAALIAIgAUEBQQAgA0EMaiAEakEUIARrEMoFIQUgA0EgaiQAIAULqAMBBH8jAEEwayIDJAACQAJAIAItAAwiBEEBRw0AIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgAMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyADIAIQ7hwgACADKQIANwIAIANBAiADLQAMazoADCAAQQhqIANBCGopAgA3AgAgASgCBCEEDAcLIARFDQEMAgsgBEUNAQsgASgCBCIEIAEoAgggAigCBCIGIAIoAggiAhDrGEH/AXEOAgIDAQsgA0EIaiABQQhqKAIANgIAIAMgASkCADcDACADQRRqIAMgAigCBCACKAIIENILIAAgBSADQRRqEJETDAQLIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgA0EUaiAGIAIgAxCpByAAQQIgBWsgA0EUahCREwwDCyAAQQhqQQApAsjfggE3AgAgAEEAKQLA34IBNwIADAELIANBIGpBCGogAUEIaigCADYCACADIAEpAgA3AyAgA0EgaiAGIAIQ8h0gACAFIANBIGoQkRMMAQsgASgCACAEELEgCyADQTBqJAALsgMBAn8jAEHgAGsiAyQAAkACQAJAAkACQCABKAIALQAUIgRBAkYNACAEQQFxRQ0BCwJAAkACQAJAIAItABgOAwABAgALIANBOGpBpOeIAUGk64gBEJ0LIANBCGogA0E4ahDdEwwCCyADQThqQdTmiAFBpOeIARCdCyADQQhqIANBOGoQ3RMMAQsgA0E4akG8togBQdTmiAEQnQsgA0EIaiADQThqEN0TCyADQThqIAEoAgQgASgCCCACIANBCGoQqBcgA0EoakEIaiIBIANBOGpBDGopAgA3AwAgAyADKQI8NwMoAkAgAygCOCIEQYCAgIB4Rg0AIAAgAykCTDcCFCAAQSRqIANBOGpBJGooAgA2AgAgAEEcaiADQThqQRxqKQIANwIAIABBDGogASkDADcCACAAIAMpAyg3AgQgACAENgIADAQLIANBGGpBCGogASkDADcDACADIAMpAyg3AxggAi0AGQ0BDAILQYTBhQFBKEGswYUBEN0XAAsgA0EYahDwBAsgACADKQMYNwIEIABBgICAgHg2AgAgAEEMaiADQSBqKQMANwIACyADQeAAaiQAC4gDAQN/AkACQAJAIAEoAgQiAiABKAIQRg0AAkAgACgCFCICIAAoAgxHDQAgAEEMakHIoIUBEKEWCyAAIAJBAWoiAzYCFCAAKAIQIgQgAkEYbGoiACABKQIANwIAIABBCGogAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgAgA0ECSQ0BAkAgA0EVSQ0AIAQgAxC9DA8LIAJBGGwhAEEAIQEDQCAEIAFBGGoiASAEahD4CCAAIAFHDQAMAgsLIAJBf2oiAiAAKAIIIgNPDQECQCAAKAIEIAJBDGxqIgAoAggiAiAAKAIARw0AIABB6KCFARChFgsgACgCBCACQRhsaiIDIAEpAgA3AgAgA0EQaiABQRBqKQIANwIAIANBCGogAUEIaikCADcCACAAIAJBAWoiATYCCCABQQJJDQAgACgCBCEAAkAgAUEVSQ0AIAAgARC9DA8LIAJBGGwhAkEAIQEDQCAAIAFBGGoiASAAahD4CCACIAFHDQALCw8LIAIgA0HYoIUBELMRAAuaAwEEfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgACgCCCABEKgBDwsgACgCBCABEKgBDwsgASAAKAIEIgJBwABqEPsIAkAgAkGEAWooAgAiA0UNACACQYABaigCACIAIANB2ABsaiEEA0ACQAJA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AkACQAJAAkAgAygCAA4HBQABAgMFBAULIANBDGooAgAiAkUNBCADQQhqKAIAIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEPMICyAAQShqIQAgAkFYaiICDQAMBQsLIAMoAgQgARDzCAwDCyADQQxqKAIAIgBFDQIgA0EIaigCACEFIABBOGwhBkEAIQADQAJAAkACQAJAIAUgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAS0AAA0AIAJBDGooAgAgARCVAQsgAkEoaigCACABEPMIDAILIAJBMGooAgAiAkUNASABLQAADQEgAiABEJUBDAELIAJBBGooAgAgARDzCAsgBiAAQThqIgBHDQAMAwsLIAMoAgQgARDzCCABLQAADQEgAygCCCABEJUBDAELIAEtAAANACADKAIEIAEQlQELAkAgAygCMCIARQ0AIAEtAAANACAAIAEQlQELIANBOGoiAyAERw0ACwsLmAMBBX8CQCAAKAIIIgJFDQAgACgCBCIDIAJBOGxqIQQDQAJAAkACQAJAAkACQCADKAIADgcFAAECAwUEBQsgA0EMaigCACICRQ0EIANBCGooAgAhACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQ8wgLIABBKGohACACQVhqIgINAAwFCwsgAygCBCABEPMIDAMLIANBDGooAgAiAEUNAiADQQhqKAIAIQUgAEE4bCEGQQAhAANAAkACQAJAAkAgBSAAaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACABLQAADQAgAkEMaigCACABEJUBCyACQShqKAIAIAEQ8wgMAgsgAkEwaigCACICRQ0BIAEtAAANASACIAEQlQEMAQsgAkEEaigCACABEPMICyAGIABBOGoiAEcNAAwDCwsgAygCBCABEPMIIAEtAAANASADKAIIIAEQlQEMAQsgAS0AAA0AIAMoAgQgARCVAQsCQCADKAIwIgBFDQAgAS0AAA0AIAAgARCVAQsgA0E4aiIDIARHDQALCwu7AwIBfwF+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgoAAQIDBAUGBwgJCgsgAEEIahDPEg8LIAAoAigiARDZASABQcAAQQgQnhIgAEEIahCDDw8LAkAgACgCCA0AIAApAxAiAkIDg0IAUg0IIAKnIgAg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tOeEARCzEQALwwMCA38DfgJAAkAgAUERSQ0AIAFBcGohA0EAIQRCxObBm+DF4owTIQZC05GMrYjR2p8kIQcDQCAGIQggACAEaiIFQQhqKQAAQtDj/MyihM6EpH+FIgZC/////w+DIAUpAAAgB4UiB0IgiH5CIIkgBkIgiCAHQv////8Pg36FIQYgCCEHIARBEGoiBCADSQ0ACyAAIANqIgQpAAggBoUhBiAEKQAAIAiFIQcMAQsCQCABQQdLDQACQAJAIAFBA0sNACABDQFC05GMrYjR2p8kIQdCxObBm+DF4owTIQYMAwsgADUAAELTkYytiNHanySFIQcgACABakF8ajUAAELE5sGb4MXijBOFIQYMAgsgACABakF/ajEAAEIIhiAAIAFBAXZqMQAAhELE5sGb4MXijBOFIQYgADEAAELTkYytiNHanySFIQcMAQsgACkAAELTkYytiNHanySFIQcgACABakF4aikAAELE5sGb4MXijBOFIQYLIAIgAigCACAHQv////8PgyAGQiCIfiABrYUgB0IgiCAGQv////8Pg35CIImFIganakHdy92eeWwgBkIgiKdqQcnB+P0AbEGj7rmcBGo2AgALlAMBAX8jAEEwayIEJAAgBCADOgAXIARBCGpBCEEIQTBBtL2bARDYFCAEQQA2AiAgBCAEKQMINwIYAkACQAJAAkACQAJAAkAgAkUNACABLQDIAUH/AXFBwABHDQAgASgCxAEiAyABKALAASICa0EMRw0AIAQgASACIAMQqhcgBCgCACIDIAQoAgQiAkHEvZsBQQwQmRwNAiADIAJB0L2bAUEMEJkcIQMgBCAEQS9qNgIoIAQgBEEXajYCJCADRQ0BDAMLIAQgBEEvajYCKCAEIARBF2o2AiQLIARBJGogASAEQRhqEIsFIgNFDQIMAwsgBCAEQS9qNgIoIAQgBEEXajYCJAsgASABKAJ4IgJBCHI2AnggBEEkaiABIARBGGoQiwUhAyABIAI2AnggAw0BCwJAIAEtAMgBQaMBRg0AIAQtABdB/wFxQaQBRg0AIAEQhw4LIAAgBCkCGDcCACAAQQhqIARBGGpBCGooAgA2AgAMAQsgAEGAgICAeDYCACAAIAM2AgQgBEEYahDJHQsgBEEwaiQAC6YDAQN/IwBBwABrIgMkACADQSRqIAJBCGooAgA2AgAg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LQAhIgQgAi0AICIATQ0AIAAgAkEYampBBGohBSAEIABrQf8BcSEDQQAhAANAIABBCkYNAyACQQhqIABqIAUgAGotAAAiBEFgaiAEIARBn39qQf8BcUEGSRsgBCAAQQFLGzoAACADIABBAWoiAEcNAAsLIAJBxABqIAJBCGogAxDFBCACKAJEQQFGDQIgAiACKQJINwI8IAJBDDYCOCACQQE2AhwgAkGY75sBNgIYIAJCATcCJCACIAJBPGo2AjQgAiACQTRqNgIgIAEoAgAgASgCBCACQRhqEM4FIQALIAJB0ABqJAAgAA8LQQpBCkGAnoUBELMRAAsgAiACKQJINwMYQdSkmwFBKyACQRhqQcj8hAFB8J2FARDoDwAL/QICBn8EfiMAQTBrIgIkAAJAAkACQCABLQAUIgNBAkYNACABKAIQIQQgASgCDCEFIAEoAgghBgJAIAEpAwAiCEIDg0IAUg0AIAinIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAENgIQIAAgBTYCDCAAIAY2AgggACAINwMADAELQQAtAMDxnQEaQTAQhQEiA0UNASABKAIAIgEoAhQhBCABKAIQIQUgAkEYaiABQRhqEPAHIAEoAgwhBiABKAIIIQcCQCABKQMAIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAJBEGogAkEYakEQaikDACIJNwMAIAJBCGogAkEYakEIaikDACIKNwMAIAIgAikDGCILNwMAIAMgBDYCFCADIAU2AhAgAyAGNgIMIAMgBzYCCCADIAg3AwAgAyALNwMYIANBIGogCjcDACADQShqIAk3AwAgACADNgIAQQIhAwsgACADOgAUIAJBMGokAA8LAAuWAwEGfyMAQTBrIgIkAAJAAkACQAJAAkAgACgCBCIDDgMEAQIAC0EBIQQgASgCACIFQcyOmAFBByABKAIEIgYoAgwiBxEMAA0CIANBA3QhASAAKAIAIQBBACEDA0ACQCABDQBBACEEDAQLIAIgADYCFAJAIANFDQAgBUHTjpgBQQIgBxEMAA0ECyACQQI2AhwgAkGcjpgBNgIYIAJCATcCJCACQQs2AgggAiACQQRqNgIgIAIgAkEUajYCBCAFIAYgAkEYahC3Hg0DIABBCGohACADQX9qIQMgAUF4aiEBDAALCyACQQI2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AkACQAJAAkAgAL0iA0KAgICAgICACFMNACADQv/////////3/wBWDQNBgXghAQJAIANCIIgiBEKAgMD/A1ENACAEpyECDAILQYCAwP8DIQIgA6cNAUQAAAAAAAAAAA8LAkAgAEQAAAAAAAAAAGINAEQAAAAAAADwvyAAIACiow8LIANCAFMNASAARAAAAAAAAFBDor0iA0IgiKchAkHLdyEBCyACQeK+JWoiAkH//z9xQZ7Bmv8Daq1CIIYgA0L/////D4OEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIFob1CgICAgHCDvyIGRAAAIGVHFfc/oiIHIAJBFHYgAWq3IgigIgkgByAIIAmhoCAAIAahIAWhIAAgAEQAAAAAAAAAQKCjIgAgBSAAIACiIgcgB6IiACAAIABEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiAHIAAgACAARERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoqAiAEQAACBlRxX3P6IgACAGoEQAou8u/AXnPaKgoKAPCyAAIAChRAAAAAAAAAAAoyEACyAAC4sDAQV/IwBBIGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEpAgA3AgAgAEEIaiABQQhqKQIANwIAIAIoAgAgAigCBBCxIAwBCwJAAkACQAJAAkACQCABLQAMIgUOAwEAAgELIAAgAikCADcCACAAQQhqIAJBCGopAgA3AgAgASgCBCEGDAQLIARFDQEMAgsgBEUNAQsgA0EQaiABIAIQkw8gACAFIANBEGoQkRMMAgsCQAJAAkAgASgCBCIGIAEoAgggAigCBCIHIAIoAggQ6xhB/wFxDgIBAgALIANBEGpBCGogAkEIaigCADYCACADIAIpAgA3AxAgA0EEaiADQRBqIAEQ3BkgACAEIANBBGoQkRMMAwsgAEEIakEAKQLI34IBNwIAIABBACkCwN+CATcCACACKAIAIAcQsSAMAQsgA0EQakEIaiABQQhqKAIANgIAIAMgASkCADcDECADQQRqIANBEGogAhDcGSAAIAUgA0EEahCREwwBCyABKAIAIAYQsSALIANBIGokAAv2AgEDfyMAQRBrIgYkAAJAAkACQAJAAkACQCABKAIkIgctAOICDQAgBkEIaiAB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KAIEQdgAaiEEDAELIAFBEGohBAsgACAEKQIANwIMIABBFGogBEEIaigCADYCAAsCQAJAAkACQAJAAkACQAJAAkAgAkECIAJBCEkbDggAAQIDBAUGBwALIAFBBGohAgwHCyABQQhqIQIMBgsgAUHAAGohAgwFCyABQQRqIQIMBAsgAUEgaiECDAMLIAFBBGohAgwCCyABKAIEQdgAaiECDAELIAFBEGohAgsgACACKQIMNwIYIABBIGogAkEUaigCADYCAAJAIAMgACgCAEcNACAAEJsWCwJAQdgARQ0AIAAoAgQgA0HYAGxqIAFB2AD8CgAACyAAIANBAWo2AggL8AICCX8BfiMAQcAAayICJAAgASgCBCEDIAIgASgCCCIEQQRBEBDMDSACKAIEIQUCQAJAIAIoAgBBAUYNACACKAIIIQYCQCAFRQ0AIARBBHQhByAGIQggBSEJA0AgB0UNAUEALQDA8Z0BGiADKQIEIQsgAygCACEKQcAAEIUBIgFFDQMgAiADKAIMEEQgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAIQQxqIAE2AgAgCEEEaiALNwIAIAggCjYCACAIQRBqIQggB0FwaiEHIANBEGohAyAJQX9qIgkNAAsLIAAgBDYCCCAAIAY2AgQgACAFNgIAIAJBwABqJAAPCyAFIAIoAghBiJ+aARCqHgsAC+4CAQp/IwBBwABrIgIkACABKAIEIQMgAiABKAIIIgRBBEEMEMwNIAIoAgQhBQJAAkAgAigCAEEBRg0AIAIoAgghBgJAIAVFDQAgBEEMbCEHIAYhCCAFIQkDQCAHRQ0BQQAtAMDxnQEaIAMoAgghCiADKAIEIQtBwAAQhQEiAUUNAyACIAMoAgAQRCABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMAIAhBCGogCjYCACAIQQRq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IAJBIGogARCyBgJAIAIoAiBBgICAgHhGDQAgAkEQakEIaiACQSBqQQhqKAIANgIAIAIgAikCIDcDECACQQhqIAJBEGpB9MWFARDyEAJAAkAgAigCDCIDRQ0AIAIoAggiBCADEMQOIQUgACADNgIIIAAgBDYCBEEBIQMMAQtBACEDEN8SIQULIAAgBTYCGCAAIAM2AgAMAgtBgICAgHggAigCJBDBHiAAIAEQ2wc2AhggAEECNgIAIABBFGogAUEQaigCADYCACAAQQxqIAFBCGopAgA3AgAgACABKQIANwIEDAILIAJBADYCPCACQoCAgIAQNwI0IAJBJGogAkE0ahDcEyACQQE2AiAgACACQSBqENsHNgIYIABBAjYCACAAQRRqIAJBMGooAgA2AgAgAEEMaiACQShqKQIANwIAIAAgAikCIDcCBAsgARDCGgsgAkHAAGokAAvtAgEEfyMAQcAAayICJAACQAJAAkAgASgCDEUNACACQSBqIAEQsgYCQCACKAIgQYCAgIB4Rg0AIAJBEGpBCGogAkEgakEIaigCADYCACACIAIpAiA3AxAgAkEIaiACQRBqQfTFhQEQ8hACQAJAIAIoAgwiA0UNACACKAIIIgQgAxDEDiEFIAAgAzYCCCAAIAQ2AgRBASEDDAELQQAhAxDfEiEFCyAAIAU2AhggACADNgIADAILIAEQ2wchAyAAQQI2AgAgACADNgIYIAAgASkCADcCBCAAQQxqIAFBCGopAgA3AgAgAEEUaiABQRBqKAIANgIADAILIAJBADYCPCACQoCAgIAQNwI0IAJBJGogAkE0ahDcEyACQQE2AiAgAkEgahDbByEDIABBAjYCACAAIAM2AhggACACKQIgNwIEIABBDGogAkEoaikCADcCACAAQRRqIAJBMGooAgA2AgALIAEQwhoLIAJBwABqJAAL6QIBBn8jAEEQayIBJAACQAJAAkACQCAAKAIAIgJFDQBBACEDA0ACQCAAKAIIIgQgACgCBCIFTw0AIAIgBGotAABBxQBHDQAgACAEQQFqNgIIDAILAkACQAJAAkAgA0UNACAAKAIQIgZFDQAgBkHTjpgBQQIQ7QUNByAAKAIAIgJFDQEgACgCCCEEIAAoAgQhBQsgBCAFTw0AAkAgAiAEai0AAEG1f2oOAgIAAQsgACAEQQFqNgIIIAEgABDpByABLQAADQUgACABKQMIEMgMDQYMAgsgABD8Ag0FDAELQQEhAiAAIARBAWo2AgggAEEAEJQCDQULIANBf2ohAyAAKAIAIgINAAsLQQAhAgwCCyABLQABIQQCQCAAKAIQIgNFDQBBASECIANB5LSXAUHUtJcBIARBAXEiBRtBGUEQIAUbEO0FDQILIAAgBDoABEEAIQIgAEEANgIADAELQQEhAgsgAUEQaiQAIAIL4gICCX8CfgJAAkAgACgCNCIBRQ0AIABBHGohAiAAKAIwIgMgAUE8bGohBCAAQSxqIQUDQCADELQIIAMoAhwiBikDAEJ/hSEKAkAgAygCKCIHQQFqQQF2IAcgACgCKBsiASAAKAIkTQ0AIAIgASAFEJoCGgsgA0E8aiEDIAZBCGohASAKQoCBgoSIkKDAgH+DIQoCQANAAkAgCkIAUg0AIAdFDQIDQCAGQYB/aiEGIAEpAwAhCiABQQhqIgghASAKQoCBgoSIkKDAgH+DIgpCgIGChIiQoMCAf1ENAAsgCkKAgYKEiJCgwIB/hSEKIAghAQsgBiAKeqdBAXRB8AFxayIIQXhqKAIAIQkCQCAIQXBqKQMAIgtCA4NCAFINACALpyIIIAgoAgAiCEEBajYCACAIQX9MDQULIApCf3wgCoMhCiACIAsgCRDnBRogB0F/aiEHDAALCyADIARHDQALCw8LAAvpAgIFfwF+IwBBMGsiAiQAIAJBKGogAEEoaikDADcDACACQSBqIABBIGopAwA3AwAgAkEYaiAAQRhqKQMAIgc3AwAgAkEQaiAAQRBqKQMANwMAIAJBCGogAEEIaikDADcDACACIAApAwA3AwACQCAHpyIDRQ0AIAIoAhAhBCACKQMAIQcgAigCCCIFIQADQAJAIAdCAFINAANAIARBgH9qIQQgACkDACEHIABBCGoiBSEAIAdCgIGChIiQoMCAf4MiB0KAgYKEiJCgwIB/UQ0ACyAHQoCBgoSIkKDAgH+FIQcgBSEACyABIAQgB3qnQQF0QfABcWsiBkFwaikDACAGQXhqKAIAEOcFGiAHQn98IAeDIQcgA0F/aiIDDQALIAIgBDYCECACIAU2AgggAkEANgIYIAIgBzcDAAsgAhCbCwJAIAIoAiAiAEUNACACKAIkIgRFDQAgAigCKCAEIAAQnhILIAJBMGokAAvbAgIGfwF+IwBBIGsiAiQAIAJBEGogASgCDCIDIAEoAgQiBGtBBHZBCEE4EMwNIAIoAhQhBQJAIAIoAhBBAUYNAEEAIQYgAkEANgIMIAIgAigCGCIHNgIIIAIgBTYCBCABKAIAIQUgAiABKAIINgIYIAIgBTYCECACIAQ2AhQgAiADNgIcAkAgBCADRg0AQQAhBgNAIARBCGooAgAhASAEKQMAIQggB0EoakIANwMAIAdBIGpBADYCACAHQRxqQQA6AAAgB0EYaiABNgIAIAdBEGpCADcCACAHQQhqIAg3AgAgB0EANgIAIAdBLWpCADcAACAHQThqIQcgBkEBaiEGIARBEGoiBCADRw0ACyACIAQ2AhQLIAJBBGpBCGoiByAGNgIAIAJBEGoQgBAgAEEIaiAHKAIANgIAIAAgAikCBDcCACACQSBqJAAPCyAFIAIoAhhBnPqaARCqHgALhQMBAn8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkAgACgCAA4DAAECAAsgAS0ABEEBRw0GAkACQAJAAkACQAJAIAAoAggOBQIDAAEFAgsCQCABLQAFDQAgACsDGJlEAAAAAAAA8H9iDQAgAUEAOgAECyABIAEoAgBBBWo2AgAMCwsCQCAAKAIMIgMoAgBBZmoOAwoDAAkLIAMoAgwNCQwICyACIABBEGoQ/hEgASACKAIEIAEoAgBqQQJqNgIADAkLIAJBCGogAEEQahD9ESABIAIoAgwgASgCAGpBAmo2AgAMCAsgAygCCEEFRw0FDAYLIAFBADoABAwGCyAAKAIwIgBFDQYgAS0ABEEBRw0GAkACQCAAKAIAQWZqDgMEAAEDCyAAKAIIQQVGDQMMAgsgACgCDEUNASABQQA6AAQMBgsgACgCBCABEMUGDAULIAAgARDbAQwECyABQQA6AAQMAwsgAyABENsBCyABQQA6AAQLIAAoAiggARDFBgsgAkEQaiQAC8ECAQZ/AkAgA0EISQ0AIAAgACADQQN2IgNBBnQiBGogACADQfAAbCIFaiADELgIIQAgASABIARqIAEgBWogAxC4CCEBIAIgAiAEaiACIAVqIAMQuAghAgsCQAJAIAAoAgQiBiABKAIEIgcgACgCCCIDIAEoAggiBCADIARJGxCSFSIFIAMgBGsgBRsiBUUNACAFQR92IQgMAQsgAC0ADCABLQAMSSEICwJAAkAgBiACKAIEIgkgAyACKAIIIgUgAyAFSRsQkhUiBiADIAVrIAYbIgNFDQAgA0EfdiEDDAELIAAtAAwgAi0ADEkhAwsCQCAIIANHDQACQAJAIAcgCSAEIAUgBCAFSRsQkhUiACAEIAVrIAAbIgBFDQAgAEEfdiEADAELIAEtAAwgAi0ADEkhAAsgAiABIAggAHMbIQALIAAL4QIBAn8jAEEwayIGJAACQAJAAkACQAJAAkAgASgCHCIHDQAgBSADSw0CIAZBCGogASACIAUgBBCoBwwBCyAFIARJDQIgBSADSw0DAkAgBSAEayABKAIoSQ0AIAZBGGogByABKAIgIgEoAghBf2pBeHFqQQhqIAIgBGogAiAFaiABKAIQEQ4AAkAgBigCGA0AIAZBADYCCAwCCyAGKAIgIAJrIgUgBigCJCACayIBSw0FIAYgATYCECAGIAU2AgwgBkEBNgIIDAELIAZBCGogASACIAMgBCAFEOkbC0EAIQUCQCAGKAIIQQFHDQAgACAGKQIMNwIEQQEhBQsgACAFNgIAIAZBMGokAA8LIAUgA0HY54MBEI8gAAsgBCAFQcjngwEQqSAACyAFIANByOeDARCPIAALIAZBADYCKCAGQQE2AhwgBkHE5oMBNgIYIAZCBDcCICAGQRhqQczmgwEQhRsAC+0CAgV/An4jAEEQayIBJAACQAJAAkACQAJAIAAoAgANACAAKAIQIgANAUEAIQIMBAsgASAAQccAENENAkAgAS0AAEEBRw0AIAEtAAEhAwJAIAAoAhAiBEUNAEEBIQIgBEHktJcBQdS0lwEgA0EBcSIFG0EZQRAgBRsQ7QUNBQsgACADOgAEQQAhAiAAQQA2AgAMBAsCQCAAKAIQIgJFDQAgASkDCCIGUA0DIAJB/bSXAUEEEO0FDQJCACEHA0ACQCAGIAdSDQAgACgCECIDRQ0FQQEhAiADQYG1lwFBAhDtBUUNBQwGCwJAIAdQDQAgACgCECICRQ0AIAJB046YAUECEO0FDQQLQQEhAiAAIAAoAhRBAWo2AhQgB0IBfCEHIABCARDIDEUNAAwFCwsgABD/AyECDAMLIABB5MSbAUEBEO0FIQIMAgtBASECDAELIAAQ/wMhAiAAIAAoAhQgBqdrNgIUCyABQRBqJAAgAgvkAgECfwJAIAAoAgAiAkEERg0AAkACQAJAIAIOBAMAAQIDCyAAKAIEQQFHDQIgAS0AAA0CIAAoAgggARCVAQ8LAkAgACgCBCIDLQBsQQJHDQAgA0HAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCADKAKEASICRQ0AIAMoAoABIQAgAkHYAGwhAgNAAkACQCAAKAIAQQVHDQAgAS0AAA0BIABBBGooAgAgARCVAQwBCyAAIAEQuwgLIABB2ABqIQAgAkGof2oiAg0ACwsCQCADKAKYASICRQ0AIAMoApQBIQAgAkEobCECA0AgACABEMgGIABBKGohACACQVhqIgINAAsLIAMtADwiAEEGRg0BIABBAkcNASADQRBqIQADQCAAKAIYIgAtACxBAkYNAAwCCwsgACgCDCICRQ0AIAAoAgghACACQShsIQIDQCAAIAEQyAYgAEEoaiEAIAJBWGoiAg0ACwsLjAMBBH8jAEEwayICJAACQAJAAkACQCAALQAADQAgACgCBCEDAkAgAC0AAUEBRg0AIAMoAgAoAgBB4sSbAUEBEO8ICyAAQQI6AAEgAkEIaiADKAIAQZ6OmwFBEhD+BQJAIAItAAhBBEYNACACKQMIEIwdIQAMBAsgAygCACgCAEGhxJsBQQEQ7wgCQCABKAIAQYCAgIB4Rw0AIAMoAgAoAgBBiaSbAUEEEO8IDAMLIAEoAgghBCABKAIEIQAgAygCACIFKAIAQa7EmwFBARDvCCAERQ0BIARBA3QhA0EBIQEDQAJAIAFBAXENACAFKAIAQeLEmwFBARDvCAsCQAJAIAAoAgBBAUcNACACIAJBCGogAEEEaigCABDtCSAFKAIAIAIoAgAgAigCBBDvCAwBCyAFKAIAQYmkmwFBBBDvCAsgAEEIaiEAQQAhASADQXhqIgMNAAsgBSgCAEGvxJsBQQEQ7wgMAgsQzRwhAAwCCyAFKAIAQa/EmwFBARDvCAtBACEACyACQTBqJAAgAAuDAwEEfyMAQRBrIgIkAAJAAkACQCAALQAADQAgACgCBCEDAkAgAC0AAUEBRg0AIAMoAgAoAgBB4sSbAUEBEO8ICyAAQQI6AAEgAkEIaiADKAIAQbCOmwFBFBD+BQJAIAItAAhBBEYNACACKQMIEIwdIQAMAwsgAygCACgCAEGhxJsBQQEQ7wgCQCABKAIAQYCAgIB4Rw0AIAMoAgAoAgBBiaSbAUEEEO8IQQAhAAwDCyABKAIIIQAgASgCBCEEIAMoAgAiBSgCAEGuxJsBQQEQ7wggAEUNASAAQQxsIQEgBEEIaiEAQQEhAwJAA0ACQCADQQFxDQAgBSgCAEHixJsBQQEQ7wgLIAJBCGogBSAAQXxqKAIAIAAoAgAQ/gUgAi0ACEEERw0BIABBDGohAEEAIQMgAUF0aiIBDQALIAUoAgBBr8SbAUEBEO8IQQAhAAwDCyACKQMIEIwdIQAMAgsQzRwhAAwBCyAFKAIAQa/EmwFBARDvCEEAIQALIAJBEGokACAAC+kCAQd/IwBBIGsiAiQAIAEoAsABIQMCQCABLQDIAUEWRw0AIAEQhw4LIAJBCGogARDXAUEBIQQgAigCDCEFAkAgAigCCEEBcQ0AQQAhBCABLQDIAUEWRw0AAkBBBEEEEOsfIgZFDQAgBiAFNgIAIAIgBjYCGCACQQE2AhRBBCEHQQEhCAJAAkADQCACIAg2AhwgAS0AyAFBFkcNASABEIcOIAIgARDXASACKAIEIQUgAigCAEEBcQ0CAkAgCCACKAIURw0AIAJBFGpBuKibARCxFiACKAIYIQYLIAYgB2ogBTYCACAHQQRqIQcgCEEBaiEIDAALCyABKAK8ASEBQQhB4AAQ6x8iBUUNASAFQoqAgIAQNwMAIAUgAikCFDcCCCAFIAE2AhggBSADNgIUIAVBEGogAkEUakEIaigCADYCAAwCCyACQRRqEKwfQQEhBAwBCwALIAAgBTYCBCAAIAQ2AgAgAkEgaiQAC98CAQd/IwBBMGsiAiQAIAJBGGogARCzC0EBIQMgAigCHCEEAkAgAigCGEEBcQ0AIAJBEGogBBC/A0EAIQMgAS0AyAFBB0cNACACKAIQIQUCQEEEQQQQ6x8iBkUNACAGIAQ2AgAgAiAGNgIoIAJBATYCJEEEIQdBASEIA0AgAiAINgIsAkACQCABLQDIAUEHRw0AIAEQhw4gAkEIaiABELMLIAIoAgwhBCACKAIIQQFxRQ0BIAJBJGoQ0x1BASEDDAQLIAEoArwBIQhBCEHAABDrHyIERQ0CIARBGTYCACAEIAIpAiQ3AgQgBCAINgIUIAQgBTYCECAEQQxqIAJBJGpBCGooAgA2AgAMAwsCQCAIIAIoAiRHDQAgAkEkakGgt5sBELEWIAIoAighBgsgBiAHaiAENgIAIAdBBGohByAIQQFqIQgMAAsLAAsgACAENgIEIAAgAzYCACACQTBqJAAL2AICAn8BfiMAQSBrIgMkACADQQA2AgwgA0EYaiACIANBDGpB16ybAUEBELgMAkACQCADLQAYQQRGDQAgAykDGCIFQv8Bg0IEUQ0AIAAgBTcCAAwBCyADQRhqIAIgASgCDEEBakEBENQDAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAMAQsgAUEEaiEEAkACQAJAIAEoAgBBAUcNACADQRhqIAQgAhDaICADLQAYQQRGDQIgAykDGCIFQv8Bg0IEUg0BDAILIANBGGogBCgCACACENwUIAMtABhBBEYNASADKQMYIgVC/wGDQgRRDQELIAVC/wGDQgRRDQAgACAFNwIADAELIANBGGogAiADQQxqQabEmwFBARC4DAJAIAMtABhBBEYNACADKQMYIgVC/wGDQgRRDQAgACAFNwIADAELIABBBDoAAAsgA0EgaiQAC5QDAQJ/QQghAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQYCAgIB4cyIDQRUgA0EVSRsOFgABAgMEBQYHCAkKCwwNDg8UFBAREhMACyAAIAEtAAQ6AAFBACECDBMLIAAgATEABDcDCEEBIQIMEgsgACABMwEENwMIQQEhAgwRCyAAIAE1AgQ3AwhBASECDBALIAAgASkDCDcDCEEBIQIMDwsgACABMAAENwMIQQIhAgwOCyAAIAEyAQQ3AwhBAiECDA0LIAAgATQCBDcDCEECIQIMDAsgACABKQMINwMIQQIhAgwLCyAAIAEqAgS7OQMIQQMhAgwKCyAAIAErAwg5AwhBAyECDAkLIAAgASgCBDYCBEEEIQIMCAsgACABKQMINwIEQQUhAgwHCyAAIAEpAgQ3AgRBBSECDAYLIAAgASkDCDcCBEEGIQIMBQsgACABKQIENwIEQQYhAgwEC0EHIQIMAwtBCSECDAILQQohAgwBC0ELIQILIAAgAjoAAAuQAwEBfyMAQbAFayIDJAACQAJAAkACQCABLQAlRQ0AIAIoAjhB5QBPDQAgA0HIAmogAS0AGCABLQAZIAIQjQEgAygCyAJBAUYNAEEALQDA8Z0BGkHkAhCFASIBRQ0BIAFCgYCAgBA3AgACQEHcAkUNACABQQhqIANByAJqQQRyQdwC/AoAAAsgAEECOgAIIABB/JmAATYCBCAAIAE2AgAMAgsgAyABKAIAIAEtAAwgAhCRAQJAIAMoAgBBgICAgHhHDQACQEHkAkUNACADQcgCaiACQeQC/AoAAAtBAC0AwPGdARpB7AIQhQEiAUUNASABQoGAgIAQNwIAAkBB5AJFDQAgAUEIaiADQcgCakHkAvwKAAALIABBADoACCAAQcybgAE2AgQgACABNgIADAMLQQAtAMDxnQEaQdACEIUBIgFFDQAgAUKBgICAEDcCAAJAQcgCRQ0AIAFBCGogA0HIAvwKAAALIABBAToACCAAQeSagAE2AgQgACABNgIADAELAAsgAhCFEAsgA0GwBWokAAu9AgEEfyMAQRBrIgQkACAEQQhqIAMgASACQdzXggEQ8RogBCgCCCIBIAQoAgxqIQUDQAJAAkACQAJAIAEiAiAFRw0AQQAhAgwBC0EBIQYgAkEBaiEBIAIsAAAiB0F/Sg0CIAdBYEkNAQJAAkAgB0FtRw0AQQMhBgJAIAEgBUcNACAFIQEMBQsgBSEBIAJBAmoiByAFRg0EIAItAAEiAUGfAUsNAUEDIQYgAkEDaiEBDAQLIAEgAkECaiABIAVGGyICIAIgBUdqIQFBAyEGIAdBcEkNAyABIAEgBUdqIQFBBCEGDAMLIActAAAhAiAAIAM2AgQgACABQR9xQQZ0IAJBP3FyQYCwA3I7AQhBASECCyAAIAI2AgAgBEEQaiQADwtBAiEGIAEgAkECaiABIAVGGyEBCyADIAZqIQMMAAsL2QICAn8BfgJAAkACQAJAAkACQAJAIAAoAgAiAUF+aiICQQEgAkEISRsOCAECAwQFBQYAAQsgACgCBCIAQQhqEJsDIABBIEEIEJ4SDwsgACkDCCIDQgODQgBSDQMgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0DIAAgACgCEBDBGw8LAkAgAQ0AIAApAwgiA0IDg0IAUg0DIAOnIgAgACgCACICQX9qNgIAIAJBAUcNAyAAIAAoAhAQwRsPCyAAKAIEIgBBCGoQmwMgAEEgQQgQnhIPCyAAKQMIIgNCA4NCAFINASADpyIAIAAoAgAiAkF/ajYCACACQQFHDQEgACAAKAIQEMEbDwsgACkDCCIDQgODQgBSDQAgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCEBDBGwsPCyAAKAIEIgAoAgAgAEEEaigCABCxICAAQRBBBBCeEgvSAgECfyMAQdAAayICJAACQAJAAkACQAJAIAAoAgAOBAQAAQIECyAAKAIEQQFHDQMgACgCCCIAKAIAQRpHDQIgAkEQaiABKAIAIAEoAgQgAEEIaiIBELUMIAIoAhBBMkYNAyAAEMkBIABBOGogAkEQakE4aikDADcDACAAQTBqIAJBEGpBMGopAwA3AwAgAEEoaiACQRBqQShqKQMANwMAIABBIGogAkEQakEgaikDADcDACAAQRhqIAJBEGpBGGopAwA3AwAgAEEQaiACQRBqQRBqKQMANwMAIAEgAkEQakEIaikDADcDACAAIAIpAxA3AwAMAwsgACgCBCABEJQBDAILIAAoAgwhAyAAKAIIIQAgAiABNgIMIANFDQEgA0EobCEBA0AgAkEMaiAAELwDIABBKGohACABQVhqIgENAAwCCwsgACABEEYLIAJB0ABqJAALyQIBBX8jAEEQayICJAACQAJAAkAgAS0ALCIDQX1qIgRB/wFxDQAgAkEIaiABEP4RAkAgAigCDEUNAAJAAkAgAigCCCIDLAAAIgRBf0wNACAEQf8BcSEEDAELIAMtAAFBP3EhBSAEQR9xIQYCQCAEQV9LDQAgBkEGdCAFciEEDAELIAVBBnQgAy0AAkE/cXIhBQJAIARBcE8NACAFIAZBDHRyIQQMAQsgBUEGdCADLQADQT9xciAGQRJ0QYCA8ABxciEECyAEQZ9/akEaSQ0CCyABLQAsIgNBfWohBAsCQAJAIARBASAEQf8BcUEDSRtB/wFxDgMBAAMBCyABQRhqIQEgA0H/AXFBAkcNAANAIAEoAgAiBEEYaiEBIAQtACxBAkYNAAsLIAAgARCXEAwBCyABIAEoAhAgACgCLBDjBTYCEAsgAkEQaiQAC90CAQZ/IwBBEGsiAiQAAkAgACgCACIDLQBsQQJHDQAgA0HAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCADQYQBaigCACIERQ0AIANBgAFqKAIAIQAgBEHYAGwhBANAAkACQAJAIAAoAgBBfGoOAgIAAQsgAS0AJCEFIAFBAjoAJCABLQAlIQYgASAAQQRqKAIAIgcQxgEgByABEFIgASAGOgAlIAFBAjoAJCABIAcQmwEgASAGOgAlIAEgBToAJAwBCyAAIAEQ5woLIABB2ABqIQAgBEGof2oiBA0ACwsgA0GYAWooAgAhBCADQZQBaigCACEAIAIgATYCDAJAIARFDQAgBEEobCEBA0AgAkEMaiAAEKAFIABBKGohACABQVhqIgENAAsLAkAgAy0APCIBQQZGDQAgAUECRw0AIANBEGohAQNAIAEoAhgiAS0ALEECRg0ACwsgAkEQaiQAC+cCAgl/AX4jAEEQayICJAAgASkCACELIAFBADYCACACQQhqIgMgAUEIaiIEKQIANwMAIAIgCzcDACAAIAEQvgQCQCABKAIARQ0AIAEgABCDCCABKAIAIgVFDQAgASgCBCIGRQ0AAkAgASgCDCIHRQ0AIAVBCGohCCAFKQMAQn+FQoCBgoSIkKDAgH+DIQsgBSEJA0ACQCALQgBSDQADQCAJQYB+aiEJIAgpAwAhCyAIQQhqIgohCCALQoCBgoSIkKDAgH+DIgtCgIGChIiQoMCAf1ENAAsgC0KAgYKEiJCgwIB/hSELIAohCAsgCSALeqdBAnRB4ANxa0FgahCwECALQn98IAuDIQsgB0F/aiIHDQALCyAGIAZBBXRBJ2pBYHEiCGpBCWoiCUUNACAFIAhrIAlBCBCeEgsgASACKQMANwIAIAQgAykDADcCAAJAIAAoAjAiCEUNACABIAgQjAELIAJBEGokAAvLAgICfwJ+AkACQAJAAkAgACkDACIDQn58IgRCAiAEQgJUG6cOAgECAAsgAEEIaiEBAkACQCADQgBSDQAgASkDACIEQgODQgBSDQEgBKciASABKAIAIgJBf2o2AgAgAkEBRw0BIAEgASgCEBDBGwwBCyABEKcQCyAAKQMgIgRCAlENAiAAQShqIQACQCAEQgBSDQAgACkDACIEQgODQgBSDQMgBKciACAAKAIAIgFBf2o2AgAgAUEBRw0DIAAgACgCEBDBGw8LIAAQpxAPCyAAQRBqIQECQCAAKAIIDQAgASkDACIEQgODQgBSDQIgBKciACAAKAIAIgFBf2o2AgAgAUEBRw0CIAAgACgCEBDBGw8LIAEQpxAPCyAAKQMIIgRCA4NCAFINACAEpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEMEbCwvhAgIHfwN+IwBBEGsiBCQAIAQgAzYCCCAEIAI3AwAgAUEQaiEFIAIgAxDuFyILQhmIQoGChIiQoMCAAX4hDCABKAIEIgYgC6dxIQMgASgCACEHQQAhCANAIAcgA2opAAAiDSAMhSICQn+FIAJC//379+/fv/9+fINCgIGChIiQoMCAf4MhAgJAAkACQANAIAJQDQECQAJAIAEoAgBBACACeqdBA3YgA2ogBnFrIglBGGxqIgpBaGogBBC2C0UNACAKQXBqKAIAIAQoAghGDQELIAJCf3wgAoMhAgwBCwsgACABNgIMIABCADcDACAAIAcgCUEYbGo2AgggBCkDABDGHQwBCyANIA1CAYaDQoCBgoSIkKDAgH+DUA0BIAFBASAFEKAdIAAgATYCGCAAIAs3AxAgACAEKAIINgIIIAAgBCkDADcDAAsgBEEQaiQADwsgAyAIQQhqIghqIAZxIQMMAAsLuQICBn8EfiMAQSBrIgIkACABQQF2IAFqIQMCQANAIANFDQECQAJAIANBf2oiAyABSQ0AIAMgAWshBAwBCyAAIANBGGxqIgVBEGoiBCkCACEIIAVBCGoiBikCACEJIAApAgAhCiAAIAUpAgA3AgAgAEEIaiIHKQIAIQsgByAJNwIAIABBEGoiBykCACEJIAcgCDcCACAFIAo3AgAgBiALNwIAIAQgCTcCAEEAIQQLIAEgAyABIANJGyEGA0AgBEEBdCIHQQFyIgUgBk8NAQJAIAdBAmoiByAGTw0AIAUgACAFQRhsakEMaigCACAAIAdBGGxqQQxqKAIASWohBQsgACAEQRhsaiIEQQxqKAIAIAAgBUEYbGoiB0EMaigCAE8NASAEIAdBBhD1FyAFIQQMAAsLCyACQSBqJAALlAIBBX4gACAAKQMYIgFCEIkgASAAKQMIfCIBhSICQhWJIAIgACkDECIDIAApAwB8IgRCIIl8IgKFIgVCEIkgBSABIANCDYkgBIUiA3wiAUIgiXwiBIUiBUIViSAFIAIgASADQhGJhSIBfCICQiCJfCIDhSIFQhCJIAUgBCABQg2JIAKFIgF8IgJCIIl8IgSFIgVCFYkgBSADIAFCEYkgAoUiAXwiAkIgiXwiA4UiBUIQiSAFIAQgAUINiSAChSIBfCICQiCJfCIEhSIFIAMgAUIRiSAChSIBfCICQiCJfCIDNwMAIAAgBUIViSADhTcDGCAAIAFCDYkgAoUiAUIRiSAEIAF8IgGFNwMQIAAgAUIgiTcDCAvkAgEIfyMAQSBrIgckAAJAIAEoAkgiCEUNAEEAIQkCQAJAIAEoAhAiCg0ADAELIAEoAgwgCkECdGpBfGoiCkUNACAKKAIAIQtBASEJCyABKAJAIQogASgCPCEMIAFBCGohDSAIKAIIIQ4gByACIAMQ/xwgB0EcaiIDIAZBCGooAgA2AgAgByAGKQIANwIUAkAgCCgCCCIGIAgoAgBHDQAgCBCYFwsgCCgCBCAGQcQAbGoiAUEANgIIIAEgCzYCBCABIAk2AgAgASAHKQIMNwIMIAFBADYCKCABQoCAgIDAADcCICABIAcpAgA3AiwgASAEOgBCIAFBADoAQSABIAU6AEAgASAKNgI8IAEgDDYCOCABQRRqIAdBDGpBCGopAgA3AgAgAUEcaiADKAIANgIAIAFBNGogB0EIaigCADYCACAIIAZBAWo2AgggDSAOQZSWmwEQpBkLIABBBDoAACAHQSBqJAALywIBBH8jAEEgayIFJAAgAiAEayIGIAQgBiAESxshB0EBIQgCQAJAIARBAXQgAk8NAAJAAkAgAiAESQ0AIAMgBksNASADIARJDQIgBSADIARrIAEgBGogA0GY3YIBEPEaIAUoAgQgBEcNAiAFKAIAIQICQANAAkAgBEEDSw0AQQEhCAJAIARBAU0NACACLwAAIAEvAABHDQYgBEF+aiEEIAFBAmohASACQQJqIQILIAQNAkEAIQgMBgsgAigAACABKAAARw0EIARBfGohBCABQQRqIQEgAkEEaiECDAALCyAHIAMgAi0AACABLQAARyIIGyEDDAMLIAVBADYCGCAFQQE2AgwgBUH00ZsBNgIIIAVCBDcCECAFQQhqQYDcggEQhRsACyADIAZBkNyCARCPIAALIAchAwsgACADNgIEIAAgCDYCACAFQSBqJAALzAIBCn8jAEEQayIEJAACQCACIAAoAggiBU8NACAAIANB/wFxIgZqQcgAaiEHIAAoAhwhCCAAKAIgIQkgACgCBCEKA0ACQAJAAkACQAJAAkACQAJAIAogAkEUbGoiCygCBCIDRQ0AIAMgBy0AAGoiAiAJTw0FIAggAkECdGohAgwBCyAEQQhqIAAgAhCcGSAEKAIMIQIgBCgCCCEDA0AgAkUNAiACIAMoAhQiDE8NBiADKAIQIAJBCWxqIgwoAAUhAiAGIAwtAAAiDUsNAAsgBiANRw0BIAxBAWohAgsgAigAACECIAENASACQQFHDQEMBQsgAUUNBEEAIQIMAQsgAkEAIAJBAUcbIQILIARBEGokACACDwsgAiAJQbzjgwEQsxEACyACIAxBjOODARCzEQALIAsoAgwiAiAFSQ0ACwsgAiAFQazjgwEQsxEAC9gCAQZ/IwBB0ABrIgMkACABKAIIIQQCQAJAAkAgAkEBaiIFIAEoAgQiAigCHCIGTw0AIAEoAgAhByADQRBqQQRqIQECQANAIAIgBkF/aiIGNgIcIAIoAhggBkEEdGoiBigCACIIQYCAgIB4Rg0BIAEgBikCBDcCACABQQhqIAZBDGooAgA2AgAgAyAINgIQIANBEGogBBCVDyADQQhqIANBEGpBCGooAgA2AgAgAyADKQIQNwMAIANBEGogByACIAMQ2QUgAygCFCEEAkAgAygCECIGQSpHDQAgBSACKAIcIgZPDQMMAQsLAkBBOEUNACAAQQhqIANBEGpBCGpBOPwKAAALIAAgBDYCBCAAIAY2AgAMAgtBkLSEARCbIAALIAZFDQEgAigCGCAGQQR0akFwaiAEEJUPIABBKjYCAAsgA0HQAGokAA8LQeCyhAFBD0GMtYQBEPISAAv6AgEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiACgCAA4JAAECAwQFBgcIAAsgAiAAQQRqNgIMIAFB1/2ZAUEGIAJBDGpBjgQQpAshAQwICyACIABBCGo2AgwgAUHzkJoBQQogAkEMakGPBBCkCyEBDAcLIAIgAEEEajYCDCABQeqRmgFBCyACQQxqQZAEEKQLIQEMBgsgAiAAQQhqNgIMIAFB9ZGaAUERIAJBDGpBkQQQpAshAQwFCyACIABBBGo2AgwgAUGGkpoBQREgAkEMakGSBBCkCyEBDAQLIAIgAEEEajYCDCABQZiQmgFBCSACQQxqQZMEEKQLIQEMAwsgAiAAQQRqNgIMIAFBl5KaAUEOIAJBDGpBlAQQpAshAQwCCyACIABBBGo2AgwgAUGlkpoBQRIgAkEMakGVBBCkCyEBDAELIAIgAEEIajYCDCABQbeSmgFBESACQQxqQZYEEKQLIQELIAJBEGokACABC98CAQN/IwBBEGsiAiQAIAAoAgAhAAJAAkACQAJAAkAgASgCAA4FBAABAgMECyABKAIEQQFHDQMgASgCCCAAEKgBDAMLIAEoAgQgABCoAQwCCyAAIAEoAgQiA0HAAGoQ+wgCQCADQYQBaigCACIERQ0AIANBgAFqKAIAIQEgBEHYAGwhBANAAkACQAJAIAEoAgBBfGoOAgIAAQsgAUEEaigCACAAEKgBDAELIAEgABDTCQsgAUHYAGohASAEQah/aiIEDQALCwJAIANBmAFqKAIAIgRFDQAgA0GUAWooAgAhASAEQShsIQQDQCABIAAQpgcgAUEoaiEBIARBWGoiBA0ACwsgAy0APEEGRg0BIAAgA0EQahD7CAwBCyABKAIMIQQgASgCCCEBIAIgADYCDCAERQ0AIARBKGwhAANAIAJBDGogARDSCCABQShqIQEgAEFYaiIADQALCyACQRBqJAAL1gICBn8BfiMAQSBrIgIkAAJAAkACQCABLQAUIgNBAkYNACABKAIQIQQgASgCDCEFIAEoAgghBgJAIAEpAwAiCEIDg0IAUg0AIAinIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAENgIQIAAgBTYCDCAAIAY2AgggACAINwMADAELQQAtAMDxnQEaQTAQhQEiA0UNASABKAIAIgEoAhQhBCABKAIQIQUgAkEIaiABQRhqENMIIAEoAgwhBiABKAIIIQcCQCABKQMAIghCA4NCAFINACAIpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAMgAikDCDcDGCADQShqIAJBGGopAwA3AwAgA0EgaiACQRBqKQMANwMAIAMgBDYCFCADIAU2AhAgAyAGNgIMIAMgBzYCCCADIAg3AwAgACADNgIAQQIhAwsgACADOgAUIAJBIGokAA8LAAvCAgICfwJ+AkAgAUUNAANAAkACQAJAAkAgACkDACIEQn18IgWnQQFqQQAgBUICVBsOAgECAAsgAEEQaikDACIFQgODQgBSDQIgBaciAiACKAIAIgNBf2o2AgAgA0EBRw0CIAIgAigCEBDBGwwCCwJAIABBIGopAwAiBUIDg0IAUg0AIAWnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQwRsLIARCAlENASAAQQhqIQICQCAEQgBSDQAgAikDACIFQgODQgBSDQIgBaciAiACKAIAIgNBf2o2AgAgA0EBRw0C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/AoAAAsgAkEBdCECIANBBEkhASADQQF2IQMgAUUNAAsgBCACNgIQCyAFIAJGDQICQCAFIAJrIgNFDQAgBCgCDCIBIAJqIAEgA/wKAAALIAQgBTYCEAwCCyAGIAQoAhxBhN6CARCqHgALQYTfggFBEUGU3oIBEPISAAsgACAEKQIINwIAIABBCGogBEEIakEIaigCADYCAAsgBEEgaiQAC90CAQR/IAAoAgAiAUHAAGoQkxEgAUGAAWooAgAhAAJAIAEoAoQBIgJFDQADQAJAAkAgACgCAEEFRg0AIAAQ8ggMAQsgAEEEaigCACIDEJABIANBwABBCBCeEgsgAEHYAGohACACQX9qIgINAAsgAUGAAWooAgAhAAsgASgCfCAAQQhB2AAQrxECQCABKAJ4IgRFDQAgBEEEaigCACEAAkAgBCgCCCICRQ0AA0AgACgCACIDEKsCIANB4ABBCBCeEiAAQQRqIQAgAkF/aiICDQALIARBBGooAgAhAAsgBCgCACAAQQRBBBCvESAEQRRBBBCeEgsgAUGUAWooAgAhAAJAIAEoApgBIgJFDQADQCAAENQLIABBKGohACACQX9qIgINAAsgAUGUAWooAgAhAAsgASgCkAEgAEEIQSgQrxECQCABLQA8QQZGDQAgAUEQahCTEQsgAUGgAUEIEJ4SC9cCAQR/IAAoAgAiACgCICABELYcIABBOGogARD0FyAAKAIsQThsIQIgACgCKCEDQQAhAAJAA0AgAiAARg0BAkACQAJAAkACQAJAAkACQCADIABqIgQoAgBBfGoiBUEEIAVBB0kbDgcAAQIDBAUGAAsgBEEEaiABEIUZIARBGGooAgAgARC3HCAEQRxqKAIAIAEQthwMBgsgBEEEaiABEIUZIARBGGooAgAgARC3HCAEQRxqKAIAIAEQthwMBQsgBEEQaiABEMshIARBDGooAgAgARC3HAwECyAEQQRqIAEQyyEgBEEQaigCACABELccDAMLIARBMGogARDLISAEIAEQ0RcMAgsgBEEQaiABEMshIARBBGogARCFGSAEQRxqKAIAIAEQtxwgBEEgaigCACABELYcDAELIAEgBEEUaigCACAEQRhqKAIAEL0YCyAAQThqIQAMAAsLC/QCAQR/IwBB0ABrIgMkACABKALAASEEAkACQAJAIAEtAMgBIgVBAkcNACABEIcOIAEgASgCeCIFQf////99cTYCeCADQTBqIAEgAkEDEN4HIAEgBTYCeCADKAI0IQIgAygCMCIFQYCAgIB4Rw0BIABBgICAgHg2AgAgACACNgIEDAILIAEoAsQBIQIgA0EMaiAFEN4bIANBATYCNCADQZjvmwE2AjAgA0IBNwI8IANBigWtQiCGQeyhmwGthDcDSCADIANByABqNgI4IANBGGogA0EwahCNFSADQSxqIANBFGooAgA2AgAgAyADKQIMNwIkIAQgAiADQRhqEIUVIQICQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBgICAgHg2AgAgACACNgIEDAELIAMoAjghBiAAQQA2AhQgACAENgIMIAAgBjYCCCAAIAI2AgQgACAFNgIAIAAgASgCvAE2AhALIANB0ABqJAAL5gICA38BfiMAQTBrIgIkAAJAAkACQAJAIAEtAMgBIgNBtX9qIgRBH0sNAEEBIAR0QYGAgpB4cQ0BCwJAIANBwABHDQAgAiABEKwNQgEhBQwCCyADQbR/akH/AXFB1QBJDQAgAkEYakEEciADEN4bIAJBFDYCLCACQeC/mwE2AiggAkGwgICAeDYCGCABKALAASABKALEASACQRhqEIUVIQQCQCABLQDIAUGiAUcNACABEMcRIQMgARCHDiABIAMQ5RELIABCAjcDACAAIAQ2AggMAgsgAkEYaiABEMMLIAIoAiAhAQJAIAIpAxgiBVBFDQAgAEICNwMAIAAgATYCCAwCCyACQQA2AhAgAiACKAIkNgIMIAIgATYCCCACQQA6ABQgAiAFNwMAQgAhBQsgACAFNwMAIAAgAikDADcDCCAAQRBqIAJBCGopAwA3AwAgAEEYaiACQRBqKQMANwMACyACQTBqJAALzQICA38BfiMAQSBrIgMkACABKAIMIQQgA0EQaiACIAEoAggiBUEAEJUCAkACQCADLQAQQQRGDQAgAykDECIGQv8Bg0IEUQ0AIAAgBjcCAAwBCwJAAkACQCAFRQ0AIANBEGogAiAFELQaIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIANBADYCECADQQhqIAIgA0EQakGP4JsBQQEQuAwgAy0ACEEERg0BIAMpAwgiBkL/AYNCBFENASAAIAY3AgAMAgsgACAGNwIADAELIANBEGogAiAFIAFBABDKBgJAIAMtABBBBEYNACADKQMQIgZC/wGDQgRRDQAgACAGNwIADAELAkACQCAERQ0AIANBEGogAiAEELQaIAMtABBBBEYNACADKQMQIgZC/wGDQgRSDQELIABBBDoAAAwBCyAAIAY3AgALIANBIGokAAvPAgICfwF+IwBBIGsiAyQAAkACQAJAAkAgASgCBCIERQ0AIANBGGogAiAEELQaIAMtABhBBEYNACADKQMYIgVC/wGDQgRSDQELIANBADYCDCADQRhqIAIgA0EMakGuxJsBQQEQuAwgAy0AGEEERg0BIAMpAxgiBUL/AYNCBFENASAAIAU3AgAMAgsgACAFNwIADAELIANBGGogASACENogAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAMAQsgA0EYaiACIANBDGpBr8SbAUEBELgMAkAgAy0AGEEERg0AIAMpAxgiBUL/AYNCBFENACAAIAU3AgAMAQsCQAJAIAEoAggiAUUNACADQRhqIAIgARC0GiADLQAYQQRGDQAgAykDGCIFQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAFNwIACyADQSBqJAALwQIBCH8jAEEQayIBJAAgACgCBCECAkAgACgCCCIDRQ0AIAIgA0ECdGpBfGoiBEUNACAEKAIADQAgA0ECdCEEIAJBfGohBSADQf////8DcSEGAkADQCAGIQcCQCAEDQBBACEHDAILIAdBf2ohBiAFIARqIQggBEF8aiEEIAgoAgBFDQALIAcgA0sNAQsgACAHNgIIIAchAwsCQAJAIAMgACgCACIEQQJ2Tw0AAkACQCAEDQBBACEEIAFBDGohBwwBCyABQQQ2AgwgBEECdCEEIAFBCGohBwsgByAENgIAIAEoAgwiBEUNACABKAIIIQcCQAJAIAMNACACIAQgBxCjHkEEIQcMAQsgAiAHIAQgA0ECdCIGENoDIgdFDQILIAAgAzYCACAAIAc2AgQLIAFBEGokAA8LIAQgBkHAkoMBEKoeAAv6AgEDfyAAKAI4IQECQCAAKAI8IgJFDQAgASEDA0AgAxCRGyADQRBqIQMgAkF/aiICDQALCyAAKAI0IAFBBEEQELURIAAoAkAgACgCREEEQQQQtREgACgCUCIDIAAoAlQQpBcgACgCTCADQQRBDBC1ESAAKAJoIgMgACgCbBDuGSAAKAJkIANBBEEUELURIAAoAnwhAQJAIAAoAoABIgJFDQAgASEDA0AgAygCACADQQRqKAIAQQRBCBC1ESADQRBqIQMgAkF/aiICDQALCyAAKAJ4IAFBBEEQELURIAAoAowBIgMgACgCkAEQ7xkgACgCiAEgA0EEQQwQtREgACgCmAEiAyAAKAKcARDvGSAAKAKUASADQQRBDBC1ESAAKAK8ASAAKALAAUEEQQgQtREgACgCzAEgACgC0AFBAUECELURIAAoAqABIAAoAqQBQQRBCBC1ESAAKAKsASAAKAKwAUEEQRAQtREgACgC3AEgACgC4AFBBEEQELURC9UCAQJ/AkACQAJAAkACQAJAAkAgAA4DAAECAAsgAS0AGA0CDAMLIAItACUNAyABKAIIIQAgASgCBCEBIAItACQhAyACQQA6ACQCQCAARQ0AIABBOGwhAANAAkACQCABKAIADQAgAiABQQhqELQEDAELIAEgAhDwCQsgAUE4aiEBIABBSGoiAA0ACwsgAiADOgAkDwsCQCABKAIADQAgAiABQQhqELQEDwsgASACEPAJDAILIAIoAiAtADRFDQELIAEtABkhAAJAIAItACUNACAAQf8BcUVBAXQhAwwCC0ECIQMgAEF/akH/AXFBAk8NAQsPCyACLQAkIQQgAiADOgAkAkAgASgCCCIARQ0AIAEoAgQhASAAQThsIQADQAJAAkAgASgCAA0AIAIgAUEIahC0BAwBCyABIAIQ8AkLIAFBOGohASAAQUhqIgANAAsLIAIgBDoAJAu4AgEFfyMAQSBrIQICQCABKAIEIgMgAUFoaigCAEkgASgCACIEIAFBZGooAgAiBUkgBCAFRhtBAUcNACACQQhqQRBqIAFBGGooAgA2AgAgAkEQaiABQRBqKQIANwMAIAIgASkCCDcDCCABQUhqIQUCQAJAA0AgBSIBQdAAaiABQTRqKAIANgIAIAFByABqIAFBLGopAgA3AgAgAUHAAGogAUEkaikCADcCACABQThqIAFBHGoiBSkCADcCACAFIABGDQEgAUFkaiEFIAMgAUEEaigCAEkgBCABKAIAIgZJIAQgBkYbDQALIAFBHGohBQwBCyABQRxqIQULIAFBHGogBDYCACAFIAM2AgQgBSACKQMINwIIIAVBEGogAkEQaikDADcC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IAEQlQEMAQsgAkEEaigCACABEPMICyAEIABBOGoiAEcNAAwDCwsgACgCBCABEPMIIAEtAAANASAAKAIIIAEQlQEPCyABLQAADQAgACgCBCABEJUBCwu+AgEDfwJAAkACQAJAAkADQAJAIAAoAgAiAkECRg0AAkACQCACDgcIAQAEBQgGCAsACyAAKAIMIgJFDQYgACgCCCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARCsCQsgAEEoaiEAIAJBWGoiAg0ADAcLCyAAKAIEIQAMAAsLIAAoAgwiAkUNAyAAKAIIIQMgAkE4bCEEQQAhAANAAkACQAJAAkAgAyAAaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACACQQxqKAIAIAEQqAELIAJBKGooAgAgARCsCQwCCyACQTBqKAIAIgJFDQEgAiABEKgBDAELIAJBBGooAgAgARCsCQsgBCAAQThqIgBHDQAMBAsLIAAoAgQgARCsCSAAQQhqIQAMAQsgAEEEaiEACyAAKAIAIAEQqAELC74CAQN/AkACQAJAAkACQANAAkAgACgCACICQQJGDQACQAJAIAIOBwgBAAQFCAYICwALIAAoAgwiAkUNBiAAKAIIIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEK0JCyAAQShqIQAgAkFYaiICDQAMBwsLIAAoAgQhAAwACwsgACgCDCICRQ0DIAAoAgghAyACQThsIQRBACEAA0ACQAJAAkACQCADIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAEgAkEMaigCABCnAQsgAkEoaigCACABEIwLDAILIAJBMGooAgAiAkUNASABIAIQpwEMAQsgAkEEaigCACABEIwLCyAEIABBOGoiAEcNAAwECwsgACgCBCABEK0JIABBCGohAAwBCyAAQQRqIQALIAEgACgCABCnAQsLvgIBA38CQAJAAkACQAJAA0ACQCAAKAIAIgJBAkYNAAJAAkAgAg4HCAEABAUIBggLAAsgACgCDCICRQ0GIAAoAgghACACQShsIQIDQAJAIAAoAgBBB0YNACAAIAEQrgkLIABBKGohACACQVhqIgINAAwHCwsgACgCBCEADAALCyAAKAIMIgJFDQMgACgCCCEDIAJBOGwhBEEAIQADQAJAAkACQAJAIAMgAGoiAigC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IAY3AwAgAhCaGCIHNwMQIAIgAkEQahC2CyEFIAcQxh0CQCAFRQ0AIAJB4ICAgHg2AhAgASADIAQgAkEQahCvGgsgACAENgIUIAAgAzYCECAAIAY3AwggAEEFNgIADAELIAJBEGogARCLAwJAIAIoAhBBBUYNACAAIAIpAxA3AwAgAEEYaiACQRBqQRhqKQMANwMAIABBEGogAkEQakEQaikDADcDACAAQQhqIAJBEGpBCGopAwA3AwAMAQsgACACKAIUNgIEIABBBjYCAAsgAkEwaiQAC6ACAQN/IwBBgAFrIgIkACAAKAIAIQACQAJAAkAgASgCCCIDQYCAgBBxDQAgA0GAgIAgcQ0BIAAoAgBBASABEMcHIQAMAgsgACgCACEAQYEBIQMDQCACIANqQX5qIABBD3EiBEEwciAEQdcAaiAEQQpJGzoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIAFBAUGIypsBQQIgAiADakF/akGBASADaxDKBSEADAELIAAoAgAhAEGBASEDA0AgAiADakF+aiAAQQ9xIgRBMHIgBEE3aiAEQQpJGzoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIAFBAUGIypsBQQIgAiADakF/akGBASADaxDKBSEACyACQYABaiQAIAALsgICAn8BfiMAQcAAayICJAACQAJAAkACQAJAAkAgASgCAA4EAAECAwALAkAgASkDCCIEQgODQgBSDQAgBKciASABKAIAIgFBAWo2AgAgAUF/TA0FCyAAQQA2AgAgACAENwMIDAMLIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAMAgsgASgCBCEDELUdIQEgAiADEEQgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgAUEIaiACQQhqKQMANwMAIAEgAikDADcDACAAQQI2AgAgACABNgIEDAELIABBAzYCAAsgAkHAAGokAA8LAAu/AgEDfyMAQTBrIgMkAAJAIAEgACgCeEEIcUEDdhCuDw0AIANBEGogARC/AyADKAIUIQQgAygCECEFIANBq4GAgHg2AhggACAFIAQgA0EYahCvGgsCQCAA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BCIBEKoBIAFBwABBCBCeEgwFCyAAQQhqEK8SDAQLIABBCGoiASgCACAAQQxqKAIAEKQaIAAoAgQgASgCABDBICAAKAIYIgFFDQMgASgCACICEMMDIAJB4ABBCBCeEiABQQxBBBCeEgwDCyAAKAIEIgEQ4QogAUEoQQgQnhIgACgCGCIBRQ0CIAEoAgAiAhDDAyACQeAAQQgQnhIgAUEMQQQQnhIMAgsgAEEEahC4CiAAKAIEIABBCGooAgAQviAgACgCGCIBRQ0BIAEoAgAiAhDDAyACQeAAQQgQnhIgAUEMQQQQnhIMAQsgAEEEahDuCSAAKAIIIgEQqgEgAUHAAEEIEJ4SCyAAQShBCBCeEguQAgEFfyAAKAIEIQEgACgCACECIABChICAgMAANwIAIAAoAgghAwJAAkACQCABIAJHDQAgACgCECICRQ0BIAAoAgwiBCADKAIIIgFGDQIgAkEEdCIARQ0CIAMoAgQiBSABQQR0aiAFIARBBHRqIAD8CgAADAILIAEgAmtBBHYhAQNAAkAgAigCAEECRg0AIAJBDGooAgAiBBCqASAEQcAAQQgQnhILIAJBEGohAiABQX9qIgENAAsgACgCECICRQ0AAkAgACgCDCIEIAMoAggiAUYNACACQQR0IgBFDQAgAygCBCIFIAFBBHRqIAUgBEEEdGogAPwKAAALIAMgASACajYCCAsPCyADIAEgAmo2AggLswIBAn8gACgCACECAkADQAJAAkACQCACDgcEAAIBAgQEBAsgACgCDCICRQ0DIAAoAgghACACQShsIQIDQAJAAkACQCAAKAIADggAAQEBAQEBAgELIAEgAEEIahC0BAwBCyAAIAEQ8AkLIABBKGohACACQVhqIgINAAwECwsgACgCDCICRQ0CIAAoAgghACACQThsIQIDQAJAAkACQAJAIAAoAgAOAwABAgALAkAgAEEoaigCACIDKAIADQAgASADQQhqELQEDAMLIAMgARDwCQwCCyABIABBEGoQtAQMAQsCQCAAQQRqKAIAIgMoAgANACABIANBCGoQtAQMAQsgAyABEPAJCyAAQThqIQAgAkFIaiICDQAMAwsLIAAoAgQiACgCACICDQALIAEgAEEIahC0BAsLqAIBA38CQAJAAkACQAJAAkAgACgCAA4HBQABAgMFBAULIAAoAgwiAkUNBCAA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Rw0AQQEhAiAEKAIQIAQoAhRLDQILIAJFDQAgAxD/EgsgBEEwaiQADwsgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALpAICAn8BfiMAQdABayIEJAAgBEEIaiADENANIARB4ABqIAEgBEEIahDaBAJAIAEoAiANACABQX82AiACQCABKAIsIgMgASgCJEcNACABQSRqQbyEhQEQoBYLIAEoAiggA0GYAWxqIgVBiYDEADYCAAJAQdgARQ0AIAVBBGogBEHgAGpB2AD8CgAACyAFIAI6AFwgASADQQFqNgIsIAEgASgCIEEBajYCICAEQcABaiIDIAFB2ABqKAIAIgU2AgAgBEG4AWpBFGogBTYCACAAQQA2AgggAEKAgICAwAA3AgAgACABKQJQIgY3AgwgBCAGNwLEASAAQRRqIAMpAwA3AgAgAEEcaiAEQcgBaikDADcCACAEQdABaiQADwtBrISFARD4FAALlwIBBH8gACABQcAAahD7CAJAIAEoAoQBIgJFDQAgASgCgAEiAyACQdgAbGohBANAAkACQCADKAIAIgJBBUcNACADKAIEIAAQqAEMAQsgAkEERg0AAkACQAJAIAIOBAMAAQIDCyADKAIEQQFHDQIgAygCCCAAEKgBDAILIAAgAygCBBCPCgwBCyADKAIMIgVFDQAgAygCCCECIAVBKGwhBQNAIAIgABC5ByACQShqIQIgBUFYaiIFDQALCyADQdgAaiIDIARHDQALCwJAIAEoApgBIgJFDQAgASgClAEhAyACQShsIQIDQCADIAAQuQcgA0EoaiEDIAJBWGoiAg0ACwsCQCABLQA8QQZGDQAgACABQRBqEPsICwu3AgIDfwF+IwBBIGsiAiQAAkACQAJAAkACQCABLQDIASIDQbd/ag4DAAEAAQsgAS0AgwFBAXFFDQEgASgCxAEhAyABKALAASEEIAJBo4CAgHg2AgggBCADIAJBCGoQhRUhAwJAIAEtAMgBQaIBRw0AIAEQxxEhBCABEIcOIAEgBBDlEQsgACADNgIADAILIAJBCGpBBHIgAxDeGyACQQ42AhwgAkH0sZsBNgIYIAJBsICAgHg2AgggASgCwAEgASgCxAEgAkEIahCFFSEDAkAgAS0AyAFBogFHDQAgARDHESEEIAEQhw4gASAEEOURCyAAIAM2AgAMAQsgARDKESEFIAEQhw5BACEDIABBADYCECAAIAU3AwAgACABKQO4ATcDCAwBC0ECIQMLIAAgAzoAFCACQSBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOYaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQkQoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJEKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDmGgwBCyAAQQRqKAIAIAEQkQoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAujAgECfyMAQTBrIgIkAAJAAkACQAJAA0ACQCAAKAIADgcCAwAEAAUFAgsgACgCBCEADAALCyACQQhqIABBCGoQ/hEgASgCACACKAIIIAIoAgwQ5RoMAgsgACgCDCEDIAIgACgCCCIANgIoIAJBADYCICACQQA2AhggAiAAIANBKGxqNgIsA0AgAkEYahDuFCIARQ0CIAAgARCSCgwACwsgACgCDEE4bCEDIAAoAgghAANAIANFDQECQAJAAkACQCAAKAIADgMAAQIACyAAQShqKAIAIAEQkgoMAgsgAkEQaiAAQRBqEP4RIAEoAgAgAigCECACKAIUEOUaDAELIABBBGooAgAgARCSCgsgAEE4aiEAIANBSGohAwwACwsgAkEwaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDjGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJMKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCTCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4xoMAQsgAEEEaigCACABEJMKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOQaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQlAoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJQKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDkGgwBCyAAQQRqKAIAIAEQlAoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAujAgECfyMAQTBrIgIkAAJAAkACQAJAA0ACQCAAKAIADgcCAwAEAAUFAgsgACgCBCEADAALCyACQQhqIABBCGoQ/hEgASgCACACKAIIIAIoAgwQ3RoMAgsgACgCDCEDIAIgACgCCCIANgIoIAJBADYCICACQQA2AhggAiAAIANBKGxqNgIsA0AgAkEYahDuFCIARQ0CIAAgARCVCgwACwsgACgCDEE4bCEDIAAoAgghAANAIANFDQECQAJAAkACQCAAKAIADgMAAQIACyAAQShqKAIAIAEQlQoMAgsgAkEQaiAAQRBqEP4RIAEoAgAgAigCECACKAIUEN0aDAELIABBBGooAgAgARCVCgsgAEE4aiEAIANBSGohAwwACwsgAkEwaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDhGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJYKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCWCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4RoMAQsgAEEEaigCACABEJYKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEOIaDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQlwoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJcKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDiGgwBCyAAQQRqKAIAIAEQlwoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAuLAgEIfyMAQRBrIgIkACACQQRqIAEoAgQgASgCCEEQEL4BIAIoAgwhAwJAAkAgAS0ADEUNACACKAIIIQQMAQsCQCADIAIoAgRHDQAgAkEEakHIj5sBEMENCyACKAIIIgQgA2pBLToAACACIANBAWoiAzYCDAtBACEBQQAgA0EBdiIFayEGIAMgBGpBf2ohByADQQJJIQgCQANAIAYgAUYNASABQX9qIQMCQCAIDQAgBC0AACEJIAQgByABaiIBLQAAOgAAIAEgCToAACAEQQFqIQQgAyEBDAELCyADIAVBzNKbARCzEQALIAAgAikCBDcCACAAQQhqIAJBBGpBCGooAgA2AgAgAkEQaiQAC6MCAQJ/IwBBMGsiAiQAAkACQAJAAkADQAJAIAAoAgAOBwIDAAQABQUCCyAAKAIEIQAMAAsLIAJBCGogAEEIahD+ESABKAIAIAIoAgggAigCDBDgGgwCCyAAKAIMIQMgAiAAKAIIIgA2AiggAkEANgIgIAJBADYCGCACIAAgA0EobGo2AiwDQCACQRhqEO4UIgBFDQIgACABEJkKDAALCyAAKAIMQThsIQMgACgCCCEAA0AgA0UNAQJAAkACQAJAIAAoAgAOAwABAgALIABBKGooAgAgARCZCgwCCyACQRBqIABBEGoQ/hEgASgCACACKAIQIAIoAhQQ4BoMAQsgAEEEaigCACABEJkKCyAAQThqIQAgA0FIaiEDDAALCyACQTBqJAALowIBAn8jAEEwayICJAACQAJAAkACQANAAkAgACgCAA4HAgMABAAFBQILIAAoAgQhAAwACwsgAkEIaiAAQQhqEP4RIAEoAgAgAigCCCACKAIMEN8aDAILIAAoAgwhAyACIAAoAggiADYCKCACQQA2AiAgAkEANgIYIAIgACADQShsajYCLANAIAJBGGoQ7hQiAEUNAiAAIAEQmgoMAAsLIAAoAgxBOGwhAyAAKAIIIQADQCADRQ0BAkACQAJAAkAgACgCAA4DAAECAAsgAEEoaigCACABEJoKDAILIAJBEGogAEEQahD+ESABKAIAIAIoAhAgAigCFBDfGgwBCyAAQQRqKAIAIAEQmgoLIABBOGohACADQUhqIQMMAAsLIAJBMGokAAujAgECfyMAQTBrIgIkAAJAAkACQAJAA0ACQCAAKAIADgcCAwAEAAUFAgsgACgCBCEADAALCyACQQhqIABBCGoQ/hEgASgCACACKAIIIAIoAgwQ3hoMAgsgACgCDCEDIAIgACgCCCIANgIoIAJBADYCICACQQA2AhggAiAAIANBKGxqNgIsA0AgAkEYahDuFCIARQ0CIAAgARCbCgwACwsgACgCDEE4bCEDIAAoAgghAANAIANFDQECQAJAAkACQCAAKAIADgMAAQIACyAAQShqKAIAIAEQmwoMAgsgAkEQaiAAQRBqEP4RIAEoAgAgAigCECACKAIUEN4aDAELIABBBGooAgAgARCbCgsgAEE4aiEAIANBSGohAwwACwsgAkEwaiQAC58CAQN/IwBBwABrIgIkACAAKAIAIQMCQAJAIAAtAAQiBCAALQAFIgBGDQAgAiAEOgA6IAIgADoAOyACQQM2AgwgAkHo+4MBNgIIIAJCAzcCFCACQSo2AjQgAkH7ADYCLCACQfsANgIkIAIgAzYCPCACIAJBIGo2AhAgAiACQTxqNgIwIAIgAkE7ajYCKCACIAJBOmo2AiAgASgCACABKAIEIAJBCGoQzgUhAAwBCyACIAQ6ADsgAkECNgIkIAJBgPyDATYCICACQgI3AiwgAkEqNgIUIAJB+wA2AgwgAiADNgI8IAIgAkEIajYCKCACIAJBPGo2AhAgAiACQTtqNgIIIAEoAgAgASgCBCACQSBqEM4FIQALIAJBwABqJAAgAAvSAgEBfyMAQdAAayIBJAAgAEIANwJUIABCgYSIkKDAgIEKNwIQIABC+gE3AhggAEHcAGpBADsBACABQgE3AkggAUIANwJAIAFCBDcCOCABQgA3AjAgAUIENwIQIAFCADcCCCABQoCAgIDAADcCACABQgQ3AiggAUIANwIgIAFCgICAgMAANwIYIAEQ1AkCQEHQAEUNACAAQYgBaiABQdAA/AoAAAsgAEEAOwHsASAAQegHNgLoASAAQgQ3AuABIABCADcC2AEgAEIANwKAASAAQoCAgIDAADcCeCAAQQA7AXQgAEGQzgA2AnAgAEIENwJoIABCADcCYCAAQQo6AF4gAEKAgICAwAA3AkwgAEIENwJEIABCADcCPCAAQoCAgIDAADcCNCAAQQA2AiwgAEIANwIgIABBgoSIGDYBCiAAQQA6AAggAEECNgIAIAFB0ABqJAALiAICAn8BfiMAQSBrIgIkACAAKAIAIQAgASgCAEHXrJsBQQEgASgCBCgCDBEMACEDIAJBADoAESACIAM6ABAgAiABNgIMIAAoAgwhAyAAKAIIIQECQAJAIAAoAgBBAUcNACADRQ0BIAEgA0EBdGohAwNAIAEtAAAhACACIAFBAWotAAA6ABYgAiAAQQh0OwEUIAJBDGogAkEUakHjARD0ChogAUECaiIBIANHDQAMAgsLIANFDQAgASADQQN0aiEAA0AgASkCACEEIAJBADoAHCACIAQ3AhQgAkEMaiACQRRqQeQBEPQKGiABQQhqIgEgAEcNAAsLIAJBDGoQwRohASACQSBqJAAgAQuXAgEEfwJAAkAgACgCACIBKAIAQQNGDQAgASgCICIAEJABIABBwABBCBCeEiABEPwODAELIAEoAhAiABCQASAAQcAAQQgQnhIgAUEIaigCACEAAkAgASgCDCICRQ0AIABBDGohAANAIAAoAgAiAxCQASADQcAAQQgQnhIgAEEQaiEAIAJBf2oiAg0ACyABQQhqKAIAIQALIAEoAgQgAEEEQRAQrxEgASgCICIERQ0AIARBBGooAgAhAAJAIAQoAggiAkUNAANAIAAoAgAiAxCrAiADQeAAQQgQnhIgAEEEaiEAIAJBf2oiAg0ACyAEQQRqKAIAIQALIAQoAgAgAEEEQQQQrxEgBEEUQQQQnhILIAFBKEEIEJ4SC4gCAQd/IwBBIGsiAiQAAkACQCABLQAYRQ0AIAAtADRFDQELIAAtADghAyAAIAEtABlFQQF0OgA4AkAgASgCCCIERQ0AIAEoAgQiASAEQThsaiEFIAJBDGohBiACQQhqIQcDQCAALQA5IQQgAEEAOgA5IAEgABCEBCAAIAQ6ADkCQCABQTBqKAIAIghFDQAgAEEBOgA5IAJBAzYCCCAIIAAQbCAAIAQ6ADkgAigCCCIEQQFLDQAgByACEKAYIAcgAikDABDvFyAERQ0AIAIoAgwiBCAEKAIAIgRBf2o2AgAgBEEBRw0AIAYQ3w8LIAFBOGoiASAFRw0ACwsgACADOgA4CyACQSBqJAALqQIBAX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyACIABBCGo2AgwgAUG11psBQQUgAkEMakHBAhCkCyEADAYLIAIgAEEEajYCDCABQbrWmwFBBSACQQxqQcICEKQLIQAMBQsgAiAAQQRqNgIMIAFBv9abAUEEIAJBDGpBwwIQpAshAAwECyACIABBBGo2AgwgAUHD1psBQQYgAkEMakHEAhCkCyEADAMLIAIgAEEEajYCDCABQcnWmwFBBiACQQxqQcUCEKQLIQAMAgsgAiAAQQRqNgIMIAFBz9abAUEHIAJBDGpBxgIQpAshAAwBCyACIABBBGo2AgwgAUHW1psBQQQgAkEMakHHAhCkCyEACyACQRBqJAAgAAupAgEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCAA4HAAECAwQFBgALIAIgAEEIajYCDCABQbXWmwFBBSACQQxqQcECEKQLIQAMBgsgAiAAQQRqNgIMIAFButabAUEFIAJBDGpBwgIQpAshAAwFCyACIABBBGo2AgwgAUG/1psBQQQgAkEMakHDAhCkCyEADAQLIAIgAEEEajYCDCABQcPWmwFBBiACQQxqQcQCEKQLIQAMAwsgAiAAQQRqNgIMIAFBydabAUEGIAJBDGpBxQIQpAshAAwCCyACIABBBGo2AgwgAUHP1psBQQcgAkEMakHGAhCkCyEADAELIAIgAEEEajYCDCABQdbWmwFBBCACQQxqQccCEKQLIQALIAJBEGokACAAC4ACAQR/IAAoAgAhAQJAAkADQCABIgJBBEkNASACQQJxDQEgACACQQJyIAAoAgAiASABIAJGGzYCACABIAJHDQALA0AgAkF8cSIDIQECQANAAkAgASgCACIERQ0AIAMgBDYCAAJAIAJBAXENAAJAIAQoAgQiAUUNACADIAE2AgAgACAAKAIAQX1xNgIADAcLA0AgACACQQFxIAAoAgAiASABIAJGGzYCACABIAJGDQcgASECIAFBBEkNAAwECwsgACACQX1xIAAoAgAiASABIAJGIgIbNgIAIAJFDQIMBAsgASgCCCIEIAE2AgQgBCEBDAALCyABIQIMAAsLDwsQ3hkAC7YCAQF/IwBB8ABrIgIkACAAKAIAKAIAIQAgAkH454MBNgJoIAJBrOqDATYCYCACIABBMWo2AlwgAkGM6oMBNgJYIAIgAEEQajYCVCACQdDpgwE2AlAgAiAAQSxqNgJMIAJBrOqDATYCSCACIABBMGo2AkQgAkGc6oMBNgJAIAIgAEEoajYCPCACQZzqgwE2AjggAiAAQSRqNgI0IAJBnOqDATYCMCACIABBIGo2AiwgAkGc6oMBNgIoIAIgAEEcajYCJCACQZzqgwE2AiAgAiAAQRhqNgIcIAJBjOqDATYCGCACIABBCGo2AhQgAkGM6oMBNgIQIAIgADYCDCACIABBMmo2AmwgAiACQewAajYCZCABQdDsgwFBC0Hw64MBQQwgAkEMakEMEP0JIQAgAkHwAGokACAAC50CAQN/IwBBwABrIgMkAAJAAkACQAJAIAIgASgC3AIiBE8NACABKALYAiACQQJ0aigCACIEDQEgAyABEPkJIAMoAgQhBAJAIAMoAgAiBUEwRg0AAkBBOEUNACAAQQhqIANBCGpBOPwKAAALIAAgBDYCBCAAIAU2AgAMBAsgAiABKALcAiIFTw0CIAEoAtgCIAJBAnRqIAQ2AgACQCABKALQAiIFIAEoAsgCRw0AIAFByAJqQaT3gwEQ6RULIAAgBDYCBCAAQTA2AgAgASAFQQFqNgLQAiABKALMAiAFQQJ0aiACNgIADAMLIAIgBEGE94MBELMRAAsgAEEwNgIAIAAgBDYCBAwBCyACIAVBlPeDARCzEQALIANBwABqJAALmAIBBH8jAEEwayIEJABBACEFAkACQCADKAIQIgYgAygCFCIHSw0AAkACQCADKAIAQX9qQQJJDQAgBEEMaiABIAMoAgggAygCDCAGIAcQ6AwgBCgCDEEBRw0CIAQoAhAgBCgCFCIDTQ0BIARBADYCKCAEQQE2AhwgBEHE5oMBNgIYIARCBDcCICAEQRhqQaDihAEQhRsACyAEQQxqIAEgAygCCCADKAIMIAYgBxD1ECAEKAIMQQFHDQEgBCgCECAEKAIUIgNLDQILIAAgAzYCCCAAQQA2AgRBASEFCyAAIAU2AgAgBEEwaiQADwsgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALmAIBBH8jAEEwayIEJABBACEFAkACQCADKAIQIgYgAygCFCIHSw0AAkACQCADKAIAQX9qQQJJDQAgBEEMaiABIAMoAgggAygCDCAGIAcQuQggBCgCDEEBRw0CIAQoAhAgBCgCFCIDTQ0BIARBADYCKCAEQQE2AhwgBEHE5oMBNgIYIARCBDcCICAEQRhqQaDihAEQhRsACyAEQQxqIAEgAygCCCADKAIMIAYgBxDWCSAEKAIMQQFHDQEgBCgCECAEKAIUIgNLDQILIAAgAzYCCCAAQQA2AgRBASEFCyAAIAU2AgAgBEEwaiQADwsgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALyQIBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBdGoiA0EHIANBJkkbDiYJDAwACAkLAQ0NDAMEDAwCAwsEBQkJCAgKBgkHDAsICAsLCwwICQkLIAAoAiAiACACNgI0IAAgATYCMA8LIAAgAjYCNCAAIAE2AjAPCyAAKAIIDgcHCAgJCQoKBwsgACACNgIgIAAgATYCHA8LIAAgAjYCGCAAIAE2AhQPCyAAKAIgIgAgAjYCKCAAIAE2AiQPCyAAIAI2AiwgACABNgIoDwsgACgCBCIAIAI2AgQgACABNgIADwsgACACNgIMIAAgATYCCA8LIAAgAjYCCCAAIAE2AgQPCyAAIAI2AhwgACABNgIYDwsgACACNgIQIAAgATYCDA8LIAAgAjYCFCAAIAE2AhAPCyAAIAI2AiQgACABNgIgC4sCAgd/AX4jAEEQayIBJAACQCAAKAIQIgJFDQAgACgCDCEDAkAgACgCGCIERQ0AIANBCGohBSADKQMAQn+FQoCBgoSIkKDAgH+DIQggAyEGQQEhBwNAIAdFDQECQANAIAhCAFINASAGQYB/aiEGIAUpAwBCf4VCgIGChIiQoMCAf4MhCCAFQQhqIQUMAAsLIAYgCHqnQQF0QfABcWtBdGoQ4B0gCEJ/fCAIgyEIIARBf2oiBCEHDAALCyABQQRqQRBBCCACQQFqEJEPIAMgASgCDGsgASgCBCABKAIIEKMeCwJAIABBf0YNACAAIAAoAgRBf2oiBTYCBCAFDQAgAEEcEOMhCyABQRBqJAALjgIBAX8jAEEwayIGJAACQAJAAkAgBSAESQ0AIAUgA0sNASAGQgE3AhgCQAJAIAUgBGsiAyABKAJAIgVJDQAgBiABIAZBGGogAiAEaiADIAEoAjwgBSABKAIwERUAIAYoAgBBAXFFDQAgBigCBCAEaiIEIAVqIgUgBEkNBCAAQQA2AgwgACAFNgIIIAAgBDYCBCAAQQE2AgAMAQsgAEEANgIAIAAgBikCDDcCBCAAQQxqIAZBFGooAgA2AgALIAZBMGokAA8LIAQgBUG4v4ABEKkgAAsgBSADQbi/gAEQjyAACyAGQQA2AiggBkEBNgIcIAZBxOaDATYCGCAGQgQ3AiAgBkEYakHM5oMBEIUbAAuwAgECfyMAQRBrIgIkAAJAAkACQAJAAkACQCAAKAIAIgAoAgBBgICAgHhzIgNBBCADQQRJGw4FAAECAwQACyACIABBCGo2AgwgAUGA9oQBQQ9B8PaEAUEDIAJBDGpBmQEQjg0hAAwECyACIABBCGo2AgwgAUHz9oQBQQ1ByOmDAUEHIABBBGpBmgFBgPeEAUEHIAJBDGpBKxDYDCEADAMLIAIgAEEEajYCDCABQYf3hAFBDUHI6YMBQQcgAkEMakGbARCODSEADAILIAIgAEEEajYCDCABQZT3hAFBEkHI6YMBQQcgAkEMakGbARCODSEADAELIAIgADYCDCABQab3hAFBCUHI6YMBQQcgAEEMakGaAUGL/pkBQQQgAkEMakGcARDYDCEACyACQRBqJAAgAAuAAgEFfyAAKAIEIQEgACgCACECIABChICAgMAANwIAIAAoAgghAwJAAkACQCABIAJHDQAgACgCECICRQ0BIAAoAgwiACADKAIIIgFGDQIgAkEEdCIERQ0CIAMoAgQiBSABQQR0aiAFIABBBHRqIAT8CgAADAILIAEgAmtBBHYhAQNAIAIoAgAgAkEEaigCAEEBQQEQwBEgAkEQaiECIAFBf2oiAQ0ACyAAKAIQIgJFDQACQCAAKAIMIgAgAygCCCIBRg0AIAJBBHQiBEUNACADKAIEIgUgAUEEdGogBSAAQQR0aiAE/AoAAAsgAyABIAJqNgIICw8LIAMgASACajYCCAuRAgEEfyMAQTBrIgMkAEEAIQQCQAJAIAIoAhAiBSACKAIUIgZLDQAgAEEEaiEEAkAgAigCAEF/akECSQ0AIANBDGogBCACKAIIIAIoAgwgBSAGEK0LQQAhBCADKAIMQQFHDQFBASEEIAMoAhAgAygCFE0NASADQQA2AiggA0EBNgIcIANBxOaDATYCGCADQgQ3AiAgA0EYakGg4oQBEIUbAAsgA0EMaiAEIAIoAgggAigCDCAFIAYQrgtBACEEIAMoAgxBAUcNAEEBIQQgAygCECADKAIUSw0BCyADQTBqJAAgBA8LIANBADYCKCADQQE2AhwgA0HE5oMBNgIYIANCBDcCICADQRhqQaDihAEQhRsAC7MCAQF/IwBB8ABrIgIkACAAKAIAIQAgAkGY+JkBNgJoIAJB8PuZATYCYCACIABBNGo2AlwgAkHw+5kBNgJYIAIgAEEzajYCVCACQfD7mQE2AlAgAiAAQTJqNgJMIAJBzIOaATYCSCACIABBMGo2AkQgAkHA+5kBNgJAIAIgAEEkajYCPCACQfD7mQE2AjggAiAAQTFqNgI0IAJBvIOaATYCMCACIABBIGo2AiwgAkHg+5kBNgIoIAIgAEEcajYCJCACQYCJmgE2AiAgAiAANgIcIAJBsPuZATYCGCACIABBGGo2AhQgAkHw95kBNgIQIAIgAEEQajYCDCACIABBNWo2AmwgAiACQewAajYCZCABQYKHmgFBC0GQiZoBQQwgAkEMakEMEP0JIQAgAkHwAGokACAAC5gCAQN/IwBBMGsiBCQAIAQgAzYCFCAEIAI2AhAgAS0AyAEhBSABEIcOAkACQAJAAkAgBUGKAUYNAAJAIAJBAUcNACADKAIQIQUgAygCDCEGIARBg4CAgHg2AhggASAGIAUgBEEYahCvGgsgASABKAJ4IgVBwAByNgJ4IARBCGogARC/CCAEKAIIIQYgASAFNgJ4IAQoAgwhASAGQQFxDQEgACABNgIMIAAgAzYCCCAAIAI2AgQgAEEDNgIADAMLIAQgAUHAABCOFSAEKAIEIQEgBCgCAEEBcUUNAQsgAEEFNgIAIAAgATYCBCAEQRBqEP8aDAELIAAgATYCDCAAIAM2AgggACACNgIEIABBBDYCAAsgBEEwaiQAC/sBAQp/IwBBEGsiAiQAIAFBFGohAyABIAEtABgiBGpBE2ohBSABKAIMIQYgASgCBCEHIAEoAgghCCABKAIQIQkgBEEFSSEKAkACQAJAA0BBACELIAkgBkkNAyAJIAhLDQMgAkEIaiAFLQAAIAcgBmogCSAGaxCHDyACKAIIQQFxRQ0BIAEgAigCDCAGakEBaiIGNgIMIAYgBEkNACAGIARrIQsgBiAISw0AIApFDQIgByALaiAEIAMgBBCZHEUNAAsgACAGNgIIIAAgCzYCBEEBIQsMAgsgASAJNgIMDAELIARBBEGg4JsBEI8gAAsgACALNgIAIAJBEGokAAuBAgIDfwF+IAAgACgCOCACajYCOAJAAkACQCAAKAI8IgMNAEEAIQQMAQsgASACQQBBCCADayIEIAIgBCACSRsQvQ8hBiAAIAApAzAgBiADQQN0QThxrYaEIgY3AzACQCACIARJDQAgACAAKQMYIAaFNwMYIAAQ3BAgAEEANgI8IAAgACkDACAAKQMwhTcDAAwBCyADIAJqIQMMAQsgAiAEayIFQXhxIQMCQANAIAQgA08NASAAIAApAxggASAEaikAACIGhTcDGCAAENwQIAAgBiAAKQMAhTcDACAEQQhqIQQMAAsLIAAgASACIAQgBUEHcSIDEL0PNwMwCyAAIAM2AjwLkQIBA38jAEEwayIEJAACQAJAIAIoAhAiBSACKAIUIgZLDQACQAJAIAIoAgBBf2pBAkkNACAEQQxqIAAgAigCCCACKAIMIAUgBhDoDEEAIQIgBCgCDEEBRw0BQQEhAiAEKAIQIAQoAhRNDQEgBEEANgIoIARBATYCHCAEQcTmgwE2AhggBEIENwIgIARBGGpBoOKEARCFGwALIARBDGogACACKAIIIAIoAgwgBSAGEPUQQQAhAiAEKAIMQQFHDQBBASECIAQoAhAgBCgCFEsNAgsgAkUNACADEP8SCyAEQTBqJAAPCyAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEIUbAAuRAgEDfyMAQTBrIgQkAAJAAkAgAigCECIFIAIoAhQiBksNAAJAAkAgAigCAEF/akECSQ0AIARBDGogACACKAIIIAIoAgwgBSAGELkIQQAhAiAEKAIMQQFHDQFBASECIAQoAhAgBCgCFE0NASAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEIUbAAsgBEEMaiAAIAIoAgggAigCDCAFIAYQ1glBACECIAQoAgxBAUcNAEEBIQIgBCgCECAEKAIUSw0CCyACRQ0AIAMQ/xILIARBMGokAA8LIARBADYCKCAEQQE2AhwgBEHE5oMBNgIYIARCBDcCICAEQRhqQaDihAEQhRsAC4cCAQN/IwBBEGsiAkEGakECakEAOgAAIAJBADsBBiACIAFBFHZB2PmcAWotAAA6AAkgAiABQQR2QQ9xQdj5nAFqLQAAOgANIAIgAUEIdkEPcUHY+ZwBai0AADoADCACIAFBDHZBD3FB2PmcAWotAAA6AAsgAiABQRB2QQ9xQdj5nAFqLQAAOgAKIAJBBmogAUEBcmdBAnYiA2oiBEH7ADoAACAEQX9qQfUAOgAAIAJBBmogA0F+aiIDakHcADoAACACQQZqQQhqIgQgAUEPcUHY+ZwBai0AADoAACAAQQo6AAsgACADOgAKIAAgAikBBjcAACACQf0AOgAPIABBCGogBC8BADsAAAuRAgEGfyMAQcAAayICJAACQAJAIAEoAgAiAygCICIEQf////8HTw0AIAMgBEEBajYCICADKAIsQZgBbCEFIAMoAighBgNAIAVFDQIgBiAFQeh+aiIFaiIHKAIAQYmAxABGDQALIAJBCGpBEGogB0GYAWpBQGoiBUEQaikCADcDACACQQhqQQhqIAVBCGopAgA3AwAgAiAFKQIANwMIIAJBBDYCJCAAIAEoAgQgASgCCCACQQhqIAJBJGoQ0QwgAyADKAIgQX9qNgIgIAJBwABqJAAPC0Hkg4UBEPkUAAsgAyAENgIgIAJBADYCNCACQQE2AiggAkGUhIUBNgIkIAJCBDcCLCACQSRqQZyEhQEQhRsAC/kBAQl/IAEoAgQhAwJAAkAgASgCCCIERQ0AIARBHGwhBSADQRhqIQZBACEHIAItABhB/wFxIghBB0chCQNAAkAgBi0AACIKQQdHIAlzDQBBASELIApBB0YNAyAIQQdGDQMgCiAIRg0DCyAHQQFqIQcgBkEcaiEGIAVBZGoiBQ0ACwsCQCAEIAEoAgBHDQAgARCdFiABKAIEIQMLIAEgBEEBajYCCCADIARBHGxqIgYgAikCADcCACAGQRhqIAJBGGooAgA2AgAgBkEQaiACQRBqKQIANwIAIAZBCGogAkEIaikCADcCAEEAIQsLIAAgBzYCBCAAIAs2AgALgQICA38BfiAAIAAoAjggAmo2AjgCQAJAAkAgACgCPCIDDQBBACEEDAELIAEgAkEAQQggA2siBCACIAQgAkkbELYPIQYgACAAKQMwIAYgA0EDdEE4ca2GhCIGNwMwAkAgAiAESQ0AIAAgACkDGCAGhTcDGCAAEN4MIABBADYCPCAAIAApAwAgACkDMIU3AwAMAQsgAyACaiEDDAELIAIgBGsiBUF4cSEDAkADQCAEIANPDQEgACAAKQMYIAEgBGopAAAiBoU3AxggABDeDCAAIAYgACkDAIU3AwAgBEEIaiEEDAALCyAAIAEgAiAEIAVBB3EiAxC2DzcDMAsgACADNgI8C5ACAgN/AX4CQCAAKAIIIgFFDQAgACgCBCEAA0ACQAJAAkACQCAAKAIADgIBAgALIABBBGooAgAiAhDYByACQShBCBCeEiAAQRhqKAIAIgJFDQIgAigCACIDEKsCIANB4ABBCBCeEiACQQxBBBCeEgwCCyAAQQhqEMkMDAELAkAgAEEQaikDACIEQgODQgBSDQAgBKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDBGwsCQCAAQShqKAIAIgJFDQAgAigCACIDEKsCIANB4ABBCBCeEiACQQxBBBCeEgsgAEEwaigCACICRQ0AIAIQkAEgAkHAAEEIEJ4SCyAAQThqIQAgAUF/aiIBDQALCwuVAgMCfwF+AXwjAEEgayICJAACQAJAAkACQCABQQ9LDQBBACEDAkACQAJAIAEOAgYAAQtBASEDIAAtAABBVWoOAwUBBQELAkAgAC0AAEErRg0AIAEhAwwBCyABQX9qIQMgAEEBaiEAC0IAIQQDQAJAIAAtAABBUGoiAUEJTQ0AQQEhAwwFCyAAQQFqIQAgBEIKfiABrXwhBCADQX9qIgMNAAsgBLohBQwBCyACQQhqIAAgARCLASACLQAIDQEgAisDECEFCyACQSBqJAAgBQ8LIAIgAi0ACToAH0HUpJsBQSsgAkEfakGAq5kBQZCrmQEQ6A8ACyACIAM6AAhB1KSbAUErIAJBCGpBsKqZAUHwqpkBEOgPAAuAAgEEfyMAQcAAayICJAACQCABKAIIIgNFDQAgA0EEdCEEIAEoAgRBDGohAwNAAkACQCADKAIAIgEoAgBBGkcNACACIAAoAgAgACgCBCABQQhqIgUQtQwgAigCAEEyRg0BIAEQyQEgAUE4aiACQThqKQMANwMAIAFBMGogAkEwaikDADcDACABQShqIAJBKGopAwA3AwAgAUEgaiACQSBqKQMANwMAIAFBGGogAkEYaikDADcDACABQRBqIAJBEGopAwA3AwAgBSACQQhqKQMANwMAIAEgAikDADcDAAwBCyABIAAQRgsgA0EQaiEDIARBcGoiBA0ACwsgAkHAAGokAAuqAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABDJASAAQcAAQQgQnhIPCyAAKQMIIAAoAiAQwhMPCyAAKAIIIgEgACgCDBCkGiAAKAIEIAEQwSAgACgCGCIARQ0CIAAoAgAiARDEAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAKAIEIgEQuwogAUEoQQgQnhIgACgCGCIARQ0BIAAoAgAiARDEAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAQQRqELgKIAAoAgQgACgCCBC+ICAAKAIYIgBFDQAgACgCACIBEMQDIAFB4ABBCBCeEiAAQQxBBBCeEgsPCyAAKAIEIgEQuwogAUEoQQgQnhIgACgCCCIAEMkBIABBwABBCBCeEguqAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQGBQALIAAoAgQiABDBASAAQcAAQQgQnhIPCyAAKQMIIAAoAiAQzhMPCyAAKAIIIgEgACgCDBCkGiAAKAIEIAEQwSAgACgCGCIARQ0CIAAoAgAiARDHAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAKAIEIgEQvAogAUEoQQgQnhIgACgCGCIARQ0BIAAoAgAiARDHAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAQQRqELgKIAAoAgQgACgCCBC+ICAAKAIYIgBFDQAgACgCACIBEMcDIAFB4ABBCBCeEiAAQQxBBBCeEgsPCyAAKAIEIgEQvAogAUEoQQgQnhIgACgCCCIAEMEBIABBwABBCBCeEguLAgEEfwJAAkACQAJAIAAoAgAOBAABAgMACyAAQQhqIAEQ3R0PCyAAKAIMQShsIQIgACgCCCEDAkADQCACRQ0BIAMgARCQHiACQVhqIQIgA0EoaiEDDAALCyAAQRhqIAEQ9R4PCyAAQQRqIAEQkR4PCyAAKAIMQThsIQQgACgCCCEFQQAhAgNAAkACQCAEIAJGDQACQAJAAkAgBSACaiIDKAIADgMAAQIACyADQQhqKAIAIANBDGooAgAgARD0HiADQShqKAIAIAEQ9xEMAwsgA0EQaiABEN0dIANBMGooAgAgARC4HwwCCyADQQRqIAEQkR4MAQsgAEEYaiABEPUeDwsgAkE4aiECDAALC4QCAgZ/A34CQCAAKAIMDQBBAA8LIAAoAgAiAkF0aiEDIAAoAgQiBCABKAIAIgVB3cvdnnlsQQ93IgBxIQEgAEEZdq1CgYKEiJCgwIABfiEIQQAhBgN/IAIgAWopAAAiCSAIhSIKQn+FIApC//379+/fv/9+fINCgIGChIiQoMCAf4MhCgJAAkACQANAIApQIgANASAFIANBACAKeqdBA3YgAWogBHEiB2tBDGxqKAIARg0CIApCf3wgCoMhCgwACwsgCSAJQgGGg0KAgYKEiJCgwIB/g1ANAQtBAEEAIAJBACAHa0EMbGogABtBdGogABsPCyABIAZBCGoiBmogBHEhAQwACwuTAgEBfyMAQSBrIgUkACAFQQA6AAYgBSADOgAFIAUgBDoABwJAIAEoAngiA0GAgAFxRQ0AIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUECRw0AIAEoAsQBIQMgASgCwAEhBCAFQZqBgIB4NgIIIAEgBCADIAVBCGoQrxogASgCeCEDCwJAAkAgAg0AIAEgA0H/4t//fXFBgIAgcjYCeCAFIAVBBWo2AhAgBSAFQQZqNgIMIAUgBUEHajYCCCAAIAVBCGogARCCBwwBCyABIANB/+Lf/31xQYCBIHI2AnggBSAFQQVqNgIQIAUgBUEGajYCDCAFIAVBB2o2AgggACAFQQhqIAEQggcLIAEgAzYCeCAFQSBqJAALhgICAX8BfiMAQRBrIgMkAAJAAkACQAJAAkACQAJAIAEoAgAOBAABAgMACyADQQhqIAFBCGogAhD2CSADLQAIQQRGDQMgAykDCCIEQv8Bg0IEUQ0DIAAgBDcCAAwFCyADQQhqIAFBBGogAhCHAyADLQAIQQRGDQIgAykDCCIEQv8Bg0IEUQ0CIAAgBDcCAAwECyADQQhqIAFBBGogAhC/ByADLQAIQQRGDQEgAykDCCIEQv8Bg0IEUQ0BIAAgBDcCAAwDCyADQQhqIAFBBGogAhDYASADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUg0BCyAAQQQ6AAAMAQsgACAENwIACyADQRBqJAAL8gEBB39BASEEQQAhBQNAIAQhBkEBIQcDQEEAIQQDQAJAAkACQAJAIAYgBGoiCCACTw0AIAUgBGoiCSACTw0BIAEgCGotAAAhCiABIAlqLQAAIQkCQAJAIANFDQAgCkH/AXEiCiAJQf8BcSIJSw0EIAogCUkNAQwFCyAKQf8BcSIKIAlB/wFxIglJDQMgCiAJTQ0ECyAIQQFqIgYgBWshBwwFCyAAIAc2AgQgACAFNgIADwsgCSACQaDcggEQsxEACyAGQQFqIQQgBiEFDAMLQQAgBEEBaiIEIAQgB0YiCBshBCAHQQAgCBsgBmohBgwACwsLC4ACAQN/IwBBIGsiAyQAAkACQAJAIAEgAmoiAiABTw0AQQAhBAwBC0EAIQQCQCACIAAoAgAiAUEBdCIFIAIgBUsbIgJBCCACQQhLGyICQQBODQAMAQsCQAJAIAENAEEAIQEgA0EcaiEFDAELIANBATYCHCAAKAIEIQQgA0EYaiEFCyAFIAE2AgACQAJAIAMoAhxFDQACQCADKAIYIgENACADQRBqIAIQ5xwgAygCECEBDAILIAQgAUEBIAIQ2gMhAQwBCyADQQhqIAIQ5xwgAygCCCEBCyABDQFBASEECyAEIAJBhISdARCqHgALIAAgAjYCACAAIAE2AgQgA0EgaiQAC4oCAQN/IwBBEGsiAiQAAkACQAJAIAAtACwiA0F9aiIEQQEgBEH/AXFBA0kbQf8BcQ4DAAECAAsgAS0AkAENASAAKAIQIgRFDQEgAiAAKQMAIAQQuhggAUGAAWogAikDACACKAIIEOcFGgwBCyAAQRhqIQQCQCADQf8BcUECRg0AIAEtAJABDQEgACgCKCIARQ0BIAIgBCkDACAAELoYIAFBgAFqIAIpAwAgAigCCBDnBRoMAQsDQCAEKAIAIgBBGGohBCAALQAsQQJGDQALIAEtAJABDQAgAEEoaigCACIARQ0AIAIgBCkDACAAELoYIAFBgAFqIAIpAwAgAigCCBDnBRoLIAJBEGokAAuYAgEGfyMAQdAAayICJAAgASgCBCEDIAEoAgwhBCABKAIUIQUCQAJAAkADQCADIARGDQICQEEoRQ0AIAJBEGogA0Eo/AoAAAsgASADQShqIgY2AgQCQCACKAIQQQdGDQAgAkEIaiADENMNIAIoAgwhAyACKAIIIQYgAkG/gICAeDYCOCAGIAMgAkE4ahCFFSEHAkAgASgCECIDLQDIAUGiAUcNACADEMcRIQYgAxCHDiADIAYQ5RELIAJBEGoQ6xIMAgsgAigCGCEHIAYhAwJAIAIoAhQiBkF+ag4CAgEACwsgACACKQIcNwIIIAAgBzYCBCAAIAY2AgAMAgsgBRC5HyAFIAc2AgALIABBAjYCAAsgAkHQAGokAAuUAgEBfyMAQRBrIgMkAAJAAkACQAJAIAJBemoOAwACAQILIAEtAABB8gBHDQEgAS0AAUHlAEcNASABLQACQe0ARw0BIAEtAANB7wBHDQEgAS0ABEH2AEcNASABLQAFQeUARw0BIABBADsBAAwCCyABLQAAQfAARw0AIAEtAAFB8gBHDQAgAS0AAkHlAEcNACABLQADQfMARw0AIAEtAARB5QBHDQAgAS0ABUHyAEcNACABLQAGQfYARw0AIAEtAAdB5QBHDQAgAEGAAjsBAAwBCyADQQRqIAEgAhDJBSADKAIIIgEgAygCDEGoh4ABQQIQgxAhAiAAQQE6AAAgACACNgIEIAMoAgQgARCXHgsgA0EQaiQAC5ACAgR/AX4jAEEwayIBJAACQCAAKAIEIgJFDQAgACgCACEDAkAgACgCDCIARQ0AIAMpAwAhBSABIAA2AiggASADNgIgIAEgAyACakEBajYCHCABIANBCGo2AhggASAFQn+FQoCBgoSIkKDAgH+DNwMQQQEhAANAIABFDQECQANAIAFBCGogAUEQahDzFSABKAIIQQFxDQEgASABKAIgQWBqNgIgIAEgASgCGCIAQQhqNgIYIAEgACkDAEJ/hUKAgYKEiJCgwIB/gzcDEAwACwsgASgCDCEEIAEgASgCKEF/aiIANgIoIAEoAiAgBEECdGtBfGooAgAQ6hsMAAsLIAMgAkEEQQgQ9BULIAFBMGokAAuHAgEFfyMAQRBrIgYkAAJAAkACQAJAAkACQCABKAIYIgctAOICDQAgBiABIAIgAyAEIAUQfyAGKAIAIgdBAkYNASAHQQFxRQ0DIAYoAgghCCAGKAIEIQkMBAsgBy0A4wIhCiAGIAEgAiADIAQgBRB/IAYoAgAiB0ECRw0BCyAGKAIEIQEgAEECNgIAIAAgATYCBAwDCyAHQQFxRQ0AIAYoAgghCCAGKAIEIQkgCkEBcUUNASAGIAU2AgwgBiAENgIIIAYgAjYCBCAGIAE2AgAgACADIAkgCCAIIAYQgAYMAgsgAEEANgIADAELIAAgCDYCCCAAIAk2AgQgACAHNgIACyAGQRBqJAALgQICBn8DfgJAIAAoAgwNAEEADwsgASkDACABKAIIEO4XIQggACgCACICQWhqIQMgCEIZiEKBgoSIkKDAgAF+IQkgACgCBCIEIAincSEFQQAhBgN/IAIgBWopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MhCAJAAkACQANAIAhQIgANASABIANBACAIeqdBA3YgBWogBHEiB2tBGGxqEPsdDQIgCEJ/fCAIgyEIDAALCyAKIApCAYaDQoCBgoSIkKDAgH+DUA0BC0EAQQAgAkEAIAdrQRhsaiAAG0FoaiAAGw8LIAUgBkEIaiIGaiAEcSEFDAALC5QCAQV/IwBBEGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEQ7hwMAQsCQAJAAkACQAJAIAEtAAwiBQ4DAAQBAAsgBEUNAQwCCyAERQ0BCyADQQRqIAEoAgQgASgCCCACKAIEIAIoAggQ+hIgACAFIANBBGoQkRMMAgsCQAJAAkAgASgCBCIGIAEoAggiASACKAIEIgcgAigCCCICEOsYQf8BcQ4CAQIACyADQQRqIAcgAiAGIAEQmBUgACAEIANBBGoQkRMMAwsgAEEIakEAKQLI34IBNwIAIABBACkCwN+CATcCAAwCCyADQQRqIAYgASAHIAIQmBUgACAFIANBBGoQkRMMAQsgACACEO4cCyADQRBqJAALigIBBH8jAEEwayIDJABBACEEAkACQCACKAIQIgUgAigCFCIGSw0AAkAgAigCAEF/akECSQ0AIANBDGogACACKAIIIAIoAgwgBSAGEOgMQQAhBCADKAIMQQFHDQFBASEEIAMoAhAgAygCFE0NASADQQA2AiggA0EBNgIcIANBxOaDATYCGCADQgQ3AiAgA0EYakGg4oQBEIUbAAsgA0EMaiAAIAIoAgggAigCDCAFIAYQ9RBBACEEIAMoAgxBAUcNAEEBIQQgAygCECADKAIUSw0BCyADQTBqJAAgBA8LIANBADYCKCADQQE2AhwgA0HE5oMBNgIYIANCBDcCICADQRhqQaDihAEQhRsAC4oCAQR/IwBBMGsiAyQAQQAhBAJAAkAgAigCECIFIAIoAhQiBksNAAJAIAIoAgBBf2pBAkkNACADQQxqIAAgAigCCCACKAIMIAUgBhC5CEEAIQQgAygCDEEBRw0BQQEhBCADKAIQIAMoAhRNDQEgA0EANgIoIANBATYCHCADQcTmgwE2AhggA0IENwIgIANBGGpBoOKEARCFGwALIANBDGogACACKAIIIAIoAgwgBSAGENYJQQAhBCADKAIMQQFHDQBBASEEIAMoAhAgAygCFEsNAQsgA0EwaiQAIAQPCyADQQA2AiggA0EBNgIcIANBxOaDATYCGCADQgQ3AiAgA0EYakGg4oQBEIUbAAuQAgEDfwJAAkACQAJAAkACQAJAIAAoAgAOCAYBAgYDBAUABgsgACgCCCEBAkAgACgCDCICRQ0AIAEhAwNAIAMQ9R0gA0EcaiEDIAJBf2oiAg0ACwsgACgCBCABQQRBHBDAEQwFCyAAKAIIIgNFDQQgACgCBCADQQEQnhIPCyAAQQRqEMIaDwsgACgCDCIDEPUdIANBHEEEEJ4SDwsCQCAAKAIMIgNFDQAgACgCECICRQ0AIAMgAkEBEJ4SCyAAKAIEIgMQ9R0gA0EcQQQQnhIPCyAAKAIIIQECQCAAKAIMIgJFDQAgASEDA0AgAxD1HSADQRxqIQMgAkF/aiICDQALCyAAKAIEIAFBBEEcEMARDwsLjQICA38BfiMAQSBrIgIkAAJAAkACQCAAKAIADQAgACgCECIARQ0BIABB5MSbAUEBEO0FIQEMAgsgAiAAEOINAkAgAigCAA0AAkAgACgCECIDRQ0AQQEhASADQeS0lwFB1LSXASACLQAEQQFxIgQbQRlBECAEGxDtBQ0DCyAAIAIpAgA3AgAgAEEIaiACQQhqKQIANwIADAELIAAoAhBFDQAgACkCACEFIAAgAikCADcCACACQRBqQQhqIgQgAEEIaiIDKQIANwMAIAMgAkEIaikCADcCACACIAU3AxAgACABQQFxEPYBIQEgAyAEKQMANwIAIAAgAikDEDcCAAwBC0EAIQELIAJBIGokACABC40CAgN/AX4jAEEgayICJAACQAJAAkAgACgCAA0AIAAoAhAiAEUNASAAQeTEmwFBARDtBSEBDAILIAIgABDiDQJAIAIoAgANAAJAIAAoAhAiA0UNAEEBIQEgA0HktJcBQdS0lwEgAi0ABEEBcSIEG0EZQRAgBBsQ7QUNAwsgACACKQIANwIAIABBCGogAkEIaikCADcCAAwBCyAAKAIQRQ0AIAApAgAhBSAAIAIpAgA3AgAgAkEQakEIaiIEIABBCGoiAykCADcDACADIAJBCGopAgA3AgAgAiAFNwMQIAAgAUEBcRCUAiEBIAMgBCkDADcCACAAIAIpAxA3AgAMAQtBACEBCyACQSBqJAAgAQv0AQEBfyMAQRBrIgIkACACQQA2AgwCQAJAAkAgAUGAAUkNACABQYAQSQ0BAkAgAUGAgARJDQAgAiABQT9xQYABcjoADyACIAFBEnZB8AFyOgAMIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADUEEIQEMAwsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAyEBDAILIAIgAToADEEBIQEMAQsgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQsgACACQQxqIAEQoBUhASACQRBqJAAgAQv3AQICfwJ+IwBBwABrIgEkAAJAAkAgAC0AFEECRg0AIAApAwAiA0IDg0IAUg0BIAOnIgAgACgCACIAQQFqNgIAIABBf0oNAQALIAAoAgAiAEEYahDQCiEDIAFBuAKtQiCGIgQgAK2ENwMwIAEgBCABQThqrYQ3AyggASADNwM4IAFBAjYCFCABQaTFmQE2AhAgAUICNwIcIAEgAUEoajYCGCABQQRqIAFBEGoQxQkCQCABKQM4IgNCA4NCAFINACADpyIAIAAoAgAiAkF/ajYCACACQQFHDQAgACAAKAIQEMEbCyABQQRqEOocIQMLIAFBwABqJAAgAwv7AQICfwJ+IwBBIGsiAyQAIAMgAjYCECADIAE3AwggAxCeGCIFNwMYIAVCA4MhBgJAAkAgA0EIaiADQRhqELYLDQACQCAGQgBSDQAgBaciAiACKAIAIgRBf2o2AgACQCAEQQFHDQAgAiACKAIQEMEbCyADKAIQIQIgAykDCCEBCyAAQRxqIAEgAhDnBRoMAQsCQCAGQgBSDQAgBaciAiACKAIAIgBBf2o2AgACQCAAQQFHDQAgAiACKAIQEMEbCyADKQMIIQELIAFCA4NCAFINACABpyICIAIoAgAiAEF/ajYCACAAQQFHDQAgAiACKAIQEMEbCyADQSBqJAAL9AEBBX8CQAJAIAAoAhgiAQ0AQQAhAkEAIQNBACEEDAELQQAhBAJAIAEgACgCDCIDIAAoAhQiBUEAIAMgBSADSRtrIgJrIgVNDQAgASAFayEEDAELIAIgAWohAwsgAEEQaigCACIBIAJBAnRqIQUgAyACayEDA0ACQCADDQACQANAIARFDQEgASgCABCDHSAEQX9qIQQgAUEEaiEBDAALCyAAKAIMIABBEGooAgBBBEEEEJ0SAkAgAEF/Rg0AIAAgACgCBEF/aiIENgIEIAQNACAAQSBBBBCeEgsPCyAFKAIAEIMdIANBf2ohAyAFQQRqIQUMAAsL8wECA38BfiMAQRBrIQICQCABQQxqKAIAIAFBdGooAgBPDQAgAkEIaiABQQhqKAIANgIAIAIgASkCADcDACABQVxqIQMgASkCECEFIAEoAgwhBAJAAkADQCADIgFBNGogAUEcaikCADcCACABQSxqIAFBFGopAgA3AgAgAUEkaiABQQxqIgMpAgA3AgAgAyAARg0BIAFBaGohAyAEIAEoAgBJDQALIAFBDGohAyABQSRqIQEMAQsgAUEMaiEDIAFBJGohAQsgAyACKQMANwIAIANBCGogAkEIaigCADYCACABQXhqIAU3AgAgAUF0aiAENgIACwuDAgEGfyMAQSBrIgEkACAAKAIAIgJBAXRBASACGyIDQQQgA0EESxsiBEEGdCEFQQAhBgJAAkAgA0H///8fSw0AIAVBwP///wdLDQACQAJAIAINAEEAIQIgAUEcaiEDDAELIAFBwAA2AhwgAkEGdCECIAAoAgQhBiABQRhqIQMLIAMgAjYCAAJAAkAgASgCHEUNAAJAIAEoAhgiAg0AIAFBEGpBwAAgBRDDGyABKAIQIQIMAgsgBiACQcAAIAUQ2gMhAgwBCyABQQhqIAUQ7BggASgCCCECCyACDQFBwAAhBgsgBiAFQYjYgwEQqh4ACyAAIAQ2AgAgACACNgIEIAFBIGokAAv8AQEGf0H+ASEDQQAhBANAIANBAXYiBSAEaiEGIAQgBiAGQQR0IgdBtI2JAWooAgAgASAHQbiNiQFqKAIAIgcgAiAHIAJJGxCSFSIIIAcgAmsgCBtBAEobIQQgAyAFayIDQQFLDQALQQAhBgJAAkAgBEEEdCIDQbSNiQFqKAIAIAEgA0G4jYkBaigCACIDIAIgAyACSRsQkhUiBSADIAJrIAUbIgINACACQR92IARqIgJB/gFPDQEgAkEEdCICQcCNiQFqKAIAIQcgAkG8jYkBaigCACEGCyAAIAc2AgggACAGNgIEIABBADoAAA8LQf4BQf4BQZStiQEQsxEAC/gBAQZ/QQchA0EAIQQDQCADQQF2IgUgBGohBiAEIAYgBkEEdCIHQYiaigFqKAIAIAEgB0GMmooBaigCACIHIAIgByACSRsQkhUiCCAHIAJrIAgbQQBKGyEEIAMgBWsiA0EBSw0AC0EAIQYCQAJAIARBBHQiA0GImooBaigCACABIANBjJqKAWooAgAiAyACIAMgAkkbEJIVIgUgAyACayAFGyICDQAgAkEfdiAEaiICQQdPDQEgAkEEdCICQZSaigFqKAIAIQcgAkGQmooBaigCACEGCyAAIAc2AgggACAGNgIEIABBADoAAA8LQQdBB0H4mooBELMRAAuJAgIEfwF+AkACQAJAAkACQAJAIAEoAgAiAg4DAAECAAsgASgCFCEDIAEoAhAhBAJAIAEpAwgiBkIDg0IAUg0AIAanIgEgASgCACIBQQFqNgIAIAFBf0wNAwsgACAGNwMIDAMLIAEoAhQhAyABKAIQIQQCQCABKQMIIgZCA4NCAFINACAGpyIBIAEoAgAiAUEBajYCACABQX9MDQILIAAgBjcDCAwCC0EALQDA8Z0BGiABKAIMIQMgASgCCCEEQcAAEIUBIgVFDQAgBSABKAIEEEQgACAFNgIEQQwhAUEIIQUMAgsAC0EUIQFBECEFCyAAIAVqIAQ2AgAgACACNgIAIAAgAWogAzYCAAuEAgEGfyMAQRBrIgIkACABLQAoIQMgAUEAOgAoIAEtAHkhBCABQQA6AHkgAUEsaiEFAkAgACgCDCIGKAIAQRpHDQAgAiAGKQMIIAZBGGooAgAQuhggBSACKQMAIAIoAggQ0QoLIAYgARB3IAEgAzoAKCABIAQ6AHkCQCAAKAIIIgZFDQAgBkEEdCEHIAAoAgRBDGohAANAIAFBADoAeSABQQA6ACgCQCAAKAIAIgYoAgBBGkcNACACIAYpAwggBkEYaigCABC6GCAFIAIpAwAgAigCCBDRCgsgBiABEHcgASADOgAoIAEgBDoAeSAAQRBqIQAgB0FwaiIHDQALCyACQRBqJAALlQIBAn8jAEEQayICJAACQAJAAkACQAJAAkACQCAAKAIAKAIAIgMoAgBBe2oiAEEEIABBBkkbDgYAAQIDBAUACyACIANBCGo2AgwgAUGk+pkBQQkgAkEMakHcAhCkCyEADAULIAIgA0EIajYCDCABQa36mQFBCCACQQxqQdADEKQLIQAMBAsgAiADQQhqNgIMIAFBydabAUEGIAJBDGpB0QMQpAshAAwDCyACIANBCGo2AgwgAUG1+pkBQQYgAkEMakHSAxCkCyEADAILIAIgAzYCDCABQbv6mQFBBiACQQxqQdMDEKQLIQAMAQsgAiADQQhqNgIMIAFBwfqZAUEGIAJBDGpB1AMQpAshAAsgAkEQaiQAIAALxQIBAn8CQAJAAkAgACgCACIBQQlHDQBBASECAkAgACgCCEF/ag4RAgMDAwMDAwMDAwMDAwMDAwADCwJAAkAgACgCEA4IBAAEBAMDBAEECyAAKAIwKAIYQYCAgIB4RyECDAMLIAAoAhQiAC0ARUEDRg0BIABBIGoQxBEhAgwCC0EBIQICQAJAAkACQAJAAkACQCABDgkAAQIDCAQFCAcACyAALQAgQQFzIQIMBwsCQAJAIAAoAggOCAgACAgHBwgBCAsgACgCKCgCGEGAgICAeEchAgwHCyAAKAIMIgAtAEVBA0YNBSAAQSBqEMQRIQIMBgsgAC0AIEEBcyECDAULIAAoAggOAwQCAwQLIAAtABRBAXMhAgwDCyAAKAIELQBBQQFzIQIMAgsgACgCKCgCGEGAgICAeEchAgwBC0EAIQILIAJBAXELiQICBX8BfgJAIAAoAgQiAUUNAAJAIAAoAgwiAkUNACAAKAIAIgNBCGohBCADKQMAQn+FQoCBgoSIkKDAgH+DIQYDQAJAIAZCAFINAANAIANB4H5qIQMgBCkDACEGIARBCGoiBSEEIAZCgIGChIiQoMCAf4MiBkKAgYKEiJCgwIB/UQ0ACyAGQoCBgoSIkKDAgH+FIQYgBSEECyADQQAgBnqnQQN2a0EUbGoiBUF4aiAFQXBqKAIAIAVBdGooAgAgBUFsaigCACgCEBELACAGQn98IAaDIQYgAkF/aiICDQALCyABIAFBFGxBG2pBeHEiBGpBCWoiA0UNACAAKAIAIARrIANBCBCeEgsLiwIBBH8jAEHQAGsiBSQAIAEgASgCeCIGQYAgcjYCeAJAAkAgAS0AyAEiByACQf8BcUcNACABEIcOIAVBCGogARC7BCAFKAIMIQIgBSgCCCEIDAELQQEhCCAFQQE2AhQgBUGY75sBNgIQIAVCATcCHCAFQYoFrUIghiAFQTdqrYQ3AyggBSAFQShqNgIYIAUgBzoANyAFQThqQQRyIAVBEGoQjRUgBSAENgJMIAUgAzYCSCAFQbCAgIB4NgI4IAEoAsABIAEoAsQBIAVBOGoQhRUhAiAHQaIBRw0AIAEQxxEhByABEIcOIAEgBxDlEQsgASAGNgJ4IAAgAjYCBCAAIAg2AgAgBUHQAGokAAuLAgEEfyMAQSBrIgIkAAJAAkACQCABKAIAIgNBAkcNACABKAIIIQMgAUEANgIIIANFDQEgAiADEQMAIAIoAgQhBCACKAIAIQUCQCABKAIAIgNBAkcNACABIAQ2AgQgASAFNgIAIAUhAwwBCyAFQQJHDQILQQEhBQJAAkAgA0EBcQ0AQQAhBQwBCyABKAIEEBwhAQsgACABNgIEIAAgBTYCACACQSBqJAAPCyACQQA2AhggAkEBNgIMIAJBuP+cATYCCCACQgQ3AhAgAkEIakGggJ0BEIUbAAsgBSAEELseIAJBADYCGCACQQE2AgwgAkHAgJ0BNgIIIAJCBDcCECACQQhqQciAnQEQhRsAC/8BAQJ/IwBBMGsiAyQAIANBGGpBEGogAkEQaigCACIENgIAIANBGGpBCGogAkEIaikCADcDACADIAIpAgA3AxgCQAJAAkACQAJAAkAgAS0ACQ4DAwABAwsgBEEBcUUNAkEAIQIMAQtBASECIARBAXENAQsgAhDHHCECDAELIANBCGogASgCACABKAIEIgIoAghBf2pBeHFqQQhqIANBGGogAigCSBELACADKAIIQQJHDQEgAygCDCECCyADIAI2AhhBjNyDAUEtIANBGGpBuOiDAUGk3YMBEOgPAAsgACADKQIINwIAIABBCGogA0EIakEIaikCADcCACADQTBqJAAL/gEBBH8jAEEwayIEJABBACEFAkAgAygCECIGIAMoAhQiB0sNAAJAAkAgAygCAEF/akECSQ0AIARBDGogAUEEaiADKAIIIAMoAgwgBiAHEOAFIAQoAgxBAUcNAiAEKAIQIAQoAhQiA00NASAEQQA2AiggBEEBNgIcIARBxOaDATYCGCAEQgQ3AiAgBEEYakGg4oQBEIUbAAsgBiADKAIMTw0BAkAgAS0ABCADKAIIIAZqLQAAIgNGDQAgAS0ABUH/AXEgA0YNACABLQAGQf8BcSADRw0CCyAGQQFqIQMLIAAgAzYCCCAAQQA2AgRBASEFCyAAIAU2AgAgBEEwaiQAC+4BAQh/IAEoAggiAiABKAIEIgMgAiADSxshBCABKAIAIQUgAiEGAkACQANAIAQgBiIHRg0BIAEgB0EBaiIGNgIIIAUgB2otAAAiCEGff2ohCSAIQVBqQf8BcUEKSQ0AIAlB/wFxQQZJDQALIAhB/wFxQd8ARw0AAkACQCACRQ0AAkAgAiADSQ0AIAIgA0cNAiAHIANNDQQMAgsgBSACaiwAAEFASA0BIAcgA0sNAQwDCyAHIANNDQILIAUgAyACIAdBhLSXARCVHwALIABBADYCACAAQQA6AAQPCyAAIAcgAms2AgQgACAFIAJqNgIAC5oCAQF/AkACQAJAAkACQAJAAkAgACgCAA4GAQIDBAUGAAsgACgCBCIAEKoBIABBwABBCBCeEg8LIABBCGoQrxIPCyAAKAIIIgEgACgCDBCkGiAAKAIEIAEQwSAgACgCGCIARQ0DIAAoAgAiARDDAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAKAIEIgEQ4QogAUEoQQgQnhIgACgCGCIARQ0CIAAoAgAiARDDAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAQQRqELgKIAAoAgQgACgCCBC+ICAAKAIYIgBFDQEgACgCACIBEMMDIAFB4ABBCBCeEiAAQQxBBBCeEg8LIABBBGoQ7gkgACgCCCIAEKoBIABBwABBCBCeEgsL+QEBBH8CQCABKAIIIgJFDQAgAkEwbCEDIAEoAgQiBEEIaiEBA0AgACABEJcQIAFBMGohASADQVBqIgMNAAsgAC0ANEEBRw0AIAJBMGwhAyAEQSBqIQEDQAJAIAAtADRBAUcNACAAIAFBaGoQlxAgAC0AOSECAkAgAUEEaigCACIERQ0AIAAtADRBAUcNACAALQA6IQUgAEGBAjsAOSAEIAAQ9AEgACAFOgA6CwJAIAEoAgAiBEUNACAALQA0QQFHDQAgAC0AOiEFIABBgQI7ADkgBCAAEPQBIAAgBToAOgsgACACOgA5CyABQTBqIQEgA0FQaiIDDQALCwuaAgEBfwJAAkACQAJAAkACQAJAIAAoAgAOBgECAwQFBgALIAAoAgQiABDZASAAQcAAQQgQnhIPCyAAQQhqEM8SDwsgACgCCCIBIAAoAgwQpBogACgCBCABEMEgIAAoAhgiAEUNAyAAKAIAIgEQxgMgAUHgAEEIEJ4SIABBDEEEEJ4SDwsgACgCBCIBEOMKIAFBKEEIEJ4SIAAoAhgiAEUNAiAAKAIAIgEQxgMgAUHgAEEIEJ4SIABBDEEEEJ4SDwsgAEEEahC4CiAAKAIEIAAoAggQviAgACgCGCIARQ0BIAAoAgAiARDGAyABQeAAQQgQnhIgAEEMQQQQnhIPCyAAQQRqEPMJIAAoAggiABDZASAAQcAAQQgQnhILC4oCAQV/IwBBMGsiBCQAAkACQCABKAIAQYCAgIB4Rg0AIAQQrB0gBCgCACEFIARBGGpBEGoiBiAEQRRqKAIANgIAIARBGGpBCGoiByAEQQxqKQIANwMAIAQgBCkCBDcDGEE4QQQQ+x4iCCAFNgIEIAhB9N6bATYCACAIIAM2AiAgCCACNgIcIAggBCkDGDcCCCAIQRBqIAcpAwA3AgAgCEEYaiAGKAIANgIAIAggASkCADcCJCAIQSxqIAFBCGopAgA3AgAgCEE0aiABQRBqKAIANgIAIABBgICAgHg2AgAgACAINgIEDAELIAAgASkCBDcCACAAQQhqIAFBDGooAgA2AgALIARBMGokAAvxAQEJfwJAIAEoAggiAkUNACABKAIEIQMgACgCBCEEAkAgACgCCCIFIAJHDQAgAkEBaiEGIAMhByAEIQgDQCAGQX9qIgZFDQIgCC0AACAHLQAARw0BIAdBAWohCSAIQQFqIQogB0ECaiEHIAhBAmohCCAKLQAAQf8BcSAJLQAAQf8BcUYNAAsLIAJBAXQhBwJAIAIgACgCACAFa00NACAAIAUgAkEBQQIQphcgACgCBCEEIAAoAgghBQsCQCAHRQ0AIAQgBUEBdGogAyAH/AoAAAsgACAFIAJqNgIIIAAQ5AQgACAALQAMIAEtAAxxOgAMCwuIAgIEfwF+IwBBIGsiASQAAkACQAJAIAAoAgANACAAKAIQIgBFDQEgAEHkxJsBQQEQ7QUhAgwCCyABIAAQ4g0CQCABKAIADQACQCAAKAIQIgNFDQBBASECIANB5LSXAUHUtJcBIAEtAARBAXEiBBtBGUEQIAQbEO0FDQMLIAAgASkCADcCACAAQQhqIAFBCGopAgA3AgAMAQsgACgCEEUNACAAKQIAIQUgACABKQIANwIAIAFBEGpBCGoiBCAAQQhqIgMpAgA3AwAgAyABQQhqKQIANwIAIAEgBTcDECAAEPwCIQIgAyAEKQMANwIAIAAgASkDEDcCAAwBC0EAIQILIAFBIGokACACC/8BAQR/IwBBEGsiAiQAAkACQAJAAkACQAJAIAAoAgAOBAUAAQIFCyAAKAIEQQFHDQQgAS0AJSEDIAAoAgghACABLQAkIgQNAyAAKAIAQXRqIgVBByAFQSZJG0F7aiIFQR9LDQJBASAFdEGuooCAeHENAyAFDQIgAC0AEQ0CDAMLIAAoAgQgARDHAQwDCyAAKAIMIQMgACgCCCEAIAIgATYCDCADRQ0CIANBKGwhAQNAIAJBDGogABCgBSAAQShqIQAgAUFYaiIBDQAMAwsLIAFBAzoAJAsgASAAEMYBIAAgARBSIAEgAzoAJSABIAQ6ACQgASAAEJsBCyACQRBqJAALgwIBA38CQAJAAkACQAJAAkAgACgCAA4HBQABAgMFBAULIAAoAgwiAkUNBCAAKAIIIQAgAkEobCECA0ACQCAAKAIAQQdGDQAgACABEMcECyAAQShqIQAgAkFYaiICDQAMBQsLIAAoAgQgARDHBA8LIABBBGogARDQBQ8LIAEgAEEEahCwDQ8LIAEtACUhAiAAKAIEIQACQCABLQAkIgMNAAJAIAAoAgBBdGoiBEEHIARBJkkbQXtqIgRBH0sNAEEBIAR0Qa6igIB4cQ0BIAQNACAALQARRQ0BCyABQQM6ACQLIAEgABDGASAAIAEQUiABIAI6ACUgASADOgAkIAEgABCbAQsLiAIBAX8CQAJAAkACQCAAKAIADgMAAQIACyAAQQhqEMsLDwsgAEEANgIgIAAoAjAiAEUNASAAELUBDwsCQAJAAkACQAJAAkAgACgCBCIAKAIADgcAAQIDBAYFAAsgAEEANgIYDwsgAEEMaigCACIBRQ0EIABBCGooAgAhACABQShsIQEDQAJAIAAoAgBBB0YNACAAELsJCyAAQShqIQAgAUFYaiIBDQAMBQsLIAAoAgQQuwkPCyAAQQxqKAIAIgFFDQIgAEEIaigCACEAIAFBOGwhAQNAIAAQ6QogAEE4aiEAIAFBSGoiAQ0ADAMLCyAAKAIEELsJIAAoAggQtQEPCyAAKAIEELUBCwuGAgEBfwJAAkACQAJAIAEoAgAOAwABAgALIAFBCGogABC8Cw8LIAEoAjAiAUUNASAAIAEQpwEPCwJAAkACQAJAAkAgASgCBCIBKAIADgcFAAECAwUEBQsgAUEMaigCACICRQ0EIAFBCGooAgAhASACQShsIQIDQAJAIAEoAgBBB0YNACABIAAQrQkLIAFBKGohASACQVhqIgINAAwFCwsgASgCBCAAEK0JDwsgAUEMaigCACICRQ0CIAFBCGooAgAhASACQThsIQIDQCAAIAEQ6gogAUE4aiEBIAJBSGoiAg0ADAMLCyABKAIEIAAQrQkgACABKAIIEKcBDwsgACABKAIEEKcBCwuGAgEBfwJAAkACQAJAIAEoAgAOAwABAgALIAFBCGogABC9Cw8LIAEoAjAiAUUNASAAIAEQvQEPCwJAAkACQAJAAkAgASgCBCIBKAIADgcFAAECAwUEBQsgAUEMaigCACICRQ0EIAFBCGooAgAhASACQShsIQIDQAJAIAEoAgBBB0YNACABIAAQrgkLIAFBKGohASACQVhqIgINAAwFCwsgASgCBCAAEK4JDwsgAUEMaigCACICRQ0CIAFBCGooAgAhASACQThsIQIDQCAAIAEQ6wogAUE4aiEBIAJBSGoiAg0ADAMLCyABKAIEIAAQrgkgACABKAIIEL0BDwsgACABKAIEEL0BCwvgAQEEfwJAAkACQAJAIABBJGoiAigCACAAQQxqKAIASSIDDQBBAiEEA0AgASAERg0DIAJBGGoiBSgCACACKAIASQ0CIARBAWohBCAFIQIMAAsLIABBJGohBEECIQIDQCABIAJGDQIgBEEYaiIFKAIAIAQoAgBPDQEgAkEBaiECIAUhBAwACwsgACABQQAgAUEBcmdBAXRBPnMQ8gEMAQsgA0UNACABQQF2IQIgAUEYbCAAakFoaiEEA0AgAkUNASAAIARBBhD1FyACQX9qIQIgAEEYaiEAIARBaGohBAwACwsL6AEBBX8jAEEQayIEJAAgBCAAIAEgA0HY4YIBEIoRIAMgBCgCBCIBIAMgAUkbIQEgBCgCDCEFIAQoAgghBiAEKAIAIQNBACEHAkADQCABRQ0BIAMgAygCACIIIAIoAgBqIgAgB0H/AXFqIgc2AgAgACAISSAHIABJckEBcSEHIAFBf2ohASACQQRqIQIgA0EEaiEDDAALC0EAIQICQCAHQf8BcUUNACAFQQJ0IQMDQAJAIAMNAEEBIQIMAgsgBiAGKAIAQQFqIgE2AgAgA0F8aiEDIAZBBGohBiABRQ0ACwsgBEEQaiQAIAILiQIBB38jAEEQayIDJAAgAigCBCEEIAEoAgQhBSACLQAMIQYgAS0ADCEHAkACQAJAAkAgASgCCCIIRQ0AIAIoAggiCQ0BCyADQQhqQQAoAuCPmwE2AgAgA0EAKQLYj5sBNwMADAELAkAgCUEBRw0AIANBCGogAUEIaigCADYCACADIAEpAgA3AwAgAyAEKAIAEL0JIAQhBSACIQEMAgsCQCAIQQFHDQAgA0EIaiACQQhqKAIANgIAIAMgAikCADcDACADIAUoAgAQvQkMAgsgAyAFIAggBCAJEMgPCyACKAIAIAQQsSALIAEoAgAgBRCxICAAIAcgBhDFFUH/AXEgAxCREyADQRBqJAALkwIBAX8jAEHgAGsiAiQAIAAoAgAhACACQQA2AkwgAkKAgICAEDcCRCACQdiOmAE2AlQgAkKggICADjcCWCACIAJBxABqNgJQAkAgACACQdAAahCCBkUNAEH4z5sBQTcgAkEgakHwjpgBQbDQmwEQ6A8ACyACQThqQQhqIAJBxABqQQhqKAIANgIAIAIgAikCRDcDOCACQQ42AjQgAkEONgIsIAJBETYCJCACQQQ2AgwgAkG8lZgBNgIIIAJCAzcCFCACIABBEGo2AjAgAiAAQQxqNgIoIAIgAkE4ajYCICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQtx4hACACKAI4IAIoAjwQuSAgAkHgAGokACAAC/gBAQR/IAIoAgghAyACKAIEIQQgABDCESEAAkACQAJAIAEgAigCAE8NAANAAkAgAw0AQQAhBQwECyAAKAIQIAAoAhQgA0F/aiIGQfS9mAEQkRwiBSgCACABSQ0CIARBAiAFLQAEIgNBf2ogA0EERhtB/wFxayEEIAYhAwwACwsgAyAAKAIUIgYgAyAGSxshBQNAIAUgA0YNAiAAKAIQIAAoAhQgA0GEvpgBEJEcIgYoAgAgAU8NASAEQQIgBi0ABCIGQX9qIAZBBEYbQf8BcWohBCADQQFqIQMMAAsLIAMhBQsgAiAFNgIIIAIgBDYCBCACIAE2AgAgBAuAAgIDfwF+IwBBIGsiAiQAAkAgAC0AkAENACABKAIQIgNFDQAgAkEIaiABKQMAIAMQuhggAEGAAWogAikDCCACKAIQEOcFGgsCQCAALQAoQQFHDQAgAkEIaiABENgRIAAgAikDCCIFIAIoAhgQjA8gBUIDg0IAUg0AIAWnIgMgAygCACIEQX9qNgIAIARBAUcNACADIAMoAhAQwRsLIABBLGohAwJAAkAgAC0AeQ0AIAJBCGogASkDACABKAIQELoYIAMgAikDCCACKAIQENEKDAELIAJBCGogASkDACABKAIQELoYIAMgAikDCCACKAIQIAAtAHoQygsLIAJBIGokAAv9AQIBfwJ+IwBBwABrIgIkAAJAIAEoAgBBBUcNACAAIAFBCGoQngUiAEUNACABKQMIIQMgAUIBNwMIIAEpAxAhBCABQgA3AxAgAUEVakIANwAAIAEgADYCKCABQQY2AgAgASACKQMANwMwIAFBADYCCCABIAM3AxAgASAENwMYIAFBOGogAkEIaikDADcDACABQcAAaiACQRBqKQMANwMAIAFByABqIAJBGGopAwA3AwAgAUHQAGogAkEgaikDADcDACABQdgAaiACQShqKQMANwMAIAFB4ABqIAJBMGopAwA3AwAgAUHoAGogAkE4aikDADcDAAsgAkHAAGokAAv2AQIGfwF+IwBBEGsiASQAAkAgACgCBCICRQ0AIAAoAgAhAwJAIAAoAgwiBEUNACADQQhqIQAgAykDAEJ/hUKAgYKEiJCgwIB/gyEHQQEhBSADIQYDQCAFRQ0BAkADQCAHQgBSDQEgBkHAfmohBiAAKQMAQn+FQoCBgoSIkKDAgH+DIQcgAEEIaiEADAALCyAGQQAgB3qnQQN2a0EYbGoiBUFoaikDABDGHSAFQXBqENwdIAdCf3wgB4MhByAEQX9qIgQhBQwACwsgAUEEakEYQQggAkEBahCRDyADIAEoAgxrIAEoAgQgASgCCBCjHgsgAUEQaiQAC4wCAQR/IwBBIGsiAyQAQQEhBAJAIAAtAAQNACAALQAFIQUCQAJAIAAoAgAiBi0ACkGAAXENAEEBIQQgBUEBcUUNASAGKAIAQdOOmAFBAiAGKAIEKAIMEQwARQ0BDAILQQEhBAJAIAVBAXENACAGKAIAQdihmwFBASAGKAIEKAIMEQwADQILQQEhBCADQQE6AA8gA0Hgj4EBNgIUIAMgBikCADcCACADIAYpAgg3AhggAyADQQ9qNgIIIAMgAzYCECABIANBEGogAhEIAA0BIAMoAhBB+4+BAUECIAMoAhQoAgwRDAAhBAwBCyABIAYgAhEIACEECyAAQQE6AAUgACAEOgAEIANBIGokACAAC+gBAQN/AkAgA0EISQ0AIAAgACADQQN2IgNB4ABsIgRqIAAgA0GoAWwiBWogAxD1CiEAIAEgASAEaiABIAVqIAMQ9QohASACIAIgBGogAiAFaiADEPUKIQILAkACQCAAKAIAIgMgASgCACIFRg0AIAMgBUkhBAwBCyAAKAIMIAEoAgxJIQQLAkACQCADIAIoAgAiBkYNACADIAZJIQMMAQsgACgCDCACKAIMSSEDCwJAIAQgA0cNAAJAAkAgBSAGRg0AIAUgBkkhAAwBCyABKAIMIAIoAgxJIQALIAIgASAEIABzGyEACyAAC+YBAQN/AkAgA0EISQ0AIAAgACADQQN2IgNBBXQiBGogACADQThsIgVqIAMQ9gohACABIAEgBGogASAFaiADEPYKIQEgAiACIARqIAIgBWogAxD2CiECCwJAAkAgACgCACIDIAEoAgAiBUYNACADIAVJIQQMAQsgACgCBCABKAIESSEECwJAAkAgAyACKAIAIgZGDQAgAyAGSSEDDAELIAAoAgQgAigCBEkhAwsCQCAEIANHDQACQAJAIAUgBkYNACAFIAZJIQAMAQsgASgCBCACKAIESSEACyACIAEgBCAAcxshAAsgAAvmAQEDfwJAIANBCEkNACAAIAAgA0F4cSIEaiAAIANBA3YiA0EObCIFaiADEPcKIQAgASABIARqIAEgBWogAxD3CiEBIAIgAiAEaiACIAVqIAMQ9wohAgsCQAJAIAAtAAAiAyABLQAAIgVGDQAgAyAFSSEEDAELIAAtAAEgAS0AAUkhBAsCQAJAIAMgAi0AACIGRg0AIAMgBkkhAwwBCyAALQABIAItAAFJIQMLAkAgBCADRw0AAkACQCAFIAZGDQAgBSAGSSEADAELIAEtAAEgAi0AAUkhAAsgAiABIAQgAHMbIQALIAAL6wECBH8BfiMAQSBrIgUkAAJAIAIgACgCACIGIAFrTQ0AQQAhBwJAAkACQCABIAJqIgIgAU8NAAwBCwJAIAMgBGpBf2pBACADa3GtIAKtfiIJQiCIp0UNAAwBCyAJpyIIQYCAgIB4IANrSw0AQQAhAQJAIAZFDQAgBSAGIARsNgIcIAUgACgCBDYCFCADIQELIAUgATYCGCAFQQhqIAMgCCAFQRRqELgQIAUoAghBAUcNASAFKAIQIQEgBSgCDCEHCyAHIAFB3KCaARCqHgALIAUoAgwhASAAIAI2AgAgACABNgIECyAFQSBqJAALlAICBX8CfiMAQSBrIgMkACADIAEgASgCwAEiBEEBaiIFIAEoAsQBQX9qIgYQqhcgAygCACADKAIEEPUVIQggA0EIaiABEPUPAkACQAJAAkAgAygCCEEBRw0AIAMgAygCDCIHNgIcIAINASAAQYCAgIB4NgIAIAAgBzYCBCAIEMYdDAMLIAMpAxAhCQwBCyADQRxqEN8dQgAhCQsgARCHDiABKAK8ASECAkBBCEEgEOsfIgENAAALIAFBAToAGCABIAk3AxAgASAGNgIMIAEgBTYCCCABIAg3AwAgACACNgIcIAAgBDYCGCAAQQE2AhQgACABNgIQIABCgICAgBA3AgggAEKAgICAwAA3AgALIANBIGokAAv7AQEHfyAAKAIIIQEgACgCBCECQQAhAwJAA0AgAyABRg0BIAIgA0HcAGxqIgQoAjggBEE8aigCABCXHiAEKAIgIARBJGooAgAQjiAgBCgCRCAEQcgAaigCABCXHiAEKAJQIARB1ABqKAIAEJceIAQoAjQhBSAEQTBqIgYoAgAhBwJAA0AgBUUNASAHKAIAIAdBBGooAgAQjiAgB0EYaigCACAHQRxqKAIAEJceIAdBDGooAgAgB0EQaigCABCOICAFQX9qIQUgB0EoaiEHDAALCyAEKAIsIAYoAgBBBEEoEK8RIANBAWohAwwACwsgACgCACACQQRB3AAQrxEL+AEBBH8CQAJAAkAgAiABKAIIIgRPDQAgASgCBCACQRRsaigCCCEFIAEoAighBiABKAIsIQcDQCAFIgQgB08NAiAGIARBA3RqKAIEIgUNAAsCQCAHIAEoAiRHDQAgAUEkakHosYABEO8VIAEoAighBgsgASAHQQFqNgIsIAYgB0EDdGoiBUEANgIEIAUgAzYCAAJAAkAgBEUNACAGIARBA3RqIAc2AgQMAQsgAiABKAIIIgRPDQMgASgCBCACQRRsaiAHNgIICyAAQQM2AgAPCyACIARBuLCAARCzEQALIAQgB0HIsIABELMRAAsgAiAEQdiwgAEQsxEAC/IBAgR/CH4jAEEgayICJAAgAkEQaiIDIAFBEGopAwA3AwAgAkEIaiIEIAFBCGopAwA3AwAgAkEYaiIFIAE1AjhCOIYgASkDMIQiBiABQRhqKQMAhTcDACACIAEpAwA3AwAgAhDeDCAEIAQpAwBC7gGFNwMAIAIgAikDACAGhTcDACACEMwIIAMgAykDACIGQt0BhTcDACAEKQMAIQcgAikDACEIIAUpAwAhCSACEMwIIAUpAwAhCiAEKQMAIQsgAykDACEMIAIpAwAhDSAAIAYgCSAIIAeFhYU3AwAgACAKIAsgDCANhYWFNwMIIAJBIGokAAvwAQEEfyMAQSBrIgEkACAAQQRqKAIAIQIgACgCACIDKAIAIQAgA0EANgIAIAAoAhQhAyAAQQA2AhQCQCADRQ0AIAFBCGogAxEDAAJAIAIoAgAiACgCACIDRQ0AIAAoAgQiBEUNACADIABBDGooAgAQpQwgBCAEQQN0QQ9qQXhxIgBqQQlqIgRFDQAgAyAAayAEQQgQnhILIAIoAgAiACABKQIINwIAIABBCGogAUEIakEIaikCADcCACABQSBqJABBAQ8LIAFBADYCGCABQQE2AgwgAUG4/5wBNgIIIAFCBDcCECABQQhqQaTvmwEQhRsAC/wBAQN/AkAgASgCAEEDRw0AIAAtACQhAiAAQQM6ACQgAC0AJSEDIAAgASgCBCIEEMYBIAQgABBSIAAgAzoAJSAAQQM6ACQgACAEEJsBIAAgAzoAJSAAIAI6ACQgBCgCAEEZRw0AIAAgBBCuAQsgAC0AJSEEIAEoAiAhAQJAIAAtACQiAw0AAkAgASgCAEF0aiICQQcgAkEmSRtBe2oiAkEfSw0AQQEgAnRBrqKAgHhxDQEgAg0AIAEtABFFDQELIABBAzoAJAsgACABEMYBIAEgABBSIAAgBDoAJSAAIAM6ACQgACABEJsBAkAgASgCAEEZRw0AIAAgARCuAQsLhQIBAn8CQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAYFAAsgAEEANgIYDwsgACgCDCIBRQ0EIAAoAgghACABQShsIQEDQAJAIAAoAgBBB0YNACAAELsJCyAAQShqIQAgAUFYaiIBDQAMBQsLIAAoAgQQuwkPCyAAKAIMIgFFDQIgACgCCCEAIAFBOGwhAQNAAkACQAJAAkAgACgCAA4DAAECAAsgAEEIahDLCwwCCyAAQSBqQQA2AgAgAEEwaigCACICRQ0BIAIQtQEMAQsgAEEEahCnDAsgAEE4aiEAIAFBSGoiAQ0ADAMLCyAAKAIEELsJIAAoAggQtQEPCyAAKAIEELUBCwuBAgEDfwJAAkAgACgCACIBQRFHDQBBACEBAkACQAJAAkACQAJAIAAoAggOCAMFAAQHBwECAwsgACgCDC0AGEUNAwwGCyAAKAIMLQAsRQ0CDAULIAAoAgwiAC0AUA0EIAAtAFENBCAALQBFIgJBA0YNBCAAQSBqIQACQCACQQJGDQADQCAAKAIgIgAtACVBAkcNAAsLIAAoAggiAkUNBCAAKAIEIQAgAkE4bEFIaiECA0AgABDaCiIBDQUgAEE4aiEAIAIhAyACQUhqIQIgAw0ADAULCyAALQAsDQMLQQEPCyAALQAsDQEgACgCKCgCGEGAgICAeEcPCyABQQFHIQELIAEL/AEBA38jAEHAAGsiBSQAQQEhBiAFQQhqIAEgAiADIARBAUEAEJwFIAUoAgghAwJAAkAgBS0AHCICQQNGDQAgBUE4aiIGIAVBFGopAgA3AwAgBSAFKQIMNwMwIAVBLmoiASAFQR9qLQAAOgAAIAUgBS8AHTsBLEEALQDA8Z0BGiAFKAIgIQdBwAAQhQEiBEUNASAEIAM2AgggBEEPNgIAIAQgBSkDMDcCDCAEIAI6ABwgBCAFLwEsOwAdIAQgBzYCICAEQRRqIAYpAwA3AgAgBEEfaiABLQAAOgAAQQAhBiAEIQMLIAAgAzYCBCAAIAY2AgAgBUHAAGokAA8LAAvyAQIGfwF+IwBBEGsiASQAAkAgACgCCCICRQ0AIAAoAgQhAwJAIAAoAhAiBEUNACADQQhqIQAgAykDAEJ/hUKAgYKEiJCgwIB/gyEHIAMhBUEBIQYDQCAGRQ0BAkADQCAHQgBSDQEgBUGAf2ohBSAAKQMAQn+FQoCBgoSIkKDAgH+DIQcgAEEIaiEADAALCyAFIAd6p0EBdEHwAXFrIgZBdGooAgAgBkF4aigCABCOICAHQn98IAeDIQcgBEF/aiIEIQYMAAsLIAFBBGpBECACQQFqEPYPIAMgASgCDGsgASgCBCABKAIIEKMeCyABQRBqJAALiwIBBH8jAEEgayIDJAAgACgCACEEQQEhBQJAIAAtAAgNAAJAIAAoAgQiBi0ACkGAAXENAEEBIQUgBigCAEHTjpgBQbC6mwEgBBtBAkEBIAQbIAYoAgQoAgwRDAANASABIAYgAhEIACEFDAELAkAgBA0AQQEhBSAGKAIAQf2PgQFBAiAGKAIEKAIMEQwADQELQQEhBSADQQE6AA8gA0Hgj4EBNgIUIAMgBikCADcCACADIAYpAgg3AhggAyADQQ9qNgIIIAMgAzYCECABIANBEGogAhEIAA0AIAMoAhBB+4+BAUECIAMoAhQoAgwRDAAhBQsgACAFOgAIIAAgBEEBajYCACADQSBqJAAgAAv/AQEIfyMAQTBrIgIkAEEBIQMCQCABKAIAIgRB9NqEAUENIAEoAgQiBSgCDCIGEQwADQBBACEBA0BB/wEhBwJAAkAgAUH/AXEiCEH/AUYiCQ0AQQEhByAIRQ0BIAFBAWohBwsgBEHTjpgBQQIgBhEMAA0CCyACIAAgCGotAAA6AAMgAkECNgIIIAJBgPyDATYCBCACQgI3AhAgAkGDATYCKCACQfsANgIgIAIgAToALyACIAJBHGo2AgwgAiACQQNqNgIkIAIgAkEvajYCHCAEIAUgAkEEahDOBQ0BIAchASAJRQ0ACyAEQabEmwFBASAGEQwAIQMLIAJBMGokACADC6ECAQF/IwBB4ABrIgIkACACQYTthAE2AlggAkH07IQBNgJQIAJB1OyEATYCSCACQYzqgwE2AkAgAkHU7IQBNgI4IAJB5OyEATYCMCACQdTshAE2AiggAkHU7IQBNgIgIAJB1OyEATYCGCACQcTshAE2AhAgAkG07IQBNgIIIAIgADYCLCACIABByABqNgJMIAIgAEHdAGo2AkQgAiAAQcAAajYCPCACIABB3ABqNgI0IAIgAEHbAGo2AiQgAiAAQdoAajYCHCACIABB2QBqNgIUIAIgAEEwajYCDCACIABB2ABqNgIEIAIgAEHQAGo2AlwgAiACQdwAajYCVCABQZTvhAFBBkG87oQBQQsgAkEEakELEP0JIQAgAkHgAGokACAAC+kBAQl/AkAgASgCCCICRQ0AIAEoAgQhAyAAKAIEIQQCQCAAKAIIIgUgAkcNACACQQFqIQYgAyEHIAQhCANAIAZBf2oiBkUNAiAIKAIAIAcoAgBHDQEgB0EEaiEJIAhBBGohCiAHQQhqIQcgCEEIaiEIIAooAgAgCSgCAEYNAAsLIAJBA3QhBwJAIAIgACgCACAFa00NACAAIAUgAkEEQQgQphcgACgCBCEEIAAoAgghBQsCQCAHRQ0AIAQgBUEDdGogAyAH/AoAAAsgACAFIAJqNgIIIAAQ9QQgACAALQAMIAEtAAxxOgAMCwv/AQIFfwF+AkACQCABKAIAIgMgASgCBCIEIAJB3cvdnnlsQQ93rSACEJEMIgINAEGAgICAeCEBDAELQYABIQUCQCADIAMgAmtBBHUiBmoiBykAACIIIAhCAYaDQoCBgoSIkKDAgH+DeqdBA3YgAyAEIAZBeGpxaiIDKQAAIgggCEIBhoNCgIGChIiQoMCAf4N5p0EDdmpBB0sNACABIAEoAghBAWo2AghB/wEhBQsgByAFOgAAIANBCGogBToAACABIAEoAgxBf2o2AgxBgICAgHghASACQXRqKAIAIgNBgICAgHhGDQAgACACQXhqKQIANwIEIAMhAQsgACABNgIAC/YBAgJ/AX4jAEEwayICJAACQAJAAkACQCAAQf8BcUHLAEcNACACQQAgAUEIaiABKAIIIgNBCkYiABs2AgwgAA0BIANBAkcNASABKQMQIgRCA4NCAFINAyAEpyIBIAEoAgAiAUEBajYCACABQX9MDQIMAwsgAiABIAEoAsABIAEoAsQBEKoXIAIoAgAgAigCBBD1FSEEDAILIAJBATYCJCACQYCfmwE2AiAgAkEBNgIUIAJB+J6bATYCECACQQE2AhwgAkGLBa1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCACQRBqQdyfmwEQhRsLAAsgAkEwaiQAIAQL8QEBBn8CQAJAAkACQCABKAIAIgMgAigCACIEKAIIIgVPDQAgAUF8aiIGKAIAIgEgBU8NAQJAIAQoAgQiBSADQQxsaigCCCAFIAFBDGxqKAIITQ0AIANBDGwhBwJAA0AgBiIFQQRqIAE2AgAgBSAARg0BIAMgAigCACIIKAIIIgRPDQUgBUF8aiIGKAIAIgEgBE8NBiAIKAIEIgQgB2ooAgggBCABQQxsaigCCEsNAAsLIAUgAzYCAAsPCyADIAVBzLiAARCzEQALIAEgBUHcuIABELMRAAsgAyAEQcy4gAEQsxEACyABIARB3LiAARCzEQALgQIBAn8CQAJAAkAgACgCCCIDQYCABE8NAAJAIAAoAhQiBCAAKAIMRw0AIABBDGpBrLiAARDpFQsgACAEQQFqNgIUIAAoAhAgBEECdGogAzYCACACQX9MDQFBAC0AwPGdARogAhCFASIDRQ0CAkAgAkUNACADIAEgAvwKAAALAkAgACgCCCIEIAAoAgBHDQAgAEG8uIABEOoVCyAAIARBAWo2AgggACgCBCAEQQxsaiIEIAI2AgggBCADNgIEIAQgAjYCACAAIAAoAhwgAmo2AhwgACACIAAoAhgiBCACIARJGzYCGA8LQfi2gAFBN0GcuIABEN0XAAtBvOCbARDTGQsAC+sBAQd/IwBBIGsiAiQAIAAtADghAyAAQQA6ADgCQCABKAIIIgRFDQAgASgCBCIBIARBOGxqIQUgAkEMaiEGIAJBCGohBwNAIAAtADkhBCAAQQA6ADkgASAAEIQEIAAgBDoAOQJAIAFBMGooAgAiCEUNACAAQQE6ADkgAkEDNgIIIAggABBsIAAgBDoAOSACKAIIIgRBAUsNACAHIAIQoBggByACKQMAEO8XIARFDQAgAigCDCIEIAQoAgAiBEF/ajYCACAEQQFHDQAgBhDfDwsgAUE4aiIBIAVHDQALCyAAIAM6ADggAkEgaiQAC4ACAQJ/AkACQAJAAkACQAJAIAAoAgAOBwUAAQIDBQQFCyAAKAIMIgJFDQQgACgCCCEAIAJBKGwhAgNAAkAgACgCAEEHRg0AIAAgARCtCQsgAEEoaiEAIAJBWGoiAg0ADAULCyAAKAIEIAEQrQkPCyAAKAIMIgJFDQIgACgCCCEAIAJBOGwhAgNAAkACQAJAAkAgACgCAA4DAAECAAsgAEEIaiABELwLDAILIABBMGooAgAiA0UNASABIAMQpwEMAQsgAEEEaiABEJ0MCyAAQThqIQAgAkFIaiICDQAMAwsLIAAoAgQgARCtCSABIAAoAggQpwEPCyABIAAoAgQQpwELC/wBAQN/AkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQUACyABKAIAIAEoAgQgAEEIahD8CA8LIAAoAgxBKGwhAiAAKAIIIQADQCACRQ0EAkAgACgCAEEHRg0AIAAgARCNCwsgAEEoaiEAIAJBWGohAgwACwsgAEEEaiABENohDwsgACgCDEE4bCECIAEoAgQhAyABKAIAIQQgACgCCCEAA0AgAkUNAgJAAkACQAJAIAAoAgAOAwABAgALIABBKGogARDaIQwCCyAEIAMgAEEQahD8CAwBCyAAQQRqIAEQ2iELIABBOGohACACQUhqIQIMAAsLIABBBGogARDaIQsL9gEBA38jAEEgayICJAAgAkEQaiABEPEBIAIoAhQhAwJAAkAgAigCEEEBcUUNACAAQQA2AgAgACADNgIEDAELIAIgAzYCHAJAIAMoAgBBLUcNACAAIAMpAgQ3AgACQCADKAIAQS1GDQAgAxCNBgsgA0HAAEEIEJ4SDAELAkACQCABLQCBAUEgcUUNACABLQDIAUH/AXFBEkcNACACQQhqIAEQmQQgAigCDCEEAkAgAigCCEEBcUUNACAAQQA2AgAgACAENgIEIAJBHGoQ6x4MAwsgARCHDiAAIAQ2AgQMAQsgAEEANgIECyAAIAM2AgALIAJBIGokAAuGAgEDfyMAQSBrIgMkACAAKAIAIgAoAgAhBCAAQQA2AgACQCAEQQFxDQBB2IuAAUExEOQgAAsgA0EQakEIaiIEIABBDGooAgA2AgAgAyAAKQIENwMQQSQQkx8iAEEAOgAgIAAgAjYCECAAIAE2AgwgAEEIaiAEKAIANgIAIAAgAykDEDcCAEEgEKcdIgRBAToAHCAEQgA3AgggBEKCgICAEDcCACADQQhqIARBCGoiBUGEg50BEIQbIAMoAgwhASADKAIIIgIQpxUgAiAFNgIMIAJBlIOdATYCCCACQYiFgAE2AgQgAiAANgIAIAEgASgCAEEBajYCABCFByAEEJ8MIANBIGokAAv3AQEEfyAAKAK8AiEBAkAgACgCwAIiAkUNACABIQMDQAJAAkACQAJAIAMoAgBBf2oOBAABAwIDCyADQQhqKAIAIgRFDQIgA0EEaigCACAEQQN0QQQQnhIMAgsgA0EIaigCACIERQ0BIANBBGooAgAgBEECdEEEEJ4SDAELIANBCGooAgAiBEUNACADQQRqKAIAIARBAnRBBBCeEgsgA0EUaiEDIAJBf2oiAg0ACwsgACgCuAIgAUEEQRQQtREgACgCxAIgACgCyAJBBEEEELURIAAoArQCIgMgAygCACIDQX9qNgIAAkAgA0EBRw0AIAAoArQCEKgZCwvwAQEEfyMAQTBrIgQkAEEAIQUCQCADKAIQIgYgAygCFCIHSw0AAkACQCADKAIAQX9qQQJJDQAgBEEMaiABQQRqIAMoAgggAygCDCAGIAcQ0gYgBCgCDEEBRw0CIAQoAhAgBCgCFCIDTQ0BIARBADYCKCAEQQE2AhwgBEHE5oMBNgIYIARCBDcCICAEQRhqQaDihAEQhRsACyAGIAMoAgxPDQECQCABLQAEIAMoAgggBmotAAAiA0YNACABLQAFQf8BcSADRw0CCyAGQQFqIQMLIAAgAzYCCCAAQQA2AgRBASEFCyAAIAU2AgAgBEEwaiQAC/ABAQR/IwBB4ABrIgMkACABKAIAIQQCQAJAAkAgASgCBCIFQX9GDQAgBUEBaiEFDAELIANCl4CAgHA3AkQgA0EEaiAEQQRqKAIAIARBCGooAgAgAiADQcQAahDRDCADKAIIIQUgAygCBCIGQSJGDQACQEE4RQ0AIABBCGogA0EEakEIakE4/AoAAAsgACAFNgIEIAAgBjYCAAwBCwJAIAUgBCgCACgCYCIGSw0AIABBIjYCACABIAU2AgQMAQsgA0EXNgIEIAMgBjYCCCAAIARBBGooAgAgBEEIaigCACACIANBBGoQ0QwLIANB4ABqJAAL6wEBBH8jAEEgayIBJAAgACgCACICKAIAIQMgAkEANgIAIAMoAhQhAiADQQA2AhQCQCACRQ0AIAFBCGogAhEDAAJAIAAoAgQiACgCACIDKAIAIgJFDQAgAygCBCIERQ0AIAIgA0EMaigCABClDCAEIARBA3RBD2pBeHEiA2pBCWoiBEUNACACIANrIARBCBCeEgsgACgCACIDIAEpAgg3AgAgA0EIaiABQQhqQQhqKQIANwIAIAFBIGokAEEBDwsgAUEANgIYIAFBATYCDCABQbj/nAE2AgggAUIENwIQIAFBCGpBpO+bARCFGwAL8QEBAn8CQCABLQBsQQJHDQAgAUHAAGohAgNAIAIoAhgiAi0ALEECRg0ACwsCQCABKAKEASIDRQ0AIAEoAoABIQIgA0HYAGwhAwNAAkACQCACKAIAQQVHDQAgAC0AAA0BIAJBBGooAgAgABCVAQwBCyACIAAQuwgLIAJB2ABqIQIgA0Gof2oiAw0ACwsCQCABKAKYASIDRQ0AIAEoApQBIQIgA0EobCEDA0AgAiAAEMgGIAJBKGohAiADQVhqIgMNAAsLAkAgAS0APCICQQZGDQAgAkECRw0AIAFBEGohAgNAIAIoAhgiAi0ALEECRg0ACwsL8gEBBn8jAEEQayICJAACQCAAKAIIIgNFDQAgACgCBCEAIANBDGwhBCABQSxqIQUDQAJAAkAgACgCACIDDQAgAEEEaigCACIDIAEQ+AMgAygCAEEFRw0BIAIgAykDCCADQRhqKAIAELoYIAUgAikDACACKAIIENEKDAELIAEtACghBiABQQA6ACggAS0AeSEHIAFBADoAeQJAIAMoAgBBGkcNACACIAMpAwggA0EYaigCABC6GCAFIAIpAwAgAigCCBDRCgsgAyABEHcgASAGOgAoIAEgBzoAeQsgAEEMaiEAIARBdGoiBA0ACwsgAkEQaiQAC/sBAQR/IwBB0ABrIgMkACABKALAASEEAkACQCABLQDIASIFQfgARw0AIAEQhw4gACABQQEgBCACELMHDAELIAEoAsQBIQYgA0EMaiAFEN4bIANBATYCNCADQZjvmwE2AjAgA0IBNwI8IANBigWtQiCGQaytmwGthDcDSCADIANByABqNgI4IANBGGogA0EwahCNFSADQSxqIANBDGpBCGooAgA2AgAgAyADKQIMNwIkIAQgBiADQRhqEIUVIQQCQCABLQDIAUGiAUcNACABEMcRIQUgARCHDiABIAUQ5RELIABBCDYCACAAIAQ2AgQgAhDMHQsgA0HQAGokAAvxAQICfwJ+IwBBEGsiAyQAAkACQAJAIAEoAgBBBUYNACABKQIAIgVCIIghBgJAAkACQCAFpyIEQX1qIgFBAiABQQJJGw4DAAECAAtBASEBIANBAToABCADIAI2AgggA0EEahCXGiECDAMLIAJFDQMgAyAGpzoABSADQQA6AAQgAyACQX9qNgIIIANBBGoQlxohAkEBIQEMAgsgAyAGPgIMIAMgBDYCCCADQQM6AAQgA0EEahCXGiECQQEhAQwBCyABKAIEIQJBACEBCyAAIAI2AgQgACAB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NwIAIABBFGogA0EIakEUaikCADcCACAAIAU3AgQgACAENgIADAELAkAgBadBAXFFDQAgAEGAgICAeDYCACAAIAVCCIg8AAQMAQsCQCAFQoCAgICAEFQNACAAIAEoAgQgASgCCCACQQRqQQAQlw8MAQsgAEGAgICAeDYCACAAIAVCIIg8AAQLIANBMGokAAvsAQEIfyMAQRBrIgIkACAALQAoIQMgAEEBOgAoIAAtAHohBCAAIAAtAHtBAXM6AHogAC0AeSEFAkAgASgCOCIGRQ0AIAEoAjQhByAGQQxsIQggAEEsaiEJA0AgBygCACEGIABBADoAeSAAQQA6ACgCQCAGKAIAQRpHDQAgAiAGKQMIIAZBGGooAgAQuhggCSACKQMAIAIoAggQ0QoLIAdBDGohByAGIAAQdyAAQQE6ACggAEEAOgB5IAhBdGoiCA0ACwsgAEEBOgB5IAEgABDnBCAAIAU6AHkgACAEOgB6IAAgAzoAKCACQRBqJAAL9wEBAX8CQAJAA0ACQAJAAkAgASgCAA4HAAECBAIFBQALIAAgASkDCCABQRhqKAIAEPwQDwsgASgCDCICRQ0DIAEoAgghASACQShsIQIDQAJAIAEoAgBBB0YNACAAIAEQqAsLIAFBKGohASACQVhqIgINAAwECwsgASgCBCEBDAALCyABKAIMIgJFDQAgASgCCCEBIAJBOGwhAgNAAkACQAJAAkAgASgCAA4DAAECAAsgACABQShqKAIAEKgLDAILIAAgAUEQaikDACABQSBqKAIAEPwQDAELIAAgAUEEaigCABCoCwsgAUE4aiEBIAJBSGoiAg0ACwsL8wECA38CfiMAQeAAayICJAAgACgCMBCBEiEDIAJBNGogAEE0aigCADYCACACQQhqQQApA5j7nAEiBTcDACACQRBqIgRBACkDkPucASIGNwMAIAJBGGogBTcDACACIAA2AiAgAiADNgIkIAJBAToAOSACQQE6ACggAiAAKQIsNwIsIAIgBjcDACACIAAoATo2ATogAiAALQA4OgA4IAIgASgCABDAAgJAIAIoAgQiAEUNACACKAIAIAIoAgwQkgwgACAAQQR0QRdqQXBxIgFqQQlqIgBFDQAgAigCACABayAAQQgQnhILIAQQ1hUgAkHgAGokAAuMAgEBfyMAQeAAayICJAAgACgCACEAIAJB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AkEQaiEBIAJBDGohAgwECyABKAIEIgJBBGohAQwDCyABKAIEIgJBBGohAQwCCyABKAIEIgJBHGohASACQRhqIQIMAQsgASgCBCICQcwAaiEBIAJByABqIQILIAAgASgCADYCBCAAIAIoAgA2AgAL4AEBAX8jAEEQayITJAAgACgCACABIAIgACgCBCgCDBEMACECIBNBADoADSATIAI6AAwgEyAANgIIIBNBCGogAyAEIAUgBhChCSAHIAggCSAKEKEJIAsgDCANIA4QoQkgDyAQIBEgEhChCSESIBMtAA0iAiATLQAMIgFyIQACQCACQQFHDQAgAUEBcQ0AAkAgEigCACIALQAKQYABcQ0AIAAoAgBB17WXAUECIAAoAgQoAgwRDAAhAAwBCyAAKAIAQabEmwFBASAAKAIEKAIMEQwAIQALIBNBEGokACAAQQFxC84BAQN/IwBBIGsiAyQAAkACQAJAIAEgAmoiAiABTw0AQQAhBAwBC0EAIQQCQCACIAAoAgAiBUEBdCIBIAIgAUsbIgFBCCABQQhLGyIBQQBODQAMAQtBACECAkAgBUUNACADIAU2AhwgAyAAKAIENgIUQQEhAgsgAyACNgIYIANBCGogASADQRRqENkSIAMoAghBAUcNASADKAIQIQAgAygCDCEECyAEIABBnMeAARCqHgALIAMoAgwhAiAAIAE2AgAgACACNgIEIANBIGokAAvoAQECfyAAKAKgDSIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAKgDRDmDgsCQCAALQCsCkECRg0AIAAoAqAKIgEgASgCACIBQX9qNgIAIAFBAUcNACAAKAKgCiAAKAKkChDqDwsgACgCpA0iASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCpA0QpxkLAkAgACgCqA0iAUUNACABIAEoAgAiAkF/ajYCACACQQFHDQAgACgCqA0QpxkLIABBsApqEMQaIABByApqEM4YAkAgACgC5ApBA0YNACAAQeQKahClFwsgABDxGwvOAQEDfyMAQSBrIgMkAAJAAkACQCABIAJqIgIgAU8NAEEAIQQMAQtBACEEAkAgAiAAKAIAIgVBAXQiASACIAFLGyIBQQggAUEISxsiAUEATg0ADAELQQAhAgJAIAVFDQAgAyAFNgIcIAMgACgCBDYCFEEBIQILIAMgAjYCGCADQQhqIAEgA0EUahDmEiADKAIIQQFHDQEgAygCECEAIAMoAgwhBAsgBCAAQYSEnQEQqh4ACyADKAIMIQIgACABNgIAIAAgAjYCBCADQSBqJAALyAEBBn8gAUHgAGoiAxCUBAJAAkAgAkUNACABKAJoIQRBACEFIAEoAmwiBiEBA0ACQCABIAVrQQFLDQAgBSAGTw0CIAQgBUECdGooAgAiBSAFKAIAIgFBAWo2AgAgAUF/Sg0DAAsCQCAFIAFqQQF2IgcgBkkNACAHIAZB5L2YARCzEQALIAUgByAEIAdBAnRqKAIAKAJ0IAJLIggbIQUgByABIAgbIQEMAAsLQQAhBQsgAxD9DCAAIAUgAiAFGzYCBCAAIAVFNgIAC98BAgh/AX4gASgCJCECIAEoAiAhAyABKAIcIQQgASgCGCEFAkACQAJAIAEoAgBBAUcNAEEALQDA8Z0BGiABKQMIIQpBwAAQhQEiBkUNAiAGIAEoAgQQREEBIQcMAQsgASgCFCEIIAEoAhAhCUEAIQcCQCABKQMIIgpCA4NCAFENAAwBCyAKpyIBIAEoAgAiAUEBajYCACABQX9MDQELIAAgAjYCJCAAIAM2AiAgACAENgIcIAAgBTYCGCAAIAg2AhQgACAJNgIQIAAgCjcDCCAAIAY2AgQgACAHNgIADwsAC+MBAQh/IAEgASgCXCICQX9qIgM2AlwgASABKAJYIgRBAWoiBTYCWCABIAEoAmgiBkEBajYCaEEPIQcCQCADRQ0AQSEhCEECIQNBfiEJAkACQCAFLQAAQVZqDhQAAgICAgICAgICAgICAgICAgICAQILIAEgBkECajYCaCABIAJBfmoiAzYCXCABIARBAmoiBTYCWEE4IQcgA0UNASAFLQAAQT1HDQFBKiEIQQMhA0F9IQkLIAEgAyAGajYCaCABIAkgAmo2AlwgASAEIANqNgJYIAghBwsgAEEAOgAAIAAgBzoAAQvdAQEEfwJAIAEtABhFDQACQAJAIAEoAhQiAkUNACAAKAIcIAAoAiAgAigCBEF/ahDjDyECDAELIAAoAhwgACgCICABKAIQENAQIQILIAAgAhDVHAsgASgCCEE4bCEDIAEoAgQhBEEAIQIDQAJAAkAgAyACRg0AAkACQAJAIAQgAmoiBSgCAA4DAAECAAsgBUEIaiAAEJkdIAVBKGogABDPIQwDCyAAIAVBEGoQ1xQgACAFQTBqEOEeDAILIAVBBGogABCmHwwBCyABKAIUIAAQtxwPCyACQThqIQIMAAsL1AEBBH8jAEEQayICJABBACEDAkAgAS0AgQFBIHFFDQBBACEDIAEtAMgBQfIAakH/AXFBA0sNAAJAAkAgARCiCyIEQf8BcSIFQbV/aiIDQR9LDQBBASADdEGBgIKQeHENAQtBACEDIAVBpAFGDQEgBEG0f2pB/wFxQdUASQ0AQQAhAyAEQf8BcUF+ag4DAAEAAQsgAkEIaiABQfyhmwFBBEEAEIYGAkAgAi0ACEUNACACQQhqQQRqEN8dC0EBIQMLIABBADoAACAAIAM6AAEgAkEQaiQAC8EBAQl/IAAgACgCBCICIAAoAgAiA0lBAnRqIgQgAEEMQQggACgCDCAAKAIISSIFG2oiBiAAIAIgA09BAnRqIgIgAEEIQQwgBRtqIgAoAgAgAigCAEkiAxsgBigCACIHIAQoAgAiCEkiBBsiBSgCACEJIAAgAiAGIAQbIAMbIgYoAgAhCiABIAcgCCAEGzYCACABIAYgBSAKIAlJIgQbKAIANgIEIAEgBSAGIAQbKAIANgIIIAEgAiAAIAMbKAIANgIMC88BAQF/IwBBMGsiAiQAAkACQCAALQAEQQFHDQAgAiAALQAFOgAHIAJBAjYCHCACQdSUgQE2AhggAkICNwIkIAJBDq1CIIYgAK2ENwMQIAJB1gCtQiCGIAJBB2qthDcDCCACIAJBCGo2AiAgASgCACABKAIEIAJBGGoQzgUhAAwBCyACQQE2AhwgAkGQlYEBNgIYIAJCATcCJCACQQ6tQiCGIACthDcDCCACIAJBCGo2AiAgASgCACABKAIEIAJBGGoQzgUhAAsgAkEwaiQAIAALzAEBBn8CQCABRQ0AAkAgACgCDCICQQFxRQ0AAkACQCACQQV2IgMgAWoiBEGAgIDAAE8NACAEQQV0IAJBH3FyIQQMAQsgACgCCCEFIAAoAgAhBiAAKAIEIQdBFBCIGiIEQQE2AhAgBCACQQJ2QQdxNgIMIAQgAyAHajYCCCAEIAYgA2s2AgQgBCAFIANqNgIACyAAIAQ2AgwLIAAgACgCACABajYCACAAIAAoAgggAWs2AgggAEEAIAAoAgQiAiABayIBIAEgAksbNgIECwvbAQIDfwF+IwBBMGsiAiQAIAEoAhQhAyABKQIEIQUgASgCECEEIAJBEGogARDdECACIAQ2AiAgAiAFNwIYIAIgAikDEDcCKCACIAQgA0EDdGo2AiQgAkEIaiACQRhqEOcOAkAgAigCCCIBDQBBqLiEARCbIAALIAIoAgwhBCAAIAIpAhg3AhggACABNgIwIABCBDcCECAAQgA3AgggAEKAgICAwAA3AgAgAEEoaiACQShqKQIANwIAIABBIGogAkEgaikCADcCACAAIAEgBEEDdGo2AjQgAkEwaiQAC84BAgF/AX4jAEEQayIEJAACQAJAAkAgA0EPSQ0AIANB/////wFLDQJBfyADQQN0QQduQX9qZ3ZBAWohAwwBC0EEQQhBECADQQhJGyADQQRJGyEDCyAEIAEgAiADEPgMIAQoAgQhAwJAAkAgBCgCACICDQAgACAEKAIINgIIIAAgAzYCBCAAQQA2AgAMAQsgBCkCCCEFAkAgA0EJaiIBRQ0AIAJB/wEgAfwLAAsgACAFNwIIIAAgAzYCBCAAIAI2AgALIARBEGokAA8LENkZAAvPAQEBfyMAQcAAayICJAACQAJAIAAoAgAiACgCAEEaRw0AIAIgASgCACABKAIEIABBCGoiARC1DCACKAIAQTJGDQEgABDJASAAQThqIAJBOGopAwA3AwAgAEEwaiACQTBqKQMANwMAIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACABIAJBCGopAwA3AwAgACACKQMANwMADAELIAAgARBGCyACQcAAaiQAC88BAQF/IwBBwABrIgIkAAJAAkAgASgCACIBKAIAQRpHDQAgAiAAKAIAIAAoAgQgAUEIaiIAELUMIAIoAgBBMkYNASABEMkBIAFBOGogAkE4aikDADcDACABQTBqIAJBMGopAwA3AwAgAUEoaiACQShqKQMANwMAIAFBIGogAkEgaikDADcDACABQRhqIAJBGGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAAgAkEIaikDADcDACABIAIpAwA3AwAMAQsgASAAEEYLIAJBwABqJAALugEBBX8CQCADQQhJDQAgACAAIANBA3YiA0HwAGwiBGogACADQcQBbCIFaiADEIgMIQAgASABIARqIAEgBWog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AQtBAC0AwPGdARogAhCFASIFRQ0CCwJAIAJFDQAgBSABIAL8CgAACyAAIAI2AiQgACAFNgIgIAAgAjYCHCAAQRhqIARBGGooAgA2AgAgAEEQaiAEQRBqKQIANwIAIABBCGogBEEIaikCADcCACAAIAQpAgA3AgAgACADKQIANwIoIABBMGogA0EIaikCADcCACAAQThqIANBEGopAgA3AgAPC0G84JsBENMZCwALvQEBCX9BACECAkADQCACIAFGDQEgACACQRxsaiIDKAIIIQQgAygCBCEFQQAhBgJAA0AgBiAERg0BIAUgBkEMbGoiBygCCCEIIAcoAgQiCSEKAkADQCAIRQ0BIAooAgAgCkEEaigCABCOICAIQX9qIQggCkEUaiEKDAALCyAHKAIAIAlBBEEUEK8RIAZBAWohBgwACwsgAygCACAFQQRBDBCvESADKAIMIANBEGooAgAQjiAgAkEBaiECDAALCwu5AQECfwJAAkACQCAAKAIIIgIgAUkNACACIAFGDQEgAiABayECAkACQCAAKAIEIAFBAnRqIgMtAAAiAUH/AUYNACABIAFBAnZqIAFBA3FBAEdqQQJqIgEgAkkNASABIAJB/OGDARCzEQALIAAoAihBAmoiASACTw0DCyADIAFBAnRqKAIAIgFBASABQX9KGw8LIAEgAkHY8oMBEKMgAAtBAEEAQezhgwEQsxEACyABIAJBjOKDARCzEQALywEBA38jAEHQAGsiASQAIAAoAgAiAigCACEDIAJBADYCACADKAJQIQIgA0EANgJQAkAgAkUNACABQQhqIAIRAwACQCAAKAIEIgIoAgAiAygCOCIAQQJGDQAgAEUNACADKAJAIgBFDQAgAygCPCAAQQEQnhIgAigCACEDCwJAQcgARQ0AIAMgAUEIakHIAPwKAAALIAFB0ABqJABBAQ8LIAFBADYCGCABQQE2AgwgAUG4/5wBNgIIIAFCBDcCECABQQhqQaTvmwEQhRsAC7cBAgJ/AX4jAEEQayIDJAAgAyABIAIQuhgCQAJAIAMpAwAiAUIDgyIFQgBSDQAgAaciAiACKAIAIgJBAWo2AgAgAkF/TA0BCyAAQRBqIAEgAygCCCICEOcFGgJAAkAgACgCnAEiBEUNACAAKAKYASAEQSxsakFgaiABIAIQ5wUaDAELIAVCAFINACABpyIA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QANAIANBEGogA0EIahCHBiADKAIQIgFFDQEgAygCFCEGAkAgAygCHA0AIAIgASAGEO0FIQQMAwtBASEEIAUgASAGIAAoAgwRDAANAiAFQf3/AyAAKAIQEQgARQ0ADAILC0EAIQQLIANBIGokACAEC6cBAQJ/IAAoAgQhAiABIAAoAggiAxCYISADQQN0IQMCQANAIANFDQEgAigCACACQQRqKAIAIAEQ5R8gA0F4aiEDIAJBCGohAgwACwsgACgCECECIAEgACgCFCIDEJghIANBFGwhAwJAA0AgA0UNASACKAIMIAJBEGooAgAgARDlHyACQQRqKAIAIAJBCGooAgAgARCfHyADQWxqIQMgAkEUaiECDAALCwuqAQICfwF+AkACQCAAKAIAIgEtACVBAkcNACABQQRqKAIAIQACQCABKAIIIgJFDQADQCAAEOoGIABBOGohACACQX9qIgINAAsgAUEEaigCACEACyABKAIAIABBCEE4EK8RDAELAkAgASkDCCIDQgODQgBSDQAgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCEBDBGwsgAUEgahDJDQsgAUEoQQgQnhILvwEAAkAgASACQcSgmwFBCBCZHEUNAEHzAA8LAkAgASACQaLEmwFBAhCZHEUNAEH1AA8LAkAgASACQYTLmwFBBRCZHEUNAEHMAA8LAkAgASACQZK4mwFBBRCZHEUNAEH4AA8LAkAgASACQbHGmwFBBhCZHEUNAEH3AA8LAkAgASACQanFmwFBBxCZHEUNAEH2AA8LAkAgASACQZmkmwFBAxCZHEUNAEH0AA8LQZx/QaR/IAEgAkG8zZsBQQgQmRwbC6cBAQV/IwBBEGsiAyQAAkAgAUUNACABQQR0IQQgAEEMaiEBIAJBLGohBSACLQB5IQYgAi0AKCEHA0AgAkEAOgB5IAJBADoAKAJAIAEoAgAiACgCAEEaRw0AIAMgACkDCCAAQRhqKAIAELoYIAUgAykDACADKAIIENEKCyAAIAIQdyACIAc6ACggAiAGOgB5IAFBEGohASAEQXBqIgQNAAsLIANBEGokAAuoAQICfwF+AkACQAJAIAIgA2pBf2pBACACa3GtIAGtfiIGQiCIpw0AIAanIgRBgICAgHggAmtNDQELIABBADYCBEEBIQMMAQsCQCAEDQAgACACNgIIQQAhAyAAQQA2AgQMAQtBACEDQQAtAMDxnQEaAkAgBCACEIYdIgVFDQAgACAFNgIIIAAgATYCBAwBCyAAIAQ2AgggACACNgIEQQEhAwsgACADNgIAC6gBAgJ/AX4CQAJAAkAgAiADakF/akEAIAJrca0gAa1+IgZCIIinDQAgBqciBEGAgICAeCACa00NAQsgAEEANgIEQQEhAwwBCwJAIAQNACAAIAI2AghBACEDIABBADYCBAwBC0EAIQNBAC0AwPGdARoCQCAEIAIQhh0iBUUNACAAIAU2AgggACABNgIEDAELIAAgBDYCCCAAIAI2AgRBASEDCyAAIAM2AgALogEBBH8CQCABKAIEIgIgASgCACIDa0ECdiIEIAAoAgAgACgCCCIFa00NACAAIAUgBEEEQQwQoBcgACgCCCEFCwJAIAMgAkYNACABKAIIIQQgACgCBCAFQQxsaiEBA0AgAUEIaiAEKAIANgIAIAFBADYCACABQQRqIAJBfGoiAigCADYCACABQQxqIQEgBUEBaiEFIAIgA0cNAAsLIAAgBTYCCAu+AQECfyMAQTBrIgIkACACQgA3AiggAkIENwIgIAJCADcCGCACQgQ3AhAgAkIANwIIIAJCgICAgMAANwIAIAIgARCkCAJAQTBFIgMNACAAQQxqIAJBMPwKAAALIAJCADcCKCACQgQ3AiAgAkIANwIYIAJCBDcCECACQgA3AgggAkKAgICAwAA3AgAgAiABEKQIAkAgAw0AIABBPGogAkEw/AoAAAsgAEEANgIIIABCgICAgMAANwIAIAJBMGokAAu7AQECfwJAAkACQAJAAkAgASgCCA4CAQIACwJAQSRFDQAgAEEEaiABQST8CgAACyAAQYeAxAA2AgAPCyAAQYCAxAA2AgAgACABKQIMNwIEIABBFGogAUEcaikCADcCACAAQQxqIAFBFGopAgA3AgAMAQsgAUEANgIIIAEoAgQiAigCACIDQYiAxABGDQEgACADNgIAQdQARQ0AIABBBGogAkEEakHUAPwKAAALIAEQ5xcPC0HYnIUBEJsgAAusAQICfwF+IwBBEGsiAyQAAkACQAJAAkAgASgCCCIEIAEoAgRPDQAgASgCACAEai0AACACQf8BcUYNAQsgAEIANwMIDAELQQEhAiABIARBAWo2AgggAyABEOkHAkAgAy0AAA0A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fgJAAkAgAa0gAq1+IgVCIIinDQAgBaciAUF4Sw0AIAFBB2pBeHEiASACQQhqaiIDIAFJDQAgA0H4////B0sNAEEALQDA8Z0BGiADEIUBIgNFDQEgAEEANgIMIAAgAkF/aiIENgIEIAAgAyABajYCACAAIAQgAkEDdkEHbCACQQlJGzYCCA8LENkZCwALnwEBA38jAEGQA2siAyQAIAMgASACELQDAkACQCADKAIAQYeAgIB4Rg0AAkACQCACDQBBACEEDAELIAFBCGooAgAhBCACQQFGDQAgAUEYaiEBIAJBf2pB/////wBxIQIDQCABKAIAIgUgBCAFIARLGyEEIAFBEGohASACQX9qIgINAAsLIAAgAyAEEL0GDAELIABBAjoADAsgA0GQA2okAAucAQEBfwJAAkACQAJAIAUgBEkNACAFIANLDQEgBSAERg0CIAUgBGshBiACIARqIQNBACEFAkADQCABIAMgBWotAABqLQAADQEgBiAFQQFqIgVGDQQMAAsLIAAgBSAEaiIBNgIEQQEhBSAAIAFBAWo2AggMAwsgBCAFQczUhAEQqSAACyAFIANBzNSEARCPIAALQQAhBQsgACAFNgIAC5UBAQJ+AkAgASgCAEEAIAJrQShsaiICQVhqKQMAIgNCA4NCAFINACADpykDCCEDCyACQWBqKAIAIQECQCACQWhqKQMAIgRCA4NCAFINACAEpykDCCEECyADp0Hdy92eeWwgA0IgiKdqQd3L3Z55bCABakHdy92eeWwgBKdqQd3L3Z55bCAEQiCIp2pB3cvdnnlsQQ93rQuSAQEBf0H/ASEFAkAgA0H/AXFFDQBBf0EAIANrQQdxdEF/cyADQQdxdCEFCyAAQQg6AA4gACADOgANIAAgBToADCAAIAE2AgggACAEOgAWIABBADoAFSAAIAJBfmo2AgQgACABQQFqNgIAIAAgASACakF/ajYCECAAQX9BfyAEQQdxdEF/cyAEQf8BcUEIRhs6ABQLoQEAIABBADoAGCAAQX82AhQgACAGNgIQIAAgBTYCDCAAIAQ2AgggACADNgIEIAAgAjYCAAJAIAEoAhQiBiABKAIMRw0AIAFBDGpB5IebARCMFwsgASAGQQFqNgIUIAEoAhAgBkEcbGoiASAAKQIANwIAIAFBCGogAEEIaikCADcCACABQRBqIABBEGopAgA3AgAgAUEYaiAAQRhqKAIANgIAC58BAQF/IwBBIGsiAiQAAkACQAJAIAEtABRBAkYNACACIAAgASABKAIYEJAHIAItABRBA0cNASABLQAUQQJGDQAgACgCFCABEPwNGgsgASgCGCAAEK8HDAELIAEQgx4gAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwAgASACKQMANwMACyACQSBqJAALqwEBAn8jAEEgayIBJAAgACgCmAEhAiAAQQs2ApgBAkACQCACQQtGDQAgAUEIaiAAQbABaigCADYCACABQRxqIABBpAFqKAIANgIAIAEgAjYCECABIAApAqgBNwMAIAEgACkCnAE3AhQgACABQRBqEMUZDAELIAEgABD5HAsgACAAKQPAATcDuAEgACABKQMANwLAASAAQcgBaiABQQhqKAIANgIAIAFBIGokAAujAQICfwF+IwBBEGsiBCQAAkACQAJAIANFDQACQCABLQBMQQFHDQAgBEEIaiABEO0SAkAgBC0ACEEERg0AIAQpAwgiBkL/AYNCBFINAwsgAUEAOgBMIAEoAgAhBSABQQA2AgAgBUEBRw0AIAEgASgCBBCsBQsgASgCNCACIAMQ2h8gASACIAMQtQYLIABBBDoAAAwBCyAAIAY3AgALIARBEGokAAucAQEEfyMAQRBrIgIkAAJAAkAgAS0ABEUNAEECIQMMAQsgASgCABAeIQQgAkEIahDCG0EBIQMgAigCDCAEIAIoAghBAXEiBRshBAJAIAVFDQAgAUEBOgAEIAQhAQwBCwJAAkAgBBAfDQBBACEDIAQQICEBDAELIAFBAToABEECIQMLIAQQkh8LIAAgATYCBCAAIAM2AgAgAkEQaiQAC7IBAQN/IwBBIGsiAyQAIANCABCYCwJAAkAgAygCAEGEgICAeEcNAEEALQDA8Z0BGiADKAIEIQRBEBCFASIFRQ0BIAUgAjoADSAFIAE6AAwgBSAENgIIIAVCgYCAgBA3AgAgAEH8l4QBNgIEIAAgBTYCACADQSBqJAAPCyADQRBqQQhqIANBCGopAwA3AwAgAyADKQMANwMQQdSkmwFBKyADQRBqQcjogwFB/JaEARDoDwsAC5UBAgF/An4gACAAKAI4QQFqNgI4IAAgAa1C/wGDIgMgACgCPCIBQQN0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aiECAkACQCAAKAIADQAgAikDACIEQgODQgBSDQEgBKciAiACKAIAIgNBf2o2AgAgA0EBRw0BIAIgAigCEBDBGwwBCyACEKcQCwJAIABBKGooAgAiAkUNACACEJABIAJBwABBCBCeEgsgAEEwaiEAIAFBf2oiAQ0ACwsLowECAX8BfiMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACkDAEJ+fCIDQgIgA0ICVBunDgMAAQIACyACIABBCGo2AgQgAUHimZoBQQkgAkEEakGgBBCkCyEADAILIAIgAEEIajYCCCABQeuZmgFBByACQQhqQaEEEKQLIQAMAQsgAiAANgIMIAFB8pmaAUEFIAJBDGpBogQQpAshAAsgAkEQaiQAIAAL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdLcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdbcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdrgLlwEBAX9BAC0AwPGdARoCQEHAABCFASIBDQAACyABIAApAwA3AwAgAUE4aiAAQThqKQMANwMAIAFBMGogAEEwaikDADcDACABQShqIABBKGopAwA3AwAgAUEgaiAAQSBqKQMANwMAIAFBGGogAEEYaikDADcDACABQRBqIABBEGopAwA3AwAgAUEIaiAAQQhqKQMANwMAIAELmgECA38CfiABKAIMIQIgASgCACIDKQMAIQUCQAJAIAEoAgQiAQ0AQgAhBkEAIQQMAQsgAyABQQR0a0Fwaq1CIIYgAUERbEEZaq2EIQZBCCEECyAAIAY3AiQgACAENgIgIAAgAjYCGCAAIAM2AhAgACADQQhqNgIIIAAgAyABakEBajYCDCAAIAVCf4VCgIGChIiQoMCAf4M3AwALlwEBAX8jAEEQayICJAACQAJAIAEoAgAiARDpIEUNACACQQRqIAEQrw4gAEEIaiACQQRqQQhqKAIANgIAIAAgAikCBDcCAAwBCwJAIAEQMkUNACACQQRqIAEQLiIBEK8OIABBCGogAkEEakEIaigCADYCACAAIAIpAgQ3AgAgARCSHwwBCyAAQYCAgIB4NgIACyACQRBqJAALlQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpBPBD0ChogAEEMaiEAIAFBdGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5UBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQT8Q9AoaIABBDGohACABQXRqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuVAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakE+EPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlQEBBH8jAEGAIGsiAiQAAkACQCABQYCJ+gAgAUGAifoASRsiAyABIAFBAXZrIgQgAyAESxsiA0GBCEkNACACIAMQrBUgACABIAIoAgQiAyACKAIIIgRBAnRqIAIoAgAiBSAEayABQcEASRDSAiAFIANBBEEEELURDAELIAAgASACQYAIIAFBwQBJENICCyACQYAgaiQAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQcEAEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlQEBB38jAEEQayIBJAAgAEG0A2ohAiAAKALEAyEDIAAoAsgDIQQgACgCjAYhBUEAIQYCQANAIAFBCGogAiAFIAYgABD3DyABKAIIIgZBAXFFDQECQCABKAIMIgAgBE8NACADIABBCWxqIgcoAAFBAUcNASAHQQFqIAU2AAAMAQsLIAAgBEGUtoABELMRAAsgAUEQaiQAC5UBAQN/IwBBIGsiASQAQQAhAgJAIABBf3NBH3YgAEHE0oABEIkaIgNB+P///wdLDQBBBCECIAFBBDYCHCABIANBBGo2AhgLIAEgAjYCFCABQQhqIAFBFGpB4NKAARCuFQJAIAEoAggiACAAIAEoAgxqQX9qQQAgAGtxENUfIgANAAALIAAgAzYAACABQSBqJAAgAEEEagudAQEBfyMAQSBrIgYkAAJAAkAgAUUNACAGQRRqIAEgAyAEIAUgAigCEBERAAJAIAYoAhQgBigCHCIBTQ0AIAZBCGogBkEUaiABQQRBBBClCyAGKAIIIgFBgYCAgHhHDQIgBigCHCEBCyAAIAE2AgQgACAGKAIYNgIAIAZBIGokAA8LQcT+nAFBMhDkIAALIAEgBigCDEHA2IIBEKoeAAuaAQECfwJAIAAoAgANACAAQX82AgACQCAAKAIMIgIgACgCBEcNACAAQQRqQZS2hQEQ/hULIAAoAgggAkEcbGoiAyABKQIANwIAIANBCGogAUEIaikCADcCACADQRBqIAFBEGopAgA3AgAgA0EYaiABQRhqKAIANgIAIAAgAkEBajYCDCAAIAAoAgBBAWo2AgAPC0GEtoUBEPgUAAuZAQECfyMAQRBrIgIkACACQQRqIAAgARDFBEEALQDA8Z0BGiACKAIEIQMCQEE0EIUBIgANAAALIABCADcCFCAAQQE2AhAgACABNgIMIABBATYCCCAAIAE2AgQgAEEBNgIAIABBgQI7ADEgAEEcakIANwIAIABBJGpCADcCACAAQSxqQQA2AgAgACADQQFzOgAwIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQbABEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBA3QhAQNAIAIgADYCDCACQQRqIAJBDGpBuAEQ9AoaIABBCGohACABQXhqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EFdCEBA0AgAiAANgIMIAJBBGogAkEMakG5ARD0ChogAEEgaiEAIAFBYGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQboBEPQKGiAAQQxqIQAgAUF0aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALqwEBA38jAEEgayICJAAgAkIAEJgLAkACQCACKAIAQYSAgIB4Rw0AQQAtAMDxnQEaIAIoAgQhA0EQEIUBIgRFDQEgBCABOgAMIAQgAzYCCCAEQoGAgIAQNwIAIABB7JiEATYCBCAAIAQ2AgAgAkEgaiQADwsgAkEQakEIaiACQQhqKQMANwMAIAIgAikDADcDEEHUpJsBQSsgAkEQakHI6IMBQfyWhAEQ6A8LAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EDdCEBA0AgAiAANgIMIAJBBGogAkEMakHYARD0ChogAEEIaiEAIAFBeGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQF0IQEDQCACIAA2AgwgAkEEaiACQQxqQe0BEPQKGiAAQQJqIQAgAUF+aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCBCEDIAAoAgghACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQgAEEEdCEBAkADQCABRQ0BIAIgAzYCDCACQQRqIAJBDGpBgwIQ9AoaIAFBcGohASADQRBqIQMMAAsLIAJBBGoQvxohASACQRBqJAAgAQuWAQEDfyMAQRBrIgIkACAAKAIEIQMgACgCCCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCAAQQN0IQECQANAIAFFDQEgAiADNgIMIAJBBGogAkEMakGHAhD0ChogAUF4aiEBIANBCGohAwwACwsgAkEEahC/GiEBIAJBEGokACABC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqEM4OAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqEM8OAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5QBAgJ/AX4CQCAALQAUQQJHDQAgACgCACIAQRhqENAOAkAgACkDACIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDBGwsgAEEwQQgQnhIPCwJAIAApAwAiA0IDg0IAUg0AIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNACAAIAAoAhAQwRsLC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQR0IQEDQCACIAA2AgwgAkEEaiACQQxqQaEDEPQKGiAAQRBqIQAgAUFwaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALmQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANB0ABsIQEDQCACIAA2AgwgAkEEaiACQQxqQZ4EEPQKGiAAQdAAaiEAIAFBsH9qIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HIAGwhAQNAIAIgADYCDCACQQRqIAJBDGpBpgQQ9AoaIABByABqIQAgAUG4f2oiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQShsIQEDQCACIAA2AgwgAkEEaiACQQxqQbUEEPQKGiAAQShqIQAgAUFYaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBHQhAQNAIAIgADYCDCACQQRqIAJBDGpBtgQQ9AoaIABBEGohACABQXBqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuZAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0HYAGwhAQNAIAIgADYCDCACQQRqIAJBDGpBuAQQ9AoaIABB2ABqIQAgAUGof2oiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5cBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQZ0IQEDQCACIAA2AgwgAkEEaiACQQxqQcQEEPQKGiAAQcAAaiEAIAFBQGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQxsIQEDQCACIAA2AgwgAkEEaiACQQxqQcgEEPQKGiAAQQxqIQAgAUF0aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlwEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBnQhAQNAIAIgADYCDCACQQRqIAJBDGpBxQQQ9AoaIABBwABqIQAgAUFAaiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBAnQhAQNAIAIgADYCDCACQQRqIAJBDGpBnQMQ9AoaIABBBGohACABQXxqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHVBBD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC6IBAQJ/IwBBEGsiAiQAAkACQAJAAkAgACgCACIALQAsQX1qIgNBASADQf8BcUEDSRtB/wFxDgMAAQIACyACIAA2AgQgAUG11psBQQUgAkEEakHcAhCkCyEADAILIAIgADYCCCABQZmAmgFBDSACQQhqQeYCEKQLIQAMAQsgAiAANgIMIAFBlfmZAUERIAJBDGpB5wIQpAshAAsgAkEQaiQAIAALmQEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANB2ABsIQEDQCACIAA2AgwgAkEEaiACQQxqQd0EEPQKGiAAQdgAaiEAIAFBqH9qIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHMAhD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC5YBAQN/IwBBEGsiAiQAIAAoAgghAyAAKAIEIQAgASgCAEGuxJsBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQccCEPQKGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEL8aIQAgAkEQaiQAIAALlgEBA38jAEEQayICJAAgACgCCCEDIAAoAgQhACABKAIAQa7EmwFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpB6gQQ9AoaIABBOGohACABQUhqIgENAAsLIAJBBGoQvxohACACQRBqJAAgAAuWAQEDfyMAQRBrIgIkACAAKAIIIQMgACgCBCEAIAEoAgBBrsSbAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EobCEBA0AgAiAANgIMIAJBBGogAkEMakHuBBD0ChogAEEoaiEAIAFBWGoiAQ0ACwsgAkEEahC/GiEAIAJBEGokACAAC6QBAgJ/AX4jAEEQayICJAACQAJAAkAgAS0ATEEBRw0AIAJBCGogARDtEgJAIAItAAhBBEYNACACKQMIIgRC/wGDQgRSDQILIAFBADoATCABKAIAIQMgAUEANgIAIANBAUcNACABIAEoAgQQrAULIAEoAjRBpJabAUGllpsBEIgUIAFBpJabAUEBELUGIABBBDoAAAwBCyAAIAQ3AgALIAJBEGokAAuXAQIBfwF+IwBBIGsiAyQAIANBEGogAiABQQAQlQICQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIANBADYCECADQQhqIAIgA0EQakGDlpsBQQEQuAwCQCADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyAAQQQ6AAALIANBIGokAAuXAQECfyMAQRBrIgMkAAJAAkAgAigCBEUNAAJAIAIoAggiBA0AIANBCGpBBCABEKkcIAMoAgwhBCADKAIIIQIMAgsgAigCACAEQQQgARDaAyECIAEhBAwBCyADQQQgARCpHCADKAIEIQQgAygCACECCyAAIAJBBCACGzYCBCAAIAJFNgIAIAAgBCABIAIbNgIIIANBEGokAAuCAQEDfwJAIANBCEkNACAAIAAgA0EDdiIDQQR0IgRqIAAgA0EcbCIFaiADEOUOIQAgASABIARqIAEgBWogAxDlDiEBIAIgAiAEaiACIAVqIAMQ5Q4hAgsgACACIAEgACgCACIDIAEoAgAiBEkiBSAEIAIoAgAiBklzGyAFIAMgBklzGwuWAQECfyAAQTBqEOQXIABB0ABqKAIAIQECQCAAQdQAaigCACICRQ0AA0AgASgCAEE0QQQQnhIgAUEEaiEBIAJBf2oiAg0ACyAAQdAAaigCACEBCyAAKAJMIAFBBEEEELURIAAoAlhBNEEEEJ4SAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQdwAQQQQnhILC5oBAQN/AkACQAJAAkAgASgCCCICIAEoAgxGDQAgASACQQhqNgIIIAIoAgQiAyACKAIAIgRJDQIgAyABKAIEIgJLDQMgAyAEayECIAEoAgAgBEEDdGohAwwBCyABKAIQIQMgAUEANgIQIAEoAhQhAgsgACACNgIEIAAgAzYCAA8LIAQgA0HYuIQBEKkgAAsgAyACQdi4hAEQjyAAC50BAQJ/IAAoAhgiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCGBD7EQsgACgCDCIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIMEPsRCyAAKAIEIgEgACgCCBDRGSAAKAIAIAFBBEEMELURAkAgACgCHCIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAKAIcIAAoAiAQ6g8LC5EBAQN/IAAoAgghAyAAKAIEIQQCQAJAIAAoAgAoAlAiBUUNAAJAIAMgBUsNACADIAVGDQEMAgsgBCAFaiwAAEG/f0wNAQsCQCAEIAVqIAMgBWsgASACEKAcIgNFDQAgASACEJUZIgVFDQADQCAAEJoIGiAFQX9qIgUNAAsLIAMPCyAEIAMgBSADQZD/hAEQlR8AC5gBAQF/IwBBMGsiAyQAIANBCGpBsMeVAUENIAEgAhDdDAJAAkAgAygCCCICRQ0AIANBJGogAiACIAMoAgxBA3RqEJ0LIANBFGogA0EkahDdEyADKAIUQYCAgIB4Rg0AIAAgAykCFDcCACAAQQhqIANBFGpBCGopAgA3AgAMAQsgAEGAgICAeDYCACAAQQE6AAQLIANBMGokAAuYAQEBfyMAQTBrIgMkACADQQhqQYCklwFBDiABIAIQ3QwCQAJAIAMoAggiAkUNACADQSRqIAIgAiADKAIMQQN0ahCdCyADQRRqIANBJGoQ3RMgAygCFEGAgICAeEYNACAAIAMpAhQ3AgAgAEEIaiADQRRqQQhqKQIANwIADAELIABBgICAgHg2AgAgAEEBOgAECyADQTBqJAALmAEBAX8jAEEwayIDJAAgA0EIakHIipYBQRIgASACEN0MAkACQCADKAIIIgJFDQAgA0EkaiACIAIgAygCDEEDdGoQnQsgA0EUaiADQSRqEN0TIAMoAhRBgICAgHhGDQAgACADKQIUNwIAIABBCGogA0EUakEIaikCADcCAAwBCyAAQYCAgIB4NgIAIABBAToABAsgA0EwaiQAC5EBAQN/IwBBMGsiAiQAIAIgARCdBUEMIQEgAigCBCEDAkAgAigCACIEQQtGDQAgACACKQMINwMIIABBKGogAkEoaikDADcDACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAEIQELIAAgATYCACAAIAM2AgQgAkEwaiQAC6ABAgR/AX4jAEEQayIBJAAgAUEIQQhBBBD4DCABKAIEIQICQAJAIAEoAgAiAw0AIAE1AgghBQwBCyABKQIIIQUgAkEJaiIERQ0AIANB/wEgBPwLAAsgAUEIaiIEIAU3AgAgASACNgIEIAEgAzYCACABQsHK2YvGDRDrBSABEIcYEOsFIABBCGogBCkCADcCACAAIAEpAgA3AgAgAUEQaiQAC6cBAAJAIAEgAkHU3JsBQQUQmRxFDQBB5gAPCwJAIAEgAkGKzZsBQQYQmRxFDQBBlAEPCwJAIAEgAkGUzJsBQQYQmRxFDQBB5wAPCwJAIAEgAkGwpJsBQQYQmRxFDQBBlgEPCwJAIAEgAkG1xZsBQQMQmRxFDQBBkwEPCwJAIAEgAkGDpJsBQQYQmRxFDQBBlQEPC0Gef0GkfyABIAJBoMWbAUEJEJkcGwunAQACQCABIAJBqsSbAUEEEJkcRQ0AQegADwsCQCABIAJB4MubAUEFEJkcRQ0AQekADwsCQCABIAJB0cmbAUEEEJkcRQ0AQeoADwsCQCABIAJB65abAUEGEJkcRQ0AQewADwsCQCABIAJBz8ubAUEDEJkcRQ0AQesADwsCQCABIAJB6KCbAUEEEJkcRQ0AQZcBDwtBoH9BpH8gASACQYy7mwFBBhCZHBsL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADcrcL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADc7cL0AEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsgAiADcbcLjQEBBH8jAEEQayIDJAAgA0EIaiAAKAIAIgQgACgCBCABELUVIAMoAgghBSADLQAMIQYgACAAKAIMQQFqNgIMIAAgACgCCCAGQQFxazYCCCAEQQAgBWtBGGxqQWhqIgAgAikDADcDACAAQQhqIAJBCGopAwA3AwAgAEEQaiACQRBqKQMANwMAIANBEGokAAuYAQECfyMAQRBrIgYkAEEAIQcCQAJAAkAgAS0AyAFBhAFHDQAgARCHDiAGQQhqIAFBACABKALAARDwDSAGKAIMIQcgBigCCEEBcQ0BCyAAIAc2AiAgACACNgIYIABBAjoAFCAAIAEoArwBNgIcIAAgBa1CIIYgBK2ENwMADAELIAAgBzYCAEECIQMLIAAgAzoAJCAGQRBqJAALrAEBAn8jAEEgayIBJAACQAJAQQAoAujwnQENAAJAAkAgAEUNACAAKAIAIQIgAEEANgIAIAJFDQAgACgCBCEADAELQQBBACgC/OOdASIAQQFqNgL8450BIABFDQILQQAgADYC7PCdAUEAQQE2AujwnQELIAFBIGokAEHs8J0BDwsgAUEANgIYIAFBATYCDCABQdz3hAE2AgggAUIENwIQIAFBCGpB5PeEARCFGwALnwEBA38g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AEEoahDoHg8LIAAQkRcgAEEgahDyHiAAQegAahDwHiAAQcgAahDoHguUAQEDfyAAQRxqEN8VIAAoAgwgACgCEBDVGiAAKAIIIQEgACgCBCICIQMCQANAIAFFDQEgAykDABDGHSABQX9qIQEgA0EYaiEDDAALCyAAKAIAIAIQvSAgACgCNCEBIAAoAjAiAiEDAkADQCABRQ0BIAFBf2ohASADEI8PIANBPGohAwwACwsgACgCLCACQQRBPBCvEQuRAQEEfyMAQSBrIgIkACACQQhqQRBqIgMgAUEsaigCADYCACACQQhqQQhqIgQgAUEkaikCADcDACACIAEpAhw3AwhBFEEEEPseIgVBEGogAygCADYCACAFQQhqIAQpAwA3AgAgBSACKQMINwIAIAFBBGoQqx0gARDoISAAQbjdmwE2AgQgACAFNgIAIAJBIGokAAuCAQIBfwF+AkACQCABrSADrX4iBUIgiKcNACAFpyIBIAJBf2pqIgQgAUkNACAEQQAgAmtxIgEgA0EIamoiAyABSQ0BAkAgA0GAgICAeCACa0sNACAAIAE2AgggACADNgIEIAAgAjYCAA8LIABBADYCAA8LIABBADYCAA8LIABBADYCAAuFAQICfwF+IwBBEGsiBCQAIARBCGpBfyACIANqIgMgAyACSRsiA0H/////ByACrUIDfiIGp0EBdiAGQiCIpxsiBSADIAVLGxC4DSAEKAIIIQUgBCgCDCEDAkAgAkUNACADIAEgAvwKAAALIAAgBTYCCCAAIAI2AgQgACADNgIAIARBEGokAAuSAQEEfyMAQRBrIgMkAAJAAkAgASgCACIEIAIoAgAiBU8NACADQQhqIAJBCGooAgA2AgAgAyACKQIANwMAIAAgAyABKAIEIgYgASgCCBDSCwwBCyADQQhqIAFBCGooAgA2AgAgAyABKQIANwMAIAAgAyACKAIEIgYgAigCCBDSCyAFIQQLIAQgBhCxICADQRBqJAALiQEAAkACQCABQYABSQ0AAkAgAUGAEE8NACACIAFBP3FBgAFyOgABIAIgAUEGdkHAAXI6AABBAiEBDAILIAIgAUE/cUGAAXI6AAIgAiABQQx2QeABcjoAACACIAFBBnZBP3FBgAFyOgABQQMhAQwBCyACIAE6AABBASEBCyAAIAE2AgQgACACNgIAC4QBAgJ/AX4g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RkEfdDYC1AUgAEECNgLIAQuZAQECfyABKAKkDSgCxAIiAiACKAIAIgNBAWo2AgACQCADQX9KDQAACyAAIAIQkRQgAEHoBGogASgCsAoQzw0gASgCyAohAiAAQdgEaiABKALkCiABKAKICxDZDyAAQdgBaiABEP8MIABCADcD6AUgAEKAgICAwAA3A+AFIABCBDcD2AUgACACQQJGQR90NgLUBSAAQQI2AsgBC5kBAQJ/IAEoAqQNKALEAiICIAIoAgAiA0EBajYCAAJAIANBf0oNAAALIAAgAhCRFCAAQegEaiABKAKwChDPDSABKALICiECIABB2ARqIAEoAuQKIAEoAogLENkPIABB2AFqIAEQ/wwgAEIANwPoBSAAQoCAgIDAADcD4AUgAEIENwPYBSAAIAJBAkZBH3Q2AtQFIABBAjYCyAELgQEBBn8CQCABRQ0AQQAhAgNAIAAgAkEGdGoiA0E0aiIEKAIAIQUCQCADKAI4IgZFDQADQCAFKAIAIgcQkAEgB0HAAEEIEJ4SIAVBDGohBSAGQX9qIgYNAAsgBCgCACEFCyADKAIwIAVBBEEMEK8RIAMQ2AcgAkEBaiICIAFHDQALCwuXAQICfwF8IwBBMGsiAiQAAkACQCABKwMAIgREAAAAAAAAAABhDQACQAJAIAS9Qv///////////wCDQv/////////3/wBVDQAgBCACQRdqEPcBIAJBF2prIQEgAkEXaiEDDAELIAJBCGogBBCzGCACKAIMIQEgAigCCCEDCyAAIAMgARCfFAwBCyAAIAEQzRALIAJBMGokAAt6AQJ/IAAoAgAhAQJAIAAoAgQiACgCACICRQ0AIAEgACgCCEF/akF4cWpBCGogAhEDAAsCQCABQX9GDQAgASABKAIEIgJBf2o2AgQgAkEBRw0AIAEgACgCCCICQQQgAkEESxsiAiACIAAoAgRqQQdqQQAgAmtxEKMeCwuRAQEDfwJAAkBBACgC4PCdASICRQ0AIAEoAhAiAyACENUSIgJBDGooAgAiBEkNASADIARB3PaZARCzEQALQeCQmwFByABBiJKbARCMIQALIAJBCGooAgAgA0EDdGooAgAhAyACQQA6AAACQCADIAAoAixHDQAgAUEANgIQCyAAQQE6ADogACABEJcQIABBADoAOguQAQECfwJAAkACQAJAIAEoAgAi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IABBKGohACACQVhqIQIMAAsLC3oBAX8gACgCCEEobCECIAAoAgQhAAJAA0AgAkUNAQJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAQQRqIAEQnB0MAwsgAEEEaiABENAhDAILIABBBGogARC0DQwBCyAAQQRqIAEQ0hALIABBKGohACACQVhqIQIMAAsLC3oBAX8gACgCCEEobCECIAAoAgQhAAJAA0AgAkUNAQJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAQQRqIAEQoR0MAwsgAEEEaiABEKsEDAILIABBBGogARDfDQwBCyAAQQRqIAEQ0xALIABBKGohACACQVhqIQIMAAsLC3YBAX8gACgCCEE4bCECIAAoAgQhAANAAkACQCACRQ0AAkACQAJAIAAoAgAOAwABAgALIABBCGogARCjHSAAQShqIAEQ3CEMAwsgASAAQTBqEPMeDAILIABBBGogARDcIQwBCw8LIABBOGohACACQUhqIQIMAAsLdAIFfwF+IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQAJAIAMpAwAiBkIDg0IAUg0AIAanIgQgBCgCACIFQX9qNgIAIAVBAUcNACAEIAQoAhAQwRsLIANBCGohAyACQX9qIgINAAsLIAAoAgAgAUEIQQgQrxELhgEBAX8jAEEgayICJAAgAkEANgIIIAJCgICAgBA3AgAgAkHgz5sBNgIQIAJCoICAgA43AhQgAiACNgIMAkAgASACQQxqEPkaRQ0AQfjPmwFBNyACQR9qQcSkmwFBsNCbARDoDwALIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgAkEgaiQAC3YCA38BfiMAQRBrIgMkACABKAIUIQQgASgCECEFIAMgAUEIahD+ESADQQhqIAIgBSAEIAMoAgAgAygCBBC/DQJAAkAgAy0ACEEERg0AIAMpAwgiBkL/AYNCBFENACAAIAY3AgAMAQsgAEEEOgAACyADQRBqJAALhgEBAX8jAEEgayICJAAgAkEANgIIIAJCgICAgBA3AgAgAkHgz5sBNgIQIAJCoICAgA43AhQgAiACNgIMAkAgASACQQxqEMIhRQ0AQfjPmwFBNyACQR9qQcSkmwFBsNCbARDoDwALIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgAkEgaiQAC3kBAX8jAEEQ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ATYCBCACIAA2AgwgAkEEakGM35sBQQcgAkEMakGWBRChCUGgq5sBQQYgAEEIakGYBRChCRC0ESEBIAJBEGokACABC2wBA38jAEEQayIBJAACQAJAIAAoAgAiAg0AQQAhAiABQQxqIQAMAQsgACgCBCEDIAFBATYCDCABQQhqIQALIAAgAjYCAAJAIAEoAgwiAEUNACABKAIIIgJFDQAgAyACIAAQnhILIAFBEGokAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABCeEgsgBEEQaiQAC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEJ4SCyAEQRBqJAALagEBfwJAIAAoAggiAiAAKAIARw0AIAAQ4RULIAAgAkEBajYCCCAAKAIEIAJBBXRqIgAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDAAtqAQF/AkAgACgCCCICIAAoAgBHDQAgABDjFQsgACACQQFqNgIIIAAoAgQgAkEFdGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwAgAEEYaiABQRhqKQMANwMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQayOgQE2AgggA0ICNwIUIANBDq1CIIYiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAt5AQJ/IAAtAAQiASECAkAgAC0ABUUNAEEBIQICQCABQQFxDQACQCAAKAIAIgItAApBgAFxDQAgAigCAEHXtZcBQQIgAigCBCgCDBEMACECDAELIAIoAgBBpsSbAUEBIAIoAgQoAgwRDAAhAgsgACACOgAECyACQQFxC2cBAX8jAEEQayIEJAACQAJAIAANAEEAIQAgBEEMaiEDDAELIAQgAjYCDCAAIANsIQAgBEEIaiEDCyADIAA2AgACQCAEKAIMIgBFDQAgBCgCCCIDRQ0AIAEgAyAAEJ4SCyAEQRBqJAALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EDNgIMIANBlMqAATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhRsAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQcDKgAE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtsAgF/AX4jAEEwayICJAAgAiABNgIEIAIgADYCACACQQM2AgwgAkHwyoABNgIIIAJCAjcCFCACQQ6tQiCGIgMgAkEEaq2ENwMoIAIgAyACrYQ3AyAgAiACQSBqNgIQIAJBCGpBvMiFARCFGwALZwEBfyMAQRBrIgQkAAJAAkAgAA0AQQAhACAEQQxqIQMMAQsgBCACNgIMIAAgA2whACAEQQhqIQMLIAMgADYCAAJAIAQoAgwiAEUNACAEKAIIIgNFDQAgASADIAAQnhILIARBEGokAAt8AQF/IwBBEGsiAyQAAkAgACgCBEEDRg0AIAEpAwBCtuvn6eHYxrZ2Ug0AIAEpAwhCtN+v6pWUsbIQUg0AIAEoAhANACABIABBBGo2AhALIANBCGogACAAKAIAKAIEEQcAIAMoAgggASACIAMoAgwoAigRCwAgA0EQaiQAC3EBAX9BDBCIGiIGQQI2AgggBiADNgIAIAYgBCADayAFajYCBCABIAYgASgCACIDIAMgAkYiAhs2AgACQCACDQAgACADIAQgBRCxGCAGEPMgDwsgACAGNgIMIAAgBTYCCCAAIAQ2AgQgAEGo0IABNgIAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbD9gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HQ/YEBNgIIIANCAjcCFCADQQ6tQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCFGwALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANBhP6BATYCCCADQgI3AhQgA0EOrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQhRsAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQej+gQE2AgggA0ICNwIUIANBDq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEIUbAAtnAQF/IwBBEGsiBCQAAkACQCAADQBBACEAIARBDGohAwwBCyAEIAI2AgwgACADbCEAIARBCGohAwsgAyAANgIAAkAgBCgCDCIARQ0AIAQoAggiA0UNACABIAMgABCeEgsgBEEQaiQAC28BAn8jAEEQayIDJAACQAJAIAEoAgAgASgCCCIETQ0AIANBCGogASAEQQRBBBDtDCADKAIIIgRBgYCAgHhHDQEgASgCCCEECyAAIAQ2AgQgACABKAIENgIAIANBEGokAA8LIAQgAygCDCACEKoeAAtoAQJ/IwBBIGsiASQAIABBNGohAgJAIAAoAjBBAkYNACABIAA2AgggASACNgIMIAEgAUEfajYCGCABIAFBDGo2AhQgASABQQhqNgIQIABBMGogAUEQakHotJgBEJEGCyABQSBqJAAgAgttAQN/AkAgACgCDCIBIAAoAgQiAkYNACABIAJrQQZ2IQEDQCACQTRqIgMoAgAgAkE4aigCABClGiACQTBqKAIAIAMoAgAQxSAgAhDhCiACQcAAaiECIAFBf2oiAQ0ACwsgACgCCCAAKAIAEMcgC2oBA38CQCAALQAlQQJGDQADQCAAKAIgIgAtACVBAkcNAAsLAkAgACgCCCIBDQBBAA8LIAAoAgQhACABQThsQUhqIQECQANAIAAQ2goiAg0BIABBOGohACABIQMgAUFIaiEBIAMNAAsLIAILbwICfwF+IABBCGohAQJAAkAgACgCAA0AIAEpAwAiA0IDg0IAUg0BIAOnIgEgASgCACICQX9qNgIAIAJBAUcNASABIAEoAhAQwRsMAQsgARCnEAsCQCAAKAIoIgBFDQAgABDZASAAQcAAQQgQnhILC28BBH9BACECAkACQCABLQAlRQ0ADAELIAFBAToAJQJAAkAgAS0AJEEBRw0AIAEoAiAhAyABKAIcIQQMAQsgASgCICIDIAEoAhwiBEYNAQsgAyAEayEFIAEoAgQgBGohAgsgACAFNgIEIAAgAjYCAAtwAgF/AX4jAEEQayIBJAAgACkDCCECIABBCjYCCCABQQhqIABBEGopAwA3AwAgASACNwMAAkACQCACpyIAQQpGDQAgAEEJRg0BCyABEIoSQbKjmwFBKEHYwJsBEN0XAAsgASgCBCEAIAFBEGokACAAC3UBAn8jAEEQayICJAACQAJAAkACQCABKAIADgQAAgECAAsgAkEIaiABQQhqEJ0UIAIoAgwhAyACKAIIIQEMAgsgASgCDCEDIAEoAgghAQwBCyABKAIUIQMgASgCECEBCyAAIAE2AgAgACADNgIEIAJBEGokAAtwAgF/AX4jAEEQayIBJAAgACkDCCECIABBCjYCCCABQQhqIABBEGopAwA3AwAgASACNwMAAkACQCACpyIAQQpGDQAgAEEIRg0BCyABEIoSQbKjmwFBKEH4wJsBEN0XAAsgASgCBCEAIAFBEGokACAAC3ACAX8BfiMAQRBrIgEkACAAKQMIIQIgAEEKNgIIIAFBCGogAEEQaikDADcDACABIAI3AwACQAJAIAKnIgBBCkYNACAAQQJGDQELIAEQihJBsqObAUEoQcjAmwEQ3RcACyABKQMIIQIgAUEQaiQAIAILZwECfyMAQRBrIgIkAEEAIQMCQCABKAIIRQ0AIAJBCGogAUEIahCdFyACKAIIQQFxRQ0AIAIgAigCDBDlGyAAIAIpAwA3AgQgASABKAIUQQFqNgIUQQEhAwsgACADNgIAIAJBEGokAAtxAQJ/IwBBEGsiAiQAAkACQAJAAkAgAUIBVg0AIAGnDgIBAgELQQEhAyACQQE6AAAgAiABNwMIIAAgAkHQh4ABEOcRNgIEDAILQQAhAyAAQQA6AAEMAQsgAEEBOgABQQAhAwsgACADOgAAIAJBEGokAAtuAQF/IABB6ABqEM4bAkAgACgCbEUNACAAQewAahDOGwsgAEEcaiAAKAIUIAAoAhggACgCECgCEBELACAAQcQAahC2GAJAIABBf0YNACAAIAAoAgQiAUF/ajYCBCABQQFHDQAgAEGAAUEQEJ4SCwtcAQF/IAEgAGohAQJAIAIgAEkNACACIAFPDQBBAQ8LQQEhBCACIANBASADQQFLG2ohAwJAAkAgAiAATw0AIAMgAUsNAQsCQCADIABLDQBBAA8LIAMgAU0hBAsgBAtpAQJ/AkAgACgCDCIBIAAoAgQiAkYNACABIAJrQQV2IQEDQCACKAIAIAJBBGooAgAQrh4gAkEYaigCACACQRxqKAIAEO8aIAJBIGohAiABQX9qIgENAAsLIAAoAgggACgCAEEEQSAQsBELbAECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdiZgAFBBSACQQxqQSwQpAshAAwBCyACIAM2AgggAUHQmYABQQggAkEIakEsEKQLIQALIAJBEGokACAAC3MBAn8gACgCACAAKAIEQQRBBBC1ESAAKAIQIgEgACgCFBDVGSAAKAIMIAFBBEEMELURIAAoAhggACgCHEEEQQQQtRECQCAAKAIoIgFFDQAgASABKAIAIgJBf2o2AgAgAkEBRw0AIAAoAiggACgCLBDqDwsLWgEBfyMAQRBrIgUkACAFIAJCACABQgAQ5Q8gACABIAN+IAUpAwh8IgFBACAEa0E/ca0iAohCAYM8AAAgACABIARBP3GthiAFKQMAIAKIhFA6AAEgBUEQaiQAC14BA38CQANAQQEhBCABIABGIgUNAQJAIAMgAkcNACACIQMMAgsgAUF8aiIBKAIAIgQgA0F8aiIDKAIAIgZGDQALIAQgBksgBCAGSWshBAtBf0EAIAIgA0cbIAQgBRsLYwEEf0EAIQEDQCAAKAIAIQICQANAIAJBAXENASAAIAJBAXIgACgCACIDIAMgAkYiBBs2AgAgAyECIARFDQALDwsCQAJAIAJBA0sNACABQQpJDQELEN0ZAAsgAUEBaiEBDAALC2kBAn9BACEDQQAhBAJAAkAgAkUNACACQX9qIgQgAU8NASAAIARqLQAAQdTnhAFqLQAAIQQLAkAgAiABTw0AIAAgAmotAABB1OeEAWotAAAhAwsgBCADc0EBcQ8LIAQgAUHE0oQBELMRAAt6AQF/IwBBEGsiAiQAIAIgAEHUEmo2AgwgAUGs9IQBQQxBm/SEAUEEIABBwgFBuPSEAUEIIABBwBJqQcMBQbTzhAFBBiAAQdASakHEAUHY8IQBQQYgAEGwDWpBxQFB3vCEAUEDIAJBDGpBxgEQxgshACACQRBqJAAgAAtuAQJ/IwBBEGsiAyQAAkACQCACKAIARQ0AQQkhAkH4p5gBIQQMAQsgA0EEaiACKAIEIAIoAggQxQRB+KeYASADKAIIIAMoAgQiAhshBEEJIAMoAgwgAhshAgsgBCACIAEQxw0hAiADQRBqJAAgAgttAgR/AX4gASgCECECIAEoAgwhAyABKAIIIQQCQCABKQMAIgZCA4NCAFINACAGpyIFIAUoAgAiBUEBajYCACAFQX9KDQAACyAAIAI2AhAgACADNgIMIAAgBDYCCCAAIAY3AwAgACABLQAUOgAUC3cAAkAgASACQfDLmwFBBBCZHEUNAEHOAA8LAkAgASACQZrMmwFBBRCZHEUNAEHPAA8LAkAgASACQeTKmwFBBRCZHEUNAEHQAA8LAkAgASACQd6WmwFBBRCZHEUNAEHRAA8LQdIAQaR/IAEgAkGyzJsBQQgQmRwbC3cAAkAgASACQbrMmwFBCBCZHEUNAEHTAA8LAkAgASACQeTHmwFBBxCZHEUNAEHUAA8LAkAgASACQfWWmwFBBhCZHEUNAEHVAA8LAkAgASACQbDMmwFBAhCZHEUNAEHWAA8LQfwAQaR/IAEgAkHuoZsBQQcQmRwbC3cAAkAgASACQczJmwFBBRCZHEUNAEHaAA8LAkAgASACQdLLmwFBBxCZHEUNAEHbAA8LAkAgASACQczLmwFBAxCZHEUNAEHcAA8LAkAgASACQenKmwFBCBCZHEUNAEHdAA8LQf4AQaR/IAEgAkGtxpsBQQQQmRwbC3cAAkAgASACQZ7EmwFBAxCZHEUNAEHjAA8LAkAgASACQYmkmwFBBBCZHEUNAEHkAA8LAkAgASACQY2kmwFBBhCZHEUNAEGIAQ8LAkAgASACQbakmwFBBRCZHEUNAEGHAQ8LQYZ/QaR/IAEgAkHfoJsBQQkQmRwbC20BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEEBRw0AIAIgAEEEajYCDCABQczcmAFBAyACQQxqQbECEKQLIQAMAQsgAiAAQQhqNgIIIAFBytyYAUECIAJBCGpBswIQpAshAAsgAkEQaiQAIAALbgECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQYedmgFBEiACQQxqQb4DEKQLIQAMAQsgAiADNgIIIAFB2JSaAUELIAJBCGpBvwMQpAshAAsgAkEQaiQAIAALbgECfyMAQRBrIgIkACAAKAIAIgBBCGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdT3mQFBAyACQQxqQYcDEKQLIQAMAQsgAiADNgIIIAFBtdabAUEFIAJBCGpB3AIQpAshAAsgAkEQaiQAIAALbgECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdbWmwFBBCACQQxqQccCEKQLIQAMAQsgAiADNgIIIAFB6f6ZAUEHIAJBCGpB/QMQpAshAAsgAkEQaiQAIAALbgECfyMAQRBrIgIkACAAKAIAIgBBBGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdbWmwFBBCACQQxqQccCEKQLIQAMAQsgAiADNgIIIAFBj/6ZAUEMIAJBCGpB6AIQpAshAAsgAkEQaiQAIAALdwEBfyMAQRBrIgIkACACIABBOGo2AgwgAUHjj5oBQRFBi/6ZAUEEIABB2QRB0PeZAUEEIABBMGpBgQJB9I+aAUEFIABBPGpB2gRB+Y+aAUEMIABByABqQcsCQZz/mQFBCSACQQxqQYMDEMYLIQAgAkEQaiQAIAALbQEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQFHDQAgAiAAQQRqNgIMIAFBvYCaAUEIIAJBDGpB2QMQpAshAAwBCyACIABBCGo2AgggAUG11psBQQUgAkEIakGWAxCkCyEACyACQRBqJAAgAAtkAQJ/AkAgAEIDg0IAUg0AIACnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQwRsLAkAgAUIDg0IAUg0AIAGnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQwRsLC20BAn8jAEEQayICJAAgAiABNgIMAkACQAJAIAAtAHhBAXENACAALQCBAUEIcUUNAQsgAkEMahDfHQwBCwJAIAAtAMgBQaIBRw0AIAAQxxEhAyAAEIcOIAAgAxDVGAsgACABENUYCyACQRBqJAALgwEBAX8CQAJAAkACQAJAAkACQCAAKAIAQYCAgIB4cyIBQRUgAUEVSRsOFQEBAQEBAQEBAQEBAQIBAwEBBAEFBgALIAAQrBgLDwsgACgCBCAAKAIIEI4gDwsgACgCBCAAKAIIEI4gDwsgAEEEahCnHg8LIABBBGoQpx4PCyAAQQRqENsXC28BAX8jAEEwayICJAAgAkGwgIABNgIEIAIgATYCACACQQI2AgwgAkGYgYABNgIIIAJCAjcCFCACQQE2AiwgAkECNgIkIAIgADYCICACIAJBIGo2AhAgAiACNgIoIAJBCGoQxBghASACQTBqJAAgAQtsAQF/IwBBMGsiAyQAIAMgAjYCBCADIAE2AgAgA0ECNgIMIANByJaYATYCCCADQgI3AhQgA0EBNgIsIANBAjYCJCADIAA2AiAgAyADQSBqNgIQIAMgAzYCKCADQQhqEMQYIQIgA0EwaiQAIAILawEBfyMAQTBrIgIkACACQQI2AgwgAkGkwZgBNgIIIAJCAjcCFCACQQ42AiwgAkEONgIkIAIgADYCICACIABBBGo2AiggAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEM4FIQAgAkEwaiQAIAALZwEDfyMAQRBrIgIkACAAIAEoAgQgASgCAGsQnxwgACgCCCEDIAAoAgQhBAJAA0AgAkEIaiABELAYIAItAAhFDQEgBCADaiACLQAJOgAAIANBAWohAwwACwsgACADNgIIIAJBEGokAAtrAQJ/IwBBEGsiASQAIAAgACgCCCICQX9qNgIIAkACQCACQQFHDQAgAEEEaigCACICQX9MDQEgACgCACACQQEQnhIgABDzIAsgAUEQaiQADwtB1KSbAUErIAFBD2pBvM+AAUGY0IABEOgPAAtsAQF/IwBBMGsiAiQAIAJBAjYCDCACQdCDggE2AgggAkICNwIUIAJBDjYCLCACQeIANgIkIAIgADYCKCACIABBBGo2AiAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqELceIQAgAkEwaiQAIAALcAIBfwF+IwBBEGsiAiQAIAJBCGpBACgC4I+bATYCACACQQApAtiPmwE3AwAgAa0hAwJAA0AgA1ANASACIAOnQdCQmwEQpBlCACEDDAALCyAAIAIpAwA3AgAgAEEIaiACQQhqKAIANgIAIAJBEGokAAtxAQF/IwBBEGsiAiQAIAIgACgCACgCACIAQSxqNgIMIAFBo/aEAUEOQbH2hAFBCyAAQQhqQbUBQbz2hAFBDSAAQRRqQbYBQcn2hAFBDSAAQSBqQbcBQdb2hAFBDCACQQxqQSsQ+AshACACQRBqJAAgAAtpAQF/IwBBEGsiAyQAAkAgASgCIEUNAEGksYQBEPgUAAsgAUF/NgIgIANBDGogAkEIaigCADYCACADQQI2AgAgAyACKQIANwIEIAAgAUEkaiADENsLIAEgASgCIEEBajYCICADQRBqJAALXwEBfwJAIAEgA0cNACABQQFqIQEDQAJAIAFBf2oiAQ0AQQEPCyAAKAIAIAIoAgBHDQEgAkEEaiEDIABBBGohBCACQQhqIQIgAEEIaiEAIAQoAgAgAygCAEYNAAsLQQALawEBfyMAQTBrIgIkACACQQI2AgwgAkGkwZgBNgIIIAJCAjcCFCACQQ42AiwgAkEONgIkIAIgADYCICACIABBBGo2AiggAiACQSBqNgIQIAEoAgAgASgCBCACQQhqELceIQAgAkEwaiQAIAALbQEBfyMAQRBrIgIkAAJAAkAgACgCACgCACIAKAIAQQNHDQAgAiAAQQRqNgIMIAFB2viZAUEEIAJBDGpBoAMQpAshAAwBCyACIAA2AgggAUHH+JkBQQYgAkEIakHWAhCkCyEACyACQRBqJAAgAAtoAQN/AkACQCABKAIEIgIgASgCACIDKAIgSQ0AQQAhAwwBC0EAIQQCQCACIAMoAixPDQAgAygCKCACQSRsaiIEQQAgBCgCABshBAtBASEDIAEgAkEBajYCBAsgACAENgIEIAAgAzYCAAtiAQF/Qf8BIQUCQCADQf8BcUUNAEF/QQAgA2tBB3F0QX9zIANBB3F0IQULIABBCDoADiAAIAM6AA0gACAFOgAMIAAgATYCCCAAQQA2AhAgACACQX9qNgIEIAAgAUEBajYCAAt0AQF/IwBBEGsiAiQAIAAoAgAhACACIAEoAgBB8IWbAUENIAEoAgQoAgwRDAA6AAggAiABNgIEIAJBADoACSACQQA2AgAgAiAAKAIANgIMIAIgAkEMakH9BBCDC0GAhpsBQSoQgwsQ9w4hASACQRBqJAAgAQtiAQJ/IAAoAghBOGwhAiAAKAIEIQADQAJAAkAgAkUNAAJAIAAoAgAiA0EBRg0AIANBCUcNAiABIABBCGoQmx0MAgsgASAAQQhqELkGDAELDwsgAEE4aiEAIAJBSGohAgwACwtrAAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBgUACyABKAIUIABBCGoQ/A0aDwsgAEEEaiABEIcZDwsgAEEEaiABENEhDwsgAEEEaiABEJEEDwsgAEEEaiABEOceDwsgAEEEaiABENAhCwtrAQR/IAAoAgQhAQJAIAAoAggiAkUNACABIQMDQAJAAkAgAygCAEEHRw0AIANBEGooAgAiBBCqASAEQcAAQQgQnhIMAQsgAxDhCgsgA0EoaiEDIAJBf2oiAg0ACwsgACgCACABQQhBKBCvEQtsAQF/IwBBMGsiAiQAIAJBAjYCDCACQfzhmwE2AgggAkICNwIUIAJBFDYCLCACQZkFNgIkIAIgADYCKCACIABBDGo2AiAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqELceIQAgAkEwaiQAIAALagEDfyMAQRBrIgIkACACQQhqIgMgAUEkaikCADcDACACIAEpAhw3AwBBEBCTHyIEQQhqIAMpAwA3AgAgBCACKQMANwIAIAFBBGoQqx0gARDnICAAQYCKgAE2AgQgACAENgIAIAJBEGokAAtnAQF/IABBDGoiASgCACAAQRBqKAIAENIZIAAoAgggASgCAEEEQQwQtREgACgCFCAAQRhqKAIAQQRBBBC1EQJAIABBf0YNACAAIAAoAgQiAUF/ajYCBCABQQFHDQAgAEEsQQQQnhILC2oBAn8gAUEAIAEoAggiBCAEQQFGIgQbNgIIAkAgBA0AIAAgAiADELUPIAEQ6xEPCyABKAIEIQUgASgCACEEIAEQ8yACQCADRQ0AIAQgAiAD/AoAAAsgACADNgIIIAAgBDYCBCAAIAU2AgALYgECfwJAAkACQCABKQMApyICQQNxDQAgAkEYaiEBIAIoAhAhAgwBCyACwCIDQfABcUEEdiECIANBf0wNASABQQFqIQELIAAgAjYCBCAAIAE2AgAPCyACQQdBiNiCARCPIAALYgECfwJAAkACQCABKQMApyICQQNxDQAgAkEYaiEBIAIoAhAhAgwBCyACwCIDQfABcUEEdiECIANBf0wNASABQQFqIQELIAAgAjYCBCAAIAE2AgAPCyACQQdBsNiCARCPIAALZgECfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBBBCgFyAAKAIIIQILIAIgAWohAyAAKAIEIAJBAnRqIQIDQCACQYCAgIB4NgIAIAJBBGohAiABQX9qIgENAAsgACADNgIIC18BAX8CQCAAKAIMIAFsIAJqIgJBBXYiASAAKAIIIgNPDQACQCAAKAIEIAFBAnRqIgEoAgAiA0EBIAJ0IgJxIgANACABIAMgAnI2AgALIABFDwsgASADQfSkhAEQsxEAC20BA38CQEEAKALg8J0BIgFFDQAgAUEgahDVEiECAkAgASgCLCIDIAEoAiRHDQAgAUEkahCoFgsgASgCKCADQQJ0aiAANgIAIAJBADoAACABIANBAWo2AiwgAw8LQeCQmwFByABBiJKbARCMIQALbgEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQYCAgIB4Rg0AIAIgADYCDCABQaCamgFBESACQQxqQbgDEKQLIQAMAQsgAiAAQQRqNgIIIAFBrI+aAUEIIAJBCGpBuQMQpAshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQlHDQAgAiAAQQhqNgIMIAFBmouaAUEEIAJBDGpB3wMQpAshAAwBCyACIAA2AgggAUGQi5oBQQogAkEIakGNBBCkCyEACyACQRBqJAAgAAtpAQJ/IwBBEGsiAiQAIABBCGohAwJAAkAgACgCAEEBRw0AIAIgAzYCDCABQdT3mQFBAyACQQxqQYcDEKQLIQAMAQsgAiADNgIIIAFBtdabAUEFIAJBCGpB3AIQpAshAAsgAkEQaiQAIAALagEBfyMAQRBrIgIkAAJAAkAgACgCACIAKAIAQQdGDQAgAiAANgIMIAFBxYKaAUEFIAJBDGpBxQQQpAshAAwBCyACIABBCGo2AgggAUG8k5oBQQsgAkEIakHGBBCkCyEACyACQRBqJAAgAAtqAQF/IwBBEGsiAiQAAkACQCAAKAIAIgAoAgBBBUcNACACIABBBGo2AgwgAUHNjpoBQQ0gAkEMakHPAxCkCyEADAELIAIgADYCCCABQYT+mQFBByACQQhqQd4EEKQLIQALIAJBEGokACAAC24BAX8jAEEQayICJAACQAJAIAAoAgAiACgCAEGAgICAeEcNACACIABBBGo2AgwgAUHW1psBQQQgAkEMakHHAhCkCyEADAELIAIgADYCCCABQeOCmgFBCSACQQhqQd0DEKQLIQALIAJBEGokACAAC2sBAn8jAEEQayIBJAACQAJAA0AgAUEIaiAAEMALAkAgASgCDEGAgMQAIAEoAghBAXEbIgJBdmoOBAIBAQIACyACQdi/f2pBAkkNASACQYCAxABHDQALQQAhAgwBC0EBIQILIAFBEGokACACC2YBAn8gACgCCEEGdCECIAAoAgQhAwJAA0AgAkUNASADIAEQjx4gAkFAaiECIANBwABqIQMMAAsLIAAoAhAgACgCFCABEK4aIABBGGogARD4HCABIABBPGoQ0xcgAEHAAGogARD1HgtxAQF/AkAgACgCACIBQQpGDQACQAJAAkACQAJAAkAgAUF+aiIBQQEgAUEISRsOCAECAwQGBgUAAQsgAEEEahDfHQ8LIAApAwgQxh0PCyAAEPocDwsgACkDCBDQHQ8LIAApAwgQxh0PCyAAKAIEEIUeCwtuAQJ/IAEoAgAhAiABQQA2AgACQCABLQBMDQAgASgCBCEDIAEoAjQgASgCHCABKAIgENofAkAgASgCREUNACABQQA2AkAgASABKAI8QQFqNgI8CyABQQE6AEwgAkUNACABIAMQrAULIABBBDoAAAtXAQF+AkACQCADQcAAcQ0AIANFDQEgAiADQT9xrSIEhiABQQAgA2tBP3GtiIQhAiABIASGIQEMAQsgASADQT9xrYYhAkIAIQELIAAgATcDACAAIAI3AwgLVwEBfgJAAkAgA0HAAHENACADRQ0BIAJBACADa0E/ca2GIAEgA0E/ca0iBIiEIQEgAiAEiCECDAELIAIgA0E/ca2IIQFCACECCyAAIAE3AwAgACACNwMIC2UBAn8jAEEQayICJAAgAiABNgIIAkACQCABEIQdQf8BcSIDQQJGDQAgACADOgABQQAhAwwBCyAAIAJBCGogAkEPakGAgIABENkGNgIEQQEhAwsgACADOgAAIAEQkh8gAkEQaiQAC2EBAX8jAEEgayICJAACQCAAKAIIQQJGDQAgAiABNgIIIAIgADYCDCACIAJBH2o2AhggAiACQQxqNgIUIAIgAkEIajYCECAAQQhqIAJBEGpBkNaCARCRBgsgAkEgaiQAIAALYAECfyMAQRBrIgIkAAJAAkAgAA0AQQAhACACQQxqIQMMAQsgAkEBNgIMIAJBCGohAwsgAyAANgIAAkAgAigCDCIARQ0AIAIoAggiA0UNACABIAMgABCeEgsgAkEQaiQAC2QBBH8jAEEQayICJAAgAC0ADCEDIAJBBGogACgCBCAAKAIIQQoQvgEg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DAELIAJBCGogASgCBCIBKAIAIAEoAgQoAiQRBwAgAigCDCEDIAIoAgghAQsgACADNgIEIAAgATYCACACQRBqJAALXAEBfwJAIAAoAggiAyAAKAIARw0AIAAgAhCpFgsgACADQQFqNgIIIAAoAgQgA0EYbGoiACABKQMANwMAIABBCGogAUEIaikDADcDACAAQRBqIAFBEGopAwA3AwALWgECfyMAQRBrIgIkAAJAAkAgACgCACIDQQFqQX5xIANGDQAgAkEIaiAAELgZIAIoAgwhACACKAIIIQMMAQsgACgCCCEACyABIAMgABDtBSEDIAJBEGokACADC1wBA38CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBAnYhAQNAIAIoAgAiA0EIahCbAyADQSBBCBCeEiACQQRqIQIgAUF/aiIBDQALCyAAKAIIIAAoAgBBBEEEEK8RC10BA38CQCAAKAIMIgEgACgCBCICRg0AIAEgAmtBBHYhASACQQxqIQIDQCACKAIAIgMQqgEgA0HAAEEIEJ4SIAJBEGohAiABQX9qIgENAAsLIAAoAgggACgCABDEIAtnAQF/IwBBEGsiAiQAIAIgAEEUajYCDCABQbXWmwFBBUHQ95kBQQQgAEEIakGBAkGw/JkBQQQgAEEQakGAA0H5/ZkBQQMgAEGwAkH8/ZkBQQggAkEMakGGAxD4CyEAIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIgADYCCCABQZeVmgFBDyACQQhqQZ0EEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIgADYCCCABQdyLmgFBCiACQQhqQaQDEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtADRBBEYNACACIAA2AgwgAUHX/ZkBQQYgAkEMakG2AxCkCyEADAELIAIgADYCCCABQduSmgFBDCACQQhqQcoDEKQLIQALIAJBEGokACAAC2IBAX8jAEEQayICJAACQAJAIAAtABRBAkYNACACIAA2AgwgAUG11psBQQUgAkEMakHcAhCkCyEADAELIAIg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AyACQeAAQQgQnhIgAUEMQQQQnhILC1wBA38jAEEQayIDJAAgA0EIaiACQQFBAUG84JsBENgUIAMoAgghBCADKAIMIQUCQCACRQ0AIAUgASAC/AoAAAsgACACNgIIIAAgBTYCBCAAIAQ2AgAgA0EQaiQAC1oBAn8jAEEQayICJAACQAJAIAEtABRBAkcNACABKAIMIQMgASgCCCEBDAELIAJBCGogARCdFCACKAIMIQMgAigCCCEBCyAAIAE2AgAgACADNgIEIAJBEGokAAtuAQF+AkACQAJAAkACQAJAIAAoAgAOBgECAgMEBQALIAApAxAhASAAKQMIEMYdIAEQxh0PCyAAKQMIIAApAxgQ1iELDwsgACkDGBCnHw8LIAApAxAgACgCGBDXIQ8LIAApAwgQxh0gACkDEBDGHQtgAQF/IwBBEGsiASQAAkAgACgCAA0AIAEgACgCBBCBECAAELcfIABBCGogAUEIaikCADcCACAAIAEpAgA3AgAgACgCAA0AQbKjmwFBKEGA2JsBEN0XAAsgAUEQaiQAIAALWAEDfyMAQRBrIgEkABC4HSECIAAtAAwhAyABIABBBGooAgAgAEEIaigCABDcEiACIAEpAgA3AgAgASADOgAMIAJBCGogAUEIaikCADcCACABQRBqJAAgAgtXAQN/IwBBEGsiBCQAQQAhBUEAIQYCQCABLQDIAUESRw0AIARBCGogASACIAMQvwIgBCgCCEEBcSEGIAQoAgwhBQsgACAFNgIEIAAgBjYCACAEQRBqJAALWQIBfwF+IwBBEGsiAyQAIANBCGogAiABKAIIIAFBABDKBgJAAkAgAy0ACEEERg0AIAMpAwgiBEL/AYNCBFENACAAIAQ3AgAMAQsgAEEEOgAACyADQRBqJAALYwACQAJAIAEgAkGah4ABQQYQmRwNAAJAIAEgAkGgh4ABQQgQmRwNACAAIAEgAkGoh4ABQQIQgxA2AgRBASECDAILIABBAToAAUEAIQIMAQtBACECIABBADoAAQsgACACOgAAC1kBAX8jAEEgayIDJAACQCABQf//A0sNACAAIAE7AQQgAEEANgIAIANBIGokAA8LIANBADYCGCADQQE2AgwgA0GwiYABNgIIIANCBDcCECADQQhqIAIQhRsAC2EBBH8gACgCACECIAAoAgQhA0EAIQRBACEFAkAD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AyACIQQCQCABKAKIAiIFRQ0AIAJBAWohAyABLwGQAyEECyABQQhByANBmAMgAhsQox4gACAFNgIAIAAgBK1CIIYgA62ENwIEC1ABAn8jAEEQayIBJAACQCAAKAIQIgJFDQAgAUEEaiAAKAIEIAAoAgggAkEBahCRDyAAKAIMIAEoAgxrIAEoAgQgASgCCBCjHgsgAUEQaiQAC1IBAn9BACECAkAgACgCACgCACIDKAIAIAAoAgQoAgAgAUEEdGsiAEFwaigCAEcNACADKAIIIAMoAgwgAEF4aigCACAAQXxqKAIAEJkcIQILIAILWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEMUJDwsgACABIAIQnxQLVAEBf0EALQDA8Z0BGgJAQSAQhQEiAw0AAAsgAyABNgIEIAMgADYCACADIAIpAwA3AwggA0EQaiACQQhqKQMANwMAIANBGGogAkEQaikDADcDACADC1gBAX8jAEEQayICJAAgAiAAQRBqNgIMIAFB1PeZAUEDQdD3mQFBBCAAQQhqQYECQYD4mQFBBSAAQcgDQYX4mQFBAyACQQxqQckDEK0MIQAgAkEQaiQAIAALWAEBfyMAQRBrIgIkACACIAA2AgwgAUHjgpoBQQlB0PeZAUEEIABBDGpBgQJBsPyZAUEEIABBFGpBgANB7IKaAUEFIAJBDGpB3gMQrQwhACACQRBqJAAgAAt0AQF8RAAAAAAAAPC/IQECQCAAvUL///////////8Ag0L/////////9/8AVQ0AIACdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBBoqEgAKYiAEQAAAAAAADwQaAgACAARAAAAAAAAAAAYxv8A0F/c7chAQsgAQtYAQF/IwBBIGsiACQAIABBoOudATYCCCAAQaDrnQE2AgwgACAAQR9qNgIYIAAgAEEMajYCFCAAIABBCGo2AhBBqOudASAAQRBqQZTzmgEQkQYgAEEgaiQAC0sBA38jAEEQayICJAAgAkEIaiABKAIAEL4DIAAgAigCDCIDIAEoAgwiBCADIARJGyADIAQgAyAESxsQvRggASAAEMshIAJBEGokAAtPAQN/IwBBEGsiAiQAQQAhA0EAIQQCQCABKAIAQQJGDQAgAkEIaiABEIURIAIoAgwhAyACKAIIIQQLIAAgAzYCBCAAIAQ2AgAgAkEQaiQAC08BA38jAEEQayICJABBACEDQQAhBAJAIAEoAgBBB0YNACACQQhqIAEQ0w0gAigCDCEDIAIoAgghBAsgACADNgIEIAAgBDYCACACQRBqJAALWQEBfyABKAIMIQICQAJAAkACQCABKAIEDgIAAQILIAINAUEBIQFBACECDAILIAINACABKAIAIgEoAgQhAiABKAIAIQEMAQsgACABEMUJDwsgACABIAIQzxMLUAECfyMAQRBrIgMkACABIAEoAngiBCACcjYCeCADQQhqIAEQswsgAygCCCECIAEgBDYCeCADKAIMIQEgACACNgIAIAAgATYCBCADQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H//3txNgJ4IAJBCGogARCzCyACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtRAQN/IwBBEGsiAiQAIAEgASgCeCIDQYAgcjYCeCACQQhqIAEQuwQgAigCCCEEIAEgAzYCeCACKAIMIQEgACAENgIAIAAgATYCBCACQRBqJAALUgEDfyMAQRBrIgIkACABIAEoAngiA0H/v39xNgJ4IAJBCGogARCZBCACKAIIIQQgASADNgJ4IAIoAgwhASAAIAQ2AgAgACABNgIEIAJBEGokAAtKAQN/QQAhAwJAIAJFDQACQANAIAAtAAAiBCABLQAAIgVHDQEgAEEBaiEAIAFBAWohASACQX9qIgJFDQIMAAsLIAQgBWshAwsgAwtTAQN/IAAoAgghASAAKAIEIgIhAwJAA0AgAUUNAQJAIAMoAgBBgICAgHhGDQAgAxCpFQsgAUF/aiEBIANBIGohAwwACwsgACgCACACQQRBIBCvEQtQAAJAAkAgAUF/TA0AAkACQCABDQBBASECDAELQQAtAMDxnQEaIAFBARCAGiICRQ0CCyAAIAE2AgggACACNgIEIAAgATYCAA8LIAIQ0xkLAAtSAQF/AkACQAJAIAJFDQBBACEDIAEoAtQCIgFFDQFBACECDAILQQAhAiABKALQAiIBDQFBASEDC0EBIQIgAxDHHCEBCyAAIAE2AgQgACACNgIAC1UBAX9BDCECAkAgAS0AC0H+AUcNACABKAII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IAFBCkY6AAAgAyABIAIoAhARCAALRgECfyMAQRBrIgMkACABIAIQIyECIANBCGoQwhsgAygCDCEBIAAgAygCCEEBcSIENgIAIAAgASACIAQbNgIEIANBEGokAAtNAQF/QQEhAgJAAkAgAEH/AXFBAUYNACABIQICQAJAAkAgAUH/AXEOAwADAQALIABB/wFxDQEMAwsgAEH/AXENAgtBACECCyACDwtBAgtEAQJ/AkAgACgCBCIBRQ0AIAAoAgAiAiAAKAIMEJkMIAEgAUEMbEETakF4cSIAakEJaiIBRQ0AIAIgAGsgAUEIEJ4SCwtSAQF/IwBBEGsiASQAAkBBAiAAdCIAQYCAgMAASQ0AIAEgAK03AwhB1KSbAUErIAFBCGpBiOmDAUG8hYQBEOgPAAsgAUEQaiQAIABBgICAgAJyC0wBAX8CQAJAIAFFDQBBACECAkAgAC0AAEECcUUNACABQQxNDQIgACgACSECCyACDwtBAEEAQazdhAEQsxEAC0ENIAFBrN6EARCPIAALTwEBfyAAKAKwASECIABBADYCsAECQCACQQFxDQBBhICEAUEfQaSAhAEQ8hIACyAAIAAoAnAgACgCtAEiAiABayABIAJrIAIgAUsbajYCcAtJAQF/IAAgASgCACICIAEoAgQiASgCCEF/akF4cWpBCGogASgCFBEHACACIAIoAgAiAEF/ajYCAAJAIABBAUcNACACIAEQ6g8LC14BAX8gASgCACIBIAEoAgAiAkEBajYCAAJAIAJBf0oNAAALIAAgARCRFCAAQYCAgIB4NgLUBSAAQYCAgIB4NgLoBCAAQYCAgIB4NgLYBCAAQQI2AsgEIABBAjYCyAELXgEBfyABKAJIIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoApADIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICAgHg2AugEIABBgICAgHg2AtgEIABBAjYCyAQgAEECNgLIAQtfAQF/IAEoAoACIgEgASgCACICQQFqNgIAAkAgAkF/Sg0AAAsgACABEJEUIABBgICAgHg2AtQFIABBgICA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KAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARDLISACQXBqIQIgAEEQaiEADAALCws8AQJ/IAAgAhD/GyAAKAIIIQMCQCACQThsIgRFDQAgACgCBCADQThsaiABIAT8CgAACyAAIAMgAmo2AggLOgEBfyAAKAIIQQR0IQIgACgCBCEAAkADQCACRQ0BIABBDGogARCrBCACQXBqIQIgAEEQaiEADAALCws9AQJ/AkADQCABIgMgADYCDCADKAIQIgRFDQEgBEEEaiEBIAQoAgBBCEYNAAsLIANBEGoQtR8gAyACNgIQC0UBAX8CQAJAAkAgACgCACIAKAIADgIAAQILIAAoAggiAUUNASAAKAIEQQEgARCjHgwBCyAAQQRqEO8UCyAAQRRBBBCeEgs8AQF/IAAtABQhASAAQQE6ABQCQAJAIAENACAAQXhqIgAgACgCAEEBaiIBNgIAIAFFDQEgABCcIgsPCwALOgECfyMAQRBrIgEkACABQQRqIAAQ9wwgASgCCCIAIAEoAgwQCiECIAEoAgQgABCwICABQRBqJAAgAgs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBIEHwjIABEIMUIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs+AgF/AX4jAEEQayICJAAgAkEIaiABQQhBEEGQjYABEIMUIAIpAwghAyAAQQA2AgggACADNwIAIAJBEGokAAs/AQF/IwBBEGsiAiQAIAIgACgCACgCADYCDCABQdbEgAFBDkHYq5cBQQMgAkEMakEnEI4NIQAgAkEQaiQAIAALOgEBfyMAQRBrIgIkACACQQA2AgwgAiABIAJBDGoQwBUgACACKAIAIAIoAgQQpgQhASACQRBqJAAgAQs4AAJAAkAgASACSw0AIAIgA00NASACIAMgBBCPIAALIAEgAiAEEKkgAAsgACACNgIEIAAgATYCAAtBAQF/IAAoAgAhAAJAIAEoAggiAkGAgIAQcQ0AAkAgAkGAgIAgcQ0AIAAgARCcIA8LIAAgARCzDw8LIAAgARC0Dws7AgF/AX4jAEEQayIDJAAgA0EIaiABQQFBASACENsTIAMpAwghBCAAQQA2AgggACAENwIAIANBEGokAAs7AgF/AX4jAEEQayIDJAAgA0EIaiABQQRBBCACENsTIAMpAwghBCAAQQA2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JAAgAUEIakEEIAAQyBwCQCABKAIIIgANAAALIAFBEGokACAACzQBAX8jAEEQayIDJAACQCAADQBBiM+YAUEOIANBD2pBtNKAASACEOgPAAsgA0EQaiQAIAELMQEBfyMAQRBrIgIkACACQQhqIAAQ4RcgASACKAIIIAIoAgwQ7QUhACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQdS0mAFBESACQQxqQcIAEKQLIQAgAkEQaiQAIAALMgEBfyMAQRBrIgIkACACIAA2AgwgAUG8zZkBQQQgAkEMakEyEKQLIQAgAkEQaiQAIAALKwACQCAAIAFBAnRqQXxqIgANAEGwkoMBEJsgAAsgAa1CBYYgACgCAGetfQs0AQF/AkAgACgCCCIDIAAoAgBHDQAgACACEMENCyAAIANBAWo2AgggACgCBCADaiABOgAACy0AAkAgAyABTw0AIAEgAyAEEKMgAAsgACADIAFrNgIEIAAgAiABQQJ0ajYCAAstAAJAIAMgAU8NACABIAMgBBCjIAALIAAgAyABazYCBCAAIAIgAUECdGo2AgALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHF7oMBQQogAkEMakH8ABCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBkPWEAUEGIAJBDGpBpQEQpAshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQfz0hAFBByACQQxqQacBEKQLIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHS9IQBQRIgAkEMakGoARCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBwPSEAUEGIAJBDGpBqwEQpAshACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQdbvhAFBCSACQQxqQa0BEKQLIQAgAkEQaiQAIAALNgEBf0EALQDA8Z0BGgJAQQwQhQEiAQ0AAAsgASAAKQIANwIAIAFBCGogAEEIaigCADYCACABCzIBAX8jAEEQayICJAAgAiAANgIMIAFBpO+EAUELIAJBDGpBMhCkCyEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBmu+EAUEKIAJBDGpBwgAQpAshACACQRBqJAAg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Rw0AIAAgAiABEJIVRSEECyAECyUBAX8gASgCACECIAFBADYCACABKAIEIQEgAhCFHSAAIAEQjhILIAEBf0EAIQQCQCABIANHDQAgACACIAEQkhVFIQQLIAQLJQEBfyABKAIAIQIgAUEANgIAIAEoAgQhASACEIUdIAAgARDRAQsfACAAIAIQgQwgAEEQaiACQRBqEIEMIAJBCCABEJUJCx4AIAAoAiRBACAAKAIcGyAAKAIUIAAoAghqQQJ0agsiAQF/AkAgASAAKAIAIAAoAggiAmtNDQAgACACIAEQwgoLCyABAX9BACEEAkAgASADSQ0AIAIgACADEJIVRSEECyAECyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBEPAAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARDgALJAACQCAADQBBxP6cAUEyEOQgAAsgACACIAMgBCABKAIQEQ4ACyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBEOAAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARLwALJAACQCAADQBBxP6cAUEyEOQgAAsgACACIAMgBCABKAIQETkACyQAAkAgAA0AQcT+nAFBMhDkIAALIAAgAiADIAQgASgCEBE2AAskAAJAIAANAEHE/pwBQTIQ5CAACyAAIAIgAyAEIAEoAhARDwALIQACQCACRQ0AIAEgAhDZHyEBCyAAIAI2AgQgACABNgIACyIBAX8gACAAKAIAIgFBf2o2AgACQCABQQFHDQAgABDdEgsLIQAgACACEK4FIABBwABqIAJBwABqEK4FIAJBCCABEKwGCyQAIAAoAgAgACgCBEEEQQQQtREgACgCDCAAKAIQQQRBBBC1EQsfACAAIAIQigggAEEgaiACQSBqEIoIIAJBCCABEIYICx8AIAAgAhCJCCAAQQhqIAJBCGoQiQggAkEIIAEQgQgLHgAgASgCACACQQR0a0FwaigCAEHdy92eeWxBD3etCyYBAX9BAC0AwPGdARoCQEHAABCFASIBDQAACyABIAAoAgAQRCABCyQAIABBADYCECAAQQA6ABQgACABKQMINwMIIAAgASkDADcDAAslACABKAIAIAAtAABBAnRB5NydAWooAgBBBiABKAIEKAIM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NgIEIABBkNubATYCAAshACAAQoaOrZTj9K2WzQA3AwggAELB0czxy7CL0UE3AwALIQAgAELS98LKhY3E6Bk3AwggAEKh2uHa5tywu75/NwMACyAAIABCitrjnYXusOxqNwMIIABCno+sgc6Z2fZKNwMACyEAIABC37y4td/S3s86NwMIIABCvMPzmOfznfmBfzcDAAsTACAAQbDemwE2AgQgACABNgIACxMAIABB9N2bATYCBCAAIAE2AgALEwAgAEEoNgIEIABBwNGbATYCAAsNACAAIAFBAUEBEK8RCwwAIAAgASACEL0RAAsMACAAQYEBEDFBAEcLCwAgACABEARBAUYLCwAgACABEAhBAEcLDQAgACABQQRBBBCvEQsNACAAIAFBCEEgEK8RCw8AIAAoAgAgACgCBBCOIAsNACAAIAFBAUEBELARCw8AIAAoAgAgACgCBBCoHgsNACAAIAEgAhDFH0EACxAAQQAtAMDxnQEaIAAQhQELDQAgACABQQRBGBCwEQsPAEG0jYEBQSsgABDdFwALDgAgACgCAEEBIAEQxwcLDQAgACABQQRBEBCvEQsNACAAIAFBBEEIEK8RCw0AIAAgAUEEQRQQrxELDgAgACABQQRBwAAQrxELDQAgACABQQRBHBCvEQsOACAAKQMAQQEgARC1BwsMACAAIAEgAhC8EQALDQAgACABQQFBARC1EQsNACAAIAFBBEEEELURCw0AIAAgAUEEQQwQtRELDAAgACABIAIQdUEACw0AIAAgASACEKQBQQALDAAgACABIAIQvhEACwwAIABBDGogARCCDAsNACAAIAFBAUEBELkRCw8AIAAoAgAgACgCBBCrIAsNACAAIAEgAhCHGkEACw0AIAAoAgAoAghBAUYLDAAgASAAIAIQvxEACw0AIAAgAUEBQQEQnRILDQAgACABQQRBBBCdEgsPACAAKAIAIAAoAgQQpCALDQAgACABQQRBHBDAEQsOACAAKAIAQQJBARCeEgsNACAAIAFBBEEQEMARCw0AIAAgAUEEQQgQtRELDgAgACgCAEEMQQQQnhILDwAgACgCACgCACABEMgJCw0AIAAgAUEBQQEQlRILDQAgACABQQhBGBCVEgsPACAAKAIAIAAoAgQQuSALDQAgASAAQf8BcRDOHAsNACAAIAFBCEEYEK8RCw0AIAAgAUEIQTgQrxELDQAgACABQQhBIBCvEQsNACAAIAFBBEEEEK8RCw0AIAAgAUEIQSgQrxELDQAgACABQQhBMBCvEQsOACAAIAFBCEHYABCvEQsNACAAIAFBBEEQEK8RCw0AIAAgAUEEQQwQrxELDgAgACABQQhByAAQrxELDgAgACABQQhBwAAQrxELDQAgACABQQRBGBCvEQsOACAAIAFBCEHQABCvEQsNACAAIAFBBEEMEK8RCw8AIAAoAgAgACgCBBCOIAsNACAAIAIgASADEJQdCw0AIAAgAiABIAMQkx0LDwAgACgCACgCACABEJESCw8AIAAoAgAoAgAgARCABQsPACAAKAIAKAIAIAEQoQoLDQAgACABQQhBEBCvEQsSAEGyo5sBQShB5KGaARDdFwALDwAgACgCACAAKAIEEI4gCw8AIAAoAgAgACgCBBCOIAsNACAAIAFBBEEEEK8RCw8AIAAoAgAgACgCBBCOIAsPACAAEOseIAAoAgQQ8h8LDwAgACgCACAAKAIEEJciCw0AIAAgASgCACACEHMLDQAgACABKAIAIAIQRQsOACAAIAEoAgAgAhCoBgsNACABIABBBEEEEK8RCw0AIAAgASgCACACEEwLDwAgACgCACAAKAIEEJciCw8AIAAoAgggACgCDBCXIgsNACAAIAFBBEEMEK8RCwsAIAAjAGokACMACwkAIAAQA0EBRgsJACAAEAdBAUYLCQAgACABEDQACwsAIAAgARDxEkEACwwAIAAQ5R0gABDnIAsLACAAQSxBBBCeEgsJACAAEClBAEcLCQAgABAwQQBHCw4AIAFB4auXAUECEO0FCwsAIAEgACgCtAJNCwoAIAAgASACEFYLCwAgASAAKALQAk0LCgAgACABIAIQfAsLACABIAAoAsgCTQsLACAAIAEgAhCOAQsLACAAIAEgAhDKAQsLACAAKAIAIAEQagsLACAAQQxBBBCeEgsLACAAIAIgAxC1DwsLACACIAAgARDtBQsMACAAKAIAIAEQnxALCgAgABD4DxpBAQsOACABQeGrlwFBAhDtBQsJACAAEB1BAUYLDAAgACgCACABEO4MCwwAIAAoAgAgARD1BgsMACAAKAIAIAEQxhwLDAAgACgCACABEJwKCwoAIABBMGoQ5BcLDAAgACgCACABEMYcCwwAIAAoAgAgARCXEwsMACAAKAIAIAEQmBMLDAAgACgCACABEMgJCwwAIAAoAqQNQcQCagsLACAALQCsCkEBcQsMACAAKAKkDUHEAmoLDAAgACgCpA1BxAJqCwsAIAAoAowDQQJLCwsAIAAoAowDQQJLCwwAIAAoAgAgARD/DQsOACABQeGrlwFBAhDtBQsMACAAKAIAIAEQyx8LCgAgACABEI0hAAsKACAAIAEQmBsACwwAIAAoAgAgARDGHAsMACAAKAIAIAEQjQwLDAAgACABKQIANwMACwsAIAAgAUEEEPUXCwoAIAAQ1wIaQQELDAAgACgCACABEPERCwwAIAAoAgAgARCiGgsMACAAKAIAIAEQyBcLDAAgACgCACABELAbCwwAIAAoAgAgARD/DQsKACAAIAGtEJwPCwoAIAAQ+QwaQQELDAAgACgCACABENcfCwoAIAAQ1AwaQQELCwAgACABEOgJQQALCwAgACABIAIQhRULCwAgASAAIAIQtCELDAAgACABQZMCEPABCwwAIAAgAUGUAhDwAQsMACAAIAFBlQIQ8AELDAAgACABQZYCEPABCwwAIAAgAUGXAhDwAQsMACAAIAFBmAIQ8AELDAAgACABQZkCEPABCwwAIAAgAUGaAhDwAQsMACAAIAFBmwIQ8AELDAAgACABQZwCEPABCwwAIAAgAUGdAhDwAQsMACAAIAFBngIQ8AELDAAgACABQZ8CEPABCwwAIAAgAUGgAhDwAQsMACAAIAFBoQIQ8AELDAAgACABQaICEPABCwwAIAAgAUGjAhDwAQsMACAAIAFBpAIQ8AELDAAgACABQaUCEPABCwwAIAAgAUGmAhDwAQsMACAAIAFBpwIQ8AELCwAgACABIAIQhRULCwAgASAAIAIQnSELCwAgASAAIAIQtCELDAAgACgCACABEPMYCwwAIAAoAgAgARD3CAsMACAAKAIAIAEQ6B0LDAAgACgCACABENsQCwwAIAAoAgAgARD6CAsMACAAKAIAIAEQoRoLDAAgACgCACABELwJCwwAIAAoAgAgARDcAgsMACAAKAIAIAEQ1QQLDAAgACgCACABEIAFCwwAIAAoAgAgARC2DAsMACAAKAIAIAEQkRILDAAgACgCACABEKEKCwwAIAAoAgAgARCcIAsMACAAIAEpAhA3AwALDAAgACgCACABEI0MCwwAIAAoAgAgARCNDAsM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AAC5AgAAugIAACwAAAAEAAAAuwIAALoCAAAsAAAABAAAALwCAAC7AgAALAUgAL0CAAC+AgAAvwIAAMACAADBAgAAwgIAAMMCAADEAgAAxQIAAMYCAADHAgAAQ291bGRuJ3QgZGVzZXJpYWxpemUgaTY0IG9yIHU2NCBmcm9tIGEgQmlnSW50IG91dHNpZGUgaTY0OjpNSU4uLnU2NDo6TUFYIGJvdW5kcwD0riAAAQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAAAACQYgAGQAAADtAQAAEQAAAAkGIABkAAAA8wEAABUAAAAJBiAAZAAAAOEBAAARAAAACQYgAGQAAADjAQAAFQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXBfdGhyb3coKWAgb24gYW4gYEVycmAgdmFsdWV2YWx1ZSBpcyBtaXNzaW5nTWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4dF9rZXkvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9jb3JlLTEuMC4yMjgvc3JjL2RlL3ZhbHVlLnJzHQcgAGcAAABnBQAAGwAAAGJpbmRpbmdzL2JpbmRpbmdfdHlwZXNjcmlwdF93YXNtL3NyYy9lcnJvcl9yZXBvcnRlci5ycwAAlAcgADYAAABfAAAAHAAAAJQHIAA2AAAAegAAADYAAACUByAANgAAAIwAAAAeAAAAlAcgADYAAACRAAAAFgAAAJQHIAA2AAAAdgAAABoAAABGYWlsZWQgdG8gcmVhZCBjb250ZW50cyBmb3IgbGFiZWwAAAAcCCAAIQAAADxub25lPiAgWyBgYCAob2Zmc2V0OiAsIGxlbmd0aDogXQoAAE4IIAADAAAAUQggAAIAAABTCCAACwAAAF4IIAAKAAAAk/0gAAMAAABoCCAAAgAAAGNhbm5vdCBjcmFzaCBi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AAByAwAAOgAAADgfIABtAAAAhAMAAEYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcmVtYXBwZXIucnNgISAAbAAAAHIAAAASAAAAYCEgAGwAAACMAAAAJAAAAGAhIABsAAAAkQAAACAAAABgISAAbAAAAJMAAAAdAAAAYCEgAGwAAACZAAAAHwAAAFBhdHRlcm5zYnlfaWRvcmRlcnRvdGFsX3BhdHRlcm5fYnl0ZXNpbXBtZW1vcnlfdXNhZ2VQYWNrZWRSYXJlQnl0ZU9mZnNldFJhcmVCeXRlc09uZWJ5dGUxUmFyZUJ5dGVzVHdvb2Zmc2V0c2J5dGUyUmFyZUJ5dGVzVGhyZWVieXRlM1N0YXJ0Qnl0ZXNPbmVTdGFydEJ5dGVzVHdvU3RhcnRCeXRlc1RocmVlL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3ByaW1pdGl2ZXMucnMAySIgAG4AAADhAgAAAQAAAFN0YXRlSURFcnJvcgAAAAAEAAAABAAAAB4DAAAfAwAADAAAAAQAAAAgAwAAIQMAACIDAABsaWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5yc3wjIAAgAAAALgIAABEAAABsaWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMArCMgABsAAADoAQAAFwAAAAAAAAAAAAAAAQAAACMDAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdGxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAAPiQgABgAAACKAgAADgAAAAAAAAAAAAAAAQAAACQDAABsaWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAeCQgABoAAAC+AQAAHQAAAGxpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAAACkJCAAGQAAAIQB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AQICAQICAgQBDAEBAQcBQQEEAggBBwEcAQQBBQEBAwcBAAIZARkBHwEZAR8BGQEfARkBHwEZAQgAHwYG1QcBEQIHAQIBBQU+IQFwLQoHEAEAHhIsABzkHgIBAAcBBAECAQ8BxTtEAwEDAQAEARsBAgEBAgEBCgEEAQEBAQYBBAEBAQEBAQMBAgEBAgEBAQEBAQEBAQECAQECBAEHAQQBBAEBAQoBEQUDAQUBEQAaBhoGGgAAIAAG3gIADgAPAAAAAAAFAAAAcAAHAC0BAQECAQIBAUgLMBUQAWUHAgYCAgEEIwEeG1sLOgkJARgEAQkBAwEFKwM7CSoYASA3AQEBBAgEAQMHCgIdAToBAQECBAgBCQEKAhoBAgI5AQQCBAICAwMBHgIDAQsCOQEEBQECBAEUAhYGAQE6AQECAQQIAQcDCgIeATsBAQEMAQkBKAEDATcBAQMFAwEEBwILAh0BOgECAgEBAwMBBAcCCwIcAjkCAQECBAgBCQEKAh0BSAEEAQIDAQEIAVEBAgcMCGIBAgkLB0kCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAQADAAQcAx0CHgJAAgEHCAECCwkBLQMBAXUCIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCATAfMQQwCgQDJgkMAiAEAgY4AQECAwEBBTgIAgKYAwENAQcEAQYBAwLGQAABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCwEBLAMwAQIEAgICASQBQwYCAgICDAEIAS8BMwEBAwICBQIBASoCCAHuAQIBBAEAAQAQEBAAAgAB4gGVBQADAQIFBCgDBAGlAgAEQQUAAk8ERgsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkBAQgEAgFfAwIEBgECAZ0BAwgVAjkCAQEBAQwBCQEOBwMFQwECBgEBAgEBAwQDAQEOAlUIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECCGUBAQECBAEFAAkBAvUBCgQEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQIABwEGAQFSFgIHAQIBAnoGAwEBAgEHAQFIAgMBAQEAAgsCNAUFAxcBAAEGDwAMAwMABTsHAAE/BFEBCwIAAgAuAhcABQMGCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFZAGgBwABPQQABP4CAAdtBwBggPAAMAp4AgUBAgMACoYKxgoACnYKBAZsCnYKdgoCBm4NcwoIB2cKaAcHE20KYAp2CkYUAApGCgAUAAPvCgYKFgoACoALpQoGCrYKVgqGCgYKAAEDBgYKxjMCBQA8ThYAHgABAAEZCQ4DAASKCh4IAQ8gCicPAAq8CgAGmgomCsYKFgpWCgAKAAoALQw5EQIAGyQEHQEIAYYFygoACBkHJwlLBRYGoAICEAIuQAk0Ah4DSwVoCBgIKQcABjAKBgoAH54KKgRwB4YegAo8CpAKBxT7CgAKdgoACmYKBhRMDAATXQoAClYd4wpGCgAKZhUAbwAKAApWCoYKAQcACgAXAAoAFAwUbBkAMgAKAAoACvcKAAmACgA7AQMBBEwtAQ8ADQAKAAAAAAAAAQAAAAAAAAAKAAAAAAAAAGQAAAAAAAAA6AMAAAAAAAAQJwAAAAAAAKCGAQAAAAAAQEIPAAAAAACAlpgAAAAAAADh9QUAAAAAAMqaOwAAAAAA5AtUAgAAAADodkgXAAAAABCl1OgAAAAAoHJOGAkAAABAehDzWgAAAIDGpH6NAwBsaWJyYXJ5L2NvcmUvc3JjL251bS9kZWMyZmx0L2RlY2ltYWxfc2VxLnJzALA0IAArAAAAVgAAACcAAACwNCAAKwAAAIgAAAATAAAAsDQgACsAAACwAAAAIAAAALA0IAArAAAAxwAAACUAAACwNCAAKwAAAPQAAAAVAAAAsDQgACsAAAD/AAAAGAAAAAAAAAgBCAMIBhAJEA0QEhgXGB0YJCArIDMgPCBGKFAoWyhnMHMwgDCOOJw4qzi7OMxA3UDvQAJJFUkpST5RU1FpUYBRmFmwWclZ42H9YRhiNGpQam1qi2qqcsly6XIKeyt7TXtwg5ODt4PcgwKMKIxPjHeUn5TIlPKcHAUcBRwFHAUFAgUBAgUGAgUDAQIFAQUGAgUHCAECBQMJAAYCBQEJBQMBAgUJBwYFBgIFBAgIAggBAgUCBAQBBAAGAgUBAgIABwADAQIFBgEAAwUBBQYCBQMABQEHBQcIAQIFAQUCBQgHCAkABgIFBwYCCQMJBAUDAQIFAwgBBAYJBwIGBQYCBQEJAAcDBAgGAwIIAQIFCQUDBgcEAwEGBAAGAgUEBwYIAwcBBQgCAAMBAgUCAwgEAQgFBwkBAAEFBgIFAQEJAgAJAggJBQUABwgBAgUFCQYABAYEBAcHBQMJAAYCBQIJCAACAwICAwgHBgkFAwECBQEECQABAQYBAQkDCAQHBgUGAgUHBAUABQgABQkGCQIDCAIIAQIFAwcCBQIJAAIJCAQGAQkBBAAGAgUBCAYCBgQFAQQJAgMACQUHAAMBAgUJAwEDAgIFBwQGAQUEBwgFAQUGAgUEBgUGBgECCAcDAAcHAwkCBQcIAQIFAgMCCAMABgQDBgUDCAYJBgIICQAGAgUBAQYEAQUDAgEIAgYJAwQIAQQEBQMBAgUFCAIABwYGAAkBAwQGBwQABwICBgUGAgUCCQEAAwgDAAQFBgcDAwcAAwYBAwIIAQIFAQQFBQEJAQUCAggDBgYIBQEIAAYGBAAGAgUHAgcFCQUHBgEEAQgDBAIFCQADAwIAAwECBQMGAwcJBwgIAAcACQEHAQIJBQEGBgABBQYCBQEIAQgJCAkEAAMFBAUIBQYEBwUIAwAABwgBAgUJAAkECQQHAAEHBwIJAggCAwcJAQUAAwkABgIFBAUEBwQHAwUACAgGBAYEAQEICQUHBQEJBQMBAgUCAgcDBwMGBwUEBAMCAwIABQkEBwgHBQkHBgUGAgUBAQMGCAYIAwcHAgEGAQYAAgkHAwkDBwkICAIIAQIFBQYIBAMEAQgIBgAIAAgAAQQIBgkGCAkJBAEEAAYCBQIIBAIBBwAJBAMABAAEAAAHBAMECAQECQcABwADAQIFAQQCAQAIBQQHAQUCAAIAAAMHAQcEAgIECAUDBQEFBgIFBwEABQQCBwMFBwYAAQAAAQgFCAcBAQIEAgYHBQcIAQIFAwUFAgcBAwYHCAgAAAUAAAkCCQMFBQYCAQMDBwgJAAYCBQEHBwYDBQYIAwkEAAACBQAEBgQGBwcIAQAGBggJBAUDAQIFCAgIAQcIBAEJBwAAAQIFAgMCAwMICQAFAwMEBAcCBgUGAgUEBAQACAkCAAkIBQAABgIGAQYBBgkEBQIGBgcCAwYDAggBAgUCAgIABAQGAAQJAgUAAwEDAAgACAQHAgYDAwMGAQgBBgQABgIFAQEBAAICAwACBAYCBQEFBgUEAAQCAwYDAQYGCAAJAAgCAAMBAgUFBQUBAQEFAQIDAQIFBwgCBwACAQEIAQUIAwQABAUEAQABBQYCBQIHBwUFBQcFBgEFBgIICQEDBQEABQkABwkBBwACAgcABQAHCAECBQEDCAcHBwgHCAAHCAEEBAUGBwUFAgkFAwkFCAUBAQMFAgUDCQAGAgUGCQMICAkDCQADCQAHAgIIAwcHBgQHBgkHCQIFBQYHBgIGCQUDAQIFAwQGCQQEBgkFAQkFAwYBBAEICAgCAwgECAkGAgcIAwgBAwQHBgUGAgUBBwMEBwIDBAcFCQcGCAAHAAkEBAEBCQIEBAgBAwkBCQAGBwMIAggBAgUIBgcDBgEHAwcJCAgEAAMFBAcCAAUJBgICBAAGCQUJBQMDBgkBBAAGAgUAALA0IAArAAAAbAEAABsAAACwNCAAKwAAAHEBAAATAAAAAAMGCQ0QExcaHSEkJysuMTU4OwAAAAAAAADwPwAAAAAAACRAAAAAAAAAWUAAAAAAAECPQAAAAAAAiMNAAAAAAABq+EAAAAAAgIQuQQAAAADQEmNBAAAAAITXl0EAAAAAZc3NQQAAACBfoAJCAAAA6HZIN0IAAACilBptQgAAQOWcMKJCAACQHsS81kIAADQm9WsMQwCA4Dd5w0FDAKDYhVc0dkMAyE5nbcGrQwA9kWDkWOFDQIy1eB2vFURQ7+LW5BpLRJLVTQbP8IBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGlicmFyeS9jb3JlL3NyYy9udW0vZGVjMmZsdC9wYXJzZS5ycwAAABA8IAAlAAAArQAAABMAAABsaWJyYXJ5L2NvcmUvc3JjL251bS9kaXlfZmxvYXQucnMAAABIPCAAIQAAAC4AAAAJAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaO8Fv8oYjAAAAge+shVtBbS3uBAAAAR9qv2TtOG7tl6fa9Pk/6QNPGAABPpUuCZnfA/04FQ8v5HQj7PXP0wjcBMTasM28GX8zpgMmH+lOAgAAAXwumFuH075yn9nYhy8VEsZQ3mtwbkrPD9iV1W5xsiawZsatJDYVHVrTQjwOVP9jwHNVzBfv+WXyKLxV98fcgNztbvTO79xf91MFAGxpYnJhcnkvY29yZS9zcmMvbnVtL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ID4gMABAPSAALwAAAHYAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5taW51cyA+IDAAAABAPSAALwAAAHcAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5wbHVzID4gMEA9IAAvAAAAeAAAAAUAAABAPSAALwAAAMIAAAAJAAAAQD0gAC8AAAD7AAAADQAAAEA9IAAvAAAAAgEAABIAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9zdWIoZC5taW51cykuaXNfc29tZSgpAEA9IAAvAAAAegAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9hZGQoZC5wbHVzKS5pc19zb21lKCkAAEA9IAAvAAAAeQAAAAUAAABAPSAALwAAAHIBAAAkAAAAQD0gAC8AAAB3AQAALwAAAEA9IAAvAAAAhAEAABIAAABAPSAALwAAAGYBAAANAAAAQD0gAC8AAABMAQAAIgAAAEA9IAAvAAAADgEAAAUAAADfRRo9A88a5sH7zP4AAAAAysaaxxf+cKvc+9T+AAAAAE/cvL78sXf/9vvc/gAAAAAM1mtB75FWvhH85P4AAAAAPPx/kK0f0I0s/Oz+AAAAAIOaVTEoXFHTRvz0/gAAAAC1yaatj6xxnWH8/P4AAAAAy4vuI3cinOp7/AT/AAAAAG1TeECRScyulvwM/wAAAABXzrZdeRI8grH8FP8AAAAAN1b7TTaUEMLL/Bz/AAAAAE+YSDhv6paQ5vwk/wAAAADHOoIly4V01wD9LP8AAAAA9Je/l83PhqAb/TT/AAAAAOWsKheYCjTvNf08/wAAAACOsjUq+2c4slD9RP8AAAAAOz/G0t/UyIRr/Uz/AAAAALrN0xonRN3Fhf1U/wAAAACWySW7zp9rk6D9XP8AAAAAhKVifSRsrNu6/WT/AAAAAPbaXw1YZquj1f1s/wAAAAAm8cPek/ji8+/9dP8AAAAAuID/qqittbUK/nz/AAAAAItKfGwFX2KHJf6E/wAAAABTMME0YP+8yT/+jP8AAAAAVSa6kYyFTpZa/pT/AAAAAL1+KXAkd/nfdP6c/wAAAACPuOW4n73fpo/+pP8AAAAAlH10iM9fqfip/qz/AAAAAM+bqI+TcES5xP60/wAAAABrFQ+/+PAIit/+vP8AAAAAtjExZVUlsM35/sT/AAAAAKx/e9DG4j+ZFP/M/wAAAAAGOysqxBBc5C7/1P8AAAAA05JzaZkkJKpJ/9z/AAAAAA7KAIPytYf9Y//k/wAAAADrGhGSZAjlvH7/7P8AAAAAzIhQbwnMvIyZ//T/AAAAACxlGeJYF7fRs//8/wAAAAAAAAAAAABAnM7/BAAAAAAAAAAAABCl1Ojo/wwAAAAAAAAAYqzF63itAwAUAAAAAACECZT4eDk/gR4AHAAAAAAAsxUHyXvOl8A4ACQAAAAAAHBc6nvOMn6PUwAsAAAAAABogOmrpDjS1W0ANAAAAAAARSKaFyYnT5+IADwAAAAAACf7xNQxomPtogBEAAAAAACorciMOGXesL0ATAAAAAAA22WrGo4Ix4PYAFQAAAAAAJodcUL5HV3E8gBcAAAAAABY5xumLGlNkg0BZAAAAAAA6o1wGmTuAdonAWwAAAAAAEp375qZo22iQgF0AAAAAACFa320e3gJ8lwBfAAAAAAAdxjdeaHkVLR3AYQAAAAAAMLFm1uShluGkgGMAAAAAAA9XZbIxVM1yKwBlAAAAAAAs6CX+ly0KpXHAZwAAAAAAONfoJm9n0be4QGkAAAAAAAljDnbNMKbpfwBrAAAAAAAXJ+Yo3KaxvYWArQAAAAAAM6+6VRTv9y3MQK8AAAAAADiQSLyF/P8iEwCxAAAAAAApXhc05vOIMxmAswAAAAAAN9TIXvzWhaYgQLUAAAAAAA6MB+X3LWg4psC3AAAAAAAlrPjXFPR2ai2AuQAAAAAADxEp6TZfJv70ALsAAAAAAAQRKSnTEx2u+sC9AAAAAAAGpxAtu+Oq4sGA/wAAAAAACyEV6YQ7x/QIAMEAQAAAAApMZHp5aQQmzsDDAEAAAAAnQycofubEOdVAxQBAAAAACn0O2LZICiscAMcAQAAAACFz6d6XktEgIsDJAEAAAAALd2sA0DkIb+lAywBAAAAAI//RF4vnGeOwAM0AQAAAABBuIycnRcz1NoDPAEAAAAAqRvjtJLbGZ71A0QBAAAAANl337puv5brDwRMAQAAAABsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2dyaXN1LnJzAAAoRCAALgAAAH0AAAAVAAAAKEQgAC4AAACpAAAABQAAAChEIAAuAAAAqgAAAAUAAAAoRCAALgAAAKsAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ICsgZC5wbHVzIDwgKDEgPDwgNjEpAAAAKEQgAC4AAACvAAAABQAAAChEIAAuAAAACgEAABEAAAAoRCAALgAAAEABAAAJAAAAKEQgAC4AAACtAAAABQAAAChEIAAuAAAArAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhYnVmLmlzX2VtcHR5KCkAAAAoRCAALgAAANwBAAAFAAAAKEQgAC4AAAAzAgAAEQAAAChEIAAuAAAAbAIAAAkAAAAoRCAALgAAAOMCAAAmAAAAKEQgAC4AAADvAgAAJgAAAChEIAAuAAAAzAIAACYAAABsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwCcRSAAIwAAALsAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnVmWzBdID4gYicwJwCcRSAAIwAAALwAAAAFAAAAnEUgACMAAAAKAQAABQAAAJxFIAAjAAAACwEAAAUAAABlaW5mMGUwYXNzZXJ0aW9uIGZhaWxlZDogYnVmLmxlbigpID49IG1heGxlbpxFIAAjAAAAfgIAAA0AAABCb3Jyb3dFcnJvckJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogAHVGIAASAAAAYWxyZWFkeSBtdXRhYmx5IGJvcnJvd2VkOiAAAJBGIAAaAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWV4cGxpY2l0IHBhbmljAAAA30YgAA4AAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAA+EYgACAAAAAYRyAAEgAAAAAAAAAEAAAABAAAAEMDAAAAAAAABAAAAAQAAABEAwAAYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogXEcgABAAAABsRyAAFwAAAINHIAAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAAFxHIAAQAAAApEcgABAAAAC0RyAACQAAAINHIAAJAAAAAAAAAAwAAAAEAAAARQMAAEYDAABHAwAAIHsKLAooCmF0dGVtcHRlZCB0byBiZWdpbiBhIG5ldyBtYXAgZW50cnkgd2l0aG91dCBjb21wbGV0aW5nIHRoZSBwcmV2aW91cyBvbmUAAAD/RyAARgAAAGxpYnJhcnkvY29yZS9zcmMvZm10L2J1aWxkZXJzLnJzUEggACAAAADZAwAADQAAAGF0dGVtcHRlZCB0byBmaW5pc2ggYSBtYXAgd2l0aCBhIHBhcnRpYWwgZW50cnkAAIBIIAAuAAAAUEggACAAAACxBAAADQAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBsaWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMACEkgABsAAAAgCQAACQAAAAhJIAAbAAAAmQoAACYAAAAISSAAGwAAAKIKAAAaAAAAbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnNUSSAAIAAAAIQAAAAeAAAAVEkgACAAAACgAAAACQAAAHVzZXItcHJvdmlkZWQgY29tcGFyaXNvbiBmdW5jdGlvbiBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IGEgdG90YWwgb3JkZXKUSSAATAAAAGxpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAOhJIAAvAAAAXAMAAAUAAABpbnZhbGlkIHV0Zi04IHNlcXVlbmNlIG9mICBieXRlcyBmcm9tIGluZGV4IChKIAAaAAAAQkogABIAAABpbmNvbXBsZXRlIHV0Zi04IGJ5dGUgc2VxdWVuY2UgZnJvbSBpbmRleCAAAGRKIAAqAAAAYXR0ZW1wdGVkIHRvIGluZGV4IHN0ciB1cCB0byBtYXhpbXVtIHVzaXplAACYSiAAKgAAAGxpYnJhcnkvY29yZS9zcmMvc3RyL21vZC5ycwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwQEBAQEAAAAAAAAAAAAAABsaWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAADnSyAAHwAAAHEFAAASAAAA50sgAB8AAABxBQAAKAAAAOdLIAAfAAAAZAYAABUAAADnSyAAHwAAAJIGAAAVAAAA50sgAB8AAACTBgAAFQAAAFsuLi5dYmVnaW4gPD0gZW5kICggPD0gKSB3aGVuIHNsaWNpbmcgYABdTCAADgAAAGtMIAAEAAAAb0wgABAAAADu2yYAAQAAAGJ5dGUgaW5kZXggIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSAgKGJ5dGVzICkgb2YgYACgTCAACwAAAKtMIAAmAAAA0UwgAAgAAADZTCAABgAAAO7bJgABAAAAIGlzIG91dCBvZiBib3VuZHMgb2YgYAAAoEwgAAsAAAAITSAAFgAAAO7bJgABAAAAzEogABsAAACeAQAALAAAAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAAABITSAAJQAAABoAAAA2AAAASE0gACUAAAAKAAAAKwAAAAAGAQEDAQQCBQcHAggICQIKBQsCDgQQARECEgUTHBQBFQIXAhkNHAUdCB8BJAFqBGsCrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5wToAu4g8AT4AvoE+wEMJzs+Tk+Pnp6fe4uTlqKyuoaxBgcJNj0+VvPQ0QQUGDY3Vld/qq6vvTXgEoeJjp4EDQ4REikxNDpFRklKTk9kZYqMjY+2wcPExsvWXLa3GxwHCAoLFBc2OTqoqdjZCTeQkagHCjs+ZmmPkhFvX7/u71pi9Pz/U1Samy4vJyhVnaCho6SnqK26vMQGCwwVHTo/RVGmp8zNoAcZGiIlPj/n7O//xcYEICMlJigzODpISkxQU1VWWFpcXmBjZWZrc3h9f4qkqq+wwNCur25v3d6TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsFRAQOKoCqBiQEJAQoCDQLTgM0DIE3CRYKCBg7RTkDYwgJMBYFIQMbBQFAOARLBS8ECgcJB0AgJwQMCTYDOgUaBwQMB1BJNzMNMwcuCAoGJgMdCAKA0FIQAzcsCCoWGiYcFBcJTgQkCUQNGQcKBkgIJwl1C0I+KgY7BQoGUQYBBRADBQtZCAIdYh5ICAqApl4iRQsKBg0TOgYKBhQcLAQXgLk8ZFMMSAkKRkUbSAhTDUkHCoC2Ig4KBkYKHQNHSTcDDggKBjkHCoE2GQc7Ax1VAQ8yDYObZnULgMSKTGMNhDAQFgqPmwWCR5q5OobGgjkHKgRcBiYKRgooBROBsDqAxltlSwQ5BxFABQsCDpf4CITWKQqi54EzDwEdBg4ECIGMiQRrBQ0DCQcQj2CA+gaBtExHCXQ8gPYKcwhwFUZ6FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqA1isEAYHggPcpTAQKBAKDEURMPYDCPAYBBFUFGzQCgQ4sBGQMVgqArjgdDSwECQcCDgaAmoPYBBEDDQN3BF8GDAQBDwwEOAgKBigILAQCPoFUDB0DCgU4BxwGCQeA+oQGAAEDBQUGBgIHBggHCREKHAsZDBoNEA4MDwQQAxISEwkWARcEGAEZAxoHGwEcAh8WIAMrAy0LLgEwBDECMgGnBKkCqgSrCPoC+wX9Av4D/wmteHmLjaIwV1iLjJAc3Q4PS0z7/C4vP1xdX+KEjY6RkqmxurvFxsnK3uTl/wAEERIpMTQ3Ojs9SUpdhI6SqbG0urvGys7P5OUABA0OERIpMTQ6O0VGSUpeZGWEkZudyc7PDREpOjtFSVdbXF5fZGWNkam0urvFyd/k5fANEUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc9vf+/4Btcd7fDh9ubxwdX31+rq9Nu7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHWWJi4vp6+3v8fP19+aAECXmDCPH87P0tTO/05PWlsHCA8QJy/u725vNz0/QkWQkVNndcjJ0NHY2ef+/wAgXyKC3wSCRAgbBAYRgawOgKsFHwiBHAMZCAEELwQ0BAcDAQcGBxEKUA8SB1UHAwQcCgkDCAMHAwIDAwMMBAUDCwYBDhUFTgcbB1cHAgYXDFAEQwMtAwEEEQYPDDoEHSVfIG0EaiWAyAWCsAMaBoL9A1kHFgkYCRQMFAxqBgoGGgZZBysFRgosBAwEAQMxCywEGgYLA4CsBgoGLzGA9Ag8Aw8DPgU4CCsFgv8RGAgvES0DIQ8hD4CMBIKaFgsViJQFLwU7BwIOGAmAviJ0DIDWGoEQBYDhCfKeAzcJgVwUgLgIgN0VOwMKBjgIRggMBnQLHgNaBFkJgIMYHAoWCUwEgIoGq6QMFwQxoQSB2iYHDAUFgKYQgfUHASAqBkwEgI0EgL4DGwMPDYCAgICAgICAgPTugIDygICAgICAgICAgICAgICAgICAICGiIyQlJqcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpb3F1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX6AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAOVQgAB4AAACrAQAAAQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5vYm9ycm93YXNzZXJ0aW9uIGZhaWxlZDogZGlnaXRzIDwgNDBhc3NlcnRpb24gZmFpbGVkOiBvdGhlciA+IDAAAAAAAABa1juS1lP07j87oQYpqj8R+GVlG2a0WJUHxSSkWcrHSna/PqJ/4a66SfYtDfC8eV1Tb86K35la6dxzeRAsLNj0lAXBtiug2JFp6EuKmxsHeflGcaQ2yE62hOLebILiSJe3mI1NRHri4yWbFggjGxv9cn94sGqMbY73IA7l9fAw/k+fllyF7wiyNalRXjMtvb0jR7yzZiuL3oIT5jWAeCytdqxVMCD7FosxzK8hUMs7TJMXazzoudytPb8bKiS+St943YVLYuhT2Q2vojStbR3Xa6ozbz1x1IdoreVAjGRyhgaVAMuMjcmpwhgfUa/9DmhIusD97/A71PLeZiUbvRICbXSY/pV2pYRXS2D3MLZLAYiRPn471M6lLV44Nb2jnkHqNc5dSolCz7l1hoKsTAZSsuGges6ViYGTCZTR6+9Dcx8aSRlC++uh+Av5xebrFBCmYJufEvpmyvZOd3fgJhrU0DiCR5e4AP20IlWVmLAgiYJjsYxecyCesDVVXV9utFVivN0vNpCoxR2DqjT3iSHreyvVu0O0EvfkI9UBdezppS07ZVWqsGuabjYlIckzskf4ib7q1JwGwQqEbmm7wJ6ZdixuJQpESPENJcpD6nAGwMrbZFeGKs2WKFdeapIGBDi8Ej7tJ3WAvPLs9QQ3CAXGa5eN6HGSoOsuaDPGREqG96N+WDGHW0STHSHg+2rus3pMnq79aHIVuGQp2LoF6mBZ30UaPQPPGua9M44phyS5b6trMAZiwdCPVuD4edS206WWhryHuvHEs2wYd5iJpEiPPKirKSkutuCH3pT+q80aMyVJC7rZ3HGMFAsdf4vA8J9vG44oEFSOr9lN5F6u8OwHSqKxMhTpcdtQYZ322SzoyW4Fr5+sMSeJ0lwiOggcMb7KxprHF/5wqwb0qkgKY71tfXiBuZ09TdYIsdXazLssCU7r8JOCRvCFpY7FCGD1uyUhJu04I1hsp07y9gq48iqvqm8oByxuR9HhrrQNZq/1GspFeYTbpMyCTe2QyJ+N2VA8l5dlEs5/o6AotboH8Q/lDH39/pbBX8zIcmKpSe1THk/cvL78sXf/eg+7E5zo6CWxCTb3Pc+qn6zpVIxhkbF3HYwDdQ2DlccXJGrvufWd1SVvRNLQ43r5Ha1EayhzBUt3xWqDYs7smzLsCkP5Z+NO1XZFJPsB6MI/p82T90GcIorUVu15AqLzDxHBeHVSQ2vWRFY0jEFFmKmqeGuJEwqDDNZrQe+RVr5T1VbGa5jMI4/LxhFrNuztqIrst4a+vyw5PxzrAqKzlKnW8zIU1/d7B0/jpYOK4LlTzLA/2cz12skiXI8krVjoaP+cjw9As9G+lZnZNmw3kaEfwrkJCBAjLfv/j0RHhbWKpzIoDArUq/n5/7MVmebibFE/Mo8MyRY7/H+QrR/QjeOSZ3/Zpz2uSvuf9JgnRLGcd0HfzxHNmR36xzF/MZXdg9UR10NWQEBS/Bx/7z59inIla2bqNShIZjvkXquOHK3P7gUAZUMy2kBKnTZWsmPYgmoHQD7UvpBoTiLidU8+h5GiBOimRHdaAuKqWlPjDak2ywWi0BUVcYOaVTEoXFHTAz6HykRbWg2RgNUemdkShMKGlP4KeVjotuCKZv+PF6VyqDm+TZduYuOYLUD/c13OjxLILSE9CvuOfxyIf2j6gJkLnbw0ZuZ8cp8jap8COaGATsTrwf8fHE6HrERHQ4fJIGK1ZrL/J6MiqdcVGRTp+6i6YgCf//FLtcmmrY+scZ2ptD1gwz93byJ8EJmzF87E0yFNOLQPVcsrm1R/oJ0B9khqYEahUyp+++CUT4QCwZltQvzLRHTaLjkZemMlQzHACFP7/lURkfqIn1i87pM98Monun6rVTV5tWO3NXV8JpbeWDQvi1XBS6I8JYOSG7C7Fm8B++2qsZ7Li+4jdyKc6tzKwXmpFV5GXxd1doqVoZLJHhnsic36CzZdEhTt+km3e2YfZ+yA+c6E9BZZqHkc5RpA54An4beC0liuNwnMMY8QiJCwuOyy0QfvmYULP/6yFaq03OanH4bJagBnzs6935rU4ZPgkadnvUJgAEGh1ovgJG1cLLvI4G1TeECRScyuGG6Ic/fp+lhIaJaQ9Vt/2p6JalB1pDmvLQFeenmZj4gDlkJSyQaEbXiB9djXf7OqgzvTpnsI5cjW4TLPzV9g1WQKiJCaSh77Js1/oeA7XIV/BlWaoO7yXG/A38nYSrOmHkjqwEiqL/SLsFf8jh1g0CbaJPHalDvxV862XXkSPIJYCLfWCD3Fdu2BJLUXF8uibspkDEuMdlRoom2i3dx9ywn9fc9dL5SpAgsJCxVUXf5MfF1DNTv50+Gm5SaNVPqer20aSgHFe8SaEJ9wsOm4xhsJoZxBtpo1wNTGjBwkZ/hiS8kD0mMBw/hE/NeRdkCbHc9dQmPe4Hk2VvtNNpQQwuRC9RL8FVmYxCt64UO5lPKdk7IXe1tvPlpb7GzK85yXQpzP7iyZBacxcicIvTCEvVODgyp4/8ZQvU4xSuw85ewoZCQ1Vr/4pDbRXq4TRg+Umb424ZV3G4eEhfaZmBcTuT9uhFl7VeIo5SZ0wH7dV+fPieUv2uoaM0+YSDhv6paQIXbvXcjS8D9jvloGC6W8tKlTa3V6B+0P+23xx03O6+GUKMYSWUno073k9pzwYDONXNm7q9ctcWTsnTTELDmAsLPPqpZNeY29Z8VB9XdHoNygg1X8oNfw7GAbSfmqLOSJRHK1ncSGFvQ5Ypu31TddrNXOIsV1KBwxxzqCJcuFdNeLgms2kzJjfbxkcfee06iGlzEDApz/Xa7rvU21hghTqPz9gwKDf/XZZi2hYqjKZ9J7/STDY99y0GC8pD2p3oCDbR73WZ7LR0J46w2NUxZhpAjmdPCFvtlSVmZRcOhbec2LH5JsJy6QZ/bfMkZx2WuAtlPbo9gcugDzl7+Xzc+GoKQo0swOpOiA8H2v/cCDqMjNsgaAEs0iYWxdGz2xpNL6gV8IIFeAa3ljGjHG7qbDnLA7BXQ2MOPL/GC9d6qQ9MOcigYRRPzbvju5rBXVtPH0RC1IFVX7ku7F84stBREXmUocTS0V3Rt1tvDueEbVXL9dY6B4WtRi0uSsKheYCjTvNHzIFnGJ+4YOrHoOn4aAlaBNPa7mNV3UElcZ0kao4LoJocxZYIN0idesn4ZY0pjpS8k/cDik0SsGzCNUd4P/kc/dJ0ajBmN7CL8sKVVkf7ZC1bEXTMg7Gsrud3NqPR/kk0qeHV+6yiA+9SqIYoaTjpzugnJ7tH5UjbI1KvtnOLJDqiNPmmGe6TEfw/T5gcbe1JTs4gD6BWR+8/k4PBE8iwTd041AvIPeXnA4R4sVC65F1EixUKsklnaMBhnu2o3ZVwmb3STWrTvJF6TP1Kj4h9blgArXpUzlvB2NAwrT9qlMHyHNTM+fXitlcITMh3TUH2dpACDDR3Y7P8bS39TIhHPgQQD02ewpCc93xxcK+6WQWFIAcRBo9MzCVbmdzHnPtO5mQI0UgnG/mdWT4h+sgTBVQEjYTPHGLwDLONsnF6J8alBaDqCtuDvA/QbS8ZzKHIXk8BEI2aZKML2IRi5E/WOmHW0WSo+QLj52FeycSp7+hzIETo5ZmrrN0xonRN3F/Sk/heHx70AowYjhMJVU93z0juZZ7ivRuXj1jD7dlJrOWBkw+HS7gufWMjCOFDrBAa8fPDZSauOhjD+8sZmI8cGaJ8vD5kTc5benFQ9g9Za5wPheOhCrKd6lEdsSuLK85/C29kjUFXRWD9aRF2bf6yGtZDRbSRsRlcklu86fa5M07L4A2Q2xyvs772nCh0a4QqfuQE9RXT36CmsEsylY5hJRKhGjpbQM3ObC4g8a94+rcrrqhefwR5Ogc9uT4PSzVg9pZWch7Vm4iFDSuBjy4CxTwz7BaWgwc1Vyg3NPl4z7EzrHGEJBHs/qTmRQI72v+pgI+Z6S0eWDpWJ9JGys2zm/SrdG90XfcqddzpbDS4mDt44yjLqLa08R9YF8tJ6rZGUyPy+pbgaiVXKim2GG1r3+/g57UwrIhXWHRQH9E4Y2X1/pLHQGvedS6ZZB/JinBDe3IzgRSCygp6P8UTt/0cUEpSyGFVr3xEjmPROF74L7Iufbc02YmvXaXw1YZqujuuvg0tBgPsGz0bcQ7j+WzKgmmQcF+Y0xH8bllOnPu/9ScH9JRnfx/dObD/3xYdWfM6bv7Yvqtv7IglN8brrKx8CPa+kupWT+e2NoGwppvfmwc8ajes79PS0+IVGmYRacTghcpgyhvga4jWnlD/obw2IK889PSW5IJvHD3pP44vP6zO/Do9uJWrd2Omtc222YHOB1WkYplvhlFAmGM1KJviNYE/GXs7v2f1mLZ8CmK+4sLljtfaBqdO8Xt0A4SNuU3BxXtE6kwqjr3eRQRhoSuhPkbGFiTfOSZhUe5deglugXHcj5uiCwd2DNMu+GJF6RLhId3HQUzgq4gP+qqK21tbpWJBOSmYEN5mC/1RIZI+NpbO2X9v/hEI+cl8Wr7/WNwWP0Hvo/jcqzg/22lmtzsbJ8sab4jzC9oOS8ZHxG0N3e213Q9rN8rOQO9r4NLKKKa6k6QnrwzWudkrMuEbdKrcZTydKYbMGGRHdgetVkndi3qHsHv8dx6ItKfGwFX2KHckmtZNccRxEtXZvHxvY6qc+b2D0N5JjVeTSCeXi0idPDwk6NEB3/Sstg8UvLEDaEujlRWCpy387+uO0e/pRDpSiIZe60TpfCPieppj16lM4y6v4pYiI9c4e4KYhmzByBX1I/Wn01BgioJjQqgP9jofcmz7DcwgfKUjDBNGD/vMm18ALdk7OJ/Gd88UE4Pyz84qxD1HggrLvA7TYpg6ebnQ1MqoRLlEvVMamE82ORAsUR39RlXnmeCn3TZfC8NUP21RZK/7UXRk0upD8WlgHqmUVOjr/RzktQOY3Pm/uBZMDW4XEvhsJe5Ihww4J6on3wTFpOuydzdl1VJrqRjIVOlm/4ENX4B2o66q8otu8m4ruLNlUK94kEieXbsqOrsNrqLoTqzHSsRStvyU9Ga67Ikp2SEgDJiws7y7vjFwbaerdENxdAu27OCb2q3J2HkFnlFQUdEGoKQsy26qnCVPpXjy0jEkqCRqmfZGVU8+n4LbP5q5bcIpiTR71+KXAkd/nf91a8kyt+eFk27xnGdur7i1q2VTzbTutXA2ugdxTl+q7xI2sLkiLm7cSFiJVZnrna7exFjjarX+mbU3X99wK0iBS06xgCy9sRgajS/LUD4aoZoSafwr1S1qJSB3yjRJnVX0nwRjNt50ulk4Qt5sp/hdstVgxApHBvjrjluJ+936ZSuWsPUM1My7ImH6cHrZfQp6dGE6QAIH4veHPIJMxegsgoDIxmANSOO1aQ+i1/9qL6Mg8vgACJcsprNHn5HrTLuf/SOqBAK0+8hoHXtyah/qi/h0nIEPbiNvSw5jK4JJ/J1/QtfcrZDUMxXaA/5u3Guw1yeRw9UJGUfXSIz1+p+CqRzpdjTKR1fM5IteHbaZu6GuE+vq+GyRsCmyLaUkTCaGGZzq1b6PuiwkGrkGfV8sO5P0KZcuL6pRkJa7pgxZca1GfJn4fN3A9gywXpuLa9IMnBu4fpAFQTOD5HI2ck7Wg7sqrpIwEpC+OGDHbANpQhZa8Kcrag+c6bqI+TcES5aT5bjQ7kCPjCwpJzuIyV5wQOsjASHQu2ubk7SPN3vZDCSG9eK/LGsSioShrw1ey08xoLNrauOB4yUt0gbAso4rDhjcNj2sYlX1OKlCMHWY0OrThafkicVzforHnsSK+wUdjG8J1agy1EIhiYJxvb3GWO+GxFMeT4axUPv/jwCIr/WBtky56OG8Xa0u42LYusPy8iPX5GcuJ3kYeqhPit1w+7aswd2A5b6rqU6lK7zIbptMKfEkfpmKXpOaUn6n+oJGKzR9eYIz8OZIiOseSf0q06oBkNf+yOiT4V+e7uo4OsJAQwaM9TGSuOWreq6oyk1y0FPELDqF+2MTFlVSWwzU15BssS9JI3Eb8+X1UXjoDQC+S+i9i74tZuDrcqnbGgxA6drq7OaluLCtJkdQTeyHVSRFpagkXyLo0GvpKFFfsSZ9Xw8OLW7j0YxLZ7c+2ca2CFltZNRlVMHnWkWtAoxIa4JjxM4Zeq32WSTXEEM/WoZjBLn9k91at/e9DG4j+ZKUD+jgOoRuWWX5qEeNuPvzPQvXIEUpjefPfApVbSc+9ARG2PhWY+lq2amCd2Y6iVqEqkeRMA591ZwX6xU3wSu1JdDVgYwGBVr3HenWgb1+mmtBBuHvC4qg0Hq2IhcSaS6HDKBBOWs8rRyFW7aQ2wtiIN/cWXe2A9BTsrKsQQXORqUHy3fZq4jOMEW5p6irmOQrKtko5g83ccxvFAGe1nstMeWTeyOPBVozcukV/oAd+IZi/F3kZsa8bivLo7MWGLFaA9O0usIyN3G2ypin05rhoIDQpel+yrVSLHU+3cx9khSpCMNb3nlnV1XFQU6hyIVC7ad0HWUH7SknNpmSQkqum50NXRC+Xdh3fQw78trdRk6ERLxk5elbRKYtqXPOyEPhEL7zvxWr1h3frQvUsnpo7VzeqKrbHsupQ5Ra0esc/ySoGl7RjeZ/T8Q0sss86B185wh5TP6oAx/BRe919Coo0CTal5gyWhPjuaNfX30sowQ6ATWORuCQ3KAIPytYf9/FOIGG6dyotIfuCRt9F0nn40Vc9kol532p1YdiUGEsaegSoD/ko2lVHF7tOuh5b3BSL1g73dgzpSO3VEzRS+mkM1eXKWapLEJ4qSlQCabcGUghcPPAW3dbEs97qAAMnxOWPdEovGJFPue9p0UKAdlwReyusW/PbT6hoRkmQI5byF9bymHLv0iKVhlbZ9Sh7s5jJs0OPpMSsHXR2Sju6Sk9CfQ2IuMv86SbSkNjKqd7jDh9T6uf6+CVvhTcS+lJXmtKmJeWi+LkzZrLA693wdkBEK9ksBN50PD9hcCTXcJLSVjPOewYSEUxMOtEtCEy7hum+wBvKlZSjLiFBvCcy8jNRFLkS3hz/5/qokywv/669J1zkVpWmP977V7b3O/ubbHE2IWg5Ec7WXpbQ2QV9wiTEwlfiICmgx/M5hhBF3zKs+fLo2Kw3C/bxCeuXVlL/WTRtpBHaQMj21aWyvBb03hhCxwcJJmj+mI4RHG0esxadUHXIz3IDPDytlGeJYF7fRqaROQBNhw9M730+Nl24Sg+omMQisHFpkCtejcD0K16OkcD0K16NwPczMzMzMzMzMzczMzMzMzMwAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAA+gAAAAAAAAAAAAAAAAAAQJwAAAAAAAAAAAAAAAAAAFDDAAAAAAAAAAAAAAAAAAAk9AAAAAAAAAAAAAAAAACAlpgAAAAAAAAAAAAAAAAAILy+AAAAAAAAAAAAAAAAAChr7gAAAAAAAAAAAAAAAAD5ApUAAAAAAAAAAAAAAABAt0O6AAAAAAAAAAAAAAAAEKXU6AAAAAAAAAAAAAAAACrnhJEAAAAAAAAAAAAAAID0IOa1AAAAAAAAAAAAAACgMalf4wAAAAAAAAAAAAAABL/JG44AAAAAAAAAAAAAAMUuvKKxAAAAAAAAAAAAAEB2OmsL3gAAAAAAAAAAAADoiQQjx4oAAAAAAAAAAAAAYqzF63itAAAAAAAAAAAAgHoXtybX2AAAAAAAAAAAAJCsbjJ4hocAAAAAAAAAAAC0Vwo/FmipAAAAAAAAAAAAoe3MzhvC0wAAAAAAAAAAoIQUQGFRWYQAAAAAAAAAAMilGZC5pW+lAAAAAAAAAAA6DyD0J4/LzgAAAAAAAAAAhAmU+Hg5P4EAAAAAAAAAQOULuTbXB4+hAAAAAAAAAFDeTmcEzcnyyQAAAAAAAACkliKBRUB8b/wAAAAAAAAATZ21cCuorcWdAAAAAAAAIPAF40w2Ehk3xQAAAAAAAChsxhvgw1bfhPYAAAAAAAAyx1wRbDqWCxOaAAAAAABAfzyzFQfJe86XwAAAAAAAEJ9LINtIuxrCvfAAAAAAANSGHvSIDbVQmXaWAAAAAIBEFBMx61DipD8UvAAAAACgVdkX/SXlGo5PGesAAAAACKvPXb43z9C40e+SAAAAAOXKoVqtBQMFJ8artwAAAECePUrxGcdDxrC3luUAAADQBc2cbW9c6nvOMn6PAAAAoiMAguSL8+Qagr9dswAAgIosgKLdbjCeoWIvNeAAACCtNyAL1UXeAqWdPSGMAAA0zCL0JkXWlUMOBY0prwAAQX8rsXCWTHvUUUbw89oAQBFfdt0MPA/NJPMrdtiIAMhq+2kKiKVTAO7vtpMOqwB6RXoEDeqOaIDpq6Q40tWA2NaYRZCkckHwcetmY6OFUEeGfyvapkdRbE6mQDwMpyTZZ1+2kJCZZQfiz1BLz9Btz0H347T0/59E7YESj4GCpCGJeg7x+L/HlWgi1/Ihow1qKxlSLfevObsC64xv6suQRHafpvj0mwhqwyVwC+X+tNVTR9A28gJFIpoXJidPn5BllCxCYtcB1qqAne/wIsf1frm30jpNQovV4IQrrev4st6nZYeJ4NJ3hQwzO0yTmy/riJ/0Vcxj1abP/0kfeML7JWvHcWu/PIqQw38cJxbzeu9FOU5G74tWOtrPcdjtl6y1y+Pwi3WX7MjQQ45O6b0Xo74c7e5SPSf7xNQxomPt3UvuY6iqp0z4HPskX0VelGrvdD6pyuiPNuQ57rbWdblEKxKOU/3is0RdyKlkTNPnFraWcai822BKOh3qvg/kkM0x/kbpVYm83YikpK4THbVBvr2YY6uraxSrzU2aWGTi0S3tfjyWlsbsiqBwYLd+jaI8VM/lHR78qK3IjDhl3rDLSylDX6UlOxLZ+q+G/hXdvp7zE7cO70mrx/wtFL8tijdDeGwyaTVulvl7OdkuuawEVJYHf8PCSfv32oePeufXBul7yV50M9z92ui0mazwhqNx7T27KKBpvBEjIsDXrKgMzmgN6jIIxCvWqyqwDdjSkAHDkKQ/CvXbZasajgjHg/rgedrGZyZ5Uj9WobHKuKQ4WRiRuAFwVybPqwle/ebNhm9etSYCTO14YQvGWl6wgLQFWzFYgU9U1jmOd/F13KAhx7E9rmFjaUzIcdVtkxPJ6TgezRk6vANfOs5KSXhY+yPHZUCgSKsEe+TAzi1LF512nD8oZA3rYpodcUL5HV3ElINPMr3QpTsAZQ2Td2V09Xlk437sRI/KIF/ou2q/aJnLHk7PE4uZfuh24mpF78K/fqYhw9jtP56iFJvFFquz7x4Q6vNO6c/F5eyAO+5K0JUSSnJY0fGhux8oYcqpXUS7l9yOrkVuiiomcvk8FHUV6r2TMhrXCS31WOcbpixpTZJWnF9wJiY8WS7hos93w+C2bIN3DLAvi296mYvDVfSY5EdklQ+c+20L7D83mrWY346sXr2JQb0kR+cPxQDjfpeyV7Ys7JHs7VjhU/bAm1493+3jN2e2ZykvbPSZWCFbhot07oIA0uB5vYdxwK7p8WeuEaqjgAZZ2OzpjXAaZO4B2pWUzCBIbw7osliGkP40QYjd3H8UjQUJMd7upzQ+glGqFdSfWfBGS72W6tHBzeLl1BrJB3CsGJ5snjIjmcCtD4Ww3QTGa8/iA0X/a78wmVOmHBWGt0aD24QW/0bvfH/oz2OaZ2UYZBLmbl+MFa5P8YF+wGA/j37LT0l375qZo22infA4DzNevuMcVasBgAwJy8UsB9O/9a1cYyoWAqBPy/3298jHL3PZc37aTQHEEZ+e+prd3P3nZygdUaEBNdZGxrgBFVT94YGyZaUJQsKL2PcmQhqpfFoiH18HRmlZV+eaWGmw6Y14dTM3iZfDLy2hwa6DHGSx1lIAhGt9tHt4CfKapCO9XYxnwDJjzlBN60WX4EY2lrq3QPj/+wGlIGYXvZjYwzup5VC2/3pCzqg/Xey+zrSKEx/lo9+M6YDJR7qTNwGxNmwzb8YX8CPhu9mouIRBXURHAAu4Hexs2SoQ0+blkXQVWcANppIT5Mca6kOQL9torTeYyId3GN15oeRUtPsRw5hFvroplF5U2MkdauF61vP+1m0p9B27NCeeUuKMDGZYX6bkmRjk6QGxRecasI9/LvfPXcBeXWRCHRehIdxzH/r0Q3Vwdrp+SXKuBJWJqFMceUpJBmpp3tsO2kX6q5JoYxed24cEA9aSklDX+Na2QjxdhNKpRcLFm1uShluGsqlFupIjigsyt4LyNmjypx4U12h3rGyO/2Qjr0QC79Em2QxDldcHMh8fdu1qYTWDuAfoSb3mRH/nptOoxbkCpKYJYpxsIBZfoZAIEzdoA80PjHrDh6jbNmRa5WsiISKAiZcs2lRJScL9sN4Ga6kqoGy9txCqm9vyPV2WyMVTNcjHrOWUlIKSb4z0uzq3qEL6+Rcfujkjd8vXeLWEcqlpnPtuUxQEdir/DdfiJc8ThMO6SmgZhRP1/tGMW+/CGGX0aV3CX2ZYsn4COJnVeS+/mGF62fs/dy/vA4b/Slj77r762M/6D1X7qoRnv10uuqruOM+D+VMqupWyoJf6XLQqlYNh8nt0WpTd34g9OXRhdbrk+e6aEXH5lBfrjEfRuRLpXbiqAVbNN3ruErjMIrSrkTqzCsFV4GKsqhfmfyuhFrYJYE0xa5h7V5Sd3192SZzjC7ig/YV+Wu19wuv76a1BjgdzhL4Tj1gUHLPmemQZ0rHIjyWu2LJuWeNfoJm9n0beu/Ou2Y5fym/uOwSA1iPsilRYDUi5e94l6UoFIMwsp61qrhCapxpWr6SdBij/9xDZBNqUgFGhKxuGIgR5/5qqh0IIXfDSRPuQKCtFV79BlalTSnSsBxY6NfJ1Fi0vkvrT6FyRl4mbiEK3CS58XZt8hBHauv41YZVpJYw52zTCm6WVkGl+g7n6Qy7vBxLCsgLPu/QDXuRn+ZR99URLua9hgfV4wrru4Bsd3DIWnqcbuqEyF3NpKtliZJO/m4WRoijK/tzPA3WPe314rwLnNcuy/D7Uw0RSc9pcq61hsAG/752nZPpqE4gIOhYZehzCrmvF0P24RRiqighbn5ijcprG9kU9J1eeVK2KmWM/pocgPJpLhnj24lSsNn88z4+pKMvA3acWtBtqV4SfC8Pz0/L98NVRHKGiRG1lQ+dZeMS3npYls7Gk5UpknxRhcJa1ZUa87h/eDZ9dPYdZeQz8Iv9X6+qnVdEGtQyp2MuH3XX/FpPyiNVCJPGnCc6+6VRTv9y3L+uKU23tEQyBLiQqKO/T5fqlbajIaBaPEJ1WGnl1pI+8h0RpfQFu+VVE7GDXko2zrKmVw9yByTdqVSc5jfdw4BcUe/RT4ruFYpW4Q7iaRoyO7Mx4dG2Vk7u6plRmQVivsicAl9HIejhqadDpv1Eu254xwPwFe5kG4kEi8hfz/IgDH/i94+wfRFrSqu7dLzyrwyZ2rRzoJ9XxhlVq1TsL1nSw09gj4nGKVnR1YmUFx4VJToRnVi2H9mzREru+xjin22FlAaz4KLTHhddpbvgG0VK6vgHXNjPhnLMmAkVbpIJzNBdhRgLA7IRgsEIWck2jkAFd+dcC8CeleFzTm84gzPRBtPeNA+wxzpYzyEICKf9xUqF1cQRnfkE+IL1poXmfhtOE6cZiAA/RTWgsxAlYx2gI5qN4e8BSRWGCNzUMLvmCit/MVppwp8t8sUKhx7ybkbYLQHZgpoj+212TifmrwjWkDtCT+M9q/lI1+Ov3VvNDTRLEuPaDBd5TIXvzWhaYSnCLejN6csPWqOlZsPEbvlxMLlnAGE90DBNkcBzuou1z33lv8N5iEeeLPsbR1IWUqCusRVbL3YrhLs43BkqnuZI2F9crPpVtmbrBxYccEeg3BN3Mto36yKAUmdvUsQqRoiIKQJKYnB3IWX8SSl5NtUurDNC2vgMlOjAfl9y1oOId1g+EZK5ELiR+c96pcaSN0uWJ0v7s6lytXRBWFI4NsUdfLIc+qCV0GHWUa5nxUN0Zd/coThIv0S/JPOP/llKKb6qa2XBrvYJ7+wvcvzznrAtVARBNxmxjWvoO0+8LIdhOqgFU4PdHPHhc6eN1pxSHcQqBNOz6rGWWs+NcU9HZqA1NoUGnORh/fKAcNKhFENNQoAkSEUjeHk3kkSCJK+qDMgRGqwrtSpNgXbZoa7bkpD+FF1ZNqB34ufTjQgbkHc6OZp2rYBIlNvN4zumDrtKAGWBCa3wr18EwF0LkJFoHoR/4EoZb9kyy/JxSHa4wSckntpdn8jPg3jxEp6TZfJv7saN9Ae9AmBaliugGCC5BnU6G7mCVKB+OTq2iCIp5kcTiJyq5uvKm8aJYy4rs17X127F0Z2mvEK5lF7/W86aRmSnvqOChbcqsP91uzLAQ9r/zKtNYCgn9F46Uiv/clPPvsPUH70xL/N3ZnLYfCj34lY75ZBUQr71KD0Skp0xMdrvxN74a1BptnRNVjdFf31Pq7cVtIYlhyIQsVfjim2t0krSb5LT1PP0yd2q224KGEbehwh0iM4y8PxUFpJIj6NXkSjOl6j+vqw8tg6Y7FrEFjw5Ap/KHTcsp+COQylsdx7ISEFHv6SA+dPYsNL2y5HjfFlQlaySpTZEanEC2746ri45U98K2idAaIMPQo6tylq6xKbVzJKyEoejzxIxWDzzaHnSikC3X5clxGPsXlolliJKIZXp8pi9+jd75nfvrfqq36v6YG5C73TFWeIX6ph7VZaU+fyJ0KlXeNWuTXCgzhV8nh4+ViDrVVgNGuHPyf6Y38WjzuiqJiiyEV6YQ7x/QhS1DsGl1Ky2bsvZnavUTgnP8KQ5iKTucQl/0AcXymKKPe7SRuvNJgxN3cUJ2Lz/Lc5ohNqlwHCTX1A3TU/sO/hABqoPTjCPtBqXoYxRdyZ6qQEoyBDg29EjO4nxZtHvG1dDcPgXGQ7HagRvcb6Ea+AoFlI6Gt5TdKDGR6eWkEJsmgxwZtPJ8ynJ99WMfztTB8KNjH2EvHP3P3PI8pwFK8uyMPGc5O2O8AcoXhghBbpcT2IXgAwW+1YK8nadK0Um9GE6n2ESGLUuiK4VRnUWc7J4h0Q7W5/jdRTvzUoKr4ZMDtULJ5ZC7yhcKsOdiFtq4Q2KTOx91aj2dDJyh+5sQ59Q6eApnEsUM4ocBRX1hapDFJItmgCv7J9rpQZbc+YS09u0tgGD2+bFRZNK7Uzim4XNpOaD4c3hesn5jVTTjB43o4SNke0gL219evGoB3EmwYtosPZoazpH3dWvFAVNc3PsQeMxAoUF2uiljG+GzuYmdCst/yATpqSn0O2LZICisRM29n/pFY1Qz8cq6Dyky15VArUd5F3ypwNa+1KlZf4ZdSMzMq47tSXCM7kkUMB+odFr/v1byaFyML2pcGfwm0hEx/2/sLoNzt13C2Y9dWIOrfv/FU/0xyCX1MtDzdC6kVV5/t6h8Prpvsj/EMBI6zes1X+XSG84ohc+nel5LRICzgVvPY9GAeWbDURk2XlWgH2Iyw7wF4ddANKafw7VqyKf6/vMrR9mNUMGPhzRjhfpRuf7w9phPsdLYudQAXpOc0zOfVpq/0W4HT+gJgTW4w8gAR+yAL4YKyGJiTOFCpvT6wFgnYbsnzb19vc/M6eeYnHiXuBzVOIAs3awDQOQhv8NWveZjCkfgeBSYBFBd6u50rGzg/MxYGMsM3wJSelKVyOtDDB6ANw/9z5aD5hinurrmVI8lYAXT/YN8JCDfUOlpICrzLrjGR37SzRZ0i9KRQVT6Vx0z3EwdR4EcUS5HtlLp+K3kPxPg5ZihY+X52OOmI3fZ3Q8YWI//RF4vnGeOSHbqp+oJD1dlbmNvZGVfdXRmODogbmVlZCAgYnl0ZXMgdG8gZW5jb2RlIFUrIGJ1dCBidWZmZXIgaGFzIGp1c3QgAABwfSAAEgAAAIJ9IAATAAAAlX0gABUAAAACAAAAAAAAAAIAAAAAAAAAAAAAACAAAOACAAAAAAAAAAAABAAAAAAAAQAAACAAAOkCAAAAAAAAAAIAAAAAAAAAAgAAACAAAOBhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm8AAAAMfiAAOQAAAGBhc3luYyBmbmAgcmVzdW1lZCBhZnRlciBjb21wbGV0aW9uAFB+IAAjAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHx+IAASAAAAjn4gACIAAAByYW5nZSBlbmQgaW5kZXggwH4gABAAAACOfiAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgAOB+IAAWAAAA9n4gAA0AAABjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKCkgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICgAAAAUfyAAJgAAADp/IAArAAAAsz4nAAEAAADCAgAASRIAAm0WQDQWHwA5tiSARQAsYE4FMKBOADRgU8BNYFaNpIBWDabAVqTXQFcA+YBibvogYz79QGOAAgFmNwcha+AeAXGaI6GYkC8BmjA0oZr7QwGbR0aBmwBhwZsAaOGbOWohnEBtQZz4hyGe1oxBoPCvgaAjseGg/LLBoQC8AaMA1CGjptZhpADfAamQ4uGr0OThruDnYa8A7iGwMPEhsgAAYrrgpiK7OrdCu6LOgrvh6wK8Xu5CvAD4grwe+qK8AADDvEsT47ywIwO9sCNUvQADAACDBCAAkQVgAF0ToAASFyAfDCBgH+8sICsqMKArb6ZgLAKo4Cwe++AtAP4gNp7/YDb9AeE2AQohNyQN4TerDmE5LxjhOTAc4UrzHuFOQDShUh5h4VPwamFUT2/hVJ28YVUAz2FWZdGhVgDaIVcA4KFYruIhWuzk4VvQ6GFcIADuXPABf11gBgAAZgkgAUAQ4AFpEyAG7hagBkYZ4AZwIOAHYCTgCXYnIAv9LKALBzDgC5IxIAwgpuAMMKhgDvCr4A4Q/2AQBwGhEOEC4RBYCKER+gwhE2AO4RZQFKEXUBYhGuAYoRrwG6EbUB8hHAAkIR0wYaEdYGrhHXBtIR6AbiEf8MxhH8DSoR/O1+EfQOGhIPDi4SDw5CEhx+hhIXHs4SEA8WEi8PuhI/r78iNpbnZhbGlkIGxlbmd0aGludmFsaWQgc3ltYm9sbm9uLXplcm8gdHJhaWxpbmcgYml0c2ludmFsaWQgcGFkZGluZyBsZW5ndGggYXQgAQAAAAAAAADMgSAABAAAAExlbmd0aFRyYWlsaW5nUGFkZGluZ0RlY29kZUVycm9ycG9zaXRpb24CAAAAAAAAAAAACAAAAAAAAAAAACAAAOkAADEAMgAzADQANQA2ADcAOAA5ADEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS1JbmZpbml0eQAAAAAAAAAAAAAAAAAAAHsPuxOc6OglT9y8vvyxd/+t6VSMYZGxd7EJNvc9z6qfGCRq77n1ndUdjAN1DYOVxx6tRGsocwVLJW9E0tDjevkz7ApD+WfjTnfFaoNizuybQKfNk/dBnCLVdkUk+wHowhARwXh1UkNritRW7XkCovOqqnhriRMKg9ZEVjSMQUWYVNVWxmuYzCMM1mtB75FWvqmK7LeGvr8sj8vGEWs27O2q1vMyFNf3ezk/HOsCorOUVMywP9nM9doHT+Olg4rguWn/nI8PQLPRySJcjyStWOiiH8K5CQgQI76Vmdk2bDeRi6cyKAwK1Kst+/+PREeFtW1RPzKPDMkW+fn/sxWZ5uLkkmd/2ac9rjv8f5CtH9CNnXdB388RzZlK+5/0mCdEsYTVEddDVkBAHfrHMX8xld1zJWtm6jUoSFL8HH/vPn2K0O4FAGVDMtpmO+Req44crYNqB0A+1L6QQEqdNlayY9iSogTopkR3WmhOIuJ1Tz6HN8sFotAVFXEC4qpaU+MNqQQ+h8pEW1oNg5pVMShcUdPDhpT+CnlY6JGA1R6Z2RKEc6g5vk2XbmK24Ipm/48XpZASyC0hPQr745gtQP9zXc6aC528NGbmfI5/HIh/aPqAgU7E68H/HxxynyNqnwI5oSFitWay/yejToesREdDh8mpumIAn//xSyKp1xUZFOn7qrQ9YMM/d2+1yaatj6xxndQhTTi0D1XLInwQmbMXzsRJamBGoVMqfiubVH+gnQH2bkL8y0R02i774JRPhALBmQlT+/5VEZH6ORl6YyVDMcDLJ7p+q1U1eYifWLzukz3w31g0L4tVwUu1Y7c1dXwmlhdvAfvtqrGeojwlg5IbsLvdysF5qRVeRsuL7iN3Ipzqyh4Z7InN+gtfF3V2ipWhknxmH2fsgPnONl0SFO36SbcbQOeAJ+G3goT0FlmoeRzlEYiQsLjsstHSWK43CcwxjxaqtNzmpx+GB++ZhQs//rKb1OGT4JGnZ8lqAGfOzr3f4SRtXCy7yOC9QmAAQaHWixluiHP36fpYbVN4QJFJzK6fiWpQdaQ5r0holpD1W3/aBJZCUskGhG0tAV56eZmPiIQ706Z7COXIeIH12Nd/s6plCoiQmkoe+9bhMs/NX2DVgAZVmqDu8lwmzX+h4DtchR9I6sBIqi/0b8DfydhKs6Yn2iTx2pQ78YuwV/yOHWDQWQi31gg9xXZXzrZdeRI8gm/KZAxLjHZU7YEktRcXy6IK/X3PXS+UqWiibaLd3H3LTXxdQzU7+dMCCwkLFVRd/rBtGkoBxXvE4ablJo1U+p4cCaGcQbaaNZoQn3Cw6bjGY0vJA9JjAcPA1MaMHCRn+B7PXUJj3uB5+ET815F2QJvlQvUS/BVZmDZW+002lBDCnpOyF3tbbz7EK3rhQ7mU8kOcz+4smQWnWlvsbMrznJdUg4MqeP/GUDFyJwi9MIS9KWQkNVa/+KS9TjFK7Dzl7Jq+NuGVdxuHNtFerhNGD5RAboRZe1XiKISF9pmYFxO50InlL9rqGjPlJnTAft1X5yJ2713I0vA/T5hIOG/qlpCqU2t1egftD2O+WgYLpby0lSjGEllJ6NP7bfHHTc7r4V3Zu6vXLXFkveT2nPBgM420z6qWTXmNveydNMQsOYCwoYNV/KDX8OxnxUH1d0eg3EVytZ3Ehhb0YBtJ+aos5InWziLFdSgcMTlim7fVN12sjIJrNpMyY33HOoIly4V015gxAwKc/12uvGRx957TqIb9/YMCg3/12eu9TbWGCFOofP0kw2PfctBmLaFiqMpn0m4e91mey0dCYLykPanegIMJ5nTwhb7ZUnjrDY1TFmGkjB+SbCcukGdWZlFw6Ft5zbdT26PYHLoA9t8yRnHZa4ClKNLMDqTogPOXv5fNz4agzrIGgBLNImHwfa/9wIOoyIJfCCBXgGt5bF0bPbGk0vqxOwV0NjDjy2MaMcbupsOcnYoGEUT82778YL13qpD0w0UtSBVV+5LuO7msFdW08fRLHE0tFd0bdcXziy0FEReZXmOgeFrUYtK28O54RtVcvzV8yBZxifuG5KwqF5gKNO+hTT2u5jVd1A6seg6fhoCVCqHMWWCDdIkSVxnSRqjgukzJP3A4pNEr16yfhljSmOnQ3SdGowZjewbMI1R3g/+RQ9WxF0zIOxoIvywpVWR/tpRKnh1fusogyu53c2o9H+Sd7oJye7R+VD71KohihpOORKojT5phnumNsjUq+2c4stWU7OIA+gVkMR/D9PmBxt4F3dONQLyD3n7z+Tg8ETyLRtRIsVCrJJZecDhHixULrlgJm90k1q07dowGGe7ajdnX5YAK16VM5ckXpM/UqPiHTR8hzUzPn168HY0DCtP2qSBnaQAgw0d2K2VwhMyHdNR04EEA9NnsKTs/xtLf1MiEkVhSAHEQaPQJz3fHFwr7pbXuZkCNFIJxzMJVuZ3Mec8xVUBI2Ezxxr+Z1ZPiH6yBfWpQWg6grbgvAMs42ycXoh2F5PARCNmmO8D9BtLxnMpkph1tFkqPkEowvYhGLkT9/4cyBE6OWZouPnYV7JxKnv4pP4Xh8e9Aus3TGidE3cV99I7mWe4r0SjBiOEwlVT3z1gZMPh0u4K5ePWMPt2UmgKvHzw2Umrj59YyMI4UOsHCmifLw+ZE3KGMP7yxmYjxusD4XjoQqynlt6cVD2D1lujwtvZI1BV03qUR2xK4srwirWQ0W0kbEVYP1pEXZt/rNey+ANkNscqVySW7zp9rk0On7kBPUV09+zvvacKHRrgTUSoRo6W0DPoKawSzKVjmrHK66oXn8Efc5sLiDxr3j1cPaWVnIe1Zk6Bz25Pg9LMtU8M+wWloMLiIUNK4GPLg/BM6xxhCQR5zVXKDc0+XjPuYCPmektHlz+pOZFAjva86v0q3RvdF34OlYn0kbKzbhLeOMoy6i2typ13OlsNLiWVlMj8vqW4GTxH1gXy0nqu+/v4Oe1MKyKJVcqKbYYbWN19f6Sx0Br2FdYdFAf0ThgU3tyM4EUgs51LplkH8mKfGBKUshhVa96Cno/xRO3/R/CLn23NNmJrESOY9E4Xvgrvr4NLQYD7B9dpfDVhmq6OpJpkHBfmNMbPRtxDuP5bMU3B/SUZ38f0fxuWU6c+7/zSm7+2L6rb+05sP/fFh1Z/Bj2vpLqVk/siCU3xuusrHsXPGo3rO/T17Y2gbCmm9+U8IXKYMob4GLT4hUaZhFpxjCvPPT0luSLiNaeUP+hvD+8zvw6PbiVom8cPek/ji8x3gdVpGKZb4t3Y6a1zbbZgkWBPxl7O79mUUCYYzUom+LS5Y7X2ganR/WYtnwKYr7t0cV7ROpMKo7xe3QDhI25QU5GxhYk3zkuvd5FBGGhK6GB3I+bogsHdmFR7l16CW6C8SHdx0FM4KYM0y74YkXpG7ViQTkpmBDbiA/6qorbW1amztl/b/4RDmYL/VEhkj48Jj9B76P43Kj5yXxavv9Y2zfLGm+I8wvbOD/baWa3Ox39td0PazfKyg5LxkfEbQ3WypOkJ68M1r5A72vg0soorHU8nSmGzBhp2Ssy4Rt0qtuKh7B7/HcehEd2B61WSd2HNJrWTXHEcRi0p8bAVfYofQm9g9DeSY1S1dm8fG9jqpxMJOjRAd/0p5NIJ5eLSJ07s5UVgqct/Oy2DxS8sQNoQpiGXutE6Xwv647R7+lEOlM+r+KWIiPXM+J6mmPXqUzmBSP1p9NQYIh7gpiGbMHIH4Js+w3MIHyqgmNCqA/2OhtvAC3ZOzifxSMME0YP+8yeOsQ9R4IKy7Z3zxQTg/LPwOTKqES5RL1cDtNimDp5udEt/UZV55ngoxqYTzY5ECxdYWSv+1F0ZNfdNl8Lw1Q/ZGTo6/0c5LUC6kPxaWAeqZ1+FxL4bCXuQ5jc+b+4FkwE1aTrsnc3ZdiHDDgnqiffBw+BDV+AdqOlUmupGMhU6WjDZVCveJBInqryi27ybiuy+E6sx0rEUr5duyo6uw2uqekhIAyYsLO2/JT0ZrrsiSRTcXQLtuzgnLu+MXBtp6txYFHRBqCkLMvarcnYeQWeUuIxJKgkapn7bqqcJU+leP+quW3CKYk0dkZVTz6fgts/hWvJMrfnhZvX4pcCR3+d9btlU8207rVzbvGcZ26vuL8iNrC5Ii5u0Da6B3FOX6ru7sRY42q1/pxIWIlVmeudoVtOsYAsvbEZtTdf33ArSIGqEmn8K9UtaBqNL8tQPhqmBJ8EYzbedLolIHfKNEmdXcLVYMQKRwb6WThC3myn+FU7lrD1DNTMuOuOW4n73fpqinRhOkACB+siYfpwetl9DJKAyMZgDUji94c8gkzF6C+zIPL4AAiXI7VpD6LX/2orr/0jqgQCtPyms0efketMupv4dJyBD24ryGgde3JqH+ytf0LX3K2Q029LDmMrgkn7wNcnkcPVCRQzFdoD/m7cYrkc6XY0ykdZR9dIjPX6n4uxrhPr6vhsl8zki14dtpm2lhmc6tW+j7GwKbItpSRMLEuT9CmXLi+qLCQauQZ9XyG9RnyZ+HzdylGQlrumDFlyHJwbuH6QBUD2DLBem4tr1pO7Kq6SMBKRM4PkcjZyTtImWvCnK2oPkL44YMdsA2lGo+W40O5Aj4zpuoj5NwRLkFDrIwEh0LtsLCknO4jJXnw0hvXivyxrG5uTtI83e9kPQaCza2rjgeKKhKGvDV7LSx4Y3DY9rGJTJS3SBsCyjiD604Wn5InFdfU4qUIwdZjVLYxvCdWoMtN+iseexIr7BmjvhsRTHk+EQiGJgnG9vcAFkbZMuejhtrFQ+/+PAIikAvIj1+RnLixdrS7jYti6wQu2rMHdgOW3eRh6qE+K3X6rTCnxJH6ZjqupTqUrvMhiVis0fXmCM/pek5pSfqf6iuOqAZDX/sjg5kiI6x5J/SrSQEMGjPUxmJPhX57u6jg9gtBTxCw6hfK45at6rqjKROeQbLEvSSN7YxMWVVJbDN0QvkvovYu+IRvz5fVReOgMUOna6uzmpb1m4OtyqdsaB2UkRaWoJF8osK0mR1BN7IE2fV8PDi1u4ujQa+koUV+2xghZbWTUZVPRjEtntz7ZyHuCY8TOGXqkwedaRa0CjEqWYwS5/ZPdXfZZJNcQQz9SpA/o4DqEblq3970MbiP5k00L1yBFKY3pZfmoR424+/QURtj4VmPpZ898ClVtJz76lKpHkTAOfdrZqYJ3ZjqJVTXQ1YGMBgVVnBfrFTfBK7p7QQbh7wuKqvcd6daBvX6elwygQTlrPKDQerYiFxJpIjDf3Fl3tgPdHIVbtpDbC2a1B8t32auIwFOysqxBBc5EOyrZKOYPN34wRbmnqKuY7UHlk3sjjwVRzG8UAZ7WeyiWYvxd5GbGujNy6RX+gB3xagPTtLrCMjxuK8ujsxYYsbCA0KXpfsq3cbbKmKfTmuIkqQjDW955ZVIsdT7dzH2VUu2ndB1lB+dXVcVBTqHIjqudDV0Qvl3dKSc2mZJCSqZehES8ZOXpWHd9DDvy2t1D8RC+878Vq9tEpi2pc87ISP1c3qiq2x7GHd+tC9Syem80qBpe0Y3me6lDlFrR6xz9jOcIeUz+qA9PxDSyyzzoGOAk2peYMloTH8FF73X0KiMUOgE1jkbgk+O5o19ffSyv1TiBhuncqLDcoAg/K1h/1+NFXPZKJed0h+4JG30XSenoEqA/5KNpXanVh2JQYSxgUi9YO93YM6UcXu066HlvdDNXlylmqSxFI7dUTNFL6alIIXDzwFt3UnipKVAJptwTlj3RKLxiRTsSz3uoAAyfEEXsrrFvz20+572nRQoB2XhfW8phy79IjqGhGSZAjlvOYybNDj6TErpWGVtn1KHuzQn0NiLjL/OgddHZKO7pKTw4fU+rn+vglJtKQ2Mqp3uLSpiXlovi5MW+FNxL6UleYRCvZLATedD9mssDr3fB2QlYzznsGEhFMP2FwJNdwktLpvsAbypWUoEw60S0ITLuHURS5Et4c/+cuIUG8JzLyMSdc5FaVpj/f+qiTLC//rrxxNiFoORHO1vtXtvc7+5tsxMJX4iApoMZeltDZBX3CJPny6NisNwv38zmGEEXfMq00baQR2kDI9vEJ65dWUv9YQscHCSZo/prVpbK8FvTeGVB1yM9yAzw8jhEcbR6zFp6mkTkATYcPTK2UZ4lgXt9HqJjEIrBxaZDvfT42XbhKDpHA9CtejcD0K16NwPQrXo83MzMzMzMzMzMzMzMzMzMwAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAAAABAnAAAAAAAAAAAAAAAAAAAUMMAAAAAAAAAAAAAAAAAACT0AAAAAAAAAAAAAAAAAICWmAAAAAAAAAAAAAAAAAAgvL4AAAAAAAAAAAAAAAAAKGvuAAAAAAAAAAAAAAAAAPkClQAAAAAAAAAAAAAAAEC3Q7oAAAAAAAAAAAAAAAAQpdToAAAAAAAAAAAAAAAAKueEkQAAAAAAAAAAAAAAgPQg5rUAAAAAAAAAAAAAAKAxqV/jAAAAAAAAAAAAAAAEv8kbjgAAAAAAAAAAAAAAxS68orEAAAAAAAAAAAAAQHY6awveAAAAAAAAAAAAAOiJBCPHigAAAAAAAAAAAABirMXreK0AAAAAAAAAAACAehe3JtfYAAAAAAAAAAAAkKxuMniGhwAAAAAAAAAAALRXCj8WaKkAAAAAAAAAAACh7czOG8LTAAAAAAAAAACghBRAYVFZhAAAAAAAAAAAyKUZkLmlb6UAAAAAAAAAADoPIPQnj8vOAAAAAAAAAECECZT4eDk/gQAAAAAAAABQ5Qu5NtcHj6EAAAAAAAAApN5OZwTNyfLJAAAAAAAAAE2WIoFFQHxv/AAAAAAAACDwnbVwK6itxZ0AAAAAAAAobAXjTDYSGTfFAAAAAAAAMsfGG+DDVt+E9gAAAAAAQH88XBFsOpYLE5oAAAAAABCfS7MVB8l7zpfAAAAAAADUhh4g20i7GsK98AAAAACARBQT9IgNtVCZdpYAAAAAoFXZFzHrUOKkPxS8AAAAAAirz139JeUajk8Z6wAAAADlyqFavjfP0LjR75IAAABAnj1K8a0FAwUnxqu3AAAA0AXNnG0Zx0PGsLeW5QAAAKIjAILkb1zqe84yfo8AAICKLICi3Yvz5BqCv12zAAAgrTcgC9VuMJ6hYi814AAANMwi9CZFRd4CpZ09IYwAAEF/K7FwltaVQw4FjSmvAEARX3bdDDxMe9RRRvDz2gDIavtpCoilD80k8yt22IgAekV6BA3qjlMA7u+2kw6rgNjWmEWQpHJogOmrpDjS1VBHhn8r2qZHQfBx62Zjo4Uk2WdftpCQmVFsTqZAPAynbc9B9+O09P9lB+LPUEvP0KUhiXoO8fi/n0TtgRKPgYIOaisZUi33r8eVaCLX8iGjkUR2n6b49Js5uwLrjG/qy7XVU0fQNvICCGrDJXAL5f6RZZQsQmLXAUUimhcmJ0+f9n65t9I6TULWqoCd7/Aix7Pep2WHieDSi9XghCut6/gw64if9FXMY3eFDDM7TJOb/CVrx3FrvzzVps//SR94wnvvRTlORu+LipDDfxwnFvOttcvj8It1l1Y62s9x2O2XGKO+HO3uUj3syNBDjk7pvd5L7mOoqqdMJ/vE1DGiY+1r73Q+qcroj/gc+yRfRV6URSsSjlP94rM25DnuttZ1uRe2lnGovNtgRF3IqWRM0+fOMf5G6VWJvEo6Heq+D+SQQr69mGOrq2vdiKSkrhMdtdIt7X48lpbGFKvNTZpYZOKjPFTP5R0e/OyKoHBgt36NzEspQ1+lJTuorciMOGXesL+e8xO3Du9JEtn6r4b+Fd04Q3hsMmk1bqvH/C0Uvy2KBVSWB3/DwkmW+Xs52S65rAfpe8ledDPc+/fah49659ekce09uyigaf3a6LSZrPCGDc5oDeoyCMS8ESMiwNesqJEBw5CkPwr1K9arKrAN2NL74HnaxmcmedtlqxqOCMeDOVkYkbgBcFdSP1ahscq4pIdvXrUmAkztJs+rCV795s21BVsxWIFPVHhhC8ZaXrCAIsexPa5hY2nWOY538XXcoOo4Hs0ZOrwDTMhx1W2TE8kkx2VAoEirBF86zkpJeFj7d5w/KGQN62J75MDOLUsXnZWDTzK90KU7mh1xQvkdXcR6ZON+7ESPygBlDZN3ZXT1zB5OzxOLmX4gX+i7ar9omX+mIcPY7T+e6HbiakXvwr8fEOrzTunPxaIUm8UWq7PvE0pyWNHxobvl7IA77krQlZjcjq5FbooqHyhhyqldRLu+kzIa1wkt9SZy+TwUdRXqV5xfcCYmPFlY5xumLGlNkm2DdwywL4tvLuGiz3fD4LZIZJUPnPttC3qZi8NV9JjkrV69iUG9JEfsPzeatZjfjli2LOyR7O1Y5w/FAON+l7Lu4zdntmcpL+FT9sCbXj3fde6CANLgeb1s9JlYIVuGixKqo4AGWdjsh3HArunxZ66WlMwgSG8O6OmNcBpk7gHa3tx/FI0FCTGyWIaQ/jRBiBbUn1nwRku93u6nND6CUaobyQdwrBiebJbq0cHN4uXUsd0ExmvP4gOeMiOZwK0PhR0VhrdGg9uERf9rvzCZU6ZkmmdlGGQS5hb/Ru98f+jPf8BgP49+y09uX4wVrk/xgZ7wOA8zXr7jSXfvmpmjbaLGLAfTv/WtXBxVqwGADAnL9/fIxy9z2XNjKhYCoE/L/fua3dz952coftpNAcQRn565ARVU/eGBsh1RoQE11kbGJ0IaqXxaIh9lpQlCwovY91lpsOmNeHUzXwdGaVlX55qvgxxksdZSADeJl8MvLaHBm6QjvV2MZ8CEa320e3gJ8uFGNpa6t0D4MmPOUE3rRZeZ2MM7qeVQtv/7AaUgZhe9v860ihMf5aP/ekLOqD9d7DgBsTZsM2/G34zpgMlHupOFQV1ERwALuBfwI+G72ai45pF0FVnADaYd7GzZKhDT5jDbaK03mMiHkhPkxxrqQ5D8EcOYRb66KXcY3Xmh5FS0e9bz/tZtKfSUXlTYyR1q4Q1mWF+m5JkYHbs0J55S4oyQfy73z13AXuTpAbFF5xqwdB/69EN1cHZdZEIdF6Eh3KlTHHlKSQZqun5Jcq4ElYmTaGMXnduHBGne2w7aRfqrt0I8XYTSqUUD1pKSUNf41rOpRbqSI4oLwsWbW5KGW4YfFNdod6xsjjK3gvI2aPKnJ9kMQ5XXBzL/ZCOvRALv0bkH6Em95kR/Hx927WphNYOnCWKcbCAWX+em06jFuQKkEIx6w4eo2zahkAgTN2gDzYqXLNpUSUnCZFrlayIhIoBtvbcQqpvb8v2w3gZrqSqgyKzllJSCkm89XZbIxVM1yPoXH7o5I3fLjPS7OreoQvr8blMUBHYq/9d4tYRyqWmcu0poGYUT9f4N1+IlzxOEw2pdwl9mWLJ+0Yxb78IYZfRietn7P3cv7wI4mdV5L7+Y+9jP+g9V+6oDhv9KWPvuvjnPg/lTKrqVhGe/XS66qu6EYfJ7dFqU3bKgl/pctCqV5fnumhFx+ZTfiD05dGF1ul64qgFWzTd6F+uMR9G5Euk7swrBVeBirO4SuMwitKuRCmBNMWuYe1eqF+Z/K6EWtgy4oP2FflrtlJ3fX3ZJnOMIc4S+E49YFH3C6/vprUGOyY8lrtiyblkcs+Z6ZBnSsbzzrtmOX8pv41+gmb2fRt5VWA1IuXveJe47BIDWI+yKa64QmqcaVq/pSgUgzCynrQXalIBRoSsbpJ0GKP/3ENlDCF3w0kT7kIYiBHn/mqqHVEp0rAcWOjUoK0VXv0GVqelckZeJm4hC8nUWLS+S+tMS2rr+NWGVabcJLnxdm3yElpBpfoO5+kMljDnbNMKbpbz0A17kZ/mULu8HEsKyAs/2eMK67uAbHX31REu5r2GBMxdzaSrZYmTcMhaepxu6of/czwN1j3t9k7+bhZGiKMo/1MNEUnPaXHivAuc1y7L8qGT6ahOICDqrrWGwAb/vndH9uEUYqooIFhl6HMKua8VGPSdXnlStilufmKNymsb2TIZ49uJUrDaZYz+mhyA8mt6nFrQbaleEfzzPj6koy8DWURyhokRtZZ8Lw/PT8v3wJrOxpOVKZJ9D51l4xLeelu8f3g2fXT2HFGFwlrVlRrzrp1XRBrUMqVl5DPwi/1fr84jVQiTxpwnYy4fddf8WkzDrilNt7REMzr7pVFO/3Lf7pW2oyGgWj4EuJCoo79PlvYdEaX0BbvkQnVYaeXWkj62plcPcgck3VUTsYNeSjbMYFHv0U+K7hWpVJzmN93Dgj+zMeHRtlZNilbhDuJpGjLMnAJfRyHo4u7qmVGZBWK+fMcD8BXuZBmpp0Om/US7bBB/4vePsH0TiQSLyF/P8iMQmdq0c6CfVWtKq7t0vPKt1sNPYI+JxivGGVWrVOwvWSk6EZ1Yth/ZWdHViZQXHhdxhZQGs+Ci0bNESu77GOKdTur4B1zYz4ceF12lu+AbRdDQXYUYCwOycsyYCRVukgpEBXfnXAvAnhGCwQhZyTaP1QbT3jQPsMaV4XNObziDMclKhdXEEZ37OljPIQgIp/4fThOnGYgAPQT4gvWmheZ9pCOajeHvAUtFNaCzECVjHg4rfzFaacKdFYYI3NQwu+ZK2C0B2YKaIy3yxQqHHvJs2pA7Qk/jPav7bXZOJ+avCRE0SxLj2gwX+UjX46/dW80twi3ozenLD3lMhe/NaFphdTC5ZwBhPdNao6Vmw8Ru+dN95b/DeYhEME2RwHO6i7akrrEVWy92K54s+xtHUhZSTNhfXKz6VbeEuzjcGSqe5OATdzLaN+siZusHFhxwR6KMiCkCSmJwdoBSZ29SxCpFMqwzQtr4DJchZfxJKXk21HtYPhGSuRC46MB+X3LWg4tPlidL+7OpcJH5z3qlxpI1IXyyHPqgldK1dEFYUjg2xGnf3KE4SL9EYdZRrmfFQ3XCqmtlwa72CL8k84/+WUooMVQEQTcZsY3v7C9y/POesT6oBVOD3Rzxa+g7T7wsh2HIKgTTs+qxleFzp43WnFIcOTaFBpzkYf5az41xT0dmoUaAJEhFI3h58oBw0qEUQ0zMERqsK7UqTTeSRIIkr6oNAhRdWTagd+GBdtmhrtuSkj2adq2ASJTa59ONCBuQdzhpgQmt8K9fB83jO6YOu0oAg+BKGW/ZMsjAXQuQkWgehKLaXZ/Iz4N78nFIdrjBJybKjfQHvQJgWPESnpNl8m/tPhu5glSgfjqWK6AYILkGd4ycqubrypvFOraIIinmRxNyxdGdprxCuoljLiuzXtfUq76jgoW3KrGUXv9bzppGZ9CrTWAoJ/Rc/3W7MsBD2v7H1B+9MS/zdjpSK/9yU8++P+WQVEK+9Stmcth8KPfiV8je+GtQabZ0PRKSnTEx2u+7FbSGJYciEE1WN0V/fU+q1m+S09Tz9MixV+OKba3SSosIdIjOMvD93arbbgoYRt0szpeo/r6sPFQWkkiPo1eQPQKfyh03LKS2DpjsWsQWPExBR7+kgPnT4I5DKWx3HshdUJWskqU2R9iw0vbLkeN+PVPfCtonQGhqcQLbvjquLsim1cySshKEgw9Cjq3KWrh90opAt1+XJ6PPEjFYPPNqTiGV6fKYvfnEY+xeWiWWIuOr+mBuQu92N3vmd++t+qmalPn8idCpVMVZ4hfqmHtVgJ4ePlYg61d41a5NcKDOFOPFo87oqiYpWA0a4c/J/poYtQ7BpdSstLIRXphDvH9B0/CkOYik7nJuy9mdq9ROCkHu0kbrzSYNCX/QBxfKYonSaITapcBwkE3dxQnYvP8sRAaqD04wj7dfUDdNT+w7+q0BKMgQ4NvQGpehjFF3JntbQ3D4FxkOxSM7ifFm0e8YLBZSOhreU3dqBG9xvoRr4J4McGbTyfMooMZHp5aQQm/GjYx9hLxz9cn31Yx/O1MHtjDxnOTtjvM/c8jynAUryFNiF4AMFvtUByheGCEFulxlOp9hEhi1Lgrydp0rRSb2fIdEO1uf43aIrhVGdRZzsBLVCyeWQu8pFO/NSgqvhk0RikzsfdWo9Fwqw52IW2rjVOngKZxLFDJ0MnKH7mxDnxiSLZoAr+yfihwFFfWFqkPftLYBg9vmx2ulBltz5hLR0aTmg+HN4XlFk0rtTOKbh6eEjZHtIC9uyfmNVNOMHjWPaLD2aGs6RX168agHcSbD8EHjMQKFBdvd1a8UBU1zcngrLf8gE6am6KWMb4bO5iUXNvZ/6RWNUKfQ7YtkgKKyWQK1HeRd8qTPxyroPKTLXXkjMzKuO7UnA1r7UqVl/hnVa/79W8mhccIzuSRQwH6gSMf9v7C6Dc4wvalwZ/CbSrH7/xVP9Mci3XcLZj11Yg1Zef7eofD66JfUy0PN0LqTsNV/l0hvOKG+yP8QwEjrNtIFbz2PRgHmFz6d6XktEgCBiMsO8BeHXZsNRGTZeVaCo+v7zK0fZjUA0pp/DtWrIUrn+8PaYT7FQwY+HNGOF+tQzn1aav9Fu0ti51ABek5zJAEfsgC+GCgdP6AmBNbjD+8BYJ2G7J83IYmJM4UKm9J14l7gc1TiAvX29z8zp55jEVr3mYwpH4CzdrANA5CG/daxs4PzMWBh4FJgEUF3q7snrQwwegDcPywzfAlJ6UpW75lSPJWAF0/3PloPmGKe6aiAq8y64xkf9g3wkIN9Q6UJU+lcdM9xMftLNFnSL0pFT6fit5D8T4B1HgRxRLke2pyN32d0PGFjlmKFj5fnY40l26qfqCQ9Xj/9EXi+cZ47bE+VRZczSLHM/1jU7gwGy0lhepn5/B/hPz0sDCuSB3oP3+ievrwT7kWEPQoYuEYtktfnxmtvFefY5k9InetWtvSJ4roFSNxh0CDjHsdhK2bYVCw2RkyKPSAWDHG/Hzocj201QdTjrsprGo+NKecKp7FFhpJIGpl9BuIycnRcz1DTTvKYbxMfbKPPXgcLun4QBCGyQIrW5EvPvTSJz6selAQqHNGsiaNfva+HqD+U5z0Fm1ACDFaHmdePM8ikvhIHRfwnB41pJYFMcgG/0OuWhxd9LsZyxWzhoI2CLsYleyrbXnt0DnnJGQiw47h0s9vzSRoNqwqIHbKkb47SS2xmehhgkBXOLCceT4htid1KgxagebcZP7su4ONuiOhVnCPcvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjMvc3JjL3Jhdy9tb2QucnMAALCpIAAqAAAAJQAAACgAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4wL3NyYy9yYXcvbW9kLnJz7KkgAGQAAAAlAAAAKAAAAAAAAAAAAAAAAQAAAEgDAAAAAAAAAAAAAAEAAAAsAwAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdHJpb21waGUtMC4xLjE0L3NyYy9hcmMucnMAgKogAF8AAAA1AQAADgAAAICqIABfAAAAbgEAAC0AAACAqiAAXwAAAG8BAAAOAAAAAAAAAAwAAAAEAAAASQMAAEoDAABjcmF0ZXMvaHN0ci9zcmMvZHluYW1pYy5ycwAAJKsgABoAAABpAAAAIAAAACSrIAAaAAAAcQAAACAAAABjcmF0ZXMvaHN0ci9zcmMvd3RmOC9tb2QucnMAYKsgABsAAADdAQAASgAAAGCrIAAbAAAA1gEAAD0AAABgqyAAGwAAAIQCAAAeAAAAYKsgABsAAACFAgAAMQAAAGCrIAAbAAAAkAIAAD0AAABgqyAAGwAAAIsCAAA9AAAAYKsgABsAAADyAgAAIgAAAGNyYXRlcy9oc3RyL3NyYy93dGY4X2F0b20ucnPsqyAAHAAAAFwBAAA5AAAAY3JhdGVzL2hzdHIvc3JjL2xpYi5ycwAAGKwgABYAAAAWAQAAPAAAADw+JwBvAAAAJAEAAA4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9qcy1zeXMtMC4zLjc3L3NyYy9saWIucnNyZXR1cm4gdGhpc1CsIABdAAAA+xgAAAEAAAAvKSYAcAAAAE0AAAAuAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9hcmNoL2FsbC90d293YXkucnPYrCAAaAAAAL8AAAAuAAAA2KwgAGgAAADHAAAAKQAAANisIABoAAAAzAAAADQAAADYrCAAaAAAANQAAAAkAAAA2KwgAGgAAADUAAAAMQAAANisIABoAAAA1wAAACIAAADYrCAAaAAAANcAAAAzAAAA2KwgAGgAAADxAAAALgAAANisIABoAAAA+AAAACkAAADYrCAAaAAAAP0AAAA0AAAA2KwgAGgAAAAEAQAAGAAAANisIABoAAAABAEAACUAAADYrCAAaAAAAMIBAAAdAAAA2KwgAGgAAADDAQAAGQAAANisIABoAAAACgIAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9tZW1jaHItMi43LjYvc3JjL2FyY2gvYWxsL21vZC5ycwAAADCuIABlAAAALAAAAB4AAAA8c2VhcmNoZXIgZnVuY3Rpb24+AKiuIAATAAAAY2FsbDxzZWFyY2hlciBraW5kIHVuaW9uPgAAAMiuIAAVAAAARmluZGVyaGFzaBtbMTIzNDU2Nzg5G1swbQAAAFrrJgBKAAAACwIAABcAAABa6yYASgAAAAoCAAAyAAAASW9FcnJvck91dE9mQm91bmRzL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzY2FwYWNpdHkgb3ZlcmZsb3cAAACEryAAEQAAAAAAAAAEAAAABAAAADIAAAA2ryAATgAAAPYFAAAVAAAAAAAAAAQAAAAAAAAAAQAAAG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm9uLXplcm8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQvc2hpZnQucnMAAADsryAAaQAAAGYAAAAoAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9hZGRpdGlvbi5ycwAAAGiwIABtAAAAOwAAABoAAABosCAAbQAAAGgAAABCAAAAaLAgAG0AAABpAAAANAAAAGiwIABtAAAAagAAACIAAABosCAAbQAAAG8AAAAXAAAAaLAgAG0AAACJAAAAGwAAAGiwIABtAAAAjgAAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3Ny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NTU7MjUwOzI0MDM4OzI7MDM0OzEzOTswMzQzODsyOzI1NTswMDA7MjU1Mzg7MjsyMjA7MjIwOzIyMDM4OzI7MjQ4OzI0ODsyNTUzODsyOzI1NTsyMTU7MDAwMzg7MjsyMTg7MTY1OzAzMjM4OzI7MTI4OzEyODsxMjgzODsyOzAwMDsxMjg7MDAwMzg7MjsxNzM7MjU1OzA0NzM4OzI7MjQwOzI1NTsyNDAzODsyOzI1NTsxMDU7MTgwMzg7MjsyMDU7MDkyOzA5MjM4OzI7MDc1OzAwMDsxMzAzODsyOzI1NTsyNTU7MjQwMzg7MjsyNDA7MjMwOzE0MDM4OzI7MjMwOzIzMDsyNTAzODsyOzI1NTsyNDA7MjQ1Mzg7MjsxMjQ7MjUyOzAwMDM4OzI7MjU1OzI1MDsyMDUzODsyOzE3MzsyMTY7MjMwMzg7MjsyNDA7MTI4OzEyODM4OzI7MjI0OzI1NTsyNTUzODsyOzI1MDsyNTA7MjEwMzg7MjsyMTE7MjExOzIxMTM4OzI7MTQ0OzIzODsxNDQzODsyOzI1NTsxODI7MTkzMzg7MjsyNTU7MTYwOzEyMjM4OzI7MDMyOzE3ODsxNzAzODsyOzEzNTsyMDY7MjUwMzg7MjsxMTk7MTM2OzE1MzM4OzI7MTc2OzE5NjsyMjIzODsyOzI1NTsyNTU7MjI0Mzg7MjswMDA7MjU1OzAwMDM4OzI7MDUwOzIwNTswNTAzODsyOzI1MDsyNDA7MjMwMzg7MjsxMjg7MDAwOzAwMDM4OzI7MTAyOzIwNTsxNzAzODsyOzAwMDswMDA7MjA1Mzg7MjsxODY7MDg1OzIxMTM4OzI7MTQ3OzExMjsyMTkzODsyOzA2MDsxNzk7MTEzMzg7MjsxMjM7MTA0OzIzODM4OzI7MDAwOzI1MDsxNTQzODsyOzA3MjsyMDk7MjA0Mzg7MjsxOTk7MDIxOzEzMzM4OzI7MDI1OzAyNTsxMTIzODsyOzI0NTsyNTU7MjUwMzg7MjsyNTU7MjI4OzIyNTM4OzI7MjU1OzIyODsxODEzODsyOzI1NTsyMjI7MTczMzg7MjswMDA7MDAwOzEyODM4OzI7MjUzOzI0NTsyMzAzODsyOzEyODsxMjg7MDAwMzg7MjsxMDc7MTQyOzAzNTM4OzI7MjU1OzE2NTswMDAzODsyOzI1NTswNjk7MDAwMzg7MjsyMTg7MTEyOzIxNDM4OzI7MjM4OzIzMjsxNzAzODsyOzE1MjsyNTE7MTUyMzg7MjsxNzU7MjM4OzIzODM4OzI7MjE5OzExMjsxNDczODsyOzI1NTsyMzk7MjEzMzg7MjsyNTU7MjE4OzE4NTM4OzI7MjA1OzEzMzswNjMzODsyOzI1NTsxOTI7MjAzMzg7MjsyMjE7MTYwOzIyMTM4OzI7MTc2OzIyNDsyMzAzODsyOzEyODswMDA7MTI4Mzg7MjsxMDI7MDUxOzE1MzM4OzI7MjU1OzAwMDswMDAzODsyOzE4ODsxNDM7MTQzMzg7MjswNjU7MTA1OzIyNTM4OzI7MTM5OzA2OTswMTkzODsyOzI1MDsxMjg7MTE0Mzg7MjsyNDQ7MTY0OzA5NjM4OzI7MDQ2OzEzOTswODczODsyOzI1NTsyNDU7MjM4Mzg7MjsxNjA7MDgyOzA0NTM4OzI7MTkyOzE5MjsxOTIzODsyOzEzNTsyMDY7MjM1Mzg7MjsxMDY7MDkwOzIwNTM4OzI7MTEyOzEyODsxNDQzODsyOzI1NTsyNTA7MjUwMzg7MjswMDA7MjU1OzEyNzM4OzI7MDcwOzEzMDsxODAzODsyOzIxMDsxODA7MTQwMzg7MjswMDA7MTI4OzEyODM4OzI7MjE2OzE5MTsyMTYzODsyOzI1NTswOTk7MDcxMzg7MjswNjQ7MjI0OzIwODM4OzI7MjM4OzEzMDsyMzgzODsyOzI0NTsyMjI7MTc5Mzg7MjsyNTU7MjU1OzI1NTM4OzI7MjQ1OzI0NTsyNDUzODsyOzI1NTsyNTU7MDAwMzg7MjsxNTQ7MjA1OzA1MDQ4OzI7MjQwOzI0ODsyNTU0ODsyOzI1MDsyMzU7MjE1NDg7MjswMDA7MjU1OzI1NTQ4OzI7MTI3OzI1NTsyMTI0ODsyOzI0MDsyNTU7MjU1NDg7MjsyNDU7MjQ1OzIyMDQ4OzI7MjU1OzIyODsxOTY0ODsyOzAwMDswMDA7MDAwNDg7MjsyNTU7MjM1OzIwNTQ4OzI7MDAwOzAwMDsyNTU0ODsyOzEzODswNDM7MjI2NDg7MjsxNjU7MDQyOzA0MjQ4OzI7MjIyOzE4NDsxMzU0ODsyOzA5NTsxNTg7MTYwNDg7MjsxMjc7MjU1OzAwMDQ4OzI7MjEwOzEwNTswMzA0ODsyOzI1NTsxMjc7MDgwNDg7MjsxMDA7MTQ5OzIzNzQ4OzI7MjU1OzI0ODsyMjA0ODsyOzIyMDswMjA7MDYwNDg7MjswMDA7MDAwOzEzOTQ4OzI7MDAwOzEzOTsxMzk0ODsyOzE4NDsxMzQ7MDExNDg7MjsxNjk7MTY5OzE2OTQ4OzI7MDAwOzEwMDswMDA0ODsyOzE4OTsxODM7MTA3NDg7MjsxMzk7MDAwOzEzOTQ4OzI7MDg1OzEwNzswNDc0ODsyOzI1NTsxNDA7MDAwNDg7MjsxNTM7MDUwOzIwNDQ4OzI7MTM5OzAwMDswMDA0ODsyOzIzMzsxNTA7MTIyNDg7MjsxNDM7MTg4OzE0MzQ4OzI7MDcyOzA2MTsxMzk0ODsyOzA0NzswNzk7MDc5NDg7MjswMDA7MjA2OzIwOTQ4OzI7MTQ4OzAwMDsyMTE0ODsyOzI1NTswMjA7MTQ3NDg7MjswMDA7MTkxOzI1NTQ4OzI7MTA1OzEwNTsxMDU0ODsyOzAzMDsxNDQ7MjU1NDg7MjsxNzg7MDM0OzAzNDQ4OzI7MjU1OzI1MDsyNDA0ODsyOzAzNDsxMzk7MDM0NDg7MjsyNTU7MDAwOzI1NTQ4OzI7MjIwOzIyMDsyMjA0ODsyOzI0ODsyNDg7MjU1NDg7MjsyNTU7MjE1OzAwMDQ4OzI7MjE4OzE2NTswMzI0ODsyOzEyODsxMjg7MTI4NDg7MjswMDA7MTI4OzAwMDQ4OzI7MTczOzI1NTswNDc0ODsyOzI0MDsyNTU7MjQwNDg7MjsyNTU7MTA1OzE4MDQ4OzI7MjA1OzA5MjswOTI0ODsyOzA3NTswMDA7MTMwNDg7MjsyNTU7MjU1OzI0MDQ4OzI7MjQwOzIzMDsxNDA0ODsyOzIzMDsyMzA7MjUwNDg7MjsyNTU7MjQwOzI0NTQ4OzI7MTI0OzI1MjswMDA0ODsyOzI1NTsyNTA7MjA1NDg7MjsxNzM7MjE2OzIzMDQ4OzI7MjQwOzEyODsxMjg0ODsyOzIyNDsyNTU7MjU1NDg7MjsyNTA7MjUwOzIxMDQ4OzI7MjExOzIxMTsyMTE0ODsyOzE0NDsyMzg7MTQ0NDg7MjsyNTU7MTgyOzE5MzQ4OzI7MjU1OzE2MDsxMjI0ODsyOzAzMjsxNzg7MTcwNDg7MjsxMzU7MjA2OzI1MDQ4OzI7MTE5OzEzNjsxNTM0ODsyOzE3NjsxOTY7MjIyNDg7MjsyNTU7MjU1OzIyNDQ4OzI7MDAwOzI1NTswMDA0ODsyOzA1MDsyMDU7MDUwNDg7MjsyNTA7MjQwOzIzMDQ4OzI7MTI4OzAwMDswMDA0ODsyOzEwMjsyMDU7MTcwNDg7MjswMDA7MDAwOzIwNTQ4OzI7MTg2OzA4NTsyMTE0ODsyOzE0NzsxMTI7MjE5NDg7MjswNjA7MTc5OzExMzQ4OzI7MTIzOzEwNDsyMzg0ODsyOzAwMDsyNTA7MTU0NDg7MjswNzI7MjA5OzIwNDQ4OzI7MTk5OzAyMTsxMzM0ODsyOzAyNTswMjU7MTEyNDg7MjsyNDU7MjU1OzI1MDQ4OzI7MjU1OzIyODsyMjU0ODsyOzI1NTsyMjg7MTgxNDg7MjsyNTU7MjIyOzE3MzQ4OzI7MDAwOzAwMDsxMjg0ODsyOzI1MzsyNDU7MjMwNDg7MjsxMjg7MTI4OzAwMDQ4OzI7MTA3OzE0MjswMzU0ODsyOzI1NTsxNjU7MDAwNDg7MjsyNTU7MDY5OzAwMDQ4OzI7MjE4OzExMjsyMTQ0ODsyOzIzODsyMzI7MTcwNDg7MjsxNTI7MjUxOzE1MjQ4OzI7MTc1OzIzODsyMzg0ODsyOzIxOTsxMTI7MTQ3NDg7MjsyNTU7MjM5OzIxMzQ4OzI7MjU1OzIxODsxODU0ODsyOzIwNTsxMzM7MDYzNDg7MjsyNTU7MTkyOzIwMzQ4OzI7MjIxOzE2MDsyMjE0ODsyOzE3NjsyMjQ7MjMwNDg7MjsxMjg7MDAwOzEyODQ4OzI7MTAyOzA1MTsxNTM0ODsyOzI1NTswMDA7MDAwNDg7MjsxODg7MTQzOzE0MzQ4OzI7MDY1OzEwNTsyMjU0ODsyOzEzOTswNjk7MDE5NDg7MjsyNTA7MTI4OzExNDQ4OzI7MjQ0OzE2NDswOTY0ODsyOzA0NjsxMzk7MDg3NDg7MjsyNTU7MjQ1OzIzODQ4OzI7MTYwOzA4MjswNDU0ODsyOzE5MjsxOTI7MTkyNDg7MjsxMzU7MjA2OzIzNTQ4OzI7MTA2OzA5MDsyMDU0ODsyOzExMjsxMjg7MTQ0NDg7MjsyNTU7MjUwOzI1MDQ4OzI7MDAwOzI1NTsxMjc0ODsyOzA3MDsxMzA7MTgwNDg7MjsyMTA7MTgwOzE0MDQ4OzI7MDAwOzEyODsxMjg0ODsyOzIxNjsxOTE7MjE2NDg7MjsyNTU7MDk5OzA3MTQ4OzI7MDY0OzIyNDsyMDg0ODsyOzIzODsxMzA7MjM4NDg7MjsyNDU7MjIyOzE3OTQ4OzI7MjU1OzI1NTsyNTU0ODsyOzI0NTsyNDU7MjQ1NDg7MjsyNTU7MjU1OzAwMDQ4OzI7MTU0OzIwNTswNTAzODs1OzAzODs1OzEzODs1OzIzODs1OzMzODs1OzQzODs1OzUzODs1OzYzODs1OzczODs1OzgzODs1OzkzODs1OzEwMzg7NTsxMTM4OzU7MTIzODs1OzEzMzg7NTsxNDM4OzU7MTUzODs1OzE2Mzg7NTsxNzM4OzU7MTgzODs1OzE5Mzg7NTsyMDM4OzU7MjEzODs1OzIyMzg7NTsyMzM4OzU7MjQzODs1OzI1Mzg7NTsyNjM4OzU7MjczODs1OzI4Mzg7NTsyOTM4OzU7MzAzODs1OzMxMzg7NTszMjM4OzU7MzMzODs1OzM0Mzg7NTszNTM4OzU7MzYzODs1OzM3Mzg7NTszODM4OzU7MzkzODs1OzQwMzg7NTs0MTM4OzU7NDIzODs1OzQzMzg7NTs0NDM4OzU7NDUzODs1OzQ2Mzg7NTs0NzM4OzU7NDgzODs1OzQ5Mzg7NTs1MDM4OzU7NTEzODs1OzUyMzg7NTs1MzM4OzU7NTQzODs1OzU1Mzg7NTs1NjM4OzU7NTczODs1OzU4Mzg7NTs1OTM4OzU7NjAzODs1OzYxMzg7NTs2MjM4OzU7NjMzODs1OzY0Mzg7NTs2NTM4OzU7NjYzODs1OzY3Mzg7NTs2ODM4OzU7NjkzODs1OzcwMzg7NTs3MTM4OzU7NzIzODs1OzczMzg7NTs3NDM4OzU7NzUzODs1Ozc2Mzg7NTs3NzM4OzU7NzgzODs1Ozc5Mzg7NTs4MDM4OzU7ODEzODs1OzgyMzg7NTs4MzM4OzU7ODQzODs1Ozg1Mzg7NTs4NjM4OzU7ODczODs1Ozg4Mzg7NTs4OTM4OzU7OTAzODs1OzkxMzg7NTs5MjM4OzU7OTMzODs1Ozk0Mzg7NTs5NTM4OzU7OTYzODs1Ozk3Mzg7NTs5ODM4OzU7OTkzODs1OzEwMDM4OzU7MTAxMzg7NTsxMDIzODs1OzEwMzM4OzU7MTA0Mzg7NTsxMDUzODs1OzEwNjM4OzU7MTA3Mzg7NTsxMDgzODs1OzEwOTM4OzU7MTEwMzg7NTsxMTEzODs1OzExMjM4OzU7MTEzMzg7NTsxMTQzODs1OzExNTM4OzU7MTE2Mzg7NTsxMTczODs1OzExODM4OzU7MTE5Mzg7NTsxMjAzODs1OzEyMTM4OzU7MTIyMzg7NTsxMjMzODs1OzEyNDM4OzU7MTI1Mzg7NTsxMjYzODs1OzEyNzM4OzU7MTI4Mzg7NTsxMjkzODs1OzEzMDM4OzU7MTMxMzg7NTsxMzIzODs1OzEzMzM4OzU7MTM0Mzg7NTsxMzUzODs1OzEzNjM4OzU7MTM3Mzg7NTsxMzgzODs1OzEzOTM4OzU7MTQwMzg7NTsxNDEzODs1OzE0MjM4OzU7MTQzMzg7NTsxNDQzODs1OzE0NTM4OzU7MTQ2Mzg7NTsxNDczODs1OzE0ODM4OzU7MTQ5Mzg7NTsxNTAzODs1OzE1MTM4OzU7MTUyMzg7NTsxNTMzODs1OzE1NDM4OzU7MTU1Mzg7NTsxNTYzODs1OzE1NzM4OzU7MTU4Mzg7NTsxNTkzODs1OzE2MDM4OzU7MTYxMzg7NTsxNjIzODs1OzE2MzM4OzU7MTY0Mzg7NTsxNjUzODs1OzE2NjM4OzU7MTY3Mzg7NTsxNjgzODs1OzE2OTM4OzU7MTcwMzg7NTsxNzEzODs1OzE3MjM4OzU7MTczMzg7NTsxNzQzODs1OzE3NTM4OzU7MTc2Mzg7NTsxNzczODs1OzE3ODM4OzU7MTc5Mzg7NTsxODAzODs1OzE4MTM4OzU7MTgyMzg7NTsxODMzODs1OzE4NDM4OzU7MTg1Mzg7NTsxODYzODs1OzE4NzM4OzU7MTg4Mzg7NTsxODkzODs1OzE5MDM4OzU7MTkxMzg7NTsxOTIzODs1OzE5MzM4OzU7MTk0Mzg7NTsxOTUzODs1OzE5NjM4OzU7MTk3Mzg7NTsxOTgzODs1OzE5OTM4OzU7MjAwMzg7NTsyMDEzODs1OzIwMjM4OzU7MjAzMzg7NTsyMDQzODs1OzIwNTM4OzU7MjA2Mzg7NTsyMDczODs1OzIwODM4OzU7MjA5Mzg7NTsyMTAzODs1OzIxMTM4OzU7MjEyMzg7NTsyMTMzODs1OzIxNDM4OzU7MjE1Mzg7NTsyMTYzODs1OzIxNzM4OzU7MjE4Mzg7NTsyMTkzODs1OzIyMDM4OzU7MjIxMzg7NTsyMjIzODs1OzIyMzM4OzU7MjI0Mzg7NTsyMjUzODs1OzIyNjM4OzU7MjI3Mzg7NTsyMjgzODs1OzIyOTM4OzU7MjMwMzg7NTsyMzEzODs1OzIzMjM4OzU7MjMzMzg7NTsyMzQzODs1OzIzNTM4OzU7MjM2Mzg7NTsyMzczODs1OzIzODM4OzU7MjM5Mzg7NTsyNDAzODs1OzI0MTM4OzU7MjQyMzg7NTsyNDMzODs1OzI0NDM4OzU7MjQ1Mzg7NTsyNDYzODs1OzI0NzM4OzU7MjQ4Mzg7NTsyNDkzODs1OzI1MDM4OzU7MjUxMzg7NTsyNTIzODs1OzI1MzM4OzU7MjU0Mzg7NTsyNTU0ODs1OzA0ODs1OzE0ODs1OzI0ODs1OzM0ODs1OzQ0ODs1OzU0ODs1OzY0ODs1Ozc0ODs1Ozg0ODs1Ozk0ODs1OzEwNDg7NTsxMTQ4OzU7MTI0ODs1OzEzNDg7NTsxNDQ4OzU7MTU0ODs1OzE2NDg7NTsxNzQ4OzU7MTg0ODs1OzE5NDg7NTsyMDQ4OzU7MjE0ODs1OzIyNDg7NTsyMzQ4OzU7MjQ0ODs1OzI1NDg7NTsyNjQ4OzU7Mjc0ODs1OzI4NDg7NTsyOTQ4OzU7MzA0ODs1OzMxNDg7NTszMjQ4OzU7MzM0ODs1OzM0NDg7NTszNTQ4OzU7MzY0ODs1OzM3NDg7NTszODQ4OzU7Mzk0ODs1OzQwNDg7NTs0MTQ4OzU7NDI0ODs1OzQzNDg7NTs0NDQ4OzU7NDU0ODs1OzQ2NDg7NTs0NzQ4OzU7NDg0ODs1OzQ5NDg7NTs1MDQ4OzU7NTE0ODs1OzUyNDg7NTs1MzQ4OzU7NTQ0ODs1OzU1NDg7NTs1NjQ4OzU7NTc0ODs1OzU4NDg7NTs1OTQ4OzU7NjA0ODs1OzYxNDg7NTs2MjQ4OzU7NjM0ODs1OzY0NDg7NTs2NTQ4OzU7NjY0ODs1OzY3NDg7NTs2ODQ4OzU7Njk0ODs1OzcwNDg7NTs3MTQ4OzU7NzI0ODs1OzczNDg7NTs3NDQ4OzU7NzU0ODs1Ozc2NDg7NTs3NzQ4OzU7Nzg0ODs1Ozc5NDg7NTs4MDQ4OzU7ODE0ODs1OzgyNDg7NTs4MzQ4OzU7ODQ0ODs1Ozg1NDg7NTs4NjQ4OzU7ODc0ODs1Ozg4NDg7NTs4OTQ4OzU7OTA0ODs1OzkxNDg7NTs5MjQ4OzU7OTM0ODs1Ozk0NDg7NTs5NTQ4OzU7OTY0ODs1Ozk3NDg7NTs5ODQ4OzU7OTk0ODs1OzEwMDQ4OzU7MTAxNDg7NTsxMDI0ODs1OzEwMzQ4OzU7MTA0NDg7NTsxMDU0ODs1OzEwNjQ4OzU7MTA3NDg7NTsxMDg0ODs1OzEwOTQ4OzU7MTEwNDg7NTsxMTE0ODs1OzExMjQ4OzU7MTEzNDg7NTsxMTQ0ODs1OzExNTQ4OzU7MTE2NDg7NTsxMTc0ODs1OzExODQ4OzU7MTE5NDg7NTsxMjA0ODs1OzEyMTQ4OzU7MTIyNDg7NTsxMjM0ODs1OzEyNDQ4OzU7MTI1NDg7NTsxMjY0ODs1OzEyNzQ4OzU7MTI4NDg7NTsxMjk0ODs1OzEzMDQ4OzU7MTMxNDg7NTsxMzI0ODs1OzEzMzQ4OzU7MTM0NDg7NTsxMzU0ODs1OzEzNjQ4OzU7MTM3NDg7NTsxMzg0ODs1OzEzOTQ4OzU7MTQwNDg7NTsxNDE0ODs1OzE0MjQ4OzU7MTQzNDg7NTsxNDQ0ODs1OzE0NTQ4OzU7MTQ2NDg7NTsxNDc0ODs1OzE0ODQ4OzU7MTQ5NDg7NTsxNTA0ODs1OzE1MTQ4OzU7MTUyNDg7NTsxNTM0ODs1OzE1NDQ4OzU7MTU1NDg7NTsxNTY0ODs1OzE1NzQ4OzU7MTU4NDg7NTsxNTk0ODs1OzE2MDQ4OzU7MTYxNDg7NTsxNjI0ODs1OzE2MzQ4OzU7MTY0NDg7NTsxNjU0ODs1OzE2NjQ4OzU7MTY3NDg7NTsxNjg0ODs1OzE2OTQ4OzU7MTcwNDg7NTsxNzE0ODs1OzE3MjQ4OzU7MTczNDg7NTsxNzQ0ODs1OzE3NTQ4OzU7MTc2NDg7NTsxNzc0ODs1OzE3ODQ4OzU7MTc5NDg7NTsxODA0ODs1OzE4MTQ4OzU7MTgyNDg7NTsxODM0ODs1OzE4NDQ4OzU7MTg1NDg7NTsxODY0ODs1OzE4NzQ4OzU7MTg4NDg7NTsxODk0ODs1OzE5MDQ4OzU7MTkxNDg7NTsxOTI0ODs1OzE5MzQ4OzU7MTk0NDg7NTsxOTU0ODs1OzE5NjQ4OzU7MTk3NDg7NTsxOTg0ODs1OzE5OTQ4OzU7MjAwNDg7NTsyMDE0ODs1OzIwMjQ4OzU7MjAzNDg7NTsyMDQ0ODs1OzIwNTQ4OzU7MjA2NDg7NTsyMDc0ODs1OzIwODQ4OzU7MjA5NDg7NTsyMTA0ODs1OzIxMTQ4OzU7MjEyNDg7NTsyMTM0ODs1OzIxNDQ4OzU7MjE1NDg7NTsyMTY0ODs1OzIxNzQ4OzU7MjE4NDg7NTsyMTk0ODs1OzIyMDQ4OzU7MjIxNDg7NTsyMjI0ODs1OzIyMzQ4OzU7MjI0NDg7NTsyMjU0ODs1OzIyNjQ4OzU7MjI3NDg7NTsyMjg0ODs1OzIyOTQ4OzU7MjMwNDg7NTsyMzE0ODs1OzIzMjQ4OzU7MjMzNDg7NTsyMzQ0ODs1OzIzNTQ4OzU7MjM2NDg7NTsyMzc0ODs1OzIzODQ4OzU7MjM5NDg7NTsyNDA0ODs1OzI0MTQ4OzU7MjQyNDg7NTsyNDM0ODs1OzI0NDQ4OzU7MjQ1NDg7NTsyNDY0ODs1OzI0NzQ4OzU7MjQ4NDg7NTsyNDk0ODs1OzI1MDQ4OzU7MjUxNDg7NTsyNTI0ODs1OzI1MzQ4OzU7MjU0NDg7NTsyNTV46yAAbwAAAGsBAAAXAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTAvc3JjL3BhcmtpbmdfbG90LnJzAHjrIABvAAAASwAAABsAAAB46yAAbwAAAFIAAAAeAAAAeOsgAG8AAABOAAAAFQAAAHjrIABvAAAASgEAAAwAAABQYXJraW5nIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQAAKOwgACYAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAABY7CAAdgAAABoAAAAJAAAAWOwgAHYAAAAqAAAACQAAAFADAAAMAAAABAAAAFEDAABSAwAAUwMAAAAAAAAAAAAAAQAAALACAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC0xLjEwLjYvc3JjL2J1aWxkZXJzLnJzAAAAGO0gAGEAAABHAAAACQAAAFN5bnRheCgKjO0gAAgAAABDb21waWxlZFRvb0JpZy9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2JveGVkL2NvbnZlcnQucnOq7SAAUgAAAFIAAAATAAAAQWhvQ29yYXNpY2s6OnRyeV9maW5kIGlzIG5vdCBleHBlY3RlZCB0byBmYWlsL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9haG9jb3Jhc2ljay5ycwA57iAAagAAAJYBAAAOAAAAVAMAAGQBAAAEAAAA+wIAAFQDAABkAQAABAAAAPwCAABVAwAA/gIAANoCAAD/AgAAAAMAAAEDAABWAwAAVwMAAAQDAAAFAwAABgMAAAcDAAAIAwAACQMAAAoDAAALAwAA+wIAALTuIABYAwAASAEAAAQAAADpAgAAWAMAAEgBAAAEAAAA6gIAAFkDAADsAgAA2gIAAO0CAADuAgAA7wIAAPACAABaAwAA8gIAAPMCAAD0AgAA9QIAAPYCAAD3AgAA+AIAAPkCAADpAgAAHO8gAFsDAABcAQAABAAAAMsAAABbAwAAXAEAAAQAAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADdAgAA3gIAAFwDAADgAgAA4QIAAOICAADjAgAA5AIAAOUCAADmAgAA5wIAAMsAAACE7yAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9kZmEucnMvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL25mYS9jb250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AAAWAQAAFQAAAEludmFsaWRJbnB1dEFuY2hvcmVkSW52YWxpZElucHV0VW5hbmNob3JlZFVuc3VwcG9ydGVkU3RyZWFtVW5zdXBwb3J0ZWRPdmVybGFwcGluZ1Vuc3VwcG9ydGVkRW1wdHlidWNrZXRzaGFzaF9sZW5oYXNoXzJwb3cvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9ib3hlZC5ycwA9+CAASgAAAOkGAAAfAAAATvAgAG0AAADFAAAAHAAAAE7wIABtAAAA3QAAABkAAABO8CAAbQAAAN0AAAAiAAAATvAgAG0AAADqAAAALQAAAE7wIABtAAAA5wAAAC0AAABO8CAAbQAAAOQAAAAtAAAATvAgAG0AAADhAAAALQAAAE7wIABtAAAA1AAAACkAAABO8CAAbQAAAM4AAAApAAAATvAgAG0AAAD1AAAAIAAAAE7wIABtAAAAGgEAABoAAABO8CAAbQAAADABAAAXAAAATvAgAG0AAAApAQAANwAAABzxIABwAAAAmQIAABoAAAAc8SAAcAAAAK0CAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2RmYS9vbmVwYXNzLnJziPkgAGwAAAA2AgAAHAAAAIj5IABsAAAAXAIAAAkAAACI+SAAbAAAAHICAAAsAAAAbXVsdGlwbGUgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBtYXRjaCBzdGF0ZQCI+SAAbAAAAGcCAAAxAAAAdG9vIG1hbnkgZXhwbGljaXQgY2FwdHVyaW5nIGdyb3VwcyAobWF4IGlzIDE2KW1hdGNoIHN0YXRlcyBzaG91bGQgYmUgYSBwcm9wZXIgc3Vic2V0IG9mIGFsbCBzdGF0ZXMAAIj5IABsAAAA7QIAADsAAABjb25mbGljdGluZyB0cmFuc2l0aW9uYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5kZmEuc3RhcnRzLmlzX2VtcHR5KCkAAIj5IABsAAAAMQMAABUAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmRmYS5zdGFydHMubGVuKCkgPT0gcGlkLm9uZV9tb3JlKCkAAACI+SAAbAAAADMDAAAaAAAAiPkgAGwAAAA2AwAAGQAAAIj5IABsAAAATQMAADEAAACI+SAAbAAAAFQDAAAbAAAAiPkgAGwAAABVAwAAIQAAAG11bHRpcGxlIGVwc2lsb24gdHJhbnNpdGlvbnMgdG8gc2FtZSBzdGF0ZQAAiPkgAGwAAACXAwAAFAAAAIj5IABsAAAAxwcAACoAAACI+SAAbAAAAMoHAAAaAAAAiPkgAGwAAADOBwAAJgAAAIj5IABsAAAA6AcAAB0AAACI+SAAbAAAAOgHAAAvAAAAiPkgAGwAAADpBwAAGwAAAIj5IABsAAAA6QcAACsAAACI+SAAbAAAAFcIAAAuAAAAiPkgAGwAAACsCAAAEgAAAIj5IABsAAAAtwgAABQAAACI+SAAbAAAANQIAAATAAAAiPkgAGwAAADcCAAAEwAAAIj5IABsAAAA7AgAABsAAACI+SAAbAAAAPcIAAAjAAAAiPkgAGwAAAD9CAAAEwAAAIj5IABsAAAAFQkAAEEAAACI+SAAbAAAACIJAAAYAAAAiPkgAGwAAAAsCQAAJgAAAG9uZXBhc3M6OkRGQSgKc3RhdGUgbGVuZ3RoOiAe/SAADgAAANjQJgABAAAAcGF0dGVybiBsZW5ndGg6IDz9IAAQAAAA2NAmAAEAAAApCgAAXP0gAAIAAABTVEFSVChBTEwpOiBo/SAADAAAANjQJgABAAAAU1RBUlQocGF0dGVybjogKTogAACE/SAADwAAAJP9IAADAAAA2NAmAAEAAAAgICogRCAAAAIAAAAAAAAAAAAGAAAAAAAAAAAAIAAA6SAoAADQ/SAAAgAAALM+JwABAAAAID0+IAEAAAAAAAAAZ8smAAEAAADk/SAABAAAAAEAAAAAAAAA5P0gAAQAAAAgKE1XKQAAAIj5IABsAAAADgoAACEAAABnyyYAAQAAAE4vQVNlcnJvciBidWlsZGluZyBORkEvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvZGZhL3JlbWFwcGVyLnJzAEb+IABtAAAAbgAAABIAAABG/iAAbQAAAI0AAAAgAAAARv4gAG0AAACVAAAAIAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9oeWJyaWQvZGZhLnJzAOT+IABrAAAAxwQAAB4AAADk/iAAawAAAOkFAAAeAAAAbm8gcXVpdCBpbiBzdGFydCB3aXRob3V0IGxvb2stYmVoaW5k5P4gAGsAAABFBgAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IGlkLmlzX21hdGNoKCkA5P4gAGsAAAC1BgAACQAAAG5vIGluLXByb2dyZXNzIHNlYXJjaCB0byB1cGRhdGUA5P4gAGsAAAC3BwAAJAAAAG5vIGluLXByb2dyZXNzIHNlYXJjaCB0byBmaW5pc2gA5P4gAGsAAADDBwAAIgAAAOT+IABrAAAAUwgAAB8AAADk/iAAawAAAAQJAAAbAAAA5P4gAGsAAAAWCQAAOgAAAGFkZGluZyBvbmUgc3RhdGUgYWZ0ZXIgY2FjaGUgY2xlYXIgbXVzdCB3b3Jr5P4gAGsAAAC8CQAAEgAAAGNhbm5vdCBzYXZlIHNlbnRpbmVsIHN0YXRlAACgACEAGgAAAOT+IABrAAAAqQkAAA0AAADk/iAAawAAAOYJAABAAAAA5P4gAGsAAADnCQAARwAAAOT+IABrAAAA6AkAAEcAAADk/iAAawAAAOkJAAAJAAAA5P4gAGsAAADqCQAACQAAAOT+IABrAAAA6wkAAAkAAABzdGF0ZSBzYXZlciBkb2VzIG5vdCBoYXZlIHNhdmVkIHN0YXRlIElE5P4gAGsAAAAUCgAADgAAAGludmFsaWQgJ2Zyb20nIGlkOiAAbAEhABMAAADk/iAAawAAACkKAAAJAAAAaW52YWxpZCAndG8nIGlkOiAAAACYASEAEQAAAOT+IABrAAAAKgoAAAkAAADk/iAAawAAAC0KAAAZAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5hc19yZWYoKS5pc192YWxpZChpZCnk/iAAawAAADsKAAAJAAAAYXR0ZW1wdGVkIHRvIHNlYXJjaCBmb3IgYSBzcGVjaWZpYyBwYXR0ZXJuIHdpdGhvdXQgZW5hYmxpbmcgc3RhcnRzX2Zvcl9lYWNoX3BhdHRlcm4AEAIhAFMAAADk/iAAawAAAEEKAAARAAAA5P4gAGsAAABKCgAAGgAAAOT+IABrAAAAjgoAAB0AAADk/iAAawAAAJYKAAAbAAAA5P4gAGsAAACyCgAAMwAAAOT+IABrAAAAuwoAADMAAAAAAAAAAAAAAAAAAAACAAAAY2Fubm90IGJ1aWxkIGxhenkgREZBcyBmb3IgcmVnZXhlcyB3aXRoIFVuaWNvZGUgd29yZCBib3VuZGFyaWVzOyBzd2l0Y2ggdG8gQVNDSUkgd29yZCBib3VuZGFyaWVzLCBvciBoZXVyaXN0aWNhbGx5IGVuYWJsZSBVbmljb2RlIHdvcmQgYm91bmRhcmllcyBvciB1c2UgYSBkaWZmZXJlbnQgcmVnZXggZW5naW5lKSBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkcmV2ZXJzZSBzZWFyY2ggbXVzdCBtYXRjaCBpZiBmb3J3YXJkIHNlYXJjaCBkb2VzL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2h5YnJpZC9yZWdleC5yc9sDIQBtAAAA8QEAAA4AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvaHlicmlkL3NlYXJjaC5ycwAAWAQhAG4AAABZAAAAKQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHNpZCBiZWluZyB1bmtub3duIGlzIGEgYnVn2AQhAEQAAABYBCEAbgAAAB0BAAARAAAAWAQhAG4AAAAaAQAALQAAAFgEIQBuAAAAVwEAACkAAABYBCEAbgAAAK0BAAARAAAAWAQhAG4AAACqAQAALQAAAFgEIQBuAAAA+wEAACUAAABYBCEAbgAAACICAAARAAAAWAQhAG4AAAAdAgAAFQAAAFgEIQBuAAAA4gIAABQAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBmb3VuZCBpbXBvc3NpYmxlIGVycm9yIGluIG1ldGEgZW5naW5lOiAAAAC0BSEAUQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL2Vycm9yLnJzABAGIQBrAAAA7QAAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9saW1pdGVkLnJzAAAAjAYhAG0AAACOAAAAJQAAAIwGIQBtAAAA6AAAABQAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9saXRlcmFsLnJzAAAAHAchAG0AAAAeAAAADQAAABwHIQBtAAAAPgAAAA4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBsaXRlcmFsLCBnb3QgrAchAEAAAAAcByEAbQAAADgAAAAeAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgbGl0ZXJhbCBvciBjb25jYXQsIGdvdCAAAAQIIQBKAAAAHAchAG0AAAA8AAAAEgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL3JlZ2V4LnJzAGgIIQBrAAAAiAcAABMAAABoCCEAawAAAG8NAAASAAAAaAghAGsAAABlDQAAEgAAAGsDAAAIAAAABAAAAGwDAABtAwAAbQMAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p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NgAcKCEAagAAAHgDAAAVAAAAHCghAGoAAACkAwAAKAAAABwoIQBqAAAAsAMAACYAAAAcKCEAagAAAL0DAAAQAAAAHCghAGoAAADMAwAAEAAAABwoIQBqAAAA2gMAADgAAAAcKCEAagAAADcEAAAxAAAAHCghAGoAAABMBAAAOAAAABwoIQBqAAAAWwQAADgAAAAcKCEAagAAAJ4EAAA4AAAAHCghAGoAAADIBAAAMQAAABwoIQBqAAAAQQYAAC0AAAAczSYAagAAAPABAAAeAAAAHM0mAGoAAADyAQAAGAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci9ieXRlc2V0LnJzANQpIQB3AAAAIwAAABEAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9wcmVmaWx0ZXIvbWVtY2hyLnJzAABcKiEAdgAAACcAAAAtAAAAXCohAHYAAABVAAAAFgAAAFwqIQB2AAAAVgAAABYAAABcKiEAdgAAAGQAAAA2AAAAXCohAHYAAACSAAAAFgAAAFwqIQB2AAAAkwAAABYAAABcKiEAdgAAAJQAAAAWAAAAXCohAHYAAACiAAAAPgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci9tZW1tZW0ucnMAAFQrIQB2AAAAKwAAACcAAABUKyEAdgAAADsAAAAYAAAAYWhvLWNvcmFzaWNrIERGQSBzaG91bGQgbmV2ZXIgZmFpbC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci90ZWRkeS5ycwAOLCEAdQAAAHEAAAASAAAAAAAAAAEAAAABAAAAzgAAAN8DAADgAwAA4QMAAOIDAAAAAAAAAgAAAAEAAADQAAAA4wMAAOQDAADhAwAA4gMAAAAAAAADAAAAAQAAANEAAADlAwAA5gMAAOEDAADiAwAADwMAAEgAAAAIAAAA0gAAAOcDAADoAwAA6QMAAL4DAADqAwAAkAEAAAQAAADTAAAA6wMAAOwDAADtAwAA7gMAAAAAAAAAAQAAAQAAANQAAADvAwAA8AMAAOEDAADxAwAA8gMAAAwAAAAEAAAA1QAAAPMDAAD0AwAA9QMAAKEDAABTdGFydEJ5dGVNYXB7L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvd2lyZS5ycwCBLSEAagAAAFcCAAAOAAAAgS0hAGoAAAB4AwAADAAAAAAAAAAAAAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2RldGVybWluaXplL3N0YXRlLnJzFS4hAHcAAADyAAAAIwAAABUuIQB3AAAAjQEAAAkAAAAVLiEAdwAAAJgBAAAJAAAAFS4hAHcAAAC9AQAAIwAAABUuIQB3AAAAyAEAACMAAAAVLiEAdwAAAOMBAAA0AAAAFS4hAHcAAAAMAgAAHwAAABUuIQB3AAAAEAIAABkAAAAVLiEAdwAAACMCAAAgAAAAFS4hAHcAAAAjAgAAOQAAABUuIQB3AAAAMQIAAC8AAAAVLiEAdwAAAF4CAAAPAAAAFS4hAHcAAABnAgAADwAAABUuIQB3AAAAbwIAAA8AAAAVLiEAdwAAAIECAAA1AAAAFS4hAHcAAACHAgAANQAAABUuIQB3AAAAygIAADEAAAAVLiEAdwAAAMYCAAAJAAAAFS4hAHcAAAAAAwAACgAAABUuIQB3AAAA/QIAAA4AAAAVLiEAdwAAABwDAAAeAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3RhY2suaXNfZW1wdHkoKS9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2RldGVybWluaXplL21vZC5ycwD+LyEAdQAAAHgBAAAFAAAA/i8hAHUAAACAAQAACwAAAP4vIQB1AAAApAEAABsAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9lbXB0eS5ycwCkMCEAawAAAPkAAAA6AAAA7M0mAGwAAAD7AwAACQAAAP///39QYXR0ZXJuU2V0IHNob3VsZCBoYXZlIHN1ZmZpY2llbnQgY2FwYWNpdHkAAOzNJgBsAAAAywQAAA4AAABxdWl0IHNlYXJjaCBhZnRlciBvYnNlcnZpbmcgYnl0ZSAgYXQgb2Zmc2V0IHAxIQAhAAAAkTEhAAsAAABnYXZlIHVwIHNlYXJjaGluZyBhdCBvZmZzZXQgrDEhABwAAABoYXlzdGFjayBvZiBsZW5ndGggIGlzIHRvbyBsb25nANAxIQATAAAA4zEhAAwAAAB1bmFuY2hvcmVkIHNlYXJjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRhbmNob3JlZCBzZWFyY2hlcyBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkYW5jaG9yZWQgc2VhcmNoZXMgZm9yIGEgc3BlY2lmaWMgcGF0dGVybiAoXjIhACoAAACNAyEAHgAAAHNwYXJzZSBzZXQgY2FwYWNpdHkgY2Fubm90IGV4Y2NlZCAAAJgyIQAiAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvc3BhcnNlX3NldC5yc8QyIQBwAAAAggAAAAkAAAAgZXhjZWVkcyBjYXBhY2l0eSBvZiAgd2hlbiBpbnNlcnRpbmcgAAAAAQAAAAAAAABEMyEAFQAAAFkzIQAQAAAAxDIhAHAAAACyAAAACQAAAMQyIQBwAAAAvQAAABQAAADEMiEAcAAAAMUAAAAgAAAAxDIhAHAAAADGAAAANAAAAMQyIQBwAAAA0QAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvdXRmOC5ycwAA1DQhAGoAAABDAAAAKwAAANQ0IQBqAAAAVQAAADgAAADUNCEAagAAAFgAAAAYAAAA9gMAAGAAAAAQAAAA9wMAAPgDAAAEAAAABAAAAMQAAAAAAAAAAAEAAAEAAAD5AwAAAAAAAAABAAABAAAAhQAAAAAAAAAgAAAAEAAAAPoDAABjb25maWduZmFzdHJpZGUyc3RhcnRfbWFwY2xhc3Nlc3F1aXRzZXRjYWNoZV9jYXBhY2l0eQAAAMA1IQAGAAAAxjUhAAMAAADJNSEABwAAANA1IQAJAAAA2TUhAAcAAADgNSEABwAAAOc1IQAOAAAAREZBAAAAAAABAAAAAQAAAJEAAAD7AwAAEAAAAAQAAAChAAAAAAAAAAEAAAABAAAA/AMAAAAAAAAwAAAAEAAAAP0DAAAAAAAACAAAAAQAAAD+AwAAAAAAAAQAAAAEAAAA/wMAAG1hdGNoX2tpbmRwcmVzdGFydHNfZm9yX2VhY2hfcGF0dGVybmJ5dGVfY2xhc3Nlc3VuaWNvZGVfd29yZF9ib3VuZGFyeXNwZWNpYWxpemVfc3RhcnRfc3RhdGVzc2tpcF9jYWNoZV9jYXBhY2l0eV9jaGVja21pbmltdW1fY2FjaGVfY2xlYXJfY291bnRtaW5pbXVtX2J5dGVzX3Blcl9zdGF0ZQAAAJQ2IQAKAAAAnjYhAAMAAAChNiEAFwAAALg2IQAMAAAAxDYhABUAAADgNSEABwAAANk2IQAXAAAA5zUhAA4AAADwNiEAGQAAAAk3IQAZAAAAIjchABcAAABDb25maWdDYWNoZUVycm9yTGF6eVN0YXRlSURMYXp5U3RhdGVJREVycm9yYXR0ZW1wdGVkZm9yd2FyZHJldmVyc2VSZWdleEluZm9SZWdleEluZm9JcHJvcHNfdW5pb24AAAAAAQAAAAEAAAAABAAAdXRmOF9lbXB0eWF1dG9wcmV3aGljaF9jYXB0dXJlc25mYV9zaXplX2xpbWl0b25lcGFzc19zaXplX2xpbWl0aHlicmlkX2NhY2hlX2NhcGFjaXR5aHlicmlkZGZhZGZhX3NpemVfbGltaXRkZmFfc3RhdGVfbGltaXRvbmVwYXNzYmFja3RyYWNrbGluZV90ZXJtaW5hdG9yAAAAlDYhAAoAAAAEOCEACgAAAA44IQAHAAAAnjYhAAMAAAAVOCEADgAAACM4IQAOAAAAMTghABIAAABDOCEAFQAAAFg4IQAGAAAAXjghAAMAAABhOCEADgAAAG84IQAPAAAAfjghAAcAAACFOCEACQAAALg2IQAMAAAAjjghAA8AAABQcmVncm91cF9pbmZvAAAAAQQAAAQAAAAEAAAAAgQAAAMEAAAQAAAABAAAAAQEAAAFBAAABAAAAAQAAAAGBAAABwQAABgAAAAEAAAACAQAAAkEAAAcAAAABAAAAAoEAAALBAAAPAEAAAQAAAAMBAAADQQAACAFAAAQAAAADgQAAAAAAAAEAAAABAAAAA8EAABpbmZvbmZhcmV2cGlrZXZtsDkhAAQAAACeNiEAAwAAAMY1IQADAAAAtDkhAAYAAAC6OSEABgAAAIU4IQAJAAAAfjghAAcAAABYOCEABgAAAF44IQADAAAAQ29yZVJldmVyc2VBbmNob3JlZGNvcmVSZXZlcnNlU3VmZml4UmV2ZXJzZUlubmVycHJlaW5uZXJQaWtlVk1QaWtlVk1FbmdpbmVCb3VuZGVkQmFja3RyYWNrZXJCb3VuZGVkQmFja3RyYWNrZXJFbmdpbmVPbmVQYXNzT25lUGFzc0VuZ2luZUh5YnJpZEh5YnJpZEVuZ2luZURGQUVuZ2luZVJldmVyc2VIeWJyaWRSZXZlcnNlSHlicmlkRW5naW5lUmV2ZXJzZURGQVJldmVyc2VERkFFbmdpbmV2aXNpdGVkX2NhcGFjaXR5QWxsSW1wbGljaXRUb29NYW55UGF0dGVybnNCeXRlU2V0Yml0c0dyb3VwSW5mb0dyb3VwSW5mb0lubmVyc2xvdF9yYW5nZXNuYW1lX3RvX2luZGV4aW5kZXhfdG9fbmFtZW1lbW9yeV9leHRyYUdyb3VwSW5mb0Vycm9yZXJyVG9vTWFueUdyb3Vwc21pbmltdW1NaXNzaW5nR3JvdXBzRmlyc3RNdXN0QmVVbm5hbWVkRHVwbGljYXRlcmVnZXg6IHRocmVhZCBJRCBhbGxvY2F0aW9uIHNwYWNlIGV4aGF1c3RlZAAArzshACsAAAAczSYAagAAAF4BAAARAAAAQWhvQ29yYXNpY2thY01lbWNock1lbWNocjJNZW1jaHIzTWVtbWVtZmluZGVyc2VhcmNoZXJhbmNob3JlZF9hY1ByZWZpbHRlcmlzX2Zhc3RtYXhfbmVlZGxlX2xlblNtYWxsSW5kZXhTbWFsbEluZGV4RXJyb3JQYXR0ZXJuSUQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9wcmltaXRpdmVzLnJzdDwhAHAAAADxAgAAAQAAAFBhdHRlcm5JREVycm9yAAB0PCEAcAAAAPICAAABAAAAU3RhdGVJRGNhbm5vdCBjcmVhdGUgaXRlcmF0b3IgZm9yIFN0YXRlSUQgd2hlbiBudW1iZXIgb2YgZWxlbWVudHMgZXhjZWVkIAAAABs9IQBCAAAATm9uV29yZEJ5dGVXb3JkQnl0ZVRleHRMaW5lTEZMaW5lQ1JDdXN0b21MaW5lVGVybWluYXRvclBhdHRlcm5TZXRJbnNlcnRFcnJvcmNhcGFjaXR5Tm9ZZXNQYXR0ZXJuUXVpdGJ5dGVHYXZlVXBIYXlzdGFja1Rvb0xvbmdsZW5VbnN1cHBvcnRlZEFuY2hvcmVkbW9kZQAQBAAADAAAAAQA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dGVyIGNsYXNzIHJhbmdlLCB0aGUgc3RhcnQgbXVzdCBiZSA8PSB0aGUgZW5kaW52YWxpZCByYW5nZSBib3VuZGFyeSwgbXVzdCBiZSBhIGxpdGVyYWx1bmNsb3NlZCBjaGFyYWN0ZXIgY2xhc3NkZWNpbWFsIGxpdGVyYWwgZW1wdHlkZWNpbWFsIGxpdGVyYWwgaW52YWxpZGhleGFkZWNpbWFsIGxpdGVyYWwgZW1wdHloZXhhZGVjaW1hbCBsaXRlcmFsIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLCByZWFjaGVkIGVuZCBvZiBwYXR0ZXJuIHByZW1hdHVyZWx5dW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZWRhbmdsaW5nIGZsYWcgbmVnYXRpb24gb3BlcmF0b3JkdXBsaWNhdGUgZmxhZ2ZsYWcgbmVnYXRpb24gb3BlcmF0b3IgcmVwZWF0ZWRleHBlY3RlZCBmbGFnIGJ1dCBnb3QgZW5kIG9mIHJlZ2V4dW5yZWNvZ25pemVkIGZsYWdkdXBsaWNhdGUgY2FwdHVyZSBncm91cCBuYW1lZW1wdHkgY2FwdHVyZSBncm91cCBuYW1laW52YWxpZCBjYXB0dXJlIGdyb3VwIGNoYXJhY3RlcnVuY2xvc2VkIGNhcHR1cmUgZ3JvdXAgbmFtZXVuY2xvc2VkIGdyb3VwdW5vcGVuZWQgZ3JvdXBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBwYXJlbnRoZXNlcy9icmFja2V0cyAo9kohADoAAACzPicAAQAAAGludmFsaWQgcmVwZXRpdGlvbiBjb3VudCByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZHJlcGV0aXRpb24gcXVhbnRpZmllciBleHBlY3RzIGEgdmFsaWQgZGVjaW1hbHVuY2xvc2VkIGNvdW50ZWQgcmVwZXRpdGlvbnJlcGV0aXRpb24gb3BlcmF0b3IgbWlzc2luZyBleHByZXNzaW9uc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiBpcyBlaXRoZXIgdW5jbG9zZWQgb3IgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXJ1bnJlY29nbml6ZWQgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IGFzc2VydGlvbiwgdmFsaWQgY2hvaWNlcyBhcmU6IHN0YXJ0LCBlbmQsIHN0YXJ0LWhhbGYgb3IgZW5kLWhhbGZmb3VuZCBlaXRoZXIgdGhlIGJlZ2lubmluZyBvZiBhIHNwZWNpYWwgd29yZCBib3VuZGFyeSBvciBhIGJvdW5kZWQgcmVwZXRpdGlvbiBvbiBhIFxiIHdpdGggYW4gb3BlbmluZyBicmFjZSwgYnV0IG5vIGNsb3NpbmcgYnJhY2VpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzYmFja3JlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWRsb29rLWFyb3VuZCwgaW5jbHVkaW5nIGxvb2stYWhlYWQgYW5kIGxvb2stYmVoaW5kLCBpcyBub3Qgc3VwcG9ydGVkL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9hc3QvbW9kLnJzYWxudW1hc2NpaWJsYW5rY250cmxkaWdpdGdyYXBobG93ZXJwcmludHB1bmN0c3BhY2V1cHBlcnhkaWdpdAAAo00hAGYAAADnBAAAFAAAAKNNIQBmAAAA8wQAACMAAACjTSEAZgAAAA8GAAAUAAAAo00hAGYAAADMBgAAGwAAACcgJy9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvZGVidWcucnMAi04hAGQAAAAYAAAAPQAAAItOIQBkAAAAFQAAAA0AAACLTiEAZAAAADIAAAAbAAAAi04hAGQAAAAuAAAAIwAAAItOIQBkAAAAaAAAACsAAAABAAAAAQAAAHJlZ2V4IHBhcnNlIGVycm9yOgplcnJvcjogAABbTyEABwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p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U0hjXUFPpu2jx77h0cvG2dvO6vie7/////////////////////////////////////////////////////////////////////////////////////90cmllZCB0byB1bndyYXAgZXhwciBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAAPxWIQApAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvdHJhbnNsYXRlLnJzMFchAGwAAAABAQAAEgAAAHRyaWVkIHRvIHVud3JhcCBVbmljb2RlIGNsYXNzIGZyb20gSGlyRnJhbWUsIGdvdDogAACsVyEAMgAAADBXIQBsAAAACgEAABIAAAB0cmllZCB0byB1bndyYXAgYnl0ZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IAD4VyEALwAAADBXIQBsAAAAFwEAABIAAAB0cmllZCB0byB1bndyYXAgcmVwZXRpdGlvbiBmcm9tIEhpckZyYW1lLCBnb3Q6IABAWCEALwAAADBXIQBsAAAAJQEAABEAAAB0cmllZCB0byB1bndyYXAgZ3JvdXAgZnJvbSBIaXJGcmFtZSwgZ290OiAAAIhYIQAqAAAAMFchAGwAAAA0AQAAEQAAAHRyaWVkIHRvIHVud3JhcCBhbHQgcGlwZSBmcm9tIEhpckZyYW1lLCBnb3Q6IAAAAMxYIQAtAAAAMFchAGwAAAA/AQAAEQAAADBXIQBsAAAATgEAACcAAAAwVyEAbAAAAE8BAAAXAAAAMFchAGwAAABOAQAACQAAADBXIQBsAAAArAEAAC4AAAAwVyEAbAAAAKMBAAAuAAAAMFchAGwAAAC3AQAAJwAAADBXIQBsAAAAuAEAABwAAAAwVyEAbAAAALwBAAAnAAAAMFchAGwAAAC9AQAALAAAADBXIQBsAAAAzgEAACAAAAAwVyEAbAAAAM8BAAAbAAAAMFchAGwAAADFAQAAHwAAADBXIQBsAAAA/gEAAC4AAAAwVyEAbAAAAPoBAAAuAAAAMFchAGwAAAAKAgAALgAAADBXIQBsAAAABgIAAC4AAAAwVyEAbAAAABkCAAAuAAAAMFchAGwAAAAUAgAALgAAADBXIQBsAAAAIAIAACoAAAAwVyEAbAAAACwCAAAuAAAAMFchAGwAAAAnAgAALgAAADBXIQBsAAAAPgIAAC8AAAAwVyEAbAAAAEUCAAAvAAAAMFchAGwAAAAzAgAALwAAADBXIQBsAAAAOgIAAC8AAAAwVyEAbAAAAIwCAAAmAAAAMFchAGwAAACNAgAAJgAAADBXIQBsAAAAjgIAACYAAAAwVyEAbAAAAHMCAAAmAAAAMFchAGwAAAB0AgAAJgAAADBXIQBsAAAAdQIAACYAAAAwVyEAbAAAALgCAAAcAAAAMFchAGwAAAC4AgAAKQAAADBXIQBsAAAAwwIAACwAAAAwVyEAbAAAAMcCAAATAAAAMFchAGwAAADRAgAALAAAADBXIQBsAAAA0wIAABUAAAAwVyEAbAAAANUCAAATAAAAMFchAGwAAADbAgAAHAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgVW5pY29kZSBjbGFzc4RbIQBUAAAAMFchAGwAAADpAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgYnl0ZSBjbGFzcwAAAPBbIQBRAAAAMFchAGwAAADsAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgcmVwZXRpdGlvbgAAAFxcIQBRAAAAMFchAGwAAADvAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgZ3JvdXDIXCEATAAAADBXIQBsAAAA8gIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGFsdCBtYXJrZXIAAAAsXSEAUQAAADBXIQBsAAAA9QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGFsdCBicmFuY2ggbWFya2VymF0hAFgAAAAwVyEAbAAAAPgCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBVbmljb2RlIGNsYXNzAAAACF4hAFEAAAAwVyEAbAAAAAgDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBieXRlIGNsYXNzAAB0XiEATgAAADBXIQBsAAAACwMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IHJlcGV0aXRpb24AANxeIQBOAAAAMFchAGwAAAAOAwAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgYWx0LCBnb3QgZ3JvdXAAAABEXyEASQAAADBXIQBsAAAAEQMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGNvbmNhdCBtYXJrZXIAAACoXyEAUQAAADBXIQBsAAAAFAMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGFsdCwgZ290IGFsdCBicmFuY2ggbWFya2VyAAAAFGAhAFUAAAAwVyEAbAAAABcDAAARAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5mbGFncygpLnVuaWNvZGUoKTBXIQBsAAAAQwQAAAkAAAAMYXNzZXJ0aW9uIGZhaWxlZDogIXNlbGYuZmxhZ3MoKS51bmljb2RlKCkAADBXIQBsAAAAWQQAAAkAAAAwOUFaYXpBWmF6AH8JCSAgAB9/fzA5IX5heiB+IS86QFtge34JCQoKCwsMDA0NICBBWjA5QVpfX2F6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AAAEBQAABwUAAAYFAAAJBQAACAUAAAsFAAAKBQAADQUAAAwFAAAPBQAADgUAABEFAAAQBQAAEwUAABIFAAAVBQAAFAUAABcFAAAWBQAAGQUAABgFAAAbBQAAGgUAAB0FAAAcBQAAHwUAAB4FAAAhBQAAIAUAACMFAAAiBQAAJQUAACQFAAAnBQAAJgUAACkFAAAoBQAAKwUAACoFAAAtBQAALAUAAC8FAAAuBQAAYQUAAGIFAABjBQAAZAUAAGUFAABmBQAAZwUAAGgFAABpBQAAagUAAGsFAABsBQAAbQUAAG4FAABvBQAAcAUAAHEFAAByBQAAcwUAAHQFAAB1BQAAdgUAAHcFAAB4BQAAeQUAAHoFAAB7BQAAfAUAAH0FAAB+BQAAfwUAAIAFAACBBQAAggUAAIMFAACEBQAAhQUAAIYFAAAxBQAAMgUAADMFAAA0BQAANQUAADYFAAA3BQAAOAUAADkFAAA6BQAAOwUAADwFAAA9BQAAPgUAAD8FAABABQAAQQUAAEIFAABDBQAARAUAAEUFAABGBQAARwUAAEgFAABJBQAASgUAAEsFAABMBQAATQUAAE4FAABPBQAAUAUAAFEFAABSBQAAUwUAAFQFAABVBQAAVgUAAAAtAAABLQAAAi0AAAMtAAAELQAABS0AAAYtAAAHLQAACC0AAAktAAAKLQAACy0AAAwtAAANLQAADi0AAA8tAAAQLQAAES0AABItAAATLQAAFC0AABUtAAAWLQAAFy0AABgtAAAZLQAAGi0AABstAAAcLQAAHS0AAB4tAAAfLQAAIC0AACEtAAAiLQAAIy0AACQtAAAlLQAAJy0AAC0tAACQHAAAkRwAAJIcAACTHAAAlBwAAJUcAACWHAAAlxwAAJgcAACZHAAAmhwAAJscAACcHAAAnRwAAJ4cAACfHAAAoBwAAKEcAACiHAAAoxwAAKQcAAClHAAAphwAAKccAACoHAAAqRwAAKocAACrHAAArBwAAK0cAACuHAAArxwAALAcAACxHAAAshwAALMcAAC0HAAAtRwAALYcAAC3HAAAuBwAALkcAAC6HAAAvRwAAL4cAAC/HAAAcKsAAHGrAAByqwAAc6sAAHSrAAB1qwAAdqsAAHerAAB4qwAAeasAAHqrAAB7qwAAfKsAAH2rAAB+qwAAf6sAAICrAACBqwAAgqsAAIOr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AAA2HwAANx8AAEgfAABJHwAASh8AAEsfAABMHwAATR8AAEAfAABBHwAAQh8AAEMfAABEHwAARR8AAFkfAABbHwAAXR8AAF8fAABRHwAAUx8AAFUfAABXHwAAaB8AAGkfAABqHwAAax8AAGwfAABtHwAAbh8AAG8fAABgHwAAYR8AAGIfAABjHwAAZB8AAGUfAABmHwAAZx8AALofAAC7HwAAyB8AAMkfAADKHwAAyx8AANofAADbHwAA+B8AAPkfAADqHwAA6x8AAPofAAD7HwAAiB8AAIkfAACKHwAAix8AAIwfAACNHwAAjh8AAI8fAACAHwAAgR8AAIIfAACDHwAAhB8AAIUfAACGHwAAhx8AAJgfAACZHwAAmh8AAJsfAACcHwAAnR8AAJ4fAACfHwAAkB8AAJEfAACSHwAAkx8AAJQfAACVHwAAlh8AAJcfAACoHwAAqR8AAKofAACrHwAArB8AAK0fAACuHwAArx8AAKAfAAChHwAAoh8AAKMfAACkHwAApR8AAKYfAACnHwAAuB8AALkfAAC8HwAAsB8AALEfAABwHwAAcR8AALMfAABFAwAAmQMAALkDAADMHwAAch8AAHMfAAB0HwAAdR8AAMMfAADYHwAA2R8AANAfAADRHwAAdh8AAHcfAADoHwAA6R8AAOwfAADgHwAA4R8AAHofAAB7HwAA5R8AAPwfAAB4HwAAeR8AAHwfAAB9HwAA8x8AAKkDAADJAwAASwAAAGsAAADFAAAA5QAAAE4hAAAyIQAAcCEAAHEhAAByIQAAcyEAAHQhAAB1IQAAdiEAAHchAAB4IQAAeSEAAHohAAB7IQAAfCEAAH0hAAB+IQAAfyEAAGAhAABhIQAAYiEAAGMhAABkIQAAZSEAAGYhAABnIQAAaCEAAGkhAABqIQAAayEAAGwhAABtIQAAbiEAAG8hAACEIQAAgyEAANAkAADRJAAA0iQAANMkAADUJAAA1SQAANYkAADXJAAA2CQAANkkAADaJAAA2yQAANwkAADdJAAA3iQAAN8kAADgJAAA4SQAAOIkAADjJAAA5CQAAOUkAADmJAAA5yQAAOgkAADpJAAAtiQAALckAAC4JAAAuSQAALokAAC7JAAAvCQAAL0kAAC+JAAAvyQAAMAkAADBJAAAwiQAAMMkAADEJAAAxSQAAMYkAADHJAAAyCQAAMkkAADKJAAAyyQAAMwkAADNJAAAziQAAM8kAAAwLAAAMSwAADIsAAAzLAAANCwAADUsAAA2LAAANywAADgsAAA5LAAAOiwAADssAAA8LAAAPSwAAD4sAAA/LAAAQCwAAEEsAABCLAAAQywAAEQsAABFLAAARiwAAEcsAABILAAASSwAAEosAABLLAAATCwAAE0sAABOLAAATywAAFAsAABRLAAAUiwAAFMsAABULAAAVSwAAFYsAABXLAAAWCwAAFksAABaLAAAWywAAFwsAABdLAAAXiwAAF8sAAAALAAAASwAAAIsAAADLAAABCwAAAUsAAAGLAAABywAAAgsAAAJLAAACiwAAAssAAAMLAAADSwAAA4sAAAPLAAAECwAABEsAAASLAAAEywAABQsAAAVLAAAFiwAABcsAAAYLAAAGSwAABosAAAbLAAAHCwAAB0sAAAeLAAAHywAACAsAAAhLAAAIiwAACMsAAAkLAAAJSwAACYsAAAnLAAAKCwAACksAAAqLAAAKywAACwsAAAtLAAALiwAAC8sAABhLAAAYCwAAGsCAAB9HQAAfQIAADoCAAA+AgAAaCwAAGcsAABqLAAAaSwAAGwsAABrLAAAUQIAAHECAABQAgAAUgIAAHMsAAByLAAAdiwAAHUsAAA/AgAAQAIAAIEsAACALAAAgywAAIIsAACFLAAAhCwAAIcsAACGLAAAiSwAAIgsAACLLAAAiiwAAI0sAACMLAAAjywAAI4sAACRLAAAkCwAAJMsAACSLAAAlSwAAJQsAACXLAAAliwAAJksAACYLAAAmywAAJosAACdLAAAnCwAAJ8sAACeLAAAoSwAAKAsAACjLAAAoiwAAKUsAACkLAAApywAAKYsAACpLAAAqCwAAKssAACqLAAArSwAAKwsAACvLAAAriwAALEsAACwLAAAsywAALIsAAC1LAAAtCwAALcsAAC2LAAAuSwAALgsAAC7LAAAuiwAAL0sAAC8LAAAvywAAL4sAADBLAAAwCwAAMMsAADCLAAAxSwAAMQsAADHLAAAxiwAAMksAADILAAAyywAAMosAADNLAAAzCwAAM8sAADOLAAA0SwAANAsAADTLAAA0iwAANUsAADULAAA1ywAANYsAADZLAAA2CwAANssAADaLAAA3SwAANwsAADfLAAA3iwAAOEsAADgLAAA4ywAAOIsAADsLAAA6ywAAO4sAADtLAAA8ywAAPIsAACgEAAAoRAAAKIQAACjEAAApBAAAKUQAACmEAAApxAAAKgQAACpEAAAqhAAAKsQAACsEAAArRAAAK4QAACvEAAAsBAAALEQAACyEAAAsxAAALQQAAC1EAAAthAAALcQAAC4EAAAuRAAALoQAAC7EAAAvBAAAL0QAAC+EAAAvxAAAMAQAADBEAAAwhAAAMMQAADEEAAAxRAAAMcQAADNEAAAQaYAAECmAABDpgAAQqYAAEWmAABEpgAAR6YAAEamAABJpgAASKYAAIgcAABLpgAAiBwAAEqmAABNpgAATKYAAE+mAABOpgAAUaYAAFCmAABTpgAAUqYAAFWmAABUpgAAV6YAAFamAABZpgAAWKYAAFumAABapgAAXaYAAFymAABfpgAAXqYAAGGmAABgpgAAY6YAAGKmAABlpgAAZKYAAGemAABmpgAAaaYAAGimAABrpgAAaqYAAG2mAABspgAAgaYAAICmAACDpgAAgqYAAIWmAACEpgAAh6YAAIamAACJpgAAiKYAAIumAACKpgAAjaYAAIymAACPpgAAjqYAAJGmAACQpgAAk6YAAJKmAACVpgAAlKYAAJemAACWpgAAmaYAAJimAACbpgAAmqYAACOnAAAipwAAJacAACSnAAAnpwAAJqcAACmnAAAopwAAK6cAACqnAAAtpwAALKcAAC+nAAAupwAAM6cAADKnAAA1pwAANKcAADenAAA2pwAAOacAADinAAA7pwAAOqcAAD2nAAA8pwAAP6cAAD6nAABBpwAAQKcAAEOnAABCpwAARacAAESnAABHpwAARqcAAEmnAABIpwAAS6cAAEqnAABNpwAATKcAAE+nAABOpwAAUacAAFCnAABTpwAAUqcAAFWnAABUpwAAV6cAAFanAABZpwAAWKcAAFunAABapwAAXacAAFynAABfpwAAXqcAAGGnAABgpwAAY6cAAGKnAABlpwAAZKcAAGenAABmpwAAaacAAGinAABrpwAAaqcAAG2nAABspwAAb6cAAG6nAAB6pwAAeacAAHynAAB7pwAAeR0AAH+nAAB+pwAAgacAAICnAACDpwAAgqcAAIWnAACEpwAAh6cAAIanAACMpwAAi6cAAGUCAACRpwAAkKcAAJOnAACSpwAAxKcAAJenAACWpwAAmacAAJin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AQAA6QEAAekBAALpAQAD6QEABOkBAAXpAQAG6QEAB+kBAAjpAQAJ6QEACukBAAvpAQAM6QEADekBAA7pAQAP6QEAEOkBABHpAQAS6QEAE+kBABTpAQAV6QEAFukBABfpAQAY6QEAGekBABrpAQAb6QEAHOkBAB3pAQAe6QEAH+kBACDpAQAh6QEAQQAAAHxkIQABAAAAQgAAAIBkIQABAAAAQwAAAIRkIQABAAAARAAAAIhkIQABAAAARQAAAIxkIQABAAAARgAAAJBkIQABAAAARwAAAJRkIQABAAAASAAAAJhkIQABAAAASQAAAJxkIQABAAAASgAAAKBkIQABAAAASwAAAKRkIQACAAAATAAAAKxkIQABAAAATQAAALBkIQABAAAATgAAALRkIQABAAAATwAAALhkIQABAAAAUAAAALxkIQABAAAAUQAAAMBkIQABAAAAUgAAAMRkIQABAAAAUwAAAMhkIQACAAAAVAAAANBkIQABAAAAVQAAANRkIQABAAAAVgAAANhkIQABAAAAVwAAANxkIQABAAAAWAAAAOBkIQABAAAAWQAAAORkIQABAAAAWgAAAOhkIQABAAAAYQAAAOxkIQABAAAAYgAAAPBkIQABAAAAYwAAAPRkIQABAAAAZAAAAPhkIQABAAAAZQAAAPxkIQABAAAAZgAAAABlIQABAAAAZwAAAARlIQABAAAAaAAAAAhlIQABAAAAaQAAAAxlIQABAAAAagAAABBlIQABAAAAawAAABRlIQACAAAAbAAAABxlIQABAAAAbQAAACBlIQABAAAAbgAAACRlIQABAAAAbwAAAChlIQABAAAAcAAAACxlIQABAAAAcQAAADBlIQABAAAAcgAAADRlIQABAAAAcwAAADhlIQACAAAAdAAAAEBlIQABAAAAdQAAAERlIQABAAAAdgAAAEhlIQABAAAAdwAAAExlIQABAAAAeAAAAFBlIQABAAAAeQAAAFRlIQABAAAAegAAAFhlIQABAAAAtQAAAFxlIQACAAAAwAAAAGRlIQABAAAAwQAAAGhlIQABAAAAwgAAAGxlIQABAAAAwwAAAHBlIQABAAAAxAAAAHRlIQABAAAAxQAAAHhlIQACAAAAxgAAAIBlIQABAAAAxwAAAIRlIQABAAAAyAAAAIhlIQABAAAAyQAAAIxlIQABAAAAygAAAJBlIQABAAAAywAAAJRlIQABAAAAzAAAAJhlIQABAAAAzQAAAJxlIQABAAAAzgAAAKBlIQABAAAAzwAAAKRlIQABAAAA0AAAAKhlIQABAAAA0QAAAKxlIQABAAAA0gAAALBlIQABAAAA0wAAALRlIQABAAAA1AAAALhlIQABAAAA1QAAALxlIQABAAAA1gAAAMBlIQABAAAA2AAAAMRlIQABAAAA2QAAAMhlIQABAAAA2gAAAMxlIQABAAAA2wAAANBlIQABAAAA3AAAANRlIQABAAAA3QAAANhlIQABAAAA3gAAANxlIQABAAAA3wAAAOBlIQABAAAA4AAAAORlIQABAAAA4QAAAOhlIQABAAAA4gAAAOxlIQABAAAA4wAAAPBlIQABAAAA5AAAAPRlIQABAAAA5QAAAPhlIQACAAAA5gAAAABmIQABAAAA5wAAAARmIQABAAAA6AAAAAhmIQABAAAA6QAAAAxmIQABAAAA6gAAABBmIQABAAAA6wAAABRmIQABAAAA7AAAABhmIQABAAAA7QAAABxmIQABAAAA7gAAACBmIQABAAAA7wAAACRmIQABAAAA8AAAAChmIQABAAAA8QAAACxmIQABAAAA8gAAADBmIQABAAAA8wAAADRmIQABAAAA9AAAADhmIQABAAAA9QAAADxmIQABAAAA9gAAAEBmIQABAAAA+AAAAERmIQABAAAA+QAAAEhmIQABAAAA+gAAAExmIQABAAAA+wAAAFBmIQABAAAA/AAAAFRmIQABAAAA/QAAAFhmIQABAAAA/gAAAFxmIQABAAAA/wAAAGBmIQABAAAAAAEAAGRmIQABAAAAAQEAAGhmIQABAAAAAgEAAGxmIQABAAAAAwEAAHBmIQABAAAABAEAAHRmIQABAAAABQEAAHhmIQABAAAABgEAAHxmIQABAAAABwEAAIBmIQABAAAACAEAAIRmIQABAAAACQEAAIhmIQABAAAACgEAAIxmIQABAAAACwEAAJBmIQABAAAADAEAAJRmIQABAAAADQEAAJhmIQABAAAADgEAAJxmIQABAAAADwEAAKBmIQABAAAAEAEAAKRmIQABAAAAEQEAAKhmIQABAAAAEgEAAKxmIQABAAAAEwEAALBmIQABAAAAFAEAALRmIQABAAAAFQEAALhmIQABAAAAFgEAALxmIQABAAAAFwEAAMBmIQABAAAAGAEAAMRmIQABAAAAGQEAAMhmIQABAAAAGgEAAMxmIQABAAAAGwEAANBmIQABAAAAHAEAANRmIQABAAAAHQEAANhmIQABAAAAHgEAANxmIQABAAAAHwEAAOBmIQABAAAAIAEAAORmIQABAAAAIQEAAOhmIQABAAAAIgEAAOxmIQABAAAAIwEAAPBmIQABAAAAJAEAAPRmIQABAAAAJQEAAPhmIQABAAAAJgEAAPxmIQABAAAAJwEAAABnIQABAAAAKAEAAARnIQABAAAAKQEAAAhnIQABAAAAKgEAAAxnIQABAAAAKwEAABBnIQABAAAALAEAABRnIQABAAAALQEAABhnIQABAAAALgEAABxnIQABAAAALwEAACBnIQABAAAAMgEAACRnIQABAAAAMwEAAChnIQABAAAANAEAACxnIQABAAAANQEAADBnIQABAAAANgEAADRnIQABAAAANwEAADhnIQABAAAAOQEAADxnIQABAAAAOgEAAEBnIQABAAAAOwEAAERnIQABAAAAPAEAAEhnIQABAAAAPQEAAExnIQABAAAAPgEAAFBnIQABAAAAPwEAAFRnIQABAAAAQAEAAFhnIQABAAAAQQEAAFxnIQABAAAAQgEAAGBnIQABAAAAQwEAAGRnIQABAAAARAEAAGhnIQABAAAARQEAAGxnIQABAAAARgEAAHBnIQABAAAARwEAAHRnIQABAAAASAEAAHhnIQABAAAASgEAAHxnIQABAAAASwEAAIBnIQABAAAATAEAAIRnIQABAAAATQEAAIhnIQABAAAATgEAAIxnIQABAAAATwEAAJBnIQABAAAAUAEAAJRnIQABAAAAUQEAAJhnIQABAAAAUgEAAJxnIQABAAAAUwEAAKBnIQABAAAAVAEAAKRnIQABAAAAVQEAAKhnIQABAAAAVgEAAKxnIQABAAAAVwEAALBnIQABAAAAWAEAALRnIQABAAAAWQEAALhnIQABAAAAWgEAALxnIQABAAAAWwEAAMBnIQABAAAAXAEAAMRnIQABAAAAXQEAAMhnIQABAAAAXgEAAMxnIQABAAAAXwEAANBnIQABAAAAYAEAANRnIQABAAAAYQEAANhnIQABAAAAYgEAANxnIQABAAAAYwEAAOBnIQABAAAAZAEAAORnIQABAAAAZQEAAOhnIQABAAAAZgEAAOxnIQABAAAAZwEAAPBnIQABAAAAaAEAAPRnIQABAAAAaQEAAPhnIQABAAAAagEAAPxnIQABAAAAawEAAABoIQABAAAAbAEAAARoIQABAAAAbQEAAAhoIQABAAAAbgEAAAxoIQABAAAAbwEAABBoIQABAAAAcAEAABRoIQABAAAAcQEAABhoIQABAAAAcgEAABxoIQABAAAAcwEAACBoIQABAAAAdAEAACRoIQABAAAAdQEAAChoIQABAAAAdgEAACxoIQABAAAAdwEAADBoIQABAAAAeAEAADRoIQABAAAAeQEAADhoIQABAAAAegEAADxoIQABAAAAewEAAEBoIQABAAAAfAEAAERoIQABAAAAfQEAAEhoIQABAAAAfgEAAExoIQABAAAAfwEAAFBoIQACAAAAgAEAAFhoIQABAAAAgQEAAFxoIQABAAAAggEAAGBoIQABAAAAgwEAAGRoIQABAAAAhAEAAGhoIQABAAAAhQEAAGxoIQABAAAAhgEAAHBoIQABAAAAhwEAAHRoIQABAAAAiAEAAHhoIQABAAAAiQEAAHxoIQABAAAAigEAAIBoIQABAAAAiwEAAIRoIQABAAAAjAEAAIhoIQABAAAAjgEAAIxoIQABAAAAjwEAAJBoIQABAAAAkAEAAJRoIQABAAAAkQEAAJhoIQABAAAAkgEAAJxoIQABAAAAkwEAAKBoIQABAAAAlAEAAKRoIQABAAAAlQEAAKhoIQABAAAAlgEAAKxoIQABAAAAlwEAALBoIQABAAAAmAEAALRoIQABAAAAmQEAALhoIQABAAAAmgEAALxoIQABAAAAnAEAAMBoIQABAAAAnQEAAMRoIQABAAAAngEAAMhoIQABAAAAnwEAAMxoIQABAAAAoAEAANBoIQABAAAAoQEAANRoIQABAAAAogEAANhoIQABAAAAowEAANxoIQABAAAApAEAAOBoIQABAAAApQEAAORoIQABAAAApgEAAOhoIQABAAAApwEAAOxoIQABAAAAqAEAAPBoIQABAAAAqQEAAPRoIQABAAAArAEAAPhoIQABAAAArQEAAPxoIQABAAAArgEAAABpIQABAAAArwEAAARpIQABAAAAsAEAAAhpIQABAAAAsQEAAAxpIQABAAAAsgEAABBpIQABAAAAswEAABRpIQABAAAAtAEAABhpIQABAAAAtQEAABxpIQABAAAAtgEAACBpIQABAAAAtwEAACRpIQABAAAAuAEAAChpIQABAAAAuQEAACxpIQABAAAAvAEAADBpIQABAAAAvQEAADRpIQABAAAAvwEAADhpIQABAAAAxAEAADxpIQACAAAAxQEAAERpIQACAAAAxgEAAExpIQACAAAAxwEAAFRpIQACAAAAyAEAAFxpIQACAAAAyQEAAGRpIQACAAAAygEAAGxpIQACAAAAywEAAHRpIQACAAAAzAEAAHxpIQACAAAAzQEAAIRpIQABAAAAzgEAAIhpIQABAAAAzwEAAIxpIQABAAAA0AEAAJBpIQABAAAA0QEAAJRpIQABAAAA0gEAAJhpIQABAAAA0wEAAJxpIQABAAAA1AEAAKBpIQABAAAA1QEAAKRpIQABAAAA1gEAAKhpIQABAAAA1wEAAKxpIQABAAAA2AEAALBpIQABAAAA2QEAALRpIQABAAAA2gEAALhpIQABAAAA2wEAALxpIQABAAAA3AEAAMBpIQABAAAA3QEAAMRpIQABAAAA3gEAAMhpIQABAAAA3wEAAMxpIQABAAAA4AEAANBpIQABAAAA4QEAANRpIQABAAAA4gEAANhpIQABAAAA4wEAANxpIQABAAAA5AEAAOBpIQABAAAA5QEAAORpIQABAAAA5gEAAOhpIQABAAAA5wEAAOxpIQABAAAA6AEAAPBpIQABAAAA6QEAAPRpIQABAAAA6gEAAPhpIQABAAAA6wEAAPxpIQABAAAA7AEAAABqIQABAAAA7QEAAARqIQABAAAA7gEAAAhqIQABAAAA7wEAAAxqIQABAAAA8QEAABBqIQACAAAA8gEAABhqIQACAAAA8wEAACBqIQACAAAA9AEAAChqIQABAAAA9QEAACxqIQABAAAA9gEAADBqIQABAAAA9wEAADRqIQABAAAA+AEAADhqIQABAAAA+QEAADxqIQABAAAA+gEAAEBqIQABAAAA+wEAAERqIQABAAAA/AEAAEhqIQABAAAA/QEAAExqIQABAAAA/gEAAFBqIQABAAAA/wEAAFRqIQABAAAAAAIAAFhqIQABAAAAAQIAAFxqIQABAAAAAgIAAGBqIQABAAAAAwIAAGRqIQABAAAABAIAAGhqIQABAAAABQIAAGxqIQABAAAABgIAAHBqIQABAAAABwIAAHRqIQABAAAACAIAAHhqIQABAAAACQIAAHxqIQABAAAACgIAAIBqIQABAAAACwIAAIRqIQABAAAADAIAAIhqIQABAAAADQIAAIxqIQABAAAADgIAAJBqIQABAAAADwIAAJRqIQABAAAAEAIAAJhqIQABAAAAEQIAAJxqIQABAAAAEgIAAKBqIQABAAAAEwIAAKRqIQABAAAAFAIAAKhqIQABAAAAFQIAAKxqIQABAAAAFgIAALBqIQABAAAAFwIAALRqIQABAAAAGAIAALhqIQABAAAAGQIAALxqIQABAAAAGgIAAMBqIQABAAAAGwIAAMRqIQABAAAAHAIAAMhqIQABAAAAHQIAAMxqIQABAAAAHgIAANBqIQABAAAAHwIAANRqIQABAAAAIAIAANhqIQABAAAAIgIAANxqIQABAAAAIwIAAOBqIQABAAAAJAIAAORqIQABAAAAJQIAAOhqIQABAAAAJgIAAOxqIQABAAAAJwIAAPBqIQABAAAAKAIAAPRqIQABAAAAKQIAAPhqIQABAAAAKgIAAPxqIQABAAAAKwIAAABrIQABAAAALAIAAARrIQABAAAALQIAAAhrIQABAAAALgIAAAxrIQABAAAALwIAABBrIQABAAAAMAIAABRrIQABAAAAMQIAABhrIQABAAAAMgIAABxrIQABAAAAMwIAACBrIQABAAAAOgIAACRrIQABAAAAOwIAAChrIQABAAAAPAIAACxrIQABAAAAPQIAADBrIQABAAAAPgIAADRrIQABAAAAPwIAADhrIQABAAAAQAIAADxrIQABAAAAQQIAAEBrIQABAAAAQgIAAERrIQABAAAAQwIAAEhrIQABAAAARAIAAExrIQABAAAARQIAAFBrIQABAAAARgIAAFRrIQABAAAARwIAAFhrIQABAAAASAIAAFxrIQABAAAASQIAAGBrIQABAAAASgIAAGRrIQABAAAASwIAAGhrIQABAAAATAIAAGxrIQABAAAATQIAAHBrIQABAAAATgIAAHRrIQABAAAATwIAAHhrIQABAAAAUAIAAHxrIQABAAAAUQIAAIBrIQABAAAAUgIAAIRrIQABAAAAUwIAAIhrIQABAAAAVAIAAIxrIQABAAAAVgIAAJBrIQABAAAAVwIAAJRrIQABAAAAWQIAAJhrIQABAAAAWwIAAJxrIQABAAAAXAIAAKBrIQABAAAAYAIAAKRrIQABAAAAYQIAAKhrIQABAAAAYwIAAKxrIQABAAAAZQIAALBrIQABAAAAZgIAALRrIQABAAAAaAIAALhrIQABAAAAaQIAALxrIQABAAAAagIAAMBrIQABAAAAawIAAMRrIQABAAAAbAIAAMhrIQABAAAAbwIAAMxrIQABAAAAcQIAANBrIQABAAAAcgIAANRrIQABAAAAdQIAANhrIQABAAAAfQIAANxrIQABAAAAgAIAAOBrIQABAAAAggIAAORrIQABAAAAgwIAAOhrIQABAAAAhwIAAOxrIQABAAAAiAIAAPBrIQABAAAAiQIAAPRrIQABAAAAigIAAPhrIQABAAAAiwIAAPxrIQABAAAAjAIAAABsIQABAAAAkgIAAARsIQABAAAAnQIAAAhsIQABAAAAngIAAAxsIQABAAAARQMAABBsIQADAAAAcAMAABxsIQABAAAAcQMAACBsIQABAAAAcgMAACRsIQABAAAAcwMAAChsIQABAAAAdgMAACxsIQABAAAAdwMAADBsIQABAAAAewMAADRsIQABAAAAfAMAADhsIQABAAAAfQMAADxsIQABAAAAfwMAAEBsIQABAAAAhgMAAERsIQABAAAAiAMAAEhsIQABAAAAiQMAAExsIQABAAAAigMAAFBsIQABAAAAjAMAAFRsIQABAAAAjgMAAFhsIQABAAAAjwMAAFxsIQABAAAAkQMAAGBsIQABAAAAkgMAAGRsIQACAAAAkwMAAGxsIQABAAAAlAMAAHBsIQABAAAAlQMAAHRsIQACAAAAlgMAAHxsIQABAAAAlwMAAIBsIQABAAAAmAMAAIRsIQADAAAAmQMAAJBsIQADAAAAmgMAAJxsIQACAAAAmwMAAKRsIQABAAAAnAMAAKhsIQACAAAAnQMAALBsIQABAAAAngMAALRsIQABAAAAnwMAALhsIQABAAAAoAMAALxsIQACAAAAoQMAAMRsIQACAAAAowMAAMxsIQACAAAApAMAANRsIQABAAAApQMAANhsIQABAAAApgMAANxsIQACAAAApwMAAORsIQABAAAAqAMAAOhsIQABAAAAqQMAAOxsIQACAAAAqgMAAPRsIQABAAAAqwMAAPhsIQABAAAArAMAAPxsIQABAAAArQMAAABtIQABAAAArgMAAARtIQABAAAArwMAAAhtIQABAAAAsQMAAAxtIQABAAAAsgMAABBtIQACAAAAswMAABhtIQABAAAAtAMAABxtIQABAAAAtQMAACBtIQACAAAAtgMAAChtIQABAAAAtwMAACxtIQABAAAAuAMAADBtIQADAAAAuQMAADxtIQADAAAAugMAAEhtIQACAAAAuwMAAFBtIQABAAAAvAMAAFRtIQACAAAAvQMAAFxtIQABAAAAvgMAAGBtIQABAAAAvwMAAGRtIQABAAAAwAMAAGhtIQACAAAAwQMAAHBtIQACAAAAwgMAAHhtIQACAAAAwwMAAIBtIQACAAAAxAMAAIhtIQABAAAAxQMAAIxtIQABAAAAxgMAAJBtIQACAAAAxwMAAJhtIQABAAAAyAMAAJxtIQABAAAAyQMAAKBtIQACAAAAygMAAKhtIQABAAAAywMAAKxtIQABAAAAzAMAALBtIQABAAAAzQMAALRtIQABAAAAzgMAALhtIQABAAAAzwMAALxtIQABAAAA0AMAAMBtIQACAAAA0QMAAMhtIQADAAAA1QMAANRtIQACAAAA1gMAANxtIQACAAAA1wMAAORtIQABAAAA2AMAAOhtIQABAAAA2QMAAOxtIQABAAAA2gMAAPBtIQABAAAA2wMAAPRtIQABAAAA3AMAAPhtIQABAAAA3QMAAPxtIQABAAAA3gMAAABuIQABAAAA3wMAAARuIQABAAAA4AMAAAhuIQABAAAA4QMAAAxuIQABAAAA4gMAABBuIQABAAAA4wMAABRuIQABAAAA5AMAABhuIQABAAAA5QMAABxuIQABAAAA5gMAACBuIQABAAAA5wMAACRuIQABAAAA6AMAAChuIQABAAAA6QMAACxuIQABAAAA6gMAADBuIQABAAAA6wMAADRuIQABAAAA7AMAADhuIQABAAAA7QMAADxuIQABAAAA7gMAAEBuIQABAAAA7wMAAERuIQABAAAA8AMAAEhuIQACAAAA8QMAAFBuIQACAAAA8gMAAFhuIQABAAAA8wMAAFxuIQABAAAA9AMAAGBuIQADAAAA9QMAAGxuIQACAAAA9wMAAHRuIQABAAAA+AMAAHhuIQABAAAA+QMAAHxuIQABAAAA+gMAAIBuIQABAAAA+wMAAIRuIQABAAAA/QMAAIhuIQABAAAA/gMAAIxuIQABAAAA/wMAAJBuIQABAAAAAAQAAJRuIQABAAAAAQQAAJhuIQABAAAAAgQAAJxuIQABAAAAAwQAAKBuIQABAAAABAQAAKRuIQABAAAABQQAAKhuIQABAAAABgQAAKxuIQABAAAABwQAALBuIQABAAAACAQAALRuIQABAAAACQQAALhuIQABAAAACgQAALxuIQABAAAACwQAAMBuIQABAAAADAQAAMRuIQABAAAADQQAAMhuIQABAAAADgQAAMxuIQABAAAADwQAANBuIQABAAAAEAQAANRuIQABAAAAEQQAANhuIQABAAAAEgQAANxuIQACAAAAEwQAAORuIQABAAAAFAQAAOhuIQACAAAAFQQAAPBuIQABAAAAFgQAAPRuIQABAAAAFwQAAPhuIQABAAAAGAQAAPxuIQABAAAAGQQAAABvIQABAAAAGgQAAARvIQABAAAAGwQAAAhvIQABAAAAHAQAAAxvIQABAAAAHQQAABBvIQABAAAAHgQAABRvIQACAAAAHwQAABxvIQABAAAAIAQAACBvIQABAAAAIQQAACRvIQACAAAAIgQAACxvIQADAAAAIwQAADhvIQABAAAAJAQAADxvIQABAAAAJQQAAEBvIQABAAAAJgQAAERvIQABAAAAJwQAAEhvIQABAAAAKAQAAExvIQABAAAAKQQAAFBvIQABAAAAKgQAAFRvIQACAAAAKwQAAFxvIQABAAAALAQAAGBvIQABAAAALQQAAGRvIQABAAAALgQAAGhvIQABAAAALwQAAGxvIQABAAAAMAQAAHBvIQABAAAAMQQAAHRvIQABAAAAMgQAAHhvIQACAAAAMwQAAIBvIQABAAAANAQAAIRvIQACAAAANQQAAIxvIQABAAAANgQAAJBvIQABAAAANwQAAJRvIQABAAAAOAQAAJhvIQABAAAAOQQAAJxvIQABAAAAOgQAAKBvIQABAAAAOwQAAKRvIQABAAAAPAQAAKhvIQABAAAAPQQAAKxvIQABAAAAPgQAALBvIQACAAAAPwQAALhvIQABAAAAQAQAALxvIQABAAAAQQQAAMBvIQACAAAAQgQAAMhvIQADAAAAQwQAANRvIQABAAAARAQAANhvIQABAAAARQQAANxvIQABAAAARgQAAOBvIQABAAAARwQAAORvIQABAAAASAQAAOhvIQABAAAASQQAAOxvIQABAAAASgQAAPBvIQACAAAASwQAAPhvIQABAAAATAQAAPxvIQABAAAATQQAAABwIQABAAAATgQAAARwIQABAAAATwQAAAhwIQABAAAAUAQAAAxwIQABAAAAUQQAABBwIQABAAAAUgQAABRwIQABAAAAUwQAABhwIQABAAAAVAQAABxwIQABAAAAVQQAACBwIQABAAAAVgQAACRwIQABAAAAVwQAAChwIQABAAAAWAQAACxwIQABAAAAWQQAADBwIQABAAAAWgQAADRwIQABAAAAWwQAADhwIQABAAAAXAQAADxwIQABAAAAXQQAAEBwIQABAAAAXgQAAERwIQABAAAAXwQAAEhwIQABAAAAYAQAAExwIQABAAAAYQQAAFBwIQABAAAAYgQAAFRwIQACAAAAYwQAAFxwIQACAAAAZAQAAGRwIQABAAAAZQQAAGhwIQABAAAAZgQAAGxwIQABAAAAZwQAAHBwIQABAAAAaAQAAHRwIQABAAAAaQQAAHhwIQABAAAAagQAAHxwIQABAAAAawQAAIBwIQABAAAAbAQAAIRwIQABAAAAbQQAAIhwIQABAAAAbgQAAIxwIQABAAAAbwQAAJBwIQABAAAAcAQAAJRwIQABAAAAcQQAAJhwIQABAAAAcgQAAJxwIQABAAAAcwQAAKBwIQABAAAAdAQAAKRwIQABAAAAdQQAAKhwIQABAAAAdgQAAKxwIQABAAAAdwQAALBwIQABAAAAeAQAALRwIQABAAAAeQQAALhwIQABAAAAegQAALxwIQABAAAAewQAAMBwIQABAAAAfAQAAMRwIQABAAAAfQQAAMhwIQABAAAAfgQAAMxwIQABAAAAfwQAANBwIQABAAAAgAQAANRwIQABAAAAgQQAANhwIQABAAAAigQAANxwIQABAAAAiwQAAOBwIQABAAAAjAQAAORwIQABAAAAjQQAAOhwIQABAAAAjgQAAOxwIQABAAAAjwQAAPBwIQABAAAAkAQAAPRwIQABAAAAkQQAAPhwIQABAAAAkgQAAPxwIQABAAAAkwQAAABxIQABAAAAlAQAAARxIQABAAAAlQQAAAhxIQABAAAAlgQAAAxxIQABAAAAlwQAABBxIQABAAAAmAQAABRxIQABAAAAmQQAABhxIQABAAAAmgQAABxxIQABAAAAmwQAACBxIQABAAAAnAQAACRxIQABAAAAnQQAAChxIQABAAAAngQAACxxIQABAAAAnwQAADBxIQABAAAAoAQAADRxIQABAAAAoQQAADhxIQABAAAAogQAADxxIQABAAAAowQAAEBxIQABAAAApAQAAERxIQABAAAApQQAAEhxIQABAAAApgQAAExxIQABAAAApwQAAFBxIQABAAAAqAQAAFRxIQABAAAAqQQAAFhxIQABAAAAqgQAAFxxIQABAAAAqwQAAGBxIQABAAAArAQAAGRxIQABAAAArQQAAGhxIQABAAAArgQAAGxxIQABAAAArwQAAHBxIQABAAAAsAQAAHRxIQABAAAAsQQAAHhxIQABAAAAsgQAAHxxIQABAAAAswQAAIBxIQABAAAAtAQAAIRxIQABAAAAtQQAAIhxIQABAAAAtgQAAIxxIQABAAAAtwQAAJBxIQABAAAAuAQAAJRxIQABAAAAuQQAAJhxIQABAAAAugQAAJxxIQABAAAAuwQAAKBxIQABAAAAvAQAAKRxIQABAAAAvQQAAKhxIQABAAAAvgQAAKxxIQABAAAAvwQAALBxIQABAAAAwAQAALRxIQABAAAAwQQAALhxIQABAAAAwgQAALxxIQABAAAAwwQAAMBxIQABAAAAxAQAAMRxIQABAAAAxQQAAMhxIQABAAAAxgQAAMxxIQABAAAAxwQAANBxIQABAAAAyAQAANRxIQABAAAAyQQAANhxIQABAAAAygQAANxxIQABAAAAywQAAOBxIQABAAAAzAQAAORxIQABAAAAzQQAAOhxIQABAAAAzgQAAOxxIQABAAAAzwQAAPBxIQABAAAA0AQAAPRxIQABAAAA0QQAAPhxIQABAAAA0gQAAPxxIQABAAAA0wQAAAByIQABAAAA1AQAAARyIQABAAAA1QQAAAhyIQABAAAA1gQAAAxyIQABAAAA1wQAABByIQABAAAA2AQAABRyIQABAAAA2QQAABhyIQABAAAA2gQAABxyIQABAAAA2wQAACByIQABAAAA3AQAACRyIQABAAAA3QQAAChyIQABAAAA3gQAACxyIQABAAAA3wQAADByIQABAAAA4AQAADRyIQABAAAA4QQAADhyIQABAAAA4gQAADxyIQABAAAA4wQAAEByIQABAAAA5AQAAERyIQABAAAA5QQAAEhyIQABAAAA5gQAAExyIQABAAAA5wQAAFByIQABAAAA6AQAAFRyIQABAAAA6QQAAFhyIQABAAAA6gQAAFxyIQABAAAA6wQAAGByIQABAAAA7AQAAGRyIQABAAAA7QQAAGhyIQABAAAA7gQAAGxyIQABAAAA7wQAAHByIQABAAAA8AQAAHRyIQABAAAA8QQAAHhyIQABAAAA8gQAAHxyIQABAAAA8wQAAIByIQABAAAA9AQAAIRyIQABAAAA9QQAAIhyIQABAAAA9gQAAIxyIQABAAAA9wQAAJByIQABAAAA+AQAAJRyIQABAAAA+QQAAJhyIQABAAAA+gQAAJxyIQABAAAA+wQAAKByIQABAAAA/AQAAKRyIQABAAAA/QQAAKhyIQABAAAA/gQAAKxyIQABAAAA/wQAALByIQABAAAAAAUAALRyIQABAAAAAQUAALhyIQABAAAAAgUAALxyIQABAAAAAwUAAMByIQABAAAABAUAAMRyIQABAAAABQUAAMhyIQABAAAABgUAAMxyIQABAAAABwUAANByIQABAAAACAUAANRyIQABAAAACQUAANhyIQABAAAACgUAANxyIQABAAAACwUAAOByIQABAAAADAUAAORyIQABAAAADQUAAOhyIQABAAAADgUAAOxyIQABAAAADwUAAPByIQABAAAAEAUAAPRyIQABAAAAEQUAAPhyIQABAAAAEgUAAPxyIQABAAAAEwUAAABzIQABAAAAFAUAAARzIQABAAAAFQUAAAhzIQABAAAAFgUAAAxzIQABAAAAFwUAABBzIQABAAAAGAUAABRzIQABAAAAGQUAABhzIQABAAAAGgUAABxzIQABAAAAGwUAACBzIQABAAAAHAUAACRzIQABAAAAHQUAAChzIQABAAAAHgUAACxzIQABAAAAHwUAADBzIQABAAAAIAUAADRzIQABAAAAIQUAADhzIQABAAAAIgUAADxzIQABAAAAIwUAAEBzIQABAAAAJAUAAERzIQABAAAAJQUAAEhzIQABAAAAJgUAAExzIQABAAAAJwUAAFBzIQABAAAAKAUAAFRzIQABAAAAKQUAAFhzIQABAAAAKgUAAFxzIQABAAAAKwUAAGBzIQABAAAALAUAAGRzIQABAAAALQUAAGhzIQABAAAALgUAAGxzIQABAAAALwUAAHBzIQABAAAAMQUAAHRzIQABAAAAMgUAAHhzIQABAAAAMwUAAHxzIQABAAAANAUAAIBzIQABAAAANQUAAIRzIQABAAAANgUAAIhzIQABAAAANwUAAIxzIQABAAAAOAUAAJBzIQABAAAAOQUAAJRzIQABAAAAOgUAAJhzIQABAAAAOwUAAJxzIQABAAAAPAUAAKBzIQABAAAAPQUAAKRzIQABAAAAPgUAAKhzIQABAAAAPwUAAKxzIQABAAAAQAUAALBzIQABAAAAQQUAALRzIQABAAAAQgUAALhzIQABAAAAQwUAALxzIQABAAAARAUAAMBzIQABAAAARQUAAMRzIQABAAAARgUAAMhzIQABAAAARwUAAMxzIQABAAAASAUAANBzIQABAAAASQUAANRzIQABAAAASgUAANhzIQABAAAASwUAANxzIQABAAAATAUAAOBzIQABAAAATQUAAORzIQABAAAATgUAAOhzIQABAAAATwUAAOxzIQABAAAAUAUAAPBzIQABAAAAUQUAAPRzIQABAAAAUgUAAPhzIQABAAAAUwUAAPxzIQABAAAAVAUAAAB0IQABAAAAVQUAAAR0IQABAAAAVgUAAAh0IQABAAAAYQUAAAx0IQABAAAAYgUAABB0IQABAAAAYwUAABR0IQABAAAAZAUAABh0IQABAAAAZQUAABx0IQABAAAAZgUAACB0IQABAAAAZwUAACR0IQABAAAAaAUAACh0IQABAAAAaQUAACx0IQABAAAAagUAADB0IQABAAAAawUAADR0IQABAAAAbAUAADh0IQABAAAAbQUAADx0IQABAAAAbgUAAEB0IQABAAAAbwUAAER0IQABAAAAcAUAAEh0IQABAAAAcQUAAEx0IQABAAAAcgUAAFB0IQABAAAAcwUAAFR0IQABAAAAdAUAAFh0IQABAAAAdQUAAFx0IQABAAAAdgUAAGB0IQABAAAAdwUAAGR0IQABAAAAeAUAAGh0IQABAAAAeQUAAGx0IQABAAAAegUAAHB0IQABAAAAewUAAHR0IQABAAAAfAUAAHh0IQABAAAAfQUAAHx0IQABAAAAfgUAAIB0IQABAAAAfwUAAIR0IQABAAAAgAUAAIh0IQABAAAAgQUAAIx0IQABAAAAggUAAJB0IQABAAAAgwUAAJR0IQABAAAAhAUAAJh0IQABAAAAhQUAAJx0IQABAAAAhgUAAKB0IQABAAAAoBAAAKR0IQABAAAAoRAAAKh0IQABAAAAohAAAKx0IQABAAAAoxAAALB0IQABAAAApBAAALR0IQABAAAApRAAALh0IQABAAAAphAAALx0IQABAAAApxAAAMB0IQABAAAAqBAAAMR0IQABAAAAqRAAAMh0IQABAAAAqhAAAMx0IQABAAAAqxAAANB0IQABAAAArBAAANR0IQABAAAArRAAANh0IQABAAAArhAAANx0IQABAAAArxAAAOB0IQABAAAAsBAAAOR0IQABAAAAsRAAAOh0IQABAAAAshAAAOx0IQABAAAAsxAAAPB0IQABAAAAtBAAAPR0IQABAAAAtRAAAPh0IQABAAAAthAAAPx0IQABAAAAtxAAAAB1IQABAAAAuBAAAAR1IQABAAAAuRAAAAh1IQABAAAAuhAAAAx1IQABAAAAuxAAABB1IQABAAAAvBAAABR1IQABAAAAvRAAABh1IQABAAAAvhAAABx1IQABAAAAvxAAACB1IQABAAAAwBAAACR1IQABAAAAwRAAACh1IQABAAAAwhAAACx1IQABAAAAwxAAADB1IQABAAAAxBAAADR1IQABAAAAxRAAADh1IQABAAAAxxAAADx1IQABAAAAzRAAAEB1IQABAAAA0BAAAER1IQABAAAA0RAAAEh1IQABAAAA0hAAAEx1IQABAAAA0xAAAFB1IQABAAAA1BAAAFR1IQABAAAA1RAAAFh1IQABAAAA1hAAAFx1IQABAAAA1xAAAGB1IQABAAAA2BAAAGR1IQABAAAA2RAAAGh1IQABAAAA2hAAAGx1IQABAAAA2xAAAHB1IQABAAAA3BAAAHR1IQABAAAA3RAAAHh1IQABAAAA3hAAAHx1IQABAAAA3xAAAIB1IQABAAAA4BAAAIR1IQABAAAA4RAAAIh1IQABAAAA4hAAAIx1IQABAAAA4xAAAJB1IQABAAAA5BAAAJR1IQABAAAA5RAAAJh1IQABAAAA5hAAAJx1IQABAAAA5xAAAKB1IQABAAAA6BAAAKR1IQABAAAA6RAAAKh1IQABAAAA6hAAAKx1IQABAAAA6xAAALB1IQABAAAA7BAAALR1IQABAAAA7RAAALh1IQABAAAA7hAAALx1IQABAAAA7xAAAMB1IQABAAAA8BAAAMR1IQABAAAA8RAAAMh1IQABAAAA8hAAAMx1IQABAAAA8xAAANB1IQABAAAA9BAAANR1IQABAAAA9RAAANh1IQABAAAA9hAAANx1IQABAAAA9xAAAOB1IQABAAAA+BAAAOR1IQABAAAA+RAAAOh1IQABAAAA+hAAAOx1IQABAAAA/RAAAPB1IQABAAAA/hAAAPR1IQABAAAA/xAAAPh1IQABAAAAoBMAAPx1IQABAAAAoRMAAAB2IQABAAAAohMAAAR2IQABAAAAoxMAAAh2IQABAAAApBMAAAx2IQABAAAApRMAABB2IQABAAAAphMAABR2IQABAAAApxMAABh2IQABAAAAqBMAABx2IQABAAAAqRMAACB2IQABAAAAqhMAACR2IQABAAAAqxMAACh2IQABAAAArBMAACx2IQABAAAArRMAADB2IQABAAAArhMAADR2IQABAAAArxMAADh2IQABAAAAsBMAADx2IQABAAAAsRMAAEB2IQABAAAAshMAAER2IQABAAAAsxMAAEh2IQABAAAAtBMAAEx2IQABAAAAtRMAAFB2IQABAAAAthMAAFR2IQABAAAAtxMAAFh2IQABAAAAuBMAAFx2IQABAAAAuRMAAGB2IQABAAAAuhMAAGR2IQABAAAAuxMAAGh2IQABAAAAvBMAAGx2IQABAAAAvRMAAHB2IQABAAAAvhMAAHR2IQABAAAAvxMAAHh2IQABAAAAwBMAAHx2IQABAAAAwRMAAIB2IQABAAAAwhMAAIR2IQABAAAAwxMAAIh2IQABAAAAxBMAAIx2IQABAAAAxRMAAJB2IQABAAAAxhMAAJR2IQABAAAAxxMAAJh2IQABAAAAyBMAAJx2IQABAAAAyRMAAKB2IQABAAAAyhMAAKR2IQABAAAAyxMAAKh2IQABAAAAzBMAAKx2IQABAAAAzRMAALB2IQABAAAAzhMAALR2IQABAAAAzxMAALh2IQABAAAA0BMAALx2IQABAAAA0RMAAMB2IQABAAAA0hMAAMR2IQABAAAA0xMAAMh2IQABAAAA1BMAAMx2IQABAAAA1RMAANB2IQABAAAA1hMAANR2IQABAAAA1xMAANh2IQABAAAA2BMAANx2IQABAAAA2RMAAOB2IQABAAAA2hMAAOR2IQABAAAA2xMAAOh2IQABAAAA3BMAAOx2IQABAAAA3RMAAPB2IQABAAAA3hMAAPR2IQABAAAA3xMAAPh2IQABAAAA4BMAAPx2IQABAAAA4RMAAAB3IQABAAAA4hMAAAR3IQABAAAA4xMAAAh3IQABAAAA5BMAAAx3IQABAAAA5RMAABB3IQABAAAA5hMAABR3IQABAAAA5xMAABh3IQABAAAA6BMAABx3IQABAAAA6RMAACB3IQABAAAA6hMAACR3IQABAAAA6xMAACh3IQABAAAA7BMAACx3IQABAAAA7RMAADB3IQABAAAA7hMAADR3IQABAAAA7xMAADh3IQABAAAA8BMAADx3IQABAAAA8RMAAEB3IQABAAAA8hMAAER3IQABAAAA8xMAAEh3IQABAAAA9BMAAEx3IQABAAAA9RMAAFB3IQABAAAA+BMAAFR3IQABAAAA+RMAAFh3IQABAAAA+hMAAFx3IQABAAAA+xMAAGB3IQABAAAA/BMAAGR3IQABAAAA/RMAAGh3IQABAAAAgBwAAGx3IQACAAAAgRwAAHR3IQACAAAAghwAAHx3IQACAAAAgxwAAIR3IQACAAAAhBwAAIx3IQADAAAAhRwAAJh3IQADAAAAhhwAAKR3IQACAAAAhxwAAKx3IQACAAAAiBwAALR3IQACAAAAkBwAALx3IQABAAAAkRwAAMB3IQABAAAAkhwAAMR3IQABAAAAkxwAAMh3IQABAAAAlBwAAMx3IQABAAAAlRwAANB3IQABAAAAlhwAANR3IQABAAAAlxwAANh3IQABAAAAmBwAANx3IQABAAAAmRwAAOB3IQABAAAAmhwAAOR3IQABAAAAmxwAAOh3IQABAAAAnBwAAOx3IQABAAAAnRwAAPB3IQABAAAAnhwAAPR3IQABAAAAnxwAAPh3IQABAAAAoBwAAPx3IQABAAAAoRwAAAB4IQABAAAAohwAAAR4IQABAAAAoxwAAAh4IQABAAAApBwAAAx4IQABAAAApRwAABB4IQABAAAAphwAABR4IQABAAAApxwAABh4IQABAAAAqBwAABx4IQABAAAAqRwAACB4IQABAAAAqhwAACR4IQABAAAAqxwAACh4IQABAAAArBwAACx4IQABAAAArRwAADB4IQABAAAArhwAADR4IQABAAAArxwAADh4IQABAAAAsBwAADx4IQABAAAAsRwAAEB4IQABAAAAshwAAER4IQABAAAAsxwAAEh4IQABAAAAtBwAAEx4IQABAAAAtRwAAFB4IQABAAAAthwAAFR4IQABAAAAtxwAAFh4IQABAAAAuBwAAFx4IQABAAAAuRwAAGB4IQABAAAAuhwAAGR4IQABAAAAvRwAAGh4IQABAAAAvhwAAGx4IQABAAAAvxwAAHB4IQABAAAAeR0AAHR4IQABAAAAfR0AAHh4IQABAAAAjh0AAHx4IQABAAAAAB4AAIB4IQABAAAAAR4AAIR4IQABAAAAAh4AAIh4IQABAAAAAx4AAIx4IQABAAAABB4AAJB4IQABAAAABR4AAJR4IQABAAAABh4AAJh4IQABAAAABx4AAJx4IQABAAAACB4AAKB4IQABAAAACR4AAKR4IQABAAAACh4AAKh4IQABAAAACx4AAKx4IQABAAAADB4AALB4IQABAAAADR4AALR4IQABAAAADh4AALh4IQABAAAADx4AALx4IQABAAAAEB4AAMB4IQABAAAAER4AAMR4IQABAAAAEh4AAMh4IQABAAAAEx4AAMx4IQABAAAAFB4AANB4IQABAAAAFR4AANR4IQABAAAAFh4AANh4IQABAAAAFx4AANx4IQABAAAAGB4AAOB4IQABAAAAGR4AAOR4IQABAAAAGh4AAOh4IQABAAAAGx4AAOx4IQABAAAAHB4AAPB4IQABAAAAHR4AAPR4IQABAAAAHh4AAPh4IQABAAAAHx4AAPx4IQABAAAAIB4AAAB5IQABAAAAIR4AAAR5IQABAAAAIh4AAAh5IQABAAAAIx4AAAx5IQABAAAAJB4AABB5IQABAAAAJR4AABR5IQABAAAAJh4AABh5IQABAAAAJx4AABx5IQABAAAAKB4AACB5IQABAAAAKR4AACR5IQABAAAAKh4AACh5IQABAAAAKx4AACx5IQABAAAALB4AADB5IQABAAAALR4AADR5IQABAAAALh4AADh5IQABAAAALx4AADx5IQABAAAAMB4AAEB5IQABAAAAMR4AAER5IQABAAAAMh4AAEh5IQABAAAAMx4AAEx5IQABAAAANB4AAFB5IQABAAAANR4AAFR5IQABAAAANh4AAFh5IQABAAAANx4AAFx5IQABAAAAOB4AAGB5IQABAAAAOR4AAGR5IQABAAAAOh4AAGh5IQABAAAAOx4AAGx5IQABAAAAPB4AAHB5IQABAAAAPR4AAHR5IQABAAAAPh4AAHh5IQABAAAAPx4AAHx5IQABAAAAQB4AAIB5IQABAAAAQR4AAIR5IQABAAAAQh4AAIh5IQABAAAAQx4AAIx5IQABAAAARB4AAJB5IQABAAAARR4AAJR5IQABAAAARh4AAJh5IQABAAAARx4AAJx5IQABAAAASB4AAKB5IQABAAAASR4AAKR5IQABAAAASh4AAKh5IQABAAAASx4AAKx5IQABAAAATB4AALB5IQABAAAATR4AALR5IQABAAAATh4AALh5IQABAAAATx4AALx5IQABAAAAUB4AAMB5IQABAAAAUR4AAMR5IQABAAAAUh4AAMh5IQABAAAAUx4AAMx5IQABAAAAVB4AANB5IQABAAAAVR4AANR5IQABAAAAVh4AANh5IQABAAAAVx4AANx5IQABAAAAWB4AAOB5IQABAAAAWR4AAOR5IQABAAAAWh4AAOh5IQABAAAAWx4AAOx5IQABAAAAXB4AAPB5IQABAAAAXR4AAPR5IQABAAAAXh4AAPh5IQABAAAAXx4AAPx5IQABAAAAYB4AAAB6IQACAAAAYR4AAAh6IQACAAAAYh4AABB6IQABAAAAYx4AABR6IQABAAAAZB4AABh6IQABAAAAZR4AABx6IQABAAAAZh4AACB6IQABAAAAZx4AACR6IQABAAAAaB4AACh6IQABAAAAaR4AACx6IQABAAAAah4AADB6IQABAAAAax4AADR6IQABAAAAbB4AADh6IQABAAAAbR4AADx6IQABAAAAbh4AAEB6IQABAAAAbx4AAER6IQABAAAAcB4AAEh6IQABAAAAcR4AAEx6IQABAAAAch4AAFB6IQABAAAAcx4AAFR6IQABAAAAdB4AAFh6IQABAAAAdR4AAFx6IQABAAAAdh4AAGB6IQABAAAAdx4AAGR6IQABAAAAeB4AAGh6IQABAAAAeR4AAGx6IQABAAAAeh4AAHB6IQABAAAAex4AAHR6IQABAAAAfB4AAHh6IQABAAAAfR4AAHx6IQABAAAAfh4AAIB6IQABAAAAfx4AAIR6IQABAAAAgB4AAIh6IQABAAAAgR4AAIx6IQABAAAAgh4AAJB6IQABAAAAgx4AAJR6IQABAAAAhB4AAJh6IQABAAAAhR4AAJx6IQABAAAAhh4AAKB6IQABAAAAhx4AAKR6IQABAAAAiB4AAKh6IQABAAAAiR4AAKx6IQABAAAAih4AALB6IQABAAAAix4AALR6IQABAAAAjB4AALh6IQABAAAAjR4AALx6IQABAAAAjh4AAMB6IQABAAAAjx4AAMR6IQABAAAAkB4AAMh6IQABAAAAkR4AAMx6IQABAAAAkh4AANB6IQABAAAAkx4AANR6IQABAAAAlB4AANh6IQABAAAAlR4AANx6IQABAAAAmx4AAOB6IQACAAAAnh4AAOh6IQABAAAAoB4AAOx6IQABAAAAoR4AAPB6IQABAAAAoh4AAPR6IQABAAAAox4AAPh6IQABAAAApB4AAPx6IQABAAAApR4AAAB7IQABAAAAph4AAAR7IQABAAAApx4AAAh7IQABAAAAqB4AAAx7IQABAAAAqR4AABB7IQABAAAAqh4AABR7IQABAAAAqx4AABh7IQABAAAArB4AABx7IQABAAAArR4AACB7IQABAAAArh4AACR7IQABAAAArx4AACh7IQABAAAAsB4AACx7IQABAAAAsR4AADB7IQABAAAAsh4AADR7IQABAAAAsx4AADh7IQABAAAAtB4AADx7IQABAAAAtR4AAEB7IQABAAAAth4AAER7IQABAAAAtx4AAEh7IQABAAAAuB4AAEx7IQABAAAAuR4AAFB7IQABAAAAuh4AAFR7IQABAAAAux4AAFh7IQABAAAAvB4AAFx7IQABAAAAvR4AAGB7IQABAAAAvh4AAGR7IQABAAAAvx4AAGh7IQABAAAAwB4AAGx7IQABAAAAwR4AAHB7IQABAAAAwh4AAHR7IQABAAAAwx4AAHh7IQABAAAAxB4AAHx7IQABAAAAxR4AAIB7IQABAAAAxh4AAIR7IQABAAAAxx4AAIh7IQABAAAAyB4AAIx7IQABAAAAyR4AAJB7IQABAAAAyh4AAJR7IQABAAAAyx4AAJh7IQABAAAAzB4AAJx7IQABAAAAzR4AAKB7IQABAAAAzh4AAKR7IQABAAAAzx4AAKh7IQABAAAA0B4AAKx7IQABAAAA0R4AALB7IQABAAAA0h4AALR7IQABAAAA0x4AALh7IQABAAAA1B4AALx7IQABAAAA1R4AAMB7IQABAAAA1h4AAMR7IQABAAAA1x4AAMh7IQABAAAA2B4AAMx7IQABAAAA2R4AANB7IQABAAAA2h4AANR7IQABAAAA2x4AANh7IQABAAAA3B4AANx7IQABAAAA3R4AAOB7IQABAAAA3h4AAOR7IQABAAAA3x4AAOh7IQABAAAA4B4AAOx7IQABAAAA4R4AAPB7IQABAAAA4h4AAPR7IQABAAAA4x4AAPh7IQABAAAA5B4AAPx7IQABAAAA5R4AAAB8IQABAAAA5h4AAAR8IQABAAAA5x4AAAh8IQABAAAA6B4AAAx8IQABAAAA6R4AABB8IQABAAAA6h4AABR8IQABAAAA6x4AABh8IQABAAAA7B4AABx8IQABAAAA7R4AACB8IQABAAAA7h4AACR8IQABAAAA7x4AACh8IQABAAAA8B4AACx8IQABAAAA8R4AADB8IQABAAAA8h4AADR8IQABAAAA8x4AADh8IQABAAAA9B4AADx8IQABAAAA9R4AAEB8IQABAAAA9h4AAER8IQABAAAA9x4AAEh8IQABAAAA+B4AAEx8IQABAAAA+R4AAFB8IQABAAAA+h4AAFR8IQABAAAA+x4AAFh8IQABAAAA/B4AAFx8IQABAAAA/R4AAGB8IQABAAAA/h4AAGR8IQABAAAA/x4AAGh8IQABAAAAAB8AAGx8IQABAAAAAR8AAHB8IQABAAAAAh8AAHR8IQABAAAAAx8AAHh8IQABAAAABB8AAHx8IQABAAAABR8AAIB8IQABAAAABh8AAIR8IQABAAAABx8AAIh8IQABAAAACB8AAIx8IQABAAAACR8AAJB8IQABAAAACh8AAJR8IQABAAAACx8AAJh8IQABAAAADB8AAJx8IQABAAAADR8AAKB8IQABAAAADh8AAKR8IQABAAAADx8AAKh8IQABAAAAEB8AAKx8IQABAAAAER8AALB8IQABAAAAEh8AALR8IQABAAAAEx8AALh8IQABAAAAFB8AALx8IQABAAAAFR8AAMB8IQABAAAAGB8AAMR8IQABAAAAGR8AAMh8IQABAAAAGh8AAMx8IQABAAAAGx8AANB8IQABAAAAHB8AANR8IQABAAAAHR8AANh8IQABAAAAIB8AANx8IQABAAAAIR8AAOB8IQABAAAAIh8AAOR8IQABAAAAIx8AAOh8IQABAAAAJB8AAOx8IQABAAAAJR8AAPB8IQABAAAAJh8AAPR8IQABAAAAJx8AAPh8IQABAAAAKB8AAPx8IQABAAAAKR8AAAB9IQABAAAAKh8AAAR9IQABAAAAKx8AAAh9IQABAAAALB8AAAx9IQABAAAALR8AABB9IQABAAAALh8AABR9IQABAAAALx8AABh9IQABAAAAMB8AABx9IQABAAAAMR8AACB9IQABAAAAMh8AACR9IQABAAAAMx8AACh9IQABAAAANB8AACx9IQABAAAANR8AADB9IQABAAAANh8AADR9IQABAAAANx8AADh9IQABAAAAOB8AADx9IQABAAAAOR8AAEB9IQABAAAAOh8AAER9IQABAAAAOx8AAEh9IQABAAAAPB8AAEx9IQABAAAAPR8AAFB9IQABAAAAPh8AAFR9IQABAAAAPx8AAFh9IQABAAAAQB8AAFx9IQABAAAAQR8AAGB9IQABAAAAQh8AAGR9IQABAAAAQx8AAGh9IQABAAAARB8AAGx9IQABAAAARR8AAHB9IQABAAAASB8AAHR9IQABAAAASR8AAHh9IQABAAAASh8AAHx9IQABAAAASx8AAIB9IQABAAAATB8AAIR9IQABAAAATR8AAIh9IQABAAAAUR8AAIx9IQABAAAAUx8AAJB9IQABAAAAVR8AAJR9IQABAAAAVx8AAJh9IQABAAAAWR8AAJx9IQABAAAAWx8AAKB9IQABAAAAXR8AAKR9IQABAAAAXx8AAKh9IQABAAAAYB8AAKx9IQABAAAAYR8AALB9IQABAAAAYh8AALR9IQABAAAAYx8AALh9IQABAAAAZB8AALx9IQABAAAAZR8AAMB9IQABAAAAZh8AAMR9IQABAAAAZx8AAMh9IQABAAAAaB8AAMx9IQABAAAAaR8AANB9IQABAAAAah8AANR9IQABAAAAax8AANh9IQABAAAAbB8AANx9IQABAAAAbR8AAOB9IQABAAAAbh8AAOR9IQABAAAAbx8AAOh9IQABAAAAcB8AAOx9IQABAAAAcR8AAPB9IQABAAAAch8AAPR9IQABAAAAcx8AAPh9IQABAAAAdB8AAPx9IQABAAAAdR8AAAB+IQABAAAAdh8AAAR+IQABAAAAdx8AAAh+IQABAAAAeB8AAAx+IQABAAAAeR8AABB+IQABAAAAeh8AABR+IQABAAAAex8AABh+IQABAAAAfB8AABx+IQABAAAAfR8AACB+IQABAAAAgB8AACR+IQABAAAAgR8AACh+IQABAAAAgh8AACx+IQABAAAAgx8AADB+IQABAAAAhB8AADR+IQABAAAAhR8AADh+IQABAAAAhh8AADx+IQABAAAAhx8AAEB+IQABAAAAiB8AAER+IQABAAAAiR8AAEh+IQABAAAAih8AAEx+IQABAAAAix8AAFB+IQABAAAAjB8AAFR+IQABAAAAjR8AAFh+IQABAAAAjh8AAFx+IQABAAAAjx8AAGB+IQABAAAAkB8AAGR+IQABAAAAkR8AAGh+IQABAAAAkh8AAGx+IQABAAAAkx8AAHB+IQABAAAAlB8AAHR+IQABAAAAlR8AAHh+IQABAAAAlh8AAHx+IQABAAAAlx8AAIB+IQABAAAAmB8AAIR+IQABAAAAmR8AAIh+IQABAAAAmh8AAIx+IQABAAAAmx8AAJB+IQABAAAAnB8AAJR+IQABAAAAnR8AAJh+IQABAAAAnh8AAJx+IQABAAAAnx8AAKB+IQABAAAAoB8AAKR+IQABAAAAoR8AAKh+IQABAAAAoh8AAKx+IQABAAAAox8AALB+IQABAAAApB8AALR+IQABAAAApR8AALh+IQABAAAAph8AALx+IQABAAAApx8AAMB+IQABAAAAqB8AAMR+IQABAAAAqR8AAMh+IQABAAAAqh8AAMx+IQABAAAAqx8AANB+IQABAAAArB8AANR+IQABAAAArR8AANh+IQABAAAArh8AANx+IQABAAAArx8AAOB+IQABAAAAsB8AAOR+IQABAAAAsR8AAOh+IQABAAAAsx8AAOx+IQABAAAAuB8AAPB+IQABAAAAuR8AAPR+IQABAAAAuh8AAPh+IQABAAAAux8AAPx+IQABAAAAvB8AAAB/IQABAAAAvh8AAAR/IQADAAAAwx8AABB/IQABAAAAyB8AABR/IQABAAAAyR8AABh/IQABAAAAyh8AABx/IQABAAAAyx8AACB/IQABAAAAzB8AACR/IQABAAAA0B8AACh/IQABAAAA0R8AACx/IQABAAAA2B8AADB/IQABAAAA2R8AADR/IQABAAAA2h8AADh/IQABAAAA2x8AADx/IQABAAAA4B8AAEB/IQABAAAA4R8AAER/IQABAAAA5R8AAEh/IQABAAAA6B8AAEx/IQABAAAA6R8AAFB/IQABAAAA6h8AAFR/IQABAAAA6x8AAFh/IQABAAAA7B8AAFx/IQABAAAA8x8AAGB/IQABAAAA+B8AAGR/IQABAAAA+R8AAGh/IQABAAAA+h8AAGx/IQABAAAA+x8AAHB/IQABAAAA/B8AAHR/IQABAAAAJiEAAHh/IQACAAAAKiEAAIB/IQACAAAAKyEAAIh/IQACAAAAMiEAAJB/IQABAAAATiEAAJR/IQABAAAAYCEAAJh/IQABAAAAYSEAAJx/IQABAAAAYiEAAKB/IQABAAAAYyEAAKR/IQABAAAAZCEAAKh/IQABAAAAZSEAAKx/IQABAAAAZiEAALB/IQABAAAAZyEAALR/IQABAAAAaCEAALh/IQABAAAAaSEAALx/IQABAAAAaiEAAMB/IQABAAAAayEAAMR/IQABAAAAbCEAAMh/IQABAAAAbSEAAMx/IQABAAAAbiEAANB/IQABAAAAbyEAANR/IQABAAAAcCEAANh/IQABAAAAcSEAANx/IQABAAAAciEAAOB/IQABAAAAcyEAAOR/IQABAAAAdCEAAOh/IQABAAAAdSEAAOx/IQABAAAAdiEAAPB/IQABAAAAdyEAAPR/IQABAAAAeCEAAPh/IQABAAAAeSEAAPx/IQABAAAAeiEAAACAIQABAAAAeyEAAASAIQABAAAAfCEAAAiAIQABAAAAfSEAAAyAIQABAAAAfiEAABCAIQABAAAAfyEAABSAIQABAAAAgyEAABiAIQABAAAAhCEAAByAIQABAAAAtiQAACCAIQABAAAAtyQAACSAIQABAAAAuCQAACiAIQABAAAAuSQAACyAIQABAAAAuiQAADCAIQABAAAAuyQAADSAIQABAAAAvCQAADiAIQABAAAAvSQAADyAIQABAAAAviQAAECAIQABAAAAvyQAAESAIQABAAAAwCQAAEiAIQABAAAAwSQAAEyAIQABAAAAwiQAAFCAIQABAAAAwyQAAFSAIQABAAAAxCQAAFiAIQABAAAAxSQAAFyAIQABAAAAxiQAAGCAIQABAAAAxyQAAGSAIQABAAAAyCQAAGiAIQABAAAAySQAAGyAIQABAAAAyiQAAHCAIQABAAAAyyQAAHSAIQABAAAAzCQAAHiAIQABAAAAzSQAAHyAIQABAAAAziQAAICAIQABAAAAzyQAAISAIQABAAAA0CQAAIiAIQABAAAA0SQAAIyAIQABAAAA0iQAAJCAIQABAAAA0yQAAJSAIQABAAAA1CQAAJiAIQABAAAA1SQAAJyAIQABAAAA1iQAAKCAIQABAAAA1yQAAKSAIQABAAAA2CQAAKiAIQABAAAA2SQAAKyAIQABAAAA2iQAALCAIQABAAAA2yQAALSAIQABAAAA3CQAALiAIQABAAAA3SQAALyAIQABAAAA3iQAAMCAIQABAAAA3yQAAMSAIQABAAAA4CQAAMiAIQABAAAA4SQAAMyAIQABAAAA4iQAANCAIQABAAAA4yQAANSAIQABAAAA5CQAANiAIQABAAAA5SQAANyAIQABAAAA5iQAAOCAIQABAAAA5yQAAOSAIQABAAAA6CQAAOiAIQABAAAA6SQAAOyAIQABAAAAACwAAPCAIQABAAAAASwAAPSAIQABAAAAAiwAAPiAIQABAAAAAywAAPyAIQABAAAABCwAAACBIQABAAAABSwAAASBIQABAAAABiwAAAiBIQABAAAABywAAAyBIQABAAAACCwAABCBIQABAAAACSwAABSBIQABAAAACiwAABiBIQABAAAACywAAByBIQABAAAADCwAACCBIQABAAAADSwAACSBIQABAAAADiwAACiBIQABAAAADywAACyBIQABAAAAECwAADCBIQABAAAAESwAADSBIQABAAAAEiwAADiBIQABAAAAEywAADyBIQABAAAAFCwAAECBIQABAAAAFSwAAESBIQABAAAAFiwAAEiBIQABAAAAFywAAEyBIQABAAAAGCwAAFCBIQABAAAAGSwAAFSBIQABAAAAGiwAAFiBIQABAAAAGywAAFyBIQABAAAAHCwAAGCBIQABAAAAHSwAAGSBIQABAAAAHiwAAGiBIQABAAAAHywAAGyBIQABAAAAICwAAHCBIQABAAAAISwAAHSBIQABAAAAIiwAAHiBIQABAAAAIywAAHyBIQABAAAAJCwAAICBIQABAAAAJSwAAISBIQABAAAAJiwAAIiBIQABAAAAJywAAIyBIQABAAAAKCwAAJCBIQABAAAAKSwAAJSBIQABAAAAKiwAAJiBIQABAAAAKywAAJyBIQABAAAALCwAAKCBIQABAAAALSwAAKSBIQABAAAALiwAAKiBIQABAAAALywAAKyBIQABAAAAMCwAALCBIQABAAAAMSwAALSBIQABAAAAMiwAALiBIQABAAAAMywAALyBIQABAAAANCwAAMCBIQABAAAANSwAAMSBIQABAAAANiwAAMiBIQABAAAANywAAMyBIQABAAAAOCwAANCBIQABAAAAOSwAANSBIQABAAAAOiwAANiBIQABAAAAOywAANyBIQABAAAAPCwAAOCBIQABAAAAPSwAAOSBIQABAAAAPiwAAOiBIQABAAAAPywAAOyBIQABAAAAQCwAAPCBIQABAAAAQSwAAPSBIQABAAAAQiwAAPiBIQABAAAAQywAAPyBIQABAAAARCwAAACCIQABAAAARSwAAASCIQABAAAARiwAAAiCIQABAAAARywAAAyCIQABAAAASCwAABCCIQABAAAASSwAABSCIQABAAAASiwAABiCIQABAAAASywAAByCIQABAAAATCwAACCCIQABAAAATSwAACSCIQABAAAATiwAACiCIQABAAAATywAACyCIQABAAAAUCwAADCCIQABAAAAUSwAADSCIQABAAAAUiwAADiCIQABAAAAUywAADyCIQABAAAAVCwAAECCIQABAAAAVSwAAESCIQABAAAAViwAAEiCIQABAAAAVywAAEyCIQABAAAAWCwAAFCCIQABAAAAWSwAAFSCIQABAAAAWiwAAFiCIQABAAAAWywAAFyCIQABAAAAXCwAAGCCIQABAAAAXSwAAGSCIQABAAAAXiwAAGiCIQABAAAAXywAAGyCIQABAAAAYCwAAHCCIQABAAAAYSwAAHSCIQABAAAAYiwAAHiCIQABAAAAYywAAHyCIQABAAAAZCwAAICCIQABAAAAZSwAAISCIQABAAAAZiwAAIiCIQABAAAAZywAAIyCIQABAAAAaCwAAJCCIQABAAAAaSwAAJSCIQABAAAAaiwAAJiCIQABAAAAaywAAJyCIQABAAAAbCwAAKCCIQABAAAAbSwAAKSCIQABAAAAbiwAAKiCIQABAAAAbywAAKyCIQABAAAAcCwAALCCIQABAAAAciwAALSCIQABAAAAcywAALiCIQABAAAAdSwAALyCIQABAAAAdiwAAMCCIQABAAAAfiwAAMSCIQABAAAAfywAAMiCIQABAAAAgCwAAMyCIQABAAAAgSwAANCCIQABAAAAgiwAANSCIQABAAAAgywAANiCIQABAAAAhCwAANyCIQABAAAAhSwAAOCCIQABAAAAhiwAAOSCIQABAAAAhywAAOiCIQABAAAAiCwAAOyCIQABAAAAiSwAAPCCIQABAAAAiiwAAPSCIQABAAAAiywAAPiCIQABAAAAjCwAAPyCIQABAAAAjSwAAACDIQABAAAAjiwAAASDIQABAAAAjywAAAiDIQABAAAAkCwAAAyDIQABAAAAkSwAABCDIQABAAAAkiwAABSDIQABAAAAkywAABiDIQABAAAAlCwAAByDIQABAAAAlSwAACCDIQABAAAAliwAACSDIQABAAAAlywAACiDIQABAAAAmCwAACyDIQABAAAAmSwAADCDIQABAAAAmiwAADSDIQABAAAAmywAADiDIQABAAAAnCwAADyDIQABAAAAnSwAAECDIQABAAAAniwAAESDIQABAAAAnywAAEiDIQABAAAAoCwAAEyDIQABAAAAoSwAAFCDIQABAAAAoiwAAFSDIQABAAAAoywAAFiDIQABAAAApCwAAFyDIQABAAAApSwAAGCDIQABAAAApiwAAGSDIQABAAAApywAAGiDIQABAAAAqCwAAGyDIQABAAAAqSwAAHCDIQABAAAAqiwAAHSDIQABAAAAqywAAHiDIQABAAAArCwAAHyDIQABAAAArSwAAICDIQABAAAAriwAAISDIQABAAAArywAAIiDIQABAAAAsCwAAIyDIQABAAAAsSwAAJCDIQABAAAAsiwAAJSDIQABAAAAsywAAJiDIQABAAAAtCwAAJyDIQABAAAAtSwAAKCDIQABAAAAtiwAAKSDIQABAAAAtywAAKiDIQABAAAAuCwAAKyDIQABAAAAuSwAALCDIQABAAAAuiwAALSDIQABAAAAuywAALiDIQABAAAAvCwAALyDIQABAAAAvSwAAMCDIQABAAAAviwAAMSDIQABAAAAvywAAMiDIQABAAAAwCwAAMyDIQABAAAAwSwAANCDIQABAAAAwiwAANSDIQABAAAAwywAANiDIQABAAAAxCwAANyDIQABAAAAxSwAAOCDIQABAAAAxiwAAOSDIQABAAAAxywAAOiDIQABAAAAyCwAAOyDIQABAAAAySwAAPCDIQABAAAAyiwAAPSDIQABAAAAyywAAPiDIQABAAAAzCwAAPyDIQABAAAAzSwAAACEIQABAAAAziwAAASEIQABAAAAzywAAAiEIQABAAAA0CwAAAyEIQABAAAA0SwAABCEIQABAAAA0iwAABSEIQABAAAA0ywAABiEIQABAAAA1CwAAByEIQABAAAA1SwAACCEIQABAAAA1iwAACSEIQABAAAA1ywAACiEIQABAAAA2CwAACyEIQABAAAA2SwAADCEIQABAAAA2iwAADSEIQABAAAA2ywAADiEIQABAAAA3CwAADyEIQABAAAA3SwAAECEIQABAAAA3iwAAESEIQABAAAA3ywAAEiEIQABAAAA4CwAAEyEIQABAAAA4SwAAFCEIQABAAAA4iwAAFSEIQABAAAA4ywAAFiEIQABAAAA6ywAAFyEIQABAAAA7CwAAGCEIQABAAAA7SwAAGSEIQABAAAA7iwAAGiEIQABAAAA8iwAAGyEIQABAAAA8ywAAHCEIQABAAAAAC0AAHSEIQABAAAAAS0AAHiEIQABAAAAAi0AAHyEIQABAAAAAy0AAICEIQABAAAABC0AAISEIQABAAAABS0AAIiEIQABAAAABi0AAIyEIQABAAAABy0AAJCEIQABAAAACC0AAJSEIQABAAAACS0AAJiEIQABAAAACi0AAJyEIQABAAAACy0AAKCEIQABAAAADC0AAKSEIQABAAAADS0AAKiEIQABAAAADi0AAKyEIQABAAAADy0AALCEIQABAAAAEC0AALSEIQABAAAAES0AALiEIQABAAAAEi0AALyEIQABAAAAEy0AAMCEIQABAAAAFC0AAMSEIQABAAAAFS0AAMiEIQABAAAAFi0AAMyEIQABAAAAFy0AANCEIQABAAAAGC0AANSEIQABAAAAGS0AANiEIQABAAAAGi0AANyEIQABAAAAGy0AAOCEIQABAAAAHC0AAOSEIQABAAAAHS0AAOiEIQABAAAAHi0AAOyEIQABAAAAHy0AAPCEIQABAAAAIC0AAPSEIQABAAAAIS0AAPiEIQABAAAAIi0AAPyEIQABAAAAIy0AAACFIQABAAAAJC0AAASFIQABAAAAJS0AAAiFIQABAAAAJy0AAAyFIQABAAAALS0AABCFIQABAAAAQKYAABSFIQABAAAAQaYAABiFIQABAAAAQqYAAByFIQABAAAAQ6YAACCFIQABAAAARKYAACSFIQABAAAARaYAACiFIQABAAAARqYAACyFIQABAAAAR6YAADCFIQABAAAASKYAADSFIQABAAAASaYAADiFIQABAAAASqYAADyFIQACAAAAS6YAAESFIQACAAAATKYAAEyFIQABAAAATaYAAFCFIQABAAAATqYAAFSFIQABAAAAT6YAAFiFIQABAAAAUKYAAFyFIQABAAAAUaYAAGCFIQABAAAAUqYAAGSFIQABAAAAU6YAAGiFIQABAAAAVKYAAGyFIQABAAAAVaYAAHCFIQABAAAAVqYAAHSFIQABAAAAV6YAAHiFIQABAAAAWKYAAHyFIQABAAAAWaYAAICFIQABAAAAWqYAAISFIQABAAAAW6YAAIiFIQABAAAAXKYAAIyFIQABAAAAXaYAAJCFIQABAAAAXqYAAJSFIQABAAAAX6YAAJiFIQABAAAAYKYAAJyFIQABAAAAYaYAAKCFIQABAAAAYqYAAKSFIQABAAAAY6YAAKiFIQABAAAAZKYAAKyFIQABAAAAZaYAALCFIQABAAAAZqYAALSFIQABAAAAZ6YAALiFIQABAAAAaKYAALyFIQABAAAAaaYAAMCFIQABAAAAaqYAAMSFIQABAAAAa6YAAMiFIQABAAAAbKYAAMyFIQABAAAAbaYAANCFIQABAAAAgKYAANSFIQABAAAAgaYAANiFIQABAAAAgqYAANyFIQABAAAAg6YAAOCFIQABAAAAhKYAAOSFIQABAAAAhaYAAOiFIQABAAAAhqYAAOyFIQABAAAAh6YAAPCFIQABAAAAiKYAAPSFIQABAAAAiaYAAPiFIQABAAAAiqYAAPyFIQABAAAAi6YAAACGIQABAAAAjKYAAASGIQABAAAAjaYAAAiGIQABAAAAjqYAAAyGIQABAAAAj6YAABCGIQABAAAAkKYAABSGIQABAAAAkaYAABiGIQABAAAAkqYAAByGIQABAAAAk6YAACCGIQABAAAAlKYAACSGIQABAAAAlaYAACiGIQABAAAAlqYAACyGIQABAAAAl6YAADCGIQABAAAAmKYAADSGIQABAAAAmaYAADiGIQABAAAAmqYAADyGIQABAAAAm6YAAECGIQABAAAAIqcAAESGIQABAAAAI6cAAEiGIQABAAAAJKcAAEyGIQABAAAAJacAAFCGIQABAAAAJqcAAFSGIQABAAAAJ6cAAFiGIQABAAAAKKcAAFyGIQABAAAAKacAAGCGIQABAAAAKqcAAGSGIQABAAAAK6cAAGiGIQABAAAALKcAAGyGIQABAAAALacAAHCGIQABAAAALqcAAHSGIQABAAAAL6cAAHiGIQABAAAAMqcAAHyGIQABAAAAM6cAAICGIQABAAAANKcAAISGIQABAAAANacAAIiGIQABAAAANqcAAIyGIQABAAAAN6cAAJCGIQABAAAAOKcAAJSGIQABAAAAOacAAJiGIQABAAAAOqcAAJyGIQABAAAAO6cAAKCGIQABAAAAPKcAAKSGIQABAAAAPacAAKiGIQABAAAAPqcAAKyGIQABAAAAP6cAALCGIQABAAAAQKcAALSGIQABAAAAQacAALiGIQABAAAAQqcAALyGIQABAAAAQ6cAAMCGIQABAAAARKcAAMSGIQABAAAARacAAMiGIQABAAAARqcAAMyGIQABAAAAR6cAANCGIQABAAAASKcAANSGIQABAAAASacAANiGIQABAAAASqcAANyGIQABAAAAS6cAAOCGIQABAAAATKcAAOSGIQABAAAATacAAOiGIQABAAAATqcAAOyGIQABAAAAT6cAAPCGIQABAAAAUKcAAPSGIQABAAAAUacAAPiGIQABAAAAUqcAAPyGIQABAAAAU6cAAACHIQABAAAAVKcAAASHIQABAAAAVacAAAiHIQABAAAAVqcAAAyHIQABAAAAV6cAABCHIQABAAAAWKcAABSHIQABAAAAWacAABiHIQABAAAAWqcAAByHIQABAAAAW6cAACCHIQABAAAAXKcAACSHIQABAAAAXacAACiHIQABAAAAXqcAACyHIQABAAAAX6cAADCHIQABAAAAYKcAADSHIQABAAAAYacAADiHIQABAAAAYqcAADyHIQABAAAAY6cAAECHIQABAAAAZKcAAESHIQABAAAAZacAAEiHIQABAAAAZqcAAEyHIQABAAAAZ6cAAFCHIQABAAAAaKcAAFSHIQABAAAAaacAAFiHIQABAAAAaqcAAFyHIQABAAAAa6cAAGCHIQABAAAAbKcAAGSHIQABAAAAbacAAGiHIQABAAAAbqcAAGyHIQABAAAAb6cAAHCHIQABAAAAeacAAHSHIQABAAAAeqcAAHiHIQABAAAAe6cAAHyHIQABAAAAfKcAAICHIQABAAAAfacAAISHIQABAAAAfqcAAIiHIQABAAAAf6cAAIyHIQABAAAAgKcAAJCHIQABAAAAgacAAJSHIQABAAAAgqcAAJiHIQABAAAAg6cAAJyHIQABAAAAhKcAAKCHIQABAAAAhacAAKSHIQABAAAAhqcAAKiHIQABAAAAh6cAAKyHIQABAAAAi6cAALCHIQABAAAAjKcAALSHIQABAAAAjacAALiHIQABAAAAkKcAALyHIQABAAAAkacAAMCHIQABAAAAkqcAAMSHIQABAAAAk6cAAMiHIQABAAAAlKcAAMyHIQABAAAAlqcAANCHIQABAAAAl6cAANSHIQABAAAAmKcAANiHIQABAAAAmacAANyHIQABAAAAmqcAAOCHIQABAAAAm6cAAOSHIQABAAAAnKcAAOiHIQABAAAAnacAAOyHIQABAAAAnqcAAPCHIQABAAAAn6cAAPSHIQABAAAAoKcAAPiHIQABAAAAoacAAPyHIQABAAAAoqcAAACIIQABAAAAo6cAAASIIQABAAAApKcAAAiIIQABAAAApacAAAyIIQABAAAApqcAABCIIQABAAAAp6cAABSIIQABAAAAqKcAABiIIQABAAAAqacAAByIIQABAAAAqqcAACCIIQABAAAAq6cAACSIIQABAAAArKcAACiIIQABAAAAracAACyIIQABAAAArqcAADCIIQABAAAAsKcAADSIIQABAAAAsacAADiIIQABAAAAsqcAADyIIQABAAAAs6cAAECIIQABAAAAtKcAAESIIQABAAAAtacAAEiIIQABAAAAtqcAAEyIIQABAAAAt6cAAFCIIQABAAAAuKcAAFSIIQABAAAAuacAAFiIIQABAAAAuqcAAFyIIQABAAAAu6cAAGCIIQABAAAAvKcAAGSIIQABAAAAvacAAGiIIQABAAAAvqcAAGyIIQABAAAAv6cAAHCIIQABAAAAwKcAAHSIIQABAAAAwacAAHiIIQABAAAAwqcAAHyIIQABAAAAw6cAAICIIQABAAAAxKcAAISIIQABAAAAxacAAIiIIQABAAAAxqcAAIyIIQABAAAAx6cAAJCIIQABAAAAyKcAAJSIIQABAAAAyacAAJiIIQABAAAAyqcAAJyIIQABAAAA0KcAAKCIIQABAAAA0acAAKSIIQABAAAA1qcAAKiIIQABAAAA16cAAKyIIQABAAAA2KcAALCIIQABAAAA2acAALSIIQABAAAA9acAALiIIQABAAAA9qcAALyIIQABAAAAU6sAAMCIIQABAAAAcKsAAMSIIQABAAAAcasAAMiIIQABAAAAcqsAAMyIIQABAAAAc6sAANCIIQABAAAAdKsAANSIIQABAAAAdasAANiIIQABAAAAdqsAANyIIQABAAAAd6sAAOCIIQABAAAAeKsAAOSIIQABAAAAeasAAOiIIQABAAAAeqsAAOyIIQABAAAAe6sAAPCIIQABAAAAfKsAAPSIIQABAAAAfasAAPiIIQABAAAAfqsAAPyIIQABAAAAf6sAAACJIQABAAAAgKsAAASJIQABAAAAgasAAAiJIQABAAAAgqsAAAyJIQABAAAAg6sAABCJIQABAAAAhKsAABSJIQABAAAAhasAABiJIQABAAAAhqsAAByJIQABAAAAh6sAACCJIQABAAAAiKsAACSJIQABAAAAiasAACiJIQABAAAAiqsAACyJIQABAAAAi6sAADCJIQABAAAAjKsAADSJIQABAAAAjasAADiJIQABAAAAjqsAADyJIQABAAAAj6sAAECJIQABAAAAkKsAAESJIQABAAAAkasAAEiJIQABAAAAkqsAAEyJIQABAAAAk6sAAFCJIQABAAAAlKsAAFSJIQABAAAAlasAAFiJIQABAAAAlqsAAFyJIQABAAAAl6sAAGCJIQABAAAAmKsAAGSJIQABAAAAmasAAGiJIQABAAAAmqsAAGyJIQABAAAAm6sAAHCJIQABAAAAnKsAAHSJIQABAAAAnasAAHiJIQABAAAAnqsAAHyJIQABAAAAn6sAAICJIQABAAAAoKsAAISJIQABAAAAoasAAIiJIQABAAAAoqsAAIyJIQABAAAAo6sAAJCJIQABAAAApKsAAJSJIQABAAAApasAAJiJIQABAAAApqsAAJyJIQABAAAAp6sAAKCJIQABAAAAqKsAAKSJIQABAAAAqasAAKiJIQABAAAAqqsAAKyJIQABAAAAq6sAALCJIQABAAAArKsAALSJIQABAAAArasAALiJIQABAAAArqsAALyJIQABAAAAr6sAAMCJIQABAAAAsKsAAMSJIQABAAAAsasAAMiJIQABAAAAsqsAAMyJIQABAAAAs6sAANCJIQABAAAAtKsAANSJIQABAAAAtasAANiJIQABAAAAtqsAANyJIQABAAAAt6sAAOCJIQABAAAAuKsAAOSJIQABAAAAuasAAOiJIQABAAAAuqsAAOyJIQABAAAAu6sAAPCJIQABAAAAvKsAAPSJIQABAAAAvasAAPiJIQABAAAAvqsAAPyJIQABAAAAv6sAAACKIQABAAAAIf8AAASKIQABAAAAIv8AAAiKIQABAAAAI/8AAAyKIQABAAAAJP8AABCKIQABAAAAJf8AABSKIQABAAAAJv8AABiKIQABAAAAJ/8AAByKIQABAAAAKP8AACCKIQABAAAAKf8AACSKIQABAAAAKv8AACiKIQABAAAAK/8AACyKIQABAAAALP8AADCKIQABAAAALf8AADSKIQABAAAALv8AADiKIQABAAAAL/8AADyKIQABAAAAMP8AAECKIQABAAAAMf8AAESKIQABAAAAMv8AAEiKIQABAAAAM/8AAEyKIQABAAAANP8AAFCKIQABAAAANf8AAFSKIQABAAAANv8AAFiKIQABAAAAN/8AAFyKIQABAAAAOP8AAGCKIQABAAAAOf8AAGSKIQABAAAAOv8AAGiKIQABAAAAQf8AAGyKIQABAAAAQv8AAHCKIQABAAAAQ/8AAHSKIQABAAAARP8AAHiKIQABAAAARf8AAHyKIQABAAAARv8AAICKIQABAAAAR/8AAISKIQABAAAASP8AAIiKIQABAAAASf8AAIyKIQABAAAASv8AAJCKIQABAAAAS/8AAJSKIQABAAAATP8AAJiKIQABAAAATf8AAJyKIQABAAAATv8AAKCKIQABAAAAT/8AAKSKIQABAAAAUP8AAKiKIQABAAAAUf8AAKyKIQABAAAAUv8AALCKIQABAAAAU/8AALSKIQABAAAAVP8AALiKIQABAAAAVf8AALyKIQABAAAAVv8AAMCKIQABAAAAV/8AAMSKIQABAAAAWP8AAMiKIQABAAAAWf8AAMyKIQABAAAAWv8AANCKIQABAAAAAAQBANSKIQABAAAAAQQBANiKIQABAAAAAgQBANyKIQABAAAAAwQBAOCKIQABAAAABAQBAOSKIQABAAAABQQBAOiKIQABAAAABgQBAOyKIQABAAAABwQBAPCKIQABAAAACAQBAPSKIQABAAAACQQBAPiKIQABAAAACgQBAPyKIQABAAAACwQBAACLIQABAAAADAQBAASLIQABAAAADQQBAAiLIQABAAAADgQBAAyLIQABAAAADwQBABCLIQABAAAAEAQBABSLIQABAAAAEQQBABiLIQABAAAAEgQBAByLIQABAAAAEwQBACCLIQABAAAAFAQBACSLIQABAAAAFQQBACiLIQABAAAAFgQBACyLIQABAAAAFwQBADCLIQABAAAAGAQBADSLIQABAAAAGQQBADiLIQABAAAAGgQBADyLIQABAAAAGwQBAECLIQABAAAAHAQBAESLIQABAAAAHQQBAEiLIQABAAAAHgQBAEyLIQABAAAAHwQBAFCLIQABAAAAIAQBAFSLIQABAAAAIQQBAFiLIQABAAAAIgQBAFyLIQABAAAAIwQBAGCLIQABAAAAJAQBAGSLIQABAAAAJQQBAGiLIQABAAAAJgQBAGyLIQABAAAAJwQBAHCLIQABAAAAKAQBAHSLIQABAAAAKQQBAHiLIQABAAAAKgQBAHyLIQABAAAAKwQBAICLIQABAAAALAQBAISLIQABAAAALQQBAIiLIQABAAAALgQBAIyLIQABAAAALwQBAJCLIQABAAAAMAQBAJSLIQABAAAAMQQBAJiLIQABAAAAMgQBAJyLIQABAAAAMwQBAKCLIQABAAAANAQBAKSLIQABAAAANQQBAKiLIQABAAAANgQBAKyLIQABAAAANwQBALCLIQABAAAAOAQBALSLIQABAAAAOQQBALiLIQABAAAAOgQBALyLIQABAAAAOwQBAMCLIQABAAAAPAQBAMSLIQABAAAAPQQBAMiLIQABAAAAPgQBAMyLIQABAAAAPwQBANCLIQABAAAAQAQBANSLIQABAAAAQQQBANiLIQABAAAAQgQBANyLIQABAAAAQwQBAOCLIQABAAAARAQBAOSLIQABAAAARQQBAOiLIQABAAAARgQBAOyLIQABAAAARwQBAPCLIQABAAAASAQBAPSLIQABAAAASQQBAPiLIQABAAAASgQBAPyLIQABAAAASwQBAACMIQABAAAATAQBAASMIQABAAAATQQBAAiMIQABAAAATgQBAAyMIQABAAAATwQBABCMIQABAAAAsAQBABSMIQABAAAAsQQBABiMIQABAAAAsgQBAByMIQABAAAAswQBACCMIQABAAAAtAQBACSMIQABAAAAtQQBACiMIQABAAAAtgQBACyMIQABAAAAtwQBADCMIQABAAAAuAQBADSMIQABAAAAuQQBADiMIQABAAAAugQBADyMIQABAAAAuwQBAECMIQABAAAAvAQBAESMIQABAAAAvQQBAEiMIQABAAAAvgQBAEyMIQABAAAAvwQBAFCMIQABAAAAwAQBAFSMIQABAAAAwQQBAFiMIQABAAAAwgQBAFyMIQABAAAAwwQBAGCMIQABAAAAxAQBAGSMIQABAAAAxQQBAGiMIQABAAAAxgQBAGyMIQABAAAAxwQBAHCMIQABAAAAyAQBAHSMIQABAAAAyQQBAHiMIQABAAAAygQBAHyMIQABAAAAywQBAICMIQABAAAAzAQBAISMIQABAAAAzQQBAIiMIQABAAAAzgQBAIyMIQABAAAAzwQBAJCMIQABAAAA0AQBAJSMIQABAAAA0QQBAJiMIQABAAAA0gQBAJyMIQABAAAA0wQBAKCMIQABAAAA2AQBAKSMIQABAAAA2QQBAKiMIQABAAAA2gQBAKyMIQABAAAA2wQBALCMIQABAAAA3AQBALSMIQABAAAA3QQBALiMIQABAAAA3gQBALyMIQABAAAA3wQBAMCMIQABAAAA4AQBAMSMIQABAAAA4QQBAMiMIQABAAAA4gQBAMyMIQABAAAA4wQBANCMIQABAAAA5AQBANSMIQABAAAA5QQBANiMIQABAAAA5gQBANyMIQABAAAA5wQBAOCMIQABAAAA6AQBAOSMIQABAAAA6QQBAOiMIQABAAAA6gQBAOyMIQABAAAA6wQBAPCMIQABAAAA7AQBAPSMIQABAAAA7QQBAPiMIQABAAAA7gQBAPyMIQABAAAA7wQBAACNIQABAAAA8AQBAASNIQABAAAA8QQBAAiNIQABAAAA8gQBAAyNIQABAAAA8wQBABCNIQABAAAA9AQBABSNIQABAAAA9QQBABiNIQABAAAA9gQBAByNIQABAAAA9wQBACCNIQABAAAA+AQBACSNIQABAAAA+QQBACiNIQABAAAA+gQBACyNIQABAAAA+wQBADCNIQABAAAAcAUBADSNIQABAAAAcQUBADiNIQABAAAAcgUBADyNIQABAAAAcwUBAECNIQABAAAAdAUBAESNIQABAAAAdQUBAEiNIQABAAAAdgUBAEyNIQABAAAAdwUBAFCNIQABAAAAeAUBAFSNIQABAAAAeQUBAFiNIQABAAAAegUBAFyNIQABAAAAfAUBAGCNIQABAAAAfQUBAGSNIQABAAAAfgUBAGiNIQABAAAAfwUBAGyNIQABAAAAgAUBAHCNIQABAAAAgQUBAHSNIQABAAAAggUBAHiNIQABAAAAgwUBAHyNIQABAAAAhAUBAICNIQABAAAAhQUBAISNIQABAAAAhgUBAIiNIQABAAAAhwUBAIyNIQABAAAAiAUBAJCNIQABAAAAiQUBAJSNIQABAAAAigUBAJiNIQABAAAAjAUBAJyNIQABAAAAjQUBAKCNIQABAAAAjgUBAKSNIQABAAAAjwUBAKiNIQABAAAAkAUBAKyNIQABAAAAkQUBALCNIQABAAAAkgUBALSNIQABAAAAlAUBALiNIQABAAAAlQUBALyNIQABAAAAlwUBAMCNIQABAAAAmAUBAMSNIQABAAAAmQUBAMiNIQABAAAAmgUBAMyNIQABAAAAmwUBANCNIQABAAAAnAUBANSNIQABAAAAnQUBANiNIQABAAAAngUBANyNIQABAAAAnwUBAOCNIQABAAAAoAUBAOSNIQABAAAAoQUBAOiNIQABAAAAowUBAOyNIQABAAAApAUBAPCNIQABAAAApQUBAPSNIQABAAAApgUBAPiNIQABAAAApwUBAPyNIQABAAAAqAUBAACOIQABAAAAqQUBAASOIQABAAAAqgUBAAiOIQABAAAAqwUBAAyOIQABAAAArAUBABCOIQABAAAArQUBABSOIQABAAAArgUBABiOIQABAAAArwUBAByOIQABAAAAsAUBACCOIQABAAAAsQUBACSOIQABAAAAswUBACiOIQABAAAAtAUBACyOIQABAAAAtQUBADCOIQABAAAAtgUBADSOIQABAAAAtwUBADiOIQABAAAAuAUBADyOIQABAAAAuQUBAECOIQABAAAAuwUBAESOIQABAAAAvAUBAEiOIQABAAAAgAwBAEyOIQABAAAAgQwBAFCOIQABAAAAggwBAFSOIQABAAAAgwwBAFiOIQABAAAAhAwBAFyOIQABAAAAhQwBAGCOIQABAAAAhgwBAGSOIQABAAAAhwwBAGiOIQABAAAAiAwBAGyOIQABAAAAiQwBAHCOIQABAAAAigwBAHSOIQABAAAAiwwBAHiOIQABAAAAjAwBAHyOIQABAAAAjQwBAICOIQABAAAAjgwBAISOIQABAAAAjwwBAIiOIQABAAAAkAwBAIyOIQABAAAAkQwBAJCOIQABAAAAkgwBAJSOIQABAAAAkwwBAJiOIQABAAAAlAwBAJyOIQABAAAAlQwBAKCOIQABAAAAlgwBAKSOIQABAAAAlwwBAKiOIQABAAAAmAwBAKyOIQABAAAAmQwBALCOIQABAAAAmgwBALSOIQABAAAAmwwBALiOIQABAAAAnAwBALyOIQABAAAAnQwBAMCOIQABAAAAngwBAMSOIQABAAAAnwwBAMiOIQABAAAAoAwBAMyOIQABAAAAoQwBANCOIQABAAAAogwBANSOIQABAAAAowwBANiOIQABAAAApAwBANyOIQABAAAApQwBAOCOIQABAAAApgwBAOSOIQABAAAApwwBAOiOIQABAAAAqAwBAOyOIQABAAAAqQwBAPCOIQABAAAAqgwBAPSOIQABAAAAqwwBAPiOIQABAAAArAwBAPyOIQABAAAArQwBAACPIQABAAAArgwBAASPIQABAAAArwwBAAiPIQABAAAAsAwBAAyPIQABAAAAsQwBABCPIQABAAAAsgwBABSPIQABAAAAwAwBABiPIQABAAAAwQwBAByPIQABAAAAwgwBACCPIQABAAAAwwwBACSPIQABAAAAxAwBACiPIQABAAAAxQwBACyPIQABAAAAxgwBADCPIQABAAAAxwwBADSPIQABAAAAyAwBADiPIQABAAAAyQwBADyPIQABAAAAygwBAECPIQABAAAAywwBAESPIQABAAAAzAwBAEiPIQABAAAAzQwBAEyPIQABAAAAzgwBAFCPIQABAAAAzwwBAFSPIQABAAAA0AwBAFiPIQABAAAA0QwBAFyPIQABAAAA0gwBAGCPIQABAAAA0wwBAGSPIQABAAAA1AwBAGiPIQABAAAA1QwBAGyPIQABAAAA1gwBAHCPIQABAAAA1wwBAHSPIQABAAAA2AwBAHiPIQABAAAA2QwBAHyPIQABAAAA2gwBAICPIQABAAAA2wwBAISPIQABAAAA3AwBAIiPIQABAAAA3QwBAIyPIQABAAAA3gwBAJCPIQABAAAA3wwBAJSPIQABAAAA4AwBAJiPIQABAAAA4QwBAJyPIQABAAAA4gwBAKCPIQABAAAA4wwBAKSPIQABAAAA5AwBAKiPIQABAAAA5QwBAKyPIQABAAAA5gwBALCPIQABAAAA5wwBALSPIQABAAAA6AwBALiPIQABAAAA6QwBALyPIQABAAAA6gwBAMCPIQABAAAA6wwBAMSPIQABAAAA7AwBAMiPIQABAAAA7QwBAMyPIQABAAAA7gwBANCPIQABAAAA7wwBANSPIQABAAAA8AwBANiPIQABAAAA8QwBANyPIQABAAAA8gwBAOCPIQABAAAAoBgBAOSPIQABAAAAoRgBAOiPIQABAAAAohgBAOyPIQABAAAAoxgBAPCPIQABAAAApBgBAPSPIQABAAAApRgBAPiPIQABAAAAphgBAPyPIQABAAAApxgBAACQIQABAAAAqBgBAASQIQABAAAAqRgBAAiQIQABAAAAqhgBAAyQIQABAAAAqxgBABCQIQABAAAArBgBABSQIQABAAAArRgBABiQIQABAAAArhgBAByQIQABAAAArxgBACCQIQABAAAAsBgBACSQIQABAAAAsRgBACiQIQABAAAAshgBACyQIQABAAAAsxgBADCQIQABAAAAtBgBADSQIQABAAAAtRgBADiQIQABAAAAthgBADyQIQABAAAAtxgBAECQIQABAAAAuBgBAESQIQABAAAAuRgBAEiQIQABAAAAuhgBAEyQIQABAAAAuxgBAFCQIQABAAAAvBgBAFSQIQABAAAAvRgBAFiQIQABAAAAvhgBAFyQIQABAAAAvxgBAGCQIQABAAAAwBgBAGSQIQABAAAAwRgBAGiQIQABAAAAwhgBAGyQIQABAAAAwxgBAHCQIQABAAAAxBgBAHSQIQABAAAAxRgBAHiQIQABAAAAxhgBAHyQIQABAAAAxxgBAICQIQABAAAAyBgBAISQIQABAAAAyRgBAIiQIQABAAAAyhgBAIyQIQABAAAAyxgBAJCQIQABAAAAzBgBAJSQIQABAAAAzRgBAJiQIQABAAAAzhgBAJyQIQABAAAAzxgBAKCQIQABAAAA0BgBAKSQIQABAAAA0RgBAKiQIQABAAAA0hgBAKyQIQABAAAA0xgBALCQIQABAAAA1BgBALSQIQABAAAA1RgBALiQIQABAAAA1hgBALyQIQABAAAA1xgBAMCQIQABAAAA2BgBAMSQIQABAAAA2RgBAMiQIQABAAAA2hgBAMyQIQABAAAA2xgBANCQIQABAAAA3BgBANSQIQABAAAA3RgBANiQIQABAAAA3hgBANyQIQABAAAA3xgBAOCQIQABAAAAQG4BAOSQIQABAAAAQW4BAOiQIQABAAAAQm4BAOyQIQABAAAAQ24BAPCQIQABAAAARG4BAPSQIQABAAAARW4BAPiQIQABAAAARm4BAPyQIQABAAAAR24BAACRIQABAAAASG4BAASRIQABAAAASW4BAAiRIQABAAAASm4BAAyRIQABAAAAS24BABCRIQABAAAATG4BABSRIQABAAAATW4BABiRIQABAAAATm4BAByRIQABAAAAT24BACCRIQABAAAAUG4BACSRIQABAAAAUW4BACiRIQABAAAAUm4BACyRIQABAAAAU24BADCRIQABAAAAVG4BADSRIQABAAAAVW4BADiRIQABAAAAVm4BADyRIQABAAAAV24BAECRIQABAAAAWG4BAESRIQABAAAAWW4BAEiRIQABAAAAWm4BAEyRIQABAAAAW24BAFCRIQABAAAAXG4BAFSRIQABAAAAXW4BAFiRIQABAAAAXm4BAFyRIQABAAAAX24BAGCRIQABAAAAYG4BAGSRIQABAAAAYW4BAGiRIQABAAAAYm4BAGyRIQABAAAAY24BAHCRIQABAAAAZG4BAHSRIQABAAAAZW4BAHiRIQABAAAAZm4BAHyRIQABAAAAZ24BAICRIQABAAAAaG4BAISRIQABAAAAaW4BAIiRIQABAAAAam4BAIyRIQABAAAAa24BAJCRIQABAAAAbG4BAJSRIQABAAAAbW4BAJiRIQABAAAAbm4BAJyRIQABAAAAb24BAKCRIQABAAAAcG4BAKSRIQABAAAAcW4BAKiRIQABAAAAcm4BAKyRIQABAAAAc24BALCRIQABAAAAdG4BALSRIQABAAAAdW4BALiRIQABAAAAdm4BALyRIQABAAAAd24BAMCRIQABAAAAeG4BAMSRIQABAAAAeW4BAMiRIQABAAAAem4BAMyRIQABAAAAe24BANCRIQABAAAAfG4BANSRIQABAAAAfW4BANiRIQABAAAAfm4BANyRIQABAAAAf24BAOCRIQABAAAAAOkBAOSRIQABAAAAAekBAOiRIQABAAAAAukBAOyRIQABAAAAA+kBAPCRIQABAAAABOkBAPSRIQABAAAABekBAPiRIQABAAAABukBAPyRIQABAAAAB+kBAACSIQABAAAACOkBAASSIQABAAAACekBAAiSIQABAAAACukBAAySIQABAAAAC+kBABCSIQABAAAADOkBABSSIQABAAAADekBABiSIQABAAAADukBABySIQABAAAAD+kBACCSIQABAAAAEOkBACSSIQABAAAAEekBACiSIQABAAAAEukBACySIQABAAAAE+kBADCSIQABAAAAFOkBADSSIQABAAAAFekBADiSIQABAAAAFukBADySIQABAAAAF+kBAECSIQABAAAAGOkBAESSIQABAAAAGekBAEiSIQABAAAAGukBAEySIQABAAAAG+kBAFCSIQABAAAAHOkBAFSS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AAAgDwAAKQ8AAEAQAABJEAAAkBAAAJkQAADgFwAA6RcAABAYAAAZGAAARhkAAE8ZAADQGQAA2RkAAIAaAACJGgAAkBoAAJkaAABQGwAAWRsAALAbAAC5GwAAQBwAAEkcAABQHAAAWRwAACCmAAAppgAA0KgAANmoAAAAqQAACakAANCpAADZqQAA8KkAAPmpAABQqgAAWaoAAPCrAAD5qwAAEP8AABn/AACgBAEAqQQBADANAQA5DQEAZhABAG8QAQDwEAEA+RABADYRAQA/EQEA0BEBANkRAQDwEgEA+RIBAFAUAQBZFAEA0BQBANkUAQBQFgEAWRYBAMAWAQDJFgEAMBcBADkXAQDgGAEA6RgBAFAZAQBZGQEAUBwBAFkcAQBQHQEAWR0BAKAdAQCpHQEAUB8BAFkfAQBgagEAaWoBAMBqAQDJagEAUGsBAFlrAQDO1wEA/9cBAEDhAQBJ4QEA8OIBAPniAQDw5AEA+eQBAFDpAQBZ6QEA8PsBAPn7AQBhc3NpZ25lZCQaIgBmAAAA/QEAAEAAAABBU0NJSUFzc2lnbmVkQW55JBoiAGYAAAAGAgAALgAAAGFnZWFoZXhBU0NJSV9IZXhfRGlnaXRBbHBoYWJldGljYWxwaGFiZXRpY2FzY2lpaGV4ZGlnaXRiY0JpZGlfQ2xhc3NiaWRpY0JpZGlfQ29udHJvbGJpZGljbGFzc2JpZGljb250cm9sYmlkaW1CaWRpX01pcnJvcmVkYmlkaW1pcnJvcmVkYmlkaW1pcnJvcmluZ2dseXBoQmlkaV9NaXJyb3JpbmdfR2x5cGhiaWRpcGFpcmVkYnJhY2tldEJpZGlfUGFpcmVkX0JyYWNrZXRiaWRpcGFpcmVkYnJhY2tldHR5cGVCaWRpX1BhaXJlZF9CcmFja2V0X1R5cGVibGtibWdicGJicHRjYW5vbmljYWxjb21iaW5pbmdjbGFzc0Nhbm9uaWNhbF9Db21iaW5pbmdfQ2xhc3NjYXNlZENhc2VkY2FzZWZvbGRpbmdDYXNlX0ZvbGRpbmdjYXNlaWdub3JhYmxlQ2FzZV9JZ25vcmFibGVjY2NjZUNvbXBvc2l0aW9uX0V4Y2x1c2lvbmNoYW5nZXN3aGVuY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkY2hhbmdlc3doZW5jYXNlbWFwcGVkQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWRjaGFuZ2Vzd2hlbmxvd2VyY2FzZWRDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZGNoYW5nZXN3aGVubmZrY2Nhc2Vmb2xkZWRDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkY2hhbmdlc3doZW50aXRsZWNhc2VkQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWRjaGFuZ2Vzd2hlbnVwcGVyY2FzZWRDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZGNpY2prYWNjb3VudGluZ251bWVyaWNrQWNjb3VudGluZ051bWVyaWNjamtjb21wYXRpYmlsaXR5dmFyaWFudGtDb21wYXRpYmlsaXR5VmFyaWFudGNqa2lpY29yZWtJSUNvcmVjamtpcmdnc291cmNla0lSR19HU291cmNlY2praXJnaHNvdXJjZWtJUkdfSFNvdXJjZWNqa2lyZ2pzb3VyY2VrSVJHX0pTb3VyY2VjamtpcmdrcHNvdXJjZWtJUkdfS1BTb3VyY2Vjamtpcmdrc291cmNla0lSR19LU291cmNlY2praXJnbXNvdXJjZWtJUkdfTVNvdXJjZWNqa2lyZ3Nzb3VyY2VrSVJHX1NTb3VyY2Vjamtpcmd0c291cmNla0lSR19UU291cmNlY2praXJndWtzb3VyY2VrSVJHX1VLU291cmNlY2praXJndXNvdXJjZWtJUkdfVVNvdXJjZWNqa2lyZ3Zzb3VyY2VrSVJHX1ZTb3VyY2VjamtvdGhlcm51bWVyaWNrT3RoZXJOdW1lcmljY2prcHJpbWFyeW51bWVyaWNrUHJpbWFyeU51bWVyaWNjamtyc3VuaWNvZGVrUlNVbmljb2RlY29tcGV4RnVsbF9Db21wb3NpdGlvbl9FeGNsdXNpb25jb21wb3NpdGlvbmV4Y2x1c2lvbmN3Y2Zjd2NtY3drY2Zjd2xjd3Rjd3VkYXNoRGFzaGRlY29tcG9zaXRpb25tYXBwaW5nRGVjb21wb3NpdGlvbl9NYXBwaW5nZGVjb21wb3NpdGlvbnR5cGVEZWNvbXBvc2l0aW9uX1R5cGVkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50RGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludGRlcERlcHJlY2F0ZWRkZXByZWNhdGVkZGlkaWFEaWFjcml0aWNkaWFjcml0aWNkbWR0ZWFFYXN0X0FzaWFuX1dpZHRoZWFzdGFzaWFud2lkdGhlYmFzZUVtb2ppX01vZGlmaWVyX0Jhc2VlY29tcEVtb2ppX0NvbXBvbmVudGVtb2RFbW9qaV9Nb2RpZmllcmVtb2ppRW1vamllbW9qaWNvbXBvbmVudGVtb2ppbW9kaWZpZXJlbW9qaW1vZGlmaWVyYmFzZWVtb2ppcHJlc2VudGF0aW9uRW1vamlfUHJlc2VudGF0aW9uZXByZXNlcXVpZGVvRXF1aXZhbGVudF9VbmlmaWVkX0lkZW9ncmFwaGVxdWl2YWxlbnR1bmlmaWVkaWRlb2dyYXBoZXhwYW5kc29ubmZjRXhwYW5kc19Pbl9ORkNleHBhbmRzb25uZmRFeHBhbmRzX09uX05GRGV4cGFuZHNvbm5ma2NFeHBhbmRzX09uX05GS0NleHBhbmRzb25uZmtkRXhwYW5kc19Pbl9ORktEZXh0RXh0ZW5kZXJleHRlbmRlZHBpY3RvZ3JhcGhpY0V4dGVuZGVkX1BpY3RvZ3JhcGhpY2V4dGVuZGVyZXh0cGljdGZjbmZrY0ZDX05GS0NfQ2xvc3VyZWZjbmZrY2Nsb3N1cmVmdWxsY29tcG9zaXRpb25leGNsdXNpb25nY2djYmdlbmVyYWxjYXRlZ29yeWdyYXBoZW1lYmFzZUdyYXBoZW1lX0Jhc2VncmFwaGVtZWNsdXN0ZXJicmVha2dyYXBoZW1lZXh0ZW5kR3JhcGhlbWVfRXh0ZW5kZ3JhcGhlbWVsaW5rR3JhcGhlbWVfTGlua2dyYmFzZWdyZXh0Z3JsaW5raGFuZ3Vsc3lsbGFibGV0eXBlSGFuZ3VsX1N5bGxhYmxlX1R5cGVoZXhIZXhfRGlnaXRoZXhkaWdpdGhzdGh5cGhlbkh5cGhlbmlkY0lEX0NvbnRpbnVlaWRjb250aW51ZWlkZW9JZGVvZ3JhcGhpY2lkZW9ncmFwaGljaWRzSURfU3RhcnRpZHNiSURTX0JpbmFyeV9PcGVyYXRvcmlkc2JpbmFyeW9wZXJhdG9yaWRzdElEU19UcmluYXJ5X09wZXJhdG9yaWRzdGFydGlkc3RyaW5hcnlvcGVyYXRvcmluZGljcG9zaXRpb25hbGNhdGVnb3J5SW5kaWNfUG9zaXRpb25hbF9DYXRlZ29yeWluZGljc3lsbGFiaWNjYXRlZ29yeUluZGljX1N5bGxhYmljX0NhdGVnb3J5aW5wY2luc2Npc2NJU09fQ29tbWVudGphbW9zaG9ydG5hbWVKYW1vX1Nob3J0X05hbWVqZ0pvaW5pbmdfR3JvdXBqb2luY0pvaW5fQ29udHJvbGpvaW5jb250cm9sam9pbmluZ2dyb3Vwam9pbmluZ3R5cGVKb2luaW5nX1R5cGVqc25qdGthY2NvdW50aW5nbnVtZXJpY2tjb21wYXRpYmlsaXR5dmFyaWFudGtpaWNvcmVraXJnZ3NvdXJjZWtpcmdoc291cmNla2lyZ2pzb3VyY2VraXJna3Bzb3VyY2VraXJna3NvdXJjZWtpcmdtc291cmNla2lyZ3Nzb3VyY2VraXJndHNvdXJjZWtpcmd1a3NvdXJjZWtpcmd1c291cmNla2lyZ3Zzb3VyY2Vrb3RoZXJudW1lcmlja3ByaW1hcnludW1lcmlja3JzdW5pY29kZWxiTGluZV9CcmVha0xvd2VyY2FzZV9NYXBwaW5nbGluZWJyZWFrbG9lTG9naWNhbF9PcmRlcl9FeGNlcHRpb25sb2dpY2Fsb3JkZXJleGNlcHRpb25Mb3dlcmNhc2Vsb3dlcmNhc2Vsb3dlcmNhc2VtYXBwaW5nbWF0aE1hdGhuYU5hbWVuYTFVbmljb2RlXzFfTmFtZW5hbWVhbGlhc05hbWVfQWxpYXNuY2hhck5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50bmZjcWNORkNfUXVpY2tfQ2hlY2tuZmNxdWlja2NoZWNrbmZkcWNORkRfUXVpY2tfQ2hlY2tuZmRxdWlja2NoZWNrbmZrY2Nhc2Vmb2xkTkZLQ19DYXNlZm9sZG5ma2NjZm5ma2NxY05GS0NfUXVpY2tfQ2hlY2tuZmtjcXVpY2tjaGVja25ma2RxY05GS0RfUXVpY2tfQ2hlY2tuZmtkcXVpY2tjaGVja25vbmNoYXJhY3RlcmNvZGVwb2ludG50TnVtZXJpY19UeXBlbnVtZXJpY3R5cGVudW1lcmljdmFsdWVOdW1lcmljX1ZhbHVlbnZvYWxwaGFPdGhlcl9BbHBoYWJldGljb2NvbW1lbnRvZGlPdGhlcl9EZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50b2dyZXh0T3RoZXJfR3JhcGhlbWVfRXh0ZW5kb2lkY090aGVyX0lEX0NvbnRpbnVlb2lkc090aGVyX0lEX1N0YXJ0b2xvd2VyT3RoZXJfTG93ZXJjYXNlb21hdGhPdGhlcl9NYXRob3RoZXJhbHBoYWJldGljb3RoZXJkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50b3RoZXJncmFwaGVtZWV4dGVuZG90aGVyaWRjb250aW51ZW90aGVyaWRzdGFydG90aGVybG93ZXJjYXNlb3RoZXJtYXRob3RoZXJ1cHBlcmNhc2VPdGhlcl9VcHBlcmNhc2VvdXBwZXJwYXRzeW5QYXR0ZXJuX1N5bnRheHBhdHRlcm5zeW50YXhwYXR0ZXJud2hpdGVzcGFjZVBhdHRlcm5fV2hpdGVfU3BhY2VwYXR3c3BjbVByZXBlbmRlZF9Db25jYXRlbmF0aW9uX01hcmtwcmVwZW5kZWRjb25jYXRlbmF0aW9ubWFya3FtYXJrUXVvdGF0aW9uX01hcmtxdW90YXRpb25tYXJrcmFkaWNhbFJhZGljYWxyZWdpb25hbGluZGljYXRvclJlZ2lvbmFsX0luZGljYXRvcnJpc2JzY2ZTaW1wbGVfQ2FzZV9Gb2xkaW5nc2NyaXB0ZXh0ZW5zaW9uc3NjeHNkU29mdF9Eb3R0ZWRzZW50ZW5jZWJyZWFrc2VudGVuY2V0ZXJtaW5hbFNlbnRlbmNlX1Rlcm1pbmFsc2Zjc2ltcGxlY2FzZWZvbGRpbmdzaW1wbGVsb3dlcmNhc2VtYXBwaW5nU2ltcGxlX0xvd2VyY2FzZV9NYXBwaW5nc2ltcGxldGl0bGVjYXNlbWFwcGluZ1NpbXBsZV9UaXRsZWNhc2VfTWFwcGluZ3NpbXBsZXVwcGVyY2FzZW1hcHBpbmdTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmdzbGNzb2Z0ZG90dGVkV2hpdGVfU3BhY2VzdGNzdGVybXN1Y3RjVGl0bGVjYXNlX01hcHBpbmd0ZXJtVGVybWluYWxfUHVuY3R1YXRpb250ZXJtaW5hbHB1bmN0dWF0aW9udGl0bGVjYXNlbWFwcGluZ3VjVXBwZXJjYXNlX01hcHBpbmd1aWRlb1VuaWZpZWRfSWRlb2dyYXBodW5pY29k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AABIVyIABAAAAL5XIgADAAAAT1ciAAQAAADBVyIAAwAAAFZXIgAEAAAAxFciAAMAAABdVyIABAAAAGNhc2VkbGV0dGVyQ2FzZWRfTGV0dGVyY2NDb250cm9sRm9ybWF0Y2xvc2VwdW5jdHVhdGlvbkNsb3NlX1B1bmN0dWF0aW9uY25jb1ByaXZhdGVfVXNlY29tYmluaW5nbWFya2Nvbm5lY3RvcnB1bmN0dWF0aW9uQ29ubmVjdG9yX1B1bmN0dWF0aW9uY29udHJvbGNzU3Vycm9nYXRlY3VycmVuY3lzeW1ib2xDdXJyZW5jeV9TeW1ib2xkYXNocHVuY3R1YXRpb25EYXNoX1B1bmN0dWF0aW9uZGVjaW1hbG51bWJlckRlY2ltYWxfTnVtYmVyZW5jbG9zaW5nbWFya0VuY2xvc2luZ19NYXJrZmluYWxwdW5jdHVhdGlvbkZpbmFsX1B1bmN0dWF0aW9uZm9ybWF0aW5pdGlhbHB1bmN0dWF0aW9uSW5pdGlhbF9QdW5jdHVhdGlvbkxldHRlcmxldHRlcmxldHRlcm51bWJlckxldHRlcl9OdW1iZXJsaW5lc2VwYXJhdG9yTGluZV9TZXBhcmF0b3JsbExvd2VyY2FzZV9MZXR0ZXJsbU1vZGlmaWVyX0xldHRlcmxvT3RoZXJfTGV0dGVybG93ZXJjYXNlbGV0dGVyVGl0bGVjYXNlX0xldHRlcmx1VXBwZXJjYXNlX0xldHRlcm1hcmttYXRoc3ltYm9sTWF0aF9TeW1ib2xtY1NwYWNpbmdfTWFya21lbW5Ob25zcGFjaW5nX01hcmttb2RpZmllcmxldHRlcm1vZGlmaWVyc3ltYm9sTW9kaWZpZXJfU3ltYm9sbmRubG5vT3RoZXJfTnVtYmVybm9uc3BhY2luZ21hcmtvcGVucHVuY3R1YXRpb25PcGVuX1B1bmN0dWF0aW9ub3RoZXJvdGhlcmxldHRlcm90aGVybnVtYmVyb3RoZXJwdW5jdHVhdGlvbk90aGVyX1B1bmN0dWF0aW9ub3RoZXJzeW1ib2xPdGhlcl9TeW1ib2xQdW5jdHVhdGlvbnBhcmFncmFwaHNlcGFyYXRvclBhcmFncmFwaF9TZXBhcmF0b3JwY3BkcGVwZnBvcHJpdmF0ZXVzZXBzcHVuY3R1YXRpb25zZXBh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IgADAAAAql0iAAUAAAC+FiYABQAAACxkIgACAAAALmQiAAcAAAA1ZCIABwAAAC5kIgAHAAAA7UMiABEAAAD+QyIAEgAAABBEIgACAAAA/kMiABIAAABiXiIAAgAAADxkIgALAAAAg14iAAsAAAA8ZCIACwAAAEdkIgABAAAASGQiAAEAAABJZCIAAQAAAEpkIgABAAAAS2QiAAIAAAC+FiYABQAAAGlxJgADAAAATWQiAAMAAABhZGxhbUFkbGFtYWRsbWFnaGJDYXVjYXNpYW5fQWxiYW5pYW5haG9tQWhvbWFuYXRvbGlhbmhpZXJvZ2x5cGhzQW5hdG9saWFuX0hpZXJvZ2x5cGhzYXJhYkFyYWJpY2FyYWJpY2FybWVuaWFuQXJtZW5pYW5hcm1pSW1wZXJpYWxfQXJhbWFpY2FybW5hdmVzdGFuQXZlc3RhbmF2c3RiYWxpQmFsaW5lc2ViYWxpbmVzZWJhbXVCYW11bWJhbXVtYmFzc0Jhc3NhX1ZhaGJhc3NhdmFoYmF0YWtCYXRha2JhdGtiZW5nQmVuZ2FsaWJlbmdhbGliaGFpa3N1a2lCaGFpa3N1a2liaGtzYm9wb0JvcG9tb2ZvYm9wb21vZm9icmFoQnJhaG1pYnJhaG1pYnJhaUJyYWlsbGVicmFpbGxlYnVnaUJ1Z2luZXNlYnVnaW5lc2VidWhkQnVoaWRidWhpZGNha21DaGFrbWFjYW5hZGlhbmFib3JpZ2luYWxDYW5hZGlhbl9BYm9yaWdpbmFsY2Fuc2NhcmlDYXJpYW5jYXJpYW5jYXVjYXNpYW5hbGJhbmlhbmNoYWttYWNoYW1DaGFtY2hlckNoZXJva2VlY2hlcm9rZWVjaG9yYXNtaWFuQ2hvcmFzbWlhbmNocnNjb21tb25Db21tb25jb3B0Q29wdGljY29wdGljY3BtbkN5cHJvX01pbm9hbmNwcnRDeXByaW90Y3VuZWlmb3JtQ3VuZWlmb3JtY3lwcmlvdGN5cHJvbWlub2FuY3lyaWxsaWNDeXJpbGxpY2N5cmxkZXNlcmV0RGVzZXJldGRldmFEZXZhbmFnYXJpZGV2YW5hZ2FyaWRpYWtEaXZlc19Ba3VydWRpdmVzYWt1cnVkb2dyRG9ncmFkb2dyYWRzcnRkdXBsRHVwbG95YW5kdXBsb3lhbmVneXBFZ3lwdGlhbl9IaWVyb2dseXBoc2VneXB0aWFuaGllcm9nbHlwaHNlbGJhRWxiYXNhbmVsYmFzYW5lbHltRWx5bWFpY2VseW1haWNldGhpRXRoaW9waWNldGhpb3BpY2dlb3JHZW9yZ2lhbmdlb3JnaWFuZ2xhZ0dsYWdvbGl0aWNnbGFnb2xpdGljZ29uZ0d1bmphbGFfR29uZGlnb25tTWFzYXJhbV9Hb25kaWdvdGhHb3RoaWNnb3RoaWNncmFuR3JhbnRoYWdyYW50aGFncmVla0dyZWVrZ3Jla2d1amFyYXRpR3VqYXJhdGlndWpyZ3VuamFsYWdvbmRpZ3VybXVraGlHdXJtdWtoaWd1cnVoYW5IYW5oYW5nSGFuZ3VsaGFuZ3VsaGFuaWhhbmlmaXJvaGluZ3lhSGFuaWZpX1JvaGluZ3lhaGFub0hhbnVub29oYW51bm9vaGF0ckhhdHJhbmhhdHJhbmhlYnJIZWJyZXdoZWJyZXdoaXJhSGlyYWdhbmFoaXJhZ2FuYWhsdXdobW5nUGFoYXdoX0htb25naG1ucE55aWFrZW5nX1B1YWNodWVfSG1vbmdocmt0S2F0YWthbmFfT3JfSGlyYWdhbmFodW5nT2xkX0h1bmdhcmlhbmltcGVyaWFsYXJhbWFpY2luaGVyaXRlZEluaGVyaXRlZGluc2NyaXB0aW9uYWxwYWhsYXZpSW5zY3JpcHRpb25hbF9QYWhsYXZpaW5zY3JpcHRpb25hbHBhcnRoaWFuSW5zY3JpcHRpb25hbF9QYXJ0aGlhbml0YWxPbGRfSXRhbGljamF2YUphdmFuZXNlamF2YW5lc2VrYWl0aGlLYWl0aGlrYWxpS2F5YWhfTGlrYW5hS2F0YWthbmFrYW5uYWRhS2FubmFkYWthdGFrYW5ha2F0YWthbmFvcmhpcmFnYW5ha2F3aUthd2lrYXlhaGxpa2hhcktoYXJvc2h0aGlraGFyb3NodGhpa2hpdGFuc21hbGxzY3JpcHRLaGl0YW5fU21hbGxfU2NyaXB0a2htZXJLaG1lcmtobXJraG9qS2hvamtpa2hvamtpa2h1ZGF3YWRpS2h1ZGF3YWRpa2l0c2tuZGFrdGhpbGFuYVRhaV9UaGFtbGFvTGFvbGFvb2xhdGluTGF0aW5sYXRubGVwY0xlcGNoYWxlcGNoYWxpbWJMaW1idWxpbWJ1bGluYUxpbmVhcl9BbGluYkxpbmVhcl9CbGluZWFyYWxpbmVhcmJsaXN1TGlzdWx5Y2lMeWNpYW5seWNpYW5seWRpTHlkaWFubHlkaWFubWFoYWphbmlNYWhhamFuaW1haGptYWthTWFrYXNhcm1ha2FzYXJtYWxheWFsYW1NYWxheWFsYW1tYW5kTWFuZGFpY21hbmRhaWNtYW5pTWFuaWNoYWVhbm1hbmljaGFlYW5tYXJjTWFyY2hlbm1hcmNoZW5tYXNhcmFtZ29uZGltZWRlZmFpZHJpbk1lZGVmYWlkcmlubWVkZm1lZXRlaW1heWVrTWVldGVpX01heWVrbWVuZE1lbmRlX0tpa2FrdWltZW5kZWtpa2FrdWltZXJjTWVyb2l0aWNfQ3Vyc2l2ZW1lcm9NZXJvaXRpY19IaWVyb2dseXBoc21lcm9pdGljY3Vyc2l2ZW1lcm9pdGljaGllcm9nbHlwaHNtaWFvTWlhb21seW1tb2RpTW9kaW1vbmdNb25nb2xpYW5tb25nb2xpYW5tcm9Ncm9tcm9vbXRlaW11bHRNdWx0YW5pbXVsdGFuaW15YW5tYXJNeWFubWFybXltcm5hYmF0YWVhbk5hYmF0YWVhbm5hZ21OYWdfTXVuZGFyaW5hZ211bmRhcmluYW5kTmFuZGluYWdhcmluYW5kaW5hZ2FyaW5hcmJPbGRfTm9ydGhfQXJhYmlhbm5iYXRuZXdhTmV3YW5ld3RhaWx1ZU5ld19UYWlfTHVlbmtvTmtvbmtvb25zaHVOdXNodW51c2h1bnlpYWtlbmdwdWFjaHVlaG1vbmdvZ2FtT2doYW1vZ2hhbW9sY2hpa2lPbF9DaGlraW9sY2tvbGRodW5nYXJpYW5vbGRpdGFsaWNvbGRub3J0aGFyYWJpYW5vbGRwZXJtaWNPbGRfUGVybWljb2xkcGVyc2lhbk9sZF9QZXJzaWFub2xkc29nZGlhbk9sZF9Tb2dkaWFub2xkc291dGhhcmFiaWFuT2xkX1NvdXRoX0FyYWJpYW5vbGR0dXJraWNPbGRfVHVya2ljb2xkdXlnaHVyT2xkX1V5Z2h1cm9yaXlhT3JpeWFvcmtob3J5YW9zYWdlT3NhZ2Vvc2dlb3NtYU9zbWFueWFvc21hbnlhb3VncnBhaGF3aGhtb25ncGFsbVBhbG15cmVuZXBhbG15cmVuZXBhdWNQYXVfQ2luX0hhdXBhdWNpbmhhdXBlcm1waGFnUGhhZ3NfUGFwaGFnc3BhcGhsaXBobHBQc2FsdGVyX1BhaGxhdmlwaG54UGhvZW5pY2lhbnBob2VuaWNpYW5wbHJkcHJ0aXBzYWx0ZXJwYWhsYXZpcWFhY3FhYWlyZWphbmdSZWphbmdyam5ncm9oZ3J1bmljUnVuaWNydW5yc2FtYXJpdGFuU2FtYXJpdGFuc2FtcnNhcmJzYXVyU2F1cmFzaHRyYXNhdXJhc2h0cmFzZ253U2lnbldyaXRpbmdzaGFyYWRhU2hhcmFkYXNoYXZpYW5TaGF2aWFuc2hhd3NocmRzaWRkU2lkZGhhbXNpZGRoYW1zaWdud3JpdGluZ3NpbmRzaW5oU2luaGFsYXNpbmhhbGFzb2dkU29nZGlhbnNvZ2RpYW5zb2dvc29yYVNvcmFfU29tcGVuZ3NvcmFzb21wZW5nc295b1NveW9tYm9zb3lvbWJvc3VuZFN1bmRhbmVzZXN1bmRhbmVzZXN5bG9TeWxvdGlfTmFncmlzeWxvdGluYWdyaXN5cmNTeXJpYWNzeXJpYWN0YWdhbG9nVGFnYWxvZ3RhZ2JUYWdiYW53YXRhZ2JhbndhdGFpbGVUYWlfTGV0YWl0aGFtdGFpdmlldFRhaV9WaWV0dGFrclRha3JpdGFrcml0YWxldGFsdXRhbWlsVGFtaWx0YW1sdGFuZ1Rhbmd1dHRhbmdzYVRhbmdzYXRhbmd1dHRhdnR0ZWx1VGVsdWd1dGVsdWd1dGZuZ1RpZmluYWdodGdsZ3RoYWFUaGFhbmF0aGFhbmF0aGFpVGhhaXRpYmV0YW5UaWJldGFudGlidHRpZmluYWdodGlyaFRpcmh1dGF0aXJodXRhdG5zYXRvdG9Ub3RvdWdhclVnYXJpdGljdWdhcml0aWN2YWlWYWl2YWlpdml0aFZpdGhrdXFpdml0aGt1cWl3YW5jaG9XYW5jaG93YXJhV2FyYW5nX0NpdGl3YXJhbmdjaXRpd2Nob3hwZW94c3V4eWV6aVllemlkaXllemlkaXlpWWl5aWlpemFuYWJhemFyc3F1YXJlWmFuYWJhemFyX1NxdWFyZXphbmJ6aW5oenl5eXp6enoAAAAQZiIABQAAABVmIgAFAAAAGmYiAAQA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IgAEAAAAi20iABAAAACbbSIABAAAAJ9tIgAUAAAAs20iAA8AAACLbSIAEAAAAMJtIgATAAAAn20iABQAAADVbSIABAAAANltIgAEAAAA3W0iAAQAAADobCIACQAAAOFtIgAEAAAA5W0iAAQAAADpbSIABAAAAO1tIgAJAAAA9m0iAAkAAADtbSIACQAAAP9tIgADAAAAAm4iAAMAAAAFbiIABAAAAAJuIgADAAAACW4iAAQAAABebSIADAAAAA1uIgAEAAAAEW4iAAcAAAAYbiIABwAAABFuIgAHAAAAH24iAAcAAAAmbiIABwAAAC1uIgAEAAAAJm4iAAcAAAAxbiIACQAAADpuIgAJAAAAQ24iAAQAAABHbiIACwAAAFJuIgAKAAAAR24iAAsAAABcbiIABAAAAGBuIgALAAAAa24iAAsAAABgbiIACwAAAHZuIgAEAAAAem4iABEAAACLbiIABAAAADpuIgAJAAAAj24iAAQAAACTbiIABAAAAJduIgAJAAAAoG4iAAsAAACrbiIAAwAAAK5uIgADAAAAsW4iAAQAAACubiIAAwAAALVuIgAEAAAAuW4iAAUAAAC+biIABQAAALluIgAFAAAAw24iABQAAACAaiIAFgAAANduIgAEAAAA224iAAUAAADgbiIABQAAANtuIgAFAAAA5W4iAAcAAADsbiIACAAAAPRuIgAEAAAA7G4iAAgAAAD4biIADAAAALJqIgANAAAABG8iAAkAAAA4ayIACgAAAA1vIgAPAAAAem4iABEAAAAcbyIACQAAACVvIgAKAAAAL28iAAoAAAA5byIACwAAAERvIgAKAAAATm8iAAsAAABZbyIADwAAAGhvIgARAAAAeW8iAAkAAACCbyIACgAAAIxvIgAJAAAAlW8iAAoAAACfbyIABQAAAKRvIgAFAAAAqW8iAAQAAACCbyIACgAAAK1vIgAEAAAApG8iAAUAAACxbyIABQAAALZvIgAFAAAAu28iAAQAAAC2byIABQAAAL9vIgAEAAAAw28iAAcAAADKbyIABwAAAMNvIgAHAAAA0W8iAAQAAACVbyIACgAAANVvIgALAAAAcGoiAAwAAADgbyIABAAAAORvIgAJAAAA7W8iAAkAAADkbyIACQAAAPZvIgAEAAAA+m8iAAsAAAAFcCIACQAAAPpvIgALAAAADnAiAAQA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AADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAACEIQAAhCEAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAeywAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAABxpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGn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AAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnU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IwADAAAAEW4iAAcAAACgoyMABQAAACZuIgAHAAAAyKMjAAMAAAA6biIACQAAAOCjIwACAAAAR24iAAsAAADwoyMAAQAAAGBuIgALAAAA+KMjAAMAAACgbiIACwAAABCkIwAEAAAAk24iAAQAAAAwpCMAAgAAAK5uIgADAAAAQKQjAAIAAAC5biIABQAAAFCkIwACAAAAgGoiABYAAABgpCMABAAAANtuIgAFAAAAgKQjAAEAAADsbiIACAAAAIikIwABAAAAsmoiAA0AAACQpCMAAwAAADhrIgAKAAAAqKQjAAIAAAB6biIAEQAAALikIwABAAAAJW8iAAoAAADApCMAAQAAADlvIgALAAAAyKQjAAIAAABObyIACwAAANikIwABAAAAaG8iABEAAADgpCMAAQAAAIJvIgAKAAAA6KQjAAEAAACVbyIACgAAAPCkIwABAAAApG8iAAUAAAD4pCMADgAAALZvIgAFAAAAaKUjAAIAAADDbyIABwAAAHilIwACAAAAcGoiAAwAAACIpSMABQAAAORvIgAJAAAAsKUjAAEAAAD6byIACwAAALilIwABAAAAFnAiAAgAAADApSMAAQAAAEBwIgAKAAAAyKUjAAIAAAAtcCIADwAAANilIwADAAAAeHAiAAYAAADwpSMAAgAAAItwIgAFAAAAAKYjAAIAAACdcCIACQAAABCmIwACAAAAsnAiAAoAAAAgpiMAAgAAANxwIgAHAAAAMKYjAAEAAADqcCIABwAAADimIwABAAAA/XAiAAcAAABApiMAAgAAAMpwIgALAAAAUKYjAAMAAAAecSIABwAAAGimIwANAAAAMHEiAAcAAADQpiMAAQAAAEZxIgAMAAAA2KYjAAIAAABhcSIABwAAAOimIwABAAAAc3EiAAkAAADwpiMAAgAAAIlxIgAMAAAAAKcjAAEAAACkcSIABgAAAAinIwAEAAAAt3EiAAcAAAAopyMAAgAAAMJxIgAIAAAAOKcjAAMAAADXcSIABgAAAFCnIwACAAAALWwiAAgAAABgpyMABQAAAOtxIgAIAAAAiKcjAAIAAAD3cSIABQAAAJinIwACAAAADnIiAAUAAACopyMAEgAAACdyIgAGAAAAOKgjAAIAAAAbciIABgAAAEioIwAEAAAAO3IiAAYAAABoqCMADQAAAFtyIgAGAAAA0KgjAAEA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AQBRCQAAUgkAAGQJAABlCQAAAA0AAAwNAAAODQAAEA0AABINAABEDQAARg0AAEgNAABKDQAATw0AAFQNAABjDQAAZg0AAH8NAADaHAAA2hwAADCoAAAyqAAAQAYAAEAGAABACAAAWwgAAF4IAABeCAAAQAYAAEAGAADACgEA5goBAOsKAQD2CgEAZAkAAGUJAAAAHQEABh0BAAgdAQAJHQEACx0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEcdAQBQHQEAWR0BADCoAAA5qAAAABYBAEQWAQBQFgEAWRYBAAAYAAAZGAAAIBgAAHgYAACAGAAAqhgAAC8gAAAvIAAAYBYBAGwWAQBmCgAAbwoAAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKkSAQAAEAAAnxAAAC6pAAAuqQAA4KkAAP6pAABgqgAAf6oAAGQJAABlCQAA5gwAAO8MAADpHAAA6RwAAPIcAADyHAAA+hwAAPocAAAwqAAANagAAKAZAQCnGQEAqhkBANcZAQDaGQEA5BkBAAwGAAAMBgAAGwYAABsGAAAfBgAAHwYAAMAHAAD6BwAA/QcAAP8HAAA+/QAAP/0AAIMEAACDBAAAUAMBAHoDAQBABgAAQAYAAPIKAQDyCgEAcA8BAIkPAQBRCQAAUgkAAGQJAABlCQAAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAdwsAANocAADaHAAA8hwAAPIcAAACGAAAAxgAAAUYAAAFGAAAQKgAAHeoAABABgAAQAYAAIALAQCRCwEAmQsBAJwLAQCpCwEArwsBAFEJAABRCQAA1xwAANccAADZHAAA2RwAANwcAADdHAAA4BwAAOAcAACAEQEA3xEBAGQJAABlCQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAAD0DQAA4REBAPQRAQBABgAAQAYAADAPAQBZDwEAZAkAAGUJAADmCQAA7wkAAACo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AADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIAfAACvHwAAsh8AALQfAAC3HwAAvB8AAMIfAADEHwAAxx8AAMwfAADYHwAA2x8AAOgfAADsHwAA8h8AAPQfAAD3HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANin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AAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALgfAAC8HwAAyB8AAMwfAADYHwAA2x8AAOgfAADsHwAA+B8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAKAYAQC/GAEAQG4BAF9uAQAA6QEAIekBAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcB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AACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWn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AAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAmx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AALQfAAC2HwAAtx8AALwfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAAzB8AAMwfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAA/B8AAPwfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA9qcAAPanAABTqwAAU6sAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAIukBAEPpAQAtAAAALQAAAIoFAACKBQAAvgUAAL4FAAAAFAAAABQAAAYYAAAGGAAAECAAABUgAABTIAAAUyAAAHsgAAB7IAAAiyAAAIsgAAASIgAAEiIAABcuAAAXLgAAGi4AABouAAA6LgAAOy4AAEAuAABALgAAXS4AAF0uAAAcMAAAHDAAADAw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AABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAAPKnAAD0pwAA9qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfVAQBS1QEAa9UBAIbVAQCf1QEAutUBANPVAQDu1QEAB9YBACLWAQA71gEAVtYBAG/WAQCK1gEApdYBAMLWAQDa1gEA3NYBAOHWAQD81gEAFNcBABbXAQAb1wEANtcBAE7XAQBQ1wEAVdcBAHDXAQCI1wEAitcBAI/XAQCq1wEAwtcBAMTXAQDJ1wEAy9cBAMvXAQAA3wEACd8BAAvfAQAe3wEAJd8BACrfAQAw4AEAbeABACLpAQBD6QEAKwAAACsAAAA8AAAAPgAAAF4AAABeAAAAfAAAAHwAAAB+AAAAfgAAAKwAAACsAAAAsQAAALEAAADXAAAA1wAAAPcAAAD3AAAA0AMAANIDAADVAwAA1QMAAPADAADxAwAA9AMAAPYDAAAGBgAACAYAABYgAAAWIAAAMiAAADQgAABAIAAAQCAAAEQgAABEIAAAUiAAAFIgAABhIAAAZCAAAHogAAB+IAAAiiAAAI4gAADQIAAA3CAAAOEgAADhIAAA5SAAAOYgAADrIAAA7yAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGCEAAB0hAAAkIQAAJCEAACghAAApIQAALCEAAC0hAAAvIQAAMSEAADMhAAA4IQAAPCEAAEkhAABLIQAASyEAAJAhAACnIQAAqSEAAK4hAACwIQAAsSEAALYhAAC3IQAAvCEAANshAADdIQAA3SEAAOQhAADlIQAA9CEAAP8iAAAIIwAACyMAACAjAAAhIwAAfCMAAHwjAACbIwAAtSMAALcjAAC3IwAA0CMAANAjAADcIwAA4iMAAKAlAAChJQAAriUAALclAAC8JQAAwSUAAMYlAADHJQAAyiUAAMslAADPJQAA0yUAAOIlAADiJQAA5CUAAOQlAADnJQAA7CUAAPglAAD/JQAABSYAAAYmAABAJgAAQCYAAEImAABCJgAAYCYAAGMmAABtJgAAbyYAAMAnAAD/JwAAACkAAP8qAAAwKwAARCsAAEcrAABMKwAAKfsAACn7AABh/gAAZv4AAGj+AABo/gAAC/8AAAv/AAAc/wAAHv8AADz/AAA8/wAAPv8AAD7/AABc/wAAXP8AAF7/AABe/wAA4v8AAOL/AADp/wAA7P8AAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMvXAQDO1wEA/9cBAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BAPDuAQDx7gEA0P0AAO/9AAD+/wAA//8AAP7/AQD//wEA/v8CAP//AgD+/wMA//8DAP7/BAD//wQA/v8FAP//BQD+/wYA//8GAP7/BwD//wcA/v8IAP//CAD+/wkA//8JAP7/CgD//woA/v8LAP//CwD+/wwA//8MAP7/DQD//w0A/v8OAP//DgD+/w8A//8PAP7/EAD//xAARQMAAEUDAACwBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAAEAYAABoGAABLBgAAVwYAAFkGAABfBgAAcAYAAHAGAADWBgAA3AYAAOEGAADkBgAA5wYAAOgGAADtBgAA7QYAABEHAAARBwAAMAcAAD8HAACmBwAAsAcAABYIAAAXCAAAGwgAACMIAAAlCAAAJwgAACkIAAAsCAAA1AgAAN8IAADjCAAA6QgAAPAIAAADCQAAOgkAADsJAAA+CQAATAkAAE4JAABPCQAAVQkAAFcJAABiCQAAYwkAAIEJAACDCQAAvgkAAMQJAADHCQAAyAkAAMsJAADMCQAA1wkAANcJAADiCQAA4wkAAAEKAAADCgAAPgoAAEIKAABHCgAASAoAAEsKAABMCgAAUQoAAFEKAABwCgAAcQoAAHUKAAB1CgAAgQoAAIMKAAC+CgAAxQoAAMcKAADJCgAAywoAAMwKAADiCgAA4woAAPoKAAD8CgAAAQsAAAMLAAA+CwAARAsAAEcLAABICwAASwsAAEwLAABWCwAAVwsAAGILAABjCwAAggsAAIILAAC+CwAAwgsAAMYLAADICwAAygsAAMwLAADXCwAA1wsAAAAMAAAEDAAAPgwAAEQMAABGDAAASAwAAEoMAABMDAAAVQwAAFYMAABiDAAAYwwAAIEMAACDDAAAvgwAAMQMAADGDAAAyAwAAMoMAADMDAAA1QwAANYMAADiDAAA4wwAAPMMAADzDAAAAA0AAAMNAAA+DQAARA0AAEYNAABIDQAASg0AAEwNAABXDQAAVw0AAGINAABjDQAAgQ0AAIMNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADyDQAA8w0AADEOAAAxDgAANA4AADoOAABNDgAATQ4AALEOAACxDgAAtA4AALkOAAC7DgAAvA4AAM0OAADNDgAAcQ8AAIMPAACNDwAAlw8AAJkPAAC8DwAAKxAAADYQAAA4EAAAOBAAADsQAAA+EAAAVhAAAFkQAABeEAAAYBAAAGIQAABkEAAAZxAAAG0QAABxEAAAdBAAAIIQAACNEAAAjxAAAI8QAACaEAAAnRAAABIXAAATFwAAMhcAADMXAABSFwAAUxcAAHIXAABzFwAAthcAAMgXAACFGAAAhhgAAKkYAACpGAAAIBkAACsZAAAwGQAAOBkAABcaAAAbGgAAVRoAAF4aAABhGgAAdBoAAL8aAADAGgAAzBoAAM4aAAAAGwAABBsAADUbAABDGwAAgBsAAIIbAAChGwAAqRsAAKwbAACtGwAA5xsAAPEbAAAkHAAANhwAAOcdAAD0HQAAtiQAAOkkAADgLQAA/y0AAHSmAAB7pgAAnqYAAJ+mAAACqAAAAqgAAAuoAAALqAAAI6gAACeoAACAqAAAgagAALSoAADDqAAAxagAAMWoAAD/qAAA/6gAACapAAAqqQAAR6kAAFKpAACAqQAAg6kAALSpAAC/qQAA5akAAOWpAAApqgAANqoAAEOqAABDqgAATKoAAE2qAAB7qgAAfaoAALCqAACwqgAAsqoAALSqAAC3qgAAuKoAAL6qAAC+qgAA66oAAO+qAAD1qgAA9aoAAOOrAADqqwAAHvsAAB77AAB2AwEAegMBAAEKAQADCgEABQoBAAYKAQAMCgEADwoBACQNAQAnDQEAqw4BAKwOAQAAEAEAAhABADgQAQBFEAEAcxABAHQQAQCAEAEAghABALAQAQC4EAEAwhABAMIQAQAAEQEAAhEBACcRAQAyEQEARREBAEYRAQCAEQEAghEBALMRAQC/EQEAzhEBAM8RAQAsEgEANBIBADcSAQA3EgEAPhIBAD4SAQBBEgEAQRIBAN8SAQDoEgEAABMBAAMTAQA+EwEARBMBAEcTAQBIEwEASxMBAEwTAQBXEwEAVxMBAGITAQBjEwEANRQBAEEUAQBDFAEARRQBALAUAQDBFAEArxUBALUVAQC4FQEAvhUBANwVAQDdFQEAMBYBAD4WAQBAFgEAQBYBAKsWAQC1FgEAHRcBACoXAQAsGAEAOBgBADAZAQA1GQEANxkBADgZAQA7GQEAPBkBAEAZAQBAGQEAQhkBAEIZAQDRGQEA1xkBANoZAQDfGQEA5BkBAOQZAQABGgEAChoBADUaAQA5GgEAOxoBAD4aAQBRGgEAWxoBAIoaAQCXGgEALxwBADYcAQA4HAEAPhwBAJIcAQCnHAEAqRwBALYcAQAxHQEANh0BADodAQA6HQEAPB0BAD0dAQA/HQEAQR0BAEMdAQBDHQEARx0BAEcdAQCKHQEAjh0BAJAdAQCRHQEAkx0BAJYdAQDzHgEA9h4BAAAfAQABHwEAAx8BAAMfAQA0HwEAOh8BAD4fAQBAHwEAT28BAE9vAQBRbwEAh28BAI9vAQCSbwEA8G8BAPFvAQCevAEAnrwBAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQCP4AEAj+ABAEfpAQBH6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEATwMAAE8DAABfEQAAYBEAALQXAAC1FwAAZSAAAGUgAABkMQAAZDEAAKD/AACg/wAA8P8AAPj/AAAAAA4AAAAOAAIADgAfAA4AgAAOAP8ADgDwAQ4A/w8OAL4JAAC+CQAA1wkAANcJAAA+CwAAPgsAAFcLAABXCwAAvgsAAL4LAADXCwAA1wsAAMIMAADCDAAA1QwAANYMAAA+DQAAPg0AAFcNAABXDQAAzw0AAM8NAADfDQAA3w0AADUbAAA1GwAADCAAAAwgAAAuMAAALzAAAJ7/AACf/wAAPhMBAD4TAQBXEwEAVxMBALAUAQCwFAEAvRQBAL0UAQCvFQEArxUBADAZAQAwGQEAZdEBAGXRAQBu0QEActEBACAADgB/AA4AtwAAALcAAACHAwAAhwMAAGkTAABxEwAA2hkAANoZAACFGAAAhhgAABghAAAYIQAALiEAAC4hAACbMAAAnDAAAKoAAACqAAAAugAAALoAAACwAgAAuAIAAMACAADBAgAA4AIAAOQCAABFAwAARQMAAHoDAAB6AwAA/BAAAPwQAAAsHQAAah0AAHgdAAB4HQAAmx0AAL8dAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAABwIQAAfyEAANAkAADpJAAAfCwAAH0sAACcpgAAnaYAAHCnAABwpwAA8qcAAPSnAAD4pwAA+acAAFyrAABfqwAAaasAAGmrAACABwEAgAcBAIMHAQCFBwEAhwcBALAHAQCyBwEAugcBADDgAQBt4AEAXgAAAF4AAADQAwAA0gMAANUDAADVAwAA8AMAAPEDAAD0AwAA9QMAABYgAAAWIAAAMiAAADQgAABAIAAAQCAAAGEgAABkIAAAfSAAAH4gAACNIAAAjiAAANAgAADcIAAA4SAAAOEgAADlIAAA5iAAAOsgAADvIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAKCEAACkhAAAsIQAALSEAAC8hAAAxIQAAMyEAADghAAA8IQAAPyEAAEUhAABJIQAAlSEAAJkhAACcIQAAnyEAAKEhAACiIQAApCEAAKUhAACnIQAApyEAAKkhAACtIQAAsCEAALEhAAC2IQAAtyEAALwhAADNIQAA0CEAANEhAADTIQAA0yEAANUhAADbIQAA3SEAAN0hAADkIQAA5SEAAAgjAAALIwAAtCMAALUjAAC3IwAAtyMAANAjAADQIwAA4iMAAOIjAACgJQAAoSUAAK4lAAC2JQAAvCUAAMAlAADGJQAAxyUAAMolAADLJQAAzyUAANMlAADiJQAA4iUAAOQlAADkJQAA5yUAAOwlAAAFJgAABiYAAEAmAABAJgAAQiYAAEImAABgJgAAYyYAAG0mAABuJgAAxScAAMYnAADmJwAA7ycAAIMpAACYKQAA2CkAANspAAD8KQAA/SkAAGH+AABh/gAAY/4AAGP+AABo/gAAaP4AADz/AAA8/wAAPv8AAD7/AAAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDA1gEAwtYBANrWAQDc1gEA+tYBAPzWAQAU1wEAFtcBADTXAQA21wEATtcBAFDXAQBu1wEAcNcBAIjXAQCK1wEAqNcBAKrXAQDC1wEAxNcBAMvXAQDO1wEA/9cBAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BAGAhAABvIQAAtiQAAM8kAAAw8QEASfEBAFDxAQBp8QEAcPEBAInxAQAhAAAALwAAADoAAABAAAAAWwAAAF4AAABgAAAAYAAAAHsAAAB+AAAAoQAAAKcAAACpAAAAqQAAAKsAAACsAAAArgAAAK4AAACwAAAAsQAAALYAAAC2AAAAuwAAALsAAAC/AAAAvwAAANcAAADXAAAA9wAAAPcAAAAQIAAAJyAAADAgAAA+IAAAQSAAAFMgAABVIAAAXiAAAJAhAABfJAAAACUAAHUnAACUJwAA/ysAAAAuAAB/LgAAATAAAAMwAAAIMAAAIDAAADAwAAAwMAAAPv0AAD/9AABF/gAARv4AAAkAAAANAAAAIAAAACAAAACFAAAAhQAAAA4gAAAPIAAAKCAAACkgAAAABgAABQYAAN0GAADdBgAADwcAAA8HAACQCAAAkQgAAOIIAADiCAAAvRABAL0QAQDNEAEAzRABACIAAAAiAAAAJwAAACcAAACrAAAAqwAAALsAAAC7AAAAGCAAAB8gAAA5IAAAOiAAAEIuAABCLgAADDAAAA8wAAAdMAAAHzAAAEH+AABE/gAAAv8AAAL/AAAH/wAAB/8AAGL/AABj/wAAgC4AAJkuAACbLgAA8y4AAAAvAADVLwAA5vEBAP/xAQAhAAAAIQAAAC4AAAAuAAAAPwAAAD8AAACJBQAAiQUAAB0GAAAfBgAA1AYAANQGAAAABwAAAgcAAPkHAAD5BwAANwgAADcIAAA5CAAAOQgAAD0IAAA+CAAAZAkAAGUJAABKEAAASxAAAGITAABiEwAAZxMAAGgTAABuFgAAbhYAADUXAAA2FwAAAxgAAAMYAAAJGAAACRgAAEQZAABFGQAAqBoAAKsaAABaGwAAWxsAAF4bAABfGwAAfRsAAH4bAAA7HAAAPBwAAH4cAAB/HAAAPCAAAD0gAABHIAAASSAAAC4uAAAuLgAAPC4AADwuAABTLgAAVC4AAAIwAAACMAAA/6QAAP+kAAAOpgAAD6YAAPOmAADzpgAA96YAAPemAAB2qAAAd6gAAM6oAADPqAAAL6kAAC+pAADIqQAAyakAAF2qAABfqgAA8KoAAPGqAADrqwAA66sAAFL+AABS/gAAVv4AAFf+AAAB/wAAAf8AAA7/AAAO/wAAH/8AAB//AABh/wAAYf8AAFYKAQBXCgEAVQ8BAFkPAQCGDwEAiQ8BAEcQAQBIEAEAvhABAMEQAQBBEQEAQxEBAMURAQDGEQEAzREBAM0RAQDeEQEA3xEBADgSAQA5EgEAOxIBADwSAQCpEgEAqRIBAEsUAQBMFAEAwhUBAMMVAQDJFQEA1xUBAEEWAQBCFgEAPBcBAD4XAQBEGQEARBkBAEYZAQBGGQEAQhoBAEMaAQCbGgEAnBoBAEEcAQBCHAEA9x4BAPgeAQBDHwEARB8BAG5qAQBvagEA9WoBAPVqAQA3awEAOGsBAERrAQBEawEAmG4BAJhuAQCfvAEAn7wBAIjaAQCI2gEAaQAAAGoAAAAvAQAALwEAAEkCAABJAgAAaAIAAGgCAACdAgAAnQIAALICAACyAgAA8wMAAPMDAABWBAAAVgQAAFgEAABYBAAAYh0AAGIdAACWHQAAlh0AAKQdAACkHQAAqB0AAKgdAAAtHgAALR4AAMseAADLHgAAcSAAAHEgAABIIQAASSEAAHwsAAB8LAAAItQBACPUAQBW1AEAV9QBAIrUAQCL1AEAvtQBAL/UAQDy1AEA89QBACbVAQAn1QEAWtUBAFvVAQCO1QEAj9UBAMLVAQDD1QEA9tUBAPfVAQAq1gEAK9YBAF7WAQBf1gEAktYBAJPWAQAa3wEAGt8BAEzgAQBN4AEAaOABAGjgAQAhAAAAIQAAACwAAAAsAAAALgAAAC4AAAA6AAAAOwAAAD8AAAA/AAAAfgMAAH4DAACHAwAAhwMAAIkFAACJBQAAwwUAAMMFAAAMBgAADAYAABsGAAAbBgAAHQYAAB8GAADUBgAA1AYAAAAHAAAKBwAADAcAAAwHAAD4BwAA+QcAADAIAAA+CAAAXggAAF4IAABkCQAAZQkAAFoOAABbDgAACA8AAAgPAAANDwAAEg8AAEoQAABLEAAAYRMAAGgTAABuFgAAbhYAAOsWAADtFgAANRcAADYXAADUFwAA1hcAANoXAADaFwAAAhgAAAUYAAAIGAAACRgAAEQZAABFGQAAqBoAAKsaAABaGwAAWxsAAF0bAABfGwAAfRsAAH4bAAA7HAAAPxwAAH4cAAB/HAAAPCAAAD0gAABHIAAASSAAAC4uAAAuLgAAPC4AADwuAABBLgAAQS4AAEwuAABMLgAATi4AAE8uAABTLgAAVC4AAAEwAAACMAAA/qQAAP+kAAANpgAAD6YAAPOmAAD3pgAAdqgAAHeoAADOqAAAz6gAAC+pAAAvqQAAx6kAAMmpAABdqgAAX6oAAN+qAADfqgAA8KoAAPGqAADrqwAA66sAAFD+AABS/gAAVP4AAFf+AAAB/wAAAf8AAAz/AAAM/wAADv8AAA7/AAAa/wAAG/8AAB//AAAf/wAAYf8AAGH/AABk/wAAZP8AAJ8DAQCfAwEA0AMBANADAQBXCAEAVwgBAB8JAQAfCQEAVgoBAFcKAQDwCgEA9QoBADoLAQA/CwEAmQsBAJwLAQBVDwEAWQ8BAIYPAQCJDwEARxABAE0QAQC+EAEAwRABAEERAQBDEQEAxREBAMYRAQDNEQEAzREBAN4RAQDfEQEAOBIBADwSAQCpEgEAqRIBAEsUAQBNFAEAWhQBAFsUAQDCFQEAxRUBAMkVAQDXFQEAQRYBAEIWAQA8FwEAPhcBAEQZAQBEGQEARhkBAEYZAQBCGgEAQxoBAJsaAQCcGgEAoRoBAKIaAQBBHAEAQxwBAHEcAQBxHAEA9x4BAPgeAQBDHwEARB8BAHAkAQB0JAEAbmoBAG9qAQD1agEA9WoBADdrAQA5awEARGsBAERrAQCXbgEAmG4BAJ+8AQCfvAEAh9oBAIraAQAANAAAv00AAABOAAD/nwAADvoAAA/6AAAR+gAAEfoAABP6AAAU+gAAH/oAAB/6AAAh+gAAIfoAACP6AAAk+gAAJ/oAACn6AAAAAAIA36YCAACnAgA5twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIAAAADAEoTAwBQEwMAryMDAEEAAABaAAAAwAAAANYAAADYAAAA3gAAAAABAAAAAQAAAgEAAAIBAAAEAQAABAEAAAYBAAAGAQAACAEAAAgBAAAKAQAACgEAAAwBAAAMAQAADgEAAA4BAAAQAQAAEAEAABIBAAASAQAAFAEAABQBAAAWAQAAFgEAABgBAAAYAQAAGgEAABoBAAAcAQAAHAEAAB4BAAAeAQAAIAEAACABAAAiAQAAIgEAACQBAAAkAQAAJgEAACYBAAAoAQAAKAEAACoBAAAqAQAALAEAACwBAAAuAQAALgEAADABAAAwAQAAMgEAADIBAAA0AQAANAEAADYBAAA2AQAAOQEAADkBAAA7AQAAOwEAAD0BAAA9AQAAPwEAAD8BAABBAQAAQQEAAEMBAABDAQAARQEAAEUBAABHAQAARwEAAEoBAABKAQAATAEAAEwBAABOAQAATgEAAFABAABQAQAAUgEAAFIBAABUAQAAVAEAAFYBAABWAQAAWAEAAFgBAABaAQAAWgEAAFwBAABcAQAAXgEAAF4BAABgAQAAYAEAAGIBAABiAQAAZAEAAGQBAABmAQAAZgEAAGgBAABoAQAAagEAAGoBAABsAQAAbAEAAG4BAABuAQAAcAEAAHABAAByAQAAcgEAAHQBAAB0AQAAdgEAAHYBAAB4AQAAeQEAAHsBAAB7AQAAfQEAAH0BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADEAQAAxwEAAMcBAADKAQAAygEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8QEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAzwMAAM8DAADSAwAA1AMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAuB8AALsfAADIHwAAyx8AANgfAADbHwAA6B8AAOwfAAD4HwAA+x8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEin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AAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAA0AUAAOoFAADvBQAA8gUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQN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AQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA2gEANtoBADvaAQBs2gEAddoBAHXaAQCE2gEAhNoBAJvaAQCf2gEAodoBAK/aAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDs5AEA7+QBANDoAQDW6AEAROkBAErpAQD78wEA//MBACAADgB/AA4AAAEOAO8BDgAAEQAAXxEAAGCpAAB8qQAACgAAAAoAAAAArAAAAKwAABysAAAcrAAAOKwAADisAABUrAAAVKwAAHCsAABwrAAAjKwAAIysAACorAAAqKwAAMSsAADErAAA4KwAAOCsAAD8rAAA/KwAABitAAAYrQAANK0AADStAABQrQAAUK0AAGytAABsrQAAiK0AAIitAACkrQAApK0AAMCtAADArQAA3K0AANytAAD4rQAA+K0AABSuAAAUrgAAMK4AADCuAABMrgAATK4AAGiuAABorgAAhK4AAISuAACgrgAAoK4AALyuAAC8rgAA2K4AANiuAAD0rgAA9K4AABCvAAAQrwAALK8AACyvAABIrwAASK8AAGSvAABkrwAAgK8AAICvAACcrwAAnK8AALivAAC4rwAA1K8AANSvAADwrwAA8K8AAAywAAAMsAAAKLAAACiwAABEsAAARLAAAGCwAABgsAAAfLAAAHywAACYsAAAmLAAALSwAAC0sAAA0LAAANCwAADssAAA7LAAAAixAAAIsQAAJLEAACSxAABAsQAAQLEAAFyxAABcsQAAeLEAAHixAACUsQAAlLEAALCxAACwsQAAzLEAAMyxAADosQAA6LEAAASyAAAEsgAAILIAACCyAAA8sgAAPLIAAFiyAABYsgAAdLIAAHSyAACQsgAAkLIAAKyyAACssgAAyLIAAMiyAADksgAA5LIAAACzAAAAswAAHLMAAByzAAA4swAAOLMAAFSzAABUswAAcLMAAHCzAACMswAAjLMAAKizAACoswAAxLMAAMSzAADgswAA4LMAAPyzAAD8swAAGLQAABi0AAA0tAAANLQAAFC0AABQtAAAbLQAAGy0AACItAAAiLQAAKS0AACktAAAwLQAAMC0AADctAAA3LQAAPi0AAD4tAAAFLUAABS1AAAwtQAAMLUAAEy1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AAChrgAAu64AAL2uAADXrgAA2a4AAPOuAAD1rgAAD68AABGvAAArrwAALa8AAEevAABJrwAAY68AAGWvAAB/rwAAga8AAJuvAACdrwAAt68AALmvAADTrwAA1a8AAO+vAADxrwAAC7AAAA2wAAAnsAAAKbAAAEOwAABFsAAAX7AAAGGwAAB7sAAAfbAAAJewAACZsAAAs7AAALWwAADPsAAA0bAAAOuwAADtsAAAB7EAAAmxAAAjsQAAJbEAAD+xAABBsQAAW7EAAF2xAAB3sQAAebEAAJOxAACVsQAAr7EAALGxAADLsQAAzbEAAOexAADpsQAAA7IAAAWyAAAfsgAAIbIAADuyAAA9sgAAV7IAAFmyAABzsgAAdbIAAI+yAACRsgAAq7IAAK2yAADHsgAAybIAAOOyAADlsgAA/7IAAAGzAAAbswAAHbMAADezAAA5swAAU7MAAFWzAABvswAAcbMAAIuzAACNswAAp7MAAKmzAADDswAAxbMAAN+zAADhswAA+7MAAP2zAAAXtAAAGbQAADO0AAA1tAAAT7QAAFG0AABrtAAAbbQAAIe0AACJtAAAo7QAAKW0AAC/tAAAwbQAANu0AADdtAAA97QAAPm0AAATtQAAFbUAAC+1AAAxtQAAS7UAAE21AABntQAAabUAAIO1AACFtQAAn7UAAKG1AAC7tQAAvbUAANe1AADZtQAA87UAAPW1AAAPtgAAEbYAACu2AAAttgAAR7YAAEm2AABjtgAAZbYAAH+2AACBtgAAm7YAAJ22AAC3tgAAubYAANO2AADVtgAA77YAAPG2AAALtwAADbcAACe3AAAptwAAQ7cAAEW3AABftwAAYbcAAHu3AAB9twAAl7cAAJm3AACztwAAtbcAAM+3AADRtwAA67cAAO23AAAHuAAACbgAACO4AAAluAAAP7gAAEG4AABbuAAAXbgAAHe4AAB5uAAAk7gAAJW4AACvuAAAsbgAAMu4AADNuAAA57gAAOm4AAADuQAABbkAAB+5AAAhuQAAO7kAAD25AABXuQAAWbkAAHO5AAB1uQAAj7kAAJG5AACruQAArbkAAMe5AADJuQAA47kAAOW5AAD/uQAAAboAABu6AAAdugAAN7oAADm6AABTugAAVboAAG+6AABxugAAi7oAAI26AACnugAAqboAAMO6AADFugAA37oAAOG6AAD7ugAA/boAABe7AAAZuwAAM7sAADW7AABPuwAAUbsAAGu7AABtuwAAh7sAAIm7AACjuwAApbsAAL+7AADBuwAA27sAAN27AAD3uwAA+bsAABO8AAAVvAAAL7wAADG8AABLvAAATbwAAGe8AABpvAAAg7wAAIW8AACfvAAAobwAALu8AAC9vAAA17wAANm8AADzvAAA9bwAAA+9AAARvQAAK70AAC29AABHvQAASb0AAGO9AABlvQAAf70AAIG9AACbvQAAnb0AALe9AAC5vQAA070AANW9AADvvQAA8b0AAAu+AAANvgAAJ74AACm+AABDvgAARb4AAF++AABhvgAAe74AAH2+AACXvgAAmb4AALO+AAC1vgAAz74AANG+AADrvgAA7b4AAAe/AAAJvwAAI78AACW/AAA/vwAAQb8AAFu/AABdvwAAd78AAHm/AACTvwAAlb8AAK+/AACxvwAAy78AAM2/AADnvwAA6b8AAAPAAAAFwAAAH8AAACHAAAA7wAAAPcAAAFfAAABZwAAAc8AAAHXAAACPwAAAkcAAAKvAAACtwAAAx8AAAMnAAADjwAAA5cAAAP/AAAABwQAAG8EAAB3BAAA3wQAAOcEAAFPBAABVwQAAb8EAAHHBAACLwQAAjcEAAKfBAACpwQAAw8EAAMXBAADfwQAA4cEAAPvBAAD9wQAAF8IAABnCAAAzwgAANcIAAE/CAABRwgAAa8IAAG3CAACHwgAAicIAAKPCAAClwgAAv8IAAMHCAADbwgAA3cIAAPfCAAD5wgAAE8MAABXDAAAvwwAAMcMAAEvDAABNwwAAZ8MAAGnDAACDwwAAhcMAAJ/DAAChwwAAu8MAAL3DAADXwwAA2cMAAPPDAAD1wwAAD8QAABHEAAArxAAALcQAAEfEAABJxAAAY8QAAGXEAAB/xAAAgcQAAJvEAACdxAAAt8QAALnEAADTxAAA1cQAAO/EAADxxAAAC8UAAA3FAAAnxQAAKcUAAEPFAABFxQAAX8UAAGHFAAB7xQAAfcUAAJfFAACZxQAAs8UAALXFAADPxQAA0cUAAOvFAADtxQAAB8YAAAnGAAAjxgAAJcYAAD/GAABBxgAAW8YAAF3GAAB3xgAAecYAAJPGAACVxgAAr8YAALHGAADLxgAAzcYAAOfGAADpxgAAA8cAAAXHAAAfxwAAIccAADvHAAA9xwAAV8cAAFnHAABzxwAAdccAAI/HAACRxwAAq8cAAK3HAADHxwAAyccAAOPHAADlxwAA/8cAAAHIAAAbyAAAHcgAADfIAAA5yAAAU8gAAFXIAABvyAAAccgAAIvIAACNyAAAp8gAAKnIAADDyAAAxcgAAN/IAADhyAAA+8gAAP3IAAAXyQAAGckAADPJAAA1yQAAT8kAAFHJAABryQAAbckAAIfJAACJyQAAo8kAAKXJAAC/yQAAwckAANvJAADdyQAA98kAAPnJAAATygAAFcoAAC/KAAAxygAAS8oAAE3KAABnygAAacoAAIPKAACFygAAn8oAAKHKAAC7ygAAvcoAANfKAADZygAA88oAAPXKAAAPywAAEcsAACvLAAAtywAAR8sAAEnLAABjywAAZcsAAH/LAACBywAAm8sAAJ3LAAC3ywAAucsAANPLAADVywAA78sAAPHLAAALzAAADcwAACfMAAApzAAAQ8wAAEXMAABfzAAAYcwAAHvMAAB9zAAAl8wAAJnMAACzzAAAtcwAAM/MAADRzAAA68wAAO3MAAAHzQAACc0AACPNAAAlzQAAP80AAEHNAABbzQAAXc0AAHfNAAB5zQAAk80AAJXNAACvzQAAsc0AAMvNAADNzQAA580AAOnNAAADzgAABc4AAB/OAAAhzgAAO84AAD3OAABXzgAAWc4AAHPOAAB1zgAAj84AAJHOAACrzgAArc4AAMfOAADJzgAA484AAOXOAAD/zgAAAc8AABvPAAAdzwAAN88AADnPAABTzwAAVc8AAG/PAABxzwAAi88AAI3PAACnzwAAqc8AAMPPAADFzwAA388AAOHPAAD7zwAA/c8AABfQAAAZ0AAAM9AAADXQAABP0AAAUdAAAGvQAABt0AAAh9AAAInQAACj0AAApdAAAL/QAADB0AAA29AAAN3QAAD30AAA+dAAABPRAAAV0QAAL9EAADHRAABL0QAATdEAAGfRAABp0QAAg9EAAIXRAACf0QAAodEAALvRAAC90QAA19EAANnRAADz0QAA9dEAAA/SAAAR0gAAK9IAAC3SAABH0gAASdIAAGPSAABl0gAAf9IAAIHSAACb0gAAndIAALfSAAC50gAA09IAANXSAADv0gAA8dIAAAvTAAAN0wAAJ9MAACnTAABD0wAARdMAAF/TAABh0wAAe9MAAH3T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AAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAA8AAAAPAABADwAARw8AAEkPAABsDwAAiA8AAIwPAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAARFwAAHxcAADEXAABAFwAAURcAAGAXAABsFwAAbhcAAHAXAAAgGAAAeBgAAIAYAACEGAAAhxgAAKgYAACqGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAAGgAAFhoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAf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AAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAAr6cAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADTpwAA06cAANWnAADVpwAA16cAANenAADZpwAA2acAAPKnAAD0pwAA9qcAAPanAAD4pwAA+qcAADCrAABaqwAAXKsAAGmrAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAGtQBADPUAQBO1AEAVNQBAFbUAQBn1AEAgtQBAJvUAQC21AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEAz9QBAOrUAQAD1QEAHtUBADfV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AADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEAIdYBADzWAQBV1gEAcNYBAInWAQCo1gEAwNYBAOLWAQD61gEAHNcBADTXAQBW1wEAbtcBAJDXAQCo1wEAytcBAMrXAQAA6QEAIekBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAJaHIgAFAAAAaIYlAAQAAAC+YyIAAgAAAOA4JQABAAAAoociAAUAAACIhiUALQAAAPRjIgAGAAAA8IclADkBAAAoWyIABgAAALiRJQAVAAAAIGQiAAIAAADwRCUAAQAAALWHIgAFAAAAYJIlAJ0CAAC6hyIABwAAAEinJQBBAAAArociAAcAAABQqSUAHwIAAM+HIgAJAAAASLolABMAAADvhyIABQAAAOC6JQBNAAAA44ciAAMAAABIvSUAAgAAAOuHIgACAAAAWL0lAAkAAAD2hyIABQAAAKC9JQCMAgAAJBoiAGYAAAB3AwAAHAAAACQaIgBmAAAAqgMAAAkAAAAkGiIAZgAAAKsDAAAJAAAAJBoiAGYAAACuAwAADwAAACQaIgBmAAAAoAMAAA0AAAAkGiIAZgAAAJ0DAAANAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy91dGY4LnJzAEDTJQBjAAAAQQEAABoAAABA0yUAYwAAALQBAAAtAAAAQNMlAGMAAAC1AQAAKwAAAEDTJQBjAAAAuAEAAAkAAABJbnRlcnZhbFNldHJhbmdlc2ZvbGRlZExpdGVyYWxDbGFzc1VuaWNvZGVDbGFzc0J5dGVzUmVwZXRpdGlvbkdyb3Vwb2xkX2ZsYWdzQ29uY2F0QWx0ZXJuYXRpb25BbHRlcm5hdGlvbkJyYW5jaAAAAAAAAAEAAAABAAAA/AMAAAAAAAAEAAAABAAAABkEAABjYXNlX2luc2Vuc2l0aXZlbXVsdGlfbGluZWRvdF9tYXRjaGVzX25ld19saW5lc3dhcF9ncmVlZHVuaWNvZGVjcmxmAHTUJQAQAAAAhNQlAAoAAACO1CUAFAAAAKLUJQAKAAAArNQlAAcAAACz1CUABAAAAEZsYWdzTG9va0NhcHR1cmVTdGFydEVuZFN0YXJ0TEZFbmRMRlN0YXJ0Q1JMRkVuZENSTEZXb3JkQXNjaWlXb3JkQXNjaWlOZWdhdGVXb3JkVW5pY29kZVdvcmRVbmljb2RlTmVnYXRlV29yZFN0YXJ0QXNjaWlXb3JkRW5kQXNjaWlXb3JkU3RhcnRVbmljb2RlV29yZEVuZFVuaWNvZGVXb3JkU3RhcnRIYWxmQXNjaWlXb3JkRW5kSGFsZkFzY2lpV29yZFN0YXJ0SGFsZlVuaWNvZGVXb3JkRW5kSGFsZlVuaWNvZGVpbmRleG1pbm1heGdyZWVkeSgpL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnMA49UlAFAAAACmAAAABQAAAAAAAAAAAAAAAQAAABoEAABJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVybwAAAAAAAAwAAAAEAAAAGwQAABwEAAAdBAAAX1pOL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjQvc3JjL2xlZ2FjeS5ycwAAAJfWJQAuAAAAPQAAAAsAAACX1iUALgAAADoAAAALAAAAl9YlAC4AAAA2AAAACwAAAJfWJQAuAAAAZgAAABwAAACX1iUALgAAAG8AAAAnAAAAl9YlAC4AAABwAAAAHQAAAJfWJQAuAAAAcgAAACEAAACX1iUALgAAAHMAAAAaAAAAOjoAAJfWJQAuAAAAfgAAAB0AAACX1iUALgAAALQAAAAmAAAAl9YlAC4AAAC1AAAAIQAAAJfWJQAuAAAAigAAAEkAAACX1iUALgAAAIsAAAAfAAAAl9YlAC4AAACLAAAALwAAAEMAAACX1iUALgAAAJ0AAAA1AAAAl9YlAC4A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Q+xOCrQYMC4wYW55IHZhbHVlAAAAAAgAAAAEAAAAIQQAACIEAAAjBAAAdW5pdGEgYm9vbGVhbmEgc3RyaW5nYnl0ZSBhcnJheWJvb2xlYW4gYMMFJgAJAAAA7tsmAAEAAABpbnRlZ2VyIGAAAADcBSYACQAAAO7bJgABAAAAZmxvYXRpbmcgcG9pbnQgYPgFJgAQAAAA7tsmAAEAAABjaGFyYWN0ZXIgYAAYBiYACwAAAO7bJgABAAAAc3RyaW5nIAA0BiYABwAAAHVuaXQgdmFsdWVPcHRpb24gdmFsdWVuZXd0eXBlIHN0cnVjdHNlcXVlbmNldW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50L2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMApgYmAGUAAAAkCQAAEgAAAO7bJgABAAAA7tsmAAEAAABgIG9yIGAAAO7bJgABAAAALAcmAAYAAADu2yYAAQAAAG9uZSBvZiAsIC4wACQEAAAMAAAABAAAACUEAAAmBAAAJwQAAAAAAAAAAAAAAQAAALACAABA6CYATwAAADkGAAAUAAAAQOgmAE8AAAA5BgAAIQAAAEDoJgBPAAAALQYAABQAAABA6CYATwAAAC0GAAAhAAAADNEmAEsAAAAyCAAAHgAAAEDoJgBPAAAAugQAACQAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDAvc3JjL2Vycm9yLnJzRU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2luZyBhIHZhbHVlZXhwZWN0ZWQgYDpgZXhwZWN0ZWQgYCxgIG9yIGBdYGV4cGVjdGVkIGAsYCBvciBgfWBleHBlY3RlZCBpZGVudGV4cGVjdGVkIHZhbHVlZXhwZWN0ZWQgYCJgaW52YWxpZCBlc2NhcGVpbnZhbGlkIG51bWJlcm51bWJlciBvdXQgb2YgcmFuZ2VpbnZhbGlkIHVuaWNvZGUgY29kZSBwb2ludGNvbnRyb2wgY2hhcmFjdGVyIChcdTAwMDAtXHUwMDFGKSBmb3VuZCB3aGlsZSBwYXJzaW5nIGEgc3RyaW5na2V5IG11c3QgYmUgYSBzdHJpbmdpbnZhbGlkIHZhbHVlOiBleHBlY3RlZCBrZXkgdG8gYmUgYSBudW1iZXIgaW4gcXVvdGVzZmxvYXQga2V5IG11c3QgYmUgZmluaXRlIChnb3QgTmFOIG9yICsvLWluZilsb25lIGxlYWRpbmcgc3Vycm9nYXRlIGluIGhleCBlc2NhcGV0cmFpbGluZyBjb21tYXRyYWlsaW5nIGNoYXJhY3RlcnN1bmV4cGVjdGVkIGVuZCBvZiBoZXggZXNjYXBlcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkIGF0IGxpbmUgIGNvbHVtbiAAAAABAAAAAAAAAHgKJgAJAAAAgQomAAgAAABFcnJvcigsIGxpbmU6ICwgY29sdW1uOiCkCiYABgAAAKoKJgAIAAAAsgomAAoAAACzPicAAQAAAOAHJgBkAAAA9wEAACEAAADgByYAZAAAAPsBAAAMAAAA4AcmAGQAAAACAgAAIQAAAOAHJgBkAAAACwIAACoAAADgByYAZAAAAA8CAAAsAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAAACwLJgAOAAAAOgsmAAsAAAAAAAAAAAAAAAEAAAAoBAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnNoCyYAaAAAADUAAAAOAAAAAAAAAAAAAAABAAAALAMAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYXJ0c3RyaW5nLTEuMC4xL3NyYy9pbmxpbmUucnPwCyYAZAAAACsAAAArAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2JveGVkLnJzAGQMJgBjAAAAQQAAAA4AAABkDCYAYwAAAHYAAAAkAAAAOiAAAAAAAAAEAAAABAAAACkEAAAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi44L3NyYy9kbG1hbGxvYy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQA/AwmACkAAACsBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAAPwMJgApAAAAsgQAAA0AAAB1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkAACkDSYAXgAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAAAAwOJgAhAAAAAQEAAAkAAABBY2Nlc3NFcnJvcmNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb246IABLDiYASAAAAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZLkOJgA3AAAAnA4mAB0AAACpBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL2xhenlfbG9jay5ycwAAAAgPJgAhAAAA0QAAABMAAABsaWJyYXJ5L3N0ZC9zcmMvYmFja3RyYWNlLnJzdW5zdXBwb3J0ZWQgYmFja3RyYWNlZGlzYWJsZWQgYmFja3RyYWNlADwPJgAcAAAAigEAAB0AAAAqBAAAEAAAAAQAAAArBAAALAQAAFdvdWxkQmxvY2tlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZUtpbmRDdXN0b20gKG9zIGVycm9yIAAAAQAAAAAAAACrEiYACwAAALM+JwABAAAAbGlicmFyeS9zdGQvc3JjL3BhdGgucnMA0BImABcAAADTAgAAIQAAANASJgAXAAAA+gIAACwAAADQEiYAFwAAAPwCAAAmAAAA0BImABcAAAAJAwAAJwAAANASJgAXAAAAFQMAACcAAADQEiYAFwAAAH8DAAApAAAA0BImABcAAACAAwAAKwAAANASJgAXAAAAlQMAAC8AAADQEiYAFwAAAI0DAAAvAAAA0BImABcAAACbAwAAKwAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJziBMmACwAAAATAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9zeW5jL3BvaXNvbi9vbmNlLnJzAMQTJgAjAAAA1gAAABQAAAA8dW5rbm93bj7vv71saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzBBQmADQAAABnAQAAMAAAAAEAAAAAAAAA6AwmAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOggLSAAAQAAAAAAAABwFCYAAwAAAAIAAAAAAAAAAQAAAAEAAAAAAAAAIAAA6CAgICAgICAgICAgICAgICAgICBhdCAAACHiJgABAAAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURpcmVjdG9yeURpcmVjdG9yeU5vdEVtcHR5UmVhZE9ubHlGaWxlc3lzdGVtRmlsZXN5c3RlbUxvb3BTdGFsZU5ldHdvcmtGaWxlSGFuZGxlSW52YWxpZElucHV0SW52YWxpZERhdGFUaW1lZE91dFdyaXRlWmVyb1N0b3JhZ2VGdWxsTm90U2Vla2FibGVRdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5SW5Qcm9ncmVzc090aGVyVW5jYXRlZ29yaXplZG9wZXJhdGlvbiBzdWNjZXNzZnVsT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAADkFiYAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBub3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5GBcmADgAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXN0Yy1oYXNoLTIuMS4xL3NyYy9saWIucnNYFyYAYAAAACMBAAAcAAAAWBcmAGAAAAAkAQAAKAAAAFgXJgBgAAAAJQEAACgAAABYFyYAYAAAAAgBAAArAAAAWBcmAGAAAAAIAQAAQgAAAFgXJgBgAAAABQEAACsAAABYFyYAYAAAAAUBAABCAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdW5pY29kZS13aWR0aC0wLjIuMi9zcmMvdGFibGVzLnJzAAAoGCYAZgAAALgAAAAVAAAAKBgmAGYAAAC+AAAAGQAAAG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm2wGCYAKAAAACQAAAAAAAAAAgAAANgYJgBjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRlePAYJgAgAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMYGSYAXAAAABMAAAAJAAAArAIAAAwAAAAEAAAALQQAAC4EAACvAgAAAAAAAAAAAAABAAAAsAIAAAAAAAAAAAAAAQAAAC8EAAAAAAAABAAAAAQAAAA1AQAAAAAAAAQAAAAEAAAAMAQAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvc3RkL3NyYy9wYXRoLnJzANwZJgBHAAAAuAwAABsAAADcGSYARwAAANsMAAAhAAAA3BkmAEcAAADODAAAIgAAAFRyeUZyb21TbGljZUVycm9yAAAAAAAAAAwAAAAEAAAAMQQAADIEAAAAAAAADAAAAAQAAAAzBAAANAQAAGNy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b2RlZ2VuL3NyYy9saWIucnMAFSwmACIAAACKAAAAWwAAAGwqJgACAAAAqComAAIAAAAVLCYAIgAAADsEAAAxAAAAqiomAAQAAAAVLCYAIgAAADoEAABBAAAAFSwmACIAAABMBAAAMQAAABUsJgAiAAAAQwQAADsAAABoKyYAAwAAABUsJgAiAAAAPQQAADgAAABcdTAwMDAAALgsJgAGAAAAXHUwMMgsJgAEAAAAIlx1ANQsJgADAAAAWGImAAIAAAAMvSYAAQAAAAy9JgABAAAADL0mAAEAAABcAFwjX19QVVJFX18vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvb3BzLnJzAAAADC0mAGEAAAB6AAAAOwAAAE4EAAAMAAAABAAAAE8EAABQBAAArwIAAAAAAAAAAAAAAQAAAFEEAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2NvcmUvc3JjL2NoYXIvbWV0aG9kcy5yc6gtJgBQAAAAEgcAAAkAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9oc3RyL3NyYy93dGY4L21vZC5yc1BhcnNlSW50RXJyb3JPa0VyclBhcnNlRmxvYXRFcnJvclVuZXhwZWN0ZWQgZW9mRGVjbGFyYXRpb24gaXMgbm90IGFsbG93ZWRVc2luZyBkZWNsYXJhdGlvbiBpcyBub3QgYWxsb3dlZFVzaW5nIGRlY2xhcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIGZvci1pbiBsb29wVXNpbmcgZGVjbGFyYXRpb24gaXMgbm90IGVuYWJsZWQuIFNldCBqc2MucGFyc2VyLmV4cGxpY2l0UmVzb3VyY2VNYW5hZ2VtZW50IHRvIHRydWVVc2luZyBkZWNsYXJhdGlvbiBvbmx5IGFsbG93cyBpZGVudGlmaWVyc1VzaW5nIGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemVycHJpdmF0ZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlSW52YWxpZCBgc3VwZXIoKWBJbnZhbGlkIGFjY2VzcyB0byBzdXBlckluZGV4IHN1cGVyIHdpdGggcHJpdmF0ZSBuYW1lIGlzIG5vdCBhbGxvd2VkJ25ldy50YXJnZXQnIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBmdW5jdGlvbiBleHByZXNzaW9uLCBvciBjbGFzcy5JbXBvcnQgaXMgbm90IGFsbG93ZWQgaGVyZUFuIGFycm93IGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkIGhlcmVgZXhwb3J0YCBpcyBub3QgYWxsb3dlZCBoZXJlQSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIHJlYWRvbmx5QSBnZXR0ZXIgb3IgYSBzZXR0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSBgZ2V0YCBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzQSBgc2V0YCBhY2Nlc3NvciBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVydG9wIGxldmVsIGF3YWl0IGlzIG9ubHkgYWxsb3dlZCBpbiBtb2R1bGVMZWdhY3kgZGVjaW1hbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUxlZ2FjeSBvY3RhbCBlc2NhcGUgaXMgbm90IHBlcm1pdHRlZCBpbiBzdHJpY3QgbW9kZUludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXJhIGJpbmFyeWFuIG9jdGFsYSBkZWNpbWFsYSBoZXhhZGVjaW1hbEV4cGVjdGVkICBkaWdpdC0yJgAJAAAANjImAAYAAABjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9lcnJvci5ycwBMMiYAIwAAAEIBAAAaAAAAU2V0dGVyIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlclJlc3QgcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiBzZXR0ZXJVbnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnRFeHBlY3RlZCB1bmljb2RlIGVzY2FwZVVuZXhwZWN0ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlc2VydmVkIHdvcmQ6IAAaMyYALQAAAFVudGVybWluYXRlZCByZWdleHAgbGl0ZXJhbFVudGVybWluYXRlZCB0ZW1wbGF0ZUlkZW50aWZpZXIgY2Fubm90IGZvbGxvdyBudW1iZXJVbmV4cGVjdGVkIGNoYXJhY3RlciCfMyYAFQAAAEludmFsaWQgc3RyaW5nIGVzY2FwZUludmFsaWQgdW5pY29kZSBlc2NhcGVCYWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZSwgZXhwZWN0ZWQgAOczJgAoAAAARXhwZWN0ZWQgKywgLSBvciBkZWNpbWFsIGRpZ2l0IGFmdGVyIGVMZWdhY3kgY29tbWVudHMgY2Fubm90IGJlIHVzZWQgaW4gbW9kdWxlIGNvZGVgIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUA7tsmAAEAAABrNCYAMAAAAGBhd2FpdGAgY2Fubm90IGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBpbiBhbiBhc3luYyBjb250ZXh0J2V2YWwnIGFuZCAnYXJndW1lbnRzJyBjYW5ub3QgYmUgdXNlZCBhcyBhIGJpbmRpbmcgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZSdhcmd1bWVudHMnIGlzIG9ubHkgYWxsb3dlZCBpbiBmdW5jdGlvbnMgYW5kIGNsYXNzIG1ldGhvZHNJbGxlZ2FsICd1c2Ugc3RyaWN0JyBkaXJlY3RpdmUgaW4gZnVuY3Rpb24gd2l0aCBub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0LicqKicgY2Fubm90IGJlIGFwcGxpZWQgdG8gdW5hcnkvYXdhaXQgZXhwcmVzc2lvbi5VbmV4cGVjdGVkIHRva2VuICcjJ0xpbmVCcmVhayBjYW5ub3QgZm9sbG93ICd0aHJvdydVbmV4cGVjdGVkIGxpbmUgYnJlYWsgYmV0d2VlbiBhcnJvdyBoZWFkIGFuZCBhcnJvd1VuZXhwZWN0ZWQgdG9rZW4gYGAuIEV4cGVjdGVkIABNNiYAEgAAAF82JgAMAAAAICwgb3IgAAB/NiYAAwAAACBvciBVbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gAJA2JgAfAAAAZOImAAEAAABjYW5ub3QgaW1wb3J0IGFzIHJlc2VydmVkIHdvcmRhc3NpZ25tZW50IHByb3BlcnR5IGlzIGludmFsaWQgc3ludGF4RXhwZWN0ZWQgJycsIGdvdCAnJwAAAzcmAAoAAAANNyYACAAAABU3JgABAAAARXhwZWN0ZWQgJzsnLCAnfScgb3IgPGVvZj5hd2FpdCogaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBhc3luYyBmdW5jdGlvbnMgcHJvcG9zYWwuIFVzZSBQcm9taXNlLmFsbCgpIGluc3RlYWQuQ2Fubm90IHVzZSBhIHJlc2VydmVkIHdvcmQgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHlOdWxsaXNoIGNvYWxlc2Npbmcgb3BlcmF0b3IoPz8pIHJlcXVpcmVzIHBhcmVucyB3aGVuIG1peGluZyB3aXRoIGxvZ2ljYWwgb3BlcmF0b3JzQSBzd2l0Y2ggYmxvY2sgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVmYXVsdHNUcmFpbGluZyBjb21tYSBpc24ndCBwZXJtaXR0ZWQgYWZ0ZXIgYSByZXN0IGVsZW1lbnRSZXN0IGVsZW1lbnQgbXVzdCBiZSBmaW5hbCBlbGVtZW50UGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBjb250YWluIHNwcmVhZCBvcGVyYXRvclBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZW1wdHlOb3QgYSBwYXR0ZXJuTm90IGFuIGV4cHJlc3Npb25DYW5ub3QgYXNzaWduIHRvIHRoaXNJbnZhbGlkIGFzc2lnbm1lbnQgdGFyZ2V0RXhwZWN0ZWQgaWRlbnRFeHBlY3RlZCAnOycgb3IgbGluZSBicmVha0xhYmVsICBpcyBhbHJlYWR5IGRlY2xhcmVkAAAAdzkmAAYAAAB9OSYAFAAAAEFuIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBnZW5lcmF0b3InaW1wb3J0JywgYW5kICdleHBvcnQnIGFyZSBub3QgcGVybWl0dGVkIGhlcmUnaW1wb3J0JywgYW5kICdleHBvcnQnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUnaW1wb3J0Lm1ldGEnIGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgbW9kdWxlIGNvZGUuRGVzdHJ1Y3R1cmluZyBiaW5kaW5ncyByZXF1aXJlIGluaXRpYWxpemVyc1dpdGggc3RhdGVtZW50IGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZVJldHVybiBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgaGVyZUV4cGVjdGVkIG9uZSB2YXJpYWJsZSBiaW5kaW5nVW5leHBlY3RlZCBpbml0aWFsaXplciBpbiBmb3IgaW4vb2YgbG9vcEdlbmVyYXRvciBvciBhc3luYyBmdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWRGdW5jdGlvbiBjYW5ub3QgYmUgbGFiZWxsZWQgaW4gc3RyaWN0IG1vZGUneWllbGQnIGNhbm5vdCBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHdpdGhpbiBnZW5lcmF0b3JgYXdhaXRgIGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGluIGEgcGFyYW1ldGVyIGluaXRpYWxpemVyLmZvciBhd2FpdCBzeW50YXggaXMgdmFsaWQgb25seSBmb3IgZm9yLW9mIHN0YXRlbWVudGF3YWl0IGlzbid0IGFsbG93ZWQgaW4gbm9uLWFzeW5jIGZ1bmN0aW9uVW50ZXJtaW5hdGVkIEpTWCBjb250ZW50c0pTWCBhdHRyaWJ1dGVzIG11c3Qgb25seSBiZSBhc3NpZ25lZCBhIG5vbi1lbXB0eSBleHByZXNzaW9uSlNYIHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgYW4gZXhwcmVzc2lvbiBvciBhIHF1b3RlZCBKU1ggdGV4dEV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8PkV4cGVjdGVkIGNvcnJlc3BvbmRpbmcgSlNYIGNsb3NpbmcgdGFnIGZvciA8AAAADT0mACwAAACvyyYAAQAAAExlYWRpbmcgZGVjb3JhdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgY2xhc3MgZGVjbGFyYXRpb25Vc2luZyB0aGUgZXhwb3J0IGtleXdvcmQgYmV0d2VlbiBhIGRlY29yYXRvciBhbmQgYSBjbGFzcyBpcyBub3QgYWxsb3dlZC4gUGxlYXNlIHVzZSBgZXhwb3J0IEBkZWMgY2xhc3NgIGluc3RlYWQuQSByZXF1aXJlZCBlbGVtZW50IGNhbm5vdCBmb2xsb3cgYW4gb3B0aW9uYWwgZWxlbWVudC5UeXBlc2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0eSBtdXN0IGJlIGFuIGlkZW50aWZpZXIgb3IgYXNzaWdubWVudCBwYXR0ZXJuVW5leHBlY3RlZCBzcGFjZSBiZXR3ZWVuICMgYW5kIGlkZW50aWZpZXJDb25zdHJ1Y3RvciBjYW4ndCBiZSBhbiBhc3luYyBmdW5jdGlvbkNsYXNzZXMgbWF5IG5vdCBoYXZlIGEgbm9uLXN0YXRpYyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InQ2xhc3NlcyBjYW4ndCBoYXZlIGEgcHJpdmF0ZSBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJy4nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwcml2YXRlIGlkZW50aWZpZXIAAAAVNyYAAQAAADY/JgAzAAAAQ2xhc3MgY29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYWNjZXNzb3IuQSBtZXRob2QgY2Fubm90IGJlIHJlYWRvbmx5QSBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgZ2VuZXJhdG9yQSBjbGFzcyBjYW4gb25seSBoYXZlIG9uZSBjb25zdHJ1Y3RvckEgYmluZGluZyBwYXR0ZXJuIHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWwgaW4gYW4gaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlLlN1cGVyIGNhbGwgY2Fubm90IGJlIG9wdGlvbmFsQ29uc3RydWN0b3IgaW4vYWZ0ZXIgYW4gb3B0aW9uYWwgY2hhaW5pbmcgaXMgbm90IGFsbG93ZWQuVGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWwgaXMgbm90IGFsbG93ZWQgaW4gb3B0aW9uYWwgY2hhaW4uVHJhaWxpbmcgY29tbWEgaXMgZGlzYWxsb3dlZCBpbnNpZGUgaW1wb3J0KC4uLikgYXJndW1lbnRzYGltcG9ydCgpYCByZXF1aXJlcyBleGFjdGx5IG9uZSBvciB0d28gYXJndW1lbnRzZXhwb3J0IGRlZmF1bHQgc3RhdGVtZW50cyByZXF1aXJlZCBmcm9tICcuLi4nO2AgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBgZnJvbWAgY2xhdXNlAADu2yYAAQAAAHhBJgAmAAAAYC4uLmAgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyIGluIGRlY2xhcmF0aW9uIGNvbnRleHRzQSBudW1lcmljIHNlcGFyYXRvciBpcyBvbmx5IGFsbG93ZWQgYmV0d2VlbiB0d28gZGlnaXRzQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nLgotIERpZCB5b3UgbWVhbiBgaW1wb3J0IHsgIiIgYXMgZm9vIH1gPwAlQiYAUgAAAHdCJgAMAAAAQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBleHBvcnRlZCBiaW5kaW5nIHdpdGhvdXQgYGZyb21gLidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWREdXBsaWNhdGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFnICcnLgJDJgAkAAAAJkMmAAIAAABVbmtub3duIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncy5FeHBlY3RlZCBhbiBpZGVudGlmaWVyRXhwZWN0ZWQgYSBzZW1pY29sb25UcmFpbGluZyBjb21tYSBpcyBub3QgYWxsb3dlZEEgcmVzdCBwYXJhbWV0ZXIgbXVzdCBiZSBsYXN0IGluIGEgcGFyYW1ldGVyIGxpc3RQYXJhbWV0ZXIgY2Fubm90IGhhdmUgcXVlc3Rpb24gbWFyayBhbmQgaW5pdGlhbGl6ZXInIG1vZGlmaWVyIG11c3QgcHJlY2VkZSAnJyBtb2RpZmllci4VNyYAAQAAAAREJgAZAAAAHUQmAAsAAAAnIG1vZGlmaWVyIGFscmVhZHkgc2Vlbi4VNyYAAQAAAEBEJgAYAAAAYGRlY2xhcmVgIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gY2xhc3MgZWxlbWVudHMgb2YgdGhpcyBraW5kYGRlY2xhcmVgIG1vZGlmaWVyIG5vdCBhbGxvd2VkIGZvciBjb2RlIGFscmVhZHkgaW4gYW4gYW1iaWVudCBjb250ZXh0YGFzeW5jYCBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBoZXJlQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWxBIHJlc3QgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyanNjLnRhcmdldCBzaG91bGQgYmUgZXM1IG9yIHVwcGVyIHRvIHVzZSBnZXR0ZXIgLyBzZXR0ZXJMZWdhY3kgb2N0YWwgbGl0ZXJhbHMgYXJlIG5vdCBhdmFpbGFibGUgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCA1IGFuZCBoaWdoZXInIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbgAAABU3JgABAAAA5EUmADUAAABUeXBlIHBhcmFtZXRlcnMgY2Fubm90IGFwcGVhciBvbiBhIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uQW4gaW5kZXggc2lnbmF0dXJlIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXJUeXBlIHBhcmFtZXRlciBsaXN0IGNhbm5vdCBiZSBlbXB0eUludmFsaWQgdXNlIG9mICdhcmd1bWVudHMnIGluIHN0cmljdCBtb2RlJ2RlbGV0ZScgY2Fubm90IGJlIGNhbGxlZCBvbiBhbiBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlQSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIG9yIHN3aXRjaCBzdGF0ZW1lbnRUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBgZm9yLi4ub2ZgIHN0YXRlbWVudCBtYXkgbm90IGJlIGBhc3luY2BKdW1wIHRhcmdldCBjYW5ub3QgY3Jvc3MgZnVuY3Rpb24gYm91bmRhcnlFeHByZXNzaW9uIGV4cGVjdGVkdHlwZSBleHBlY3RlZER1cGxpY2F0ZSBsYWJlbEEgJ2NvbnRpbnVlJyBzdGF0ZW1lbnQgY2FuIG9ubHkganVtcCB0byBhIGxhYmVsIG9mIGFuIGVuY2xvc2luZyBpdGVyYXRpb24gc3RhdGVtZW50QSAnYnJlYWsnIHN0YXRlbWVudCBjYW4gb25seSBqdW1wIHRvIGEgbGFiZWwgb2YgYW4gZW5jbG9zaW5nIHN0YXRlbWVudFZhcmlhYmxlIGRlY2xhcmF0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5bGl0ZXJhbCBpbiBhbiBpbXBvcnQgdHlwZSBzaG91bGQgYmUgc3RyaW5nIGxpdGVyYWxBbiBvYmplY3QgbWVtYmVyIGNhbm5vdCBiZSBkZWNsYXJlZCBvcHRpb25hbENvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGFyZSBub3QgYWxsb3dlZCBpbiBlbnVtc0EgY29tbWEgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCBpbiBhIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVgZXh0ZW5kc2AgY2xhdXNlIGFscmVhZHkgc2Vlbi4nZXh0ZW5kcycgY2xhdXNlIG11c3QgcHJlY2VkZSAnaW1wbGVtZW50cycgY2xhdXNlLkNsYXNzZXMgY2FuIG9ubHkgZXh0ZW5kIGEgc2luZ2xlIGNsYXNzYGltcGxlbWVudHNgIGNsYXVzZSBhbHJlYWR5IHNlZW5BbiBpbXBsZW1lbnRhdGlvbiBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYW1iaWVudCBjb250ZXh0c01vZGlmaWVycyBjYW5ub3QgYXBwZWFyIGhlcmVNZXJnZSBjb25mbGljdCBtYXJrZXIgZW5jb3VudGVyZWQuVHlwZSBhbm5vdGF0aW9uIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbkNhdGNoIGNsYXVzZSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBhIHR5cGUgYW5ub3RhdGlvbmBhYnN0cmFjdGAgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3Mgb3IgbWV0aG9kIGRlY2xhcmF0aW9uJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoICcAAAAVNyYAAQAAAFVLJgAgAAAAHUQmAAsAAABBYnN0cmFjdCBtZXRob2RzIGNhbiBvbmx5IGFwcGVhciB3aXRoaW4gYW4gYWJzdHJhY3QgY2xhc3MuQWJzdHJhY3QgbWV0aG9kIGNhbm5vdCBoYXZlIGFuIGltcGxlbWVudGF0aW9uLkFic3RyYWN0IHByb3BlcnR5IGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLicgbW9kaWZpZXIgY2Fubm90IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyAAAAFTcmAAEAAAAlTCYALAAAACcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgdHlwZSBwYXJhbWV0ZXIgb2YgYSBjbGFzcywgaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXMAABU3JgABAAAAZEwmAFIAAAAnIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24sIG1ldGhvZCBvciBjbGFzcwAAABU3JgABAAAAyEwmAE0AAABUaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgaW1wb3J0IHdoZW4gJ2ltcG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBpbXBvcnQgc3RhdGVtZW50LlRoZSAndHlwZScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgb24gYSBuYW1lZCBleHBvcnQgd2hlbiAnZXhwb3J0IHR5cGUnIGlzIHVzZWQgb24gaXRzIGV4cG9ydCBzdGF0ZW1lbnQuQSBwYXJhbWV0ZXIgcHJvcGVydHkgaXMgb25seSBhbGxvd2VkIGluIGEgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25BIHBhcmFtZXRlciBpbml0aWFsaXplciBpcyBvbmx5IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvblRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlRoZSAnd2l0aCcgc3RhdGVtZW50IGlzIG5vdCBzdXBwb3J0ZWQuIEFsbCBzeW1ib2xzIGluIGEgJ3dpdGgnIGJsb2NrIHdpbGwgaGF2ZSB0eXBlICdhbnknLkludmFsaWQgY2xhc3MgbmFtZWludGVyZmFjZSBuYW1lIGlzIGludmFsaWRBbiBlbnVtIG1lbWJlciBjYW5ub3QgaGF2ZSBhIG51bWVyaWMgbmFtZVRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhICdmb3IuLi5vZicgc3RhdGVtZW50IGNhbm5vdCB1c2UgYSB0eXBlIGFubm90YXRpb25UaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4uaW4nIHN0YXRlbWVudCBjYW5ub3QgYmUgYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm5BbiBpbnRlcmZhY2UgY2FuIG9ubHkgZXh0ZW5kIGFuIGlkZW50aWZpZXIvcXVhbGlmaWVkLW5hbWUgd2l0aCBvcHRpb25hbCB0eXBlIGFyZ3VtZW50cy5UaGUgb3BlcmFuZCBvZiBhIGRlbGV0ZSBvcGVyYXRvciBtdXN0IGJlIGEgcHJvcGVydHkgcmVmZXJlbmNlLlRoaXMgbWVtYmVyIGNhbm5vdCBoYXZlIGFuICdvdmVycmlkZScgbW9kaWZpZXIgYmVjYXVzZSBpdHMgY29udGFpbmluZyBjbGFzcyBkb2VzIG5vdCBleHRlbmQgYW5vdGhlciBjbGFzcy5EZWNvcmF0b3JzIG1heSBub3QgYXBwZWFyIGFmdGVyIGBleHBvcnRgIG9yIGBleHBvcnQgZGVmYXVsdGAgaWYgdGhleSBhbHNvIGFwcGVhciBiZWZvcmUgYGV4cG9ydGAuQW4gYWNjZXNzaWJpbGl0eSBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLlR5cGUgYW5ub3RhdGlvbnMgbXVzdCBjb21lIGJlZm9yZSBkZWZhdWx0IGFzc2lnbm1lbnRzVHlwZXNjcmlwdCBub24tbnVsbCBhc3NlcnRpb24gb3BlcmF0b3IgaXMgbm90IGFsbG93ZWQgd2l0aCAnAANSJgA8AAAAFTcmAAEAAABUaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBVc2UgYW4gYGFzYCBleHByZXNzaW9uIGluc3RlYWQuVGhpcyBzeW50YXggaXMgcmVzZXJ2ZWQgaW4gZmlsZXMgd2l0aCB0aGUgLm10cyBvciAuY3RzIGV4dGVuc2lvbi4gQWRkIGEgdHJhaWxpbmcgY29tbWEsIGFzIGluIGA8VCw+KCkgPT4gLi4uYC5UeXBlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGVtcHR5LlRoaXMgaXMgdGhlIGV4cHJlc3Npb24gcGFydCBvZiBhbiBleHByZXNzaW9uIHN0YXRlbWVudHByZXZpb3VzIGRlZmF1bHQgY2FzZSBpcyBkZWNsYXJlZCBhdCBoZXJlPGVvZj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAABjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9sZXhlci9jb21tZW50c19idWZmZXIucnMAwFQmADMAAAA9AAAAGwAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL2xleGVyL251bWJlci5ycwAAAAAAAAEAAAABAAAAUgQAAARVJgAqAAAAOgAAACQAAAAEVSYAKgAAAEYAAAAjAAAABFUmACoAAABSAAAAIwAAAARVJgAqAAAAXAAAABoAAAAAAAAAAQAAAAEAAABTBAAABFUmACoAAABaAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL2xleGVyL3N0YXRlLnJzAAAAwFYmACkAAAB8AAAAFQAAAMBWJgApAAAAhAAAABwAAADAViYAKQAAAAsBAAArAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogYHRva2VuX3ZhbHVlYCBzaG91bGQgYmUgYSB3b3JkLCBidXQgZ290OiAAHFcmAFMAAADAViYAKQAAACgBAAANAAAAYHsnPid9YGAmZ3Q7YGB7J30nfWBgJnJicmFjZTtgcGFja2FnZTxzdHJpbmcgbGl0ZXJhbD48bnVtYmVyIGxpdGVyYWw+PGJpZ2ludCBsaXRlcmFsPjxyZWdleHAgbGl0ZXJhbD48dGVtcGxhdGUgbGl0ZXJhbD48dGVtcGxhdGUgaGVhZCBgLi4uJHsgPjx0ZW1wbGF0ZSBtaWRkbGUgLi4uJHsgPjx0ZW1wbGF0ZSB0YWlsIGAgPjxqc3ggbmFtZT48anN4IHRleHQ+PGlkZW50aWZpZXI+PGVycm9yPmpzeCB0YWcgc3RhcnRqc3ggdGFnIGVuZHN0cmluZyBsaXRlcmFsbnVtZXJpYyBsaXRlcmFsYmlnaW50IGxpdGVyYWxyZWdleHAgbGl0ZXJhbHRlbXBsYXRlIHRva2Vubm8gc3Vic3RpdHV0aW9uIHRlbXBsYXRlIGxpdGVyYWx0ZW1wbGF0ZSBoZWFkdGVtcGxhdGUgbWlkZGxldGVtcGxhdGUgdGFpbGpzeCBuYW1lanN4IHRleHRpbnN0YW5jZU9mdHlwZU9mPGxleGluZyBlcnJvcj4AAAABAQEBAQEBAQEAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBPT09PTw8PDw8ID4+Pj4gY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvbW9kLnJzAABPYCYAJwAAAHEBAAAWAAAACC4mADUAAADRAAAAFAAAAE9gJgAnAAAA2AEAACgAAABPYCYAJwAAAOQBAAAeAAAAT2AmACcAAACYAAAAFQAAAMBUJgAzAAAAMQAAABcAAADAVCYAMwAAADYAAAAeAAAAT2AmACcAAACTAgAAJgAAAE9gJgAnAAAA/AIAACoAAABmYWlsZWQgdG8gcGFyc2UgZmxvYXQgbGl0ZXJhbAAAAE9gJgAnAAAATAQAABkAAABPYCYAJwAAAPsDAABWAAAAT2AmACcAAACtBAAAPgAAAL7LJgABAAAAA8smAAEAAABPYCYAJwAAAO4EAAAlAAAAT2AmACcAAADvBAAANQAAAGZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXMgY2hhcgAAT2AmACcAAADQBAAADgAAAGZhaWxlZCB0byBwYXJzZSBzdHJpbmcgYXMgbnVtYmVyT2AmACcAAADOBAAALwAAADQgaGV4IGNoYXJhY3RlcnMxLTYgaGV4IGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIDAgdG8gMTBGRkZGLjEtNiBoZXggY2hhcmFjdGVyczIgaGV4IGNoYXJhY3RlcnMAAE9gJgAnAAAAYAYAADkAAABcdQAAWGImAAIAAAACAAAAAAAAAAAABAAAAAAAAAAAACAAAOl8fHx8fCAAAE9gJgAnAAAAZggAACAAAABPYCYAJwAAAKsIAAAmAAAAAQAAAAAAAABj4iYAAQAAAAEAAAAAAAAAIeImAAEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBVc2luZyBpcyBub3QgYSB2YWxpZCBkZWNsYXJhdGlvbiBmb3IgYGRlY2xhcmVgIGtleXdvcmTEYiYAYAAAAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci90eXBlc2NyaXB0LnJzACxjJgAvAAAALAAAABwAAABFb2ZEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRVc2luZ0RlY2xOb3RBbGxvd2VkRm9yRm9ySW5Mb29wVXNpbmdEZWNsTm90RW5hYmxlZEludmFsaWROYW1lSW5Vc2luZ0RlY2xJbml0UmVxdWlyZWRGb3JVc2luZ0RlY2xQcml2YXRlTmFtZUluSW50ZXJmYWNlSW52YWxpZFN1cGVyQ2FsbEludmFsaWRTdXBlckludmFsaWRTdXBlclByaXZhdGVOYW1lSW52YWxpZE5ld1RhcmdldEludmFsaWRJbXBvcnRBcnJvd05vdEFsbG93ZWRFeHBvcnROb3RBbGxvd2VkR2V0dGVyU2V0dGVyQ2Fubm90QmVSZWFkb25seUdldHRlclNldHRlckNhbm5vdEJlT3B0aW9uYWxHZXR0ZXJQYXJhbVNldHRlclBhcmFtVG9wTGV2ZWxBd2FpdEluU2NyaXB0TGVnYWN5RGVjaW1hbExlZ2FjeU9jdGFsSW52YWxpZElkZW50Q2hhckV4cGVjdGVkRGlnaXRyYWRpeFNldHRlclBhcmFtUmVxdWlyZWRSZXN0UGF0SW5TZXR0ZXJVbnRlcm1pbmF0ZWRCbG9ja0NvbW1lbnRVbnRlcm1pbmF0ZWRTdHJMaXRFeHBlY3RlZFVuaWNvZGVFc2NhcGVFc2NhcGVJblJlc2VydmVkV29yZHdvcmRVbnRlcm1pbmF0ZWRSZWdFeHBVbnRlcm1pbmF0ZWRUcGxJZGVudEFmdGVyTnVtVW5leHBlY3RlZENoYXJJbnZhbGlkU3RyRXNjYXBlSW52YWxpZFVuaWNvZGVFc2NhcGVCYWRDaGFyYWN0ZXJFc2NhcGVTZXF1ZW5jZWV4cGVjdGVkTnVtTGl0VGVybWluYXRlZFdpdGhFeHBMZWdhY3lDb21tZW50SW5Nb2R1bGVJbnZhbGlkSWRlbnRJblN0cmljdEludmFsaWRJZGVudEluQXN5bmNFdmFsQW5kQXJndW1lbnRzSW5TdHJpY3RBcmd1bWVudHNJbkNsYXNzRmllbGRJbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlVW5hcnlJbkV4cGxlZnRfc3Bhbkhhc2hMaW5lQnJlYWtJblRocm93TGluZUJyZWFrQmVmb3JlQXJyb3dVbmV4cGVjdGVkZ290VW5leHBlY3RlZFRva2VuV2l0aFN1Z2dlc3Rpb25zY2FuZGlkYXRlX2xpc3RSZXNlcnZlZFdvcmRJbkltcG9ydEFzc2lnblByb3BlcnR5RXhwZWN0ZWRFeHBlY3RlZFNlbWlGb3JFeHByU3RtdEF3YWl0U3RhclJlc2VydmVkV29yZEluT2JqU2hvcnRoYW5kT3JQYXROdWxsaXNoQ29hbGVzY2luZ1dpdGhMb2dpY2FsT3BNdWx0aXBsZURlZmF1bHRwcmV2aW91c0NvbW1hQWZ0ZXJSZXN0RWxlbWVudE5vbkxhc3RSZXN0UGFyYW1TcHJlYWRJblBhcmVuRXhwckVtcHR5UGFyZW5FeHBySW52YWxpZFBhdEludmFsaWRFeHByTm90U2ltcGxlQXNzaWduSW52YWxpZEFzc2lnblRhcmdldEV4cGVjdGVkSWRlbnRFeHBlY3RlZFNlbWlEdXBsaWNhdGVMYWJlbEFzeW5jR2VuZXJhdG9yTm9uVG9wTGV2ZWxJbXBvcnRFeHBvcnRJbXBvcnRFeHBvcnRJblNjcmlwdEltcG9ydE1ldGFJblNjcmlwdFBhdFZhcldpdGhvdXRJbml0V2l0aEluU3RyaWN0UmV0dXJuTm90QWxsb3dlZFRvb01hbnlWYXJJbkZvckluSGVhZFZhckluaXRpYWxpemVySW5Gb3JJbkhlYWRMYWJlbGxlZEdlbmVyYXRvck9yQXN5bmNMYWJlbGxlZEZ1bmN0aW9uSW5TdHJpY3RZaWVsZFBhcmFtSW5HZW5Bd2FpdFBhcmFtSW5Bc3luY0F3YWl0Rm9yU3RtdEF3YWl0SW5GdW5jdGlvblVudGVybWluYXRlZEpTWENvbnRlbnRzRW1wdHlKU1hBdHRySW52YWxpZEpTWFZhbHVlSlNYRXhwZWN0ZWRDbG9zaW5nVGFnRm9yTHRHdEpTWEV4cGVjdGVkQ2xvc2luZ1RhZ0ludmFsaWRMZWFkaW5nRGVjb3JhdG9yRGVjb3JhdG9yT25FeHBvcnRUc1JlcXVpcmVkQWZ0ZXJPcHRpb25hbFRzSW52YWxpZFBhcmFtUHJvcFBhdFNwYWNlQmV0d2Vlbkhhc2hBbmRJZGVudEFzeW5jQ29uc3RydWN0b3JQcm9wZXJ0eU5hbWVkQ29uc3RydWN0b3JQcml2YXRlQ29uc3RydWN0b3JQcml2YXRlTmFtZU1vZGlmaWVyQ29uc3RydWN0b3JBY2Nlc3NvclJlYWRPbmx5TWV0aG9kR2VuZXJhdG9yQ29uc3RydWN0b3JEdXBsaWNhdGVDb25zdHJ1Y3RvclRzQmluZGluZ1BhdENhbm5vdEJlT3B0aW9uYWxTdXBlckNhbGxPcHRpb25hbE9wdENoYWluQ2Fubm90Rm9sbG93Q29uc3RydWN0b3JDYWxsVGFnZ2VkVHBsSW5PcHRDaGFpblRyYWlsaW5nQ29tbWFJbnNpZGVJbXBvcnRJbXBvcnRSZXF1aXJlc09uZU9yVHdvQXJnc0V4cG9ydERlZmF1bHRXaXRoT3V0RnJvbUV4cG9ydEV4cGVjdEZyb21Eb3RzV2l0aG91dElkZW50aWZpZXJOdW1lcmljU2VwYXJhdG9ySXNBbGxvd2VkT25seUJldHdlZW5Ud29EaWdpdHNJbXBvcnRCaW5kaW5nSXNTdHJpbmdFeHBvcnRCaW5kaW5nSXNTdHJpbmdDb25zdERlY2xhcmF0aW9uc1JlcXVpcmVJbml0aWFsaXphdGlvbkR1cGxpY2F0ZWRSZWdFeHBGbGFnc1Vua25vd25SZWdFeHBGbGFnc1RTMTAwM1RTMTAwNVRTMTAwOVRTMTAxNFRTMTAxNVRTMTAyOVRTMTAzMFRTMTAzMVRTMTAzOFRTMTA0MlRTMTA0N1RTMTA0OFRTMTA1NlRTMTA4NVRTMTA4OVRTMTA5MlRTMTA5NlRTMTA5OFRTMTEwMFRTMTEwMlRTMTEwNVRTMTEwNlRTMTEwN1RTMTEwOVRTMTExMFRTMTExNFRTMTExNVRTMTExNlRTMTEyM1RTMTE0MVRTMTE2MlRTMTE2NFRTMTE3MVRTMTE3MlRTMTE3M1RTMTE3NFRTMTE3NVRTMTE4M1RTMTE4NFRTMTE4NVRTMTA5M1RTMTE5NlRTMTI0MlRTMTI0M1RTMTI0NFRTMTI0NVRTMTI2N1RTMTI3M1RTMTI3NFRTMTI3N1RTMjIwNlRTMjIwN1RTMjM2OVRTMjM3MVRTMjQwNlRTMjQxMFRTMjQxNFRTMjQyN1RTMjQ1MlRTMjQ4M1RTMjQ5MVRTMjQ5OVRTMjcwM1RTNDExMlRTODAzOFRTMTgwMTBUU1R5cGVBbm5vdGF0aW9uQWZ0ZXJBc3NpZ25Uc05vbk51bGxBc3NlcnRpb25Ob3RBbGxvd2VkV2l0aExhYmVsaW5uZXJub3RlUmVzZXJ2ZWRUeXBlQXNzZXJ0aW9uUmVzZXJ2ZWRBcnJvd1R5cGVQYXJhbUVtcHR5VHlwZUFyZ3VtZW50TGlzdHF1b3RhbXBhcG9zbHRndG5ic3BpZXhjbGNlbnRwb3VuZGN1cnJlbnllbmJydmJhcnNlY3R1bWxjb3B5b3JkZmxhcXVvbm90c2h5cmVnbWFjcmRlZ3BsdXNtbnN1cDJzdXAzYWN1dGVtaWNyb3BhcmFtaWRkb3RjZWRpbHN1cDFvcmRtcmFxdW9mcmFjMTRmcmFjMTJmcmFjMzRpcXVlc3RBZ3JhdmVBYWN1dGVBY2lyY0F0aWxkZUF1bWxBcmluZ0FFbGlnQ2NlZGlsRWdyYXZlRWFjdXRlRWNpcmNFdW1sSWdyYXZlSWFjdXRlSWNpcmNJdW1sRVRITnRpbGRlT2dyYXZlT2FjdXRlT2NpcmNPdGlsZGVPdW1sdGltZXNPc2xhc2hVZ3JhdmVVYWN1dGVVY2lyY1V1bWxZYWN1dGVUSE9STnN6bGlnYWdyYXZlYWFjdXRlYWNpcmNhdGlsZGVhdW1sYXJpbmdhZWxpZ2NjZWRpbGVncmF2ZWVhY3V0ZWVjaXJjZXVtbGlncmF2ZWlhY3V0ZWljaXJjaXVtbGV0aG50aWxkZW9ncmF2ZW9hY3V0ZW9jaXJjb3RpbGRlb3VtbGRpdmlkZW9zbGFzaHVncmF2ZXVhY3V0ZXVjaXJjdXVtbHlhY3V0ZXRob3JueXVtbE9FbGlnb2VsaWdTY2Fyb25zY2Fyb25ZdW1sZm5vZmNpcmN0aWxkZUFscGhhQmV0YUdhbW1hRGVsdGFFcHNpbG9uWmV0YUV0YVRoZXRhSW90YUthcHBhTGFtYmRhTXVOdVhpT21pY3JvblBpUmhvU2lnbWFUYXVVcHNpbG9uUGhpQ2hpUHNpT21lZ2FhbHBoYWJldGFnYW1tYWRlbHRhZXBzaWxvbnpldGFldGF0aGV0YWlvdGFrYXBwYWxhbWJkYW11bnV4aW9taWNyb25waXJob3NpZ21hZnNpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdGhldGFzeW11cHNpaHBpdmVuc3BlbXNwdGhpbnNwenduanp3amxybXJsbW5kYXNobWRhc2hsc3F1b3JzcXVvc2JxdW9sZHF1b3JkcXVvYmRxdW9kYWdnZXJEYWdnZXJidWxsaGVsbGlwcGVybWlscHJpbWVQcmltZWxzYXF1b3JzYXF1b29saW5lZnJhc2xldXJvaW1hZ2V3ZWllcnByZWFsdHJhZGVhbGVmc3ltbGFycnVhcnJyYXJyZGFycmhhcnJjcmFycmxBcnJ1QXJyckFycmRBcnJoQXJyZm9yYWxscGFydGV4aXN0ZW1wdHluYWJsYWlzaW5ub3Rpbm5pcHJvZHN1bW1pbnVzbG93YXN0cmFkaWNpbmZpbmFuZ2FuZG9yY2FwY3VwaW50dGhlcmU0c2ltY29uZ2FzeW1wbmVlcXVpdmxlZ2VzdWJzdXBuc3Vic3ViZXN1cGVvcGx1c290aW1lc3BlcnBzZG90bGNlaWxyY2VpbGxmbG9vcnJmbG9vcmxhbmdyYW5nbG96c3BhZGVzY2x1YnNoZWFydHNkaWFtc1QEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFQEAABUBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFYEAABbBAAAXAQAAF0EAABeBAAAXwQAAGAEAABhBAAAYgQAAGMEAABkBAAAZAQAAGQEAABkBAAAZAQAAGQEAABkBAAAZAQAAGQEAABlBAAAZgQAAGcEAABoBAAAaQQAAGoEAABrBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABYBAAAWAQAAFgEAABsBAAAWAQAAG0EAABuBAAAWAQAAG8EAABwBAAAcQQAAHIEAABzBAAAdAQAAHUEAAB2BAAAWAQAAHcEAABYBAAAeAQAAHkEAAB6BAAAewQAAHwEAAB9BAAAWAQAAH4EAAB/BAAAgAQAAIEEAACCBAAAgwQAAFgEAACEBAAAWAQAAIUEAACGBAAAhwQAAIgEAABUBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAACJBAAAiQQAAIkEAABXb3JkVGVtcGxhdGVKc3hUZXh0AIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIsEAACMBAAAiwQAAIsEAACMBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAiwQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAjQQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAigQAAIoEAACKBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAACOBAAAjgQAAI4EAABtZXNzYWdlc3RydWN0IFRzU3ludGF4L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzABZ7JgBFAAAA0AEAADYAAABjYWxsZWQgZXhwZWN0IG9uIAAAAGx7JgARAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9wYXQucnOIeyYAOAAAAA0AAAAUAAAAc3BhblN0ckJvb2xOdW1CaWdJbnRSZWdleEpTWFRleHQAAAAACAAAAAQAAAABAQAAdmFsdWVyYXdUcGxleHByc3F1YXNpcwAAAAAAAAQAAAAEAAAAhgEAAFByaXZhdGVQdWJsaWNUaGlzVW5hcnlVcGRhdGVCaW5NZW1iZXJTdXBlclByb3BDb25kQ2FsbE5ld1NlcUxpdFRhZ2dlZFRwbEFycm93WWllbGRNZXRhUHJvcEF3YWl0UGFyZW5KU1hNZW1iZXJKU1hOYW1lc3BhY2VkTmFtZUpTWEVtcHR5SlNYRWxlbWVudEpTWEZyYWdtZW50VHNUeXBlQXNzZXJ0aW9uVHNDb25zdEFzc2VydGlvblRzTm9uTnVsbFRzQXNUc0luc3RhbnRpYXRpb25Uc1NhdGlzZmllc1ByaXZhdGVOYW1lT3B0Q2hhaW5leHBmbGFnc1Nob3J0aGFuZEtleVZhbHVlR2V0dGVyU2V0dGVyTWV0aG9kQmxvY2tFbXB0eURlYnVnZ2VyV2l0aFJldHVybkxhYmVsZWRCcmVha0NvbnRpbnVlSWZTd2l0Y2hUaHJvd1RyeVdoaWxlRG9XaGlsZUZvckZvckluRm9yT2ZEZWNsU3VwZXJOdW1iZXIAAAAAAAQAAAAEAAAAgAEAAJQEAAAMAAAABAAAAEcCAACVBAAADAAAAAQAAACWBAAAlwQAAAQAAAAEAAAAkwEAAAAAAAABAAAAAQAAAEsBAACYBAAABAAAAAQAAAAFAgAAmQQAAAQAAAAEAAAAkAEAAAAAAAAEAAAABAAAAJoEAABjdHh0ZGVjb3JhdG9yc2JvZHlzdXBlcl9jbGFzc2lzX2Fic3RyYWN0dHlwZV9wYXJhbXNzdXBlcl90eXBlX3BhcmFtc9B7JgAEAAAAMH4mAAQAAAA0fiYACgAAAD5+JgAEAAAAQn4mAAsAAABNfiYACwAAAFh+JgALAAAAY34mABEAAACA5iYACgAAAJsEAAAYAAAACAAAAEgBAABGbkRlY2xpZGVudEltcG9ydEZuRXhwcgAAAAAABAAAAAQAAABmAgAAcGhhc2VzeW1vcHRpb25hbEpTWEF0dHJuYW1lSlNYRW1wdHlFeHByAAAAAAAEAAAABAAAAEkBAABSZXN0UGF0ZG90M190b2tlbmFyZ3R5cGVfYW5unAQAAAQAAAAEAAAAegEAAElmU3RtdHRlc3Rjb25zYWx0VmFyRGVjbGtpbmRkZWNsc0JpbkV4cHJvcGxlZnRyaWdodE5ld0V4cHJjYWxsZWVhcmdzdHlwZV9hcmdzT3B0Q2FsbFNlcUV4cHJBcnJheVBhdGVsZW1zVXNpbmdEZWNsUGF0Rm9yU3RtdGluaXR1cGRhdGVUcnlTdG10YmxvY2toYW5kbGVyZmluYWxpemVyQXJyYXlMaXRDYWxsRXhwckNvbmRFeHByVGhpc0V4cHJKU1hNZW1iZXJFeHByQXNzaWduUGF0T2JqZWN0UGF0cHJvcHNDb21wdXRlZEV4cHJTdG10ZXhwcldpdGhTdG10b2JqQ2xhc3NEZWNsaXNfYXdhaXQAAACdBAAADAAAAAQAAACeBAAAnwQAAAQAAAAEAAAAoAQAAHBhcmFtc2lzX2FzeW5jaXNfZ2VuZXJhdG9ycmV0dXJuX3R5cGUAAADQeyYABAAAADB+JgAEAAAAkIAmAAYAAAA+fiYABAAAAJaAJgAIAAAAnoAmAAwAAABYfiYACwAAAKqAJgALAAAAQXJyb3dFeHByQXdhaXRFeHByQ2xhc3NFeHByT2JqZWN0TGl0UGFyZW5FeHBydGFndHBsVW5hcnlFeHByWWllbGRFeHByZGVsZWdhdGVQYXJhbXBhdG9wZW5pbmdjaGlsZHJlbmNsb3NpbmdCbG9ja1N0bXRzdG10c0JyZWFrU3RtdGxhYmVsRW1wdHlTdG10Rm9ySW5TdG10Rm9yT2ZTdG10VGhyb3dTdG10V2hpbGVTdG10oQQAACAAAAAIAAAA1QEAAKIEAAAEAAAABAAAANYBAAAAAAAAAQAAAAEAAACjBAAAa2V5aXNfc3RhdGljYWNjZXNzaWJpbGl0eWlzX29wdGlvbmFsaXNfb3ZlcnJpZGVkZWZpbml0ZQDQeyYABAAAANyBJgADAAAAAHwmAAUAAABAfyYACAAAAN+BJgAJAAAANH4mAAoAAADogSYADQAAAE1+JgALAAAA9YEmAAsAAAAAgiYACwAAAFPiJgAIAAAA7tAmAAcAAAALgiYACAAAAENsYXNzUHJvcERlY29yYXRvckFzc2lnbkV4cHJNZW1iZXJFeHBycHJvcFRwbEVsZW1lbnR0YWlsY29va2VkVXBkYXRlRXhwcnByZWZpeElkZW50TmFtZUFzc2lnblByb3BHZXR0ZXJQcm9wTWV0aG9kUHJvcFNldHRlclByb3B0aGlzX3BhcmFtcGFyYW1SZXR1cm5TdG10U3dpdGNoQ2FzZVN3aXRjaFN0bXRkaXNjcmltaW5hbnRjYXNlc0pTWEV4cHJDb250YWluZXJDYXRjaENsYXVzZURvV2hpbGVTdG10TGFiZWxlZFN0bXRDb25zdHJ1Y3RvclByaXZhdGVNZXRob2RQcml2YXRlUHJvcFRzSW5kZXhTaWduYXR1cmVTdGF0aWNCbG9ja0F1dG9BY2Nlc3NvcqQEAAAEAAAABAAAAKUEAAAAAAAAAQAAAAEAAACmBAAA0HsmAAQAAADcgSYAAwAAAGnlJgAIAAAAcH8mAAQAAADfgSYACQAAAOiBJgANAAAATX4mAAsAAAD1gSYACwAAAACCJgALAAAAQ2xhc3NNZXRob2QApwQAAAwAAAAEAAAAqAQAAKkEAAAYAAAABAAAAKoEAADQeyYABAAAADB+JgAEAAAA3IEmAAMAAACQgCYABgAAAD5+JgAEAAAA6IEmAA0AAAD1gSYACwAAAKsEAAAQAAAACAAAAKwEAADQeyYABAAAADB+JgAEAAAA3IEmAAMAAAAAfCYABQAAAEB/JgAIAAAA34EmAAkAAAA0fiYACgAAAOiBJgANAAAA9YEmAAsAAAAAgiYACwAAAFPiJgAIAAAAC4ImAAgAAABTaW1wbGVFeHByT3JTcHJlYWRzcHJlYWRNZXRhUHJvcEV4cHJPcHRDaGFpbkV4cHJiYXNlU3ByZWFkUHJvcAAArQQAAAwAAAAEAAAArgQAAJCAJgAGAAAANH4mAAoAAADQeyYABAAAADB+JgAEAAAAPn4mAAQAAACegCYADAAAAJaAJgAIAAAAWH4mAAsAAACqgCYACwAAAEZ1bmN0aW9uTW9kdWxlRGVjbFN0bXRBc3NpZ25QYXRQcm9wS2V5VmFsdWVQcm9wQ29udGludWVTdG10RGVidWdnZXJTdG10VHNLZXl3b3JkVHlwZVRzVGhpc1R5cGVUc0ZuT3JDb25zdHJ1Y3RvclR5cGVUc1R5cGVSZWZUc1R5cGVRdWVyeVRzVHlwZUxpdFRzQXJyYXlUeXBlVHNUdXBsZVR5cGVUc09wdGlvbmFsVHlwZVRzUmVzdFR5cGVUc1VuaW9uT3JJbnRlcnNlY3Rpb25UeXBlVHNDb25kaXRpb25hbFR5cGVUc0luZmVyVHlwZVRzUGFyZW50aGVzaXplZFR5cGVUc1R5cGVPcGVyYXRvclRzSW5kZXhlZEFjY2Vzc1R5cGVUc01hcHBlZFR5cGVUc0xpdFR5cGVUc1R5cGVQcmVkaWNhdGVUc0ltcG9ydFR5cGUArwQAACAAAAAIAAAAsAQAANB7JgAEAAAA3IEmAAMAAAAAfCYABQAAAEB/JgAIAAAA34EmAAkAAAA0fiYACgAAAOiBJgANAAAATX4mAAsAAAAAgiYACwAAAAuCJgAIAAAAVmFyRGVjbGFyYXRvclNwcmVhZEVsZW1lbnRTdXBlclByb3BFeHByQmluZGluZ0lkZW50aWRKU1hTcHJlYWRDaGlsZEtleVZhbHVlUGF0UHJvcFRzQXNFeHByAACxBAAADAAAAAQAAAAzAgAAVHNGblR5cGVsaXRUc1R5cGVBbm5tZW1iZXJzdHlwZV9uYW1lSlNYQ2xvc2luZ0VsZW1lbnRuc0pTWE9wZW5pbmdFbGVtZW50YXR0cnNzZWxmX2Nsb3NpbmcAAACyBAAABAAAAAQAAACHAQAARXhwb3J0QWxsc3JjdHlwZV9vbmx5Q29tcHV0ZWRQcm9wTmFtZVRzRW51bURlY2xpc19jb25zdEpTWENsb3NpbmdGcmFnbWVudEpTWE9wZW5pbmdGcmFnbWVudEV4cG9ydERlY2xkZWNsAAAAswQAAAwAAAAEAAAAtAQAALUEAAAEAAAABAAAALYEAABzcGVjaWZpZXJzAADQeyYABAAAAKSIJgAKAAAAIYgmAAMAAAAkiCYACQAAAL/iJgAEAAAA9H4mAAUAAABJbXBvcnREZWNsRXhwb3J0TmFtZWRFeHBvcnREZWZhdWx0RGVjbEV4cG9ydERlZmF1bHRFeHByVHNJbXBvcnRFcXVhbHNUc0V4cG9ydEFzc2lnbm1lbnRUc05hbWVzcGFjZUV4cG9ydGVsZW1fdHlwZXR5cGVfcGFyYW1Uc0VudGl0eU5hbWVUc0V4dGVybmFsTW9kdWxlUmVmAAAAAAAABAAAAAQAAAC3BAAA0HsmAAQAAAA0fiYACgAAAOiBJgANAAAAAIImAAsAAABT4iYACAAAAAWDJgAFAAAAVHNQYXJhbVByb3BlbGVtX3R5cGVzAAAAuAQAAAQAAAAEAAAAuQQAAAAAAAAEAAAABAAAALoEAABpc19pbmlzX291dGNvbnN0cmFpbnQAAADQeyYABAAAAAt/JgAEAAAA9IkmAAUAAAD5iSYABgAAAEeIJgAIAAAA/4kmAAoAAADk4yYABwAAAFRzVHlwZVBhcmFtZXhwcl9uYW1lVHNVbmlvblR5cGV0eXBlc1RzSW50ZXJmYWNlRGVjbEV2YWx1YXRpb25Tb3VyY2VEZWZlck5hbWVkRXhwb3J0VHNRdWFsaWZpZWROYW1lVHNFbnVtTWVtYmVycXVhbGlmaWVyYXR0cmlidXRlcwAAAAAAAAABAAAAAQAAALsEAAC8BAAAMAAAAAgAAAC9BAAAbmFtZV90eXBlAAAA0HsmAAQAAABT4iYACAAAAFGJJgAKAAAA6IomAAkAAAD8fiYACAAAAEB/JgAIAAAAvgQAACAAAAAIAAAAJAIAAAAAAAAEAAAABAAAAL8EAADQeyYABAAAAO7QJgAHAAAA9dAmAAYAAABf0CYACQAAAHOHJgACAAAAPn4mAAQAAABUc01vZHVsZURlY2xUc1RwbExpdFR5cGVQcm90ZWN0ZWRUcnVlUGx1c01pbnVzVHNNb2R1bGVCbG9ja1RzTm9uTnVsbEV4cHJUc0NhbGxTaWduYXR1cmVEZWNsVHNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsVHNQcm9wZXJ0eVNpZ25hdHVyZVRzR2V0dGVyU2lnbmF0dXJlVHNTZXR0ZXJTaWduYXR1cmVUc01ldGhvZFNpZ25hdHVyZVRzVHVwbGVFbGVtZW50dHlUc0ludGVyZmFjZUJvZHnABAAADAAAAAQAAADBBAAAAAAAAAQAAAAEAAAAwgQAANB7JgAEAAAAc4cmAAIAAADu0CYABwAAAFh+JgALAAAAW+ImAAcAAAA+fiYABAAAAFRzTmFtZXNwYWNlRGVjbFRzU2F0aXNmaWVzRXhwclRzVHlwZUFsaWFzRGVjbFRzVHlwZVBhcmFtRGVjbHBhcmFtX25hbWVOYW1lc3BhY2VEZWZhdWx0TmFtZWRjaGVja190eXBlZXh0ZW5kc190eXBldHJ1ZV90eXBlZmFsc2VfdHlwZVRzQ29uc3RydWN0b3JUeXBlY29tcHV0ZWRUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmQAAAAABAAAAAQAAAA0AgAA0HsmAAQAAADcgSYAAwAAADGNJgAIAAAA/H4mAAgAAACQgCYABgAAAEB/JgAIAAAAWH4mAAsAAABUc0V4cHJXaXRoVHlwZUFyZ3NUc0ltcG9ydEVxdWFsc0RlY2xpc19leHBvcnRpc190eXBlX29ubHltb2R1bGVfcmVmVHNJbnRlcnNlY3Rpb25UeXBlVHNJbXBvcnRDYWxsT3B0aW9uc29ial90eXBlaW5kZXhfdHlwZQAA0HsmAAQAAABT4iYACAAAANyBJgADAAAAMY0mAAgAAAD8fiYACAAAAEB/JgAIAAAARXhwb3J0TmFtZWRTcGVjaWZpZXJvcmlnZXhwb3J0ZWRJbXBvcnROYW1lZFNwZWNpZmllcmxvY2FsaW1wb3J0ZWRUc05hbWVzcGFjZUV4cG9ydERlY2xJbXBvcnRTdGFyQXNTcGVjaWZpZXJFeHBvcnREZWZhdWx0U3BlY2lmaWVySW1wb3J0RGVmYXVsdFNwZWNpZmllcgBa6yYASgAAAKgBAAAfAAAAVHNUeXBlUGFyYW1JbnN0YW50aWF0aW9uRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMi4wL3NyYy9tYXAvY29yZS5yc8iPJgBkAAAAOwAAACMAAABpbmRleCBub3QgZm91bmQAyI8mAGQAAABLAAAACgAAAMiPJgBkAAAAGgIAAA0AAADIjyYAZAAAAKICAAAsAAAAyI8mAGQAAAB6AgAAIgAAAGFzc2VydGlvbiBmYWlsZWQ6IGluZGljZXMuY2FwYWNpdHkoKSAtIGluZGljZXMubGVuKCkgPj0gZW50cmllcy5sZW4oKQAAAMiPJgBkAAAAVAAAAAUAAADIjyYAZAAAAFYAAABEAAAAyI8mAGQAAABMAQAAFgAAAMiPJgBkAAAAWAEAADgAAADIjyYAZAAAAMgBAAA0AAAAyI8mAGQAAAAzAAAADwAAAEWyJgA6AAAAdwYAABQAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9maXhlci5yc0SRJgAsAAAAxgAAAEAAAABEkSYALAAAAG8DAAAjAAAARJEmACwAAAB/AwAAMQAAAESRJgAsAAAAiwMAACkAAABjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9oZWxwZXJzL21vZC5yc0Bzd2MvaGVscGVycy9fL18AAOKRJgAQAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL3JldmVyc2VfbWFwLnJzAAD8kSYAQgAAAA4AAAAsAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL2FuYWx5emVyL21vZC5ycwAAUJImADoAAAAuAAAAGwAAAFCSJgA6AAAAOgAAADcAAABQkiYAOgAAAIsAAAAdAAAATWFya2VyIHByb3ZpZGVkIHRvIHJlc29sdmVyIHNob3VsZCBub3QgYmUgdGhlIHJvb3QgbWFyawC8kiYANwAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2Uvc3JjL3Jlc29sdmVyL21vZC5ycwD8kiYAMwAAAIcAAAAFAAAA/JImADMAAADUBgAANgAAAMMEAACwkSYAMgAAAPsAAAABAAAAX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yX2FycmF5X2xpa2VfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fYXJyYXlfbGlrZV90b19hcnJheV9hcnJheV93aXRoX2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhfaG9sZXNfYXJyYXlfd2l0aG91dF9ob2xlc0Bzd2MvaGVscGVycy9fL19hcnJheV93aXRob3V0X2hvbGVzX2Fzc2VydF90aGlzX2luaXRpYWxpemVkQHN3Yy9oZWxwZXJzL18vX2Fzc2VydF90aGlzX2luaXRpYWxpemVkX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19nZW5lcmF0b3JfYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9kZWxlZ2F0ZV9hc3luY19pdGVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19pdGVyYXRvcl9hc3luY190b19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fYXN5bmNfdG9fZ2VuZXJhdG9yX2F3YWl0X2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hd2FpdF9hc3luY19nZW5lcmF0b3JfYXdhaXRfdmFsdWVAc3djL2hlbHBlcnMvXy9fYXdhaXRfdmFsdWVfY2FsbF9zdXBlckBzd2MvaGVscGVycy9fL19jYWxsX3N1cGVyX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbkBzd2MvaGVscGVycy9fL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlX2NsYXNzX2NhbGxfY2hlY2tAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2FsbF9jaGVja19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19uYW1lX3Rkel9lcnJvckBzd2MvaGVscGVycy9fL19jbGFzc19uYW1lX3Rkel9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0X2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRfY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19wcml2YXRlX21ldGhvZF9pbml0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRfY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlX2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19jb25zdHJ1Y3RfY3JlYXRlX2NsYXNzQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9jbGFzc19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL19kZWNvcmF0ZV9kZWZhdWx0c0Bzd2MvaGVscGVycy9fL19kZWZhdWx0c19kZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2RlZmluZV9wcm9wZXJ0eV9leHBvcnRfc3RhckBzd2MvaGVscGVycy9fL19leHBvcnRfc3Rhcl9leHRlbmRzQHN3Yy9oZWxwZXJzL18vX2V4dGVuZHNfZ2V0QHN3Yy9oZWxwZXJzL18vX2dldF9nZXRfcHJvdG90eXBlX29mQHN3Yy9oZWxwZXJzL18vX2dldF9wcm90b3R5cGVfb2ZfaW5oZXJpdHNAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfaW5oZXJpdHNfbG9vc2VAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfbG9vc2VfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eV9pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlckBzd2MvaGVscGVycy9fL19pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcl9pbnN0YW5jZW9mQHN3Yy9oZWxwZXJzL18vX2luc3RhbmNlb2ZfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZF9pc19uYXRpdmVfZnVuY3Rpb25Ac3djL2hlbHBlcnMvXy9faXNfbmF0aXZlX2Z1bmN0aW9uX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlQHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlX2pzeEBzd2MvaGVscGVycy9fL19qc3hfbmV3X2Fycm93X2NoZWNrQHN3Yy9oZWxwZXJzL18vX25ld19hcnJvd19jaGVja19ub25faXRlcmFibGVfcmVzdEBzd2MvaGVscGVycy9fL19ub25faXRlcmFibGVfcmVzdF9ub25faXRlcmFibGVfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9zcHJlYWRfb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlAc3djL2hlbHBlcnMvXy9fb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlfb2JqZWN0X3NwcmVhZEBzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX29iamVjdF9zcHJlYWRfcHJvcHNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3NwcmVhZF9wcm9wc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZUBzd2MvaGVscGVycy9fL19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlX292ZXJsb2FkX3lpZWxkQHN3Yy9oZWxwZXJzL18vX292ZXJsb2FkX3lpZWxkX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybkBzd2MvaGVscGVycy9fL19wb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fcmVhZF9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3JlYWRfb25seV9lcnJvcl9zZXRAc3djL2hlbHBlcnMvXy9fc2V0X3NldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fc2V0X3Byb3RvdHlwZV9vZl9za2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0QHN3Yy9oZWxwZXJzL18vX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRfc2xpY2VkX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3NsaWNlZF90b19hcnJheV9zbGljZWRfdG9fYXJyYXlfbG9vc2VAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X2xvb3NlX3N1cGVyX3Byb3BfYmFzZUBzd2MvaGVscGVycy9fL19zdXBlcl9wcm9wX2Jhc2VfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VfdGhyb3dAc3djL2hlbHBlcnMvXy9fdGhyb3dfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fdG9fYXJyYXlfdG9fY29uc3VtYWJsZV9hcnJheUBzd2MvaGVscGVycy9fL190b19jb25zdW1hYmxlX2FycmF5X3RvX3ByaW1pdGl2ZUBzd2MvaGVscGVycy9fL190b19wcmltaXRpdmVfdG9fcHJvcGVydHlfa2V5QHN3Yy9oZWxwZXJzL18vX3RvX3Byb3BlcnR5X2tleV91cGRhdGVAc3djL2hlbHBlcnMvXy9fdXBkYXRlX3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fdHlwZV9vZl91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheUBzd2MvaGVscGVycy9fL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheV93cmFwX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL193cmFwX2FzeW5jX2dlbmVyYXRvcl93cmFwX25hdGl2ZV9zdXBlckBzd2MvaGVscGVycy9fL193cmFwX25hdGl2ZV9zdXBlcl93cml0ZV9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3dyaXRlX29ubHlfZXJyb3JfY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlX2NsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfYWNjZXNzX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RfY3JlYXRlX3N1cGVyQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9zdXBlcl9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZUBzd2MvaGVscGVycy9fL19jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZV90c19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL190c19kZWNvcmF0ZV90c19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fdHNfZ2VuZXJhdG9yX3RzX21ldGFkYXRhQHN3Yy9oZWxwZXJzL18vX3RzX21ldGFkYXRhX3RzX3BhcmFtQHN3Yy9oZWxwZXJzL18vX3RzX3BhcmFtX3RzX3ZhbHVlc0Bzd2MvaGVscGVycy9fL190c192YWx1ZXNfdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VAc3djL2hlbHBlcnMvXy9fdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2VfdHNfZGlzcG9zZV9yZXNvdXJjZXNAc3djL2hlbHBlcnMvXy9fdHNfZGlzcG9zZV9yZXNvdXJjZXNfdHNfcmV3cml0ZV9yZWxhdGl2ZV9pbXBvcnRfZXh0ZW5zaW9uQHN3Yy9oZWxwZXJzL18vX3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbl9hcHBseV9kZWNzXzIyMDNfckBzd2MvaGVscGVycy9fL19hcHBseV9kZWNzXzIyMDNfcl9pZGVudGl0eUBzd2MvaGVscGVycy9fL19pZGVudGl0eV9kaXNwb3NlQHN3Yy9oZWxwZXJzL18vX2Rpc3Bvc2VfdXNpbmdAc3djL2hlbHBlcnMvXy9fdXNpbmdfdXNpbmdfY3R4QHN3Yy9oZWxwZXJzL18vX3VzaW5nX2N0eGFwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yYXJyYXlfbGlrZV90b19hcnJheWFycmF5X3dpdGhfaG9sZXNhcnJheV93aXRob3V0X2hvbGVzYXNzZXJ0X3RoaXNfaW5pdGlhbGl6ZWRhc3luY19nZW5lcmF0b3Jhc3luY19nZW5lcmF0b3JfZGVsZWdhdGVhc3luY19pdGVyYXRvcmFzeW5jX3RvX2dlbmVyYXRvcmF3YWl0X2FzeW5jX2dlbmVyYXRvcmF3YWl0X3ZhbHVlY2FsbF9zdXBlcmNoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbmNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZGVzdHJ1Y3R1cmVjbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0Y2xhc3NfYXBwbHlfZGVzY3JpcHRvcl91cGRhdGVjbGFzc19jYWxsX2NoZWNrY2xhc3NfY2hlY2tfcHJpdmF0ZV9zdGF0aWNfZmllbGRfZGVzY3JpcHRvcmNsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcmNsYXNzX25hbWVfdGR6X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXRjbGFzc19wcml2YXRlX2ZpZWxkX2luaXRjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VjbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleWNsYXNzX3ByaXZhdGVfZmllbGRfc2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVjbGFzc19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19wcml2YXRlX21ldGhvZF9pbml0Y2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19nZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3VwZGF0ZWNvbnN0cnVjdGNyZWF0ZV9jbGFzc2RlY29yYXRlZGVmYXVsdHNkZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzZGVmaW5lX3Byb3BlcnR5ZXhwb3J0X3N0YXJnZXRfcHJvdG90eXBlX29maW5oZXJpdHNpbmhlcml0c19sb29zZWluaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eWluaXRpYWxpemVyX3dhcm5pbmdfaGVscGVyaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRpbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmRpc19uYXRpdmVfZnVuY3Rpb25pdGVyYWJsZV90b19hcnJheWl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0aXRlcmFibGVfdG9fYXJyYXlfbGltaXRfbG9vc2Vqc3huZXdfYXJyb3dfY2hlY2tub25faXRlcmFibGVfcmVzdG5vbl9pdGVyYWJsZV9zcHJlYWRvYmplY3RfZGVzdHJ1Y3R1cmluZ19lbXB0eW9iamVjdF9zcHJlYWRvYmplY3Rfc3ByZWFkX3Byb3Bzb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfbG9vc2VvdmVybG9hZF95aWVsZHBvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybnJlYWRfb25seV9lcnJvcnNldF9wcm90b3R5cGVfb2Zza2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0c2xpY2VkX3RvX2FycmF5c2xpY2VkX3RvX2FycmF5X2xvb3Nlc3VwZXJfcHJvcF9iYXNldGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWx0YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZXRvX2FycmF5dG9fY29uc3VtYWJsZV9hcnJheXRvX3ByaW1pdGl2ZXRvX3Byb3BlcnR5X2tleXR5cGVfb2Z1bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheXdyYXBfYXN5bmNfZ2VuZXJhdG9yd3JhcF9uYXRpdmVfc3VwZXJ3cml0ZV9vbmx5X2Vycm9yY2xhc3NfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldGNsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdGNyZWF0ZV9zdXBlcmNyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NldHNfZGVjb3JhdGV0c19nZW5lcmF0b3J0c19tZXRhZGF0YXRzX3BhcmFtdHNfdmFsdWVzdHNfYWRkX2Rpc3Bvc2FibGVfcmVzb3VyY2V0c19kaXNwb3NlX3Jlc291cmNlc3RzX3Jld3JpdGVfcmVsYXRpdmVfaW1wb3J0X2V4dGVuc2lvbmFwcGx5X2RlY3NfMjIwM19yaWRlbnRpdHlkaXNwb3NldXNpbmdfY3R4YXJndW1lbnRzbm90IGltcGxlbWVudGVkL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdXRpbHMvc3JjL2xpYi5ycwBFsiYAOgAAAPwJAAA+AAAAxAQAAAQAAAAEAAAAegEAAEWyJgA6AAAACgoAADwAAABFsiYAOgAAAOkJAAAmAAAATgQAAAwAAAAEAAAATwQAAFAEAACvAgAAAAAAAAAAAAABAAAAUQQAAENsYXNzRm5WYXJVc2luZ1RzSW50ZXJmYWNlVHNUeXBlQWxpYXNUc0VudW1Uc01vZHVsZWNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3NlbWFudGljLnJzG7MmADUAAABTAQAAKwAAABuzJgA1AAAA7gEAACQAAABuYW1lc3BhY2UgYmxvY2sgc3RhY2sgc2hvdWxkIGNvbnRhaW4gY3VycmVudCBibG9jawAAG7MmADUAAAD1AQAADgAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3RyYW5zZm9ybS5ycwAAtLMmADYAAACQAAAAFwAAALSzJgA2AAAArAAAABIAAAC0syYANgAAABMBAAAoAAAAtLMmADYAAAAUAQAALQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGRlc3RydWN0dXJpbmcgcGF0dGVybiBpbnNpZGUgVHNQYXJhbWV0ZXJQcm9wZXJ0eQAALLQmAFoAAAC0syYANgAAAAABAAAhAAAAtLMmADYAAAAxAQAAEgAAALSzJgA2AAAA6wEAACwAAAC0syYANgAAADADAAAnAAAAtLMmADYAAAAtAwAAMgAAALSzJgA2AAAAswMAAEEAAAC0syYANgAAACYEAAANAAAAtLMmADYAAACGBAAAHwAAALSzJgA2AAAAhwQAAB8AAAC0syYANgAAAK8EAAAfAAAAtLMmADYAAAC3BAAAHQAAALSzJgA2AAAA0wQAACMAAAC0syYANgAAAH8EAAAxAAAAxQQAACgAAAAIAAAAQAEAALSzJgA2AAAAkgQAAEAAAABJbXBvcnQgZGVjbGFyYXRpb25zIGluIGEgbmFtZXNwYWNlIGNhbm5vdCByZWZlcmVuY2UgYSBtb2R1bGUuRVNNLXN0eWxlIG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gYSBuYW1lc3BhY2UutLMmADYAAABHBQAAIwAAALSzJgA2AAAAHQUAACsAAAC0syYANgAAACkFAABRAAAAtLMmADYAAAAsBQAAHwAAALSzJgA2AAAANgUAAFYAAAC0syYANgAAADgFAAAfAAAAZXhwb3J0cwC0syYANgAAAG4GAAAjAAAAtLMmADYAAAByBgAAHwAAALSzJgA2AAAAKQYAABoAAAC0syYANgAAACsGAAAaAAAASW1wb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgaW1wb3J0ICogYXMgbnMgZnJvbSAibW9kImAsIGBpbXBvcnQge2F9IGZyb20gIm1vZCJgLCBgaW1wb3J0IGQgZnJvbSAibW9kImAsIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLkV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBiZSB1c2VkIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgbW9kdWxlcy4gQ29uc2lkZXIgdXNpbmcgYGV4cG9ydCBkZWZhdWx0YCBvciBhbm90aGVyIG1vZHVsZSBmb3JtYXQgaW5zdGVhZC5Pbmx5IGFtYmllbnQgbW9kdWxlcyBjYW4gdXNlIHF1b3RlZCBuYW1lcy60syYANgAAANcGAAAOAAAAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC9zcmMvdHNfZW51bS5yc05hTkluZmluaXR5ACS4JgA0AAAAuAAAABIAAAABAAAAAAAAAAEAAAAAAAAAJLgmADQAAADiAAAAGgAAAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3R5cGVzY3JpcHQucnMAlLgmADcAAAA7AAAALAAAAJS4JgA3AAAAUwAAABAAAABfY3JlYXRlUmVxdWlyZV9fcmVxdWlyZWNyZWF0ZVJlcXVpcmVOBAAADAAAAAQAAABPBAAAUAQAAK8CAAAAAAAAAAAAAAEAAABRBAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yczi5JgBMAAAAVgoAACQAAAAAAAAADAAAAAQAAADKBAAAywQAAGNvbnN0cnVjdG9yIHNob3VsZCBoYXZlIGEgYm9keWNyYXRlcy9zd2NfZWNtYV91dGlscy9zcmMvY29uc3RydWN0b3IucnMAAMa5JgAoAAAADgAAACAAAABTeW1ib2wAAAEAAAAAAAAAfNUmAAEAAABzdXBlcl8AABi6JgAGAAAAfNUmAAEAAAAYySYAPQAAAHoCAAAUAAAAGMkmAD0AAACiAgAAPAAAABjJJgA9AAAAkQIAAD4AAACsAgAADAAAAAQAAAAtBAAAzQQAAK8CAAAAAAAAAAAAAAEAAACwAgAAQOgmAE8AAAAKAgAANwAAAM4EAAAsAAAABAAAAM8EAADQBAAA0QQAANIEAADTBAAA1AQAALYCAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWVyYW5nZSAgb3V0IG9mIGJvdW5kczog3romAAYAAADkuiYAEAAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UvYXBpLnJzAAAEuyYAYgAAAI4KAAABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQwL3NyYy9zZXIucnMAAHi7JgBiAAAADQYAABIAAAB4uyYAYgAAAEwIAAAzAAAAdXV1dXV1dXVidG51ZnJ1dXV1dXV1dXV1dXV1dXV1dXUAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHi7JgBiAAAAPwgAAEAAAAAiXCJcXFxiXGZcblxyXHQAeMkmAF4AAAA0AAAABQAAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8vaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93eXotMC41LjEvc3JjL2NvbXUucnMAAGy9JgBaAAAAJwEAAAIAAADVBAAADAAAAAQAAADWBAAA1wQAAK8CAAAAAAAAAAAAAAEAAAATBAAAdTgAANgEAAAUAAAABAAAANkEAAAAAAAACAAAAAQAAADaBAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAJL4mAF8AAADGAAAAJwAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL21hcC9lbnRyeS5yc5S+JgBgAAAAoQEAAC4AAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxAAS/JgBbAAAArQIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpBL8mAFsAAABKBwAABQAAAAS/JgBbAAAAxwQAACMAAAAEvyYAWwAAAAoFAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5ub2RlLmhlaWdodCAtIDEAAAAEvyYAWwAAAPoDAAAJAAAAJL4mAF8AAABYAgAAMAAAACS+JgBfAAAAFgIAAC8AAAAkviYAXwAAAKEAAAAkAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy9zdHIucnMAAAClwCYASAAAAJoAAAAKAAAApcAmAEgAAACdAAAAFgAAAKXAJgBIAAAAsQAAABYAAABOdWxsUHRyRXJyb3JJbmNsdWRlZEV4Y2x1ZGVkVW5ib3VuZGVkY2Fubm90ICBiaXRzIGZyb20gYSAtYml0IHJlZ2lvbkXBJgAHAAAAJMsmAAEAAABMwSYADQAAAFnBJgALAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYml0dmVjLTEuMC4xL3NyYy9maWVsZC5ycwAAhMEmAF4AAAAOAgAAAgAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpdHZlYy0xLjAuMS9zcmMvc2xpY2UucnMAAPTBJgBeAAAA9wAAAB8AAAD0wSYAXgAAAE8BAAAjAAAAaW5kZXggIG91dCBvZiByYW5nZTogAAAAdMImAAYAAAB6wiYADwAAAPTBJgBeAAAAMQYAAAMAAAAuLmxvYWRCaXRTcGFuRXJyb3I8Pjo6AACywiYADQAAAL/CJgADAAAATnVsbE1pc2FsaWduZWRUb29Mb25nVG9vSGlnaE1pc2FsaWduRXJyb3IAAAABAAAAeLsmAGIAAAB/AgAAKgAAAHi7JgBiAAAApAIAACoAAAB4uyYAYgAAAPwBAAAqAAAAeLsmAGIAAAAKAgAAKgAAAGV4cGVjdGVkIFJhd1ZhbHVlY3JhdGVzL3N3Y19zb3VyY2VtYXAvc3JjL2J1aWxkZXIucnNVwyYAIwAAAGwAAAAaAAAAVcMmACMAAABtAAAAIgAAAENhbm5vdCBzZXQgc291cmNlcyBmb3IgdG9tYnN0b25lIHNvdXJjZSBpZAAAVcMmACMAAACDAAAACQAAAFXDJgAjAAAAhwAAAB0AAABVwyYAIwAAAAoBAAAVAAAAY3JhdGVzL3N3Y19zb3VyY2VtYXAvc3JjL2VuY29kZXIucnMA9MMmACMAAAA3AAAADQAAAGludmFsaWQgYnl0ZfTDJgAjAAAAIwAAABIAAABpbnZhbGlkIHV0Zjj0wyYAIwAAAGYAAAAhAAAA9MMmACMAAABYAAAAEQAAAGJhZCBqc29uOiAAAHDEJgAKAAAAbGVmdG92ZXIgY3VyL3NoaWZ0IGluIHZscSBkZWNvZGV2bHEgZGVjb2RlIGRpZCBub3QgcHJvZHVjZSBhbnkgdmFsdWVzdmxxIGRlY29kZSBjYXVzZWQgYW4gb3ZlcmZsb3dnb3QgIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDXmxCYABAAAAOrEJgAaAAAAYmFkIHJlZmVyZW5jZSB0byBzb3VyY2UgIwAAABTFJgAZAAAAYmFkIHJlZmVyZW5jZSB0byBuYW1lICMAOMUmABcAAABlbmNvdW50ZXJlZCBpbmNvbXBhdGlibGUgc291cmNlbWFwIGZvcm1hdHRoZSBwcm92aWRlZCBkYXRhIFVSTCBpcyBpbnZhbGlkY2Fubm90IGZsYXR0ZW4gdGhlIGluZGV4ZWQgc291cmNlbWFwOiAAocUmACYAAABpbnZhbGlkIG1hZ2ljIG51bWJlciBmb3IgcmFtIGJ1bmRsZWludmFsaWQgbW9kdWxlIGluZGV4IGluIHJhbSBidW5kbGVpbnZhbGlkIHJhbSBidW5kbGUgbW9kdWxlIGVudHJ5bm90IGEgcmFtIGJ1bmRsZWludmFsaWQgcmFuZ2UgbWFwcGluZyBpbmRleDogAAAARMYmAB0AAABpbnZhbGlkIGJhc2U2NCBjaGFyYWN0ZXI6IAAAbMYmABoAAABodHRwOmh0dHBzOgABAAAAAAAAALrLJgABAAAAbGluZWNvbHVtbm9mZnNldHVybG1hcG5hbWVzbWFwcGluZ3N2ZXJzaW9uZmlsZXNvdXJjZXNzb3VyY2VSb290c291cmNlc0NvbnRlbnRzZWN0aW9uc3Njb3Blc3JhbmdlTWFwcGluZ3NpZ25vcmVMaXN0eF9mYWNlYm9va19vZmZzZXRzeF9tZXRyb19tb2R1bGVfcGF0aHN4X2ZhY2Vib29rX3NvdXJjZXNkZWJ1Z19pZGRlYnVnSWQvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQucnNlxyYAYwAAAGwDAAAPAAAAAAAAAAQAAAAAAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJz5McmAGwAAADwAQAAFgAAAGNhbm5vdCBhY2Nlc3MgYSBzY29wZWQgdGhyZWFkIGxvY2FsIHZhcmlhYmxlIHdpdGhvdXQgY2FsbGluZyBgc2V0YCBmaXJzdC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3Njb3BlZC10bHMtMS4wLjEvc3JjL2xpYi5yc6jIJgBgAAAAqAAAAAkAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfY29tbW9uL3NyYy9zb3VyY2VfbWFwLnJzAAAAGMkmAD0AAAA9BQAASgAAABjJJgA9AAAAagUAACYAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAB4ySYAXgAAABMAAAAFAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9yZW5hbWUvb3BzLnJzAOjJJgBLAAAASgIAABcAAADoySYASwAAAE8CAAARAAAA6MkmAEsAAAAeAQAAGQAAAOjJJgBLAAAARwEAABkAAADoySYASwAAAHsBAAAcAAAA6MkmAEsAAAC7AQAAFwAAAOjJJgBLAAAAwAEAABEAAADoySYASwAAAH4CAAASAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvdGV4dF93cml0ZXIvYmFzaWNfaW1wbC5yczu0yiYATwAAAE4BAAAQAAAAtMomAE8AAABZAQAAGgAAACAAAAC0yiYATwAAAIsBAAAgAAAAtMomAE8AAACQAQAAGAAAALTKJgBPAAAAfwEAACMAAAB2YXJsZXRjb25zdE5vbmUtKyF+dHlwZW9mdm9pZGRlbGV0ZT0rPS09Kj0vPSU9PDw9Pj49Pj4+PXw9Xj0mPSoqPSYmPXx8PT8/PT09IT09PT0hPT08PD0+Pj08PD4+Pj4+Ki8lfF4mfHwmJmluaW5zdGFuY2VvZioqPz8rKy0tL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwDXyyYAWAAAANMHAAAJAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvaXRlci5yc3VuZXhwZWN0ZWQgcmVnZXggZmluZCBlcnJvcjogCnRvIGhhbmRsZSBmaW5kIGVycm9ycywgdXNlICd0cnknIG9yICdzZWFyY2gnIG1ldGhvZHOqzCYAHQAAAMfMJgA1AAAAQMwmAGoAAAB+AQAAGQAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3Bvb2wucnMAABzNJgBqAAAAPQIAABwAAAAczSYAagAAAEQCAAAyAAAAHM0mAGoAAABeAgAAHAAAABzNJgBqAAAAawIAADIAAAAczSYAagAAAG8CAAAXAAAAAgAAABzNJgBqAAAAAQMAABUAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9zZWFyY2gucnNpbnZhbGlkIHNwYW4gIGZvciBoYXlzdGFjayBvZiBsZW5ndGggAAAAWM4mAA0AAABlziYAGAAAAOzNJgBsAAAAqgEAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcGFuLmxvID49IHNlbGYuaW5wdXQuc3RhcnRfcG9zKCkgJiYgc3Bhbi5oaSA8PSBzZWxmLmlucHV0LmVuZF9wb3MoKS9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvc3RhdGUucnMAAAD2ziYAQwAAAFEAAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAABMzyYAKgAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAIACA4C9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvdG9rZW4ucnMAmM8mAEMAAAB9AQAAEQAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvY2FwdHVyaW5nLnJzAOzPJgBHAAAAPgAAAAsAAABhYnN0cmFjdGVudW1pbnRlcmZhY2Vtb2R1bGVuYW1lc3BhY2V0eXBlL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvdHlwZXNjcmlwdC5ycwAAAGzQJgBJAAAAOwAAABcAAABs0CYASQAAAD8AAAARAAAACgkAAGzQJgBJAAAAcQEAACAAAAACA2RlY2xhcmVnbG9iYWwSkI+OkZ1ZkI6PkXNRjGCLbC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAM0SYASwAAAOgBAAAXAAAAbNAmAEkAAADqAwAAQAAAAGzQJgBJAAAA7QMAACwAAAABkQQFkwAAAGzQJgBJAAAARAgAADcAAAA8IChqc3ggdGFnIHN0YXJ0KXBpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAABs0CYASQAAAAMJAAASAAAAGgAAAGzQJgBJAAAAeQQAABYAAACFmRNzdHJpbmdudWxsbnVtYmVyb2JqZWN0YW55dW5rbm93bmJvb2xlYW5iaWdpbnRzeW1ib2xuZXZlcmludHJpbnNpYwAAAAAAAAAAAQAAALACAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAGzQJgBJAAAA8AkAADgAAABs0CYASQAAAAIKAAA4AAAAbNAmAEkAAAAMCgAAFgAAAG51bWVyaWMgbGl0ZXJhbCBvciBiaWdpbnQgbGl0ZXJhbGFuIGlkZW50aWZpZXIsIHZvaWQsIHlpZWxkLCBudWxsLCBhd2FpdCwgYnJlYWssIGEgc3RyaW5nIGxpdGVyYWwsIGEgbnVtZXJpYyBsaXRlcmFsLCB0cnVlLCBmYWxzZSwgYCwgLSwgaW1wb3J0LCB0aGlzLCB0eXBlb2YsIHssIFssIChoY2zQJgBJAAAAUQkAACsAAABs0CYASQAAAE8JAAAaAAAAbNAmAEkAAABgBAAAEwAAAGzQJgBJAAAAZAQAABQAAAAXkmEgc3RyaW5nIGxpdGVyYWwAAGzQJgBJAAAAcgAAABEAAAAHAAAAbNAmAEkAAACDBQAAGAAAAGzQJgBJAAAAkQUAABIAAABhbiBpZGVudGlmaWVyLCBbIGZvciBhbiBhcnJheSBwYXR0ZXJuLCB7IGZvciBhbiBvYmplY3QgcGF0dGVyIG9yIC4uLiBmb3IgYSByZXN0IHBhdHRlcm4AbNAmAEkAAAAkAQAAFwAAABtnbG9iYWwgb3IgYSBzdHJpbmcgbGl0ZXJhbGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGhhbmRsZV9pbXBvcnRfZXhwb3J0IHNob3VsZCBub3QgYmUgY2FsbGVkIGlmIGN1cnJlbnQgdG9rZW4gaXNuJ3QgaW1wb3J0IG5vciBleHBvcnQAY9QmAHwAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9tb2R1bGVfaXRlbS5ycwAA6NQmAEoAAACtAwAACQAAAIYAAADo1CYASgAAAFgCAAAcAAAAdQAAAOjUJgBKAAAAcQIAABwAAADo1CYASgAAAI4CAAAcAAAAXwAAAOjUJgBKAAAABwMAABoAAADo1CYASgAAABoDAAAeAAAAc291cmNlZGVmZXIA6NQmAEoAAABAAwAAHgAAAOjUJgBKAAAAWgMAABwAAADo1CYASgAAAG4DAAAgAAAA6NQmAEoAAABnAwAAHAAAAOjUJgBKAAAAiQMAABYAAADo1CYASgAAACYAAAAWAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvY2xhc3NfYW5kX2ZuLnJzewzWJgBLAAAAyQUAABkAAAAM1iYASwAAAOIFAAATAAAADNYmAEsAAADPBQAAFwAAAAzWJgBLAAAAUAAAABgAAABQAAAADNYmAEsAAABCBgAAFQAAAHiQj45gi291dHORjJSMKiBmb3IgZ2VuZXJhdG9yLCBwcml2YXRlIGtleSwgaWRlbnRpZmllciBvciBhc3luYwAM1iYASwAAAOwEAAAWAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaXNfY29uc3RydWN0b3IoKSByZXR1cm5zIGZhbHNlIGZvciBQcml2YXRlTmFtZfzWJgBYAAAADNYmAEsAAABHBAAAHgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IE1vZHVsZSBpcyBoYW5kbGVkIGFib3ZlAAAAbNcmAEEAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9tb2QucnMAALjXJgBCAAAACAEAADIAAAC41yYAQgAAAGQCAAAfAAAAaWRlbnRpZmllciwgc3RyaW5nIGxpdGVyYWwsIG51bWVyaWMgbGl0ZXJhbCBvciBbIGZvciB0aGUgY29tcHV0ZWQga2V5L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvanN4LnJzAGHYJgBCAAAAVgEAABkAAABh2CYAQgAAAGABAAATAAAAPCAoanN4IHRhZyBzdGFydCksIGpzeCB0ZXh0IG9yIHth2CYAQgAAAAIBAAASAAAAanN4IGlkZW50aWZpZXIAAGHYJgBCAAAAxQAAABgAAABh2CYAQgAAAMsAAAASAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogSlNYTmFtZXNwYWNlZE5hbWUgLT4gSlNYT2JqZWN0JNkmAEgAAABh2CYAQgAAAIIAAAAaAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvcGF0LnJzAACE2SYAQgAAAPECAAAUAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBzeW50YXg6IFBhdDogANjZJgA/AAAAhNkmAEIAAAA4AgAAFgAAAITZJgBCAAAA0AEAABcAAACE2SYAQgAAAM4BAAAXAAAAhNkmAEIAAAC2AQAAFwAAAITZJgBCAAAAqQIAABgAAACE2SYAQgAAAKMCAAAYAAAAhNkmAEIAAAAoAQAAIgAAAITZJgBCAAAAPgEAADkAAACE2SYAQgAAAGIBAAAcAAAAhNkmAEIAAAA6AQAAKAAAAITZJgBCAAAAOAEAACQAAAB5aWVsZCwgYW4gaWRlbnRpZmllciwgWyBvciB7hNkmAEIAAAATAwAAGgAAAITZJgBCAAAAJQMAACAAAACE2SYAQgAAAEoDAAAQAAAAhNkmAEIAAAAfAwAAHgAAAITZJgBCAAAAIAMAADoAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9leHByLnJzADzbJgBDAAAArgMAACcAAAA82yYAQwAAAL8DAAAhAAAAPNsmAEMAAAAeAAAAFwAAAGltcG9ydAAAPNsmAEMAAAACAgAAGQAAADzbJgBDAAAABwIAABcAAAA82yYAQwAAAAsCAAATAAAAKCBvciBgYFRyaWVkIHRvIHBhcnNlIGFuIGFyZ3VtZW50IG9mIHlpZWxkYXN5bmNgfWAAADzbJgBDAAAAYgIAABMAAAA82yYAQwAAAGUCAAAUAAAAQW4gZXhwcmVzc2lvbiBzaG91bGQgZm9sbG93ICcuLi4nAAAAPNsmAEMAAAAiAwAAEQAAADzbJgBDAAAAJQMAABQAAAA82yYAQwAAAJAIAAAXAAAAPNsmAEMAAACKCAAAFwAAADzbJgBDAAAAlggAABwAAAA82yYAQwAAAKkIAAAXAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBwYXR0ZXJuOiBFeHByKMDcJgBAAAAAsz4nAAEAAAA82yYAQwAAAG8IAAAsAAAAPNsmAEMAAABICAAAHgAAACgAAAA82yYAQwAAAIUJAABBAAAAPNsmAEMAAACUCQAAHQAAADzbJgBDAAAAowkAACMAAAA82yYAQwAAAKQJAAAiAAAAPNsmAEMAAACbCQAAOAAAAGZhaWxtZXRhdGFyZ2V0aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogcGFyc2VfbGl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciAAkt0mAE0AAAA82yYAQwAAAJ8DAAANAAAAb1RyaWVkIHRvIHBhcnNlIHRoZSBjb25kaXRpb24gZm9yIGFuIGlmIHN0YXRlbWVudC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL3N0bXQucnMp3iYAQwAAAHUBAAA4AAAABnVzaW5nAAAp3iYAQwAAAN8AAAAZAAAAKd4mAEMAAAD4AAAAEwAAACneJgBDAAAAtAAAAA0AAAAp3iYAQwAAACQFAAAZAAAAInVzZSBzdHJpY3QiJ3VzZSBzdHJpY3QnKd4mAEMAAABFBQAAFwAAACneJgBDAAAANQEAABMAAAAp3iYAQwAAAMIDAAAXAAAAKd4mAEMAAAC9AwAAGgAAACneJgBDAAAAKwMAACYAAAAp3iYAQwAAAEQDAAAuAAAAKd4mAEMAAAAlAwAAIAAAACneJgBDAAAAeQAAABYAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9pZGVudC5yc1zfJgBEAAAAzAAAAA0AAABsZXQgaXMgcmVzZXJ2ZWQgaW4gY29uc3QsIGxldCwgY2xhc3MgZGVjbGFyYXRpb25pZGVudGlmaWVyIG9yIHN0cmluZy9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL2lucHV0LnJz9N8mAEQAAACDAQAAIAAAAPTfJgBEAAAAZAAAAA0AAAD03yYARAAAAJwAAAANAAAA9N8mAEQAAACOAAAADQAAAPTfJgBEAAAAhwAAAA0AAAD03yYARAAAAHIAAAANAAAA9N8mAEQAAAB5AAAADQAAAPTfJgBEAAAAgAAAAA0AAAD03yYARAAAAJUAAAANAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvb2JqZWN0LnJzAAAAyOAmAEUAAAAWAAAAHQAAAMjgJgBFAAAAGQAAABcAAAAuLi4gLCAqLCAgKCwgWywgOiwgLCA/LCA9LCBhbiBpZGVudGlmaWVyLCBwdWJsaWMsIHByb3RlY3RlZCwgcHJpdmF0ZSwgcmVhZG9ubHksIDwuLi4uICwgKiwgICgsIFssIDosICwgPywgPSBvciBhbiBpZGVudGlmaWVyaWRlbnRpZmllcgAAyOAmAEUAAACfAQAAIgAAAGFuIGlkZW50aWZpZXIvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy90eXBlc2NyaXB0LnJzZXhwb3J0bmV3OmFzPT59Li4udGhpc1tdaW5mZXJwdWJsaWNwcm90ZWN0ZWRwcml2YXRlb3ZlcnJpZGVyZWFkb25seWV4dGVuZHMsLj8AAADV4SYAQwAAABUCAAAiAAAAJHsAANXhJgBDAAAAGAIAACEAAAB1bmRlZmluZWRrZXlvZnVuaXF1ZXNhdGlzZmllc2Fzc2VydHNpc2dldHNldHJlcXVpcmV3aXRoALTKJgBPAAAAgAAAABoAAAAgICAgtMomAE8AAACZAAAAGAAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL21vZHVsZV9kZWNscy5yc2Zyb21hc3NlcnQA6OImAEUAAAChAAAAIAAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuc3BlY2lmaWVycy5sZW4oKSA8PSAy6OImAEUAAACvAAAAFQAAAOjiJgBFAAAAZQEAACgAAABub3QgaW1wbGVtZW50ZWQ6IGNvZGVnZW4gb2YgYGV4cG9ydCBkZWZhdWx0IGZyb20gJ2Zvbyc7YJTjJgA4AAAA6OImAEUAAAAHAQAAEQAAAGRlZmF1bHQvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9saWIucnMA6+MmADwAAADIAwAAEgAAAOvjJgA8AAAAOQIAAEgAAADr4yYAPAAAADoCAAAoAAAA6+MmADwAAAD+AAAATAAAAOvjJgA8AAAAAQEAACcAAAA8LzwvPjw+L2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvbGl0LnJzAH/kJgA8AAAA/wAAADQAAABmYWxzZXRydWV1c2Ugc3RyaWN0c2NyaXB0XHV7PCEtLVx4M2MhLS0tLT4tLVx4M2VuLTB4/eQmAAMAAAAweAAACOUmAAIAAAAvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9kZWNsLnJzAAAAFOUmAD0AAABDAAAAPwAAAGNsYXNzZnVuY3Rpb24AAAAU5SYAPQAAALQAAAAXAAAAYXdhaXQvaG9tZS9ub2RlL2J1aWxkL2RlcHMvc3djL2NyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9zdG10LnJzaWZlbHNlZm9ydHJ5ZmluYWxseWJyZWFrb2Z0aHJvd3doaWxlcmV0dXJuY2FzZYnlJgA9AAAAEQEAAB0AAACJ5SYAPQAAABQBAABBAAAAc3dpdGNoY2F0Y2gAieUmAD0AAADjAAAAPwAAAGRvY29udGludWVkZWJ1Z2dlci9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL2NsYXNzLnJzaW1wbGVtZW50c3N0YXRpY0LmJgA+AAAAMQEAABcAAABjb25zdHJ1Y3RvcgBC5iYAPgAAAEQCAAAXAAAAYWNjZXNzb3JC5iYAPgAAAPEAAAAXAAAAL2hvbWUvbm9kZS9idWlsZC9kZXBzL3N3Yy9jcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvb2JqZWN0LnJzANTmJgA/AAAAzAAAABcAAADU5iYAPwAAAJMAAABBAAAALy8vKiovIGlzIGFscmVhZHkgcmVuYW1lZCB0byAsIGJ1dCBpdCdzIHJlbmFtZWQgYXMgAEzPJgAqAAAAOucmABcAAABR5yYAFgAAAC9ob21lL25vZGUvYnVpbGQvZGVwcy9zd2MvY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvcmVuYW1lL21vZC5ycwCA5yYASwAAABEBAAAZAAAAZXZhbNsEAAAMAAAABAAAAC0EAACuAgAArwIAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkADNEmAEsAAADwCgAADgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAQOgmAE8AAADiBQAAFAAAAEDoJgBPAAAA4gUAACEAAABA6CYATwAAANYFAAAhAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheW1pZCA+IGxlbgAAAOjoJgAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAD86CYATQAAAOwDAAArAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9kcmlmdC5ycwBc6SYAWwAAAP8AAAAZAAAAXOkmAFsAAADyAAAAEgAAAFzpJgBbAAAAzgAAACQAAABc6SYAWwAAANEAAAAkAAAAXOkmAFsAAABAAAAAIgAAAC9ydXN0Yy8yZTY4ODJhYzViZTI3YTczMjkzZDZmN2FlNTYzOTdmZGYzMjg0OGRlL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAAjqJgBfAAAATgAAAB8AAAAI6iYAXwAAAEgAAAAXAAAAAAAAAAQAAAAEAAAAYAAAAAAAAAAEAAAABAAAANwEAADdBAAACAAAAAQAAADeBAAA3wQAAAwAAAAEAAAA4AQAAN8EAAAMAAAABAAAAJcCAADgBAAAuOomALYCAADhBAAAuAIAAOIEAAC5AgAA4wQAABQAAAAEAAAA5AQAAOMEAAAUAAAABAAAAJgCAADkBAAA9OomALYCAADlBAAA5gQAALYCAAC5AgAARXJyb3JJZGVudEFycmF5UmVzdE9iamVjdEFzc2lnbkludmFsaWRFeHByL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnNa6yYASgAAAGIDAAAJAAAAL3J1c3RjLzJlNjg4MmFjNWJlMjdhNzMyOTNkNmY3YWU1NjM5N2ZkZjMyODQ4ZGUvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzALTrJgBLAAAAFQEAACUAAABVdGY4RXJyb3J2YWxpZF91cF90b2Vycm9yX2xlbjxpbnZhbGlkPkZyb21VdGY4RXJyb3JieXRlc2Vycm9ySW9VdGY4QmFkSnNvblZscUxlZnRvdmVyVmxxTm9WYWx1ZXNWbHFPdmVyZmxvd0JhZFNlZ21lbnRTaXplQmFkU291cmNlUmVmZXJlbmNlQmFkTmFtZVJlZmVyZW5jZUluY29tcGF0aWJsZVNvdXJjZU1hcEludmFsaWREYXRhVXJsQ2Fubm90RmxhdHRlbkludmFsaWRSYW1CdW5kbGVNYWdpY0ludmFsaWRSYW1CdW5kbGVJbmRleEludmFsaWRSYW1CdW5kbGVFbnRyeU5vdEFSYW1CdW5kbGVJbnZhbGlkUmFuZ2VNYXBwaW5nSW5kZXhJbnZhbGlkQmFzZTY0U29tZWludmFsaWQgdXRmLTg6IGNvcnJ1cHQgY29udGVudHMA6+MmADwAAAB4CAAAIgAAAOvj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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////z8//////z8//6r///8/////////31/cH88P/x/cHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBP//f////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAE//9/////f///////////////////////////////////////////////////////////////////////DwD//3/4//////8P////////////////////////////////w/8DAB9QAAAAAAAAAAAAAAAAAAAAAN+8QNf///v///////////+//////////////////////////////////8P/AwAfUAAA///////////////////fvMDX///7////////////v///////////////////////A/z///////////////////////////7///9/Av//////AQAAAAAAAAAA////hwcA//////////////////////v8///////////////////////////+////fwL//////wH+/////7+2AP///4cHAAAAAAD//////wcAAADA/v//////////////LwBgwACcAAD9////AAAA4P////////////8/AAIAAPz///8HMAQAAP8H////////////w////////////////++f//3/nwAA/////////+f///////////////8DAP///////z8k//8/BBABAAD///8B/wf///9+AAD//////wMAAAAAAADw////////IwAAAf8DAP7/4Z/5///9xSMAQACwAwADEP//////PwAA////D/8H////foD////////////7////////////////////z//+/++f+f///cXzn3mAsM//A1Dgh/n///1tAwAAAF4AABwA4L/7///97SMAAAEAAwAAAuCf+f///e0jAAAAsAMAAgDoxz3WGMf/AwAAAQAAAAAA7of5///9bdOHOQJewP8/AO6/+////e3zvzsBAM//AP7un/n///3t85854LDP/wIA7Mc91hjH/8PHPYEAwP8AAODf/f///f8jAAAAJwMAAADh3/3///3vIwAAAGADAAYA8N/9/////ycAQHCAAwAA/OD/f/z///svfwAAAAAAAAD/3/3///3/8989YCfP/wAA79/9///97/PfPWBgz/8OAP/f/f//////333wgM//APzu/3/8///7L3+EX//A/wwA/v//////DQB/AAAAAAAAANb3//+v/w0gXwAA8AAAAAABAAAAAAAAAP/+////HwAAAB8AAAAAAAAAAAAAAAAAAP7///////8H/3//AwAAAADW9///r///P19///MAAAAAAQAAA/8DoML//v///x/+/9////7///8fQAAAAAAAAAD//////wcAgAAAPzxiwOH/A0AAAP////+/IP//////9////////////////////////////////////////////////////z8AAP///////////P///////wAAAAAA/w////////////8D////////////P/////+/IP//////9///////////////////////////////////////////////////fwD//z8A/wAAAL////////0HAAAAAAAAAAD///////////89fz3//////z3/////PX89/3//////////Pf//////////BwAAAAD//wAA/////////////z8/////////////PX89//////89/////z1/Pf9//////////z3//////////+cA/gMA//8AAP////////////8/P/7/////////////////////////////////////////////////////////////////////////////////////////////////////////////AwAAAAAAAAAAAAAAAP////////////////+f///+//8H////////////x/8B//8DgP//AwD//wMA/98BAP///////w8AAACAEAAAAAD/////////////////n////v//B////////////8f/Af//P4D//x8A//8PAP/fDQD/////////////jzD/AwAAAAAAAP//////////////Af//////Bf//////////PwD///9/AAAAAAAA////Px8A//////8P////AwAAAAAAAAC4/wP//////////////wH//////wf//////////z8A////f/8P/w/A/////z8fAP//////D////wP/BwAAAAD//38A////////HwAAAAAAAAAAAIAAAAAAAAAAAAAAAOD//////w8A4B8AAAAAAAD4////AcAA/P////8/AAAA////D/////////9/////n/8D/wOAAP+//38AAAAAAAD///////////8f/wMA+A8A//////////////////8PAP////8PAAAAAOAA/P///z//B///////5wAAAAAA3m8E////////////////////////////////AAAAAAAAAAD/////////AP/j//////8//wf//////+cAAPf/////B////////////////////////////////////////////////////////////////////////////////////wcAAAAAAAAAAAAAAAAAAAKAAAD/HwAAAAAAAAAAAAAAAIT8Lz9Q/f/z4EMAAP//////AQAAAAAAAAAAAAAAAAAAADAAAAAAAIABABAAAAACgAAA/x8AAAAAAAD/H+L/AQCE/C8/UP3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAP////////////////////////////////////8feAwA/////78g/////////4AAAP//fwB/f39/f39/fwAAAAD/////////////////////////////////////H/gPAP////+/IP////////+AAID//38Af39/f39/f3//////4AAAAP4DPh/+////////////f/j+//////////////fg///////+/////////////38AAP////8AAAAAAAD//+AAAAD+/z4f/v///////////3/+/v//////////////4P///////v////////////9/AAD/////AAAAAAAA/////////////////////////x8AAAAAAAAAAP//////P////////////////////////////////////////////////////////////////////////////////////wD/H///AAwAAP//////fwCA////P/////////////8AAAAAgP/8////////////////+f////////8/6x8AAPz//x////8PAAD////////wv///////////////////AwAAAID//P////////////////n/////////P+sfAAD8/7v3//8HAAAA////////DwD8//////8PAAAAAAAAAPxoAPz//z8A//9/AAAA////H/D//////wcAAIAAAN//AHz//////xAAAP///////w8A//////////8/AP8D////6P//////P/////8PAP///x///////////wGA/wP///9///////8BAAD3DwAA//9/xP///////2I+BQAAOP8HHAB+fn4Af3////////f/A///////////////////BwAAAP///////38A/z//A///f/z//////////wcAADj//3wAfn5+AH9////////3/wP///////////////////83/wP/////////////////P/////////////////8DAAAAAH8A+KD//X9f2/////////////////8DAAAA+P///////////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj//////wAAAAAAAAAAAAAAAAAA3/////////////////////8fAAAAAP7//wf+//8HwP////////////9//Pz8HAAAAAD//wAA//8YAADgAAAAAN//////////////////////HwAA/wP+//+H/v//B+D/////////////f/z8/BwAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP////8A4P///wf/////PwD///8//////w//PgAAAAAAAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAEAAAD/////AOD///8H//////8H////P/////8P/z4AAAAAAP////////////////////////8/AAD/////D/////8P//////8A////////DwD/9//3t//7//sb////////DwD/////////////////////////P/8D/////w//////D///////AP///////w8A//f/97f/+//7G////////w8AP/3/////v5H//z8A//9/AP///38AAAAAAAAAAP//NwD//z8A////AwAAAAAAAAAA/////////8AAAAAAAAAAAAEA7/7//z8AAAAAAP///x////8fAAAAAP/+//8fAAAA////////PwD//z8A//8HAP//AwAAAAAAAAAAAAAAAABv8O/+//8/hwAAAAD///8f////HwAAAAD//v//fwAAAP///////z8A//8/AP//BwD//wMAAAAAAAAAAAAAAAAA////////////AQAAAAAAAP///////wcA////////BwD/////DwAAAAD8//8/gP//PwAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAD///////8HAP///////wcA//////8A/wP/////P77//z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8DAwAcAAAAAAAAAP///x+AAP//PwAAAAAA//8DAAAAAAD//x8AAAD//38AAAAAAAAAAAAAAAAAAAAAAP//////GwMAHAAAAAAAAPD///8fgAD/////AQAAAP//PwAAAAAA//8fAAAA//9/APj///////8AAAAAAAAAJgD4//////8AAAAA////AQAA+P///38AAACQAP////9HAPj//////wcAHgAAFAAAAAD//////////38AAADA/z+A/////////wcEAP///wH/A////////9//8AD/////TwD//////////x/e/xcAAAAA///7//8PAIABAAAAAAAAAH+9/7//Af//////fwAAAADgn/n///3tIwAAAeADAAAA/0v/////vwAAAAoAAAAAAP//+//////AAwAAAAAAAAB/vf+//wH/////////B/8D75/5///97fufOYHgzx8fAP9L/////7//pfcPAAYAAAD///////8fAIAHAIADAAAA////////AACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////38AAAAAAA8AAAAA////////////B//DAwAAAP//////////vwD/AwAAAAAAAAAAAAAAAAAAAAAAAAAA////////P/8BAAA/AAAAAP///////wAAEAAAAAAAAAD//////wcAAQAAAAAAAAAA////BwAAAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////xEA/wMAAAAA/////////wH/A///DwAAAP///+f/D/8DfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8PAAAAAAAAAAAAAAAAAAD//////////wAAAIB/8m////8AgAIAAAAAAAAAAAAAAP/8/////wEACgAAAP////////8HAAAAAAAAAAAAAAAA////////////AwCAf/Jv////v/kPAP8DAAAAAAAAAAD//P///////BsAAAAB+P////8HBAAAAfD//////wMAIAAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAA/////////3+AAP///////////yMAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQD/A//9////fwAAAQAAAAAA/P///wAAAAAAAAAAAAAAAAAAf/v/////AQBAAAAAv/3///8DAAEAAAAAAAAAAAAAAAD//f////9//wEA/wMAAPz////8///+fwAAAAAAAAAAAH/7/////3+0/wD/A7/9////f/sB/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//BwD0//3///8PAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//38A///9/////8cHAP8HAAAAAAAAAAAAAAEAAAAAAAAAAAD/////////////////fwAA////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8BAP///////wAAfgAAAP//////////////////////////////////////////////////////////////////////////BwAEAAAAJwDwAP///////////////////////////////wAA//8/AP//////////////////////////////////////////////////////////////////////////////A///////////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////Af///38AAP///////////38AAP///z8AAP///////wAADwAAAPj//+D//wAAAAAAAAAAAAAAAAAA/////////wH///9//wP///////////9//wP///8/HwD///////9/AA8A/wP4///g//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////x8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8f/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAD///////////8HAQAAAAAAAAD4/wAAAAAAAAAACwAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA////////////h/////////+A//8AAAAAAAAAABsAAwD//////////////////////////////////z8AAAAAgP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvb/////////////////////////////////////////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////z///38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////8H/x//Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4wf45w8AAAA8AAAAAAAAAAAAAP////////////////8H/x//Af9jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/4AcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf2//fwAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/A//////////////f///////////fZN7/6+//////////v+ff3////3tf/P3//////////////////////////////////////////////////////z/////9///3////9///3////9///3////9//////f////3///cPAAAAAAAA//////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3z////////////////3/4//////8fIAAQAAD4/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////8AAAAAAAAAAP////////8/AAAAAAAAAAAAAAAAAAAAAAAA//////8fgD8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////52wf/////////PwAAAIAAAAAAAAAAAAAAAAAAAP//////H/8//0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwAA//////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///38AAP////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////B////////////////////////////////x8AAAAAAAAA//////////8PCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////8fAH8AAAAAAP///////////w//AwAAAAAAAAAAAAAAAAAAAAAAAAAA7////5b+9wqE6paqlvf3Xv/7/w/u+/8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAA////////////////////////////////////////////////////////////////////////////////AQD//////z////////////////////////////////////////////////////////////////////////////////////////////8H////////////////////////////////////////////////////////AwD/////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAP//////////////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgIDBAUGBwgJCgsMDQICAgICAgIOAgICAgICAg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAgMCAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgIrLAICAgItLgICAi8wMTIzAgICAgICNAICNTY3Ajg5Ojs8PT4/OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUACAkFCAgJDREVGR0gCSTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI5OTk5SwICAgICTE1OTwICAlACUVICAgICAgICAgICAgICU1QCAlUCVgICV1hZWltcXV5fYGFiYwJkZWZnAmgCaWprbG0Cbm9wcQJycwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQICAgICAgICAgICAgICAgICAnZ3AgICeAICAnl6OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5e3x9AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn45OX85OYACAgICAgICAgICAgICAgICAgICgQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgKDhIUChgICAgICAgICAgICAgKHiAICAgICAgICAgKJincCAosCAgKMAo0CjgICAo+QAgICAgICAgICAgICApGSApOUApWWl5iZmpucAp0CAp6foKECAgICAgICAgICOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5oh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAowICAgKkpQIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICpqeoqaqrrC6tOa6vsLGyswICAgICArQCAjU2NwI4OTo7PD0+tTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUsCAgICArZNTreJincCAosCAgKMAo0CjgICAo+QAgICAgICAgICAgICApGSuLmUApWWl5iZmpucAp0CAp6foKECAgICAgICAgICVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVUVAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBAAAAAAAAAAAAABBBEFVVVVVVV1VVVVVVVVVVVVFVVQAAQFT13VVVVVVVVVVVFQAAAAAAVVVVVfxdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFABQAFARQVVVVVVVVVRVRVVVVVVVVVQAAAAAAAEBVVVVVVVVVVVXVV1VVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVVVUVAABVVVFVVVVVVQUQAAABAVBVVVVVVVVVVVVVAVVVVVVV/////39VVVVQFQAAVVVVVVVVVVVVVQUAAAAAAAAAAAAAAAAAQFVVVVVVVVVVVVVVVVVFVAEAVFEBAFVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVEAVRVUVUVVVUFVVVVVVVVRUFVVVVVVVVVVVVVVVVVVVRBFRRQUVVVVVVVVVVQUVVVQVVVVVVVVVVVVVVVVVVVVAEQVFFVVVVVBVVVVVVVBQBRVVVVVVVVVVVVVVVVVVUEAVRVUVUBVVUFVVVVVVVVVUVVVVVVVVVVVVVVVVVVVUVUVVVRVRVVVVVVVVVVVVVVVFRVVVVVVVVVVVVVVVVVBFQFBFBVQVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVUURAUEUFVBVVUFVVVVVVVVVVBVVVVVVVVVVVVVVVVVFUQBVFVBVRVVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVRRUFRFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAEBVVRUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAAFRVVQBAVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVRFRVVVVVVVVVVVVVVVVVQEAAEAABFUBAAABAAAAAAAAAABUVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAQQAQUFVVVVVVVVQBVRVVVUBVFVVRUFVUVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVBVBVVVVVVVUFVFVVVVVVVQVVVVVVVVVVBVVVVX///ff//ddfd9bV11UQAFBVRQEAAFVXUVVVVVVVVVVVVVUVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVUVUVVAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcVFFVVVVVVVVVVVVVVVVVVRQBARAEAVBUAABRVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAFAAAABVVVVVVQBVVVVVVVVVVVVVVVUAAFAFVFVVVVVVVVVVFQAAVVVVUFVVVVVVVVUFUABQVVVVVVVVVVVVVVVVVUVQEQBVVVVVVVVVVVVVVVVVVQAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAQAVFFVVFBVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAAAAAAABVVRUAVVVVVVVVBUBVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAABUVVVVVVVVVVVV9VVVVWlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf1X11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV9VVVVVVVfVVVVVVVVqqpVVVVV////VVVVVVVVVVVVVdVVVaWq1VVVVV1V9VVVVVV9VV9VdVVXVVVVVXVV9V11XVVd9VVVVVVVVVVXVVVVVVVVVVV31d9VVVVVVVVVVVVVVVVVVVX9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVddVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQVVVVVVVVVVVVVVVVVVVV/f///////////////19V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAKqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVqqqqqqqqqqqqqqqqqqoKAKqqqmqpqqqqqqqqqqqqqqqqqqqqqqqqqqpqgaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqaqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqKqqqqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVZWqqqqqqqqqqqqqqmqqqqqqqqqqqqqqVVWqqqqqqqqqqqqqqqqqqqpWqqqqqqqqqqqqqqqqqmpVVVVVVVVVVVVVVVVVX1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVAAABQVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVFRRVVVVVVVVVBVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVQAAAABQVUUVVVVVVVVVVVVVBQBQVVVVVVUVAAAQVVVVqqqqqqqqqlZAVVVVVVVVVVVVVVUVBVBQVFVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVUBQEFBVVUVVVVUVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVBBRUBVFVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRRVVVVVaqqqqqqqqqqqlVVVQAAAAAAQBUAAAAAAAAAAAAAAABVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMAADwqqpaVQAAAACqqqqqqqqqqmqqqqqqaqpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVlVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAVQFBVQBVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVAVBVVVVVVVVVVVVVVVVVVRVUVVVVVVVVVVVVVVVVVVVVVVVVBQBVVVVVVVVVVVVVVVVVVVVVVQUAAFRVVVVVVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVUAAABAVVVVVVVVVVVVVRRUVRVQVVVVVVVVVVVVVVUVQEFVRVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVRUAAQBUVVVVVVVVVVVVVVVVVVUVVVVVUFVVVVVVVVVVVVVVVQUAQARVARRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVQAFVFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFRUAQFVVVVVVUFVVVVVVVVVVVVVVVVUVRFRVVVFVFVVVVQUAVABUVVVVVVVVVVVVVVVVVVVVVRQARBFQBUBVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAFRFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVFABEEQRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUFUFUQVFVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVRUAQBFUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVRAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEQUQAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQAAQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUVABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUABVVUVVVVVVVVVQEAQFVVVVVVVVVVVRUAFEBVFVVVAUABVVVVVVVVVVVVVQAAAABAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUERFVVVVVVVVVVVVVVVVVVVVVVVQBAABBVVVVVVVVVVVVVVVVVVVVVVVVVVQUAAAAAAAUABEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBQEUQAABVVVVVVVVVVVVVVVVVVVVVVVVQEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVUVVVAVVVVVVVVVVVVVVVVBUBVQFVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQAAAFBVVVVVVVVVVVVVVVVVVVVVVQUAAFABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFRVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVRVAVVVVVVVVVVVVVVVVVVVVVVVVVapUVVWgalVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVVZWqqqqqqqqqalVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqpqmmqqqqqqqqqqmpVVVVlVVVVVVVVVWpZVVVVqlVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVUEAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAFAAAAAAAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBUAEAAAAAQAEAVVVVVVVVVQVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqmpVVaqqqqqqalVVAAAAAAAAAAAAAAAAAEAVAAAAAAAAAAAAAAAAVFVRVVVVVFVVVVUVAAEAAABVVVVVVVVVVVVVVVVVVVVVVVVVVQBAAAAAABQAEARAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRVUFVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVdf3/f1VVVVVVVVVVVVVVVVVVVVVVVfX///////9uVVVVqqq6qqqqqur6v79VqqpWVV9VVVWqWlVVVVVVVf//////////V1VV/f/f///////////////////////3//////9VVVX/////////////f9X/VVVV/////1dX//////////////////////9/9//////////////////////////////////////////////////////////////X////////////////////X1VV1X////////9VVVVVdVVVVVVVVX1VVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVXV////////////////////////////VVVVVVVVVVVVVVVV//////////////////////9fVVd//Vf/VVXVV1X//1dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9VV1VVVVVVVf//////////////f///3/////////////////////////////////////////////////////////////9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////V///f/X/////////////////f1f9////1///f9X//1dVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVmWVWGqpVmqVVVVVVWVVVVVVVVVVZVVVQAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAABVVVVVVZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUAlmpaWmqqBUCmWZVlVVVVVVVVVVUAAAAAVVZVValWVVVVVVVVVVVVVlVVVVVVVVVVAAAAAAAAAABUVVVVlVlZVVVlVVVpVVVVVVVVVVVVVVWqqqpqqqqqVaqqWlVVVVlVqqqqVVVVVWVVVVpVVVVVpWVWVVVVlVVVVVVVVaaWmpZZWWWplqqqZlWqVVpZVVpWZVVVVWqqpaVaVVVVpapaVVVZWVVVWVVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVZVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWqqqqqqqqqqqpWVVWqqqqqpVpVVZqqWlWlpVVaWqWWpVpVVVWlWlWVVVVVfVVpWaVVr1VmVVVVVaqqVVVmVf///1VVVZqaappVVVXVVVWlqtVVVaVdVfVVVVVVvVWvqrqqq6qqmlW6qvquuq5VXfVVVVVVVVVVV1VVVVVZVVVVd9XfVVVVVVVVVaWqqqqqqqqq/VVVVVVVVVdVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVXrVpVVVVVVVVVVVWqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjMAAMCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFmqqqpWqqqqqqqqqlqqqqqqqqqqqqqqqqqqqlpVqqqqqqqqqrr+/7+qqqqqVlVVVVVVVVVVVVVVVVX1////////JQUAAAwAAAAEAAAALQQAACYFAACvAgAAMDEyMzQ1Njc4OWFiY2RlZi9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3V1aWQtMS4xNi4wL3NyYy9mbXQucnMA6DwnAFsAAAC7AAAADQAAAOg8JwBbAAAAswAAABUAAADoPCcAWwAAALYAAAANAAAA6DwnAFsAAAC3AAAADQAAAAAAAAD//////////4g9JwAAAAAAAAAAAAAAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhkZS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAKA9JwBPAAAAGQEAABkAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkAPicAJAAAALRBJwBQAAAAuQIAAAkAAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwMC9zcmMvY29udmVydC9zbGljZXMucnNKc1ZhbHVlKCmrPicACAAAALM+JwABAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NhY2hlL2ludGVybi5ycwAAAMQ+JwBtAAAAGgAAACsAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZAAAKAUAAAQAAAAEAAAAKQUAACoFAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAIw/JwAqAAAAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzwD8nAGAAAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AAAwQCcADgAAAMA/JwBgAAAAegIAAA0AAAAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNTAvc3JjL3F1ZXVlLnJzAAAAWEAnAG0AAAAlAAAALgAAAFhAJwBtAAAAKAAAACkAAABYQCcAbQAAAD4AAAAaAAAAWEAnAG0AAAA+AAAAJwAAAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC41MC9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAAAIQScAeQAAACIAAAAVAAAALAUAAC0FAAAuBQAALwUAAAhBJwB5AAAAZwAAACUAAAAvcnVzdGMvMmU2ODgyYWM1YmUyN2E3MzI5M2Q2ZjdhZTU2Mzk3ZmRmMzI4NDhk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AAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgA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JgCAyyYAgssmAITLJgCGyyYAicsmAIzLJgCQyyYAkssmAJTLJgCWyyYAmcsmAJzLJgCfyyYAAQAAAAEAAAABAAAAAQAAAAYAAAAEAAAABgAAAGfLJgBoyyYAacsmAGrLJgBryyYAccsmAHXLJgAFAAAABgAAAAgAAACV4iYAmuImAFPiJgAGAAAACgAAAAkAAAAJAAAAAgAAAAUAAAAJAAAABQAAAAYAAAAGAAAAAgAAAAMAAAAIAAAABwAAAAcAAAAJAAAABgAAAAgAAAAHAAAAAwAAAAYAAAAGAAAABgAAAAQAAAAJAAAABgAAAAcAAAAFAAAACAAAAAUAAAAJAAAABAAAAAYAAAACAAAADgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAADQAAAAsA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", "base64"); + var bytes = Buffer2.from("AGFzbQEAAAAB7QROYAAAYAABf2AAAX5gAX8AYAF/AX9gAX8BfmABfwF8YAJ/fwBgAn9/AX9gAn9/AX5gAn9/AXxgA39/fwBgA39/fwF/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AEf39/fwF+YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAd/f39/f39/AGAHf39/f39/fwF/YAh/f39/f39/fwBgCH9/f39/f39/AX9gC39/f39/f39/f39/AX9gDX9/f39/f39/f39/f38AYA5/f39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2ATf39/f39/f39/f39/f39/f39/fwF/YBd/f39/f39/f39/f39/f39/f39/f39/fwF/YAl/f39/f39+fn4AYAV/f39/fgBgBn9/f39+fwBgBH9/f34AYAZ/f39+f38AYAN/f34Bf2AEf39+fwBgBH9/fn8Bf2AFf39+f38AYAZ/f35/fn8AYAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAN/fn8Bf2AEf35/fwBgBH9+f34BfmADf35+AGAEf35+fwBgBX9+fn5/AGAFf35+fn4AYAR/fX9/AGACf3wAYAN/fH8AYAN/fH8Bf2AEf3x/fwBgBH98f38Bf2ABfgBgAX4Bf2ABfgF+YAJ+fwBgAn5/AX5gA35/fwF/YAN+f34BfmACfn4AYAJ+fgF+YAN+fn8AYAR+fn9/AX5gBH5+fn8BfmAHfn5+f39/fwF+YAF8AX9gAXwBfGACfH8Bf2ACfH8BfGACfHwBfGADfHx8AXwCyxo9GF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2Vycm9yX25ldwAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9nZXQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfaXNTYWZlSW50ZWdlcl8zNDNlMmJlZWVlY2UxYmIwAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21faTY0ADwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JpbmRnZW5fYmlnaW50X2Zyb21fdTY0ADwYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2xlbmd0aF9lMmQyYTQ5MTMyYzFiMjU2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX2l0ZXJhdG9yXzlhMjRjODhkZjg2MGRjNjUAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18lX193YmdfaW5zdGFuY2VvZl9NYXBfZjM0NjljZTIyNDRkMjQzMAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfM2YxZDBiOTg0ZWQyNzJlZAALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcASBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18VX193YmluZGdlbl9zdHJpbmdfbmV3AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fE19fd2JpbmRnZW5faXNfZmFsc3kABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18kX193YmdfZ2V0d2l0aHJlZmtleV8xZGMzNjFiZDEwMDUzYmZlAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9fd2JpbmRnZW5faXNfc3RyaW5nAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX2dldF9iOWI5MzA0N2ZlM2NmNDViAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JnX3RvU3RyaW5nXzUyODU1OTc5NjA2NzZiN2IABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3XzQwNWUyMmYzOTA1NzZjZTIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3Xzc4ZmViMTA4YjY0NzI3MTMAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdfc2V0XzM3ODM3MDIzZjNkNzQwZTgACxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9pc191bmRlZmluZWQABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18NX193YmluZGdlbl9pbgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fc3RyaW5nX2dldAAHGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diaW5kZ2VuX2lzX29iamVjdAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diaW5kZ2VuX2pzdmFsX2VxAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld18yM2EyNjY1ZmFjODNjNjExAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2NhbGxfNjcyYTRkMjE2MzRkNGEyNAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfR0xPQkFMXzg4YTkwMmQxM2E1NTdkMDcAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18yX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF9USElTXzU2NTc4YmU3ZTlmODMyYjAAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193Ymdfc3RhdGljX2FjY2Vzc29yX1dJTkRPV181ZGUzNzA0M2E5MWE5YzQwAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fK19fd2JnX3N0YXRpY19hY2Nlc3Nvcl9TRUxGXzM3YzVkNDE4ZTRiZjU4MTkAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfZ2V0XzY3YjJiYTYyZmMzMGRlMTIACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfbmV4dF8yNWZlYWRmYzA5MTNmZWE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2lzQXJyYXlfYTFlYWI3ZTBkMDY3MzkxYgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19jYWxsXzdjY2NkZDY5ZTA3OTFhZTIADBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjgABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18RX193YmluZGdlbl9tZW1vcnkAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdfc2V0XzY1NTk1YmRkODY4YjMwMDkACxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfbmV4dF82NTc0ZTFhOGE2MmQxMDU1AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2RvbmVfNzY5ZTVlZGU0YjMxYzY3YgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3diZ192YWx1ZV9jZDFmZmE3YjFhYjc5NGYxAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fLF9fd2JnX2luc3RhbmNlb2ZfVWludDhBcnJheV8xNzE1NmJjZjExODA4NmE5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGV9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXEACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl9lMTQ1ODU0MzJlMzczN2ZjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2VudHJpZXNfMzI2NWQ0MTU4YjMzZTVkYwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxBfX3diaW5kZ2VuX3Rocm93AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9fd2JpbmRnZW5fYmlnaW50X2dldF9hc19pNjQABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18SX193YmluZGdlbl9jYl9kcm9wAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX3RoZW5fNDRiNzM5NDZkMmZiM2U3ZAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3diZ19xdWV1ZU1pY3JvdGFza185N2Q5MmI0ZmNjOGE2MWM1AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVlTWljcm90YXNrX2QzMjE5ZGVmODI1NTI0ODUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmdfcmVzb2x2ZV80ODUxNzg1YzljNWY1NzNkAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNTQ0MgAMA7sluSUOBxERCwcRBwsOCwsLCwcHCwcHDhELCwcMBw4HBwcLBwcOEw4HEQ4HBwcLBw4LBwcHBw4HDgsICw4RBzoHCwcIBwsHEy8LDg8VBxMHBAcLBxEHBwcLCwsOBwcHCAcTBwMHBwsHDgsODgcHCAsHBxMLDgcOEwcHBxMHBwcHBAcHBwcHEwsHBwsHBxEHBw4VBwcHBxoLCwcTBxMIBxMDCwsLExMOBwsHEREhBwMLBwcLDgcHBwcRBwsHBwcHBw4TDAcTBwcHAwcLAwsHTAcDDgMTBwcOBwcHCwcOBwcHDhEHSggDDgcTDgsHBxEICwcHCxERCw4OCAcMBwcMDAQHDBEHGgwIEQgIBwgHDggICAsLCwsIDgcHBxERCAcRDgcDBwsIDgQOBxMRBwcOFQMHBwcHBwsHBwcHBwEHDgcHBwcHCxEHBwwICAMHBxERBwcLFQcICwsHTQcRBw4ODgcLBwMRBxEHCwcEEw4LCAQHBwsIBAcLBwMOBwsLCwsHBwsHAQcONA4HDg4HCBUHCwgHBwsMCAcHDAcECwcHBwcLBwsHBwsLDgsHBAMHBwQTDAcHBwsHCwcHBwcLBwMEDg4HCwMHCwcHBwcHCw4OBwcHBwQDCAcEBAcIEQcLEQwLNwcHBwcHCwcDCwsDAwMDCw4EBwcHBwMDBwMHDwcHBxUhAwsNDg8LCwsOBwcHFgsLDxEMCwgPCwcVEwcHBAcEBAcHBwc4BxsEDg4HBwMHBw4EAwcHFRMIBwcVBAcLEwsODA8LAwsHCw4DCBEDCwcLBwcHBwcHCwwHBwcMCAMMBwcIBwcHBwcIBzoHBw4HBwMMCgwLCwcOBw8DCAgHBwMHDggHBwcHBwcHDgQHBwcLDg4LAwcHCwcDAwcDCAgDBwgDGAsMDAcICAsHBwMHDgcHDAMDCw4HCw4LDAMHCwsDDgMHCAsHCwcIBwcLBwcLAwcXBAgHEwcOBwcMESgMBwgHAwcICygOCAcHDA4OBw4HBwcLTAsDBwgODgsLBQgICxEEBwQDCAgHCw8LCBMMQQgPBzAUBwMHAwcHFQcLCxMTBwcOBwcIDAcIBywHCwcODggTAxELBwcOBxEHBwgHBw4LLQgHBwsHBwcHAy4HBwcHCwcTBwgHDgcRCwgDBwgIBwcHBwcMBwMDDgQTDgsHEQgHBwcOBxMICBELEQcIFRUHCwcLCwcLBwsLBwcHBwcHBwgLBwcOCEVFExEIFQsTRRUHEwcHBAcHEwcHBwcHCwQDCxMLDg4DDhMHAwcHEwcTBwsHMQcOBwsVBwcREw4HBw4IDAcHCwcIDAsHCwcLBwcVBAMOBwcHAwQHCxMHCwsHCwgDCwcHCwcHCAcHBwcIDg4LBwsLBwwHBwcHCAgHBwc+BwcLEwcLAwsOHw4HBwcHCwsHBwsLCwcDBxMDCwsICwcMFgcHDhMODg4OEwQLBwcLBwQHSQcLEQQHBwcOCwcHBwcDBwcECA4HBwsIBwMDBwcHBw4ICwcHBwcEBAQEBwcHByIDCwsHBwcLDhMHDhEOCAgHBwcLCxMLBAsLBAcIBw8EBAsHCxMHEQ4OIAMHBwMLDAgIBwMHBwgOJQsHAwcHCwsHBwcDCAcHAwcOCBEHAwcVCwMEBwgIAwsIAwsIBwcMAwcEBwMOERMICAMIBwsOEgQECwcLEQcHDxUECAsHBwgDCAsDBwcHBwcOCwwOBwcLDAcHBwgDBwgIBwcLCwsFBwcHBw8OEwwDBwgHBwsjBwgHCAsHCwcHAAgDCAgLAwcDBwcLCAcLCBEDCwsDBwcECAgLDw4UBwMHBxMHEQsMCAgMBwMHBwgHBwsLBwQLBwgHAwQEBwcHDhIODggHCwMIBwcHEwgEAwoICAgTDgMICwMHBw4WCAMODggICAgICAgOCwcHAwcDCxEHBxcOCwsIBwMHBwgDCwMLEwsOCwsLBwcDCwMTAwQHBwMIERMTCAgHCBMLEwcTBwcTCAcHBw8LCAMMExMPDw8HBwMDCAgMCQMHDAwOBQgLBwMLDg4IBwcDCwcHBwcLAxMTEwgDBwcHBy0HBwcEBxIHBwgICAcHCAcHBwcLCwcLCw4HDAgMDAcHBwcREQQHBQcHBx4LBwsHBwcHBwcHAwcIBwcLCA4ICwgHBwsRCw4DAwcHBwgICAgHAwsHCysRCAgIBwcHAwgICAgDCAgIAwMLBxEdAw4LBwcIBwcHBw4LBwwHBw8HDwgOBwsLBxMLLAcDCAMIBwQHFQkHAwQECA4OCCYLAwQIAwsLCw4THAcRDA4HCwgICAcLERERBwQVDg4EBAcDBActBwMDAwgLExMHCwcDAwgLCAcLCA4HBwcHBwwMCwQLCw4ZCw8RAwMDBAgIBzYHCwcRCAQMAwQDLwgHBwMTExMIFRMHBAsHBw4OCAgHBxYOBw4HCA4DAwgICAgICAMHAwMHAwcLBwsRAwcHAwMMEwMECAgOCAcHCA4ICAcHEwwHDAsIAwgLCAgHAwcTAw4OCEAHBA4OCAcDBAwDAwcLBwcHCwcOBwcHDAQHCAgICAcHBwcICwcIEQsLAwMDCAgICAgICAMICwMHAw4HDxERDhEHCAMOBxMLB0sHCAQLBA0RDgMHDgQEBAgLCAsHCAgHBAgHBwgICAgICAgICAgICAgICAgHCAgICAgICAgICAgICAgHBwcOBwcLEQcHCwcDAwgITExMBwcICAgICAcHBwcICAgIDAwRCAgICAMLDAMICAgICAgICAgICAgICAgIBwMICAgICAgICAgICAgICAcHBwsOCwQPEwMTAwcODAcIAwwDB0wHEwcHLQsLBwcHDgcLBAMDDAMDCAMIAwMOCAsHBw4HCCsDDAwLLUxMBwMLCwsOCAQTAw4ICAgHCAgHBxEOCwcHAwsHDgcDCwcDBwgrEAcICAgICAgHEAsHCwsLCwcDBwcDAwMOBwQLCwcHBwcOAwsICAgSEQcDAxMHCw8HBwcVDDQLKwcHDAcLBwsIAwcIAwQREQgMEQsHAwcHAwMHBwcIDAgIJAsHCyQkBwcHBAcHByQLBw8HAwgHAwgHCAgMDgsEDggOAwMDCwcHAwMHBwcHBysHCBMHCwgIBwcDDAMDAxEECAgIEQsHAwcPBwcIBAMMDAwHEwcLAwQHBwwHCAgIAwcDCwcDAw8DAwcMAwMLAwcEAwMDCAgICw8HBwcMDg4ICAgIBwgICAgHBwMHBwcHBwcHCAgICAcIRgsLAwMICAgICAgICAgICAgILQgICAgICAgDCAgICAgIBwMDDggICwsHBwcODg4EAw4TCw4ICwQOCwcHAwMHBwcHBwQHAwMrDwMIBw8DBwgMAwcDCAgICAgICAgICAgIQgcHBwMHBwMHBwgIBggHBxEIDwgGAwcLAwMOEwcMDAcLBAgICAgICAgICAgIBwcHCwcHBAcHCAcOCAgIDgcECAgICAgICAgHBwQEBQQLEQgICAgzAxMMBwsODAgICAMLDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDCAgICAMLBwcHBwsHBwgICAcDCwQICAgOAwgEAwMDCAMHAw4HAwcPBwgICAcLEQgODAgDBwcHCAgICAgDAwMICAgEAwMLAwcICAgECAgICAgICAgMCAgDCAgICAgICAgICAgICAgHBwcDBwcHCwgDDxETBwcLBwgIDAgHCwsLCwcDDgcOPggICAgICAgICAMDCAgICAgICAgHAz4LAwMyMgcMCwgICAgICAw+Az4HCAgICAgICAgICAgICAMICAgICAgICAgICAgICAMICAMEAxERCBEHBw4LCwMICwsHEQsIDgsDAwMDBwcHBAgIBwcHCAgIBwcMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAMHCwsLCw4IBwcHDgcOBwgMCwsTAwEHBw4DCAcHEQMDDgQDDAgICAQDCAgEAwMDDgwDCAgIAwAEBAgIAwMHCwcHBAcMAwcHAwELBwsDCAcODAMDAwMLBwQIBwMDAwsLBwgHBwMHCAMHAwcEAwMDAwcHCwgLBwcEBwcHBwcDAwMIBwMLCAgICAgICAgHAwcECAgLCAgHDgkJCAgICAMLCwgICAgICwsHBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDAwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0HAwgECwcDAwcRCAcDAwMDAwMDAwMDAwMIAwMDAwMDBwMDAwMDAwMDBAMDAwMDAwMHAwMDAwMMAwMDAwMDAwMOAwMDAwMDAwMDAwMDAw4LCAMDAxEIEQgICAgLCwgRCw4EEw0ICAgICAgICAgICBEIBAcIBwcHCAgIPggLCBMDBAgIBwcRBwgDAwcHAwcOBAsRAwMDAwNHCAcDAwwDDD8HBwcHCAcHDgsHEQgICAsLEQ4RBxMLCAhEExMCAgICAgwCAgICAgICAgICAgICAgIDAgICAgICAgcCAgIDAxEPAwgIBwsLCBUHDgc2BwcHDwgHAwcDAgMDOwIHBwQDCwcLBwMMBw4ICAgREQwIAwkDCAgIDAgEDwQEDAMDCAgMBAQICAMEBAcHCwcHDgsODgMTCAgICAQLAxIHCAMHDwcIAwsICAgLCwsHCAhDAw49CwgMCAgICAgICAgICAgIBAcLDwcHBwcHBwcHBwcHBzQ0BwMRCAsICAsHCQwREQgIAwgLAwgIAwgICAgHBA0ICAg7BAQ7CAg7CDsIDgMIBwcHBwcHBwcICAgMCAgICAgICAgICAgDCAwMBwsIDAwHBwMHAwcIBAgICAgODAgRCAgJCAgIBAAIDwgICAcICAgICAgDCBEIBwcHAw4HDgsHDAwOAwsICwcHAwMHCwcHBwQEAwMHAwMDCwMIAwcHBwcHBwcHBwcHBwcDBwsDBwsHAwcDDAcHDg4DAwQEBwsEAwMDAwMDBwcHCwsODhEDCwMICAMDBwQHCAcRAwMDAwMHBwQHDgUDAwQHDgMPAwMHAwQDDAcBAwsLAwgTCAgHAxEDAwcHCAMDAwMECAMDDgcHBAsHCAMFCwcHAwcHBwgLAwcHBwcDBAcIAwQIBwMHBwcHBwcHDAMHBwcDAwcHBwMIBwgDBAgUDwgICAgICAMPDAgICAgICAgIDw8PAw8HDwcHCwgHDwsPDxESEhEqKREnCwMLBAsDCAsLBAgPCA0EBAQMBwcHBwcLAwMHDgsHDgQHBw8LCwMHBwQIOw4IBw0NBwgICAgIBAcDAwMHBwsLCwQDAwMDAw8HCw4FBQwHCwMDBAQEAwMIAwMDCAcIEQcDBAMEAwMHAwcLCwMDAwQICAMDCAMIPAEIAwgDAw4OCAsLBwMDCAMDAwMHBwcHBwcHBwMDAwQDBAMHAQEEAwgBCAEIBAMHAQEBAQEDAwMDAwMDAwEEAwk7AzsDAwMDAwMDAwMDAwMDAwMDAwMDAwcDAwMDCAsICAgDBwcICAMDAwMLCAgDCAgDCAgNCAgDAz4DAwMDAwMDCQcHBwcHBwcHBwMHAwMLAwcDAwcHCwcICAgICAgICAgHBwgICAgICAcLCw8IAwgICAcHCAMDAwMIAwgDAwMDAwgHCAgDBwMLCwcHBwcHAwcHBwcHBwcHAwMDAwMDDgMDAwMDAwUDBwsHBwcHBwwHDAcDCwMDEQgIBAQDAwsOAwADAwMDOwMDAwMDAwMDAwMDAwMDAwcHBwcICAcDBwsLBwgODg4ODg4ODAgHAwgDCAgLCwgLBwgIKwsLBwMDAwMIAwcHBwcEAwMDAwMDAwMDAwMDAwsDAwMHDAcHBwMABAgIAwMHBwcHBwcDDAwHBwAMCAcPDAAMAwwEDAwDAAAABwcAAAMHBwMHAwcIDAwMBwcDDAwMAAcHBwcHBwcHBwcHBwcHDA4OCAgICAgNBwMDAwsHCwsHAwwLAwMMAwcDBAMDBAQHBAQHCAgLCwwHCAMODAgIBAsECAgICAQICAgICAgEAwQEBAQICAgICAsHCAcHBwgEBAcICAgICAcECAgMDAcHBwcHBwcHBwcHBwcHBwcHBwcHBwwMDAgICAgICAgICAgICAgICAQICAgICAgICAQHCAgICAgHAwQDAwsDAwMICAdCPkIHBwcHBwcHBwcHBwcHBANNBxUIBAsCBAQEBAcDAQMCAgICAgIHBwgCAgICAgICAgIEBwgICAcDA0xMBAQEBAQIBAQEBAQEAwQEBAEEBARJBAQABAQEBAQEBAQEBAQABAQMBAQBCwcHCwQHAXABpQylDAUDAQAoBgkBfwFBgICAAQsH1AEKBm1lbW9yeQIACXRyYW5zZm9ybQC/FQ10cmFuc2Zvcm1TeW5jAO8WE19fd2JpbmRnZW5fZXhwb3J0XzAAuCITX193YmluZGdlbl9leHBvcnRfMQEAE19fd2JpbmRnZW5fZXhwb3J0XzIA+hoTX193YmluZGdlbl9leHBvcnRfMwDSGx9fX3di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4wIgBCgCmAwh5AIgBC0AnAwh5QIgBCgCoAwh5gIgBCgCpAwh5wIgBCgCqAwh6AIgBC0ArAwh6QIgBCgCsAwh6gIgBCgCtAwh6wIgBCgCuAwh7AIgBC0AvAwh7QIgBCgCwAwh7gIgBCgCxAwh7wIgBCgCyAwh8AIgBC0AzAwh8QIgBCgC0Awh8gIgBCgC1Awh8wIgBCgC2Awh9AIgBC0A3Awh9QIgBCgC4Awh9gIgBCgC5Awh9wIgBCgC6Awh+AIgBC0A7Awh+QIgBCgC8Awh+gIgBCgC9Awh+wIgBCgC+Awh/AIgBC0A/Awh/QIgBCgCgA0h/gIgBCgChA0h/wIgBCgCiA0hgAMgBC0AjA0hgQMgBCgCkA0hggMgBCgClA0hgwMgBCgCmA0hhAMgBC0AnA0hhQMgBCgCoA0hhgMgBCgCpA0hhwMgBCgCqA0hiAMgBC0ArA0hiQMgBCgCsA0higMgBCgCtA0hiwMgBCgCuA0hjAMgBC0AvA0hjQMgBCgCwA0hjgMgBCgCxA0hjwMgBCgCyA0hkAMgBC0AzA0hkQMgBCgC0A0hkgMgBCgC1A0hkwMgBCgC2A0hlAMgBC0A3A0hlQMgBCgC4A0hlgMgBCgC5A0hlwMgBCgC6A0hmAMgBC0A7A0hmQMgBCgC8A0hmgMgBCgC9A0hmwMgBCgC+A0hnAMgBC0A/A0hnQMgBCgCgA4hngMgBCgChA4hnwMgBCgCiA4hoAMgBC0AjA4hoQMgBCgCkA4hogMgBCgClA4howMgBCgCmA4hpAMgBC0AnA4hpQMgBCgCoA4hpgMgBCgCpA4hpwMgBCgCqA4hqAMgBC0ArA4hqQMgBCgCsA4hqgMgBCgCtA4hqwMgBCgCuA4hrAMgBC0AvA4hrQMgBCgCwA4hrgMgBCgCxA4hrwMgBCgCyA4hsAMgBC0AzA4hsQMgBCgC0A4hsgMgBCgC1A4hswMgBCgC2A4htAMgBC0A3A4htQMgBCgC4A4htgMgBCgC5A4htwMgBCgC6A4huAMgBC0A7A4huQMgBCgC8A4hugMgBCgC9A4huwMgBCgC+A4hvAMgBC0A/A4hvQMgBCgCgA8hvgMgBCgChA8hvwMgBCgCiA8hwAMgBC0AjA8hwQMgBCkCpAohlwQgBC8AvQohwgMgBC8AzQohwwMgBC8A3QohxAMgBC8A7QohxQMgBC8A/QohxgMgBC8AjQshxwMgBC8AnQshyAMgBC8ArQshyQMgBC8AvQshygMgBC8AzQshywMgBC8A3QshzAMgBC8A7QshzQMgBC8A/QshzgMgBC8AjQwhzwMgBC8AnQwh0AMgBC8ArQwh0QMgBC8AvQwh0gMgBC8AzQwh0wMgBC8A3Qwh1AMgBC8A7Qwh1QMgBC8A/Qwh1gMgBC8AjQ0h1wMgBC8AnQ0h2AMgBC8ArQ0h2QMgBC8AvQ0h2gMgBC8AzQ0h2wMgBC8A3Q0h3AMgBC8A7Q0h3QMgBC8A/Q0h3gMgBC8AjQ4h3wMgBC8AnQ4h4AMgBC8ArQ4h4QMgBC8AvQ4h4gMgBC8AzQ4h4wMgBC8A3Q4h5AMgBC8A7Q4h5QMgBC8A/Q4h5gMgBC8AjQ8h5wMgBEGQFWpBMGoQhhsgBEGQFWpB4ABqEOoJIBIQhhsghAIgPEEQdHIhhAIggwIgO0EQdHIhgwIgggIgOkEQdHIhggIggQIgOUEQdHIhgQIggAIgOEEQdHIhgAIg/wEgN0EQdHIh/wEg/gEgNkEQdHIh/gEg/QEgNUEQdHIh/QEg/AEgNEEQdHIh/AEg+wEgM0EQdHIh+wEg+gEgMkEQdHIh+gEg+QEgMUEQdHIh+QEg+AEgMEEQdHIh+AEg9wEgL0EQdHIh9wEg9gEgLkEQdHIh9gEg9QEgLUEQdHIh9QEg9AEgLEEQdHIh9AEg8wEgK0EQdHIh8wEg8gEgKkEQdHIh8gEg8QEgKUEQdHIh8QEg8AEgKEEQdHIh8AEg7wEgJ0EQdHIh7wEg7gEgJkEQdHIh7gEg7QEgJUEQdHIh7QEg7AEgJEEQdHIh7AEg6wEgI0EQdHIh6wEg6gEgIkEQdHIh6gEg6QEgF0EQdHIh6QEg6AEgGkEQdHIh6AEg5wEgGEEQdHIh5wEg5gEgGUEQdHIh5gEg5QEgHEEQdHIh5QEg5AEgG0EQdHIh5AEg4wEgFkEQdHIh4wEg4gEgEUEQdHIh4gEg4QEgEEEQdHIh4QEg4AEgD0EQdHIh4AEg3wEgC0EQdHIh3wEg3gEgBkEQdHIh3gEg3QEgBUEQdHIhPCDnAyCnAkEQdHIhOyDmAyCmAkEQdHIhOiDlAyClAkEQdHIhOSDkAyCkAkEQdHIhOCDjAyCjAkEQdHIhNyDiAyCiAkEQdHIhNiDhAyChAkEQdHIhNSDgAyCgAkEQdHIhNCDfAyCfAkEQdHIhMyDeAyCeAkEQdHIhMiDdAyCdAkEQdHIhMSDcAyAdQRB0ciEwINsDIJwCQRB0ciEvINoDIB5BEHRyIS4g2QMgH0EQdHIhKyDYAyCbAkEQdHIhKCDXAyCaAkEQdHIhJCDWAyCZAkEQdHIhFyDVAyCYAkEQdHIhHCDUAyCXAkEQdHIhEiDTAyCWAkEQdHIhECDSAyCVAkEQdHIhESDRAyCUAkEQdHIhFiDQAyCTAkEQdHIhGyDPAyCSAkEQdHIhGSDOAyCRAkEQdHIhGCDNAyCQAkEQdHIhGiDMAyCPAkEQdHIhIiDLAyCOAkEQdHIhIyDKAyCNAkEQdHIhJSDJAyCMAkEQdHIhJiDIAyCLAkEQdHIhJyDHAyCKAkEQdHIhKSDGAyCJAkEQdHIhKiDFAyCIAkEQdHIhLCDEAyCHAkEQdHIhLSDDAyCGAkEQdHIhhgIgwgMghQJBEHRyId0BIJYEQgiIpyEGIJcEQiCIpyEdIJYEpyEFIJcEpyGcAiAJQQJGDQMgCCAIKAIAIgtBf2o2AgAgBSEeIAYhHyALQQFHDQUMAgsgEhCGGyAJQQJHDQBCACGSBEICIZMEQQAhHkEAIR0MAwsgCCAIKAIAIgtBf2o2AgBCACGSBEICIZMEQQAhHUEAIQVBACEGQQAhHkEAIR8gC0EBRw0DCyAIIA0Q8BELIAUhHiAGIR8MAQtBACEfCyAELwDJCCAEQcsIai0AAEEQdHIhhQIgBC8AuQggBEG7CGotAABBEHRyIYcCIAQvAKkIIARBqwhqLQAAQRB0ciGIAiAELwCZCCAEQZsIai0AAEEQdHIhiQIgBC8AiQggBEGLCGotAABBEHRyIYoCIAQvAPkHIARB+wdqLQAAQRB0ciGLAiAELwDpByAEQesHai0AAEEQdHIhjAIgBC8A2QcgBEHbB2otAABBEHRyIY0CIAQvAMkHIARBywdqLQAAQRB0ciGOAiAELwC5ByAEQbsHai0AAEEQdHIhjwIgBC8AqQcgBEGrB2otAABBEHRyIZACIAQvAJkHIARBmwdqLQAAQRB0ciGRAiAELwCJByAEQYsHai0AAEEQdHIhkgIgBC8A+QYgBEH7BmotAABBEHRyIZMCIAQvAOkGIARB6wZqLQAAQRB0ciGUAiAELwDZBiAEQdsGai0AAEEQdHIhlQIgBC8AyQYgBEHLBmotAABBEHRyIZYCIAQvALkGIARBuwZqLQAAQRB0ciGXAiAELwCpBiAEQasGai0AAEEQdHIhmAIgBC8AmQYgBEGbBmotAABBEHRyIZkCIAQvAPkFIARB+wVqLQAAQRB0ciGaAiAELwDpBSAEQesFai0AAEEQdHIhmwIgBC0AyAghnQIgBCgCxAghngIgBCgCwAghnwIgBCgCvAghoAIgBC0AuAghoQIgBCgCtAghogIgBCgCsAghowIgBCgCrAghpAIgBC0AqAghpQIgBCgCpAghpgIgBCgCoAghpwIgBCgCnAghwgMgBC0AmAghwwMgBCgClAghxAMgBCgCkAghxQMgBCgCjAghxgMgBC0AiAghxwMgBCgChAghyAMgBCgCgAghyQMgBCgC/AchygMgBC0A+AchywMgBCgC9AchzAMgBCgC8AchzQMgBCgC7AchzgMgBC0A6AchzwMgBCgC5Ach0AMgBCgC4Ach0QMgBCgC3Ach0gMgBC0A2Ach0wMgBCgC1Ach1AMgBCgC0Ach1QMgBCgCzAch1gMgBC0AyAch1wMgBCgCxAch2AMgBCgCwAch2QMgBCgCvAch2gMgBC0AuAch2wMgBCgCtAch3AMgBCgCsAch3QMgBCgCrAch3gMgBC0AqAch3wMgBCgCpAch4AMgBCgCoAch4QMgBCgCnAch4gMgBC0AmAch4wMgBCgClAch5AMgBCgCkAch5QMgBCgCjAch5gMgBC0AiAch5wMgBCgChAch6AMgBCgCgAch6QMgBCgC/AYh6gMgBC0A+AYh6wMgBCgC9AYh7AMgBCgC8AYh7QMgBCgC7AYh7gMgBC0A6AYh7wMgBCgC5AYh8AMgBCgC4AYh8QMgBCgC3AYh8gMgBC0A2AYh8wMgBCgC1AYh9AMgBCgC0AYh9QMgBCgCzAYh9gMgBC0AyAYh9wMgBCgCxAYh+AMgBCgCwAYh+QMgBCgCvAYh+gMgBC0AuAYh+wMgBCgCtAYh/AMgBCgCsAYh/QMgBCgCrAYh/gMgBC0AqAYh/wMgBCgCpAYhgAQgBCgCoAYhgQQgBCgCnAYhggQgBC0AmAYhgwQgBCgClAYhhAQgBCgCkAYhhQQgBCgChAYhhgQgBC0A+AUhhwQgBCgC9AUhiAQgBCgC8AUhiQQgBCgC7AUhigQgBC0A6AUhiwQCQAJAAkACQAJAAkACQCABKAJYIgUtACBBAnFFDQAgBS0AHEEBcQ0AIJMEQgKFIJIEhEIAUg0BCyABLQBERQ0EIAUtABxBAXENAyCTBEIChSCSBIRQDQMgCUEBcQ0DIAEtAEIhjAQgBEEBOgCAGyAEQuSAgICgHzcC+BogBEKKgICAoAE3AvAaIARBADYCiAogBEKAgICAwAA3AoAKAkAgA0UNACADQQJ0IQYgAiEFA0AgBEGQD2ogBEHwGmogBSgCABCiAQJAAkAgBCgCkA9BgICAgHhGDQAgBCgCmA8hCyAEQQA2ApgPIARBADYC3AggBCALNgLYCCAEIAQoApQPIg82AswIIAQgDyALQQR0ajYC0AggBCgCgAohCyAEIARBkA9qNgLUCAJAIAtBgICAgHhGDQAgBEGACmogBEHMCGoQ8wogBCgCgApBgICAgHhGDQIgBEGACmoQzAgMAgsgBEHMCGoQuwsMAQsgBEGACmoQhR8gBEGAgICAeDYCgAoLIAVBBGohBSAEQZAPahCFHyAGQXxqIgYNAAsLAkACQCCMBEH/AXFFDQAgBEGACmpBABCAAgwBCyAEKAKACkGAgICAeEYNAAJAIAQoAogKIgVBAkkNACAEKAKECiEGAkAgBUEVSQ0AIAYgBRCEDwwBCyAFQQR0IQtBECEFA0AgBiAGIAVqEL4IIAsgBUEQaiIFRw0ACwsgBEGACmoQzAgLIAQgBCgCiAo2AogYIAQgBCkCgAoilgQ3A4AYIJYEp0GAgICAeEYNAiAEKAKIGCIFRQ0CIAQoAoQYIo0EIAVBBHRqIY4EII0EKAIIIo8EII0EKAIEIpAEakF/aiGRBEEAIQVBASEGII8EIYwEA0ACQAJAIAVBAXFFDQAgjQQhBSCNBCCOBEcNAQwECyAGII4EII0Ea0EEdk8NAyCNBCAGQQR0aiEFCwJAII8EIIwESQ0AIAUoAggiD0UNBCAFQRBqIY0EIAUoAgRBf2ohBkEAIQUgkQQhCwJAA0AgjAQgBUYNAQJAIAYgD2otAAAgCy0AAEYNACAFIYwEDAILIAZBf2ohBiALQX9qIQsgDyAFQQFqIgVHDQALIA8hjAQLQQAhBkEBIQUgjAQNAQwECwsgjwQgjARrII8EII8EQcDXiQEQiwoACwJAQRBBwA0QswgiBUUNACAFIIUCOwCtDSAFIIcCOwCdDSAFIIgCOwCNDSAFIIkCOwD9DCAFIIoCOwDtDCAFIIsCOwDdDCAFIIwCOwDNDCAFII0COwC9DCAFII4COwCtDCAFII8COwCdDCAFIJACOwCNDCAFIJECOwD9CyAFIJICOwDtCyAFIJMCOwDdCyAFIJQCOwDNCyAFIJUCOwC9CyAFIJYCOwCtCyAFIJcCOwCdCyAFIJgCOwCNCyAFIJkCOwD9CiAFIJoCOwDdCiAFIJsCOwDNCiAFIIQCOwCtCiAFIIMCOwCdCiAFIIICOwCNCiAFIIECOwD9CSAFIIACOwDtCSAFIP8BOwDdCSAFIP4BOwDNCSAFIP0BOwC9CSAFIPwBOwCtCSAFIPsBOwCdCSAFIPoBOwCNCSAFIPkBOwD9CCAFIPgBOwDtCCAFIPcBOwDdCCAFIPYBOwDNCCAFIPUBOwC9CCAFIPQBOwCtCCAFIPMBOwCdCCAFIPIBOwCNCCAFIPEBOwD9ByAFIPABOwDtByAFIO8BOwDdByAFIO4BOwDNByAFIO0BOwC9ByAFIOwBOwCtByAFIOsBOwCdByAFIOoBOwCNByAFIOkBOwD9BiAFIOgBOwDtBiAFIOcBOwDdBiAFIOYBOwDNBiAFIOUBOwC9BiAFIOQBOwCtBiAFIOMBOwCdBiAFIOIBOwCNBiAFIOEBOwD9BSAFIOABOwDtBSAFIN8BOwDdBSAFIN4BOwDNBSAFIDw7AL0FIAVBADsArQUgBSA7OwCdBSAFIDo7AI0FIAUgOTsA/QQgBSA4OwDtBCAFIDc7AN0EIAUgNjsAzQQgBSA1OwC9BCAFIDQ7AK0EIAUgMzsAnQQgBSAyOwCNBCAFIDE7AP0DIAUgMDsA7QMgBSAvOwDdAyAFIC47AM0DIAUgKzsAvQMgBSAoOwCtAyAFICQ7AJ0DIAUgFzsAjQMgBSAcOwD9AiAFIBI7AO0CIAUgEDsA3QIgBSAROwDNAiAFIBY7AL0CIAUgGzsArQIgBSAZOwCdAiAFIBg7AI0CIAUgGjsA/QEgBSAiOwDtASAFICM7AN0BIAUgJTsAzQEgBSAmOwC9ASAFICc7AK0BIAUgKTsAnQEgBSAqOwCNASAFICw7AH0gBSAtOwBtIAUghgI7AF0gBSDdATsATSAFIJQENwIkIAUgkwQ3AxAgBUEAOgC8DSAFICA2ArgNIAUgBzYCtA0gBSABNgKwDSAFIJ0COgCsDSAFIJ4CNgKoDSAFIJ8CNgKkDSAFIKACNgKgDSAFIKECOgCcDSAFIKICNgKYDSAFIKMCNgKUDSAFIKQCNgKQDSAFIKUCOgCMDSAFIKYCNgKIDSAFIKcCNgKEDSAFIMIDNgKADSAFIMMDOgD8DCAFIMQDNgL4DCAFIMUDNgL0DCAFIMYDNgLwDCAFIMcDOgDsDCAFIMgDNgLoDCAFIMkDNgLkDCAFIMoDNgLgDCAFIMsDOgDcDCAFIMwDNgLYDCAFIM0DNgLUDCAFIM4DNgLQDCAFIM8DOgDMDCAFINADNgLIDCAFINEDNgLEDCAFINIDNgLADCAFINMDOgC8DCAFINQDNgK4DCAFINUDNgK0DCAFINYDNgKwDCAFINcDOgCsDCAFINgDNgKoDCAFINkDNgKkDCAFINoDNgKgDCAFINsDOgCcDCAFINwDNgKYDCAFIN0DNgKUDCAFIN4DNgKQDCAFIN8DOgCMDCAFIOADNgKIDCAFIOEDNgKEDCAFIOIDNgKADCAFIOMDOgD8CyAFIOQDNgL4CyAFIOUDNgL0CyAFIOYDNgLwCyAFIOcDOgDsCyAFIOgDNgLoCyAFIOkDNgLkCyAFIOoDNgLgCyAFIOsDOgDcCyAFIOwDNgLYCyAFIO0DNgLUCyAFIO4DNgLQCyAFIO8DOgDMCyAFIPADNgLICyAFIPEDNgLECyAFIPIDNgLACyAFIPMDOgC8CyAFIPQDNgK4CyAFIPUDNgK0CyAFIPYDNgKwCyAFIPcDOgCsCyAFIPgDNgKoCyAFIPkDNgKkCyAFIPoDNgKgCyAFIPsDOgCcCyAFIPwDNgKYCyAFIP0DNgKUCyAFIP4DNgKQCyAFIP8DOgCMCyAFIIAENgKICyAFIIEENgKECyAFIIIENgKACyAFIIMEOgD8CiAFIIQENgL4CiAFIIUENgL0CiAFIAc2AvAKIAUgEzoA7AogBSCGBDYC6AogBSAVNgLkCiAFIBQ2AuAKIAUghwQ6ANwKIAUgiAQ2AtgKIAUgiQQ2AtQKIAUgigQ2AtAKIAUgiwQ6AMwKIAUgDjYCyAogBSAKNgLECiAFIAc2AsAKIAUgCToAvAogBSAMNgK4CiAFIA02ArQKIAUgCDYCsAogBSA9OgCsCiAFID42AqgKIAUgPzYCpAogBSBANgKgCiAFIEE6AJwKIAUgQjYCmAogBSBDNgKUCiAFIEQ2ApAKIAUgRToAjAogBSBGNgKICiAFIEc2AoQKIAUgSDYCgAogBSBJOgD8CSAFIEo2AvgJIAUgSzYC9AkgBSBMNgLwCSAFIE06AOwJIAUgTjYC6AkgBSBPNgLkCSAFIFA2AuAJIAUgUToA3AkgBSBSNgLYCSAFIFM2AtQJIAUgVDYC0AkgBSBVOgDMCSAFIFY2AsgJIAUgVzYCxAkgBSBYNgLACSAFIFk6ALwJIAUgWjYCuAkgBSBbNgK0CSAFIFw2ArAJIAUgXToArAkgBSBeNgKoCSAFIF82AqQJIAUgYDYCoAkgBSBhOgCcCSAFIGI2ApgJIAUgYzYClAkgBSBkNgKQCSAFIGU6AIwJIAUgZjYCiAkgBSBnNgKECSAFIGg2AoAJIAUgaToA/AggBSBqNgL4CCAFIGs2AvQIIAUgbDYC8AggBSBtOgDsCCAFIG42AugIIAUgbzYC5AggBSBwNgLgCCAFIHE6ANwIIAUgcjYC2AggBSBzNgLUCCAFIHQ2AtAIIAUgdToAzAggBSB2NgLICCAFIHc2AsQIIAUgeDYCwAggBSB5OgC8CCAFIHo2ArgIIAUgezYCtAggBSB8NgKwCCAFIH06AKwIIAUgfjYCqAggBSB/NgKkCCAFIIABNgKgCCAFIIEBOgCcCCAFIIIBNgKYCCAFIIMBNgKUCCAFIIQBNgKQCCAFIIUBOgCMCCAFIIYBNgKICCAFIIcBNgKECCAFIIgBNgKACCAFIIkBOgD8ByAFIIoBNgL4ByAFIIsBNgL0ByAFIIwBNgLwByAFII0BOgDsByAFII4BNgLoByAFII8BNgLkByAFIJABNgLgByAFIJEBOgDcByAFIJIBNgLYByAFIJMBNgLUByAFIJQBNgLQByAFIJUBOgDMByAFIJYBNgLIByAFIJcBNgLEByAFIJgBNgLAByAFIJkBOgC8ByAFIJoBNgK4ByAFIJsBNgK0ByAFIJwBNgKwByAFIJ0BOgCsByAFIJ4BNgKoByAFIJ8BNgKkByAFIKABNgKgByAFIKEBOgCcByAFIKIBNgKYByAFIKMBNgKUByAFIKQBNgKQByAFIKUBOgCMByAFIKYBNgKIByAFIKcBNgKEByAFIKgBNgKAByAFIKkBOgD8BiAFIKoBNgL4BiAFIKsBNgL0BiAFIKwBNgLwBiAFIK0BOgDsBiAFIK4BNgLoBiAFIK8BNgLkBiAFILABNgLgBiAFILEBOgDcBiAFILIBNgLYBiAFILMBNgLUBiAFILQBNgLQBiAFILUBOgDMBiAFILYBNgLIBiAFILcBNgLEBiAFILgBNgLABiAFILkBOgC8BiAFILoBNgK4BiAFILsBNgK0BiAFILwBNgKwBiAFIL0BOgCsBiAFIL4BNgKoBiAFIL8BNgKkBiAFIMABNgKgBiAFIMEBOgCcBiAFIMIBNgKYBiAFIMMBNgKUBiAFIMQBNgKQBiAFIMUBOgCMBiAFIMYBNgKIBiAFIMcBNgKEBiAFIMgBNgKABiAFIMkBOgD8BSAFIMoBNgL4BSAFIMsBNgL0BSAFIMwBNgLwBSAFIM0BOgDsBSAFIM4BNgLoBSAFIM8BNgLkBSAFINABNgLgBSAFINEBOgDcBSAFINIBNgLYBSAFINMBNgLUBSAFINQBNgLQBSAFINUBOgDMBSAFINYBNgLIBSAFINcBNgLEBSAFINgBNgLABSAFINkBOgC8BSAFINoBNgK4BSAFINsBNgK0BSAFINwBNgKwBSAFQQA6AKwFIAVCADcCpAUgBSAhNgKgBSAFIMEDOgCcBSAFIMADNgKYBSAFIL8DNgKUBSAFIL4DNgKQBSAFIL0DOgCMBSAFILwDNgKIBSAFILsDNgKEBSAFILoDNgKABSAFILkDOgD8BCAFILgDNgL4BCAFILcDNgL0BCAFILYDNgLwBCAFILUDOgDsBCAFILQDNgLoBCAFILMDNgLkBCAFILIDNgLgBCAFILEDOgDcBCAFILADNgLYBCAFIK8DNgLUBCAFIK4DNgLQBCAFIK0DOgDMBCAFIKwDNgLIBCAFIKsDNgLEBCAFIKoDNgLABCAFIKkDOgC8BCAFIKgDNgK4BCAFIKcDNgK0BCAFIKYDNgKwBCAFIKUDOgCsBCAFIKQDNgKoBCAFIKMDNgKkBCAFIKIDNgKgBCAFIKEDOgCcBCAFIKADNgKYBCAFIJ8DNgKUBCAFIJ4DNgKQBCAFIJ0DOgCMBCAFIJwDNgKIBCAFIJsDNgKEBCAFIJoDNgKABCAFIJkDOgD8AyAFIJgDNgL4AyAFIJcDNgL0AyAFIJYDNgLwAyAFIJUDOgDsAyAFIJQDNgLoAyAFIJMDNgLkAyAFIJIDNgLgAyAFIJEDOgDcAyAFIJADNgLYAyAFII8DNgLU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IAUpA7ACNwMADAELIAYQtQsgBiAFKQOwAjcDACAGIAUpA7gCNwMIIAYgBSkDwAI3AxAgBiAFKQPIAjcDGCAIKAIAQQpGDQAgCBC1CwsgCCAFKQOgBDcDCCAIIAUpA5gENwMAIAYoAgAiCEELRg0BCyABLQCgAUH9AEcNACABQQs2AogBIAUgASkCmAE3A7ACIAUgASgCoAE2ArgCIAFBCGohCSABQYwBaiEDQQshBwJAIAEoAghBCkYNACAJELULIAYoAgAhBwsgASAINgIIIAEgBSgCuAI2ArgBIAEgAykCADcCDCABIAMoAgg2AhQgASkDsAEhHiABIAUpA7ACNwKwASABIB43A6gBIAFBCzYCiAEgAUGwAWohBgJAAkAgB0ELRg0AIAFBDGohCiAFIAFBmAFqIgsoAgg2ArgCIAUgCykCADcDsAICQCAIQQpGDQAgCRC1CwsgCSAHNgIAIAogAykCADcCACAKIAMoAgg2AggMAQsgBUGwAmogARDOAQsgASkDsAEhHiAGIAUpA7ACNwIAIAYgBSgCuAI2AgggASAeNwOoASAFQdgBaiABIAJBARCvASAFKALcASEBAkAgBSgC2AFBAXFFDQAgAEETNgIAIAAgATYCBAwDCyAAIAE2AgwgAEEGNgIIIABBETYCAAwCCyABLQC4ASEGCyABKAJ4IQlBASEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZB/wFxQbR/ag4lAAkRFgwOCAEREQIRERERFQMLDRERERAREQQRBREXERQRDxESExELIAlBgICAgAJxIQYCQAJAIAMNAEHMACEDIAYNAQwtCyAGRQ0qCyABQQE6AOQBIAlBBHFFDQUMKQsgASgCiAEhBiABQQs2AogBAkACQCAGQQtGDQAgAUGMAWohAyAFIAEoAqABNgK4AiAFIAEpApgBNwOwAgJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASADKQIANwIMIAEgAygCCDYCFAwBCyAFQbACaiABEM4BCyABIAUoArgCNgK4ASABIAEpA7ABNwOoASABIAUpA7ACNwKwASABEP0IIgZFDQggAEETNgIAIAAgBjYC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IAJCADcDoAMgAkEANgKAAyACQQM6AMMDIAIgDikDADcDkAEgAiAOKAIINgKYASACQYADahDSDiABKAIEIAxqIgBBBzYCACAAQShqQgA3AwAgAEEYakIANwMAIABBEGogHzcDACAAQQhqQQA2AgAgAEEwaiACKQOQATcDACAAQThqIAIoApgBNgIAIABBPGpCADcCACAAQcMAakIANwAAIABBywBqQQM6AAAgASABKAIIQQFqNgIIIAxB2ABqIQwgA0FwaiEDIARBEGohBCAKQX9qIgoNAAsgAiAENgKAAgsCQCASIARHDQAgEiEEDAILAkAgEiAEa0EEdiIAIAEoAgAgE2tNDQAgASATIABBCEHYABDHGgsgACAQaiEAAkAgFUHYAGwiA0UNACABKAIEIgwgAEHYAGxqIAwgEEHYAGxqIAP8CgAACyACIAA2AvQBIAEoAggiDCAATw0BIAxB2ABsIQMgACAMayEMIAJBvQNqIQogAkGAA2pBKGohCSACQbQDaiEOA0AgBCASRg0BIAQpAwAhHyAOQgA3AgAgDkEAOgAIIApBADYAACAKQQA7AAQgAkEANgKoAyACQgQ3AqwDIAJCADcDkAMgAkIBNwOIAyACQgA3A6ADIAJBADYCgAMgAkEDOgDDAyACIAkpAwA3A5ABIAIgCSgCCDYCmAEgAkGAA2oQ0g4gASgCBCADaiIAQQc2AgAgAEEoakIANwMAIABBGGpCADcDACAAQRBqIB83AwAgAEEIakEANgIAIABBMGogAikDkAE3AwAgAEE4aiACKAKYATYCACAAQTxqQgA3AgAgAEHDAGpCADcAACAAQcsAakEDOgAAIAEgASgCCEEBajYCCCADQdgAaiEDIARBEGohBCAMQX9qIgwNAAsgAiAENgKAAgwBCyACIBI2AoACDAELIAJBgANqIBIgBGtBBHZBCEHYABCBDyACKAKEAyEAAkAgAigCgANBAUcNACAAIAIoAogDEOkgAAsgAkEANgKYASACIAIoAogDNgKUASACIAA2ApABIAJBkAFqIBQQ1wggAigClAEiECACKAKYASIDQdgAbGohEyACKAKQASESIBAhAAJAIANFDQACQCADIAIoAvABIgQoAgAgAigC+AEiDCACKAL0ASIAaiIKa00NACAEIAogA0EIQdgAEMcaCyAAIANqIQ4CQCAMQdgA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IghBowFGDQAgAUGIAWohBiABKAKAASIJQYDAAHEhCiAIQfwARw0CIApFDQIgASgCsAEhCiAGKAIAIQggBkELNgIAAkACQCAIQQtGDQAgAyABKAKgATYCwAIgAyABKQKYATcDuAICQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgA0G4AmogARDOAQsgASkDsAEhMSAEIAMpA7gCNwIAIAQgAygCwAI2AgggASAxNwOoASADQaADaiACELcKIANBuAJqIAEgCiADQaADahDJASADKAK8AiEIAkAgAygCuAIiCkEJRw0AIABBCTYCACAAIAg2AgQMBAsgAyADKQPYAjcDYCADIAMpA9ACNwNYIAMgAykDyAI3A1AgAyADKQPAAjcDSCAKQQhGDQEgACADKQNgNwMoIAAgAykDWDcDICAAIAMpA1A3AxggACADKQNINwMQIAAgBTYCMCAAIAg2AgwgACAKNgIIIABBATYCACAAIAEoAqwBNgI0DAMLIAEoAnAQnB4hASAAQQk2AgAgACABNgIEDAILIAEoAoABIglBgMAAcSEKIAEtALgBIQgLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAKRQ0AAkACQAJAAkACQCAIQf8BcUG1f2oiCkEfSw0AQQEgCnRBgYCCkHhxDQELIAhBtH9qQf8BcUHVAE8NAwwBCyAIQf8BcUHLAEcNACADQQAgAUEIaiABKAIIIgpBCkYiCBs2AqADAkAgCA0AIApBAkcNACABKQMQIjFCA4NCAFINAiAxpyIIIAgoAgAiCEEBajYCACAIQX9MDRgMAgsgA0HbBK1CIIYgA0GgA2qthDcDuAJB2OWaASADQbgCakGM5poBENcbAAsCQAJAIAEoArABIgggASgCbCIKSQ0AIAEoArQBIgkgASgCcE0NAQtBiI6bAUHWAEHgjpsBEKQhAAsgASgCYCAIIApraiAJIAhrEPsYITELIANB6ANqIAIQtwogAygC8AMhCiADKALsAyEIIAMoAugDIQkCQAJAIAEtAIEBQSBxRQ0AIAEoAnghC0EKIQwgASgCGCENIAEoAgQhDiABKAIAIQ8gAS0AHCEQAkAgASgCCEEKRg0AIANBoANqIAFBCGoQjwYgAyADKQKkAzcDyAMgAyADKAKsAzYC0AMgAygCoAMhDAtBACERQQAhEgJAIAEoAiBBgICAgHhGDQAgASgCNCESIAEoAighEQsgASgCaCETIAEtAB0hFEELIRUCQCAGKAIAIhZBC0YNACABQZgBaiEXQQohFQJAIBZBCkYNACADQaADaiAGEI8GIAMgAykCpAM3A5AEIAMgAygCrAM2ApgEIAMoAqADIRULIAMgAykDkAQ3A6ADIAMgAygCmAQ2AqgDIAMgFygCCDYCtAMgAyAXKQIANwKsAwsgAyAMNgLAAiADIA42ArwCIAMgDzYCuAIgAyADKQPIAzcCxAIgAyADKALQAzYCzAIgAyATNgLkAiADIBI2AtwCIAMgETYC2AIgAyAUOgDVAiADIBA6ANQCIAMgDTYC0AIgAyABKAKsASIRNgKMAyADIAEoAqgBIhI2AogDIAMgCzYC4AIgAyAVNgLoAiADIAQoAgg2ApgDIAMgBCkDADcDkAMgAyADKQOgAzcC7AIgAyADKQOoAzcC9AIgAyADKQOwAzcC/AIgAyADKAK4AzYChAMgASALQQFyNgJ4IAMgCjYCmAQgAyAINgKUBCADIAk2ApAEIANBoANqIAEgASgCsAEgA0GQBGogMUEBEOUBIANB6AJqIQggA0GQA2ohCiADKAKkAyEJIAMoAqADIg1BCUcNASABIANBuAJqEMYIIAQgCigCCDYCCCAEIAopAwA3AwACQCABKAKIAUEOcUEKRg0AIAYQtQsLIAEgETYCrAEgASASNgKoASAGIAgpAxg3AxggBiAIKQMQNwMQIAYgCCkDCDcDCCAGIAgpAwA3AwAgCUEIahDjAyAJQSBBCBDOFCABLQC4ASEIDAILIAggChDaHSAJIAgQ5yMCQCAxQgODQgBSDQAgMaciCCAIKAIAIgpBf2o2AgAgCkEBRw0AIAggCCgCEBDeHgsgAS0AuAEhCAwBCyADIAMpA8ADNwPgAyADIAMpA7gDNwPYAyADIAMpA7ADNwPQAyADIAMpA6gDNwPIAwJAIA1BCEYNACABIAEoAnhBfnEgC0EBcXI2AnggAyADKQPgAzcDgAEgAyADKQPYAzcDeCADIAMpA9ADNwNwIAMgAykDyAM3A2gCQCAMQQpGDQAgA0G4AmpBCGoQtQsLAkAgFUEOcUEKRg0AIAgQtQsLIAAgCTYCDCAAIA02AgggAEEBNgIAIAAgAykDaDcDECAAIAMpA3A3AxggACADKQN4NwMgIAAgAykDgAE3AyggACAFNgIwIAAgASgCrAE2AjQMHAsgASADQbgCahDGCCAEIAooAgg2AgggBCAKKQMANwMAAkAgASgCiAFBDnFBCkYNACAGELULCyABIBE2AqwBIAEgEjYCqAEgBiAIKQMYNwMYIAYgCCkDEDcDECAGIAgpAwg3AwggBiAIKQMANwMAIAEtALgBIQgLAkACQAJAAkAgCEH/AXEiCkEXRg0AIApB9QBGDQUgCkHfAEcNAyAGKAIAIQggBkELNgIAIAhBC0YNASADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwCCyAGKAIAIQggBkELNgIAIAhBC0YNBSADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwGCyADQbgCaiABEM4BCyABKQOwASExIAQgAykDuAI3AgAgBCADKALAAjYCCCABIDE3A6gBQQAhCCABLQC4AUGXAUcNEiAGKAIAQQtHDQ8gASkDCCExIAFBCjYCCCADIAEpAxA3A6gDIAMgMTcDoAMgA0HIAmogARDOASABKQMIITEgAUEKNgIIIAMgASkDEDcDwAIgAyAxNwO4AiABQQhqIQQgASgCiAFBDnFBCkcNDSAGIAMpA9ACNwMYIAYgAykDyAI3AxAgBiADKQPAAjcDCCAGIAMpA7gCNwMADA4LIAEoAoABIQkLIAQoAgAhCyAJQQ12IAhB/wFxIghBlwFGcSIKDQUgCEHUAEcNBiAGKAIAIQggBkELNgIAIAhBC0YNByADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwICyAGKAIAIQggBkELNgIAIAhBC0YNAiADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwDCyADQbgCaiABEM4BCyABKQOwASExIAQgAykDuAI3AgAgBCADKALAAjYCCCABIDE3A6gBIANBwABqIAEQrQMgAygCRCEEIAMoAkBBAXFFDQcgAEEJNgIAIAAgBDYCBAwWCyADQbgCaiABEM4BCyABKQOwASExIAQgAykDuAI3AgAgBCADKALAAjYCCCABIDE3A6gBIAEtALgBIghBhgFGDQQgASgCtAEhBCABKAKwASEGIANBjAFqIAgQsiUgA0GPAq1CIIZBoYKbAa2ENwOgAyADQbgCakHNlYABIANBoANqEK8QIAMgAykCjAE3AsQCIAMgAygClAE2AswCIAYgBCADQbgCahCzGyEEAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQk2AgAgACAENgIEDBQLIAYoAgAhCCAGQQs2AgACQAJAIAhBC0YNACADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyADQbgCaiABEM4BCyABKQOwASExIAQgAykDuAI3AgAgBCADKALAAjYCCCABIDE3A6gBC0EBIQhBAiEJDAsLIANBuAJqIAEQzgELIAEpA7ABITEgBCADKQO4AjcCACAEIAMoAsACNgIIIAEgMTcDqAEgAS0AuAEiCEEYRw0IIAEoArABIRUgA0G4AmogAUEAENoBIAMoArwCIQgCQCADKAK4AiIJQYCAgIB4Rw0AIABBCTYCACAAIAg2AgQMEQsgAygCwAIhDCACKAIIRQ0FIAEoAqwBIQQgA0G1gYCAeDYCuAIgFSAEIANBuAJqELMbIQQCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLIABBCTYCACAAIAQ2AgQgCCAMENodIAkgCBDnIwwQCyAGKAIAIQggBkELNgIAAkACQCAIQQtGDQAgAyABKAKgATYCwAIgAyABKQKYATcDuAICQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgA0G4AmogARDOAQsgASkDsAEhMSAEIAMpA7gCNwIAIAQgAygCwAI2AgggASAxNwOoASADQbgCaiABQQBBABDgAiADKAK4AiEEAkAgAy0AzAIiBkECRw0AIABBCTYCACAAIAQ2AgQMEAsgAyADKQLEAjcCrAMgAyADKQK8AjcCpAMgAyADLwDNAjsAtQMgAyADLQDPAjoAtwMgAyAGOgC0AyADIAQ2AqADAkAgARD9CCIERQ0AIABBCTYCACAAIAQ2AgQgA0GgA2oQjRwMEAsgACADKQOgAzcDECAAIAMpA6gDNwMYIAAgAykDsAM3AyAgACAFNgIIIABBCDYCACAAIAEoAqwBNgIMDA8LAkAgARD9CCIGRQ0AIABBCTYCACAAIAY2AgQgBBCJAiAEQcAAQQgQzhQMDwsgACAFNgIIIAAgBDYCBCAAQQc2AgAgACABKAKsATYCDAwOCyAGELULIAYgAykDuAI3AwAgBiADKQPAAjcDCCAGIAMpA8gCNwMQIAYgAykD0AI3AxggBCgCAEEKRg0AIAQQtQsLIAQgAykDqAM3AwggBCADKQOgAzcDACAGKAIAQQtGDQMLAkAgAS0AoAEiBkG1f2oiBEEfSw0AQQEgBHRBgYCCkHhxDQILIAZBtH9qQf8BcUHVAEkNAQwCCyACKAIEIhVBABDaHSACKAIAIBUQ5yMgAiAMNgIIIAIgCDYCBCACIAk2AgAgAS0AuAEhCAwCCyABEJIQQQEhCAsgA0G4AmogARCbBSADKALAAiEEAkAgAykDuAIiMVBFDQAgAEEJNgIAIAAgBDYCBAwJCyADKALEAiEGIANBADYCyAIgAyAGNgLEAiADIAQ2AsACIANBADoAzAIgAyAxNwO4AiADQThqIAEgBSADQbgCakEBIAgQ+gEgAygCPCEBAkAgAygCOEEBRw0AIABBCTYCACAAIAE2AgQMCQsgACABNgIEIABBBjYCAAwICwJAIAEtAIEBQSBxRQ0AAkACQAJAIAhB/wFxQfMARw0AAkACQCAGKAIAQQtHDQAgASkDCCExIAFBCjYCCCADIAEpAxA3A6gDIAMgMTcDoAMgA0HIAmogARDOASABKQMIITEgAUEKNgIIIAMgASkDEDcDwAIgAyAxNwO4AiABQQhqIQgCQAJAIAEoAogBQQ5xQQpHDQAgBiADKQPQAjcDGCAGIAMpA8gCNwMQIAYgAykDwAI3AwggBiADKQO4AjcDAAwBCyAGELULIAYgAykDuAI3AwAgBiADKQPAAjcDCCAGIAMpA8gCNwMQIAYgAykD0AI3AxggCCgCAEEKRg0AIAgQtQsLIAggAykDqAM3AwggCCADKQOgAzcDACAGKAIAQQtGDQELIAEtAKABQdAARw0AIAEQmAsNACABKAKwASEEIAEQkhAgAS0AuAFBogFGDQMgA0GYAWogASAFIAQgAkEBEKAIIAMoApgBQQNHDQIgACADKAKcATYCBCAAQQk2AgAMDQsgAS0AuAEiCEHzAEcNAAJAIAEQlwtB/wFxQYIBRw0AIAEoArQBIQggASgCsAEhCSADQZ+BgIB4NgK4AiABIAkgCCADQbgCahDcHSABEJIQCyABLQC4ASEICyAIQf8BcUGCAUcNAiABKAKwASEEIAEQkhAgA0EwaiABIAQQtQMgAygCNCEEAkAgAygCMEEBcUUNACAAQQk2AgAgACAENgIEDAsLIAAgBTYCMCAAIAQ2AgwgAEECNgIIIABBAzYCACAAIAEoAqwBNgI0DAoLIAMgAykDmAE3ArwCIAAgAykCuAI3AgQgAyADKQOgATcCxAIgACADKQLAAjcCDCADIAMpA6gBNwLMAiAAIAMpAsgCNwIUIAMgAykDsAE3AtQCIAAgAykC0AI3AhwgAyADKQO4ATcC3AIgACADKQLYAjcCJCADIAMpA8ABNwLkAiAAIAMpAuACNwIsIAAgAygC6AI2AjQgAEEDNgIADAoLIAEQ7w0hASAAQQk2AgAgACABNgIEDAgLAkACQCAIQf8BcSIIQdAARg0AIAhB+ABHDQEgARCXC0H/AXFB3QBHDQEgARCYCw0BIANBuAJqIAEgBSACEOkHIAMoArwCIQECQCADKAK4AiIEQQNHDQAgAEEJNgIAIAAgATYCBAwLCyAAIAMpA+ACNwMwIAAgAykD2AI3AyggACADKQPQAjcDICAAIAMpA8gCNwMYIAAgAykDwAI3AxAgACABNgIMIAAgBDYCCCAAQQM2AgAMCgsgA0G4AmogASAFIAEoArABIAJBABCgCCADKAK8AiEBAkAgAygCuAIiBEEDRg0AIAAgAykD4AI3AzAgACADKQPYAjcDKCAAIAMpA9ACNwMgIAAgAykDyAI3AxggACADKQPAAjcDECAAIAE2AgwgACAENgIIIABBAzYCAAwKCyAAQQk2AgAgACABNgIEDAkLAkACQAJAAkACQAJAIAEtALgBIghB3QBGDQAgCEH9AEcNBSABKAKAAUGAwABxRQ0FIAEQlwsiFUH/AXEiCUG1f2oiCEEfTQ0BDAMLIANBuAJqIAEgBSACEMYPIAMoArwCIQEgAygCuAIiBEEDRg0BIAAgAykD4AI3AzAgACADKQPYAjcDKCAAIAMpA9ACNwMgIAAgAykDyAI3AxggACADKQPAAjcDECAAIAE2AgwgACAENgIIIABBAzYCAAwNC0EBIAh0QYGAgpB4cUUNAQwCCyAAQQk2AgAgACABNgIEDAsLIAlBpAFGDQEgFUG0f2pB/wFxQdQASw0BCyABEJgLDQAgASgCsAEhBCABEJIQIANBKGogASAEQQAQrwEgAygCLCEEAkAgAygCKEEBRw0AIABBCTYCACAAIAQ2AgQMCQsgACAFNgIwIAAgBDYCDCAAQQY2AgggAEEBNgIAIAAgASgCrAE2AjQMCAsCQAJAIAEtAIABQRBxRQ0AAkAgAS0AuAEiCEH+AEcNACABEJcLQf8BcUHAAEYNAiABLQC4ASEICyAIQf8BcUEHRw0AIAEQlwtB/wFxQX5qDg4BAAAAAAAAAAAAAAAAAQALIANBIGogARD0ESADKAIkIQQCQCADKAIgQQFxRQ0AIABBCTYCACAAIAQ2AgQMCQsgAyAENgK4AgJAIAEQ/QgiBkUNACAAQQk2AgAgACAGNgIEIANBuAJqEP4hDAkLIAAgBTYCCCAAIAQ2AgQgAEEENgIAIAAgASgCrAE2AgwMCAsgASgCrAEhFSABKAKoASEMQvHIlbOWrJ229ABBAhDtGkEAIQlBACEICwJAIAEtALgBQRhHDQAgASgCsAEhDSADQbgCaiABQQAQ2gEgAygCvAIhEQJAIAMoArgCIhJBgICAgHhHDQAgAEEJNgIAIAAgETYCBAwICyADKALAAiEOAkAgAigCCEUNACABKAKsASEEIANBtYGAgHg2ArgCIA0gBCADQbgCahCzGyEEAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQk2AgAgACAENgIEIBEgDhDaHSASIBEQ5yMMCAsgAigCBCINQQAQ2h0gAigCACANEOcjIAIgDjYCCCACIBE2AgQgAiASNgIACwJAIAoNAAJAAkACQCABLQC4ASIRQfgARg0AIBFB0ABHDQEgA0G4AmogASABKAKwASACQQAQsAcgAygCvAIhBAJAIAMoArgCIgJBCEcNACAAQQk2AgAgACAENgIEDAwLIAMgAykD2AI3A+ABIAMgAykD0AI3A9gBIAMgAykDyAI3A9ABIAMgAykDwAI3A8gBDAILAkACQCAGKAIAQQtHDQAgASkDCCExIAFBCjYCCCADIAEpAxA3A6gDIAMgMTcDoAMgA0HIAmogARDOASABKQMIITEgAUEKNgIIIAMgASkDEDcDwAIgAyAxNwO4AiABQQhqIRECQAJAIAEoAogBQQ5xQQpHDQAgBiADKQPQAjcDGCAGIAMpA8gCNwMQIAYgAykDwAI3AwggBiADKQO4AjcDAAwBCyAGELULIAYgAykDuAI3AwAgBiADKQPAAjcDCCAGIAMpA8gCNwMQIAYgAykD0AI3AxggESgCAEEKRg0AIBEQtQsLIBEgAykDqAM3AwggESADKQOgAzcDACAGKAIAQQtGDQELIAEtAKABQd0ARw0AIAEQmAsNACADQbgCaiABIAIQyAkgAygCvAIhBAJAIAMoArgCIgJBCEcNACAAQQk2AgAgACAENgIEDAwLIAMgAykD2AI3A+ABIAMgAykD0AI3A9gBIAMgAykDyAI3A9ABIAMgAykDwAI3A8gBDAILIAEtALgBIRELAkAgEUH/AXEiEUHdAEcNACADQbgCaiABQQAgAyACEO0KIAMoArwCIQQCQCADKAK4AiICQQhHDQAgAEEJNgIAIAAgBDYCBAwLCyADIAMpA9gCNwPgASADIAMpA9ACNwPYASADIAMpA8gCNwPQASADIAMpA8ACNwPIAQwBCwJAAkACQAJAIBFB/QBHDQAgASgCgAFBgMAAcUUNAAJAAkAgARCXCyINQf8BcSISQbV/aiIRQR9LDQBBASARdEGBgIKQeHENAQsgEkGkAUYNASANQbR/akH/AXFB1ABLDQELIAEQmAsNACABKAKwASEEIAEQkhAgA0EYaiABIARBABCvASADKAIcIQQgAygCGEEBRg0BQQYhBgwDCyABLQC4ASERAkACQAJAIAEtAIEBQSBxRQ0AIBFB/wFxQdEARw0AIAEQlwtB/wFxQf0ARg0BIAEtALgBIRELIBFB/wFxQa9/ag4dAwYGBgYGBgYGBgYGBgYGBgYBBgYGBgYGBgYGBgMGCyABKAKwASEEIAEQkhAgARCSECADQQhqIAEgBEEBEK8BIAMoAgwhBAJAIAMoAghBAUcNACAAQQk2AgAgACAENgIEDA0LIAAgBTYCMCAAIAQ2AgwgAEEGNgIIIABBATYCACAAIAEoAqwBNgI0DAwLIAEQlwsiEUH/AXFBpAFGDQQgERDRHEUNBAwBCyAAQQk2AgAgACAENgIEDAoLIANBEGogAUEAENABIAMoAhQhBAJAIAMoAhBBAXENAEECIQYMAQsgAEEJNgIAIAAgBDYCBAwJCyAAIAQ2AgwgACAGNgIIIABBATYCACAAIAMpA8gBNwMQIAAgAykD0AE3AxggACADKQPYATcDICAAIAMpA+ABNwMoIAAgBTYCMCAAIAEoAqwBNgI0QvHIlbOWrJ229AAgCRDtGiACKAIEIgEgAigCCBDaHSACKAIAIAEQ5yMMCQsgACAENgIMIAAgAjYCCCAAQQE2AgAgACADKQPIATcDECAAIAMpA9ABNwMYIAAgAykD2AE3AyAgACADKQPgATcDKCAAIAU2AjAgACABKAKsATYCNAwICwJAAkACQAJAAkACQCAIDQBB8ciVswYhEUHh6rGjByESQQAhDQwBCyABLQC4ASEIAkACQCABLQCAAUEQcUUNAAJAAkAgCEG1f2oiCUEfSw0AQQEgCXRBgYCCkHhxDQELIAhBtH9qQf8BcUHUAEsNAQsgA0G4AmogAUEAQQAQ4AIgAygCuAIhESADLQDMAiIJQQJHDQEgAEEJNgIAIAAgETYCBAwNCwJAAkACQAJAIAhBD0cNAAJAIAYoAgAiCEELRw0AIAEpAwghMSABQQo2AgggAyABKQMQNwOoAyADIDE3A6ADIANByAJqIAEQzgEgASkDCCExIAFBCjYCCCADIAEpAxA3A8ACIAMgMTcDuAIgAUEIaiEIAkACQCABKAKIAUEOcUEKRw0AIAYgAykD0AI3AxggBiADKQPIAjcDECAGIAMpA8ACNwMIIAYgAykDuAI3AwAMAQsgBhC1CyAGIAMpA7gCNwMAIAYgAykDwAI3AwggBiADKQPIAjcDECAGIAMpA9ACNwMYIAgoAgBBCkYNACAIELULCyAIIAMpA6gDNwMIIAggAykDoAM3AwAgBigCACIIQQtGDQMLIAEtAKABQfUARw0BIAEtALgBIQgLIANBADYC9AEgA0KAgICAgAE3AuwBIAhB/wFxQQ9GDQUMCAsgAUELNgKIASADIAEpApgBNwO4AiADIAEoAqABNgLAAgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyABQQs2AogBIANBuAJqIAEQzgELIAEpA7ABITEgBCADKQO4AjcCACAEIAMoAsACNgIIIAEgMTcDqAEgA0G4AmogARCABCADKAK8AiEEAkAgAygCuAIiBg0AIABBCTYCACAAIAQ2AgQMDQsgACAKOgAUIAAgBDYCECAAIAU2AgggACAGNgIEIABBBTYCACAAIAEoAqwBNgIMDAwLIAMgAy8AzQI7AegBIAMgAy0AzwI6AOoBIAMoAsgCIQ0gAygCxAIhFSADKALAAiEMIAMoArwCIRILIANBADYC9AEgA0KAgICAgAE3AuwBIANB7AFqELYaIAMoAvABIgggAy0A6gE6AB8gCCADLwHoATsAHSAIIAk6ABwgCCANNgIYIAggFTYCFCAIIAw2AhAgCCASNgIMIAggETYCCCAIQgM3AwAgA0EBNgL0ASABLQC4ASIIQQdHDQICQCAGKAIAQQtHDQAgASkDCCExIAFBCjYCCCADIAEpAxA3A6gDIAMgMTcDoAMgA0HIAmogARDOASABKQMIITEgAUEKNgIIIAMgASkDEDcDwAIgAyAxNwO4AiABQQhqIQgCQAJAIAEoAogBQQ5xQQpHDQAgBiADKQPQAjcDGCAGIAMpA8gCNwMQIAYgAykDwAI3AwggBiADKQO4AjcDAAwBCyAGELULIAYgAykDuAI3AwAgBiADKQPAAjcDCCAGIAMpA8gCNwMQIAYgAykD0AI3AxggCCgCAEEKRg0AIAgQtQsLIAggAykDqAM3AwggCCADKQOgAzcDACAGKAIAQQtGDQILIAEtAKABQQ9HDQEgARCSEAsgBigCACEIIAZBCzYCAAJAAkAgCEELRg0AIAMgASgCoAE2AsACIAMgASkCmAE3A7gCAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCDYCCCABIAcpAgA3AgwgASAHKAIINgIUDAELIANBuAJqIAEQzgELIAEpA7ABITEgBCADKQO4AjcCACAEIAMoAsACNgIIIAEgMTcDqAECQAJAAkAgAS0AuAEiCEH1AEcNACAGKAIAIQggBkELNgIAIAhBC0YNASADIAEoAqABNgLAAiADIAEpApgBNwO4AgJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAHKQIANwIMIAEgBygCCDYCFAwCCyABKAK0ASEEIAEoArABIQYgA0H4AWogCBCyJSADQY8CrUIghkGl9ZoBrYQ3A6ADIANBuAJqQc2VgAEgA0GgA2oQrxAgAyADKQL4ATcCxAIgAyADKAKAAjYCzAIgBiAEIANBuAJqELMbIRUgAS0AuAFBogFHDQogASABEO8NEIYJDAoLIANBuAJqIAEQzgELIAEpA7ABITEgBCADKQO4AjcCACAEIAMoAsACNgIIIAEgMTcDqAEgA0G4AmogARDkCiADKALAAiEVIAMpA7gCIjFCAlENCCADKQPQAiEyIAMoAswCIQwgAygCyAIhESADKALEAiESIAEoAqwBIQ0CQCADKAL0ASIJIAMoAuwBRw0AIANB7AFqELYaCyADKALwASAJQdAAbGoiCCANNgIsIAggCzYCKCAIIDI3AyAgCCAMNgIcIAggETYCGCAIIBI2AhQgCCAVNgIQIAggMTcDCCAIQgI3AwAgAyAJQQFqNgL0AQsgAS0AuAEhCAsCQAJAIAhB/wFxQf4ARg0AIAEtAIABQRBxDQEgASgCtAEhBCABKAKwASEGIANBhAJqIAgQsiUgA0GPAq1CIIZBhoKbAa2ENwOgAyADQbgCakHNlYABIANBoANqEK8QIAMgAykChAI3AsQCIAMgAygCjAI2AswCIAYgBCADQbgCahCzGyEVIAEtALgBQaIBRw0IIAEgARDvDRCGCQwICyADQbgCaiABEIAEIAMoArwCIRUgAygCuAIiBEUNByAAIAMpAuwBNwIEIAAgAygC9AE2AgwgACAKOgAgIAAgFTYCHCAAIAQ2AhggACAFNgIQIABBAjYCACAAIAEoAqwBNgIUDAgLAkAgCEH/AXFBB0cNACAGKAIAIQggBkELNgIAAkACQCAIQQtGDQAgAyABKAKgATYCwAIgAyABKQKYATcDuAICQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgA0G4AmogARDOAQsgASkDsAEhMSAEIAMpA7gCNwIAIAQgAygCwAI2AgggASAxNwOoASABLQC4ASEIDAELIAEoArQBIQQgASgCsAEhBiADQZACaiAIELIlIANBjwKtQiCGQZzkmgGthDcDoAMgA0G4AmpBzZWAASADQaADahCvECADIAMpApACNwLEAiADIAMoApgCNgLMAiAGIAQgA0G4AmoQsxshFSABLQC4AUGiAUcNBiABIAEQ7w0QhgkMBgsgCEH/AXFBAkcNBCAGKAIAIQggBkELNgIAAkACQCAIQQtGDQAgAyABKAKgATYCwAIgAyABKQKYATcDuAICQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgA0G4AmogARDOAQsgASkDsAEhMSAEIAMpA7gCNwIAIAQgAygCwAI2AgggASAxNwOoAQJAIAEtALgBIgtBA0YNACABQQxqIRggAUEIaiETIAFBmAFqIRkgA0HVAmohGiADQcgDakEIaiEbIANBoANqQQhqIRwgA0GgA2pBDGohDyADQbgCakEMaiEQA0AgASgCsAEhCCADQbgCaiABEOQKIAMoAsACIQkCQAJAIAMpA7gCIjFCAlINAEICITEMAQsgDyAQKAIQNgIQIA8gECkCCDcCCCAPIBApAgA3AgAgAyAJNgKoAyADIDE3A6ADAkACQAJAAkACQAJAAkACQCAxQgFSDQAgAyADKQO4AzcD4AMgAyADKQOwAzcD2AMgAyADKQOoAzcD0AMgAyADKQOgAzcDyANBACEUDAELIAMpA7gDITEgAygCtAMhHSADKAKwAyEeIAMpA6gDITMCQAJAAkAgC0H/AXFBlwFHDQAgASgCgAFBgMAAcUUNACADKAKsAyEfAkACQCABLQC4ASIgQbV/aiILQR9LDQBBASALdEGBgIKQeHENAQsgIEG0f2pB/wFxQdQASw0BCyADQYAEaiABEJsFAkAgAykDgAQiNFBFDQBCAiExIAMoAogEIQsMCAsgA0EANgL4AyADIAMoAowEIiE2AvQDIAMgAygCiAQiIjYC8AMgAyA0QiCIpyIjNgLsAyADQQA6APwDIAMgNKciCzYC6AMCQCAgQfUARw0AAkACQCABLQC4ASIkQbV/aiIgQR9LDQBBASAgdEGBgIKQeHENAQsgJEG0f2pB/wFxQdUASQ0AIApFDQogA0GogYCAeDYCuAIgASAeIB0gA0G4AmoQ3B0MCgsgA0GoBGogARCbBSADKQOoBCI0UA0GIANBADYCoAQgAyADKAK0BCIgNgKcBCADIAMoArAEIiU2ApgEIAMgNEIgiKciJjYClAQgA0EAOgCkBCADIDSnIic2ApAEAkAgJEH1AEcNAAJAAkAgAS0AuAEiKEG1f2oiJEEfSw0AQQEgJHRBgYCCkHhxDQELIChBtH9qQf8BcUHUAEsNAQsgA0G4BGogARCbBQJAIAMpA7gEIjFCAFINACADKALABCELIANBkARqEI0cIANB6ANqEI0cDAkLIDFCIIghMiAxpyEVIAMoAsQEISkgAygCwAQhKiAKRQ0GIANBqIGAgHg2ArgCIAEgHiAdIANBuAJqENwdDAYLIANB6ANqEI0cQQAhFEIAITIgHSEMIAghEUEAIRYgJyEVIDEhNSAdIRIgHiENIB8hDkIAITEgJiEXICUhKiAgISlBACErDAsLIAoNAQwCCyADIDE3A+ADIAMgHTYC3AMgAyAeNgLYAyADIDM3A9ADIANCADcDyANBACEUDAILIANBqIGAgHg2ArgCIAEgHiAdIANBuAJqENwdCyAbIAMpA/gDNwMQIBsgAykD8AM3AwggGyADKQPoAzcDACADQgA3A8gDQQEhFCAzQgODQgBSDQAgM6ciCSAJKAIAIgtBf2o2AgACQCALQQFHDQAgCSAJKAIQEN4eCyADKAKgA0UNACAcEK4SC0ICITICQAJAIAEtALgBQfUARw0AIAYoAgAhCSAGQQs2AgACQAJAIAlBC0YNACADIBkoAgg2AsACIAMgGSkCADcDuAICQCATKAIAQQpGDQAgExC1CwsgEyAJNgIAIBggBykCADcCACAYIAcoAgg2AggMAQsgA0G4AmogARDOAQsgASkDsAEhMSAEIAMpA7gCNwIAIAQgAygCwAI2AgggASAxNwOoASADQbgCaiABEOQKIAMoAsACIRUCQCADKQO4AiIyQgJSDQAgAygCyAMNAiADKQPQAyIxQgODQgBSDREgMaciASABKAIAIgRBf2o2AgAgBEEBRw0RIAEgASgCEBDeHgwRCyADIBovAAA7AcwEIAMgGi0AAjoAzgQgAy0A1AIhLCADKALQAiEtIAMoAswCIS4gAygCyAIhLyADKALEAiEwCyADIAMvAcwEOwGoAiADIAMtAM4EOgCqAiABKAKsASEMIAMpA+ADITUgAygC3AMhEiADKALYAyENIAMoAtQDIQ4gAygC0AMhCSADKQPIAyExIAghESAsIRYgMCEXIC8hKiAuISkgLSErDAcLIBsQrhIMDgsgMqchFyADKQP4AyE1IANBkARq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AigCDCEEAkACQCACLQAUDQAgA0G4A2ogARD+FgwBCyADQbgDaiABEP8WCyADKAK8AyECAkAgAygCuAMiBUEqRg0AIABBCGogA0G4A2pBCGpBOPwKAAAgACACNgIEIAAgBTYCAAwKCyADQbgDaiABIAQQSSADKALAAyEFIAMoArwDIQQCQCADKAK4AyIGQSpGDQAgAEEMaiADQbgDakEMakE0/AoAACAAIAU2AgggACAENgIEIAAgBjYCAAwKCyADQbgDaiABEK8YIAMoArwDIQYCQCADKAK4AyIKQSpGDQAgAEEIaiADQbgDakEIakE4/AoAACAAIAY2AgQgACAKNgIADAoLIANBuANqIAEgAiAEEK8KAkAgAygCuAMiBEEqRg0AIABBBGogA0G4A2pBBHJBPPwKAAAgACAENgIADAoLIANBuANqIAEgAiAGEK8KAkAgAygCuAMiBEEqRg0AIABBBGogA0G4A2pBBHJBPPwKAAAgACAENgIADAoLIANBuANqIAEgBSAGEK8KAkAgAygCuAMiBEEqRg0AIABBBGogA0G4A2pBBHJBPPwKAAAgACAENgIADAoLIAAgBjYCCCAAIAI2AgQgAEEqNgIADAkLIAAgASACKAIMIAItABQgBhDAAgwICyADIAY2AsQDIANBADYCwAMgAyAENgK8AyADIAE2ArgDIAAgASADQbgDahCEBgwHCyAAIAEgAigCCCACKAIMIAIoAhAgAigCBBCjAwwGCyACKAIIIgQgAigCDCIFQRxsaiECAkACQAJAAkACQCABLQALQQFxDQAgBUUNAiADQbgDaiABIAQQSSADKALAAyEFIAMoArwDIQggAygCuAMhBiADQdAAaiADQcQDakE0/AoAACAEQRxqIQQMAQsgBUUNASADQbgDaiABIAJBZGoiAhBJIAMoAsADIQUgAygCvAMhCCADKAK4AyEGIANB0ABqIANBxANqQTT8CgAACyAGQVZqDgICAAELIANBuANqIAEQrxggAEEIaiEEIAMoArwDIQICQAJAIAMoArgDIgVBKkYNACAEIANBuANqQQhqQTj8CgAADAELIAQgAjYCAAsgACAFNgIAIAAgAjYCBAwHCyAAQQxqIANB0ABqQTT8CgAAIAAgBTYCCCAAIAg2AgQgACAGNgIADAYLIANBxANqIQcDQAJAAkACQAJAAkAgAS0AC0EBcQ0AIAQgAkYNAiADQbgDaiABIAQQSSADKALAAyEJIAMoArwDIQogAygCuAMhBiADQYQBaiAHQTT8CgAAIARBHGohBAwBCyAEIAJGDQEgA0G4A2ogASACQWRqIgIQSSADKALAAyEJIAMoArwDIQogAygCuAMhBiADQYQBaiAHQTT8CgAACyAGQSpGDQIgBkErRw0BCyAAIAU2AgggACAINgIEIABBKjYCAAwICyAAQQxqIANBhAFqQTT8CgAAIAAgCTYCCCAAIAo2AgQgACAGNgIADAcLIANBuANqIAEgBSAKEK8KAkAgAygCuAMiBUEqRg0AIABBBGogA0G4A2pBBHJBPPwKAAAgACAFNgIADAcLIAkhBQwACwsCQAJAAkACQCACKAIMIgpFDQAgAigCCCIGIApBHGwiCWohC0EAIQQgBiECIAohBQNAIAQgAigCAEEBRmohBCACQRxqIQIgBUF/aiIFDQALAkAgBEECSQ0AIAQgCk8NBAsgA0G4A2ogASAGEEkgAygCwAMhBSADKAK8AyEEIAMoArgDIQIgA0HAAmogA0G4A2pBDGpBNPwKAAAgAkFWag4CAgABCyAAIAEQ3hAMBwsgAEEMaiADQcACakE0/AoAACAAIAU2AgggACAENgIEIAAgAjYCAAwGCwJAAkACQCAKQQFGDQAgA0G4A2ogASAGQRxqEEkgAygCwAMhCCADKAK8AyEHIAMoArgDIQIgA0EQaiADQbgDakEMakE0/AoAACACQVZqDgICAAELIAAgBTYCCCAAIAQ2AgQgAEEqNgIADAcLIABBDGogA0EQakE0/AoAACAAIAg2AgggACAHNgIEIAAgAjYCAAwGCyADQbgDaiABEP8WIAMoArwDIQICQCADKAK4AyIMQSpGDQAgAEEIaiADQbgDakEIakE4/AoAACAAIAI2AgQgACAMNgIADAYLIANBuANqIAEQrxggAygCvAMhDAJAIAMoArgDIg1BKkYNACAAQQhqIANBuANqQQhqQTj8CgAAIAAgDDYCBCAAIA02AgAMBgsgA0G4A2ogASACIAQQrwoCQCADKAK4AyIEQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAQ2AgAMBgsgA0G4A2ogASAFIAwQrwoCQCADKAK4AyIEQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAQ2AgAMBgsgA0G4A2ogASACIAcQrwoCQCADKAK4AyIEQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAQ2AgAMBgsgA0G4A2ogASAIIAwQrwoCQCADKAK4AyIEQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAQ2AgAMBgsCQCAKQQJGDQAgBkE4aiEEIANBhANqIQcgCUFIaiEKA0AgA0H4AmogASAEEEkgAygC+AIiBUErRg0BIAMoAoADIQkgAygC/AIhBgJAIAVBKkYNACAAQQxqIAdBNPwKAAAgACAJNgIIIAAgBjYCBCAAIAU2AgAMCAsgA0G4A2ogASACIAYQrwoCQCADKAK4AyIFQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAU2AgAMCAsgA0G4A2ogASAJIAwQrwoCQCADKAK4AyIFQSpGDQAgAEEEaiADQbgDakEEckE8/AoAACAAIAU2AgAMCAsgBEEcaiEEIApBZGoiCg0ACwsgACAMNgIIIAAgAjYCBCAAQSo2AgAMBQsgAS0ACyEFQQEhBEEYEIkBIQICQAJAAkAgBUEBcQ0AQQAhBCACDQFBBEEYEI0kAAsgAkUNAQsgAkIENwIQIAJCADcCCCACQoCAgIDAADcCACADIAQ6AMwCIANBATYCyAIgAyACNgLEAiADQQE2AsACAkADQCAGKAIAQQFHDQEgBkEcaiEOIAYoAgQiAiAGKAIIaiENQQAhBANAAkACQAJAAkACQAJAAkAgAy0AzAINACACIA1GDQIgAkEBaiEPDAELIAIgDUYNASACIQ8gDUF/aiINIQILIAQgAygCyAIiB08NASACLQAAIQwgA0EIaiADKALEAiIIIARBGGwiEGoQ0RIgAygCCCEKAkACQAJAIAMoAgwiAg4CBwEAC0EAIQQgDEH/AXEhCQNAIAQgAkEBdiIFIARqIgYgCiAGQQN0ai0ABCAJSxshBCACIAVrIgJBAUsNAAsgCiAEQQN0aiIKLQAEIgIgCUYNAQwFC0EAIQQgCi0ABCICIAxB/wFxRw0ECyAKKAIAIQQgDyECDAULIAQgAygCyAIiAk8NASADKALEAiAEQRhsaiICKAIUIQQCQAJAAkAgAigCCCIKDQAgBA0CIAJBEGohCSACKAIQIQVBACEEQQAhBgwBCyACQRBqIQkgAigCECEFQQAhBiAERQ0AIAUgBEEDdGoiB0F4akUNACAHQXxqKAIAIQYLAkAgBCACKAIMRw0AIAJBDGoQhxogCSgCACEFCyAFIARBA3RqIgUgCjYCBCAFIAY2AgAgAiAEQQFqNgIUCyAOIQYgDiALRg0KDAULIAQgB0Gs4YQBEO4WAAsgBCACQczhhAEQ7hYACyAEIAIgDEH/AXFJaiECCwJAIAcgAygCwAJHDQAgA0HAAmoQlhogAygCxAIhCAsgCCAHQRhsaiIEQgQ3AhAgBEIANwIIIARCgICAgMAANwIAIAMgB0EBajYCyAJBACEGAkAgCCAQaiIEKAIUIgVFDQAgBCgCECAFQQN0aiIFQXhqRQ0AIAVBfGooAgAhBgsCQCAEKAIIIgUgBiACaiICSQ0AAkAgBSAEKAIARw0AIAQQhxoLIAQoAgQgAkEDdGohBgJAIAUgAk0NACAFIAJrQQN0IgJFDQAgBkEIaiAGIAL8CgAACyAGIAw6AAQgBiAHNgIAIAQgBUEBajYCCCAPIQIgByEEDAELCwsgAiAFQbzhhAEQ8hYAC0Gs85oBQShB7O+EARCkIQALQQRBGBCNJAALAkAgAigCBA0AIAIoAgwhEQJAAkACQCACKAIQIgRFDQAgESAEQQN0aiISQXhqRQ0AIBJBfGooAgBBgAFJDQAgAS0AC0EBcQ0BAkAgASgCIA0AIAFBfzYCIAJAIAEoAmANACABQX82AmAgA0G4A2ogAUEkaiABQeQAahCfCCADIAMpArwDNwP4AiADIAMoAsQDNgKAAwJAIAMoArgDIgJBKkYNACAAQRBqIANBuANqQRBqQTD8CgAAIAAgAygCgAM2AgwgACADKQP4AjcCBCAAIAI2AgAMBQsgAyADKQP4AjcDECADIAMoAoADNgIYIANBwAJqQQFqIQIDQAJAAkAgESASRg0AIANB+AJqIBEoAgAgESgCBBD0HCARQQhqIREDQCADQbACaiADQfgCahD+AiADLQCwAkEERg0CIAMgAy0AuAI6AMgCIAMgAykAsAIiMTcDwAIgA0G4A2ogA0EQaiACIDGnQQFqQf8BcRCMByADKAK4AyIEQSpGDQALIABBBGogA0G4A2pBBHJBPPwKAAAgACAENgIAIAMoAvgCIAMoAvwCQQRBCBDPEwwHCyAAIANBEGoQ0AogASABKAJgQQFqNgJgIAEgASgCIEEBajYCIAwLCyADKAL4AiADKAL8AkEEQQgQzxMMAAsLQbzwhAEQ8x0AC0Gs8IQBEPMdAAsgA0G4A2ogARCvGCADKAK8AyEKAkAgAygCuAMiAkEqRg0AIABBCGogA0G4A2pBCGpBOPwKAAAgACAKNgIEIAAgAjYCAAwHC0EAIQIgA0G4A2ogBEEAQQRBCBC/DyADKAK8AyEGAkACQAJAIAMoArgDQQFGDQAgA0EANgLMASADIAMoAsADIgU2AsgBIAMgBjYCxAEgBEEDdCEGIAqtITJBACEEAkADQCAGIAJGDQEgETUCACIxQoACWg0DIBE1AgQiM0KAAloNBAJAIAQgAygCxAFHDQAgA0HEAWoQhxogAygCyAEhBQsgEUEIaiERIAUgAmogMUIghiAyhCAzQiiGhDcCACADIARBAWoiBDYCzAEgAkEIaiECDAALCyADQbgDaiABIANBxAFqEKkVIAMoArwDIQICQCADKAK4AyIEQSpGDQAgAEEIaiADQbgDakEIakE4/AoAACAAIAI2AgQgACAENgIADAoLIAAgCjYCCCAAIAI2AgQgAEEqNgIADAkLIAYgAygCwAMQ6SAAC0HQ/ZoBQSsgA0H/A2pB3NmEAUH88IQBEM8UAAtB0P2aAUErIANB/wNqQdzZhAFBjPGEARDPFAALAkAgAS0ADEEBcUUNAAJAAkAgASgChAENACADQbQCaiETIANBtgJqIRQgAUF/NgKEASABQYgBaiIVEN8KIAFBoAFqIRYgAUGsAWohFyADQbACakEBaiEYIANB+AJqQQRqIRkgA0EQakECciEaIAFBkAFqIQcgAUGMAWohCCABQbABaiEbIANBgQNqIRwgA0H+AmohHSABQaQBaiEeA0AgESASRg0CIANBwAJqIBEoAgAgESgCBBD0HCARQQhqIRECQANAIANB7AFqIANBwAJqEP4CIAMtAOwBQQRGDQEgAyADLQD0AToAuAIgAyADKQDsASIxNwOwAkEAIQICQAJAAkACQAJAIDGnIgRB/wFxDgQEAAEDBAsgAy8AswIhBSADIAMtALECOgCzAiADLQCyAiECIAMgBTsAsQIgEyEFDAELIAMvALUCIQUgAyADLQCxAjoAtQIgAy0AsgIhAiADIAU7ALECIBQhBQsgBSACOgAAIAQhAgwBC0EEIQQgGCECA0AgAi8AACEFIAIgA0GwAmogBGpBA2oiBi8AADsAACAGIAU7AAAgAkECaiECIARBfmoiBA0ACyADLQCwAiECCyABQQA2ArQBIAEpAqwBITEgAUKAgICAwAA3AqwBIANBADYC2AEgAyAxNwPQASADQbgDakEBIBggAkEBakH/AXEQqRICQAJAIDGnRQ0AIDFCIIinIQIMAQsgA0HQAWoQlRogAygC1AEhAgsgAiADKQLAAzcCCCACIAMpArgDNwIAQQEhAgNAIAMgAkF/aiICNgLYASADIAMoAtQBIAJBBHRqIgIpAggiMTcDGCADIAIpAgA3AxACQAJAAkAgAy0AHCIJQQVPDQACQCAJRQ0AAkAgMaciHyAHKAIAIgJPDQAgAy0AESEgIAMtABAhIQJAAkACQCAIKAIAIB9BDGwiImoiAigCCCIGDQBBACEjDAELIAIoAgQhCkEAISMgBiEEA0AgBCAjakEBdiICIAZPDQIgAkEBaiAjICFB/wFxIAogAkEDdGotAAVLIgUbIiMgBCACIAUbIgRJDQALCyAJQX9qISQCQCAjIAZHDQAgFSADQdABaiAaICQQ0hIhAiAIKAIAIAcoAgAgHyAhICAgAhC8EgwFCwNAAkACQAJAAkACQAJAICMgCCgCACAiaiICKAIIIgRPDQAgAigCBCAjQQN0aiICKAIAISUCQAJAICBB/wFxIgUgAi0ABCIESQ0AIAItAAUiCkH/AXEiBiAhQf8BcSICTw0BCyAmQYB+cUEDciEmDAMLIAQgAkcNAQJAIAYgBUYNACAGIAVPDQJBAiEnIApBEHQgAkEIdHJBAnIhJiAKQQFqQf8BcUEIdCAgQRB0ckEBciEoQQAhKQwDCyADQQE2AvgCIAJBCHQgIEEQdHIhJkEAISlBACEoDAMLICMgBEHI4IQBEO4WAAsCQAJAAkACQAJAAkACQAJAAkACQAJAIAQgAk0iCQ0AIAYgBUYNAQsCQCAEIAJHDQAgBSAGSQ0CCwJAIAIgBE0iDA0AIAYgBUYNAwsCQCAJDQAgBiAFSQ0ECwJAIAwNACAFIAZJDQULAkAgBCAFTyIJDQAgBiACRg0GCwJAIAUgBEcNACACIAZJDQcLAkAgAiAGTw0AIAYgBUkNCAsCQCAJDQAgBSAGSQ0JC0Gs85oBQShBlOqEARCkIQALQQIhJyAEQQh0ICBBEHRyQQJyISggBEEQdCACQQh0ckGBgHxqISZBACEpDAkLIApBEHQgIEEBakH/AXFBCHRyIShBAiEnIAJBCHQgIEEQdHJBAnIhJkEAISkMCAsgIUEQdCAEQQh0ckGAgHxqISZBAiEnIAJBCHQgIEEQdHJBAnIhKEEAISkMBwsgBEEIdCAKQRB0ckECciEoIARBEHQgAkEIdHJBgYB8aiEmIApBAWpB/wFxQQh0ICBBEHRyQQFyISkMBQsgIUEQdCAEQQh0ckGAgHxqISYgCkEQdCAgQQFqQf8BcUEIdHIhKSACQQh0ICBBEHRyQQJyISgMBAsgIUEQdCAEQQh0ckGAgHxqISYgIUEBakH/AXFBCHQgIEEQdHJBAXIhKSACQYCCBGxBAnIhKAwDCyAKQRB0ICBBAWpB/wFxQQh0ciEpICBBEHQgAkEIdHJBgYB8aiEmIAVBgIIEbEECciEoDAILICFBEHQgBEEIdHJBgIB8aiEmIApBEHQgAkEIdHJBAnIhKCAKQQFqQf8BcUEIdCAgQRB0ckEBciEpDAELIARBCHQgIEEQdHJBAnIhKCAKQRB0ICBBAWpB/wFxQQh0ciEpIARBEHQgAkEIdHJBgYB8aiEmC0EDIScLICZB/wFxQQNGDQEgAyApOwGCAyADQfgCakEMaiApQRB2OgAAIAMgKDsA/wIgHCAoQRB2OgAAIAMgJjsB/AIgHSAmQRB2OgAAIAMgJzYC+AIgJ0EBRg0AIBkgJ0EDbGohKkEBIStBACEsIBkhLQNAICxBAWohLCAtLQACISAgLS0AASEhAkACQAJAAkAgLS0AAA4DAAIBAAsCQAJAAkAgJQ0AQQAhLgwBCyABQQA2AqgBIAEpAqABITEgAUKAgICAwAA3AqABIANBADYC6AEgAyAxNwPgASAVEIUPIS4CQAJAIDGnRQ0AIDFCIIinIS8MAQsgA0HgAWoQhxogAygC5AEhLwsgLyAuNgIEIC8gJTYCAEEBIQYDQCADIAZBf2oiBjYC6AEgLyAGQQN0aiICKAIAIhAgBygCACIETw0CAkAgCCgCACAQQQxsIg5qKAIIIgtFDQAgAigCBCEwQQAhAkEFIQQDQAJAAkACQAJAIBAgBygCACINTw0AIAIgCCgCACIPIA5qIgUoAggiCk8NASAFKAIEIARqIgUtAAAhCiAFQX9qLQAAIQkgBUF7aigCACIMRQ0CIBUQhQ8hBSAIKAIAIAcoAgAgMCAJIAogBRC8EgJAIAYgAygC4AFHDQAgA0HgAWoQhxogAygC5AEhLwsgLyAGQQN0aiIKIAU2AgQgCiAMNgIAIAMgBkEBaiIGNgLoAQwDCyAQIA1BuOCEARDuFgALIAIgCkGM4YQBEO4WAAsgDyANIDAgCSAKQQAQvBILIARBCGohBCALIAJBAWoiAkcNAAsLIAYNAAsgASgCoAEgHigCAEEEQQgQzxMgFiADKALoATYCCCAWIAMpA+ABNwIACwJAICtBAXENACAIKAIAIAcoAgAgIyAfICEgICAuELQODAQLAkACQCAfIAcoAgAiAk8NACAjIAgoAgAgImoiAigCCCIETw0BIAIoAgQgI0EDdGoiAiAgOgAFIAIgIToABCACIC42AgAMBQsgHyACQZzhhAEQ7hYACyAjIARBqOCEARDuFgALIBAgBEG44IQBEO4WAAsCQCAkRQ0AIANBuANqICUgGiAkEKkSAkAgAygC2AEiAiADKALQAUcNACADQdABahCVGgsgAygC1AEgAkEEdGoiBCADKQK4AzcCACAEIAMpAsADNwIIIAMgAkEBajYC2AELAkAgK0EBcQ0AIAgoAgAgBygCACAjIB8gISAgICUQtA4MAgsCQAJAIB8gBygCACICTw0AICMgCCgCACAiaiICKAIIIgRPDQEgAigCBCAjQQN0aiICICA6AAUgAiAhOgAEIAIgJTYCAAwDCyAfIAJBnOGEARDuFgALICMgBEGo4IQBEO4WAAsCQAJAIB8gBygCACICTw0AICwgJ0cNASAjIAgoAgAgImoiBCgCCE8NASAgQf8BcSAEKAIEICNBA3RqIgQtAARJDQEgBC0ABUH/AXEgIUH/AXFPDQYMAQsgHyACQbjghAEQ7hYACyAVIANB0AFqIBogJBDSEiECAkAgK0EBcQ0AIAgoAgAgBygCACAjIB8gISAgIAIQtA4MAQsCQAJAIB8gBygCACIETw0AICMgCCgCACAiaiIEKAIIIgVPDQEgBCgCBCAjQQN0aiIEICA6AAUgBCAhOgAEIAQgAjYCAAwCCyAfIARBnOGEARDuFgALICMgBUGo4IQBEO4WAAsgI0EBaiEjQQAhKyAtQQNqIi0gKkcNAAwJCwsCQCAkDQBBASEnDAgLIANBuANqICUgGiAkEKkSAkAgAygC2AEiAiADKALQAUcNACADQdABahCVGgsgAygC1AEgAkEEdGoiBCADKQK4AzcCACAEIAMpAsADNwIIQQEhJyADIAJBAWoiAjYC2AEMCAsgFSADQdABaiAaICQQ0hIhAiAIKAIAIAcoAgAgIyAfICEgICACELQOIAcoAgAhAgsgHyACSQ0ACyAfIAJBuOCEARDuFgALIAIgBkHo14QBEO4WAAsgHyACQbjghAEQ7hYAC0HY4IQBQSRB/OCEARCkIQALQQAgCUEEQaDohAEQiwoACyADKALYASECCyACDQALIAEoAqwBIBsoAgBBBEEQEM8TIBcgAygC2AE2AgggFyADKQPQATcCAAwACwsgAygCwAIgAygCxAJBBEEIEM8TDAALC0HM8IQBEPMdAAsCQAJAIAEoAiANACABQX82AiACQCABKAJgDQAgAUF/NgJgIANBuANqIAFBJGogAUHkAGoQnwggAyADKQK8AzcD+AIgAyADKALEAzYCgAMCQCADKAK4AyICQSpGDQAgAEEQaiADQbgDakEQakEw/AoAACAAIAMoAoADNgIMIAAgAykD+AI3AgQgACACNgIADAMLIAMgAykD+AI3AxAgAyADKAKAAzYCGAJAIAEoArgBDQAgAUEANgLEASABQX82ArgBAkAgASgCyAENACABQbwBaiEPIAFBADYC1AEgAUF/NgLIAQJAIAEoArwBDQAgDxCHGgsgAUHMAWohDSABKALAAUIBNwIAIAFBkAFqIgwoAgAhBiABQYwBaiEIQQEhAgJAA0AgASACQX9qIgI2AsQBAkACQCABKALAASACQQN0aiICKAIAIgUgBk8NACACKAIEIgIgCCgCACAFQQxsaiIEKAIITw0BA0AgBCgCBCACQQN0aiIELQAFIQogBC0ABCEJAkAgASgC1AEiBiABKALMAUcNACANEJcaCyABKALQASAGQQF0aiIHIAo6AAEgByAJOgAAIAEgBkEBaiIGNgLUAQJAAkAgBCgCAEUNAAJAIAEoAsQBIgYgASgCvAFHDQAgDxCHGgsgASgCwAEgBkEDdGoiCiACQQFqNgIEIAogBTYCACABIAZBAWo2AsQBIAQoAgAhBUEAIQIMAQsgA0G4A2ogA0EQaiABKALQASAGEIwHAkAgAygCuAMiBEEqRg0AIANB+AJqIANBuANqQQRyQTz8CgAADAYLAkAgASgC1AEiBEUNACABIARBf2o2AtQBCyACQQFqIQILIAUgDCgCACIGTw0BIAIgCCgCACAFQQxsaiIEKAIITw0CDAALCyAFIAZBuOCEARDuFgALAkAgASgC1AEiAkUNACABIAJBf2o2AtQBCyABKALEASICDQALQSohBAsgASABKALIAUEBajYCyAEgASABKAK4AUEBajYCuAECQCAEQSpGDQAgAEEEaiADQfgCakE8/AoAACAAIAQ2AgAMBQsgACADQRBqENAKIAEgASgCYEEBajYCYCABIAEoAiBBAWo2AiAgASABKAKEAUEBajYChAEMCwtB3NCEARDzHQALQczQhAEQ8x0AC0Hs8IQBEPMdAAtB3PCEARDzHQALIAEgASgCYEEBajYCYCABIAEoAiBBAWo2AiAgASABKAKEAUEBajYChAEMBgsCQAJAAkAgASgC2AENACABQX82AtgBIAFB3AFqIQIgASgC5AFFDQEgASABLwHsAUEBaiIEOwHsASAEQf//A3EgBEYNAiADQQA2AsADIANCADcDuAMgA0EAOwHEAyADQfgCaiADQbgDaiABKALoARDfCyABKALcASABQeABaigCAEEEQRAQzxMgAiADKAKAAzYCCCACIAMpAvgCNwIADAILQbzxhAEQ8x0ACyADQQA2AsADIANCADcDuAMgA0EAOwHEAyADQfgCaiADQbgDaiABKALoARDfCyABKALcASABQeABaigCAEEEQRAQzxMgAiADKAKAAzYCCCACIAMpAvgCNwIACyADQbgDaiABEP8WIAMoArwDIQwCQAJAIAMoArgDIgJBKkYNACAAQQhqIANBuANqQQhqQTj8CgAAIAAgDDYCBCAAIAI2AgAMAQsgA0G4A2ogARCvGCADKAK8AyENAkAgAygCuAMiAkEqRg0AIABBCGogA0G4A2pBCGpBOPwKAAAgACANNgIEIAAgAjYCAAwBCyADQRBqQQFqIQ8CQAJAA0AgESASRg0CIANB+AJqIBEoAgAgESgCBBD0HCARQQhqIREDQCADQcACaiADQfgCahD+AgJAAkACQAJAAkAgAy0AwAJBBEYNACADIAMtAMgCOgAYIAMgAykAwAIiMTcDECAPIDGnQQF0Qf4BcWohCCANIQQgDyECA0AgASgC5AEiBUUNAiAFIAStIjFCpcaIocic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AiAfNgJgIAIgHDYCXCACIB02AlggAiAJOgCpASACIBI2AqQBIAIgCkEBdDoAoQEgAkECIA1rOgCiASACQQIgD2s6AJ4BIAJBAiAQazoAnQEgAiAROgCjASACQQIgDms6AJ8BIAJBAiAMazoAoAEgAkEBOgCcASACICc2ArABIAIgAzYCrAEgAkEANgK8ASACQoCAgIDAADcCtAEgAkEANgLIASACQoCAgIDAADcCwAEgAkIBNwLIAiACQoCAgIAQNwLAAiACQgE3ArgCIAJCADcCsAIgAkIENwKoAiACQgA3AqACIAJCBDcCmAIgAkIANwKQAiACQgQ3AogCIAJCADcCgAIgAkIENwL4ASACQgA3AvABIAIgAi0AqgE6ANcCIAIgAi0AqAEiAToA1gIgAiACLQCpAToA1QIgAiACKAKkATYC0AIgAiABOgDUAiACQoCAgIBwNwL8ASACQoCAgIBwNwKMAiACKAKsASEDIAIgAigCsAEiDjYC5AIgAiADNgLgAiACQoGAgIAQNwLEAiACIAE6ANQCIAJBADYC8AEgAkEANgKcAiACQQA2AoACIAJBADYCkAIgAiACQfABajYC3AIgAkEBNgK4AyACIAIpAsACIjw3ArwDIAJBATYCxAMgAiA8NwKYAyACQQA2ApQDIAJCgICAgMAANwKMAyACIAIpA7gDNwKgAyACIAIpA8ADNwKoAyACQbADakEYaiEBIAJBsANqQShqIRIgAkH4AmohFSACQbADakEcaiEXIAJBjANqQRRqIQkgAkG8A2ohKCACQbgDaiEpIAJBsANqQcQAaiEaQQQhCkEAIQQDQCACQdwCahDkBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCwAIgDkYNAAJAAkACQAJAAkACQAJAAkACQAJAIAJB3AJqEJYKIgNBWGoOBAECBgcACwJAIANBhX9qDgIIAwALIANBP0YNBCADQdsARg0DAkACQAJAAkACQCACQdwCahCWCiIDQaR/ag4DBAECAAsgA0EkRg0CIANBLkYNDAsgKCACQdwCahCMDiACQdwCahCiCRogAkEAOgDUAyACIAM2ArgDQYKAgIB4IQMgAkGCgICAeDYCtAMMGAsgKSACQdwCahCMDiACQdwCahCiCRogAkEAOgDQAwwWCyApIAJB3AJqEIwOIAJB3AJq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CyAEQX9qIQEMBgsgCg0BDAMLIApFDQIMAQsgAkEPNgKwAyACQdgEaiACQbADahCaEgsgASALNgIIIAEgCTYCBCABIAM2AgAgASAKQX9qNgIQIAEgC0EIajYCDAwICyACQbADaiACQYgFaiADKAIAIANBBGooAgAQbyACKAKwAyIDQYCAgIB4Rw0DIAFBbGohASAEQX9qIgQNAAtBACEBCyACIAE2AsQFCwJAIAIoAtgEIgFB/////wdPDQAgAiACKALkBCIDNgKMAyACIAFBAWo2AtgEAkACQCADQQFHDQAgAiABNgLYBCACQbADaiACQdgEahDpEiACKAKwA0EQRw0BQcjElwEQsCMAC0EAIAJBjANqQcTgmgFBACACQdjElwEQoxwACyACIAIoAsgDNgLABCACIAIpAsADNwO4BCACIAIpArgDNwOwBCACIAIpArADNwOoBCAaIAJBqARqEL0MQQEhAUGAgICAeCEDDAoLQbjElwEQ9B0ACyAaIAxBJPwKAABBACEBDAgLIAFBf2ohASADKAIEIgNBCGohBEEDIQkLIAGtQiCGIASthCE8IAMhCwsCQCACKALEBSIEIAIoArwFRw0AIAJBvAVqEI8aCyACKALABSAEQRRsaiIBIDw3AgwgASADNgIIIAEgCTYCBCABIA02AgAgBEEBaiEECyACIAQ2AsQFIAshDQwACwtBwOqEARCwIwALIAItAJQBISsgAi0AkwEhLCACLQCSASEtIAIoAsgBIQkgAigCxAEhAQJAIAVBAUsNACAGIAYoAgAiA0EBajYCACADQX9MDQ0LIAItAJkBIS4gAi0AmAEhLyACLQCXASEwIAItAJYBITEgAi0AlQEhMkEAITMgAkGwA2ogCUEAQQRBBBC/DyACKAK0AyE0AkAgAigCsANBAUYNACACKAK4AyE1AkAgCUUNACA1IQMgCSEEA0AgAyABNgIAIANBBGohAyABQRxqIQEgBEF/aiIEDQALIAkhMwtBACEVIAJBADYC6AUgAkKAgICAwAA3AuAFAkACQCAzDQBBASE2QQQhN0EAIQtBACE4QQQhEkEAISoMAQsgM0ECdCELQQAhBEEEIQpBACEJA0AgNSAEaigCACEDEOogIgEgAygCGCIDLQAyOgAyIAEgAy8BMDsBMCABIAMpAig3AiggASADKQIgNwIgIAEgAykC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NgL0ASACIAJBjANqNgLwAQJAIAJBiAVqQZTPhAFBzZWAASACQfABahDGBg0AIAJB8wA2AvQBIAIgDjYC8AEgAkGIBWpBlM+EAUHxkYABIAJB8AFqEMYGDQAgAigCjAMgAigCkANBAUEBENUTDA4LIAIoAowDIAIoApADQQFBARDVEwwKCyACQoCAgIAQNwLwASACQQA2AvgBIAJB8AFqQf4AQc8AEOERIAIgAigC+AE2AjggAiACKQLwATcDMCACQYgFakETEIIfIAIoAowFIAIoApAFIgNqIgFBACkAmMWXATcAACABQQApAKDFlwE3AAggAUEAKACnxZcBNgAPIAIgA0ETajYCkAUgAkHyADYC9AEgAiACQTBqNgLwASACQYgFakGUz4QBQZy2gQEgAkHwAWoQxgZFDQcMCAsgAigC3AMhAyACKALYAyEEAkAgDUERSw0AQQEgDXRBgMAJcUUNACACQbwDaiEBCyACIAE2AugEIAIgDDYC4AQgAiADNgLcBCACIAQ2AtgEIAIgAkHgA2o2AuQEIAJBqARqIAJB2ARqEO4HIAJB4ARqIQ4gAigC2AQhAQJAAkACQCACKALcBCIDQQdLDQAgA0UNAQNAIAEtAABBCkYNAyABQQFqIQEgA0F/aiIDDQAMAgsLIAJBCGpBCiABIAMQlAogAigCCEEBRg0BCyACQYgFakETEIIfIAIoAowFIAIoApAFIgNqIgFBACkAmMWXATcAACABQQApAKDFlwE3AAggAUEAKACnxZcBNgAPIAIgA0ETajYCkAUgAkHwAWogAkHYBGoQ7gcgAkGMA2ogAkHwAWoQwwIgAkHwAWoQqBUgAkHyADYC9AEgAiACQYwDajYC8AECQCACQYgFakGUz4QBQc2VgAEgAkHwAWoQxgYNACACQfQANgL0ASACIA42AvABIAJBiAVqQZTPhAFB8ZGAASACQfABahDGBg0AIAIoAowDIAIoApADQQFBARDVEwwHCyACKAKMAyACKAKQA0EBQQEQ1RMMBAsgAkKAgICAEDcC8AEgAkEANgL4ASACQfABakH+AEHPABDhESACIAIoAvgBNgI4IAIgAikC8AE3AzAgAkGIBWpBExCCHyACKAKMBSACKAKQBSIDaiIBQQApAJjFlwE3AAAgAUEAKQCgxZcBNwAIIAFBACgAp8WXATYADyACIANBE2o2ApAFIAJB8gA2AvQBIAIgAkEwajYC8AEgAkGIBWpBlM+EAUGctoEBIAJB8AFqEMYGRQ0BDAILIAJCgICAgBA3AvABIAJBADYC+AEgAkHwAWpBEhCCHyAPIAIpAvABNwIAIAIoAvQBIAIoAvgBIgNqIgFBACkArJaFATcAACABQQApALSWhQE3AAggAUEALwC8loUBOwAQIA8gA0ESajYCCAwMCyACQcwBaiACQagEahDDAiACQfIANgL0ASACIAJBzAFqNgLwAQJAIAJBiAVqQZTPhAFBzZWAASACQfABahDGBg0AIAJB8gA2AvQBIAIgAkEwajYC8AEgAkGIBWpBlM+EAUGctoEBIAJB8AFqEMYGDQACQCACKAK8BCIDRQ0AQQAhBCACQQA2AvACIAJCgICAgMAANwLoAiACKAK4BCIJQRBqIQEgCUEUaiEJIANBGGwhCkEEIQ1BACEDA0AgAiAJKAIAQX9qNgL8BCACQQc2AowCIAJBBzYChAIgAkEHNgL8ASACQQc2AvQBIAIgATYCgAIgAiABQXhqNgL4ASACIAFBdGo2AvABIAIgAkH8BGo2AogCIAJBjANqQd+xgQEgAkHwAWoQyAgCQCADIAIoAugCRw0AIAJB6AJqEJIaIAIoAuwCIQ0LIA0gBGoiCyACKAKUAzYCCCALIAIpAowDNwIAIAIgA0EBaiIDNgLwAiABQRhqIQEgCUEYaiEJIARBDGohBCAKQWhqIgoNAAsgAkHwAWogAigC7AIgA0GS8poBQQEQtgYgAkHyADYCkAMgAiACQfABajYCjAMgAkGIBWpBlM+EAUGctoEBIAJBjANqEMYGIQEgAigC8AEgAigC9AFBAUEBENUTIAJB6AJqEI0YIAENAQsgAkH0ADYC9AEgAiAONgLwASACQYgFakGUz4QBQfGRgAEgAkHwAWoQxgZFDQMLIAIoAswBIAIoAtABQQFBARDVEwsgAigCMCACKAI0QQFBARDVEwsgAkGoBGoQqBUMBQsgAigCzAEgAigC0AFBAUEBENUTIAIoAjAgAigCNEEBQQEQ1RMLIAJBqARqEKgVDAYLIAJBzAFqIAJBqARqEMMCIAJB8gA2AvQBIAIgAkHMAWo2AvABAkAgAkGIBWpBlM+EAUHNlYABIAJB8AFqEMYGDQAgAkHyADYC9AEgAiACQTBqNgLwASACQYgFakGUz4QBQZy2gQEgAkHwAWoQxgYNAAJAIAIoArwEIgNFDQBBACEEIAJBADYC8AIgAkKAgICAwAA3AugCIAIoArgEIglBEGohASAJQRRqIQkgA0EYbCEKQQQhDUEAIQMDQCACIAkoAgBBf2o2AvwEIAJBBzYCjAIgAkEHNgKEAiACQQc2AvwBIAJBBzYC9AEgAiABNgKAAiACIAFBeGo2AvgBIAIgAUF0ajYC8AEgAiACQfwEajYCiAIgAkGMA2pB37GBASACQfABahDICAJAIAMgAigC6AJHDQAgAkHoAmoQkhogAigC7AIhDQsgDSAEaiILIAIoApQDNgIIIAsgAikCjAM3AgAgAiADQQFqIgM2AvACIAFBGGohASAJQRhqIQkgBEEMaiEEIApBaGoiCg0ACyACQfABaiACKALsAiADQZLymgFBARC2BiACQfIANgKQAyACIAJB8AFqNgKMAyACQYgFakGUz4QBQZy2gQEgAkGMA2oQxgYhASACKALwASACKAL0AUEBQQEQ1RMgAkHoAmoQjRggAQ0BCyACQfMANgL0ASACIA42AvABIAJBiAVqQZTPhAFB8ZGAASACQfABahDGBkUNBAsgAigCzAEgAigC0AFBAUEBENUTCyACKAIwIAIoAjRBAUEBENUTCyACQagEahCoFQtBzZSbAUE3IAJB7wVqQazPhAFBhJWbARDPFAALIAIoAswBIAIoAtABQQFBARDVEyACKAIwIAIoAjRBAUEBENUTCyACQagEahCoFQsgDyACKAKQBTYCCCAPIAIpAogFNwIACwJAAkAgAigCsANFDQACQEEAIAIoArgDIgFBXmoiAyADIAFLGw4CAQACCyACKALAA0GEgICAeEgNASACQcADahDKIwwBCyAMEO0gCyAAQQA2AgALIAJB2ABqEIUbIAJB8AVqJAAPCyACIAs2ApwDIAIgDDYCmAMgAiAENgKUAyACIAo2ApADIAIgAzYCjAMMAwtBg4CAgHghAyACQYOAgIB4NgK0AwsgAigCxAMhCiACKALAAyEMIAIoArwDIQ0gAigCuAMhDyACQZgFaiABQST8CgAAAkACQAJAAkACQAJAAkAgA0GCgICAeEkNAAJAAkACQAJAIANB/v///wdqDgUAAQIDBAALQSAQiQEiC0UNBSALIAo2AgwgCyAMNgIIIAsgDTYCBCALIA82AgAgCyACKQOYBTcCECALIAIpA6AFNwIYQQIhAwwEC0EcEIkBIgtFDQUgCyAKNgIMIAsgDDYCCCALIA02AgQgCyAPNgIAIAsgAikDmAU3AhAgCyACKAKgBTYCGEEEIQMMAwtBGBCJASILRQ0FIAsgCjYCDCALIAw2AgggCyANNgIEIAsgDzYCACALIAIpA5gFNwIQQQMhAwwCC0EcEIkBIgtFDQUgCyAKNgIMIAsgDDYCCCALIA02AgQgCyAPNgIAIAsgAikDmAU3AhAgCyACKAKgBTYCGEEGIQMMAQtBOBCJASILRQ0FIAsgCjYCECALIAw2AgwgCyANNgIIIAsgDzYCBCALIAM2AgAgC0EUaiACQZgFakEk/AoAAEEFIQMLAkAgBCACKAKMA0cNACACQYwDahCNGgsgAigCkAMiCiAEQQN0aiIMIAs2AgQgDCADNgIADAULQQRBIBCNJAALQQRBHBCNJAALQQRBGBCNJAALQQRBHBCNJAALQQRBOBCNJAALIAIgBEEBaiIENgKUAwwACwsAC4teAiR/BX4jAEHgAmsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIDQXRqQQcgA0ELSxsOJgQAAQIDBgcICQoLDA0ODxAREhMUFRYXGEMZGhtNTEtKSUhHRkVEBAsgASgCCCEEIAEoAhQhBSABKAIQIQYgAkHAAWogASgCDCIHQQRBEBCBDyACKALEASEIIAIoAsABQQFGDUEgAigCyAEhCQJAIAhFDQAgB0EEdCEKIAkhAyAIIQsDQCAKRQ0BQQIhDAJAIAQoAgBBAkYNAEHAABCJASIBRQ1DIAJBwAFqIARBDGooAgAQTCABIAIpA/gBNwM4IAEgAikD8AE3AzAgASACKQPoATcDKCABIAIpA+ABNwMgIAEgAikD2AE3AxggASACKQPQATcDECABIAIpA8gBNwMIIAEgAikDwAE3AwAgBEEEaikCACEmIAQoAgAhDAsgBEEQaiEEIAMgDDYCACADQQxqIAE2AgAgA0EEaiAmNwIAIANBEGohAyAKQXBqIQogC0F/aiILDQALCyAAIAU2AhQgACAGNgIQIAAgBzYCDCAAIAk2AgggACAINgIEIABBDTYCAAxQCyABKAIIIQQgASgCFCENIAEoAhAhDiACQcABaiABKAIMIgVBBEEMEIEPIAIoAsQBIQkgAigCwAFBAUYNPiACKALIASEGAkAgCUUNACAFQQxsIQogBiEDIAkhCwNAIApFDQECQAJAIAQoAgAiBw0AQfAAEIkBIgxFDUEgAkHAAWogBEEEaigCABDWAiAMIAJBwAFqQfAA/AoAAEEAIQEMAQsgBEEIaigCACEIIARBBGooAgAhDEHAABCJASIBRQ0/IAJBwAFqIAcQTCABIAIpA/gBNwM4IAEgAikD8AE3AzAgASACKQPoATcDKCABIAIpA+ABNwMgIAEgAikD2AE3AxggASACKQPQATcDECABIAIpA8gBNwMIIAEgAikDwAE3AwALIARBDGohBCADIAE2AgAgA0EIaiAINgIAIANBBGogDDYCACADQQxqIQMgCkF0aiEKIAtBf2oiCw0ACwsgACANNgIUIAAgDjYCECAAIAU2AgwgACAGNgIIIAAgCTYCBCAAQQ42AgAMTwsCQAJAIAEtABwiBEECRw0ADAELIAEoAhghCyABKAIUIQwgASgCECEKIAEpAwgiJkIDg0IAUg0AICanIgMgAygCACIDQQFqNgIAIANBf0wNTgtByAAQiQEiA0UNOiADIAEoAiAQhQMgACADNgIgIAAgBDoAHCAAIAs2AhggACAMNgIUIAAgCjYCECAAICY3AwggAEEPNgIADE4LIAEtABAhBCABKAIMIQogASgCCCEMQcAAEIkBIgMNAUEIQcAAEI0kAAsgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIAAgASkDADcDAAxMCyADIAEoAgQQTCAAIAQ6ABAgACAKNgIMIAAgDDYCCCAAIAM2AgQgAEEQNgIADEsLIAEtABEhBCABLQAQIQogASgCCCEMIAEoAgQhC0HAABCJASIDRQ01IAMgASgCDBBMIAAgBDoAESAAIAo6ABAgACADNgIMIAAgDDYCCCAA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AzAgAyACKQPoATcDKCADIAIpA+ABNwMgIAMgAikD2AE3AxggAyACKQPQATcDECADIAIpA8gBNwMIIAMgAikDwAE3AwAMAQsgASgCHCEJIAEoAhghB0EAIQQCQCABKQMQIiZCA4NCAFENAAwBCyAmpyIBIAEoAgAiAUEBajYCACABQX9MDUYLIAAgCjYCLCAAIAw2AiggACALNgIkIAAgCDYCICAAIAk2AhwgACAHNgIYIAAgJjcDECAAIAM2AgwgACAENgIIIABBFTYCAAxGCyABKAIUIQwgASgCECELQcAAEIkBIgNFDSogAyABKAIEEExBwAAQiQEiBEUNKSAEIAEoAggQTEHAABCJASIKRQ0oIAogASgCDBBMIAAgDDYCFCAAIAs2AhAgACAKNgIMIAAgBDYCCCAAIAM2AgQgAEEWNgIADEULIAEoAiQhCiABKAIgIQwgASgCHCELAkACQAJAIAEtABgiA0F9akEBIANBAksbQf8BcQ4DAAECAAsgAiABLwAZOwEQIAIgAS0AGzoAEgxDCyACIAEvABk7ARAgAiABLQAbOgASDEILQcAAEIkBIgRFDSYgBCABKAIQEExBBSEDDEILIAEoAhwhCiABKAIYIQwgASgCFCELQcAAEIkBIgNFDSQgAyABKAIQEExBgICAgHghBAJAIAEoAgRBgICAgHhGDQAgAkHAAWogAUEEahDRCiACKQLEASEmIAIoAsABIQQLAkACQCABKAIgDQBBACEBDAELIAFBIGoQqgshAQsgACABNgIgIAAgCjYCHCAAIAw2AhggACALNgIUIAAgAzYCECAAICY3AwggACAENgIEIABBGDYCAAxDCyABKAIIIQMgASgCFCEJIAEoAhAhBSACQcABaiABKAIMIghBBEEEEIEPIAIoAsQBIQsgAigCwAFBAUYNIiACKALIASEHAkAgC0UNACAIQQJ0IQQgByEKIAshDANAIARFDQFBwAAQiQEiAUUNIyACQcABaiADKAIAEEwgASACKQP4ATcDOCABIAIpA/ABNwMwIAEgAikD6AE3AyggASACKQPgATcDICABIAIpA9gBNwMYIAEgAikD0AE3AxAgASACKQPIATcDCCABIAIpA8ABNwMAIAogATYCACAEQXxqIQQgCkEEaiEKIANBBGohAyAMQX9qIgwNAAsLIAAgCTYCFCAAIAU2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RQ0DIAMgASgCBBBMIAAgBDYCDCAAIAo2AgggACADNgIEIABBIzYCAAw4CyABKAIUIQMgASgCECEEIAEoAiwhCiABKAIoIQwCQCABKQMIIiZCA4NCAFINACAmpyILIAsoAgAiC0EBajYCACALQX9MDTcLIAEoAiQhCyABKAIgIQgCQCABKQMYIidCA4NCAFINACAnpyIBIAEoAgAiAUEBajYCACABQX9MDTcLIAAgCjYCLCAAIAw2AiggACALNgIkIAAgCDYCICAAICc3AxggACADNgIUIAAgBDYCECAAICY3AwggAEElNgIADDcLIAAgASkDODcDOCAAIAEpAzA3AzAgACABKQMoNwMoIAAgASkDIDcDICAAIAEpAxg3AxggACABKQMQNwMQIAAgASkDCDcDCCAAIAEpAwA3AwAMNgsCQEGgARCJASIKRQ0AIAEoAgQiESgCBCEWIBEoAgAhFyACQZABaiARQcAAahC9BiARKAKAASEYIBEoAnQhGSARKAJwIRogAkHAAWogESgChAEiG0EIQdgAEIEPIAIoAsQBIRwCQCACKALAAUEBRg0AIAIoAsgBIRMCQAJAAkAgHEUNACAbQdgAbCEdQQAhBCAcIQcDQCAdIARGDQECQAJAAkACQAJAAkACQCAYIARqIgEoAgBBBUcNACABQQxqKAIAIQsgAUEIaigCACEMQcAAEIkBIgNFDQEgAkHAAWogAUEEaigCABBMIAMgAikD+AE3AzggAyACKQPwATcDMCADIAIpA+gBNwMoIAMgAikD4AE3AyAgAyACKQPYATcDGCADIAIpA9ABNwMQIAMgAikDyAE3AwggAyACKQPAATcDAEEFIQgMBgsgAUEsaigCACEJIAFBKGooAgAhBQJAAkAgAUEwaikDACImUA0AIAFBPGooAgAhHiABQThqKAIAIRUgAUHUAGooAgAhDSABQdAAaigCACEGAkAgJkIDg0IAUg0AICanIgMgAygCACIDQQFqNgIAIANBf0wNQwsgAUHMAGooAgAhDiABQcgAaigCACEQIAFBwABqKQMAIienIRQCQCAnQgODQgBSDQAgFCAUKAIAIgNBAWo2AgAgA0F/TA1DCyAnQiCIpyEfDAELIAFBxABqKAIAIR8gAUHAAGooAgAhFCABQThqKQMAIianIRUCQCAmQgODQgBSDQAgFSAVKAIA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ARDuFgALIAIoAoQBIAVBAnRqKAIAIgVBAEgNAQsgBEEFNgLQAiAEIAU2AtQCDAELIAQgAjYC3AIgBCABNgLYAiAEQdACaiAEQdgCaiAJIAMgDBCNAQsgBEGYAWogBEHQAmogCxDhDCAEKAKcASELIAQoApgBQQFHDQEgACALNgIEQQIhCAsgACAINgIADBsLAkAgAigCsAFBAUcNACACIAIoArQBIgUgAigCuAEiCWsgCSAFayAFIAlLGyACKAJwajYCcAsgAiAINgK4ASACIAg2ArQBIAJBATYCsAECQCAIIAZPDQAgAUHgAGohFCAGQQFqIRUgAUHgAmohCSABQeAEaiINQRhqIRYgDUEQaiEXA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgC0H///8/Sw0AIAggBkkNASAIIQUMFgsgAigCsAFFDQIgAiAINgK4ASAIIBFJDQEgCCARQbCThQEQ7hYACyACKAJ8IRggAigCeCEMIAghBQNAAkAgDCALIAkgECAFaiIDLQAAai0AAGpBAnRqKAIAIghB////P00NACALIQMgBSETDAgLAkAgBUEDaiITIAZJDQAgCCELDBYLIAwgCCAJIANBAWotAABqLQAAakECdGooAgAiC0H///8/Sw0FIAwgCyAJIANBAmotAABqLQAAakECdGooAgAiCEH///8/Sw0GIAwgCCAJIANBA2otAABqLQAAakECdGooAgAiC0H///8/Sw0EIAVBBGoiBSAGSQ0ADBULCyALQf///z9xIAkgECAIai0AACIDai0AAGoiBSACKAJ8IgxPDQECQAJAIAIoAnggBUECdGooAgAiDEEASA0AQQAhBQwBCyAEIAI2ArgCIAQgATYCtAIgBEGIAWogBEG0AmogCyADQQh0EK0BIAQoAowBIQwgBCgCiAEhBQsCQCAFQQFxDQAgDCELIAghBQwHCyAEQQE6ALQCIAQgCDYCuAIgBEG0AmoQyB4hBSAAQQI2AgAgACAFNgIEDDELQeTphAFBH0GE6oQBENgbAAsgBSAMQbjmhAEQ7hYACyAIIQMgCyEIDAILIAVBAWohEyAIIQMgCyEIDAELIAVBAmohEyALIQMLAkAgCEEASA0AIBMhBSAIIQsMAgsgAigCsAFFDQIgAiATNgK4ASAD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kAI3AwAgBigCACICQQtGDQELIAEtAKABQQhHDQBBCyEHIAZBCzYCACAFIA4pAgA3A1ggBSAOKAIINgJgAkAgDSgCAEEKRg0AIA0QtQsgBigCACEHCyABIAI2AgggDCAPKQIANwIAIAwgDygCCDYCCCABKQOwASElIAkgBSkDWDcCACAJIAUoAmA2AgggASAlNwOoASABQQs2AogBAkACQCAHQQtGDQAgBSAOKAIINgJgIAUgDikCADcDWAJAIAJBCkYNACANELULCyANIAc2AgAgDCAPKQIANwIAIAwgDygCCDYCCAwBCyAFQdgAaiABEM4BCyABKQOwASElIAkgBSkDWDcCACAJIAUoAmA2AgggASAlNwOoAUEBISILIAEtALgBIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA0AIAdB/wFxQQRHDQAgBigCACECIAZBCzYCAAJAAkAgAkELRg0AIAUgDigCCDYCYCAFIA4pAgA3A1gCQCANKAIAQQpGDQAgDRC1CwsgDSACNgIAIAwgDykCADcCACAMIA8oAgg2AggMAQsgBUHYAGogARDOAQsgASABKAK0ATYCrAEgASABKAKwASIaNgKoASAJIAUpA1g3AgAgCSAFKAJgNgIIIAEgASgCeCICQcAAcjYCeCAFQRBqIAEQrQMgBSgCECEHIAEgAjYCeCAFKAIUIRsgB0EBRg0ZIAUgGzYC8AECQAJAAkAgAS0AuAEiAkEFRyIcDQAgBigCACECIAZBCzYCAAJAAkAgAkELRg0AIAUgDigCCDYCYCAFIA4pAgA3A1gCQCANKAIAQQpGDQAgDRC1CwsgDSACNgIAIAwgDykCADcCACAMIA8oAgg2AggMAQsgBUHYAGogARDOAQsgASABKAK0ASIjNgKsASABIAEoArABNgKoASAJIAUpA1g3AgAgCSAFKAJgNgIIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCygCACIHQXRqQQcgB0ELSxsOJgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlAAsg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IAEgDToAJgsgAkHgAGokAAuvVAJGfwh+IwBBwAdrIgMkACABQQxqIQQgAUGYAWohBSABQYwBaiEGIAFBCGohByABQYgBaiEIIAFBsAFqIQlBjwKtQiCGIklBhoKbAa2EIUogSUGl9ZoBrYQhSyBJQZzkmgGthCFMIElBneSaAa2EIU0gA0GCAWohCiADQdADakEIaiELIANB0ANqQQxqIQwgA0GgB2pBFWohDSADQdADakEVaiEOIANBmANqQRVqIQ8gA0HQA2pBBHIhECADQZgDakEEciERIANBgAdqQRVqIRIgA0GgB2pBBHIhEyADQYAHakEEciEUIANBwARqQQRyIRUgA0GQBmpBFWohFiADQZAGakEEciEXIANB2AVqQRVqIRggA0HYBWpBBHIhGSADQcgGakEVaiEaIANByAZqQQRyIRsgA0GYA2pBFGohHCADQbAFakEEciEdIANB0ANqQRRqIR4gA0GQBWpBFWohHyADQZAFakEEciEgIANBgAdqQQxqISEgA0HABGpBDGohIiADQagEakEEciEjIANB0ANqQRBqISQgA0HyA2ohJSAAKAIAISYCQAJAA0AgAS0AuAEhAAJAAkAgJi0AACInQaQBRg0AIAMgJzoAoAcCQCAAQf8BcSIoQaMBRw0AIANBmANqQaMBELIlIAEoArQBIQAgASgCsAEhAiADIEkgA0GgB2qthDcD0AIgA0HQA2pBzZWAASADQdACahCvECADIAMpApgDNwLcAyADIAMoAqADNgLkAyABIAIgACADQdADahDcHQwECyAoICdGDQMMAQsgAEH/AXFBowFGDQILIAkoAgAhKAJAAkAgAEH/AXFBGEYNAEEAISlBBCEnQQAhKgwBCyADQdADaiABQQEQ2gEgAygC1AMhJwJAIAMoAtADIilBgICAgHhGDQAgAygC2AMhKiABLQC4ASEADAELICchKwwDCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB/wFxQah/aiIADggBAAAAAAAAAQALIAEgASgCeCIAQf//+/9+cUGAgICAAXI2AnggAyAqNgLYAyADICc2AtQDIAMgKTYC0AMgA0HoAGogASAoQQEgA0HQA2oQQCABIAA2AnggAygCaCIsQRNHDQEgAygCbCErDCwLAkAgAS0Ae0HgAHENACABKAK0ASEAIAEoArABISggA0HGgICAeDYC0AMgKCAAIANB0ANqELMbIStBCiEoDCgLAkACQAJAIAAOCAIBAQEBAQEAAQsgCSgCACEoIAgoAgAiAEELRg0DDAQLQdzomgFB+QFB2OmaARDXGwALIAMgKjYCoAMgAyAnNgKcAyADICk2ApgDIANB0ANqIAEgA0GYA2oQSCADKALUAyErIAMoAtADIihBCUYNKyADICUpAQ43AaYBIAMgJSkBCDcDoAEgAyAlKQEANwM4IAMgAykDoAE3A0AgAyADKQGmATcBRiADLQDxAyEtIAMtAPADIS4gAygC7AMhLyADKALoAyEwIAMoAuQDITEgAygC4AMhMiADKALcAyEzIAMoAtgDISwMKAsgAyAKKQEANwM4IAMgCikBCDcDQCADIAopAQ43AUZBCSEoIAMtAIEBIS0gAy0AgAEhLiADKAJ8IS8gAygCeCEwIAMoAnQhMSADKAJwITIgAygCbCEzDCcLIAcpAwAhTiAHKQMIIU8gAUEKNgIIIAMgTzcDoAMgAyBONwOYAyAkIAEQzgEgBykDACFOIAcpAwghTyABQQo2AgggAyBPNwPYAyADIE43A9ADAkACQCABKAKIAUEOcUEKRw0AIAggAykD6AM3AxggCCADKQPgAzcDECAIIAMpA9gDNwMIIAggAykD0AM3AwAMAQsgCBC1CyAIIAMpA9ADNwMAIAggAykD2AM3AwggCCADKQPgAzcDECAIIAMpA+gDNwMYIAcoAgBBCkYNACAHELULCyAHIAMpA6ADNwMIIAcgAykDmAM3AwAgCCgCACIAQQtHDQAgBykDACFOIAcpAwghTyABQQo2AgggAyBPNwOgAyADIE43A5gDICQgARDOASAHKQMAIU4gBykDCCFPIAFBCjYCCCADIE83A9gDIAMgTjcD0AMgASgCiAFBDnFBCkcNASAIIAMpA+gDNwMYIAggAykD4AM3AxAgCCADKQPYAzcDCCAIIAMpA9ADNwMADAMLIAEtAKABIitBCEcNAyADQTBqIAEQrQMgAygCNCErIAMoAjBBAXFFDQEgKyE0DCMLIAgQtQsgCCADKQPQAzcDACAIIAMpA9gDNwMIIAggAykD4AM3AxAgCCADKQPoAzcDGCAHKAIAQQpGDQEgBxC1CwwBCwJAAkAgAS0AuAFBBkYNACABKAKsASE1DAELIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASABKAK0ASI1NgKsASABIAEoArABNgKoASAJIAMpA9ADNwIAIAkgAygC2AM2AggLQQkhAEESITYgKyE3ICghOAwgCyAHIAMpA6ADNwMIIAcgAykDmAM3AwAgCCgCACIAQQtGDQEgAS0AoAEhKwsgK0H/AXENASADQShqIAEQrQMgAygCLCErIAMoAihBAXFFDQIgKyE0DB8LQQshAAsCQCABKAJ4IitBAnENACABICtBCnI2AngLAkACQAJAAkACQAJAAkAgAS0AuAEiK0HfAEcNACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASkDsAEhTiAJIAMpA9ADNwIAIAkgAygC2AM2AgggASBONwOoASABLQC4AUHAAEYNASADQdADakEEQQhByAAQgQ8gAygC1AMhACADKALQA0UNAiAAIAMoAtgDEOkgAAsgASgCtAEhACABKAKwASEoIANBtAFqICsQsiUgAyBNNwOYAyADQdADakHNlYABIANBmANqEMgIIAwgAygCvAE2AgggDCADKQK0ATcCACAoIAAgA0HQA2oQsxshNCABLQC4AUGiAUcNIyABIAEQ7w0QhgkMIwsgA0HQA2ogARCHCkEYEIkBIitFDQYgKyADKQPgAzcDECArIAMpA9gDNwMIICsgAykD0AM3AwAgAS0AuAEhAEEAITkgAS0AuQENBCAAQZB/ag4IAgQEBAQEBAEECyADQQA2AsgBIAMgAygC2AMiOjYCxAEgAyAANgLAASABKAJ4ISsCQAJAAkAgAS0AuAEiAEG1f2oiNEEfSw0AQQEgNHRBgYCCkHhxDQELIABBtH9qQf8BcUHUAEsNAQsCQCAAICsQ4Q1FDQBBACErQQAhO0EAITkMEgsgASArQf98cTYCeCADQZgDaiABQQAQlwQgASArNgJ4IAMoApgDITQCQAJAIAMtAKwDIitBAkYNACAQIBEpAgg3AgggECARKQIANwIAIA4gDykAADcAACAOIA8oAAc2AAcgAyArOgDkAyADIDQ2AtADIANBoAdqIANB0ANqEOcaIAMoAqAHITQgAy0AtAciK0ECRw0BC0EKIQAMIAsgFCATKQIINwIIIBQgEykCADcCACASIA0vAAA7AAAgEiANLQACOgACIAMgKzoAlAcgAyA0NgKAB0EAITwgAEGXAUcNCiABKAKAAUGAwABxRQ0KQQEhOQJAIAEtALgBIgBBfmoODgwAAAAAAAAAAAAAAAAMAAsgASgCeCErAkACQCAAQbV/aiI0QR9LDQBBASA0dEGBgIKQeHENAQsgAEG0f2pB/wFxQdQASw0LCyAAICsQ4Q0NCiAAQf4ARw0HIAEQlwtB/wFxQf4ARg0HIAEQlwtB/wFxQRdHDQogA0HgAWogARCbBSADKQPgASJOQgBSDQggAygC6AEhNAweC0EAIStBACE5QQAhO0EAITwgAEEPRw0RDBILIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASkDsAEhTiAJIAMpA9ADNwIAIAkgAygC2AM2AgggASBONwOoAQwBCyAIKAIAIQAgCEELNgIAAkACQCAAQQtGDQAgAyAFKAIINgLYAyADIAUpAgA3A9ADAkAgBygCAEEKRg0AIAcQtQsLIAcgADYCACAEIAYpAgA3AgAgBCAGKAIINgIIDAELIANB0ANqIAEQzgELIAEpA7ABIU4gCSADKQPQAzcCACAJIAMoAtgDNgIIIAEgTjcDqAELIAEgASgCeCIAQf//e3E2AnggA0HQA2ogARCVASABIAA2AnggAygC1AMhNAJAIAMoAtADIgBBMkcNACArEK4SICtBGEEIEM4UDB8LIAMgCykDMDcDyAMgAyALKQMoNwPAAyADIAspAyA3A7gDIAMgCykDGDcDsAMgAyALKQMQNwOoAyADIAspAwg3A6ADIAMgCykDADcDmAMCQAJAIABBDkcNAEEUEIkBIjkNAUEEQRQQjSQAC0Gs85oBQShBxIKbARCkIQALIDkgAykDmAM3AgQgOSA0NgIAIDkgAykDoAM3AgwgAS0AuAEhAAsCQAJAIABB/wFxQQZGDQAgASgCrAEhPQwBCyAIKAIAIQAgCEELNgIAAkACQCAAQQtGDQAgAyAFKAIINgLYAyADIAUpAgA3A9ADAkAgBygCAEEKRg0AIAcQtQsLIAcgADYCACAEIAYpAgA3AgAgBCAGKAIINgIIDAELIANB0ANqIAEQzgELIAEgASgCtAEiPTYCrAEgASABKAKwATYCqAEgCSADKQPQAzcCACAJIAMoAtgDNgIIC0EIITZBACE0QQAhAEEAITcgKyE4ICghNSA5IT5BACE/QQAhQAwcCwJAAkAgAS0AuAFBBkYNACABKAKsASE1DAELIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASABKAK0ASI1NgKsASABIAEoArABNgKoASAJIAMpA9ADNwIAIAkgAygC2AM2AggLQQkhAEESITYgKyE3ICghOAwbC0EIQRgQjSQACyADQdADaiABEOYQIAMoAtADITQgAy0A5AMiOUECRg0WIAMgECkCCDcD2AEgAyAQKQIANwPQASADIA4vAAA7AcwBIAMgDi0AAjoAzgEgA0HMAWohACADQdABaiErDAELQQAhOSADQQA2AoACIAMgAykD6AE3AvgBIAMgTkIgiD4C9AEgTqchNCADQfEBaiEAIANB9AFqISsLIANBgAdqEI0cIBQgKykCADcCACAUICspAgg3AgggEiAALwAAOwAAIBIgAC0AAjoAAiADIDQ2AoAHIAMgOToAlAdBASE8CwJAAkACQCABLQCBAUEgcUUNACABLQC4AUH/AXFBF0YNAQsgA0EgaiADQYAHahCKFEEAIQAgAygCICErAkACQCADKAIkQXtqDgIBAAgLICsoAABB897VkwdzICtBBGovAABB48oBc3INBwwCCyArKAAAQeTKmasGcyArQQRqLQAAQfIAc3JFDQEMBgsgA0EQaiABICggA0GAB2pBACA8EPoBQQpBBiADKAIQQQFxGyEAIAMoAhQhNAwVCyADQRhqIANBgAdqEIoUIAMoAhghKwJAAkACQCADKAIcQXtqDgIBAAYLICsoAABB897VkwdzICtBBGovAABB48oBc3INBUEBITlBACE0DAELICsoAABB5MqZqwZzICtBBGotAABB8gBzcg0EQQIhOUEBITQLAkAgAS0AuAEiK0F+ag4OAwAAAAAAAAAAAAAAAAMACyABKAJ4IUECQAJAAkACQCArQbV/aiI7QR9LDQBBASA7dEGBgIKQeHENAQsgK0G0f2pB/wFxQdQASw0BCyArIEEQ4Q0hQSArQf4ARg0AIEFFDQELIAEQlwtB/wFxQf4ARw0FCyA0RQ0BIDwhOQsgA0GAB2oQjRxBACErQQAhOwwFCyADQdADaiABEOYQIAMoAtADITQgAy0A5AMiAEECRg0RIAMgECkCCDcDkAIgAyAQKQIANwOIAiADIA4vAAA7AYQCIAMgDi0AAjoAhgIgA0GAB2oQjRwgFCADKQOIAjcCACAUIAMpA5ACNwIIIBIgAy8BhAI7AAAgEiADLQCGAjoAAiADIDQ2AoAHIAMgADoAlAcgOSEADAILIANBgAdqEI0cQQAhKyA5IQAMAgtBrPOaAUEoQaSCmwEQpCEACwJAAkAgAS0AuAEiK0EHRg0AICtB/gBGDQEgASgCtAEhACABKAKwASEoIANBnAJqICsQsiUgAyBMNwOYAyADQdADakHNlYABIANBmANqEK8QIAwgAygCpAI2AgggDCADKQKcAjcCACAoIAAgA0HQA2oQsxshNCABLQC4AUGiAUcNECABIAEQ7w0QhgkMEAsgARCSEAsgAykDkAchTiA6IAMpA4gHIk83AwggAykDgAchUCA6QgM3AwAgOiBQNwMQIDogTzcDGCA6IE43AyBBASErIANBATYCyAELQQEhOyAAQQFGDQkgACE7IDwhOQsgAS0AuAEiAEEPRg0BIDsNByA5ITwLIABBAkYNAUEAITsMCAsgCSgCACFBIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASkDsAEhTiAJIAMpA9ADNwIAIAkgAygC2AM2AgggASBONwOoASABLQC4ASIAQfUARw0DIAgoAgAhACAIQQs2AgAgAEELRg0BIAMgBSgCCDYC2AMgAyAFKQIANwPQAwJAIAcoAgBBCkYNACAHELULCyAHIAA2AgAgBCAGKQIANwIAIAQgBigCCDYCCAwCCyAIKAIAIQAgCEELNgIAAkACQCAAQQtGDQAgAyAFKAIINgLYAyADIAUpAgA3A9ADAkAgBygCAEEKRg0AIAcQtQsLIAcgADYCACAEIAYpAgA3AgAgBCAGKAIINgIIDAELIANB0ANqIAEQzgELIAEpA7ABIU4gCSADKQPQAzcCACAJIAMoAtgDNgIIIAEgTjcDqAECQCABLQC4ASI0QQNGDQADQCABKAKwASErIANBgAdqIAEQ5AogAygCiAchAAJAIAMpA4AHIk5CAlINACAAIUIMCwsgAyAhKAIQNgKgBCADICEpAgg3A5gEIAMgISkCADcDkAQCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgTkIBUg0AIBUgAykDkAQ3AgAgFSADKQOYBDcCCCAVIAMoAqAENgIQIAMgADYCwAQgAS0AuAFB9QBGDQEgAygCzAQhACADKALIBCEoIANBCGogA0HABGoQiRQgA0GoBGogAygCCCADKAIMEL0JIAMgA0GoBGoQxR43A4gHIANB8ICAgHg2AoAHICggACADQYAHahCzGyFCIAEtALgBQaIBRw0VIAEQvxQhACABEJIQIAEgABCGCQwVCyAjIAMpA5AENwIAICMgAykDmAQ3AgggIyADKAKgBDYCECADIAA2AqgEIAEtALgBITlBACE6IDRB/wFxQZcBRw0DIAEoAoABQYDAAHFFDQMCQAJAAkAgOUFAag4rAAEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAgEBAQEBAgELIANBgAdqIAEQ5AogAygCiAchQiADKQOAByJOQgJRDQYgIiAhKAIQNgIQICIgISkCCDcCCCAiICEpAgA3AgAgAyBCNgLIBCADIE43A8AEAkACQAJAIAEtALgBIgBB9QBHDQAgARCSECADQYAHaiABQQAQlwQgAygCgAchACADLQCUByI0QQJHDQIgACFCDAELIAEoArQBISsgASgCsAEhNCADQeQEaiAAELIlIAMgSzcD8AQgA0GAB2pBzZWAASADQfAEahCvECAhIAMoAuwENgIIICEgAykC5AQ3AgAgNCArIANBgAdqELMbIUIgAS0AuAFBogFHDQAgARC/FCEAIAEQkhAgASAAEIYJCyADQcAEahCDGAwHCyAgIBQpAgg3AgggICAUKQIANwIAIB8gEikAADcAACAfIBIoAAc2AAcgAyA0OgCkBSADIAA2ApAFIANB+ARqIANBkAVqEOcaIDxFDQogAygCtAQhACADKAKwBCE0IANBp4GAgHg2AoAHIAEgNCAAIANBgAdqENwdDAoLIDlBtH9qQf8BcUHUAEsNBAsgA0HIBWogARCbBQJAIAMpA8gFIk5CAFINAEIFIU4gAygC0AUhQgwKCyADQQA2AsAFIAMgAykD0AU3A7gFIANBADoAxAUgAyBOQiCIPgK0BSADIE6nIjQ2ArAFAkAgOUH1AEcNAAJAAkAgAS0AuAEiOkG1f2oiOUEfSw0AQQEgOXRBgYCCkHhxDQELIDpBtH9qQf8BcUHVAEkNACA8RQ0JIAMoArQEIQAgAygCsAQhNCADQaeBgIB4NgKAByABIDQgACADQYAHahDcHQwJCyADQYAHaiABQQAQlwQgAygCgAchQgJAIAMtAJQHIjlBAkYNACAZIBQpAgg3AgggGSAUKQIANwIAIBggEikAADcAACAYIBIoAAc2AAcgAyA5OgDsBSADIEI2AtgFIANBwARqIANB2AVqEOcaAkAgOkH1AEcNAAJAAkAgAS0AuAEiQkG1f2oiOUEfSw0AQQEgOXRBgYCCkHhxDQELIEJBtH9qQf8BcUHUAEsNAQsgA0GAB2ogAUEAEJcEIAMoAoAHIUICQCADLQCUByIAQQJHDQAgA0HABGoQjRwgA0GwBWoQjRwMCAsgFyAUKQIINwIIIBcgFCkCADcCACAWIBIpAAA3AAAgFiASKAAHNgAHIAMgADoApAYgAyBCNgKQBiADQfgFaiADQZAGahDnGiA8RQ0JIAMoArQEIQAgAygCsAQhOSADQaeBgIB4NgKAByABIDkgACADQYAHahDcHQwJCyAcIAMpA8AENwIAIBwgAykDyAQ3AgggHCADKQPQBDcCECADIAMpA5AENwOYAyADIAMpA5gENwOgAyADIAMoAqAENgKoAyADKALMBCFDIANBsAVqEI0cQQAhREIAIU4MBwsgA0GwBWoQjRwMBQsgPA0BDAILIAgoAgAhNCAIQQs2AgACQAJAIDRBC0YNACADIAUoAgg2AogHIAMgBSkCADcDgAcCQCAHKAIAQQpGDQAgBxC1CwsgByA0NgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0GAB2ogARDOAQsgASkDsAEhTiAJIAMpA4AHNwIAIAkgAygCiAc2AgggASBONwOoASADQYAHaiABQQAQlwQgAygCgAchQiADLQCUByI0QQJGDRMgEyAUKQIINwIIIBMgFCkCADcCACANIBIpAAA3AAAgDSASKAAHNgAHIAMgNDoAtAcgAyBCNgKgByADQegGaiADQaAHahDnGiAcIAMpA+gGNwIAIBwgAykD8AY3AgggHCADKQP4BjcCECADIAMpA5AENwOYAyADIAMpA5gENwOgAyADIAMoAqAENgKoAyADKAL0BiFDQQAhREIBIU4MBAsgAygCtAQhACADKAKwBCE0IANBp4GAgHg2AoAHIAEgNCAAIANBgAdqENwdCyADQagEahCNHCADIAMpA8AFNwO4BCADIAMpA7gFNwOwBCADIAMpA7AFNwOoBCABLQC4ASE5QQEhOgsCQAJAIDlB/wFxQfUARw0AIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AogHIAMgBSkCADcDgAcCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0GAB2ogARDOAQsgASkDsAEhTiAJIAMpA4AHNwIAIAkgAygCiAc2AgggASBONwOoASADQYAHaiABQQAQlwQgAygCgAchQiADLQCUByIAQQJGDQIgGyAUKQIINwIIIBsgFCkCADcCACAaIBIpAAA3AAAgGiASKAAHNgAHIAMgADoA3AYgAyBCNgLIBiADQbAGaiADQcgGahDnGiAcIAMpA7AGNwIAIBwgAykDuAY3AgggHCADKQPABjcCECADICMpAgA3A5gDIAMgIykCCDcDoAMgAyAjKAIQNgKoAyADKAKoBCFCIAMoArwGIUNCACFODAELIBwgAykDuAQ3AhAgHCADKQOwBDcCCCAcIAMpA6gENwIAIAEoAqwBIUNCAiFOCyA6IUQgKyFFDAYLQgUhTgwECyArIUUgACFCDAQLIBwgAykD+AU3AgAgHCADKQOABjcCCCAcIAMpA4gGNwIQIAMgHSkCADcDmAMgAyAdKQIINwOgAyADIB0oAhA2AqgDIAMoAoQGIUMgA0HABGoQjRxBASFEQgAhTiA0IUIgKyFFDAILIBwgAykDsAU3AgAgHCADKQO4BTcCCCAcIAMpA8AFNwIQIAEoAqwBIUNBASFEQgIhTiArIUUMAQsgHiADKQOABTcCCCAeIAMpA/gENwIAIB4gAykDiAU3AhAgAyAiKAIQNgLgAyADICIpAgAiTzcD0AMgAyAiKQIIIlA3A9gDIAMgTzcDmAMgAyBQNwOgAyADIAMpA+gDNwOwAyADIAMpA/ADNwO4AyADIAMoAvgDNgLAAyADIAMpA+ADNwOoA0EBIUQgAygChAUhQyArIUULAkAgAykDqAQiT0IDg0IAUg0AIE+nIgAgACgCACIrQX9qNgIAICtBAUcNACAAIAAoAhAQ3h4LIE5CBVENCwsgAyADKALAAzYC+AIgAyADKQO4AzcD8AIgAyADKQOwAzcD6AIgAyADKQOoAzcD4AIgAyADKQOgAzcD2AIgAyADKQOYAzcD0AICQCADKALIASIrIAMoAsABRw0AIANBwAFqELUaCyADKALEASI6ICtByABsaiIAIEI2AgggACBONwMAIAAgAygC+AI2AjQgACADKQPwAjcCLCAAIAMpA+gCNwIkIAAgAykD4AI3AhwgACADKQPYAjcCFCAAIAMpA9ACNwIMIAAgRDoAQCAAIEM2AjwgACBFNgI4IAMgK0EBaiIrNgLIAQJAIAEtALgBIgBBB0YNACAAQQNGDQIgASgCtAEhKCABKAKwASE0IANBgANqIAAQsiUgAyBMNwOYAyADQdADakHNlYABIANBmANqEK8QIAwgAygCiAM2AgggDCADKQKAAzcCACA0ICggA0HQA2oQsxshNEEKIQAgAS0AuAFBogFHDQ4gASABEO8NEIYJDA4LIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASkDsAEhTiAJIAMpA9ADNwIAIAkgAygC2AM2AgggASBONwOoASABLQC4ASI0QQNHDQALCyABEJIQQQAhOwwFCyADQdADaiABEM4BCyABKQOwASFOIAkgAykD0AM3AgAgCSADKALYAzYCCCABIE43A6gBIAEgASgCeCIAQf98cTYCeCADQZgDaiABQQAQlwQgASAANgJ4IAMoApgDITQCQCADLQCsAyIAQQJGDQAgECARKQIINwIIIBAgESkCADcCACAOIA8pAAA3AAAgDiAPKAAHNgAHIAMgADoA5AMgAyA0NgLQAyADQaAHaiADQdADahDnGiADKAKgByE0IAMtALQHIjxBAkcNAgtBCiEADAkLIAEoArQBISggASgCsAEhNCADQcQCaiAAELIlIAMgSzcDmAMgA0HQA2pBzZWAASADQZgDahCvECAMIAMoAswCNgIIIAwgAykCxAI3AgAgNCAoIANB0ANqELMbITRBCiEAIAEtALgBQaIBRw0IIAEgARDvDRCGCQwICyADKQKkByFOIAMpAqwHIU8gAyANLQACIkY6ANIDIAMgDS8AACJHOwHQAyABKAKsASFIIDogK0HIAGxqIgAgPDoAJCAAIE83AhwgACBONwIUIAAgNDYCECAAIEg2AgwgACBBNgIIIABCBDcDACAAIEc7ACUgACBGOgAnIAMgK0EBaiIrNgLIAQsgOSE8CyABLQC4ASEACwJAAkACQCAAQf8BcUH+AEcNACAIKAIAIQAgCEELNgIAIABBC0YNASADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAgsgASgCtAEhKCABKAKwASE0IANBjANqIAAQsiUgAyBKNwOYAyADQdADakHNlYABIANBmANqEK8QIAwgAygClAM2AgggDCADKQKMAzcCACA0ICggA0HQA2oQsxshNEEKIQAgAS0AuAFBogFHDQYgASABEO8NEIYJDAYLIANB0ANqIAEQzgELIAEpA7ABIU4gCSADKQPQAzcCACAJIAMoAtgDNgIIIAEgTjcDqAECQCABLQC4ASIAQcAARg0AIBAgABCyJSADQRA2AuQDIANB9YGbATYC4AMgA0GwgICAeDYC0AMgASgCsAEgASgCtAEgA0HQA2oQsxshNEEKIQAgAS0AuAFBogFHDQUgASABEO8NEIYJDAULIANB0ANqIAEQhwoCQEEYEIkBIjlFDQAgOSADKQPgAzcDECA5IAMpA9gDNwMIIDkgAykD0AM3AwBBACFBAkACQAJAIAEtALkBDQACQAJAAkAgAS0AuAFBkH9qDggBAwMDAwMDAAMLIAgoAgAhACAIQQs2AgACQAJAIABBC0YNACADIAUoAgg2AtgDIAMgBSkCADcD0AMCQCAHKAIAQQpGDQAgBxC1CwsgByAANgIAIAQgBikCADcCACAEIAYoAgg2AggMAQsgA0HQA2ogARDOAQsgASkDsAEhTiAJIAMpA9ADNwIAIAkgAygC2AM2AgggASBONwOoAQwBCyABEJIQCyABIAEoAngiAEH//3txNgJ4IANB0ANqIAEQlQEgASAANgJ4IAMoAtQDITQgAygC0AMiAEEyRg0BIAMgCykDMDcDyAMgAyALKQMoNwPAAyADIAspAyA3A7gDIAMgCykDGDcDsAMgAyALKQMQNwOoAyADIAspAwg3A6ADIAMgCykDADcDmAMCQAJAIABBDkcNAEEUEIkBIkENAUEEQRQQjSQAC0Gs85oBQShBtIKbARCkIQALIEEgNDYCACBBIAMpA5gDNwIEIEEgAykDoAM3AgwLIAEQ/QgiNEUNASBBRQ0AIEEQshUgQSgCACBBQQRqKAIAEOcjIEFBFEEEEM4UCyA5EK4SIDlBGEEIEM4UQQohAAwGCyABKAKsASE9IAMoAsABITRBACEAIDohNiArITcgOSE4ICghNSBBIT4gPCE/IDshQAwGC0EIQRgQjSQACyADQcAEahCuEgtBCiEAIAMoAsgBISsgQiE0DAILIANBgAdqEI0cQQohAAtBACErCyADKALEASIoICsQ7QkgAygCwAEgKBDkI0EKISggNCErIABBCkYNAgsgAyADKQGmATcBRiADIAMpA6ABNwNAIAMgAykDmAE3AzggQCEtID8hLiA+IS8gPSEwIDUhMSA4ITIgNyEzIDYhLCA0ISsgACEoDAELQQohKCA0ISsLICcgKhDaHSApICcQ5yMgKEEKRg0DCyADIAMpAUY3AV4gAyADKQNANwNYIAMgAykDODcDUAJAIAIoAggiACACKAIARw0AIAIQrRoLIAIgAEEBajYCCCACKAIEIABBOGxqIgAgLToAISAAIC46ACAgACAvNgIcIAAgMDYCGCAAIDE2AhQgACAyNgIQIAAgMzYCDCAAICw2AgggACArNgIEIAAgKDYCACAAIAMpA1A3ASIgACADKQNYNwEqIAAgAykBXjcBMAwA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IAJBiAJqQQRqIR8gAkHgAmpBCGohICACQeACakEYaiEhIAJB4AJqQRBqISIgACgCuAEhIwJAA0AgASATRg0BIAIgAUEgaiIkNgKgASABKAIAIiVBgYCAgHhGDQEgASgCHCEmIAEoAhghJyABKAIEISggAkHgAmogDEEBIAEoAgwgASgCECAOIA4QhQECQCACKALgAkEBRw0AIAIoAuQCIAIoAugCEKoYDAYLIAJBKGogAigC5AIiKSACKALoAiIqKAIMEQcAIAJBjAFqIAIoAiggAigCLBDSBiApICooAhwRBAAhBCApICooAhARBAAoAgAhESACQSBqIAIoApQBIgFBAUEBEPAXQQAhEiACQQA2AtABIAIgAikDIDcCyAEgAkEYakEBQQRBFBDwFyACQQA2AvABIAIgAigCHCIQNgLsASACIAIoAhg2AugBIAIgASACKAKQASIKajYCkAIgAiAKNgKMAkGBgMQAIQEgESELA0AgAkGBgMQANgKIAgJAIAFBgYDEAEcNACAfEMkNIQELAkACQAJAIAFBgIDEAEYNAAJAAkAgAUGAAU8NAEEBIQoMAQsCQCABQYAQTw0AQQIhCgwBC0EDQQQgAUGAgARJGyEKCyAKIAtqIQtBACEFAkACQCABQXZqDgQEAQEAAQsgAigCiAIhCiACQYGAxAA2AogCAkACQAJAIApBgYDEAEcNAAJAIAIoAowCIgYgAigCkAJHDQBBgIDEACEGDAMLIAIgBkEBajYCjAIgBi0AACIKwEF/Sg0BIAIgBkECajYCjAIgBi0AAUE/cSEPIApBH3EhKwJAIApB3wFLDQAgK0EGdCAPciEKDAILIAIgBkEDajYCjAIgD0EGdCAGLQACQT9xciEPAkAgCkHwAU8NACAPICtBDHRyIQoMAgsgAiAGQQRqNgKMAiAPQQZ0IAYtAANBP3FyICtBEnRBgIDwAHFyIQoLQYCAxAAhBiAKQYCAxABGDQELIAohBiAKQQpGDQMLIAIgBjYCiAILIAJByAFqIAEQvBUgBEF/Rg0CAkAgAigCiAIiAUGBgMQARw0AIAIgHxDJDSIBNgKIAgsgBEEBaiIEIQUgAUGAgMQARw0DDAILIAIpAuwBITogAigC6AEhASACKALIASACKALMARCeIyACKAKMASACKAKQARDXISApICoQkh4gAUGAgICAeEYNCCACIAE2AqwBIAIgOjcCsAEgAkIANwLgASACIB02AtwBIAIgHDYC2AEgAiAdNgLUASACIBw2AtABIAIgDTYCzAEgAiAJNgLIASACQegBaiACQcgBahDNBSA6QiCIpyEFIDqnISsCQAJAIAIoAugBQYGAgIB4Rg0AIAJB4AJqIAJByAFqELYUQQEhBEEgIQogAkEQaiACKALgAkEBaiIBQX8gARsiAUEEIAFBBEsbQQRBIBDwFyACKAIQIQEgAigCFCILIAIpAoACNwIYIAsgAikC+AE3AhAgCyACKQLwATcCCCALIAIpAugBNwIAIAJBATYC2AIgAiALNgLUAiACIAE2AtACIAIgAikC4AE3A6ACIAIgAikC2AE3A5gCIAIgAikC0AE3A5ACIAIgAikCyAE3A4gCAkADQCACQeACaiACQYgCahDNBSACKALgAkGBgICAeEYNAQJAIAQgAigC0AJHDQAgAkGMAWogAkGIAmoQthQgAkHQAmogBCACKAKMAUEBaiIBQX8gARtBBEEgEMcaIAIoAtQCIQsLIAsgCmoiASACKQLgAjcCACABIAIpAvgCNwIYIAEgAikC8AI3AhAgASACKQLoAjcCCCACIARBAWoiBDYC2AIgCkEgaiEKDAALCyACIAIpAtACNwO4ASACIAIoAtgCIio2AsABIAIoArwBIQ8MAQtBACEqIAJBADYCwAEgAkKAgICAwAA3A7gBQQQhDwsgDyAqQQV0aiERICsgBUEUbGohLEEAISkgKyEEA0ACQAJAIAQgLEYNAEEAIRAgDyEKA0AgCiIBIBFGDQIgAUEQaigCACELIARBEGooAgAhBQJAIAFBDGooAgAiBiAEQQxqKAIAIhJJDQAgAUEgaiEKIAsgBmogBSASak0NAQsgAUEgaiEKIBAgEiAFIAYgCxCGFmohEAwACwsDQAJAAkACQAJAAkACQAJAAkAgKyAsRg0AIClFDQVBACEtIAJBADYC2AIgAkKAgICAEDcC0AIgK0EQaiIGKAIAICtBDGoiEigCACIuaiEvIA8gKkEFdGohBSAPIQQDQAJAIAQiASAFRw0AQQMhAQwGCyABQSBqIQQgEigCACILIAYoAgAiECABQQxqKAIAIgogAUEQaigCACIREIYWRQ0AAkACQAJAIAogC08NAAJAIBEgCmoiESALSQ0AIBEgECALak0NAwsgLUEBaiEtAkAgCiAuTw0AIBEgL0sNAgsgAkHQAmpBIBC8FQwDCyAeIAEvARw7AQggHiABKQIUNwIAIB8gASkCFDcCACAfIAEvARw7AQggAiAXNgKIAiACQegBaiACQYgCahDLEyACQdACaiACKALsASIEIAIoAvABEJscIAIoAugBIAQQniMgAkHoAWogACgCABDjHCACQcgBaiACKALsASIEIAIoAvABQQAgKSAtayIKIAogKUsbELgLIB8gAS8BHDsBCCAfIAEpAhQ3AgAgAiACQcgBajYCiAIgAkGMAWogAkGIAmoQzBMgAkHQAmogAigCkAEiASACKAKUARCbHCACKAKMASABEJ4jIAIoAsgBIAIoAswBEJ4jIAIoAugBIAQQniMgAiAYNgLgAiACQYgCaiACQeACahDLEyACQdACaiACKAKMAiIBIAIoApACEJscIAIoAogCIAEQniMMBgsgHiABLwEcOwEIIB4gASkCFDcCACACIBs2AuACIAJBiAJqIAJB4AJqEMsTIAJB0AJqIAIoAowCIgEgAigCkAIQmxwgAigCiAIgARCeIwwBCwsgAkHgAmogARCTCCACKALgAiIEIAIoAuQCENIhIAFBFGohASAEQYCAgIB4Rg0BIB4gAS8BCDsBCCAeIAEpAgA3AgAgAiAaNgLgAiACQYgCaiACQeACahDLEyACQdACaiACKAKMAiIEIAIoApACEJscIAIoAogCIAQQniMMAgsgAkG4AWoQqRggAkGsAWoQwBggJSAoENIhICcgJhCSHiAkIQEMDQsgHiABLwEIOwEIIB4gASkCADcCACACIBk2AuACIAJBiAJqIAJB4AJqEMsTIAJB0AJqIAIoAowCIgQgAigCkAIQmxwgAigCiAIgBBCeIwsgAkHoAWogACgCABDjHCACQcgBaiACKALsASIEIAIoAvABQQAgKSAtayIKIAogKUsbELgLIB4gAS8BCDsBCCAeIAEpAgA3AgAgHyABKQIANwIAIB8gAS8BCDsBCCACIAJByAFqNgKIAiACQYwBaiACQYgCahDMEyACQdACaiACKAKQASIBIAIoApQBEJscIAIoAowBIAEQniMgAigCyAEgAigCzAEQniMgAigC6AEgBBCeIyACIBg2AuACIAJBiAJqIAJB4AJqEMsTIAJB0AJqIAIoAowCIgEgAigCkAIQmxwgAigCiAIgARCeIwtBASEBCyACKALUAiEEAkACQCACKALYAiIKQRBJDQAgBCAKEMUGIQQMAQsgBCAKEOYcIQQLIAJBiAJqQcDjmgFBAUEAICkgBGsiBCAEIClLGyABahC4CyACQQI2AuwCIAJBAjYC5AIgAiACQYgCajYC6AIgAiACQdACajYC4AIgAkH0AGpBgICAASACQeACahCfIyEBIAIoAogCIAIoAowCEJ4jIAIoAtACIAIoAtQCEJ4jIAENAQsgK0EUaiEwICsoAgghBCArKAIEIQEgAkEAOgCAAyACQQA2AvwCIAIgIzYC+AIgAiABIARqIgQ2AvQCIAIgATYC8AIgAkIANwLoAiACIAQ2AuQCIAIgATYC4AICQANAIAJB4AJqEMkNIgRBgIDEAEYNASAiEMkNIgFBgIDEAEYNASAhIAEQpgghAQJAIARBCUYNACACQfQAaiAEELwVDAELA0AgAUUNASACQfQAakEgELwVIAFBf2ohAQwACwsLIAJB9ABqQQoQvBUgAkEANgKQAiACQoCAgIDAADcCiAIgAkEANgLoAiACQoCAgIDAADcC4AICQAJAAkACQCAqDQBBBCExQQAhMkEAITNBBCE0QQAhNUEAISoMAQtBBCESA0ACQCArQQxqIhAoAgAiBCArQRBqIi0oAgAiCyAPQQxqKAIAIgogD0EQaigCACIFEOkTRQ0AQQAhBiACQeACaiEBAkAgCiAESQ0AIAUgCmogCyAEaksNAEEBIQYgAkGIAmohAQsCQCABKAIIIgQgASgCAEcNACABEIMaIAIoAowCIRILIBIgAigC5AIgBhsgBEECdGogDzYCACABIARBAWo2AggLIA9BIGohDyAqQX9qIioNAAsgAigCwAEhKiACKAK8ASEPIAIoAugCITUgAigC5AIhNCACKALgAiEzIAIoAowCITEgAigCiAIhMiACKAKQAiIuRQ0AIAAgAkH0AGogKSAQKAIAIC0oAgAgDyAqQQAQ2AUNAkEAIQQgAkEANgK0AiACQoCAgIAQNwKsAiACQQhqIC5BBEEIEPAXIAJBADYCwAIgAiACKAIMIjY2ArwCIAIgAigCCCIKNgK4AiAuQQJ0IQtBACEBAkAgLiAKTQ0AIAJBuAJqQQAgLkEEQQgQxxogAigCvAIhNiACKALAAiEBCyAxIAtqITcgASAuaiE4IDYgAUEDdGohBSAxIQYDQCAGKAIAIgEoAhAhCyAEIAAoArgBICsgASgCDCISQQEQngoiCiAEIApLGyEKAkACQCABKAIQDQAgCkEBaiELDAELIApBAWoiESAAKAK4ASArIAsgEmpBABCeCiILIBEgC0sbIQsLIAJBjAFqIBYoAgAQ4xwgAkHQAmogAigCkAEiLyACKAKUASALIApqQQF2IhIgCmsQuAsgFCERAkAgASgCEEUNACACQeACaiABEJMIIAIoAuACIhEgAigC5AIQ0iEgFiAVIBFBgICAgHhGGyERCyACIBEoAgA2AtwCIAJB6AFqIBYoAgAQ4xwgAkHIAWogAigC7AEiESACKALwASALIBJBf3NqELgLICBBACAKIARrIjkgOSAKSxtB8MGBARDYHiACQQI2AoQDIAJBAzYC/AIgAkECNgL0AiACQQE2AuQCIAJBsLeYATYC4AIgAiACQcgBajYCgAMgAiACQdwCajYC+AIgAiACQdACajYC8AIgAkHEAmpBgMKBASACQeACahDXHiACKALIASACKALMARCeIyACKALoASAREJ4jIAIoAtACIAIoAtQCEJ4jIAIoAowBIC8QniMgHyABLwEcOwEIIB8gASkCFDcCACACIAJBxAJqNgKIAiACQeACaiACQYgCahDMEyACQawCaiACKALkAiIBIAIoAugCEJscIAIoAuACIAEQniMgAigCxAIgAigCyAIQniMgBUEEaiASNgIAIAUgBjYCACALIAQgCyAESxshBCAGQQRqIQYgBUEIaiEFIC5Bf2oiLg0ACyACKAK4AiEFIAJBAjYC5AIgAiACQawCajYC4AIgAkH0AGpBnLaBASACQeACahCfIw0BA0ACQAJAIDEgN0YNACACQeACaiA3QXxqIjcoAgAQ5QsgAigC4AJBgICAgHhGDQIgAigC5AIhAQJAAkAgAigC6AIiBEEBRw0AIAAgAkH0AGogECgCACAtKAIAICkgDyAqIAAgNiA4IDcoAgAgASgCBCABKAIIQQAQ3gQNAQwDCyAEQQxsIQRBASEKA0AgBEUNAyAEQXRqIQQgACACQfQAaiAQKAIAIC0oAgAgKSAPICogACA2IDggNygCACABKAIEIAEoAgggChDeBCELIAFBDGohAUECIQogC0UNAAsLIAJB4AJqEL8YDAQLIAUgNkEEQQgQzRMgAigCrAIgAigCsAIQniMMAgsgAkHgAmoQvxgMAAsLIDQgNUECdGohCyA0IQEDQCABIAtGDQQgAkHgAmogASgCACIEEJMIIAIoAuACIgogAigC5AIQ0iEgAUEEaiEBIApBgICAgHhGDQAgBEEQaigCACAEQQxqKAIAIhJqIgYgK0EMaiIFKAIAIgpJDQAgBiArQRBqIhEoAgAgCmpLDQAgEiAKTw0AIAJBiAJqIAQQ5QsCQAJAIAIoAogCQYCAgIB4Rg0AIAIoAowCIQoCQAJAAkACQCACKAKQAiISDgIAAgELQbq4gQFB2gBBlLmBARDYGwALIAAgAkH0AGogKSAFKAIAIBEoAgAgDyAqQQEQ2AUNAyAKKAIIIQYgCigCBCEQIAIgBC8AHDsB6AIgAiAEKQAUNwPgAiAAIAJB9ABqIBAgBiACQeACakEBEPoKDQMgBEEUaiEGIApBFGohBCASQQxsQXRqIQoDQCAKRQ0CIAAgAkH0AGogKSAFKAIAIBEoAgAgDyAqQQIQ2AUNBCAEQXxqKAIAIRIgBCgCACEQIAIgBi8ACDsB6AIgAiAGKQAANwPgAiAKQXRqIQogBEEMaiEEIAAgAkH0AGogEiAQIAJB4AJqQQIQ+gpFDQAMBAsLIAAgAkH0AGogKSAFKAIAIBEoAgAgDyAqQQAQ2AUNAiAKKAIIIQUgCigCBCEKIAIgBC8AHDsB6AIgAiAEKQAUNwPgAiAAIAJB9ABqIAogBSACQeACakEAEPoKDQILIAJBiAJqEL8YDAILIAAgAkH0AGogKSAFKAIAIBEoAgAgDyAqQQAQ2AUNAyAeIAQvARw7AQggHiAEKQIUNwIAIAIgADYC4AIgAkEFNgLsASACIAJB4AJqNgLoASACQfQAakGctoEBIAJB6AFqEJ8jRQ0BDAMLCyACQYgCahC/GAwBCyAFIDZBBEEIEM0TIAIoAqwCIAIoArACEJ4jCyAzIDQQoiMgMiAxEKIjCyACQbgBahCpGCACQawBahDAGAwMCyAzIDQQoiMgMiAxEKIjIDAhKwwACwsgECApIBAgKUsbISkgBEEUaiEEDAALCyALQQFqIQsLIAJB4AJqIAIoAswBIAIoAtABEMMYIAsgEWshBAJAIBIgAigC6AFHDQAgAkHoAWoQhBogAigC7AEhEAsgECASQRRsaiIBIAIoAugCNgIIIAEgAikC4AI3AgAgASAENgIQIAEgETYCDCACIBJBAWoiEjYC8AEgAkEANgLQASACKAKIAiEBIAUhBCALIREMAAsLCyACQZwBahDqEyAJIAcQ8B0gCCAJEK8jDAILIAIoAtgCIQogAigC1AIhCwJAAkAgAigCiAEiK0UNAAJAIAIoAoQBIhYgK0EFdGoiBUFgaiIfRQ0AAkAgBUF4aigCACIpIAVBfGooAgAiKigCGBEEACApICooAiARBABqIAsgCigCGBEEAEkNACAFQXBqKAIAISkgBUFsaiIFKAIAISogAkEwaiAfEMEfIAJB4AJqIAIoAjAgAigCNBCZICACKALoAiEvIAIoAuQCIR8gAigC4AIhLSACQYgCaiAMQQEgBSgCACIFIBIgBmoiLiApICpqIikgLiApSxsgBWsiKSAOIA4QhQECQCACKAKIAg0AIAIgK0F/aiIGNgKIASACKAKQAiESIAIoAowCIRACQCAWIAZBBXRqIgYoAgAiD0GBgICAeEYNACAGKAIYISsgBigCHCEqIA8gBigCBBDSISArICoQkh4LIAIgEjYC/AIgAiAQNgL4AiACQQA6APQCIAIgKTYC8AIgAiAFNgLsAiACIC82AugCIAIgHzYC5AIgAiAtNgLgAiACQYABaiACQeACahDzFyALIAoQkh4gBCARENIhDAQLIC0gHxDSISACLQCMAiACKAKQAhCqGAsgAiAKNgL8AiACIAs2AvgCIAIgDzoA9AIgAiASNgLwAiACIAY2AuwCIAIgEDYC6AIgAiARNgLkAiACIAQ2AuACIAJBgAFqIAJB4AJqEPMXDAILQfi3gQEQsCMACyACIAo2AvwCIAIgCzYC+AIgAiAPOgD0AiACIBI2AvACIAIgBjYC7AIgAiAQNgLoAiACIBE2AuQCIAIgBDYC4AIgAkGAAWogAkHgAmoQ8xcLIAFBGGohAQwACwsgAikCeCE6IAIoAnQhBQwCCyAlICgQ0iEgJyAmEJIeIAJBnAFqEOoTIAkgBxDwHSAIIAkQryMLIAIoAnQgAigCeBCeI0GAgICAeCEFCyAAQcABaiEECyADKAI4IQsgAiADKAI8IgFBBEEoEPAXIAJBADYC6AIgAiACKAIENgLkAiACIAIoAgAiCjYC4AICQAJAIAEgCk0NACACQeACakEAIAFBBEEoEMcaDAELIAENACACIAIoAugCNgJQIAIgAikC4AI3A0gCQAJAIAMoAgBBAkcNAEEAIQEMAQsgAygCDCEKIAMoAgghAQsCQAJAAkAgA0EkaigCAEUNACACQeACaiAEKAIAQQhqIANBIGooAgAoAgAQ4AMCQAJAIAIoAuACRQ0AIAIgAikC6AI3A/ABIAIgAikC4AI3A+gBDAELIAJBADYC6AELIANBJGooAgBFDQEgAkHgAmogBCgCAEEIaiADQSBqKAIAKAIEEOADAkAgAigC4AJFDQAgAiACKQLoAjcDkAIgAiACKQLgAjcDiAIMAwsgAkEANgKIAgwCCyACQQA2AugBCyACQQA2AogCCwJAAkACQAJAIAIoAugBIgsNAEGAgICAeCEGDAELIAJBADYC0AEgAkKAgICAEDcCyAEgAkG4xIEBNgLkAiACQqCAgIAGNwLoAiACIAJByAFqNgLgAiALQegAaiACQeACahClIQ0BIAIpAswBITsgAigCyAEhBgsCQAJAIAFFDQAgAkHgAmogASAKEJgUDAELIAJBgICAgHg2AuACCyADKAIYRQ0BIAJB6ABqIAMoAhQiASgCBCABKAIIEJgUIAIgAikC4AI3A1ggAiACKALoAjYCYCACKAKUAiESIAIoAowCIREgAigCiAIhECACKAL0ASEPIAIoAuwBISsgACgCvAEiBEEIahDzGCEpAkAgBCgCFCIKIAQoAgxHDQAgBEEMahCBGgsgBCgCECAKQdwAbGoiASASNgIcIAEgEEEARyISNgIYIAEgETYCFCABIBI2AhAgASAPNgIMIAEgC0EARyILNgIIIAEgKzYCBCABIAs2AgAgASACKQJoNwIgIAEgAigCcDYCKCABIAIpA0g3AiwgASACKAJQNgI0IAEgAikDWDcCOCABIAIoAmA2AkAgASA7NwJUIAEgBjYCUCABIDo3AkggASAFNgJEIClBADoAACAEIApBAWo2AhQgAkGIAmoQkR4gAkHoAWoQkR4gAkGQA2okAA8LQc2UmwFBNyACQY8DakHQxIEBQYSVmwEQzxQAC0EAQQBBqMSBARDuFgALIAIgCzYC6AEgAkEVNgKMAiACIAJB6AFqNgKIAkGOlYABIAJBiAJqQcDCgQEQ1xsAC58/Aw5/AX4BfCMAQdAAayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAJcIgNBAkkNACABKAJYIgQtAAFBvn9qDjcEAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAQAAAAAAAAAAAAAAAAFAAAAAAAAAAABAAsgASgCaCEFIAJBOGogARDRBgJAIAItAEEiBkECRw0AIAIoAjghAwwOCyACLQBAIQcgASgCaCIIIAIoAjgiCWshCiABKAJgIgMgCSABKAJsIgRraiELAkAgAigCPCIMIAlrIg1BAUcNACABKAJcIg5FDQAgASgCWCIPLQAAQe4ARw0AIAEgCEEBajYCaCABIA5Bf2o2AlwgASAPQQFqNgJYIAJBOGogCyAKEMwFAkAgAigCOA0AIAJBCGogAigCPCIDIAIoAkAiBBDnGAJAAkAgAigCCCIIDQBBAiEIDAELIAMgCCAIIAIoAgwiDkErEJUYIgsbIQMgBCAOIAsbIQRBACEICyACQThqIAMgBEEKEOYCIAIoAjgiDkGAgICAeEYNACACIAIvAD07ASggAiACLQA/OgAqIAItADwhCyACKAJAIQRBEBCJASIDDQRBBEEQEI0kAAtB9NmYARCwIwALIAZBAXENAQwKCyABIANBfmoiCDYCXEECIQMgASAEQQJqIgs2AlggASABKAJoQQJqIgQ2AmggBCEOAkACQAJAAkACQAJAAkACQCAIRQ0AQQAhDUEAIQUgBCEOAkADQCALLQAAIQkCQAJAAkAgBUEBcQ0AIAlB/wFxQd8ARg0BDAILIAlB/wFxQd8ARw0BAkACQCAKQf8BcSINQb9/akFecUEKaiANQVBqIA1BOUsbQQ9NDQADQCACQe+AgIB4NgI4IAEgBCACQThqEIAjIAEgASgCaEEBaiIONgJoIAEgASgCXEF/aiIINgJcIAEgASgCWEEBaiILNgJYIAhFDQJBASENIAstAAAiCUHfAEcNBAwACwsDQAJAAkAgCEEBRg0AIAstAAEiCkG/f2pBXnFBCmogCkFQaiAKQTlLG0EPSw0AAkACQCANQah/ag4IAgEBAQEBAQIACyANQS5GDQEgDUH4AEYNAQsCQCAKQah/ag4IAQICAgICAgEACyAKQfgARg0AIApBLkcNAQsgAkHvgICAeDYCOCABIAQgAkE4ahCAIyABKAJoIQ4gASgCXCEIIAEoAlghCwsgASAOQQFqIg42AmggASAIQX9qIgg2AlwgASALQQFqIgs2AlggCEUNASALLQAAIglB3wBGDQALQQEhDQwCCyAOIARrIQggASgCYCAEIAEoAmxraiEKDAcLA0AgAkHvgICAeDYCOCABIAQgAkE4ahCAIyABIAEoAlxBf2oiCDYCXCABIAEoAlhBAWoiCzYCWCABIAEoAmhBAWoiDjYCaCAIRQ0EQQEhDSALLQAAIglB3wBGDQALCyAJQf8BcSIKQb9/akFecUEKaiAKQVBqIApBOUsbQQ9LDQFBASEFIAEgDkEBaiIONgJoIAEgCEF/aiIINgJcIAEgC0EBaiILNgJYIAkhCiAIDQALIA4gBGshAyABKAJgIAQgASgCbGtqIQogDUEBcQ0DDA0LIAVBAXENAQsgAkGXgICAeDYCOCACQRA6ADwgDiAEIAJBOGoQxyQhBAwNCyAOIARrIQMgASgCYCAEIAEoAmxraiEKIAlB/wFxQe4ARg0CIA1BAXFFDQoLIAMhCAtBACEDIAJBOGogCCAIQQBHa0EBQQEQgQ8gAigCPCENIAIoAjhBAUYNASACQQA2AjQgAiACKAJAIgs2AjAgAiANNgIsAkAgDiAERw0AIAshCgwKC0EAIQMDQAJAIAotAAAiBEHfAEYNAAJAIAMgAigCLEcNACACQSxqENETIAIoAjAhCwsgCyADaiAEOgAAIAIgA0EBaiIDNgI0CyAKQQFqIQogCEF/aiIIDQALIAIoAjAhCiACKAIsIQ0MCQsgASAOQQFqNgJoIAEgCEF/ajYCXCABIAtBAWo2AlggAkHfADYCOCAKIAMgAkE4akEBEMUfDQEgAkE4aiAKIAMQzAUCQCACKAI4DQAgAkEQaiACKAI8IgMgAigCQCIIEOcYAkACQCACKAIQIgsNAEECIQsMAQsgAyALIAsgAigCFCIKQSsQlRgiDRshAyAIIAogDRshCEEAIQsLIAJBOGogAyAIQRAQ5gIgAigCOCIDQYCAgIB4Rg0AIAIgAi8APTsBLCACIAItAD86AC4gAi0APCEOIAIoAkAhCEEQEIkBIgRFDQMgBCAOOgAEIAQgAzYCACAEIAIvASw7AAUgBCACLQAuOgAHIAQgCDYCCEEBIQMgBCALQQEgCBs6AAwMCgsgAkGXgICAeDYCOCACQRA6ADwgBCAOIAQgDkkbIAQgDiAEIA5LGyACQThqELMbIQRBAiEDDAkLIA0gAigCQBDpIAALIAJB74CAgHg2AjggBCAOIAQgDkkbIAQgDiAEIA5LGyACQThqELMbIQRBAiEDDAcLQQRBEBCNJAALIAJB74CAgHg2AjggASAFIAJBOGoQgCMMCAsgAyALOgAEIAMgDjYCACADIAIvASg7AAUgAyACLQAqOgAHIAMgBDYCCCADIAhBASAEGzoADAJAIAEoAghBCkYNACABQQhqELULCyABIAM2AgwgAUEINgIIQcIAIQMMCAsgASADQX5qIgg2AlxBAiEDIAEgBEECaiILNgJYIAEgASgCaEECaiIENgJoIAQhDgJAIAhFDQBBACEFQQAhBiAEIQ4CQAJAAkACQAJAAkADQCALLQAAIQ0CQAJAAkACQAJAIAVBAXENACANQf8BcUHfAEYNASANIQkgDUH+AXFBMEYNBAwMCyANQf8BcUHfAEcNAiAJQf4BcSEKA0ACQAJAIAhBAUYNACAKQTBHDQAgCy0AAUF+cUH/AXFBMEYNAQsgAkHvgICAeDYCOCABIAQgAkE4ahCAIyABKAJoIQ4gASgCXCEIIAEoAlghCwsgASAOQQFqIg42AmggASAIQX9qIgg2AlwgASALQQFqIgs2AlgCQCAIRQ0AIAstAAAiCUHfAEcNAwwBCwsgDiAEayENIAEoAmAgBCABKAJsa2ohCgwHCwNAIAJB74CAgHg2AjggASAEIAJBOGoQgCMgASABKAJcQX9qIgg2AlwgASABKAJYQQFqIgs2AlggASABKAJoQQFqIg42AmggCEUNCyALLQAAIglB3wBGDQALC0EBIQYgCUH+AXFBMEYNASAFQQFxRQ0JIA4gBGshDSABKAJgIAQgASgCbGtqIQogCUHuAEcNBQwICyANQf4BcUEwRw0CIA0hCQtBASEFIAEgDkEBaiIONgJoIAEgCEF/aiIINgJcIAEgC0EBaiILNgJYIAgNAAsgDiAEayEDIAEoAmAgBCABKAJsa2ohCiAGQQFxDQEMAwsgDiAEayEDIAEoAmAgBCABKAJsa2ohCgJAIA1B/wFxQe4ARw0AIAMhDQwFCyAGQQFxRQ0CCyADIQ0LQQAhAyACQThqIA0gDUEAR2tBAUEBEIEPIAIoAjwhCwJAIAIoAjhBAUYNACACQQA2AjQgAiACKAJAIgg2AjAgAiALNgIsAkAgDiAERw0AIAghCgwDC0EAIQMDQAJAIAotAAAiBEHfAEYNAAJAIAMgAigCLEcNACACQSxqENETIAIoAjAhCAsgCCADaiAEOgAAIAIgA0EBaiIDNgI0CyAKQQFqIQogDUF/aiINDQALIAIoAjAhCiACKAIsIQsMAgsgCyACKAJAEOkgAAtBgICAgHghCwsCQAJAAkACQAJAIANBNUkNACAKIQREAAAAAAAAAAAhEQNAIBFEAAAAAAAAAEBEAAAAAAAAAABEAAAAAAAA8D8gBC0AAEEwRhsQnSUhESAEQQFqIQQgA0F/aiIDDQAMAgsLQQAhDgJAAkACQCADDgIFAAELQQEhDiAKLQAAIgRBVWoOAwQBBAELIAotAAAhBAsgCiAEQf8BcUErRiIIaiEEAkACQCADIAhrIgNBEUkNAEIAIRADQCAELQAAIQggEEIAUw0EAkAgCEFQaiIIQQJPDQAgBEEBaiEEIBBCAYYgCK2EIRAgA0F/aiIDRQ0DDAELC0EBIQ4MBAtCACEQIANFDQBBASEOA0AgBC0AAEFQaiIIQQFLDQQgBEEBaiEEIBBCAYYgCK2EIRAgA0F/aiIDDQALCyAQuiERCyABKAJcRQ0CIAEoAlgsAAAiA0EASA0CIAMtAMCcmQFFDQIgASgCaCEDIAJBoICAgHg2AjggAyADIAJBOGoQxiQhBEECIQMgC0GAgICAeEYNCCALIAoQniMMCAtBAkEBIAhB/gFxQTBGGyEOCyACIA46ADhB0P2aAUErIAJBOGpBgMCZAUGQwJkBEM8UAAtBACEDAkAgC0GAgICAeEcNAAwHCyALIAoQniMMBgsgASAOQQFqNgJoIAEgCEF/ajYCXCABIAtBAWo2AlggAkHfADYCOAJAAkAgCiANIAJBOGpBARDFHw0AIAJBOGogCiANEMwFAkAgAigCOA0AIAJBIGogAigCPCIDIAIoAkAiCBDnGAJAAkAgAigCICILDQBBAiELDAELIAMgCyALIAIoAiQiCkErEJUYIg0bIQMgCCAKIA0bIQhBACELCyACQThqIAMgCEECEOYCIAIoAjgiA0GAgICAeEYNACACIAIvAD07ASwgAiACLQA/OgAuIAItADwhDiACKAJAIQhBEBCJASIERQ0CIAQgDjoABCAEIAM2AgAgBCACLwEsOwAFIAQgAi0ALjoAByAEIAg2AghBASEDIAQgC0EBIAgbOgAMDAcLIAJBl4CAgHg2AjhBAiEDIAJBAjoAPCAEIA4gBCAOSRsgBCAOIAQgDksbIAJBOGoQsxshBAwGCyACQe+AgIB4NgI4IAQgDiAEIA5JGyAEIA4gBCAOSxsgAkE4ahCzGyEEQQIhAwwFC0EEQRAQjSQACyACQZeAgIB4NgI4IAJBAjoAPCAOIAQgAkE4ahDHJCEEDAMLIAEgA0F+aiIINgJcQQIhAyABIARBAmoiCzYCWCABIAEoAmhBAmoiBDYCaCAEIQ4CQCAIRQ0AQQAhBUEAIQYgBCEOAkACQAJAAkACQAJAA0AgCy0AACEJAkACQAJAAkACQCAFQQFxDQAgCUH/AXFB3wBGDQEgCSENIAlB+AFxQTBGDQQMDAsgCUH/AXFB3wBHDQIgDUH4AXEhCgNAAkACQCAIQQFGDQAgCkEwRw0AIAstAAFBeHFB/wFxQTBGDQELIAJB74CAgHg2AjggASAEIAJBOGoQgCMgASgCaCEOIAEoAlwhCCABKAJYIQsLIAEgDkEBaiIONgJoIAEgCEF/aiIINgJcIAEgC0EBaiILNgJYAkAgCEUNACALLQAAIg1B3wBHDQMMAQsLIA4gBGshAyABKAJgIAQgASgCbGtqIQoMBwsDQCACQe+AgIB4NgI4IAEgBCACQThqEIAjIAEgASgCXEF/aiIINgJcIAEgASgCWEEBaiILNgJYIAEgASgCaEEBaiIONgJoIAhFDQsgCy0AACINQd8ARg0ACwtBASEGIA1B+AFxQTBGDQEgBUEBcUUNCSAOIARrIQMgASgCYCAEIAEoAmxraiEKIA1B7gBHDQUMCAsgCUH4AXFBMEcNAiAJIQ0LQQEhBSABIA5BAWoiDjYCaCABIAhBf2oiCDYCXCABIAtBAWoiCzYCWCAIDQALIA4gBGshDSABKAJgIAQgASgCbGtqIQogBkEBcQ0BDAMLIA4gBGshDSABKAJgIAQgASgCbGtqIQoCQCAJQf8BcUHuAEcNACANIQMMBQsgBkEBcUUNAgsgDSEDC0EAIQ0gAkE4aiADIANBAEdrQQFBARCBDyACKAI8IQsCQCACKAI4QQFGDQAgAkEANgI0IAIgAigCQCIINgIwIAIgCzYCLAJAIA4gBEcNACAIIQoMAwtBACENA0ACQCAKLQAAIgRB3wBGDQACQCANIAIoAixHDQAgAkEsahDREyACKAIwIQgLIAggDWogBDoAACACIA1BAWoiDTYCNAsgCkEBaiEKIANBf2oiAw0ACyACKAIwIQogAigCLCELDAILIAsgAigCQBDpIAALQYCAgIB4IQsLIAogDRCoBSERAkAgASgCXEUNACABKAJYLAAAIgNBAEgNACADLQDAnJkBRQ0AIAEoAmghAyACQaCAgIB4NgI4IAMgAyACQThqEMYkIQRBAiEDIAtBgICAgHhGDQUgCyAKEJ4jDAULQQAhAwJAIAtBgICAgHhHDQAMBgsgCyAKEJ4jDAULIAEgDkEBajYCaCABIAhBf2o2AlwgASALQQFqNgJYIAJB3wA2AjgCQAJAIAogAyACQThqQQEQxR8NACACQThqIAogAxDMBQJAIAIoAjgNACACQRhqIAIoAjwiAyACKAJAIggQ5xgCQAJAIAIoAhgiCw0AQQIhCwwBCyADIAsgCyACKAIcIgpBKxCVGCINGyEDIAggCiANGyEIQQAhCwsgAkE4aiADIAhBCBDmAiACKAI4IgNBgICAgHhGDQAgAiACLwA9OwEsIAIgAi0APzoALiACLQA8IQ4gAigCQCEIQRAQiQEiBEUNAiAEIA46AAQgBCADNgIAIAQgAi8BLDsABSAEIAItAC46AAcgBCAINgIIQQEhAyAEIAtBASAIGzoADAwGCyACQZeAgIB4NgI4IAJBCDoAPCAEIA4gBCAOSRsgBCAOIAQgDksbIAJBOGoQsxshBEECIQMMBQsgAkHvgICAeDYCOCAEIA4gBCAOSRsgBCAOIAQgDksbIAJBOGoQsxshBEECIQMMBAtBBEEQEI0kAAsgAkGXgICAeDYCOCACQQg6ADwgDiAEIAJBOGoQxyQhBAwCC0GAgICAeCENCwJAAkAgA0EOSQ0ARAAAAAAAAAAAIREgCiEEA0AgBC0AACEIIARBAWohBCARRAAAAAAAADBAIAhBD3EiDiAOQQlqIAhBwQBJG7gQnSUhESADQX9qIgMNAAwCCwtBACEOAkACQAJAIAMOAgYAAQtBASEOIAotAAAiBEFVag4DBQEFAQsgCi0AACEECwJAIAMgBEH/AXFBK0YiBGsiCA0ARAAAAAAAAAAAIREMAQsgCiAEaiEDQgAhEEEBIQ4DQCADLQAAIgRBv39qQV9xQQpqIARBUGogBEE5SxsiBEEPSw0EIANBAWohAyAQQgSGIASthCEQIAhBf2oiCA0ACyAQuiERCwJAIAEoAlxFDQAgASgCWCwAACIDQQBIDQAgAy0AwJyZAUUNACABKAJoIQMgAkGggICAeDYCOCADIAMgAkE4ahDGJCEEQQIhAyANQYCAgIB4Rg0BIA0gChCeIwwBC0EAIQMCQCANQYCAgIB4Rw0ADAILIA0gChCeIwwBCwsCQCADQQJHDQAgACAENgIEQQEhAwwGCyABQQhqIQgCQCADQQFHDQACQCAIKAIAQQpGDQAgCBC1CwsgASAENgIMIAFBCDYCCCAAQcIAOgABDAQLAkAgCCgCAEEKRg0AIAgQtQsLIAEgETkDECABQQc2AgggAEHBADoAAQwDCyACIA46ADhB0P2aAUErIAJBOGpBgMCZAUHAwJkBEM8UAAsgAyAEayEOIAkhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0AgCCADRg0BIA4gA2ohBCADQQFqIQMgBC0AAEEwRg0ACyAHQQFxDQRBgICAgHghBCAGQQFxDQEgCyEOIAohAwwCCyABKAJcIQMgBSABKAJoIgRBf2pGDQQgA0UNAiABKAJYLAAAIgNBAEgNAiADLQDAnJkBQQFHDQIgAkGggICAeDYCOCAEIAQgAkE4ahDGJCEDDBELQQAhAyACQThqIAogCkEAR2tBAUEBEIEPIAIoAjwhBCACKAI4QQFGDQQgAkEANgI0IAIgAigCQCIONgIwIAIgBDYCLCAIIAlGDQBBACEDA0ACQCALLQAAIgRB3wBGDQACQCADIAIoAixHDQAgAkEsahDREyACKAIwIQ4LIA4gA2ogBDoAACACIANBAWoiAzYCNAsgC0EBaiELIApBf2oiCg0ACyACKAIwIQ4gAigCLCEECyAOIAMQqAUhEQJAAkAgASgCXEUNACABKAJYLAAAIgNBAEgNAEEBIQggAy0AwJyZAUEBRw0AIAEoAmghAyACQaCAgIB4NgI4IAMgAyACQThqEMYkIQMMAQsCQCABLQCBAUEgcUUNACABLQCEAUH/AXFFDQAgAkGCgYCAeDYCOCABIAUgAkE4ahCAIwsgAkGVgICAeDYCOCABIAUgAkE4ahD0DkEAIQgLAkAgBEGAgICAeEYNACAEIA4QniMLIAhFDQwMDwsCQCABLQCBAUEgcUUNACABLQCEAUH/AXFFDQAgAkGCgYCAeDYCOCABIAUgAkE4ahCAIwsgAkGVgICAeDYCOCABIAUgAkE4ahD0DkQAAAAAAAAAACERDAsLIAJBlICAgHg2AjggASAFIAJBOGoQ9A4gASgCXCEDCwJAIAMNACABKAJsIQMgASgCYCEEDAgLAkAgASgCWCIELQAAIghBLkYNACAIIQsMAwsgASADQX9qIgM2AlwgASAEQQFqIgQ2AlggASABKAJoQQFqIg42AmggA0UNAUEAIQcgDiEKA0AgBC0AACELAkACQAJAAkAgB0EBcQ0AIAtB/wFxQd8ARg0BDAMLIAtB/wFxQd8ARw0CIA9BUGohBgNAAkACQCADQQFGDQAgBkH/AXFBCUsNACAELQABQVBqQf8BcUEKSQ0BCyACQe+AgIB4NgI4IAEgDiACQThqEIAjIAEoAmghCiABKAJcIQMgASgCWCEECyABIApBAWoiCjYCaCABIANBf2oiAzYCXCABIARBAWoiBDYCWCADRQ0CIAQtAAAiC0HfAEYNAAtBASEGDAILA0AgAkHvgICAeDYCOCABIA4gAkE4ahCAIyABIAEoAlxBf2oiAzYCXCABIAEoAlhBAWoiBDYCWCABIAEoAmhBAWoiCjYCaCADRQ0BQQEhBiAELQAAIgtB3wBHDQIMAAsLIAogBWshCCABKAJgIAUgASgCbGtqIQMMBgsgC0FQakH/AXFBCUsNA0EBIQcgASAKQQFqIgo2AmggASADQX9qIgM2AlwgASAEQQFqIgQ2AlggCyEPIAMNAAsgCiAFayEEIAEoAmAgBSABKAJsa2ohAyAGQQFxDQMMBQsgBCACKAJAEOkgAAsgDiAFayEEIAEoAmAgBSABKAJsa2ohAyAGQQFxRQ0DIAQhCCAOIQoMAgsCQCALQSByQf8BcUHlAEYNACABKAJsIQMgASgCYCEEIAhBLkcNBSAEIAUgA2tqIQMgASgCaCIKIAVrIQQgBkEBcUUNAwwBCyABIANBf2oiAzYCXCABIARBAWoiBDYCWCABIAEoAmhBAWoiCDYCaAJAAkAgAw0AIAJBpYCAgHg2AjggAkEsaiAIIAggAkE4ahDrIwJAIAItACxFDQAgAigCMCEDDAwLIAItAC0hAwwBCyAELQAAIQMLAkACQCADQf8BcUFVag4DAAEAAQsgASABKAJcQX9qNgJcIAEgASgCWEEBajYCWCABIAEoAmhBAWo2AmgLIAJBOGogARDRBgJAIAItAEEiCEECRw0AIAIoAjghAwwKCyABKAJoIgogBWshBCABKAJgIAUgASgCbGtqIQMgCCAGckEBcUUNAgsgBCEIC0EAIQQgAkE4aiAIIAhBAEdrQQFBARCBDyACKAI8IQ4CQCACKAI4QQFGDQAgAkEANgI0IAIgAigCQCILNgIwIAIgDjYCLAJAIAogBUcNACALIQMMAwtBACEEA0ACQCADLQAAIg5B3wBGDQACQCAEIAIoAixHDQAgAkEsahDREyACKAIwIQsLIAsgBGogDjoAACACIARBAWoiBDYCNAsgA0EBaiEDIAhBf2oiCA0ACyACKAIwIQMgAigCLCEODAILIA4gAigCQBDpIAALQYCAgIB4IQ4LIAJBOGogAyAEEJMBAkAgAi0AOEUNACACIAItADk6ACxBxNmYAUEdIAJBLGpBtNmYAUHk2ZgBEM8UAAsgAisDQCERIA5BgICAgHhGDQEgDiADEJ4jDAELIAEgDDYCaCABIAEoAmQgDCADayIIazYCXCABIAQgCGo2AlggCCAJIANrIgNrIQggBCADaiEDAkAgBkEBcQ0AIAMgCBCsCyERDAELQQAhBCACQThqIAggCEEAR2tBAUEBEIEPIAIoAjwhCAJAIAIoAjhBAUYNACACQQA2AjQgAiACKAJAIg42AjAgAiAINgIsAkAgDCAJRg0AQQAhBANAAkAgAy0AACIIQd8ARg0AAkAgBCACKAIsRw0AIAJBLGoQ0RMgAigCMCEOCyAOIARqIAg6AAAgAiAEQQFqIgQ2AjQLIANBAWohAyANQX9qIg0NAAsgAigCMCEOIAIoAiwhCAsgDiAEEKwLIREgCEGAgICAeEYNASAIIA4QniMMAQsgCCACKAJAEOkgAAsgASgCXEUNACABKAJYLAAAIgNBAEgNACADLQDAnJkBQQFHDQAgASgCaCEDIAJBoICAgHg2AjggAyADIAJBOGoQxiQhAwwDCwJAIAEoAghBCkYNACABQQhqELULCyABIBE5AxAgAUEHNgIIQcEAIQMLIAAgAzoAAQtBACEDDAELIAAgAzYCBEEBIQMLIAAgAzoAACACQdAAaiQAC4s6ARV/IwBBEGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCACIEIAIoAgQiBUsNACABLQDEAkUgAi0AEXIhBgJAIAItABANACABKAIcIgdFDQIgBkEBcQ0DQQAhCCABKAK8AiIJDQQMBQtBACEKAkACQAJAAkACQAJAAkACQCABKALAAiIJDQAMAQsgCSABKAK4AksNACABKAIIIgcgCUkNBiAHIAlGDQUgByAJayELAkACQCABKAIEIAlBAnRqIgwtAAAiB0H/AUcNACABKAIoQQJqIQcMAQsgByAHQQJ2aiAHQQNxQQBHakECaiEHCyAHIAtPDQQCQAJAIAwgB0ECdGooAgAiDUF/TA0AAkAgB0EBaiIHIAtPDQAgDCAHQQJ0aigCACEODAILIAcgC0HM7YQBEO4WAAsgDUH/////B3EhDgsgDiABKAIUIgdPDQMgBCABKAIQIA5BAnRqKAIAIgdJDQIgBCAHayEPQQEhCiAGQQFxDQELAkAgBCAFSQ0AIAQhEAwSCyACKAIMIhEgBCARIARLGyESIAFBLGohEyACKAIIIRQgBCEMIAQhEANAAkACQAJAAkACQAJAAkACQCAMIBJGDQACQAJAAkACQCAJIAEoAggiFU8NACATIBQgDGotAABqLQAAIQICQAJAAkACQAJAAkACQAJAIAEoAgQiFiAJQQJ0aigCACIHQf8BcUGCfmoOAgIAAQsgCSACakECaiICIBVPDQggFiACQQJ0aigCACIJQQFGDSUMBgsgFSAJQQJqIglJDQggB0ECdkE/cSAHQQNxQQBHaiIHIBUgCWsiC0sNCSAHIAlqIQggB0ECdCEHIBYgCUECdGohC0F/IQ0DQCAHRQ0lIA1BAWohDSACIAsoAgAiCUH/AXFGDQIgAiAJQQh2Qf8BcUYNAyACIAlBEHZB/wFxRg0EIAtBBGohCyAHQXxqIQcgAiAJQRh2Rw0ACyAIIA1BAnRqQQNqIgIgFUkNBCACIBVBrJeFARDuFgALIAIgB0EIdkH/AXFHDSMgCUECaiICIBVJDQMgAiAVQeyWhQEQ7hYACyANQQJ0IAhqIgIgFUkNAiACIBVB3JeFARDuFgALIAggDUECdGpBAWoiAiAVSQ0BIAIgFUHMl4UBEO4WAAsgCCANQQJ0akECaiICIBVPDQwLIBYgAkECdGooAgAhCQsgCSABKAK0AksNCyAJRQ0eIAkgASgCuAJLDQsgFSAJSQ0FIBUgCUYNBiAVIAlrIQcCQAJAIBYgCUECdGoiCy0AACICQf8BRw0AIAEoAihBAmohAgwBCyACIAJBAnZqIAJBA3FBAEdqQQJqIQILIAIgB08NBwJAAkAgCyACQQJ0aigCACINQX9MDQACQCACQQFqIgIgB08NACALIAJBAnRqKAIAIQIMAgsgAiAHQczthAEQ7hYACyANQf////8HcSECCyACIAEoAhQiB08NCCAMQQFqIgcgASgCECACQQJ0aigCACILSQ0JIAcgC2siCyAESw0LQQEhCgJAIAZBAXENACACIQ4gByEQIAshDwwMCyAAIAI2AgwgACAHNgIIIAAgCzYCBCAAQQE2AgAMHwsgCSAVQcyWhQEQ7hYACyACIBVB3JaFARDuFgALIAkgFSAVQfyWhQEQiwoAC0EAIAcgC0GMl4UBEIsKAAsgEiARQdzHgQEQ7hYACyAJIBUgFUH8l4UBEIsKAAtBAEEAQezthAEQ7hYACyACIAdBvO2EARDuFgALIAIgB0Hsl4UBEO4WAAtB/NaEAUElQaDXhAEQ1xsACyACIBVBvJeFARDuFgALIAxBAWoiDCAFRg0SDAALCyAAIA42AgwgACAENgIIIAAgDzYCBCAAQQE2AgAMEQtB/NaEAUElQaDXhAEQ1xsACyAOIAdB7JeFARDuFgALIAcgC0G87YQBEO4WAAtBAEEAQezthAEQ7hYACyAJIAcgB0H8l4UBEIsKAAsgAEEANgIADAsLAkACQCAGQQFxDQBBACEIAkACQAJAAkACQAJAAkAgASgCvAIiCQ0ADAELIAkgASgCuAJLDQAgAUEIaigCACIHIAlJDQUgByAJRg0EIAcgCWshCwJAAkAgAUEEaigCACAJQQJ0aiIMLQAAIgdB/wFHDQAgASgCKEECaiEHDAELIAcgB0ECdmogB0EDcUEAR2pBAmohBwsgByALTw0DAkACQCAMIAdBAnRqKAIAIg1Bf0wNAAJAIAdBAWoiByALTw0AIAwgB0ECdGooAgAhEAwCCyAHIAtBzO2EARDuFgALIA1B/////wdxIRALIBAgASgCFCIHTw0CIAQgASgCECAQQQJ0aigCACIHSQ0BIAQgB2shEUEBIQgLAkAgBCAFTw0AIAIoAgwiFyAEIBcgBEsbIQ4gAUEsaiEPIAIoAgghCiAEIRMDQAJAAkACQAJAAkAgEyAORg0AAkAgCSABKAIIIhVJDQAgCSENDA4LIA8gCiATai0AAGotAAAiAkECaiEGIAEoAgQhFiAJIQ0CQAJAAkACQAJAAkACQANAAkACQAJAAkAgFiANQQJ0aigCACIJQf8BcUGCfmoOAgIAAQsgBiANaiIJIBVPDQcgFiAJQQJ0aigCACIJQQFGDQIMDwsgFSANQQJqIhJJDQcgCUECdkE/cSAJQQNxQQBHaiIUIBUgEmsiCUsNCCAUQQJ0IQcgFiASQQJ0aiELQX8hDANAIAdFDQIgDEEBaiEMIAIgCygCACIJQf8BcUYNBCACIAlBCHZB/wFxRg0FIAIgCUEQdkH/AXFGDQYgC0EEaiELIAdBfGohByACIAlBGHZHDQALIBQgEmogDEECdGpBA2oiAiAVSQ0NIAIgFUGsl4UBEO4WAAsgAiAJQQh2Qf8BcUYNCwsgDUEBaiIJIBVPDQcgFiAJQQJ0aigCACINIBVPDRUMAAsLIAxBAnQgFCASamoiAiAVSQ0JIAIgFUHcl4UBEO4WAAsgFCASaiAMQQJ0akEBaiICIBVJDQggAiAVQcyXhQEQ7hYACyAUIBJqIAxBAnRqQQJqIgIgFU8NBQwHCyAJIBVB3JaFARDuFgALIBIgFSAVQfyWhQEQiwoAC0EAIBQgCUGMl4UBEIsKAAsgCSAVQZyXhQEQ7hYACyAOIBdB3MeBARDuFgALIAIgFUG8l4UBEO4WAAsgDUECaiICIBVJDQAgAiAVQeyWhQEQ7hYACyAWIAJBAnRqKAIAIQkLAkAgCSABKAK0AksNACAJRQ0CIAkgASgCuAJLDQACQAJAAkACQAJAIBUgCUkNACAVIAlGDQEgFSAJayEHAkACQCAWIAlBAnRqIgstAAAiAkH/AUcNACABKAIoQQJqIQIMAQsgAiACQQJ2aiACQQNxQQBHakECaiECCyACIAdPDQICQAJAIAsgAkECdGooAgAiDEF/TA0AAkAgAkEBaiICIAdPDQAgCyACQQJ0aigCACEQDAILIAIgB0HM7YQBEO4WAAsgDEH/////B3EhEAsgECABKAIUIgJPDQMgE0EBaiIEIAEoAhAgEEECdGooAgAiAkkNBCAEIAJrIRFBASEIDAULIAkgFSAVQfyXhQEQiwoAC0EAQQBB7O2EARDuFgALIAIgB0G87YQBEO4WAAsgECACQeyXhQEQ7hYAC0H81oQBQSVBoNeEARDXGwALIBNBAWoiEyAFRw0ACwsgACAQNgIMIAAgBDYCCCAAIBE2AgQgACAINgIADBELQfzWhAFBJUGg14QBENcbAAsgECAHQeyXhQEQ7hYACyAHIAtBvO2EARDuFgALQQBBAEHs7YQBEO4WAAsgCSAHIAdB/JeFARCLCgALAkACQAJAAkACQAJAAkAgASgCvAIiCUUNACAJIAEoArgCSw0AIAFBCGooAgAiAiAJSQ0FIAIgCUYNBCACIAlrIQcCQAJAIAFBBGooAgAgCUECdGoiCS0AACICQf8BRw0AIAEoAihBAmohAgwBCyACIAJBAnZqIAJBA3FBAEdqQQJqIQILIAIgB08NAwJAAkAgCSACQQJ0aigCACILQX9MDQACQCACQQFqIgIgB08NACAJIAJBAnRqKAIAIQIMAgsgAiAHQczthAEQ7hYACyALQf////8HcSECCyACIAEoAhQiCU8NAiAEIAEoAhAgAkECdGooAgAiCUkNASAAIAI2AgwgACAENgIIIABBATYCACAAIAQgCWs2AgQMEgsCQAJAAkAgBCAFTw0AIAIoAgwiCiAEIAogBEsbIQYgAUEsaiEOIAIoAgghDwNAAkACQAJAAkACQCAEIAZGDQACQCAJIAEoAggiFUkNACAJIQ0MDwsgDiAPIARqLQAAai0AACICQQJqIRQgASgCBCEWIAkhDQJAAkACQAJAAkACQAJAA0ACQAJAAkACQCAWIA1BAnRqKAIAIglB/wFxQYJ+ag4CAgABCyAUIA1qIgkgFU8NByAWIAlBAnRqKAIAIglBAUYNAgwPCyAVIA1BAmoiEkkNByAJQQJ2QT9xIAlBA3FBAEdqIhMgFSASayIJSw0IIBNBAnQhByAWIBJBAnRqIQtBfyEMA0AgB0UNAiAMQQFqIQwgAiALKAIAIglB/wFxRg0EIAIgCUEIdkH/AXFGDQUgAiAJQRB2Qf8BcUYNBiALQQRqIQsgB0F8aiEHIAIgCUEYdkcNAAsgEyASaiAMQQJ0akEDaiICIBVJDQ0gAiAVQayXhQEQ7hYACyACIAlBCHZB/wFxRg0LCyANQQFqIgkgFU8NByAWIAlBAnRqKAIAIg0gFU8NFgwACwsgDEECdCATIBJqaiICIBVJDQkgAiAVQdyXhQEQ7hYACyATIBJqIAxBAnRqQQFqIgIgFUkNCCACIBVBzJeFARDuFgALIBMgEmogDEECdGpBAmoiAiAVTw0FDAcLIAkgFUHcloUBEO4WAAsgEiAVIBVB/JaFARCLCgALQQAgEyAJQYyXhQEQiwoACyAJIBVBnJeFARDuFgALIAYgCkHcx4EBEO4WAAsgAiAVQbyXhQEQ7hYACyANQQJqIgIgFUkNACACIBVB7JaFARDuFgALIBYgAkECdGooAgAhCQsCQCAJIAEoArQCSw0AIAlFDQMgCSABKAK4Ak0NBAsgBEEBaiIEIAVHDQALCyAAQQA2AgAMEwsgAEEANgIADBILAkACQAJAAkACQCAVIAlJDQAgFSAJRg0BIBUgCWshBwJAAkAgFiAJQQJ0aiIJLQAAIgJB/wFHDQAgASgCKEECaiECDAELIAIgAkECdmogAkEDcUEAR2pBAmohAgsgAiAHTw0CAkACQCAJIAJBAnRqKAIAIgtBf0wNAAJAIAJBAWoiAiAHTw0AIAkgAkECdGooAgAhAgwCCyACIAdBzO2EARDuFgALIAtB/////wdxIQILIAIgASgCFCIJTw0DIARBAWoiCSABKAIQIAJBAnRqKAIAIgFJDQQgACACNgIMIAAgCTYCCCAAQQE2AgAgACAJIAFrNgIEDBYLIAkgFSAVQfyXhQEQiwoAC0EAQQBB7O2EARDuFgALIAIgB0G87YQBEO4WAAsgAiAJQeyXhQEQ7hYAC0H81oQBQSVBoNeEARDXGwALQfzWhAFBJUGg14QBENcbAAsgAiAJQeyXhQEQ7hYACyACIAdBvO2EARDuFgALQQBBAEHs7YQBEO4WAAsgCSACIAJB/JeFARCLCgALIA0gFUHMloUBEO4WAAsgDSAVQcyWhQEQ7hYACwJAAkACQAJAAkACQAJAAkAgASgCvAIiCUUNACAJIAEoArgCSw0AIAFBCGooAgAiAiAJSQ0FIAIgCUYNBCACIAlrIQcCQAJAIAFBBGooAgAgCUECdGoiCS0AACICQf8BRw0AIAEoAihBAmohAgwBCyACIAJBAnZqIAJBA3FBAEdqQQJqIQILIAIgB08NAwJAAkAgCSACQQJ0aigCACILQX9MDQACQCACQQFqIgIgB08NACAJIAJBAnRqKAIAIQIMAgsgAiAHQczthAEQ7hYACyALQf////8HcSECCyACIAEoAhQiCU8NAiAEIAEoAhAgAkECdGooAgAiCUkNASAAIAI2AgwgACAENgIIIABBATYCACAAIAQgCWs2AgQMEQsgAyAHIAEoAiAiCygCCEF/akF4cWpBCGogAigCCCIOIAIoAgwiBiAEIAUgCygCEBETAAJAIAMoAgAiAg4DBwYABwsCQCADKAIEIgQgBU8NACABQSxqIQ8DQAJAAkACQAJAAkAgBCAGTw0AAkACQAJAAkACQAJAAkACQAJAIAkgASgCCCIVSQ0AIAkhDQwBCyAPIA4gBGotAABqLQAAIgJBAmohFCABKAIEIRYgCSENA0ACQAJAAkACQCAWIA1BAnRqKAIAIglB/wFxQYJ+ag4CAgABCyAUIA1qIgkgFU8NCCAWIAlBAnRqKAIAIglBAUYNAgwQCyAVIA1BAmoiEkkNCCAJQQJ2QT9xIAlBA3FBAEdqIhMgFSASayIJSw0JIBNBAnQhByAWIBJBAnRqIQtBfyEMA0AgB0UNAiAMQQFqIQwgAiALKAIAIglB/wFxRg0FIAIgCUEIdkH/AXFGDQYgAiAJQRB2Qf8BcUYNByALQQRqIQsgB0F8aiEHIAIgCUEYdkcNAAsgEyASaiAMQQJ0akEDaiICIBVJDQ4gAiAVQayXhQEQ7hYACyACIAlBCHZB/wFxRg0MCyANQQFqIgkgFU8NCCAWIAlBAnRqKAIAIg0gFUkNAAsLIA0gFUHMloUBEO4WAAsgDEECdCATIBJqaiICIBVJDQkgAiAVQdyXhQEQ7hYACyATIBJqIAxBAnRqQQFqIgIgFUkNCCACIBVBzJeFARDuFgALIBMgEmogDEECdGpBAmoiAiAVTw0FDAcLIAkgFUHcloUBEO4WAAsgEiAVIBVB/JaFARCLCgALQQAgEyAJQYyXhQEQiwoACyAJIBVBnJeFARDuFgALIAQgBkHcx4EBEO4WAAsgAiAVQbyXhQEQ7hYACyANQQJqIgIgFUkNACACIBVB7JaFARDuFgALIBYgAkECdGooAgAhCQsCQAJAIAkgASgCtAJLDQACQAJAAkACQAJAAkACQAJAAkAgCUUNACAJIAEoArgCSw0DIBUgCUkNBSAVIAlGDQYgFSAJayEHIBYgCUECdGoiCS0AACICQf8BRw0BIAEoAihBAmohAgwCCyAAQQA2AgAMHAsgAiACQQJ2aiACQQNxQQBHakECaiECCyACIAdPDQQCQAJAIAkgAkECdGooAgAiC0F/TA0AAkAgAkEBaiICIAdPDQAgCSACQQJ0aigCACECDAILIAIgB0HM7YQBEO4WAAsgC0H/////B3EhAgsgAiABKAIUIglPDQUgBEEBaiIJIAEoAhAgAkECdGooAgAiAU8NAUH81oQBQSVBoNeEARDXGwALIAMgASgCHCABKAIgIgIoAghBf2pBeHFqQQhqIA4gBiAEIAUgAigCEBETAAJAIAMoAgBFDQAgAygCBCICIARNDQYMBwsgAEEANgIADBkLIAAgAjYCDCAAIAk2AgggAEEBNgIAIAAgCSABazYCBAwYCyAJIBUgFUH8l4UBEIsKAAtBAEEAQezthAEQ7hYACyACIAdBvO2EARDuFgALIAIgCUHsl4UBEO4WAAsgBEEBaiECCyACIQQgAiAFSQ0ACwsgAEEANgIADBALQfzWhAFBJUGg14QBENcbAAsgAiAJQeyXhQEQ7hYACyACIAdBvO2EARDuFgALQQBBAEHs7YQBEO4WAAsgCSACIAJB/JeFARCLCgALIAAgAygCDDYCDCAAIAMpAgQ3AgQLIAAgAjYCAAwJCyAJIAEoArgCSw0AIAFBCGooAgAiCyAJSQ0FIAsgCUYNBCALIAlrIQwCQAJAIAFBBGooAgAgCUECdGoiDS0AACILQf8BRw0AIAEoAihBAmohCwwBCyALIAtBAnZqIAtBA3FBAEdqQQJqIQsLIAsgDE8NAwJAAkAgDSALQQJ0aigCACIVQX9MDQACQCALQQFqIgsgDE8NACANIAtBAnRqKAIAIRAMAgsgCyAMQczthAEQ7hYACyAVQf////8HcSEQCyAQIAEoAhQiC08NAiAEIAEoAhAgEEECdGooAgAiC0kNASAEIAtrIRFBASEICyADIAcgASgCICILKAIIQX9qQXhxakEIaiACKAIIIg8gAigCDCIOIAQgBSALKAIQERMAAkACQAJAAkAgAygCACICDgMCAQACCyABQSxqIQogAygCBCECDAILIAAgAygCDDYCDCAAIAMpAgQ3AgQLIAAgAjYCAAwICwJAAkACQAJAA0ACQAJAAkACQCACIhIgBU8NAAJAAkACQAJAAkAgEiAOTw0AAkAgCSABKAIIIhVJDQAgCSENDBQLIAogDyASai0AAGotAAAiAkECaiEGIAEoAgQhFiAJIQ0CQAJAAkACQAJAAkACQANAAkACQAJAAkAgFiANQQJ0aigCACIJQf8BcUGCfmoOAgIAAQsgBiANaiIJIBVPDQcgFiAJQQJ0aigCACIJQQFGDQIMDwsgFSANQQJqIhNJDQcgCUECdkE/cSAJQQNxQQBHaiIUIBUgE2siCUsNCCAUQQJ0IQcgFiATQQJ0aiELQX8hDANAIAdFDQIgDEEBaiEMIAIgCygCACIJQf8BcUYNBCACIAlBCHZB/wFxRg0FIAIgCUEQdkH/AXFGDQYgC0EEaiELIAdBfGohByACIAlBGHZHDQALIBQgE2ogDEECdGpBA2oiAiAVSQ0NIAIgFUGsl4UBEO4WAAsgAiAJQQh2Qf8BcUYNCwsgDUEBaiIJIBVPDQcgFiAJQQJ0aigCACINIBVPDRsMAAsLIAxBAnQgFCATamoiAiAVSQ0JIAIgFUHcl4UBEO4WAAsgFCATaiAMQQJ0akEBaiICIBVJDQggAiAVQcyXhQEQ7hYACyAUIBNqIAxBAnRqQQJqIgIgFU8NBQwHCyAJIBVB3JaFARDuFgALIBMgFSAVQfyWhQEQiwoAC0EAIBQgCUGMl4UBEIsKAAsgCSAVQZyXhQEQ7hYACyASIA5B3MeBARDuFgALIAIgFUG8l4UBEO4WAAsgDUECaiICIBVJDQAgAiAVQeyWhQEQ7hYACyAWIAJBAnRqKAIAIQkLIAkgASgCtAJLDQMgCUUNAAJAIAkgASgCuAJLDQAgFSAJSQ0GIBUgCUYNByAVIAlrIQcCQAJAIBYgCUECdGoiCy0AACICQf8BRw0AIAEoAihBAmohAgwBCyACIAJBAnZqIAJBA3FBAEdqQQJqIQILIAIgB08NCAJAAkAgCyACQQJ0aigCACIMQX9MDQACQCACQQFqIgIgB08NACALIAJBAnRqKAIAIRAMAgsgAiAHQczthAEQ7hYACyAMQf////8HcSEQCyAQIAEoAhQiAk8NCSASQQFqIgQgASgCECAQQQJ0aigCACICTw0DQfzWhAFBJUGg14QBENcbAAsgAyABKAIcIAEoAiAiAigCCEF/akF4cWpBCGogDyAOIBIgBSACKAIQERMAIAMoAgBFDQEgAygCBCICIBJNDQMMBAsgACAQNgIMIAAgBDYCCCAAIBE2AgQgACAINgIADA8LIABBADYCAAwOCyAEIAJrIRFBASEIIAQhAgwBCyASQQFqIQIMAAsLIAkgFSAVQfyXhQEQiwoAC0EAQQBB7O2EARDuFgALIAIgB0G87YQBEO4WAAsgECACQeyXhQEQ7hYAC0H81oQBQSVBoNeEARDXGwALIBAgC0Hsl4UBEO4WAAsgCyAMQbzthAEQ7hYAC0EAQQBB7O2EARDuFgALIAkgCyALQfyXhQEQiwoACyANIBVBzJaFARDuFgALIAAgDjYCDCAAIBA2AgggACAPNgIEIAAgCjYCAAsgA0EQaiQAC5w/Agd/An4jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBdGpBByADQQtLGw4mHgABAgMEBQYHCAkKCwweHg0ODxARHhITFB4eFRYXGBkaGxweHR4eCyAAKAIMIgNFDR0gA0EEdCEEIAAoAgghAANAAkAgACgCAEECRg0AIABBDGooAgAiAyABEFwgAygCAEEaRw0AIAEgA0EIahCLCyIFRQ0AIAMQhAIgAyAFKQM4NwM4IAMgBSkDMDcDMCADIAUpAyg3AyggAyAFKQMgNwMgIAMgBSkDGDcDGCADIAUpAxA3AxAgAyAFKQMINwMIIAMgBSkDADcDACAFQcAAQQgQzhQLIABBEGohACAEQXBqIgQNAAweCwsgACgCDCIDRQ0cIANBDGwhBSAAKAIIIQMDQAJAAkAgAygCACIADQAgA0EEaigCACIAIAEQsgIgACgCAEEFRw0BIAEgAEEIahCLCyIERQ0BIAApAxAhCSAAQgA3AxAgACkDCCEKIABCATcDCCAAQgA3ABUgABCSCSAAIAQ2AiggACAJNwMYIAAgCjcDECAAQQA2AgggAEEGNgIADAELIAAgARBcIAAoAgBBGkcNACABIABBCGoQiwsiBEUNACAAEIQCIAAgBCkDODcDOCAAIAQpAzA3AzAgACAEKQMoNwMoIAAgBCkDIDcDICAAIAQpAxg3AxggACAEKQMQNwMQIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHAAEEIEM4UCyADQQxqIQMgBUF0aiIFDQAMHQsLAkAgACgCICIGQQhqKAIAIgBFDQAgBkEEaigCACIHIABBBnRqIQgDQAJAIAdBOGooAgAiAEUNACAAQQxsIQUgB0E0aigCACEEA0AgBCgCACIAIAEQXAJAIAAoAgBBGkcNACABIABBCGoQiwsiA0UNACAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UCyAEQQxqIQQgBUF0aiIFDQALCyAHIAEQwwQgASAHEP8IIAdBwABqIgAhByAAIAhHDQALCwJAIAZBFGooAgAiAEUNACAAQQxsIQUgBkEQaigCACEEA0AgBCgCACIAIAEQXAJAIAAoAgBBGkcNACABIABBCGoQiwsiA0UNACAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UCyAEQQxqIQQgBUF0aiIFDQALCwJAIAYoAhhBgICAgHhGDQAgBigCICIARQ0AIABBMGwhAyAGKAIcIQADQCAAIAEQywEgAEEwaiEAIANBUGoiAw0ACwsCQCAGKAI8IgBFDQAgASAAEMgUCyAGKAJAIgBFDRsgACgCACABELYBDBsLIAAoAgQiACABEFwgACgCAEEaRw0aIAEgAEEIahCLCyIBRQ0aIAAQhAIgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIAAgASkDADcDACABQcAAQQgQzhQMGgsgACgCDCIAIAEQXCAAKAIAQRpHDRkgASAAQQhqEIsLIgFFDRkgABCEAiAAIAEpAzg3AzggACABKQMwNwMwIAAgASkDKDcDKCAAIAEpAyA3AyAgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAFBwABBCBDOFAwZCyAAKAIEIgMgARBcAkAgAygCAEEaRw0AIAEgA0EIahCLCyIERQ0AIAMQhAIgAyAEKQM4NwM4IAMgBCkDMDcDMCADIAQpAyg3AyggAyAEKQMgNwMgIAMgBCkDGDcDGCADIAQpAxA3AxAgAyAEKQMINwMIIAMgBCkDADcDACAEQcAAQQgQzhQLIAAoAggiACABEFwgACgCAEEaRw0YIAEgAEEIahCLCyIBRQ0YIAAQhAIgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIAAgASkDADcDACABQcAAQQgQzhQMGAsCQAJAIANBC0cNACABIABBBGoQ/wYMAQsgACABENECIAEgABCjBwsgACgCOCIAIAEQXCAAKAIAQRpHDRcgASAAQQhqEIsLIgFFDRcgABCEAiAAIAEpAzg3AzggACABKQMwNwMwIAAgASkDKDcDKCAAIAEpAyA3AyAgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAFBwABBCBDOFAwXCyAAKAIoIgMgARBcAkAgAygCAEEaRw0AIAEgA0EIahCLCyIERQ0AIAMQhAIgAyAEKQM4NwM4IAMgBCkDMDcDMCADIAQpAyg3AyggAyAEKQMgNwMgIAMgBCkDGDcDGCADIAQpAxA3AxAgAyAEKQMINwMIIAMgBCkDADcDACAEQcAAQQgQzhQLIAAoAghBAkcNFiABIABBDGoQlhIMFgsgACgCCEEBRw0VIAEgAEEMahCWEgwVCyAAKAIEIgMgARBcAkAgAygCAEEaRw0AIAEgA0EIahCLCyIERQ0AIAMQhAIgAyAEKQM4NwM4IAMgBCkDMDcDMCADIAQpAyg3AyggAyAEKQMgNwMgIAMgBCkDGDcDGCADIAQpAxA3AxAgAyAEKQMINwMIIAMgBCkDADcDACAEQcAAQQgQzhQLIAAoAggiAyABEFwCQCADKAIAQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsgACgCDCIAIAEQXCAAKAIAQRpHDRQgASAAQQhqEIsLIgFFDRQgABCEAiAAIAEpAzg3AzggACABKQMwNwMwIAAgASkDKDcDKCAAIAEpAyA3AyAgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAFBwABBCBDOFAwUCwJAIAAtABhBBUcNACAAKAIQIAEQtBILAkAgACgCDCIDRQ0AIANBBHQhByAAKAIIQQxqIQUDQCAFKAIAIgMgARBcAkAgAygCAEEaRw0AIAEgA0EIahCLCyIERQ0AIAMQhAIgAyAEKQM4NwM4IAMgBCkDMDcDMCADIAQpAyg3AyggAyAEKQMgNwMgIAMgBCkDGDcDGCADIAQpAxA3AxAgAyAEKQMINwMIIAMgBCkDADcDACAEQcAAQQgQzhQLIAVBEGohBSAHQXBqIgcNAAsLIAAoAigiAEUNEyAAIAEQ7RsMEwsgACgCECIDIAEQXCAAQQRqIQUCQCADKAIAQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsCQCAFKAIAQYCAgIB4Rg0AIAEgBRDcDgsgACgCICIARQ0SIAAgARDtGwwSCyAAKAIMIgNFDREgA0ECdCEFIAAoAgghBANAIAQoAgAiACABEFwCQCAAKAIAQRpHDQAgASAAQQhqEIsLIgNFDQAgABCEAiAAIAMpAzg3AzggACADKQMwNwMwIAAgAykDKDcDKCAAIAMpAyA3AyAgACADKQMYNwMYIAAgAykDEDcDECAAIAMpAwg3AwggACADKQMANwMAIANBwABBCBDOFAsgBEEEaiEEIAVBfGoiBQ0ADBILCyAAKAIMIgNFDRAgA0ECdCEFIAAoAgghBANAIAQoAgAiACABEFwCQCAAKAIAQRpHDQAgASAAQQhqEIsLIgNFDQAgABCEAiAAIAMpAzg3AzggACADKQMwNwMwIAAgAykDKDcDKCAAIAMpAyA3AyAgACADKQMYNwMYIAAgAykDEDcDECAAIAMpAwg3AwggACADKQMANwMAIANBwABBCBDOFAsgBEEEaiEEIAVBfGoiBQ0ADBELCyAAKAIEIgMoAgAhBCADIAEQXCADKAIAIQUCQCAEQRpHDQACQCAFQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsCQCAAKAIYIgNFDQAgA0EIaigCACIERQ0AIARBAnQhBCADQQRqKAIAIQMDQCADKAIAIAEQtgEgA0EEaiEDIARBfGoiBA0ACwsgACgCCCIAQQhqKAIAIgNFDRAgA0ECdCEFIABBBGooAgAhBANAIAQoAgAiACABEFwCQCAAKAIAQRpHDQAgASAAQQhqEIsLIgNFDQAgABCEAiAAIAMpAzg3AzggACADKQMwNwMwIAAgAykDKDcDKCAAIAMpAyA3AyAgACADKQMYNwMYIAAgAykDEDcDECAAIAMpAwg3AwggACADKQMANwMAIANBwABBCBDOFAsgBEEEaiEEIAVBfGoiBQ0ADBELCwJAIAVBGkcNACABIANBCGoQiwsiBEUNACADEIQCIAMgBCkDODcDOCADIAQpAzA3AzAgAyAEKQMoNwMoIAMgBCkDIDcDICADIAQpAxg3AxggAyAEKQMQNwMQIAMgBCkDCDcDCCADIAQpAwA3AwAgBEHAAEEIEM4UCwJAIAAoAhgiA0UNACADQQhqKAIAIgRFDQAgBEECdCEEIANBBGooAgAhAwNAIAMoAgAgARC2ASADQQRqIQMgBEF8aiIEDQALCyAAKAIIIgBBCGooAgAiA0UNDyADQQJ0IQUgAEEEaigCACEEA0AgBCgCACIAIAEQXAJAIAAoAgBBGkcNACABIABBCGoQiwsiA0UNACAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UCyAEQQRqIQQgBUF8aiIFDQAMEAsLAkAgACgCDCIDRQ0AIANBKGwhBCAAKAIIIQMDQCADIAEQwwQgASADEP8IIANBKGohAyAEQVhqIgQNAAsLAkACQCAAKAIQIgMoAgBBgICAgHhHDQAgA0EEaiABEJcSDAELIAMoAggiBEUNACAEQTBsIQQgAygCBCEDA0AgAyABEMsBIANBMGohAyAEQVBqIgQNAAsLAkAgACgCICIDRQ0AIAMgARDJFAsgACgCJCIARQ0OIAAoAgAgARC2AQwOCwJAIAAoAiAiB0EIaigCACIARQ0AIABBDGwhBSAHQQRqKAIAIQQDQCAEKAIAIgAgARBcAkAgACgCAEEaRw0AIAEgAEEIahCLCyIDRQ0AIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQLIARBDGohBCAFQXRqIgUNAAsLAkAgB0EUaigCACIARQ0AIABB2ABsIQMgB0EQaigCACEAA0AgACABEJYBIABB2ABqIQAgA0Gof2oiAw0ACwsCQCAHKAIwIgBFDQAgACABEFwgACgCAEEaRw0AIAEgAEEIahCLCyIDRQ0AIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQLAkAgBygCNCIARQ0AIAEgABDIFAsCQCAHKAI4IgBFDQAgASAAEO4bCyAHQSBqKAIAIgBFDQ0gB0EcaigCACIEIABBBHRqIQUDQCAEKAIAIgAgARBcAkAgACgCAEEaRw0AIAEgAEEIahCLCyIDRQ0AIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQLAkAgBCgCDCIARQ0AIABBCGooAgAiA0UNACADQQJ0IQMgAEEEaigCACEAA0AgACgCACABELYBIABBBGohACADQXxqIgMNAAsLIARBEGoiBCAFRw0ADA4LCyAAKAIMIgBFDQwgACABELQSDAwLIAAoAgQiACABEFwgACgCAEEaRw0LIAEgAEEIahCLCyIBRQ0LIAAQhAIgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIAAgASkDADcDACABQcAAQQgQzhQMCwsgACgCBCIAIAEQXCAAKAIAQRpHDQogASAAQQhqEIsLIgFFDQogABCEAiAAIAEpAzg3AzggACABKQMwNwMwIAAgASkDKDcDKCAAIAEpAyA3AyAgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAFBwABBCBDOFAwKCyAAQSBqIQMCQCAALQA0QQJHDQAgAyABEM8eCyABIAMQpQkMCQsCQCAAKAIEIgYtAGwiAEECSw0AIAZB2ABqIQMCQCAAQQJHDQAgAyABEM8eCyABIAMQpQkgBi0AbCEACwJAIABB/wFxQQNHDQAgAiABIAZBwABqIgAQnQ0gAi0ALEEGRg0AIAAQkxMgACACKQMoNwMoIAAgAikDIDcDICAAIAIpAxg3AxggACACKQMQNwMQIAAgAikDCDcDCCAAIAIpAwA3AwALAkAgBigChAEiAEUNACAGKAKAASIFIABB2ABsaiEIA0ACQAJAAkAgBSgCACIAQXxqDgICAAELIAUoAgQiACABEFwgACgCAEEaRw0BIAEgAEEIahCLCyIDRQ0BIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQMAQsCQAJAAkAgAA4EAwABAgMLIAUoAgRBAUcNAiAFKAIIIgAgARBcIAAoAgBBGkcNAiABIABBCGoQiwsiA0UNAiAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UDAILIAUoAgQiBEHAAGogARC4AwJAIARBmAFqKAIAIgBFDQAgAEEobCEDIARBlAFqKAIAIQADQCABIAAQ6QIgAEEoaiEAIANBWGoiAw0ACwsgBC0APCIAQQZGDQECQCAAQQJLDQAgBEEoaiEDAkAgAEECRw0AIAMgARDPHgsgASADEKUJIAQtADwhAAsgAEH/AXFBA0cNASACIAEgBEEQaiIAEJ0NIAItACxBBkYNASAAEJMTIAAgAikDKDcDKCAAIAIpAyA3AyAgACACKQMYNwMYIAAgAikDEDcDECAAIAIpAwg3AwggACACKQMANwMADAELIAUoAgwiAEUNACAFKAIIIgQgAEEobGohBwNAAkACQAJAAkACQCAEKAIADgUEAAECAwQLIAQoAgRBAUcNAyAEKAIIIgAgARBcIAAoAgBBGkcNAyABIABBCGoQiwsiA0UNAyAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UDAMLIAQoAgQiACABEFwgACgCAEEaRw0CIAEgAEEIahCLCyIDRQ0CIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQMAgsgBEEEaiABELgGDAELIARBDGooAgAiAEUNACAAQShsIQMgBEEIaigCACEAA0AgACABENcGIABBKGohACADQVhqIgMNAAsLIARBKGoiBCAHRw0ACwsgBUHYAGoiBSAIRw0ACwsCQCAGKAJ4IgBFDQAgAEEIaigCACIDRQ0AIANBAnQhAyAAQQRqKAIAIQADQCAAKAIAIAEQtgEgAEEEaiEAIANBfGoiAw0ACwsCQCAGKAKYASIARQ0AIABBKGwhAyAGKAKUASEAA0AgACABEKACIABBKGohACADQVhqIgMNAAsLIAYtADwiAEEGRg0IAkAgAEECSw0AIAZBKGohAwJAIABBAkcNACADIAEQzx4LIAEgAxClCSAGLQA8IQALIABB/wFxQQNHDQggAiABIAZBEGoiABCdDSACLQAsQQZGDQggABCTEyAAIAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDAAwICyAAKAIMIgNFDQcgACgCCCIEIANBKGxqIQUDQAJAAkACQAJAAkAgBCgCAA4FBAABAgMECyAEKAIEQQFHDQMgBCgCCCIAIAEQXCAAKAIAQRpHDQMgASAAQQhqEIsLIgNFDQMgABCEAiAAIAMpAzg3AzggACADKQMwNwMwIAAgAykDKDcDKCAAIAMpAyA3AyAgACADKQMYNwMYIAAgAykDEDcDECAAIAMpAwg3AwggACADKQMANwMAIANBwABBCBDOFAwDCyAEKAIEIgAgARBcIAAoAgBBGkcNAiABIABBCGoQiwsiA0UNAiAAEIQCIAAgAykDODcDOCAAIAMpAzA3AzAgACADKQMoNwMoIAAgAykDIDcDICAAIAMpAxg3AxggACADKQMQNwMQIAAgAykDCDcDCCAAIAMpAwA3AwAgA0HAAEEIEM4UDAILIARBBGogARC4BgwBCyAEQQxqKAIAIgBFDQAgAEEobCEDIARBCGooAgAhAANAIAAgARDXBiAAQShqIQAgA0FYaiIDDQALCyAEQShqIgQgBUcNAAwICwsgACgCBCIDIAEQXAJAIAMoAgBBGkcNACABIANBCGoQiwsiBEUNACADEIQCIAMgBCkDODcDOCADIAQpAzA3AzAgAyAEKQMoNwMoIAMgBCkDIDcDICADIAQpAxg3AxggAyAEKQMQNwMQIAMgBCkDCDcDCCADIAQpAwA3AwAgBEHAAEEIEM4UCyAAKAIIIAEQtgEMBgsgACgCBCIAIAEQXCAAKAIAQRpHDQUgASAAQQhqEIsLIgFFDQUgABCEAiAAIAEpAzg3AzggACABKQMwNwMwIAAgASkDKDcDKCAAIAEpAyA3AyAgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAFBwABBCBDOFAwFCyAAKAIEIgAgARBcIAAoAgBBGkcNBCABIABBCGoQiwsiAUUNBCAAEIQCIAAgASkDODcDOCAAIAEpAzA3AzAgACABKQMoNwMoIAAgASkDIDcDICAAIAEpAxg3AxggACABKQMQNwMQIAAgASkDCDcDCCAAIAEpAwA3AwAgAUHAAEEIEM4UDAQLIAAoAgQiAyABEFwCQCADKAIAQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsgACgCCCABELYBDAMLIAAoAgQiAyABEFwCQCADKAIAQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsgACgCCCIAQQhqKAIAIgNFDQIgA0ECdCEDIABBBGooAgAhAANAIAAoAgAgARC2ASAAQQRqIQAgA0F8aiIDDQAMAwsLIAAoAgQiAyABEFwCQCADKAIAQRpHDQAgASADQQhqEIsLIgRFDQAgAxCEAiADIAQpAzg3AzggAyAEKQMwNwMwIAMgBCkDKDcDKCADIAQpAyA3AyAgAyAEKQMYNwMYIAMgBCkDEDcDECADIAQpAwg3AwggAyAEKQMANwMAIARBwABBCBDOFAsgACgCCCABELYBDAELAkAgACgCBCIAKAIAQQNHDQAgAEEEaiABEIAJDAELIAAgARDsCwsgAkEwaiQAC+FAAxF/A34BfCMAQZAGayICJAAgAUGwAWohAyABKAKwASEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtALgBIgVBjX9qQf8BcUEuSQ0AAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUOcgMCBQIEAgICAgICAgICAQICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgsKAgICAhkZGQICAgICAgICAgICAgACAgICCAICAgIZAgIZBwIAAgYCGQICGQILAkACQAJAAkACQAJAAkACQAJAIAVBGkYNACACQdgAaiABEOwCIAIoAlwhBSACKAJYIgNBB0YNASACIAIpA3A3A6AFIAIgAikDaDcDmAUgAiACKQNgNwOQBSACIAU2AowFIAIgAzYCiAUgAw4FAwYCBAUCCyABKAKIASEFIAFBCzYCiAEgAUGMAWohBgJAAkAgBUELRg0AIAIgASgCoAE2AmAgAiABKQKYATcDWAJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQdgAaiABEM4BCyABKQOwASETIAMgAikDWDcCACADIAIoAmA2AgggASATNwOoAUEAIQcgAkEANgK8BSACQoCAgIDAADcCtAUgAkHYAGogAUEAELQDIAIoAlghBQJAIAItAHAiCEECRw0AQQQhAQwtCyACIAIoAmw2AtgFIAIgAikCZDcD0AUgAiACKQJcNwPIBSACIAIoAHE2AsAFIAIgAigAdDYAwwVBIBCJASIJRQ0XIAkgBTYCACAJIAIpA8gFNwIEIAkgAikD0AU3AgwgCSACKALYBTYCFCAJIAg6ABggCSACKALABTYA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IQcgAigCRCEIIAIoAkAhCiACKAJgIS4gAigCZCEvIEenISgMHQsgA0EIaigCACEYIAMoAhQhGyADKAIQISggAkHAAGogA0EMaigCACIIQQhB0AAQgQ8gAigCRCEEIAIoAkBBAUYNCSACKAJIIQoCQCAERQ0AIAhB0ABsIRlBACEGIAQhFQNAIBkgBkYNAQJAAkACQAJAIBggBmoiASkDACJHp0F+akECIEdCAVYbDgMAAQIACyABQRxqKAIAIQcgAUEYaigCACEWIAFBLGooAgAhMCABQShqKAIAITECQAJAIAFBCGopAwBCAVINAAJAIAFBEGopAwAiSUIDg0IAUg0AIEmnIgsgCygCACILQQFqNgIAIAtBf0wNKgsgAUEgaikDACJHpyEyAkAgR1ANACBHQgODUEUNACAyIDIoAgAiAUEBajYCACABQX9MDSoLIEdCKIinITMgR0IgiKchNCBJpyELQgEhRwwBCyABQRBqKQMAIkmnIQsgAUEgaigCACEyAkAgSUIDg0IAUg0AIAsgCygCACIXQQFqNgIAIBdBf0wNKQsgAUEkai0AACE0QgAhRwsgB0EIdiE1IElCIIinIRdCAiFJDAILIAFBGGooAgAhFiABQRRqKAIAIRcgAUEQaigCACELAkAgAUEIaikDACJHQgODQgBSDQAgR6ciByAHKAIAIgdBAWo2AgAgB0F/TA0nCyABQRxqLQAAIQdCAyFJDAELIAFBFGooAgAhByABQRBqKAIAIQsgAUHEAGooAgAhNiABQcAAaigCACE3AkACQCBHQgFSDQACQCABQQhqKQMAIkdCA4NCAFINACBHpyIWIBYoAgAiFkEBajYCACAWQX9MDSgLAkAgAUEYaikDACJMUA0AIExCA4NQRQ0AIEynIhYgFigCACIWQQFqNgIAIBZBf0wNKAsgB61CIIYgC62EIUhCASFJDAELIAFBGGo1AgAhSQJAIAFBCGopAwAiR0IDg0IAUg0AIEenIhYgFigCACIWQQFqNgIAIBZBf0wNJwsgTEKAgICAgGCDIEmEIAFBHGoxAABCIIaEIUwgB61CIIYgC62EIUhCACFJC0ECITICQCABQSBqKQMAIktCAlENACABQTRqKAIAITggAUEwaigCACE5AkACQCBLQgFSDQACQCABQShqKQMAIktCA4NCAFINACBLpyIHIAco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IkEOcUEKRg0AIA8QtQsLIAIgAikDcDcDUCACIAIpA3g3A1ggMkIwiKchJSAyQiiIpyEoIDJCIIinIScgMqchJiAfIR8gHiEjIB0hJCAgISAgISEhIAMhIiAbIR0MBwtB8PSaARCwIwALQQRBDBCNJAALIB8QiQIgH0HAAEEIEM4UCyABIAJBgAFqEMYIIAYgECgCCDYCCCAGIBApAwA3AwACQCABKAKIAUEOcUEKRg0AIAUQtQsLIAEgIzYCrAEgASAgNgKoASAFIA8pAxg3AxggBSAPKQMQNwMQIAUgDykDCDcDCCAFIA8pAwA3AwAgAigC7AEiA0EIahDjAyADQSBBCBDOFAsgAkGAAWogARDGAyACKAKEASEiAkAgAi0AgAEiH0ECRw0AICIhHQwBCyABLQC4ASIkIQMCQCAkQQpHDQAgBSgCACEDIAVBCzYCAAJAAkAgA0ELRg0AIAIgCCgCCDYCiAEgAiAIKQIANwOAAQJAIAkoAgBBCkYNACAJELULCyAJIAM2AgAgByAEKQIANwIAIAcgBCgCCDYCCAwBCyACQYABaiABEM4BCyABKQOwASEyIAYgAikDgAE3AgAgBiACKAKIATYCCCABIDI3A6gBIAEtALgBIQMLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANB/wFxIhMOEwEEBAQEBAQEBAAEBAQEBAQEBAEECyABIAEoAngiIEGAIHI2AnggASgCsAEhISABKAKIASEDIAFBCzYCiAECQAJAIANBC0YNACACIAgoAgg2AogBIAIgCCkCADcDgAECQCAJKAIAQQpGDQAgCRC1CwsgCSADNgIAIAcgBCkCADcCACAHIAQoAgg2AggMAQsgAkGAAWogARDOAQsgASkDsAEhMiAGIAIpA4ABNwIAIAYgAigCiAE2AgggASAyNwOoASABIAEoAngiA0H///+/f3E2AnggAkEYaiABKAKwASABEO4DIAIoAhghIyABIAM2AnggAigCHCETICNBAXENASABKAKsASEjQQwQiQEiAw0CQQRBDBCNJAALAkACQAJAIB4NAEEAISkgE0ESRw0CIAEgASgCeCIDQYAgcjYCeCACQQA6AOgBIAJBAToAgAEgAkEQaiACQegBaiACQYABaiABEN8BIAIoAhAhHiABIAM2AnggAigCFCEpIB5BAXFFDQEgKSET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iAMgA0KggICAgAQ3AoADIANCoICAgIAENwL4AiAOIANBuARqQcgA/AoAACADQbABaiADQfgCakG8AfwKAAAgAyAVNgLwAiADIBY2AuwCIANBgAVqEJ8fIBYgFigCACIOQQFqNgIAIA5Bf0wNASADKQKwASEeIAMpArgBIR8gAykCwAEhICADKQLIASEhIAMpAtABISIgAykC2AEhIyADKQLgASEkIAMpAugBISUgAykC8AEhJiADQfgCakHIAGogAygC/AEgAygCgAIQwxggA0HMA2ogAygCiAIgAygCjAIQwxggA0HYA2ogAygClAIgAygCmAIQwxggAyAmNwK4AyADICU3ArADIAMgJDcCqAMgAyAjNwKgAyADICI3ApgDIAMgITcCkAMgAyAgNwKIAyADIB83AoADIAMgHjcC+AIgAygCoAIhDiADQYAFaiADKAKkAiIPQQFBChCADyADKAKEBSETIAMoAoAFQQFGDQQgAygCiAUhFAJAAkAgDw0AQQAhDwwBCyAPQQpsIhJFDQAgFCAOIBL8CgAACyADQYAFaiADQfgCakHsAPwKAAAgFSAVKAIAIg5BAWo2AgAgDkF/TA0BIAMoAugCIRIgAygC5AIhECADQfgCaiADQYAFakHsAPwKAABBxAEQ5SAiDiADQfgCakHsAPwKAAAgDiAPNgJ0IA4gFDYCcCAOIBM2AmwgDiADQagCaiIPKQIANwJ4IA4gDy8BCDsBgAEgDiADQbICaiIPKQEANwGCASAOIA8vAQg7AYoBIA4gA0G8AmoiDykCADcCjAEgDiAPLwEIOwGUASAOIANBxgJqIg8pAQA3AZYBIA4gDy8BCDsBngEgDiAQNgK0ASAOIBI2ArgBIA4gFjYCvAEgDiAVNgLAASAOIANB0AJqIhUvAQg7AagBIA4gFSkCADcCoAEgDiADQdoCaiIVKQEANwGqASAOIBUvAQg7AbIBIANBAToA1gMgA0EANgDXAyADQQA6APwCIANBADYC+AIgAyAONgKAAyADQaC2gQE2AoQDIANBgAI7AdQDIANBADoAiAMgA0EAOgCYAyADQQA2ApQDIANCgICAgMAANwKMAyADQQApA6ilnAEiHjcA+wUgA0EAKQOgpZwBIh83APMFIAMgHzcAuwQgAyAeNwDDBCADIB83AIMFIAMgHjcAiwUgAyADKAD/BTYA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QANAIABB1ABGDQEgASAAakEsaiIFKAIAIQYgBSACQbABaiAAaiIHKAIANgIAIAcgBjYCACAAQQRqIQAMAAsLAkAgCCgCaCIARQ0AIABBMGwhBSAIKAJkIQADQCABQQA6AH0gACABEGggAEEwaiEAIAVBUGoiBQ0ACwsgBCACQbABahCZBAwBCyABLQAoIQUgAUEAOgAoIAEtAHkhBiABQQA6AHkCQCAAKAIEIgAoAgBBGkcNACAAQRhqKAIAIQcCQCAAKQMIIgxCA4NCAFINACAMpyIIIAgoAgAiCEEBajYCACAIQX9MDQMLIAQgDCAHELYMCyAAIAEQbSABIAU6ACggASAGOgB5CyACQdAGaiQADwsACyAAKAIIIQALIAFBADoAfQwACwuYNgIWfwF+IwBB0AVrIgQkACAEIAM2AiwgBCACOgArAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCACIFQXRqIgZBByAFQQtLGyIHDiYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJQALIANBCGohCCADQQRqIQkMLAsgA0EUaiEIIANBEGohCQwrCyADQRRqIQggA0EQaiEJDCoLIAMoAiAiCUE0aiEIIAlBMGohCQwpCyADQQxqIQggA0EIaiEJDCgLIANBCGohCCADQQRqIQkMJwsgA0EQaiEIIANBDGohCQwmCyADQTRqIQggA0EwaiEJDCULIANBJGohCCADQSBqIQkMJAsgA0EkaiEIIANBIGohCQwjCyADQRRqIQggA0EQaiEJDCILIANBIGohCCADQRxqIQkMIQsgA0EYaiEIIANBFGohCQwgCyADQRRqIQggA0EQaiEJDB8LIANBFGohCCADQRBqIQkMHgsgAygCCA4HFhcYGRobHBYLIANBIGohCCADQRxqIQkMHAsgA0EQaiEIIANBDGohCQwbCyADQRhqIQggA0EUaiEJDBoLIAMoAiAiCUEoaiEIIAlBJGohCQwZCyADQQhqIQggA0EEaiEJDBgLIANBCGohCCADQQRqIQkMFwsgA0EMaiEIIANBCGohCQwWCyADQQxqIQggA0EIaiEJDBUL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AtgBIANCgICAgBA3AtABIANB4NKaATYCbCADQqCAgIAGNwJwIAMgA0HQAWo2AmgCQCADQbACaiADQegAahDVHQ0AIAMgAygC2AE2AsABIAMgAykC0AE3A7gBIANBsAJqELMSIANCADcC0AIgAyAFIAtBAnQiCWo2AswCIAMgCjYCyAIgAyAFNgLEAiADIAU2AsACIAMgDzYCvAIgAyANNgK4AiADIAQ2ArQCIAMgBzYCsAIgCEEBRg0CIAZBYGohDCADQegAakEZaiEGA0AgAyAEQSBqIgg2ArQCAkACQAJAAkACQAJAAkACQCAEQRhqLQAAIgpBAkYNACAGIARBGWoiCygAADYAACAGIARBHGooAAA2AAMgAyAKOgCAASADIAQpAxA3A3ggAyAEKQMINwNwIAMgBCkDADcDaAJAIAkNACADQegAahCzEgwCCyADIAVBBGoiDjYCxAIgAyAEKQMAIhA3A9ABIAMgBCkDCCIRNwPYASADIAQpAxAiEjcD4AEgAyALKAAANgLIASADIAsoAAM2AMsBIAUoAgAhBCAGIAMoAsgBNgAAIAYgAygAywE2AAMgAyASNwN4IAMgETcDcCADIBA3A2ggAyAKOgCAASADQegBaiABIAQQaiADKALoAQ4CAgMFCyAEQSBqIQgLIA8gCEYNCSAPIAhrQQV2IQQDQCAIELMSIAhBIGohCCAEQX9qIgQNAAwKCwsgAyADKQPwASIQNwOIAiADQQA2AvgCIANCgICAgBA3AvACIANB4NKaATYCgAMgA0KggICABjcChAMgAyADQfACajYC/AIgA0GIAmogA0H8AmoQ1R0NAyADIAMoAvgCNgKAAiADIAMpAvACNwP4ASAQQgODQgBSDQEgEKciBCAEKAIAIgVBf2o2AgAgBUEBRw0BIAQgBCgCEBDeHgwBCyADQfgBaiADKwPwARCgDgsgAygC/AEhBSADQbgBaiADKAKAAiIEEPweIAMoAsABIQoCQCAERQ0AIARFDQAgAygCvAEgCmogBSAE/AoAAAsgAyAKIARqNgLAASADQShqIANB6ABqEIoUIAMoAighCyADQbgBaiADKAIsIgQQ/B4gAygCwAEhCgJAIARFDQAgBEUNACADKAK8ASAKaiALIAT8CgAACyADIAogBGo2AsABIAMoAvgBIAUQniMgAygC6AFFDQIgA0Ho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ag4DAQUABAsgASgCsAEhBiABKAKIASECIAFBCzYCiAEgAUGMAWohByABQbABaiEIAkACQCACQQtGDQAgAyABKAKgATYCSCADIAEpApgBNwNAAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgAjYCCCABIAcpAgA3AgwgASAHKAIINgIUDAELIANBwABqIAEQzgELIAEpA7ABIRYgCCADKQNANwIAIAggAygCSDYCCCABIBY3A6gBIANBADYC4AEgA0KAgICAgAE3AtgBIAFBDGohCUEIIQogAUEIaiELIAFBmAFqIQwgA0HAAGpBCGohDUEAIQJBACEOQQAhDwJAA0AgAkEobCEFAkACQAJAAkACQAJAAkACQANAAkACQAJAAkAgAS0AuAEiBEEHRg0AIARBBUYNAQJAIA9B/v97Sw0AIA8gDnJFDQAgA0G7gICAeDYCQCABIA8gDiADQcAAahDcHSABLQC4ASEECyAEQf8BcUEcRyIQDQcgCCgCACEPIAEoAogBIQUgAUELNgKIASAFQQtGDQUgAyAMKAIINgJIIAMgDCkCADcDQAJAIAsoAgBBCkYNACALELULCyALIAU2AgAgCSAHKQIANwIAIAkgBygCCDYCCAwGCyABKAKIASEEIAFBCzYCiAEgBEELRg0BIAMgDCgCCDYCSCADIAwpAgA3A0ACQCALKAIAQQpGDQAgCxC1CwsgCyAENgIAIAkgBykCADcCACAJIAcoAgg2AggMAgsgASgCiAEhAiABQQs2AogBIAJBC0YNCiADIAwoAgg2AkggAyAMKQIANwNAAkAgCygCAEEKRg0AIAsQtQsLIAsgAjYCACAJIAcpAgA3AgAgCSAHKAIINgIIDAwLIANBwABqIAEQzgELIAEpA7ABIRYgCCADKQNANwIAIAggAygCSDYCCCABIBY3A6gBAkAgAiADKALYAUcNACADQdgBahCrGiADKALcASEKCyAKIAVqQQc2AgAgAyACQQFqIgI2AuABIAVBKGohBQwACwsgA0HAAGogARDOAQsgASABKAK0ASIRNgKsASABIAEoArABNgKoASAIIAMpA0A3AgAgCCADKAJINgIIIANBwABqIAFBABByIAMoAkQhBCADKAJAIgpBB0YNAiADIA0pAxg3A5ACIAMgDSkDEDcDiAIgAyANKQMINwOAAiADIA0pAwA3A/gBIAEoAqwBIQ5BKBCJASIFRQ0JIAUgBDYCBCAFIAo2AgAgBSADKQP4ATcDCCAFIAMpA4ACNwMQIAUgAykDiAI3AxggBSADKQOQAjcDIAJAIAIgAygC2AFHDQAgA0HYAWoQqxoLIAMoAtwBIgogAkEobGoiBEEANgIYIAQgETYCFCAEIA82AhAgBCAONgIMIAQgDzYCCCAEIAU2AgQgBEECNgIADAELIANBwABqIAEQmgUgAygCRCEEIAMoAkAiEUEHRg0BIAMgDSkDGDcDkAEgAyANKQMQNwOIASADIA0pAwg3A4ABIAMgDSkDADcDeAJAIAIgAygC2AFHDQAgA0HYAWoQqxoLIAMoAtwBIgogAkEobGoiBSAENgIEIAUgETYCACAFIAMpA3g3AwggBSADKQOAATcDECAFIAMpA4gBNwMYIAUgAykDkAE3AyALIAMgAkEBaiICNgLgAQJAAkAgAS0AuAEiBUF7ag4DBgEAAQsgASgCiAEhBSABQQs2AogBIAVBC0YNAiADIAwoAgg2AkggAyAMKQIANwNAAkAgCygCAEEKRg0AIAsQtQsLIAsgBTYCACAJIAcpAgA3AgAgCSAHKAIINgIIDAMLIAEoArQBIQQgASgCsAEhCCADQaACaiAFELIlIANBjwKtQiCGQZzkmgGthDcDuAEgA0HAAGpBzZWAASADQbgBahCvECADIAMpAqACNwJMIAMgAygCqAI2AlQgCCAEIANBwABqELMbIQQgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQc2AgAgACAENgIEIAMoAtwBIgEgAhDZHSADKALYASABEN8jDA8LIANBwABqIAEQzgELIAEgASgCtAEiBTYCrAEgASABKAKwASIENgKoASAIIAMpA0A3AgAgCCADKAJINgIIIBANASABLQC4AUH/AXFBBUcNASADQbqAgIB4NgJAIAEgBCAFIANBwABqENwdDAELCyADQcAAaiABEM4BCyABIAEoArQBIgI2AqwBIAEgASgCsAE2AqgBIAggAykDQDcCACAIIAMoAkg2AggCQAJAIAEtAIEBQQRxDQBBACEFIAEtAHlBwABxRQ0LIAEtALgBQf8BcUEKRg0BDAsLQQAhBSABLQC4AUEKRw0KCyABKAKIASECIAFBCzYCiAECQAJAIAJBC0YNACADIAwoAgg2AkggAyAMKQIANwNAAkAgCygCAEEKRg0AIAsQtQsLIAsgAjYCACAJIAcpAgA3AgAgCSAHKAIINgIIDAELIANBwABqIAEQzgELIAEgASgCtAEiAjYCrAEgASABKAKwATYCqAEgCCADKQNANwIAIAggAygCSDYCCEEBIQUMCQsgASABKAJ4Ig9B//97cTYCeCABKAKwASEMIAEoAogBIQIgAUELNgKIASABQYwBaiELIAFBsAFqIQoCQAJAIAJBC0YNACADIAEoAqABNgJIIAMgASkCmAE3A0ACQCABKAIIQQpGDQAgAUEIahC1CwsgASACNgIIIAEgCykCADcCDCABIAsoAgg2AhQMAQsgA0HAAGogARDOAQsgASkDsAEhFiAKIAMpA0A3AgAgCiADKAJINgIIIAEgFjcDqAEgA0HAAGpBCEEIQTgQgQ8gAygCRCEFAkAgAygCQEEBRg0AQQAhAiADQQA2AjwgAyADKAJIIg42AjggAyAFNgI0IAEtALgBIgRBA0YNCCABQQxqIRAgAUEIaiENIAFBmAFqIREgA0H4AWpBCGohCCADQfgBakEEaiESIANB0ABqIRMgA0HYAWpBCGohBiADQcAAakEIaiEFIANBwABqQQRyIRQDQCAKKAIAIQcCQAJAAkACQAJAAkACQAJAAkACQCAEQf8BcUEcRw0AIAEoAogBIQIgAUELNgKIAQJAAkAgAkELRg0AIAMgESgCCDYCgAIgAyARKQIANwP4AQJAIA0oAgBBCkYNACANELULCyANIAI2AgAgECALKQIANwIAIBAgCygCCDYCCAwBCyADQfgBaiABEM4BCyABIAEoArQBIgk2AqwBIAEgASgCsAE2AqgBIAogAykD+AE3AgAgCiADKAKAAjYCCCADQfgBaiABQQAQciADKAL8ASEEIAMoAvgBIhVBB0cNAQwRCyADQfgBaiABEOABIAMoAvwBIQQgAygC+AEiAkEFRg0QIAYgCCkDEDcDECAGIAgpAwg3AwggBiAIKQMANwMAIAMgBDYC3AEgAyACNgLYAQJAAkAgAS0AuAEiBEEJRw0AIAEoAogBIQQgAUELNgKIAQJAAkAgBEELRg0AIAMgESgCCDYCgAIgAyARKQIANwP4AQJAIA0oAgBBCkYNACANELULCyANIAQ2AgAgECALKQIANwIAIBAgCygCCDYCCAwBCyADQfgB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XCAAIAMpAlg3AhwgACADKAJgNgIkIABBADYCAAwICyAAIAMoAhA2AgQgAEEHNgIADAcLIARBogFGDQELIANBwABqQQRyIAQQsiUgA0EcNgJUIANB8IybATYCUCADQbCAgIB4NgJAIAEoArABIAEoArQBIANBwABqELMbIQICQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLIABBBzYCACAAIAI2AgQMBQsgASkDCCEWIAFBCjYCCCADIAEpAxA3A0ggAyAWNwNAAkACQCAWpyICQQpGDQAgAkEJRg0BIANBwABqELULC0Gs85oBQShBvIebARCkIQALIAMoAkQhBSABKAKIASECIAFBCzYCiAECQAJAIAJBC0YNACABIAI2AgggASABKQKMATcCDCABIAEoApQBNgIUIAMgASgCoAE2AkggAyABKQKYATcDQAwBCyADQcAAaiABEM4BCyABIAMoAkg2ArgBIAEgASkDsAE3A6gBIAEgAykDQDcCsAEgAEEHNgIAIAAgBTYCBAwECyADIAQ2AkQLIABBBzYCACAAIAQ2AgQgA0E0ahCZESADKAI0IA4Q4iMgASAPNgJ4DAILIAEoAogBIQUgAUELNgKIAQJAAkAgBUELRg0AIAMgASgCoAE2AkggAyABKQKYATcDQAJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASALKQIANwIMIAEgCygCCDYCFAwBCyADQcAAaiABEM4BCyABIAEoArQBIg02AqwBIAEgASgCsAE2AqgBIAogAykDQDcCACAKIAMoAkg2AgggAyADKQI0NwNAIAMgAygCPCIFNgJIIAMgCTYCYCADIAc2AlwgAyACNgJYIAMgDTYCVCADIAw2AlAgAyABNgJMAkACQAJAAkACQCAFRQ0AIAVBOGwhBCADKAJEIQ4gBUF/aiEFAkAgAg0AIA4hAgNAIAIoAgAhCAJAAkAgBUUNACAIQQJHDQEgAkEMaigCACEIIAJBCGooAgAhByADQbuAgIB4NgL4ASABIAcgCCADQfgBahDcHQwBCyAIQQJHDQAgAkEEaigCACgCAA0ECyACQThqIQIgBUF/aiEFIARBSGoiBA0ADAILCyAOIQIDQCACKAIAIQgCQAJAIAVFDQAgCEECRw0BIAJBDGooAgAhCCACQQhqKAIAIQYgA0G7gICAeDYC+AEgASAGIAggA0H4AWoQ3B0MAQsgCEECRw0AIAJBBGooAgAoAgANAyADQbqAgIB4NgL4ASABIAcgCSADQfgBahDcHQsgAkE4aiECIAVBf2ohBSAEQUhqIgQNAAsLIAEtAIEBQQRxDQFBACECIAEtAHlBwABxRQ0DIAEtALgBQf8BcUEKRw0DDAILIAIoAgwhBSACKAIIIQIgA0HugICAeDYC+AEgAiAFIANB+AFqELMbIQICQCABLQC4AUGiAUcNACABEL8UIQUgARCSECABIAUQhgkLIABBBzYCACAAIAI2AgQgA0HAAGoQmREgAygCQCAOEOIjIAEgDzYCeAwEC0EAIQIgAS0AuAFBCkcNAQsgASgCiAEhAiABQQs2AogBAkACQCACQQtGDQAgAyABKAKgATYCgAIgAyABKQKYATcD+AECQCABKAIIQQpGDQAgAUEIahC1CwsgASACNgIIIAEgCykCADcCDCABIAsoAgg2AhQMAQsgA0H4AWogARDOAQsgASkDsAEhFiAKIAMpA/gBNwIAIAogAygCgAI2AgggASAWNwOoAUEBIQILIAAgAygCPDYCDCAAIAMpAjQ3AgQgACACOgAcIABBADYCGCAAIA02AhQgACAMNgIQIABBAzYCACABIA82AngMAQsgACADKALgATYCDCAAIAMpAtgBNwIEIAAgBToAHCAAQQA2AhggACACNgIUIAAgBjYCECAAQQE2AgALIANBwAJqJAALvysCHH8BfiMAQfABayICJAAgAkEwaiAAIAAoAgAoAgQRBwAgAiACKAI0IgM2AjwgAiACKAIwIgQ2AjgCQAJAAkACQAJAAkAgAS0ACkGAAXENACACQdQANgKkASACIAJBOGo2AqABQQEhBSABKAIAIAEoAgRBzZWAASACQaABahC5Iw0CIAJBKGogBCADKAIYEQcAIAIoAigiA0UNASACKAIsIQQgASgCAEGE5YEBQQwgASgCBCgCDBEMAA0CIAJBIGogAyAEKAIYEQcAIAIoAiAhBSACQQA2ArABIAIgBDYCqAEgAiADNgKkASACQQA2AqABIAVBAEchBgNAIAJBGGogAkGgAWoQvxECQCACKAIYIgUNACACKAKgASACKAKoARCqIQwDCyACKAIcIQMgAiACKAKwASIEQQFqNgKwASACIAM2AlwgAiAFNgJYAkAgASgCAEGS8poBQQEgASgCBCgCDBEMAA0AIAJBADoAhAEgAiAENgJ8IAIgBjYCeCACIAE2AoABIAJB1AA2AmwgAiACQdgAajYCaCACQfgAakHNlYABIAJB6ABqELojRQ0BCwsgAigCoAEgAigCqAEQqiFBASEFDAILIAQgASADKAIMEQgAIQUMAQsCQAJAAkACQAJAAkACQAJAAkAgACgCBCIDQQNGDQAgAEEEaiEADAELIAJBEGogACAAKAIAKAIEEQcAIAIoAhRBKGooAgAhACACKAIQIQUgAkEANgKwASACQQApAvDkgQE3A6gBIAJBACkC6OSBATcDoAEgBSACQaABakH45IEBIAARCwAgAigCsAEiAEUNASAAKAIAIQMLQQAhBSADQQJHDQcgAkEANgJUIAJCgICAgBA3AkwgAkHI5oEBNgJcIAJCoICAgAY3AmAgAiACQcwAajYCWAJAIAAoAgAOAwIDAAILAkACQAJAAkAgAC0AFCIFDgQAAAEDAAsgAEECOgAUAkAgBUEBRg0AQQAtAKqUnQEhBUEAQQE6AKqUnQEgAiAFOgCgASAFRQ0CIAJBoAFqQZ+2gQFBsMWYAUHQxZgBEJ4cAAsQuyMAC0GsrpgBQfEAQZyumAEQ1xsACyAAQQM6ABRBAEEAOgCqlJ0BCwJAIAAoAgwiAyAAKAIQIgVJDQAgACgCCCEAIAJBACkDqMGYASIeNwJsIAJBgICAgHg2AmggAkEAOgB0IAJBADoAiAEgAkEANgKEASACQfC6mAE2AoABIAIgAkHYAGo2AnggAiACQegAajYCfAJAIAMgBUcNACAeQiCIpyEAIB6nIQUMBgsgACAFQQxsaiIHIAMgBWtBDGxqIQggAkGgAWpBCGohCSACQaABakEHaiEKA0ACQAJAIAcoAggiBQ0AIAJBADYCmAEgAiACQfgAajYClAEgAkEDNgKgASACQQI2AuABIAJBlAFqIAJBoAFqIAJB4AFqQQAgAkEAIAIQxQQhACACKAKUASIFIAUoAgxBAWo2AgwgAEUNAQwNCyAHKAIEIgAgBUEsbGohCwNAIAJBADYCkAEgAiACQfgAajYCjAECQAJAAkACQAJAAkACQCAAKAIgQYCAgIB4Rg0AIAJBoAFqIAAoAiQiDCAAKAIoIg0QzAUgAigCoAFBAUYNBCACQaABaiACKAKkASIOIAIoAqgBIg9B78qXAUEGEJMDAkACQCACKAKgAUUNACACKALcASEFIAIoAtgBIQMgAigC1AEhBCACKALQASEGIAIoAsQBQX9HDQEgAkGUAWogCSAGIAQgAyAFQQEQswcMBQsCQANAIAJB4AFqIAJBoAFqENkDIAIoAuABDgMEAAEECwtBACEFDAMLIAJBlAFqIAkgBiAEIAMgBUEAELMHDAMLIAJBAzYCoAEMBQsgAiACKQLkATcCmAFBASEFCyACIAU2ApQBCwJAIAIoApQBQQFHDQACQCACKAKYASIQQQZqIgVFDQACQAJAIAUgD0kNACAFIA9HDQEMAgsgDiAFaiwAAEG/f0oNAQsgDiAPIAUgD0H4ypcBELwiAAsgDiAPaiEEIA4gBWohBQJAA0AgBSAERg0BAkACQCAFLAAAIgNBf0wNACAFQQFqIQUgA0H/AXEhAwwBCyAFLQABQT9xIQYgA0EfcSERAkAgA0FfSw0AIBFBBnQgBnIhAyAFQQJqIQUMAQsgBkEGdCAFLQACQT9xciEGAkAgA0FwTw0AIAYgEUEMdHIhAyAFQQNqIQUMAQsgBkEGdCAFLQADQT9xciARQRJ0QYCA8ABxciIDQYCAxABGDQIgBUEEaiEFCyADQbl/akF4Sw0AIANBRmpBdk8NAAwCCwsgEEUNAQJAAkAgECAPSQ0AIBAgD0YNAgwBCyAOIBBqLAAAQb9/TA0AIBAhDwwBCyAOIA9BACAQQYjLlwEQvCIACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAPQQNJDQBB6M2XASAOQQMQqBhFDQEgDi8AAEHanAFGDQJBAyEQIA9BA0YNCSAOKAAAQd++6fIERg0DIA8hEAwJC0ECIQQgD0ECRw0PIA4vAABB2pwBRw0HQX4hBUECIRBBAiEDDAYLQQMhA0F9IQUCQCAPQQNHDQBBAyEQDAYLIA4sAANBv39KDQIgDiAPQQMgD0GMzpcBELwiAAsgDiwAAkG/f0wNA0ECIQNBfiEFDAELQXwhBUEEIQMCQCAPQQVPDQBBBCEQDAQLIA4sAARBv39MDQELIA8hEAwCCyAOIA9BBCAPQezNlwEQvCIACyAOIA9BAiAPQfzNlwEQvCIACyAOIANqIg8gBSAQaiIGaiESIAYhBSAPIQMCQAJAA0AgBUUNASAFQX9qIQUgAywAACEEIANBAWohAyAEQQBODQAMAgsLIAZFDQACQAJAIA8sAAAiBUF/TA0AIA9BAWohEyAFQf8BcSEFDAELIA8tAAFBP3EhAyAFQR9xIQQCQCAFQV9LDQAgBEEGdCADciEFIA9BAmohEwwBCyADQQZ0IA8tAAJBP3FyIQMCQCAFQXBPDQAgAyAEQQx0ciEFIA9BA2ohEwwBCyADQQZ0IA8tAANBP3FyIARBEnRBgIDwAHFyIQUgD0EEaiETC0EAIRECQCAFQcUARg0AQQAhEQNAIAVBUGoiBEEJSw0CQQAhAwNAIAOtQgp+Ih5CIIinDQMgHqciBSAEaiIDIAVJDQMgEyASRg0DAkACQCATLAAAIgVBf0wNACATQQFqIRMgBUH/AXEhBQwBCyATLQABQT9xIQQgBUEfcSEUAkAgBUFfSw0AIBRBBnQgBHIhBSATQQJqIRMMAQsgBEEGdCATLQACQT9xciEEAkAgBUFwTw0AIAQgFEEMdHIhBSATQQNqIRMMAQsgBEEGdCATLQADQT9xciAUQRJ0QYCA8ABxciEFIBNBBGohEwsgBUFQaiIEQQpJDQALA0ACQCADDQAgEUEBaiERIAVBxQBHDQIMAwsgEyASRg0DAkACQCATLAAAIgVBf0wNACATQQFqIRMgBUH/AXEhBQwBCyATLQABQT9xIQQgBUEfcSEUAkAgBUFfSw0AIBRBBnQgBHIhBSATQQJqIRMMAQsgBEEGdCATLQACQT9xciEEAkAgBUFwTw0AIAQgFEEMdHIhBSATQQNqIRMMAQsgBEEGdCATLQADQT9xciAUQRJ0QYCA8ABxciEFIBNBBGohEwsgA0F/aiEDDAALCwsgEiATayEVDAcLIBBBA08NAQtBAiEQIA4tAABB0gBHDQYMAQsCQCAOLwAAQd+kAUcNACAOLAACIgVBv39MDQIgDkECaiEGQX4hAwwECyAOLQAAQdIARw0CCwJAIA4sAAEiBUG/f0wNACAOQQFqIQZBfyEDDAMLIA4gEEEBIBBBmM2XARC8IgALIA4gEEECIBBBqM2XARC8IgALQQIhBCAQQQNGDQNBhc2XASAOQQMQqBgNAwJAIA4sAAMiBUG/f0wNACAOQQNqIQZBfSEDDAELIA4gEEEDIBBBiM2XARC8IgALQQIhBCAFQb9/akH/AXFBGUsNAiADIBBqIRFBACEFAkADQCARIAVGDQEgBiAFaiEDIAVBAWohBSADLAAAQQBODQAMBAsLIAlCADcCACAJQgA3AgggAiARNgKkASACIAY2AqABAkACQAJAIAJBoAFqQQAQnQINACACKAKgASIDRQ0FIAIoAqgBIgUgAi8ApQEgCi0AAEEQdHJBCHQgAi0ApAFyIg9PDQIgAyAFai0AAEG/f2pB/wFxQRpPDQIgAigCrAEhEiACQgA3ArABIAIgEjYCrAEgAiAFNgKoASACIA82AqQBIAIgAzYCoAEgAkGgAWpBABCdAg0BIAIoAqABIgNFDQUgAigCqAEhBSACKAKkASEPDAILQZDJlwFBPSACQe8BakGAyZcBQcjNlwEQzxQAC0GQyZcBQT0gAkHvAWpBgMmXAUHIzZcBEM8UAAsCQAJAIAVFDQACQCAPIAVLDQAgDyAFRg0BDAILIAMgBWosAABBv39MDQELIA8gBWshFSADIAVqIRNBACEPDAELIAMgDyAFIA9BuM2XARC8IgALQQEhBAJAIBUNAEEAIRYgDyEXIAYhGCARIRkgDiEaIBAhGyATIRwMAgsgEy0AAEEuRw0AIBMgFWohEkEuIQMgEyEFAkADQAJAAkACQCADwEF/Sg0AIAUtAAFBP3EhFCADQR9xIR0gA0H/AXEiA0HfAUsNASAdQQZ0IBRyIQMgBUECaiEFDAILIAVBAWohBSADQf8BcSEDDAELIBRBBnQgBS0AAkE/cXIhFAJAIANB8AFPDQAgFCAdQQx0ciEDIAVBA2ohBQwBCyAUQQZ0IAUtAANBP3FyIB1BEnRBgIDwAHFyIgNBgIDEAEYNAiAFQQRqIQULAkAgA0Hf//8AcUG/f2pBGkkNACADQVBqQQpJDQAgA0FfakEPSQ0AIANBRmpBB0kNACADQaV/akEGSQ0AIANBhX9qQQNLDQMLIAUgEkYNASAFLQAAIQMMAAsLIA8hFyAGIRggESEZIA4hGiAQIRsgEyEcIBUhFgwBC0ECIQQLIAIgFjYCvAEgAiAcNgK4ASACIBs2ArQBIAIgGjYCsAEgAiAZNgKsASACIBg2AqgBIAIgFzYCpAEgAiANNgLEASACIAw2AsABIAIgBDYCoAELQQEhBQJAAkACQAJAIAAoAhAOAwECAAILIAJBAjYC4AEMAgtBACEFCyACIAU2AuABIAIgACkCGDcC5AELIAJBjAFqIAJBoAFqIAJB4AFqIAAoAgAgACgCBCAAKAIIIAAoAgwQxQQhBSACKAKMASIDIAMoAgxBAWo2AgwgBQ0NIABBLGoiACALRw0ACwsgB0EMaiIHIAhGDQUMAAsLIAUgAyADQeC6mAEQiwoAC0HU5YEBQRhB7OWBARDYGwALIAJBzABqQbi6mAFBFRC8Iw0IDAQLIAJBzABqQc26mAFBEhC8I0UNAwwHCyACKAJoIgBBgICAgHhHDQEgAigCcCEAIAItAGwhBQsgBUH/AXFBA0cNASAAKAIAIQMCQCAAQQRqKAIAIgUoAgAiBEUNACADIAQRAwALAkAgBSgCBCIERQ0AIAMgBCAFKAIIEM4UCyAAQQxBBBDOFAwBCyAARQ0AIAIoAmwgAEEBEM4UCyACIAIoAlQ2AkggAiACKQJMNwNAAkACQCABKAIAQZDlgQFBAiABKAIEKAIMEQwADQACQAJAIAIoAkQiBSACKAJIIgBBkuWBAUEQEMUfDQAgASgCAEGi5YEBQREgASgCBCgCDBEMAA0CDAELIAAQqCECQAJAAkAgAEEBSw0AIABBAUYNAgwBCyAFLAABQb9/Sg0BC0G85IEBQdcAQbTlgQEQ1xsACyAAEKghIAJBATYCrAEgAkEANgJIIAJBjqmFATYCuAEgAkGNqYUBNgK0ASACQoGAgIAQNwKgASACIABBf2oiBTYCsAEgAiACQcAAajYCqAEgAkG0AWohAAJAAkAgBQ0AIAJBwABqIAAQhxQMAQsgAkHAAGpBASAAEIgSRQ0AAkACQCACKAK4ASIFIAIoArQBIgNHDQAgBSEEDAELIAJBoAFqIAUgA2sQwhUgAigCqAEgAigCrAEgABCIEkUNASACKAK0ASEFIAIoArgBIQQLQQAhBgJAAkAgBCAFayIDQQBIDQACQCAEIAVHDQBBASEFQQAhAwwCCyACQQhqIAMQqSEgAigCCCIFDQFBASEGCyAGIAMQ6SAACyACQQA2AoABIAIgBTYCfCACIAM2AnggAkH4AGogABCHFCACKAJ8IREgAigCeCEOAkAgAigCgAEiBUUNACACQaABaiAFEMIVIAIoAqgBIgMoAggiACACKAKsASIEIAAgBEsbIQYgESEEA0AgBiAARg0BIAVFDQEgAygCBCAAaiAELQAAOgAAIAMgAygCCEEBajYCCCAFQX9qIQUgAEEBaiEAIARBAWohBAwACwsgDiARELgjCyACKAKwASIARQ0AAkAgAigCrAEiBCACKAKoASIFKAIIIgNGDQAgAEUNACAFKAIEIgYgA2ogBiAEaiAA/AoAAAsgBSAAIANqNgIICyACKAJEIgYgAigCSCIPaiEFAkACQANAAkAgBiAFIgNHDQBBACEADAILAkAgA0F/aiIFLAAAIgBBf0oNAAJAAkAgA0F+aiIFLQAAIgTAIhFBQEgNACAEQR9xIQQMAQsCQAJAIANBfWoiBS0AACIEwCIOQUBIDQAgBEEPcSEEDAELIANBfGoiBS0AAEEHcUEGdCAOQT9xciEECyAEQQZ0IBFBP3FyIQQLIARBBnQgAEE/cXIhAAsCQCAAQXdqIgRBF0sNAEEBIAR0QZ+AgARxDQELAkAgAEGFAUkNAAJAIABBCHYiBEUNAAJAAkAgBEEwRg0AIARBIEYNASAEQRZHDQMgAEGALUYNBAwDCyAAQYDgAEYNAwwCCyAAQf8BcS0AgJebAUECcQ0CDAELIABB/wFxLQCAl5sBQQFxDQELCyADIAZrIgAgD0sNASAAIA9PDQAgBiAAaiwAAEG/f0wNBQsgAiAANgJICyACQQI2AqQBIAIgAkHAAGo2AqABIAEoAgAgASgCBEHNlYABIAJBoAFqELkjRQ0BCyACKAJAIAIoAkQQuCNBASEFDAELIAIoAkAgAigCRBC4I0EAIQULIAJB8AFqJAAgBQ8LQeDUmAFBMEHE5YEBEKQhAAsCQAJAIAIoAmgiAEGAgICAeEYNACAARQ0CQQEhAyACKAJsIQUMAQsgAi0AbEEDRw0BQQQhAyACKAJwIgUoAgAhBgJAIAVBBGooAgAiBCgCACIARQ0AIAYgABEDAAtBDCEAIAQoAgQiEUUNACAGIBEgBCgCCBDOFAsgBSAAIAMQzhQLQc2UmwFBNyACQe8BakHg5oEBQYSVmwEQzxQAC6YuAhJ/BX4jAEHwAmsiAyQAIAEgASgCeCIEQf//729xIgVBgICAEHIiBjYCeCACKAIoIQcgAigCJCEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAiAtAABBiH9qDhwBAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAtBrPOaAUEoQdTzmgEQpCEACyAIKAIAIQkgAyACKAIsLQAAIgo6ALABIANBAToA3AIgAyAJNgJAAkACQCAKDQAgASAGQf/8b3FBgAFyNgJ4IANBADYC6AEgA0KAgICAwAA3AuABIAMgA0HAAGo2AvQBIAMgA0HcAmo2AvABIAMgA0GwAWo2AuwBIANBCGogA0HgAWogARDKAiADKAIMIQkgAygCCCEFDAELIAEgBUGAg4AQcjYCeCADQQA2AugBIANCgICAgMAANwLgASADIANBwABqNgL0ASADIANB3AJqNgLwASADIANBsAFqNgLsASADIANB4AFqIAEQygIgAygCBCEJIAMoAgAhBQsgASAGNgJ4IAVBAXFFDQIgAEEBNgIAIAAgCTYCBCACEMkODAkLIAgoAgAhCyABIAZB//xvcSIFNgJ4QQAhDAJAIAEtAIEBQSBxRQ0AIAEgBUGAIHIiCTYCeAJAIAEtALgBIgpBEkYNACAKQT5GDQAgASAFNgJ4DAELIAEgCTYCeCADQQA6AOgCIANBAToA4AEgA0EgaiADQegCaiADQeABaiABEN8BIAMoAiQhDCADKAIgIQkgASAFNgJ4IAlBAXENCAsCQAJAIAEtALgBIgUNACABKAKIASEFIAFBCzYCiAEgAUGMAWohDQJAAkAgBUELRg0AIAMgASgCoAE2AugBIAMgASkCmAE3A+ABAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIA0pAgA3AgwgASANKAIINgIUDAELIANB4AFqIAEQzgELIAEgAygC6AE2ArgBIAEgASkDsAE3A6gBIAEgAykD4AE3ArABIAEgASgCeCIOQf/8335xQYCAgAFyNgJ4IANB4AFqIAEQ7QEgAygC5AEhCgJAIAMoAuABIg9BgICAgHhHDQAgASAONgJ4AkAgDEUNACAMEKwPIAwoAgAgDEEEaigCABDhIyAMQRRBBBDOFAsgCiEMDAoLIAFBsAFqIRAgAygC6AEiEUEGdCEJIAohBQJAA0AgCUUNAQJAIAUoAgANACADQRhqIAVBCGoQihQgAygCHEEERw0AIAVBwABqIQUgCUFAaiEJIAMoAhgoAABB9NClmwdGDQELCyAHKAIEIQUgBygCACEJIANBkYCAgHg2AuABIAEgCSAFIANB4AFqENwdCyABIA42AnggAS0AuAEiBUEBRg0BIAEoArQBIQkgASgCsAEhDSADQbABaiAFELIlIANBjwKtQiCGQbLwmgGthDcD6AIgA0HgAWpBzZWAASADQegCahDICCADIAMpArABNwLsASADIAMoArgBNgL0ASANIAkgA0HgAWoQsxshECABLQC4AUGiAUcNCCABIAEQ7w0QhgkMCAsgASgCtAEhCSABKAKwASEKIANB3AJqIAUQsiUgA0GPAq1CIIZBn7aBAa2ENwPoAiADQeABakHNlYABIANB6AJqEMgIIAMgAykC3AI3AuwBIAMgAygC5AI2AvQBIAogCSADQeABahCzGyEFAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCwJAIAxFDQAgDBCsDyAMKAIAIAxBBGooAgAQ4SMgDEEUQQQQzhQLIAUhDAwICyABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACADIAEoAqABNgLoASADIAEpApgBNwPgAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASANKQIANwIMIAEgDSgCCDYCFAwBCyADQeABaiABEM4BCyABKQOwASEVIBAgAykD4AE3AgAgECADKALoATYCCCABIBU3A6gBQQAhBUEAIRACQCABLQCBAUEgcUUNAEEAIRAgAS0AuAFB/wFxQQlHDQAgASABKAJ4IglBgCByNgJ4IANBCToA4AEgA0EQaiADQeABaiABEIUCIAMoAhAhDSABIAk2AnggAygCFCEQIA1BAXENBwsgEUEGdCENAkADQCANIAVGIg4NASAKIAVqIQkgBUHAAGohBSAJKAIARQ0ACwsgA0HgAWogAUEAQQAgDhDJBCADKALkASENAkAgAygC4AEiDkGBgICAeEcNAAJAIBANACANIRAMCAsgECgCACIFEKMEIAVB4ABBCBDOFCAQQQxBBBDOFCANIRAMBwsgAyADKQLwATcDSCADIAMpAugBNwNAIA5BgICAgHhHDQUgASgCgAFBgMAAcUUNBSARRQ0FIBFBBnQhCSAKIQUDQAJAIAUoAgBBBEcNACAFQRBqKAIAIRIgBUEMaigCACETIANBqoGAgHg2AuABIAEgEyASIANB4AFqENwdCyAFQcAAaiEFIAlBQGoiCUUNBgwACwsgCCgCACESIAEgBkH//G9xIgU2AnhBACEOAkAgAS0AgQFBIHFFDQAgASAFQYAgciIJNgJ4AkAgAS0AuAEiCkESRg0AIApBPkYNACABIAU2AngMAQsgASAJNgJ4IANBADoA6AIgA0EBOgDgASADQThqIANB6AJqIANB4AFqIAEQ3wEgAygCPCEOIAMoAjghCSABIAU2AnggCUEBcQ0ECwJAAkAgAS0AuAEiBQ0AIAEoAogBIQUgAUELNgKIASABQYwBaiEQAkACQCAFQQtGDQAgAyABKAKgATYC6AEgAyABKQKYATcD4AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAFNgIIIAEgECkCADcCDCABIBAoAgg2AhQMAQsgA0HgAWogARDOAQsgASADKALoATYCuAEgASABKQOwATcDqAEgASADKQPgATcCsAEgASABKAJ4Ig9B//zffnFBgICAAXI2AnggB0EEaigCACETIAcoAgAhFCADQeABaiABEO0BIAMoAuQBIQ0CQCADKALgASILQYCAgIB4Rw0AIAEgDzYCeAJAIA5FDQAgDhCsDyAOKAIAIA5BBGooAgAQ4SMgDkEUQQQQzhQLIA0hDgwGCwJAAkAgAygC6AEiEUUNAEEAIQogDSEFIBEhDANAQQEhCQJAIAUoAgANACADQTBqIAVBCGoQihQgAygCNEEERw0AIAMoAjAoAABB9NClmwdHIQkLIAVBwABqIQUgCSAKaiEKIAxBf2oiDA0ACwJAIApBAUYNACADQZKAgIB4NgLgASABIBQgEyADQeABahDcHQsgDSgCAEECRw0BIA0oAiwhBSANKAIoIQkgA0GZgICAeDYC4AEgASAJIAUgA0HgAWoQ3B0MAQsgA0GSgICAeDYC4AEgASAUIBMgA0HgAWoQ3B0LAkAgAS0AgQFBIHFFDQAgAS0AhAFB/wFxDQAgA0GBgYCAeDYC4AEgASAUIBMgA0HgAWoQ3B0LIAEgDzYCeCABLQC4ASIFQQFGDQEgASgCtAEhCSABKAKwASEKIANBsAFqIAUQsiUgA0GPAq1CIIZBsvCaAa2ENwPoAiADQeABakHNlYABIANB6AJqEMgIIAMgAykCsAE3AuwBIAMgAygCuAE2AvQBIAogCSADQeABahCzGyEQIAEtALgBQaIBRw0EIAEgARDvDRCGCQwECyABKAK0ASEJIAEoArABIQogA0HcAmogBRCyJSADQY8CrUIghkGftoEBrYQ3A+gCIANB4AFqQc2VgAEgA0HoAmoQyAggAyADKQLcAjcC7AEgAyADKALkAjYC9AEgCiAJIANB4AFqELMbIQUCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLAkAgDkUNACAOEKwPIA4oAgAgDkEEaigCABDhIyAOQRRBBBDOFAsgBSEODAQLIAFBsAFqIQUgASgCiAEhCSABQQs2AogBAkACQCAJQQtGDQAgAyABKAKgATYC6AEgAyABKQKYATcD4AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAJNgIIIAEgECkCADcCDCABIBAoAgg2AhQMAQsgA0HgAWogARDOAQsgASkDsAEhFSAFIAMpA+ABNwIAIAUgAygC6AE2AgggASAVNwOoAUEAIQVBACEQAkAgAS0AgQFBIHFFDQBBACEQIAEtALgBQf8BcUEJRw0AIAEgASgCeCIJQYAgcjYCeCADQQk6AOABIANBKGogA0HgAWogARCFAiADKAIoIQogASAJNgJ4IAMoAiwhECAKQQFxDQMLIBFBBnQhCgJAA0AgCiAFRiIMDQEgDSAFaiEJIAVBwABqIQUgCSgCAEUNAAsLIANB4AFqIAFBAEEAIAwQyQQgAygC5AEhCgJAIAMoAuABIgxBgYCAgHhHDQACQCAQDQAgCiEQDAQLIBAoAgAiBRCjBCAFQeAAQQgQzhQgEEEMQQQQzhQgCiEQDAMLIAMgAykC8AE3A0ggAyADKQLoATcDQCAMQYCAgIB4Rw0BIAEoAoABQYDAAHFFDQEgEUUNASARQQZ0IQkgDSEFA0ACQCAFKAIAQQRHDQAgBUEQaigCACEPIAVBDGooAgAhEyADQaqBgIB4NgLgASABIBMgDyADQeABahDcHQsgBUHAAGohBSAJQUBqIglFDQIMAAsLIAMgAikCGDcC/AEgAyACKQIQNwL0ASADIAIpAgg3AuwBIAMgAikCADcC5AECQEHwABCJASIFRQ0AIAVBCjYCACAFIAMpAuABNwIEIAUgAykC6AE3AgwgBSADKQLwATcCFCAFIAMpAvgBNwIcIAUgAygCgAI2AiQgBSAJNgIoIAAgBTYCCCAAQgA3AgAMBwtBCEHwABCNJAALIAEoAqwBIQkCQEHIABCJASIFDQBBBEHIABCNJAALIAUgCjYCHCAFIAw2AhggBUEANgIUIAVCgICAgMAANwIMIAUgETYCCCAFIA02AgQgBSALNgIAIAUgAykDQDcCICAFIAMpA0g3AiggBUEAOwFEIAUgEDYCQCAFIA42AjwgBUEANgI4IAUgCTYCNCAFIBI2AjAgASAGNgJ4IAMgBSkCGDcDcCADIAUpAiA3A3ggAyAFKQIoNwOAASAFKAIUIRIgBSgCECEQIAUoAgwhEyAFKAIEIQwgBSgCACERIAUoAjwhDSAFKAJAIQ4gBSgCCCEJIAVByABBBBDOFCADIAg2AogCIAMgBzYChAIgAyABNgKAAiADIAIpAwA3A+ABIAMgAikDCDcD6AEgAyACKQMQNwPwASADIAIpAxg3A/gBAkACQAJAAkACQAJAAkAgCUECSQ0AIAMgDCkCBDcDQCADIAwpAgw3A0ggAyAMKQIUNwNQIAMgDCkCHDcDWCADIAwpAiQ3A2AgAyAMKAIsNgJoIAwoAjAhCiAMKAI0IQUgDCgCOCEGIAwoAgAhDwJAIAlBf2oiC0EGdCIJRQ0AIAwgDEHAAGogCfwKAAALIA9BB0YNBCADIAMoAmg2AtgBIAMgAykDYCIVNwPQASADIAMpA1giFjcDyAEgAyADKQNQIhc3A8ABIAMgAykDSCIYNwO4ASADIAMpA0AiGTcDsAEgAyAZNwOIASADIBg3A5ABIAMgFzcDmAEgAyAWNwOgASADIBU+AqgBIAUgBhDaHSAKIAUQ5yMgDCAJaiEKDAELIAwgCUEGdGohCkEHIQ8gDCEFIAlFDQELIAxBwABqIQUgDCgCACIJQQdGDQAgAyAMKQIMNwNAIAMgDCkCFDcDSCADIAwpAhw3A1AgAyAMKAIkNgJYIAwoAgghByAMKAIEIQsgDCgCMCEGIAwoAjQiFCAMKAI4ENodIAYgFBDnIwwBCyAHQQRqKAIAIQkgBygCACEGIANBkoCAgHg2ArABIAEgBiAJIANBsAFqENwdQQUhCUEAIQdBACELC0EoEIkBIgZFDQEgBiAHNgIIIAYgCzYCBCAGIAk2AgAgBiADKQNANwIMIAYgAykDSDcCFCAGIAMpA1A3AhwgBiADKAJYNgIkAkAgCiAFRg0AIAogBWtBBnYhCQNAIAVBNGoiCigCACAFQThqKAIAENodIAVBMGooAgAgCigCABDnIyAFEMkLIAVBwABqIQUgCUF/aiIJDQALCyARIAwQ6SMgASgCrAEhCSAIKAIAIQpB8AAQiQEiBUUNAiAFIA82AiAgBSADKQOIATcCJCAFIAMpA5ABNwIsIAUgAykDmAE3AjQgBSADKQOgATcCPCAFIAMoAqgBNgJEIAUgAikDGDcDGCAFIAIpAxA3AxAgBSACKQMINwMIIAUgAikDADcDACAFIAo2AmAgBSAJNgJkIAUgBjYCaCAFIAMpA4ABNwNYIAUgAykDeDcDUCAFIAMpA3A3A0ggECASENodIBMgEBDnIwJAIA1FDQAgDRCsDyANKAIAIA1BBGooAgAQ4SMgDUEUQQQQzhQLAkAgDkUNACAOKAIAIgkQowQgCUHgAEEIEM4UIA5BDEEEEM4UCyAAIAU2AgggAEIANwIADAgLQQAgC0HQ8poBEPMWAAtBCEEoEI0kAAtBCEHwABCNJAALIA0gERCUHyALIA0Q6SMCQCAORQ0AIA4QrA8gDigCACAOQQRqKAIAEOEjIA5BFEEEEM4UCyAQIQ4LQQRBABDaHUEAQQQQ5yMgASAGNgJ4IAAgDjYCBCAAQQE2AgAgAyAINgKIAiADIAc2AoQCIAMgATYCgAIgAyACKQMANwPgASADIAIpAwg3A+gBIAMgAikDEDcD8AEgAyACKQMYNwP4ASADQeABahDJDgwDCyABKAKsASEJAkBByAAQiQEiBQ0AQQRByAAQjSQACyAFIA02AhwgBSAONgIYIAVBADYCFCAFQoCAgIDAADcCDCAFIBE2AgggBSAKNgIEIAUgDzYCACAFIAMpA0A3AiAgBSADKQNINwIoIAVBADsBRCAFIBA2AkAgBSAMNgI8IAVBADYCOCAFIAk2AjQgBSALNgIwIAEgBjYCeCAFKAIEIQogBSgCACEGIAMgBSkCGDcDsAEgAyAFKQIgNwO4ASADIAUpAig3A8ABIAUoAhQhDSAFKAIQIQwgBSgCDCEOIAUoAgghECAFKAI8IQkgBSgCQCEPIAVByABBBBDOFAJAIAEtAIEBQSBxRQ0AIAEtAIQBQf8BcQ0AIAcoAgQhBSAHKAIAIQcgA0GBgYCAeDYC4AEgASAHIAUgA0HgAWoQ3B0LIAMgAykDwAE3ApQCIAMgAykDuAE3AowCIAMgAykDsAE3AoQCIAMgAikDADcC5AEgAyACKQMYNwL8ASADIAIpAxA3AvQBIAMgAikDCDcC7AEgASgCrAEhAiAIKAIAIQgCQEHwABCJASIFRQ0AIAVBCDYCACAFIAMpAuABNwIEIAUgAykC6AE3AgwgBSADKQLwATcCFCAFIAMpAvgBNwIcIAUgAykCgAI3AiQgBSADKQKIAjcCLCAFIAMpApACNwI0IAUgAygCmAI2AjwgBSAPNgJIIAUgAjYCRCAFIAg2AkAgCiAQEJQfIAYgChDpIyAMIA0Q2h0gDiAMEOcjAkAgCUUNACAJEKwPIAkoAgAgCUEEaigCABDhIyAJQRRBBBDOFAsgACAFNgIIIABCADcCAAwDC0EIQfAAEI0kAAsgCiAREJQfIA8gChDpIwJAIAxFDQAgDBCsDyAMKAIAIAxBBGooAgAQ4SMgDEEUQQQQzhQLIBAhDAtBBEEAENodQQBBBBDnIyABIAY2AnggACAMNgIEIABBATYCACADIAg2AmggAyAHNgJkIAMgATYCYCADIAIpAwA3A0AgAyACKQMINwNIIAMgAikDEDcDUCADIAIpAxg3A1ggA0HAAGoQyQ4LIAEgBDYCeCADQfACaiQAC8IqAhN/An4jAEGgAWsiBCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADKAIQIgUgAygCFCIGSw0AAkAgAy0AGA0AAkAgBiADKAIMIgdJDQAgAygCBCEIIAMoAgAhCUECIQoMDQsgAygCCCAGai0AACELIAMoAgQhCCADKAIAIQkgASkA4AQgAUHoBGopAACEIAFB8ARqKQAAIAFB+ARqKQAAhIRQRQ0KDAsLAkAgBiADKAIMIgxJDQAgAygCBCENIAMoAgAhCUECIQoMBAsgAygCCCAGai0AACELIAMoAgQhDSADKAIAIQkgASkA4AQgAUHoBGopAACEIAFB8ARqKQAAIAFB+ARqKQAAhIRQRQ0BDAILIABBADYCAAwRCyAEQTBqIAFB4ARqIAtBA3ZBEHFqIgopAwAgCkEIaikDACALQf8AcRC1FiAEKQMwQgGDUA0AIAutIRdCBCEYDAILIAEgC2otAGAhCgsgCkH/AXEhCwJAAkAgCQ4DBAABBAsgC0EGaiELDAMLAkAgAS0AWUEBcUUNACANIAEoAoAFKALcAk8NAiANQQZsIAtqQQxqIQsMAwsgDa0hF0ICIRgLIBdCIIYgGIQhFwwCCyABKAKEBRCQGCEIDAILAkAgCyACKAKIASIISQ0AIAsgCEGo+oQBEO4WAAsgAigChAEgC0ECdGooAgAiCEEATg0BIAQgAjYCmAEgBCABNgKUASAEQYgBaiAEQZQBaiAJIA0gChCNAQJAIAQoAogBQQVHDQAgBCgCjAEhCAwCCyAEKQOIASEXCwJAAkACQAJAIBenIgtBfWpBAiALQQJLGw4DAAECAAsgBEEBOgCUASAEIAY2ApgBIARBlAFqEMgeIQYMAgsgBCAGNgKYASAEQQA6AJQBIAQgF0IgiDwAlQEgBEGUAWoQyB4hBgwBCyAEQQM6AJQBIAQgFzcCmAEgBEGUAWoQyB4hBgsgAEECNgIAIAAgBjYCBAwKCwJAIAUgBkYNACAGQX9qIQoCQCACKAKwAUEBRw0AIAIgAigCtAEiBiACKAK4ASILayALIAZrIAYgC0sbIAIoAnBqNgJwCyACIAo2ArgBIAIgCjYCtAEgAkEBNgKwAUF/IAVBA2oiBiAGIAVJGyENIAFB4AJqIQkgAygCCCIHQX1qIQ4DQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAIQf///z9LDQAgCiAFTw0BIAohCwwLCyACKAKwAUUNAiACIAo2ArgBIAogDEkNASAKIAxBpJSFARDuFgALIAIoAnwhDyACKAJ4IQMgCiELA0AgAyAIIAkgDiALaiIKQQNqLQAAai0AAGpBAnRqKAIAIQYgCyANTQ0HIAZBgICAwABPDQcgAyAGIAkgCkECai0AAGotAABqQQJ0aigCACIIQf///z9LDQQgAyAIIAkgCkEBai0AAGotAABqQQJ0aigCACIGQf///z9LDQYgAyAGIAkgCi0AAGotAABqQQJ0aigCACIIQf///z9LDQUgC0F8aiILIAVPDQAMCgsLIAhB////P3EgCSAHIApqLQAAIgtqLQAAaiIGIAIoAnwiA08NAQJAAkAgAigCeCAGQQJ0aigCACIGQQBIDQBBACELDAELIAQgAjYCmAEgBCABNgKUASAEQSBqIARBlAFqIAggC0EIdBCtASAEKAIkIQYgBCgCICELCyALQQFxRQ0HIARBAToAlAEgBCAKNgKYASAEQZQBahDIHiEGIABBAjYCACAAIAY2AgQMFAtB5OmEAUEfQYTqhAEQ2BsACyAGIANBuOaEARDuFgALIAtBf2ohCiAGIRAgCCEGDAMLIAtBfWohCiAGIRAgCCEGDAILIAtBfmohCiAIIRAMAQsgCCEQIAshCgsgBkEATg0AAkACQCACKAKwAUUNACACIAo2ArgBIBAgCSAHIApqLQAAIgtqLQAAaiIGIA9PDQECQAJAIAMgBkECdGooAgAiBkEASA0AQQAhCwwBCyAEIAI2ApgBIAQgATYClAEgBEEoaiAEQZQBaiAQIAtBCHQQrQEgBCgCLCEGIAQoAighCwsgC0EBRw0CIARBAToAlAEgBCAKNgKYASAEQZQBahDIHiEGIABBAjYCACAAIAY2AgQMDwtB5OmEAUEfQYTqhAEQ2BsACyAGIA9BuOaEARDuFgALAkAgBkGAgIDAAEkNACAGQYCAgIABcQ0AAkACQAJAIAZBgICAwABxDQAgBkGAgICABHENASAGQYCAgIACcUUNAiACIAoQ2hgCQCAKIAxPDQAgByAKai0AACEGIAQgCjYCmAEgBCAGOgCVASAEQQA6AJQBIARBlAFqEMgeIQYgAEECNgIAIAAgBjYCBAwRCyAKIAxBxJSFARDuFgALIAEoAoAFIAEoAoQFIAIgBhDJHSEGIAIgChDaGCAAIApBAWo2AgggACAGNgIEIABBATYCAAwPCyACIAoQ2hggAEEANgIADA4LQcCThQFBiQFBtJSFARDXGwALIAohCyAGIQgLIAtBf2ohCiALIAVHDQALIAIoArABIQYgAkEANgKwAQJAAkACQCAGQQFxRQ0AIAIgAigCcCACKAK0ASIGIAVrIAUgBmsgBiAFSxtqNgJwAkACQAJAAkAgBQ0AIARBEGogASACIAgQwQ8gBCgCEEEBcUUNASAEQQE6AJQBIARBADYCmAEgBEGUAWoQyB4hBgwGCwJAIAVBf2oiBiAMSQ0AIAYgDEGElYUBEO4WAAsgBEEYaiABIAIgCCAHIAZqLQAAIgsQwg8gBCgCGEEBcQ0EIAQoAhwiCUGAgIDAAHENAQJAIAlBgICAgAJxDQBBACEFDAMLIAQgBjYCmAEgBCALOgCVASAEQQA6AJQBIARBlAFqEMgeIQYMBQtBACEFIAQoAhQiCUGAgIDAAHFFDQELIAEoAoAFIAEoAoQFIAIgCRDJHSELIAUhBkEBIQULIAAgBjYCCCAAIAs2AgQMDAtBtOmEAUEfQdTphAEQ2BsACyAEQQE6AJQBIAQgBTYCmAEgBEGUAWoQyB4hBgsgAEECNgIAIAAgBjYCBAwKCwJAAkACQAJAAkACQAJAAkAgBQ0AIAEtAN8EQQFqIgUgCEH///8/cWoiBiACKAJ8IgtPDQJBACELAkAgAigCeCAGQQJ0aigCACIGQQBODQAgBCACNgKYASAEIAE2ApQBIAQgBEGUAWogCCAFQRB0QQFyEK0BIAQoAgQhBiAEKAIAIQsLIAtBAXFFDQEgBEEBOgCUASAEQQA2ApgBIARBlAFqEMgeIQYMBAsgBUF/aiILIAxJDQIgCyAMQYSVhQEQ7hYAC0EAIQUgBkGAgIDAAHFFDQQMAwsgBiALQcjmhAEQ7hYACyAIQf///z9xIAEgAygCCCALai0AACIDai0A4AJqIgYgAigCfCIJTw0DQQAhCQJAIAIoAnggBkECdGooAgAiBkEATg0AIAQgAjYCmAEgBCABNgKUASAEQQhqIARBlAFqIAggA0EIdBCtASAEKAIMIQYgBCgCCCEJCwJAIAlBAXFFDQAgBEEBOgCUASAEIAU2ApgBIARBlAFqEMgeIQYMAQsgBkGAgIDAAHENAQJAIAZBgICAgAJxDQBBACEFDAMLIAQgCzYCmAEgBCADOgCVASAEQQA6AJQBIARBlAFqEMgeIQYLIABBAjYCACAAIAY2AgQMDAsgASgCgAUgASgChAUgAiAGEMkdIQkgBSELQQEhBQsgACALNgIIIAAgCTYCBAwJCyAGIAlBuOaEARDuFgALIARB8ABqIAFB4ARqIAtBA3ZBEHFqIgopAwAgCkEIaikDACALQf8AcRC1FiAEKQNwQgGDUA0AIAutIRdCBCEYDAILIAEgC2otAGAhCgsgCkH/AXEhCwJAAkAgCQ4DBAABBAsgC0EGaiELDAMLAkAgAS0AWUEBcUUNACAIIAEoAoAFKALcAk8NAiAIQQZsIAtqQQxqIQsMAwsgCK0hF0ICIRgLIBdCIIYgGIQhFwwCCyABKAKEBRCQGCELDAILAkAgCyACKAKIASINSQ0AIAsgDUGo+oQBEO4WAAsgAigChAEgC0ECdGooAgAiC0EATg0BIAQgAjYCmAEgBCABNgKUASAEQYgBaiAEQZQBaiAJIAggChCNAQJAIAQoAogBQQVHDQAgBCgCjAEhCwwCCyAEKQOIASEXCwJAAkACQAJAIBenIgtBfWpBAiALQQJLGw4DAAECAAsgBEEBOgCUASAEIAY2ApgBIARBlAFqEMgeIQYMAgsgBCAGNgKYASAEQQA6AJQBIAQgF0IgiDwAlQEgBEGUAWoQyB4hBgwBCyAEQQM6AJQBIAQgFzcCmAEgBEGUAWoQyB4hBgsgAEECNgIAIAAgBjYCBAwCCwJAIAUgBkYNACAGQX9qIQYCQCACKAKwAUEBRw0AIAIgAigCtAEiCSACKAK4ASIKayAKIAlrIAkgCksbIAIoAnBqNgJwCyACIAY2ArgBIAIgBjYCtAEgAkEBNgKwAUF/IAVBA2oiCSAJIAVJGyEOIAFB4AJqIQkgAygCCCIPQX1qIQwgASgChAUhESABKAKABSESQQAhEwJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALQf///z9LDQAgBiAFTw0BDAsLIAIoArABRQ0CIAIgBjYCuAEgBiAHSQ0BIAYgB0GklIUBEO4WAAsgAigCfCEUIAIoAnghAwNAIAMgCyAJIAwgBmoiCkEDai0AAGotAABqQQJ0aigCACEIIAYgDk0NByAIQYCAgMAATw0HIAMgCCAJIApBAmotAABqLQAAakECdGooAgAiDUH///8/Sw0EIAMgDSAJIApBAWotAABqLQAAakECdGooAgAiCEH///8/Sw0GIAMgCCAJIAotAABqLQAAakECdGooAgAiC0H///8/Sw0FIAZBfGoiBiAFSQ0KDAALCyALQf///z9xIAkgDyAGai0AACIKai0AAGoiAyACKAJ8IghPDQECQAJAIAIoAnggA0ECdGooAgAiA0EASA0AQQAhCwwBCyAEIAI2ApgBIAQgATYClAEgBEHgAGogBEGUAWogCyAKQQh0EK0BIAQoAmQhAyAEKAJgIQsLAkAgC0EBcUUNACAEQQE6AJQBIAQgBjYCmAEgBEGUAWoQyB4hBiAAQQI2AgAgACAGNgIEDA8LIAMhCyAGIQoMBwtB5OmEAUEfQYTqhAEQ2BsACyADIAhBuOaEARDuFgALIAZBf2ohCiANIRUgCCENDAMLIAZBfWohCiALIRUgCCENDAILIAZBfmohCiAIIRUMAQsgCCEVIAYhCiALIQ0LAkAgFUEASA0AIBUhCwwBCwJAAkAgAigCsAFFDQAgAiAKNgK4ASANIAkgDyAKai0AACIIai0AAGoiBiAUTw0BAkACQCADIAZBAnRqKAIAIgtBAEgNAEEAIQYMAQsgBCACNgKYASAEIAE2ApQBIARB6ABqIARBlAFqIA0gCEEIdBCtASAEKAJsIQsgBCgCaCEGCyAGQQFHDQIgBEEBOgCUASAEIAo2ApgBIARBlAFqEMgeIQYgAEECNgIAIAAgBjYCBAwJC0Hk6YQBQR9BhOqEARDYGwALIAYgFEG45oQBEO4WAAsgC0GAgIDAAEkNASALQYCAgIABcQ0BAkACQAJAIAtBgICAwABxDQAgC0GAgICABHENASALQYCAgIACcQ0CQcCThQFBiQFBtJSFARDXGwALQQAhEAJAIBIoAtwCQQFGDQAgESACIAsQmx0iBigCACAGQQRqKAIAQQAQ+xEhEAtBASETIApBAWohFgwDCyACIAoQ2hgMBAsgAiAKENoYAkAgCiAHTw0AIA8gCmotAAAhBiAEIAo2ApgBIAQgBjoAlQEgBEEAOgCUASAEQZQBahDIHiEGIABBAjYCACAAIAY2AgQMBwsgCiAHQcSUhQEQ7hYACyAGIQoLIApBf2ohBiAKIAVHDQALIAIoArABIQYgAkEANgKwAQJAAkACQAJAIAZBAXFFDQAgAiACKAJwIAIoArQBIgYgBWsgBSAGayAGIAVLG2o2AnACQCAFDQAgBEHQAGogASACIAsQwQ8CQCAEKAJQQQFxRQ0AIARBAToAlAEgBEEANgKYASAEQZQBahDIHiEGDAQLIAQoAlQiC0GAgIDAAHFFDQVBACEFDAQLAkAgBUF/aiIGIAdJDQAgBiAHQYSVhQEQ7hYACyAEQdgAaiABIAIgCyAPIAZqLQAAIgkQwg8gBCgCWEEBcQ0BIAQoAlwiC0GAgIDAAHENAyALQYCAgIACcUUNBCAEIAY2ApgBIAQgCToAlQEgBEEAOgCUASAEQZQBahDIHiEGDAILQbTphAFBH0HU6YQBENgbAAsgBEEBOgCUASAEIAU2ApgBIARBlAFqEMgeIQYLIABBAjYCACAAIAY2AgQMBAtBASETIBIgESACIAsQyR0hECAFIRYLIAAgFjYCCCAAIBA2AgQgACATNgIADAILAkACQAJAAkACQAJAAkAgBQ0AIAEtAN8EQQFqIgkgC0H///8/cWoiBiACKAJ8IgVPDQJBACEFAkAgAigCeCAGQQJ0aigCACIGQQBODQAgBCACNgKYASAEIAE2ApQBIARBwABqIARBlAFqIAsgCUEQdEEBchCtASAEKAJEIQYgBCgCQCEFCyAFQQFxRQ0BIARBAToAlAEgBEEANgKYASAEQZQBahDIHiEGDAQLIAVBf2oiCSAHSQ0CIAkgB0GElYUBEO4WAAtBACEFIAZBgICAwABxRQ0EDAMLIAYgBUHI5oQBEO4WAAsgC0H///8/cSABIAMoAgggCWotAAAiCmotAOACaiIGIAIoAnwiA08NBUEAIQMCQCACKAJ4IAZBAnRqKAIAIgZBAE4NACAEIAI2ApgBIAQgATYClAEgBEHIAGogBEGUAWogCyAKQQh0EK0BIAQoAkwhBiAEKAJIIQMLAkAgA0EBcUUNACAEQQE6AJQBIAQgBTYCmAEgBEGUAWoQyB4hBgwBCyAGQYCAgMAAcQ0BAkAgBkGAgICAAnENAEEAIQUMAwsgBCAJNgKYASAEIAo6AJUBIARBADoAlAEgBEGUAWoQyB4hBgsgAEECNgIAIAAgBjYCBAwDCyAFIQlBASEFIAEoAoAFIAEoAoQFIAIgBhDJHSELCyAAIAk2AgggACALNgIECyAAIAU2AgALIARBoAFqJAAPCyAGIANBuOaEARDuFgALrywCE38CfiMAQdACayIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAIAItAAgiBkF9akEBIAZBAksbQf8BcQ4DAAECAAsgAigCBCEHIAIoAgAhCAJAAkACQAJAAkACQAJAIAEtAMgBIgJBfGoOBQUBAQEGAAsgAkUNAQsgAw0BIAEoAsQBIQYgASgCwAEhByAFQYmAgIB4NgJ4IAcgBiAFQfgAahCzGyEGIAJBogFHDQ0gASABEIwjEIMUDA0LIANFDQELIAEoAsQBIQYgASgCwAEhByAFQYiAgIB4NgJ4IAcgBiAFQfgAahCzGyEGIAJBogFHDQsgASABEIwjEIMUDAsLIAVB+ABqIAEQnwYgBSgCfCEGIAUoAngiCUGAgICAeEYNCiAFKAKAASEKIAEoArwBIQsgBUIANwKQASAFQQM6AIwBIAVBADYCiAEgBUIANwKYASAFQgA3AoABIAVCgICAgMAANwJ4QQhBwAAQ1SAiAkIANwIkIAIgCzYCICACIAg2AhwgAkEDOgAYIAIgBzYCFCACIAg2AhAgAiAKNgIMIAIgBjYCCCACIAk2AgQgAkEXNgIAIAVBhAFqEKciIAVB+ABqENEiDAgLIAEQ3hEgASgCuAEhCSABIAEoAngiBkHAAHI2AnggBUE4aiABEK4KIAUoAjghAiABIAY2AnggBSgCPCEGIAJBAXENCSAFIAY2AlgCQCABLQDIASICQQVGDQAgASgCxAEhBiABKALAASEHIAVB6ABqIAIQwyUgBUGPAq1CIIZBm+SaAa2ENwOQAiAFQfgAakHNlYABIAVBkAJqEPceIAUgBSkCaDcChAEgBSAFKAJwNgKMASAHIAYgBUH4AGoQsxshBiAFQdgAaiECIAEtAMgBQaIBRw0JIAEgARCMIxCDFAwJCyABEN4RIAUgCTYCvAIgBSAGNgK4AiAFIAEoArwBIgY2AsACIAEtAHtBAnFFDQUMBgsgARDeESAFQfgAaiABEKMPIAUpA3giGEICUQ0DIAUgBUH4AGpBCGoiBikDCDcDoAIgBSAGKQMANwOYAiAFIBinQQFzNgKQAiABKAK8ASEGAkACQCABLQB7QQJxDQAgAS0AgAFBwABxDQAgBUGJgICAeDYCeCAIIAcgBUH4AGoQsxshBgJAIAEtAMgBQaIBRw0AIAEgARCMIxCDFAsgGEIBUg0BIAUpA5gCEIchDAoLIBhCAVENAyABKALEASEGIAEoAsABIQIgBUGIgICAeDYCeCACIAYgBUH4AGoQsxshBiABLQDIAUGiAUcNACABIAEQjCMQgxQLIAVBkAJqENIeDAgLAkAgAS0AyAEiB0UNACABKALEASEGIAEoAsABIQIgBUGMgICAeDYCeCACIAYgBUH4AGoQsxshBiAHQaIBRw0IIAEgARCMIxCDFAwICyACKAIAIQggBUH4AGogARCfBiAFKAJ8IQYgBSgCeCIHQYCAgIB4Rg0HIAUgBSgCgAEiCTYC+AEgBSAGNgL0ASAFIAc2AvABIAEoArwBIQYCQCAJQX1qQX1LDQAgBUHrgICAeDYCeCAIIAYgBUH4AGoQsxshBgJAIAEtAMgBQaIBRw0AIAEgARCMIxCDFAsgBUHwAWoQ0SIMCAsgBSAFKAL4ATYCmAIgBSAFKQLwATcDkAIgBUIANwKQASAFQQM6AIwBIAVBADYCiAEgBUIANwKYASAFQgA3AoABIAVCgICAgMAANwJ4IAUgAikCADcCnAIgBSACKAIINgKkAkEIQcAAENUgIgJBFzYCACACQgA3AiQgAiAGNgIgIAIgCDYCHCACIAUpA5ACNwIEIAIgBSkDmAI3AgwgAiAFKQOgAjcCFCAFQYQBahCnIiAFQfgAahDRIgwFCyAFQcAAaiACKAIAIgIQnwQgBSgCQCEIDAQLIAUgBUGQAmpBCGoiAikCCDcC/AEgBSACKQIANwL0AUEIQcAAENUgIgJBADYCCCACQRU2AgAgAiAHNgIsIAIgCDYCKCACIAY2AiQgAiAINgIgIAIgBSkC8AE3AgwgAiAFKQL4ATcCFCACIAUoAoACNgIcDAMLIAUoAoABIQYMBAsgAS0AgAFBwABxDQAgBUGJgICAeDYCeCAIIAcgBUH4AGoQsxshBiAFQbgCaiECIAEtAMgBQaIBRw0CIAEgARCMIxCDFAwCC0EIQcAAENUgIgJBATYCCCACQRU2AgAgAiAHNgIsIAIgCDYCKCACIAY2AiQgAiAINgIgIAIgBSkCuAI3AgwgAiAFKALAAjYCFAtBjwKtQiCGQZvkmgGthCEZIAVBhAFqIQwgBUH4AGpBCGohDSAFQZACakEEciEOIAVBkAJqQQhqIQ8gBUH4AGpBC2ohEANAIAUgAjYCSAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAIEBQSBxDQAgAS0AyAEhBkEAIQkMAQsgAS0AyAEhBgJAAkACQAJAAkACQAJAAkAgAS0AyQENACAGQf8BcUELRg0BC0EBIQcgBkH/AXFBEkcNBiABIAEoAngiCUGAwAByNgJ4IAVB+ABqIAEQxAUgASAJQYHAAHI2AnggAw0BIAEoAtQBIQcgASgC0AEhBiAFQTBqIAIQnwQgBkEBRw0BIAcgBSgCMEcNASACKAIAQRpHDQEgAkEIakGA7poBQQUQqR1FDQEgBUGQAmogASAIENwCIAUoApQCIQcCQCAFKAKQAiIKQYGAgIB4Rw0AIAVBAzoA7AEgBSAHNgLoAQwDCyAFIA8pAhg3A4gCIAUgDykCEDcDgAIgBSAPKQIINwP4ASAFIA8pAgA3A/ABIApBgICAgHhGDQFBCEHAABDVICIGIAc2AgggBiAKNgIEIAZBHjYCACAGIAUpA/ABNwIMIAYgBSkD+AE3AhQgBiAFKQOAAjcCHCAGIAUpA4gCNwIkDAQLIAEQ3hEgASgCvAEhB0EIQcAAENUgIgYgBzYCDCAGIAg2AgggBiACNgIEIAZBKzYCAAwHCyAFQShqIAEQtAUgBSgCLCEKAkAgBSgCKEEBcUUNACAFQQM6AOwBIAUgCjYC6AEMAQsgARDeESABLQDIASEGAkACQAJAAkACQAJAIAMNACAGRQ0BIAZBu39qQQJJDQICQCAGQWlqDgQIBAQDAAsgBkH1AEYNByAGQZ4BRw0DDAcLIAZBu39qQQJJDQECQAJAIAZBaWoOBAgBAQMACyAGQfUARg0HIAZBngFGDQcLIA4gBhDDJSAFQQE2AqQCIAVBxvGaATYCoAIgBUGwgICAeDYCkAIgASgCwAEgASgCxAEgBUGQAmoQsxshCyABLQDIAUGiAUcNAyABIAEQjCMQgxQMAwsgBUGQAmogARCfBiAFKAKUAiELIAUoApACIgZBgICAgHhGDQIgBSgCmAIhESABKAK8ASESIAIoAgAhE0EIQcAAENUgIgdBADYCCCAHQjE3AwAgBSAHNgJIAkACQCATQTBHDQBBACEUQQhBwAAQ1SAiB0EANgIIIAdCMTcDACAFQgA3AqACIAUgBzYCnAIgBUIANwKoAiAFQQA2ApgCIAVCgICAgMAANwKQAkEIQSgQ1SAiByAKNgIgIAdBADYCHCAHIBI2AhggByAINgIUIAcgAjYCECAHIBE2AgwgByALNgIIIAcgBjYCBCAHQQM2AgAgBUGQAmoQxCFBMCEVIAghCyASIREMAQsgBUIANwKoAiAFQQM6AKQCIAVBADYCoAIgBUIANwKwAiAFQgA3ApgCIAVCgICAgMAANwKQAiACQQh2IRMgBUGQAmoQwSFBFyEVIAYhByACIRQLQQhBwAAQ1SAiBiATOwARIAYgCjYCKCAGQQA2AiQgBiASNgIgIAYgCDYCHCAGQoCAgIDQADcCFCAGIBQ6ABAgBiARNgIMIAYgCzYCCCAGIAc2AgQgBiAVNgIAIAZBE2ogE0EQdjoAAAwGC0EIQcAAENUgIgZBADYCCCAGQjE3AwAgBSAGNgJIIAVBuAJqIAEgAiAKEIUIIAUoArgCRQ0CQQhBwAAQ1SAiBkEdNgIAIAYgBSkCuAI3AgQgBiAFKQLAAjcCDCAGIAUpAsgCNwIUDAULIA4gBhDDJSAFQQY2AqQCIAVB8fKaATYCoAIgBUGwgICAeDYCkAIgASgCwAEgASgCxAEgBUGQAmoQsxshCyABLQDIAUGiAUcNACABIAEQjCMQgxQLIAVBAzoA7AEgBSALNgLoASAKEI4jDAELIAVBAzoA7AEgBSAFKAK8AjYC6AEgBiECCyABIAVB+ABqELIUIAVB6AFqEIghIAEtAMgBIQYgASgCgAEhByABIAk2AnggB0GAwABxQQ12IQcMAwsgASgCvAEhC0EAIQdBCEHAABDVICIGQQA2AgggBkIxNwMAIAUgBjYCSEEIQcAAENUgIgYgCzYCECAGIAg2AgwgBiAKNgIIIAYgAjYCBCAGQS02AgAMAQtBASEHCyABIAEoAnhBfnEgCUEBcXI2AnggBUH4AGoQnyIgASAJNgJ4DAsLQQAhCSAHRQ0AIAZB/wFxQRJHDQAgARC5BiEJIAEtAMgBIQYLQQAhCgJAIAZB/wFxQQpHDQAgARC3DkH/AXFBCEcNACABEN4RIAEQ3hFBASEKCyABLQDIASEHAkACQAJAAkACQAJAIAQNACAHQf8BcUEERg0BCyABLQCBAUEgcQ0BIAdB/wFxDQYMAgsgARDeESABKAK4ASERIAEgASgCeCIGQcAAcjYCeCAFQSBqIAEQrgogBSgCICEHIAEgBjYCeCAFKAIkIQYgB0EBRg0JIAUgBjYC8AEgAS0AyAEiB0EFRyETAkAgB0EFRg0AIAEoAsQBIQYgASgCwAEhAiAFQcwAaiAHEMMlIAUgGTcDkAIgBUH4AGpBzZWAASAFQZACahD3HiAMIAUoAlQ2AgggDCAFKQJMNwIAIAIgBiAFQfgAahCzGyEGAkAgAS0AyAFBogFHDQAgASABEIwjEIMUCyAFQfABahClIkECIQcMCwsgARDeESAFQRhqIAIQnwQgASgCvAEhC0EAIRUgBSgCGCEUAkAgAS0AgQFBIHFFDQAgAS0AyAFB/wFxQRJHDQAgARC5BiEVCwJAAkAgCkF/cyACELMgKAIAQTBHcUUNAEEUIRZBAiEKDAELQQhBKBDVICISIAI2AiAgEiALNgIcIBIgFDYCGCASIAs2AgwgEiARNgIIIBIgBjYCBCASQQI2AgBBMCEWIAohESALIQYgFCEKCwJAAkAgFQ0AIAYhFyAKIRUgEiEHDAELQQhBwAAQ1SAiByACNgIoIAcgCzYCJCAHIBQ2AiAgByALNgIUIAcgETYCECAHIAY2AgwgByAKNgIIIAcgEjYCBCAHIBY2AgAgASgCvAEhEUEtIRYgCCEXC0EIQcAAENUgIgYgAjYCKCAGIAs2AiQgBiAUNgIgIAYgCzYCFCAGIBE2AhAgBiAXNgIMIAYgFTYCCCAGIAc2AgQgBiAWNgIAQQEhBwwKCwJAIApBAXMgB0H/AXEiBkESR3INACAFQRBqIAEQtAUgBSgCFCELAkAgBSgCEEEBcUUNACALIQYMCgsgARDeESABLQDIASIHRQ0CIAsNAwwFCyAGDQQLQQAhCwsgA0UNACAKQQFzRQ0AQQAhByALRQ0DCyAFQfgAaiABEJ8GIAUoAnwhBgJAIAUoAngiEUGAgICAeEcNAEEBIRNBAiEHDAULIAUoAoABIRQgASgCvAEhEgJAIAoNACACELMgKAIAQTBGDQAgBUIANwKQASAFQQM6AIwBQQAhEyAFQQA2AogBIAVCADcCmAEgBUIANwKAASAFQoCAgIDAADcCeCAMEKciIAVB+ABqENEiQQhBwAAQ1SAiCkIANwIkIAogEjYCICAKIAg2AhwgCkEFOgAYIAogAjYCECAKIBQ2AgwgCiAGNgIIIAogETYCBCAKQRc2AgBBASEHIAohBgwFC0EAIRNBCEHAABDVICIHQQA2AgggB0IxNwMAIAVCADcCiAEgBSAHNgKEASAFQgA3ApABIAVBADYCgAEgBUKAgICAwAA3AnhBCEEoENUgIgcgCzYCICAHQQA2AhwgByASNgIYIAcgCDYCFCAHIAI2AhAgByAUNgIMIAcgBjYCCCAHIBE2AgQgB0EDNgIAIAVB+ABqEMQhQQhBwAAQ1SAiBiAKOgAQIAYgEjYCDCAGIAg2AgggBiAHNgIEIAZBMDYCAEEBIQcgCQ0HCyAGIQIMCgsCQCAKDQAgB0H/AXFBCEcNASABEN4RCyAFQfgAaiABEKMPIAUpA3giGEICUg0BIAUoAoABIQZBASETQQAhC0ECIQcMAgsCQAJAIAkNACACIQYMAQsgASgCvAEhB0EIQcAAENUgIgYgBzYCECAGIAg2AgwgBiAJNgIIIAYgAjYCBCAGQS02AgAgAS0AyAEhBwsCQCAHQf8BcSICQbt/akECSQ0AIAJBGkYNAEEAIQlBABCNIwwMCyABIAEoAngiAkH//3txNgJ4IAVB+ABqIAEgBkEAEIUIIAEgAjYCeCAFKAJ8IQYCQAJAIAUoAngiBw0AQQIhBwwBCyAFIA0pAgg3A5gCIAUgDSkCADcDkAJBCEHAABDVICICIAY2AgggAiAHNgIEIAJBHTYCACACIAUpA5ACNwIMIAIgBSkDmAI3AhRBASEHIAIhBgtBABCNIwwHCyAFIAwpAgA3A1ggBSAMKAIINgJgIBAtAAAhBiAFLQCAASEHIAUvAIEBIQsgBUEIaiACEJ8EIBinIRMgBkEQdCEGIAEoArwBIRVBACERIAUoAgghEgJAIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUESRw0AIAEQuQYhEQsgE0EBcyEWIAsgBnIhCwJAAkAgCkF/cyACELMgKAIAQTBHcQ0AIAEoArwBIRNBCEEoENUgIgYgCzsACSAGIAc6AAggBiAWNgIAIAYgAjYCICAGIBU2AhwgBiASNgIYIAZBC2ogC0EQdjoAACAGIAUpA1g3AgwgBiAFKAJgNgIUQTAhFCAIIRYMAQsgBSAFKAJgNgJwIAUgBSkDWDcDaEEUIRQgByEKCwJAAkAgEQ0AIAYhByAWIREMAQtBCEHAABDVICIHIAs7ABEgByAKOgAQIAcgEzYCDCAHIBY2AgggByAGNgIEIAcgFDYCACAHIAI2AiggByAVNgIkIAcgEjYCICAHQRNqIAtBEHY6AAAgByAFKQNoNwIUIAcgBSgCcDYCHCABKAK8ASIKQQh2IQtBLSEUIAghEwtBCEHAABDVICIGIAs7ABEgBiAKOgAQIAYgEzYCDCAGIBE2AgggBiAHNgIEIAYgFDYCACAGIAI2AiggBiAVNgIkIAYgEjYCICAGQRNqIAtBEHY6AAAgBiAFKQNoNwIUIAYgBSgCcDYCHEEAIQtBASEHQQAhEwsgCxCNIwwBC0ECIQcgCUUNAyAJEI4jDAMLIAlFDQELIAkQjiMLIBNFDQELIAVByABqEKUiCyAHQQJGIgkNAyAGIQIgB0EBcQ0ADAMLCyACEKUiC0EBIQkLIAAgBjYCBCAAIAk2AgAgBUHQAmokAAv9KQIIfwJ+IwBBsAJrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgNBdGpBByADQQtLGw4mIAABAgMEBQYHCAkKCwwNIA4PEBESIBMUFSAgFhcYGRobHB0gHiAgCyAAKAIMIgNFDR8gA0EEdCEDIAAoAgghAANAAkAgACgCAEECRg0AIAEtADkhBCABQQE6ADkgAEEMaigCACABEHcgASAEOgA5CyAAQRBqIQAgA0FwaiIDDQAMIAsLIAEoAjAQohQhAyACIAE2AvABIAIgAzYC9AEgAkEBOgCJAiACIAEpAiw3AvwBIAIgASgCNDYChAIgAiABKAE6NgGKAiACIAEtADg6AIgCIAJBADoA+AEgAkEAKQOgpZwBIgo3A9ABIAJBACkDqKWcASILNwPYASACIAo3A+ABIAIgCzcD6AECQCAAKAIMIgFFDQAgAUEMbCEDIAAoAgghAQNAAkACQCABKAIAIgANACABQQRqKAIAIAJB0AFqEOIEDAELIAItAIkCIQQgAkEBOgCJAiAAIAJB0AFqEHcgAiAEOgCJAgsgAUEMaiEBIANBdGoiAw0ACwsCQCACKALUASIBRQ0AIAIoAtABIAIoAtwBEPANIAEgAUEEdEEXakFwcSIAakEJaiIBRQ0AIAIoAtABIABrIAFBCBDOFAsgAkHgAWoQ5hgMHgsCQCAAKAIgIgMoAhQiBEUNACAEQQxsIQQgAygCECEDA0AgAS0AOSEFIAFBAToAOSADKAIAIAEQdyABIAU6ADkgA0EMaiEDIARBdGoiBA0ACwsgAUEsaiEDAkAgAC0AHEECRg0AIAEoAjAQohQhBCACIAE2AkAgAiAENgJEIAJBAToAWSACQQE6AEggAiADKQIANwJMIAIgAygCCDYCVCACQQApA6ClnAEiCjcDICACQQApA6ilnAEiCzcDKCACIAo3AzAgAiALNwM4IAIgASgBOjYBWiACIAEtADg6AFggAkEgaiAAQQhqQQMQuA8gAiACKAJQEKIUNgL0ASACQQE6AIkCIAJBAToA+AEgAiACKQJMNwL8ASACIAIoAlQ2AoQCIAIgCjcD0AEgAiALNwPYASACIAo3A+ABIAIgCzcD6AEgAiACKAFaNgGKAiACIAItAFg6AIgCIAIgAkEgajYC8AEgAkHQAWogACgCIBDVAwJAIAIoAtQBIgFFDQAgAigC0AEgAigC3AEQ8A0gASABQQR0QRdqQXBxIgBqQQlqIgFFDQAgAigC0AEgAGsgAUEIEM4UCyACQdABakEQahDmGAJAIAIoAiQiAUUNACACKAIgIAIoAiwQ8A0gASABQQR0QRdqQXBxIgBqQQlqIgFFDQAgAigCICAAayABQQgQzhQLIAJBIGpBEGoQ5hgMHgsgASgCMBCiFCEEIAIgATYC8AEgAiAENgL0ASACQQE6AIkCIAJBAToA+AEgAiADKQIANwL8ASACIAMoAgg2AoQCIAJBACkDoKWcASIKNwPQASACQQApA6ilnAEiCzcD2AEgAiAKNwPgASACIAs3A+gBIAIgASgBOjYBigIgAiABLQA4OgCIAiACQdABaiAAKAIgENUDAkAgAigC1AEiAUUNACACKALQASACKALcARDwDSABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKALQASAAayABQQgQzhQLIAJB4AFqEOYYDB0LIAEtADkhAyABQQE6ADkgACgCBCABEHcgASADOgA5DBwLIAEtADkhAyABQQE6ADkgACgCDCABEHcgASADOgA5DBsLIAEtADkhAyABQQE6ADkgACgCBCABEHcgAUEBOgA5IAAoAgggARB3IAEgAzoAOQwaCwJAAkAgA0ELRw0AIAEgAEEEahC8BwwBCyAAIAEQkQULIAEtADkhAyABQQE6ADkgACgCOCABEHcgASADOgA5DBkLIAEtADkhAyABQQE6ADkgACgCKCABEHcgASADOgA5IAAoAghBAkcNGCABQQE6ADkgACgCDCABEHcgASADOgA5DBgLIAAoAghBAUcNFyABLQA5IQMgAUEBOgA5IAAoAgwgARB3IAEgAzoAOQwXCyABLQA5IQMgAUEBOgA5IAAoAgQgARB3IAFBAToAOSAAKAIIIAEQdyABQQE6ADkgACgCDCABEHcgASADOgA5DBYLAkAgAC0AGEEFRw0AIAEtADkhAyABQQE6ADkgACgCECABEHcgASADOgA5CwJAIAAoAgwiA0UNACADQQR0IQQgACgCCEEMaiEDA0AgAS0AOSEFIAFBAToAOSADKAIAIAEQdyABIAU6ADkgA0EQaiEDIARBcGoiBA0ACwsgACgCKCIARQ0VIAAgARCVEgwVCyABLQA5IQMgAUEBOgA5IAAoAhAgARB3IAEgAzoAOQJAIAAoAgRBgICAgHhGDQAgASAAQQRqEOYXCyAAKAIgIgBFDRQgACABEJUSDBQLIAAoAgwiA0UNEyADQQJ0IQMgACgCCCEAA0AgAS0AOSEEIAFBAToAOSAAKAIAIAEQdyABIAQ6ADkgAEEEaiEAIANBfGoiAw0ADBQLCyABIABBCGoQsBIMEgsgACgCDCIDRQ0RIANBAnQhAyAAKAIIIQADQCABLQA5IQQgAUEB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AkACQCABLQA0DQAgAS0AOSEDDAELIAEtADkhAyABLQA6IQQgAUGBAjsAOSAAKAIIIAEQjgIgASAEOgA6CyABQQE6ADkgACgCBCABEHcgASADOgA5DAILAkAgACgCBCIAKAIAQQNHDQAgAEEEaiABEIAMDAILIAAgARCTGwwBCwJAIAAoAgwiAUUNACABQShsIQMgACgCCCEBA0AgASACQdABahCfBSABQShqIQEgA0FYaiIDDQALCyACIAg6AIkCAkACQCAGKAIAQYCAgIB4Rw0AIAYoAgQhASACQQE6AIkCIAEgAkHQAWoQdyACIAg6AIkCDAELAkAgBigCFA0AIAIoAvQBIgFFDQAgBkEAIAEQuwY2AhQLAkAgAi0AjQIiBA0AAkAgBigCCA0AIAJBADoAjQIMAQsgAiAGKAIEIgEoAgAgAUEEaigCABD/FzoAjQILIAIgAi0AiAI6AEQgAkEAOwBFIAJBACkDoKWcASIKNwMgIAJBACkDqKWcASILNwMoIAIgCjcDMCACIAs3AzggAiACQdABajYCQCACQSBqIAYQ+wcgAkEgahDmGCACQTBqEOYYAkAgBigCCCIBRQ0AIAFBMGwhAyAGKAIEIQEDQCABIAJB0AFqEMEBIAFBMGohASADQVBqIgMNAAsLIAIgBDoAjQILAkAgACgCJCIBRQ0AIAItAIQCQQFHDQAgAi8AiQIhACACQYECOwCJAiABKAIAIAJB0AFqEI4CIAIgADsAiQILAkAgAigC1AEiAUUNACACKALQASACKALcARDwDSABIAFBBHRBF2pBcHEiAGpBCWoiAUUNACACKALQASAAayABQQgQzhQLIAJB4AFqEOYYCyACQbACaiQAC8clAh1/CX4jAEHwDmsiBCQAIAG9IiFC/////////weDIiJCgICAgICAgAiEICFCAYZC/v///////w+DICFCNIinQf8PcSIFGyIjQgGDISRBAiEGIANB//8DcSEHAkACQAJAAkACQAJAAkACQAJAICJQIghBAkEDIAgbQQQgIUKAgICAgICA+P8AgyIiUBsgIkKAgICAgICA+P8AURsOBQMCAAQBAwtBBCEGDAILQoCAgICAgIAgICNCAYYgI0KAgICAgICACFEiCBshIyAkp0EBcyEGQct3Qcx3IAgbIAVqIQkMAwtBAyEGCyAGQX5qIQYgIUI/iKchCAwCCyAFQc13aiEJICSnQQFzIQYLICFCP4ghJSAGQf8BcUEBTQ0BIAZBfmohBiAlpyEICwJAAkACQCAGQf8BcSIKRQ0AQQEhBkHt8ZoBQezxmgEgCBtB7fGaAUEBIAgbIAIbIQhBASAhQj+IpyACGyEFIApBAkcNASAEQQI7AcwNIANB//8DcQ0CQQEhBiAEQQE2AtQNIARBqMuXATYC0A0gBEHMDWohCgwECyAEQQM2AtQNIARBz8+aATYC0A0gBEECOwHMDUEBIQggBEHMDWohCkEAIQVBASEGDAMLIARBAzYC1A0gBEHogYIBNgLQDSAEQQI7AcwNIARBzA1qIQoMAgsgBCAHNgLcDSAEQQA7AdgNQQIhBiAEQQI2AtQNIARB/9WYATYC0A0gBEHMDWohCgwBCwJAAkACQAJAAkACQAJAAkACQAJAAkACQEF0QQUgCUEASBsgCWwiBkHA/QBPDQAgI0IAUQ0BQaB/IAkgI3kiIqdrIgVrQdAAbEGwpwVqQc4QbSIIQdAASw0CIAZBBHYiC0EVaiEMQQAgA2tBgIB+IAPBQX9KG8EhDSAEQRBqIAhBBHQiBikDuPiCAUIAICMgIoZCABDoEUIBQUAgBSAGLwHA+IIBamsiCK0iJoYiJ0J/fCIoIAQpAxBCP4ggBCkDGHwiIoMiJFANBSAGLwHC+IIBIQogCEE/cSEOAkAgIiAmiKciBUGQzgBJDQAgBUHAhD1JDQQCQCAFQYDC1y9JDQBBCEEJIAVBgJTr3ANJIgYbIQ9BgMLXL0GAlOvcAyAGGyEGDAYLQQZBByAFQYCt4gRJIgYbIQ9BwIQ9QYCt4gQgBhshBgwFCwJAIAVB5ABJDQBBAkEDIAVB6AdJIgYbIQ9B5ABB6AcgBhshBgwFC0EKQQEgBUEJSyIPGyEGDAQLQe6BggFBJUGUgoIBEKQhAAtByIKDAUEcQeSCgwEQpCEACyAIQdEAQfSCgwEQ7hYAC0EEQQUgBUGgjQZJIgYbIQ9BkM4AQaCNBiAGGyEGCyAOrSEmIA8gCmtBAWrBIhAgDUwNAyAIQf//A3EhESAQIA1rIgjBIAwgCCAMSRsiEkF/aiEOQQAhCAJAA0AgBEEsaiAIaiAFIAZuIgpBMGo6AAAgBSAKIAZsayEFIA4gCEYNAyAPIAhGDQEgCEEBaiEIIAZBCkkhCiAGQQpuIQYgCkUNAAtBhIODARDCIwALIAhBAWohBkFsIAtrIQggEUF/akE/ca0hKUIBISIDQCAiICmIQgBSDQEgCCAGakEBRg0DIARBLGogBmogJEIKfiIkICaIp0EwajoAACAiQgp+ISIgJCAogyEkIBIgBkEBaiIGRw0ACyAEQawIaiAEQSxqIAwgEiAQIA0gJCAnICIQzwgMBAsgBEEANgKsCAwECyAEQawIaiAEQSxqIAwgEiAQIA0gBa0gJoYgJHwgBq0gJoYgJxDPCAwCCyAGIAxBlIODARDuFgALIARBrAhqIARBLGogDEEAIBAgDSAiQgqAIAatICaGICcQzwgLIAQoAqwIIgpFDQAgBC8BtAghEiAEKAKwCCEQDAELIAQgIzcDuAggBEEBQQIgI0KAgICAEFQbNgLYCSAEQcAIakEAQZgB/AsAIARB5AlqQQBBnAH8CwAgBEEBNgLgCSAEQQE2AoALIAmsICNCf3x5fULCmsHoBH5CgKHNoLQCfEIgiKciBsEhEgJAAkAgCUEASA0AIARBuAhqIAkQywcaDAELIARB4AlqQQAgCWtB//8DcRDLBxoLAkACQCASQX9KDQAgBEG4CGpBACASa0H//wNxELgFGgwBCyAEQeAJaiAGQf//AXEQuAUaCyAEQcwNaiAEQeAJakGkAfwKAAAgBEHMDWpBfGohBSAMIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIAQoAuwOIgZBKU8NAQJAIAZFDQAgBkECdCEGQgAhIwNAIAUgBmoiCCAjQiCGIAg1AgCEIiNCgJTr3AOAIiI+AgAgIyAiQoCU69wDfn0hIyAGQXxqIgYNAAsLIApBd2oiCkEJSw0ACyAKQQJ0KALQh4MBQQF0IghFDQEgBCgC7A4iBkEpTw0CAkACQCAGDQBBACEGDAELIAZBAnQhBiAEQcwNakF8aiEFIAitISNCACEiA0AgBSAGaiIIICJCIIYgCDUCAIQiIiAjgCIkPgIAICIgJCAjfn0hIiAGQXxqIgYNAAsgBCgC7A4hBgsCQAJAAkAgBCgC2AkiDiAGIA4gBksbIhBBKEsNACAQDQFBACEQDAILQQAgEEEoQZyEggEQiwoAC0EAIQogBEG4CGohCCAEQcwNaiEGIBAhCQNAIAYgCCgCACIPIAYoAgBqIgUgCkEBcWoiCjYCACAFIA9JIAogBUlyIQogBkEEaiEGIAhBBGohCCAJQX9qIgkNAAsgCkUNACAQQShGDQQgBEHMDWogEEECdGpBATYCACAQQQFqIRALIAQgEDYC7A4gBCgCgAsiEyAQIBMgEEsbIgZBKU8NBCAGQQJ0IQYgBEHMDWpBfGohCAJAAkADQCAGRQ0BIAggBmooAgAiBSAGQXxqIgYgBEHgCWpqKAIAIgpGDQALIAUgCk8NAAJAIA4NAEEAIQ4gBEEANgLYCQwCCyAEQbgIaiAOQQJ0IghqIQVCACEjIARBuAhqIQYDQCAGIAY1AgBCCn4gI3wiIz4CACAGQQRqIQYgI0IgiCEjIAhBfGoiCA0ACwJAICNQDQAgDkEoRg0IIAUgI6c2AgAgDkEBaiEOCyAEIA42AtgJDAELIBJBAWohEgtBACEUQQEhDwJAAkAgEsEiBiANSCIVDQAgEiANa8EgDCAGIA1rIAxJGyIQDQELQQAhEAwSCyAEQYQLaiAEQeAJakGkAfwKAAAgBEGEC2pBARDLByEGIARBqAxqIARB4AlqQaQB/AoAACAEQagMakECEMsHIQggBEHMDWogBEHgCWpBpAH8CgAAIARBuAhqQXxqIRYgBEHgCWpBfGohFyAEQYQLakF8aiEYIARBqAxqQXxqIREgBEHMDWpBfGohCyAEQcwNakEDEMsHIQUgBigCoAEhGSAIKAKgASEaIAUoAqABIRtBACEcAkACQANAIBwhHSAOQSlPDQkgHUEBaiEcIA5BAnQhBUEAIQYDQCAFIAZGDQMgBEG4CGogBmohCCAGQQRqIQYgCCgCAEUNAAsgGyAOIBsgDksbIh5BKU8NCiAeQQJ0IQYCQAJAA0AgBkUNASALIAZqIQggBkF8aiIGIARBuAhqaigCACIFIAgoAgAiCEYNAAtBACEfIAUgCEkNAQtBASEKIARBzA1qIQggBEG4CGohBiAeIQkDQCAGIAYoAgAiDyAIKAIAQX9zaiIFIApBAXFqIgo2AgAgBSAPSSAKIAVJciEKIAZBBGohBiAIQQRqIQggCUF/aiIJDQALIApFDQwgBCAeNgLYCUEIIR8gHiEOCyAaIA4gGiAOSxsiHkEpTw0MIB5BAnQhBgJAAkADQCAGRQ0BIBEgBmohCCAGQXxqIgYgBEG4CGpqKAIAIgUgCCgCACIIRg0ACyAFIAhPDQAgDiEeDAELAkAgHkUNAEEBIQogBEGoDGohCCAEQbgIaiEGIB4hCQNAIAYgBigCACIPIAgoAgBBf3NqIgUgCkEBcWoiCjYCACAFIA9JIAogBUlyIQogBkEEaiEGIAhBBGohCCAJQX9qIgkNAAsgCkUNDwsgBCAeNgLYCSAfQQRyIR8LIBkgHiAZIB5LGyIgQSlPDQ4gIEECdCEGAkACQANAIAZFDQEgGCAGaiEIIAZBfGoiBiAEQbgIamooAgAiBSAIKAIAIghGDQALIAUgCE8NACAeISAMAQsCQCAgRQ0AQQEhCiAEQYQLaiEIIARBuAhqIQYgICEJA0AgBiAGKAIAIg8gCCgCAEF/c2oiBSAKQQFxaiIKNgIAIAUgD0kgCiAFSXIhCiAGQQRqIQYgCEEEaiEIIAlBf2oiCQ0ACyAKRQ0RCyAEICA2AtgJIB9BAmohHwsgEyAgIBMgIEsbIg5BKU8NECAOQQJ0IQYCQAJAA0AgBkUNASAXIAZqIQggFiAGaiEFIAZBfGohBiAFKAIAIgUgCCgCACIIRg0ACyAFIAhPDQAgICEODAELAkAgDkUNAEEBIQogBEHgCWohCCAEQbgIaiEGIA4hCQNAIAYgBigCACIPIAgoAgBBf3NqIgUgCkEBcWoiCjYCACAFIA9JIAogBUlyIQogBkEEaiEGIAhBBGohCCAJQX9qIgkNAAsgCkUNEwsgBCAONgLYCSAfQQFqIR8LIB0gDEYNASAEQSxqIB1qIB9BMGo6AAACQAJAIA4NAEEAIQ4MAQsgBEG4CGogDkECdCIIaiEFQgAhIyAEQbgIaiEGA0AgBiAGNQIAQgp+ICN8IiM+AgAgBkEEaiEGICNCIIghIyAIQXxqIggNAAsgI1ANACAOQShGDRMgBSAjpzYCACAOQQFqIQ4LIAQgDjYC2AkgHCAQRw0AC0EAIQ8MEwsgDCAMQbCGgwEQ7hYACyAQIAxLDRAgECAdRg0SIBAgHWsiBkUNEiAEQSxqIB1qQTAgBvwLAAwSC0EAIAZBKEGchIIBEIsKAAtB5IOCAUEbQZyEggEQpCEAC0EAIAZBKEGchIIBEIsKAAtBKEEoQZyEggEQ7hYAC0EAIAZBKEGchIIBEIsKAAtBKEEoQZyEggEQ7hYAC0EAIA5BKEGchIIBEIsKAAtBACAeQShBnISCARCLCgALQf+DggFBGkGchIIBEKQhAAtBACAeQShBnISCARCLCgALQf+DggFBGkGchIIBEKQhAAtBACAgQShBnISCARCLCgALQf+DggFBGkGchIIBEKQhAAtBACAOQShBnISCARCLCgALQf+DggFBGkGchIIBEKQhAAtBKEEoQZyEggEQ7hYACyAdIBAgDEHAhoMBEIsKAAsCQAJAAkACQCATRQ0AIARB4AlqIBNBAnQiCGohBUIAISMgBEHgCWohBgNAIAYgBjUCAEIFfiAjfCIjPgIAIAZBBGohBiAjQiCIISMgCEF8aiIIDQALAkAgI1BFDQAgEyEUDAELIBNBKEYNASAFICOnNgIAIBNBAWohFAsgBCAUNgKACyAUIA4gFCAOSxsiBkEpTw0BIAZBAnQhBiAEQbgIakF8aiEKIARB4AlqQXxqIQkCQAJAAkACQAJAA0AgBkUNASAJIAZqIQggCiAGaiEFIAZBfGohBiAFKAIAIgUgCCgCACIIRg0ACyAFIAhLIAUgCElrQf8BcQ4CAAEHCwJAIA9FDQBBACEQDAgLIBBBf2oiBiAMTw0BIARBLGogBmotAABBAXFFDQYLIBAgDEsNASAEQSxqIBBqIQUgECEGA0AgBiIIRQ0DIAhBf2oiBiAEQSxqai0AAEE5Rg0ACyAEQSxqIAZqIgYgBi0AAEEBajoAACAQIAhrIgZFDQUgBEEsaiAIakEwIAb8CwAMBQsgBiAMQYCGgwEQ7hYAC0EAIBAgDEGQhoMBEIsKAAtBMSEGAkAgDw0AIARBMToALEEwIQYgEEF/aiIIRQ0AIARBLWpBMCAI/AsACyASQQFqIRIgFQ0CIBAgDE8NAiAFIAY6AAAgEEEBaiEQDAILQShBKEGchIIBEO4WAAtBACAGQShBnISCARCLCgALIBAgDE0NAEEAIBAgDEGghoMBEIsKAAsgBEEsaiEKC0Ht8ZoBQezxmgEgIUIAUyIGG0Ht8ZoBQQEgBhsgAhshCEEBICWnIAIbIQUCQCASwSANTA0AIARBCGogCiAQIBIgByAEQcwNahC8CSAEKAIMIQYgBCgCCCEKDAELQQIhBiAEQQI7AcwNAkAgA0H//wNxDQBBASEGIARBATYC1A0gBEGoy5cBNgLQDSAEQcwNaiEKDAELIAQgBzYC3A0gBEEAOwHYDSAEQQI2AtQNIARB/9WYATYC0A0gBEHMDWohCgsgBCAGNgK0DCAEIAo2ArAMIAQgBTYCrAwgBCAINgKoDCAAIARBqAxqEK0GIQYgBEHwDmokACAGC/IsAgp/An4jAEHAAmsiAiQAIAFBsAFqIQMgASgCsAEhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQC4ASIFQaF/ag4IBAcHBwAHBwEHCyABKAKIASEFIAFBCzYCiAEgAUGMAWohBiAFQQtGDQEgAiABKAKgATYC+AEgAiABKQKYATcD8AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAFNgIIIAEgBikCADcCDCABIAYoAgg2AhQMAgsgASgCiAEhBiABQQs2AogBIAZBC0YNAyABQYwBaiEFIAIgASgCoAE2AvgBIAIgASkCmAE3A/ABAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBjYCCCABIAUpAgA3AgwgASAFKAIINgIUDAQLIAJB8AFqIAEQzgELIAEpA7ABIQwgAyACKQPwATcCACADIAIoAvgBNgIIIAEgDDcDqAEgAS0AuAFBCEcNBiABKAKIASEFIAFBCzYCiAEgBUELRg0HIAIgASgCoAE2AvgBIAIgASkCmAE3A/ABAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIAYpAgA3AgwgASAGKAIINgIUDAgLIAEoAogBIQYgAUELNgKIASAGQQtGDQMgAUGMAWohBSACIAEoAqABNgL4ASACIAEpApgBNwPwAQJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASAFKQIANwIMIAEgBSgCCDYCFAwECyACQfABaiABEM4BCyABIAEoArQBIgY2AqwBIAEgASgCsAE2AqgBIAMgAikD8AE3AgAgAyACKAL4ATYCCCACQQM6AIwBIAIgBDYChAEgAiAGNgKIASACQegAaiABIAJBhAFqQQFBABBRIAIoAmwhBiACKAJoIQMMHAsgASgCwAEgASgCxAEgBEZxIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBQ55ACUGJQElJSUlJSUlJSUlJQIlJSUlJSUlJSUlJSUlJSUlJQIlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQoKCiUlCAklJSUlJSUlJSUlJSUlJSUlJSUlCiUlAyUlJSUlJQolJSUEJQolJSUlJSUlJSUlJSUlBSULIAJBADYC8AEgAkEwaiABIAYgAkHwAWoQRiACKAI0IQYgAigCMCEFDCULIAEgASgCeCIDQf//e3E2AnggAkE4aiABEMMDIAIoAjghBSABIAM2AnggAigCPCEGDCQLIAEgBDYCBCABQQE2AgAgASgCiAEhBSABQQs2AogBIAFBjAFqIQcCQAJAIAVBC0YNACACIAEoAqABNgL4ASACIAEpApgBNwPwAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyACQfABaiABEM4BCyABKQOwASEMIAMgAikD8AE3AgAgAyACKAL4ATYCCCABIAw3A6gBIAEtALgBIgVBwwBHDSIgAUEANgIAIAEoArABIQggASgCtAEhBSABKQMIIQwgAUEKNgIIIAIgASkDEDcD+AEgAiAMNwPwASAMpyIGQQpGDRIgBkEGRw0SIAIoAvQBIQYgAkHwAWoQtQsgCEEBaiIIIAEoAmwiCUkNEyAGIAEoAnBLDRNCASEMIAEoAmAgCCAJa2ogBiAIaxD7GCENAkAgBSAGQQFqIgZJDQAgBiABKAJsIghJDRUgBSABKAJwSw0VIAEoAmAgBiAIa2ogBSAGaxD7GCEMCyABKAKIASEGIAFBCzYCiAECQAJAIAZBC0YNACACIAEoAqABNgL4ASACIAEpApgBNwPwAQJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyACQfABaiABEM4BCyABIAEoArQBIgU2AqwBIAEgASgCsAE2AqgBIAMgAikD8AE3AgAgAyACKAL4ATYCCEHAABCJASIGDQRBCEHAABCNJAALIAJBwABqIAEQwgwgAigCRCEGIAIoAkAhBQwiC0EAIQUgASAEENMNIQYMIQsgAkHIAGogASAGENwBIAIoAkgiBUECRg0eIAIoAkwhBgwgCyABIAEoAngiA0H//3txNgJ4IAJBkAFqIAEQlQEgASADNgJ4IAIoApABQTJGDRxBCEHAABDPICIGIAIpA8gBNwM4IAYgAikDwAE3AzAgBiACKQO4ATcDKCAGIAIpA7ABNwMgIAYgAikDqAE3AxggBiACKQOgATcDECAGIAIpA5gBNwMIIAYgAikDkAE3AwAMBAsgBiAFNgIkIAYgBDYCICAGIAw3AxggBiANNwMQIAZBBTYCCCAGQRs2AgAMAwtBACEFIAJB8AFqIAFBABCiByACKAL0ASEGIAIoAvABIgdBgICAgHhGDRkgAiACKQKIAjcDuAIgAiACKQKAAjcDsAIgAiACKQL4ATcDqAJBCEHAABDPICIDIAY2AgggAyAHNgIEIANBHDYCACADIAIpA6gCNwIMIAMgAikDsAI3AhQgAyACKQO4AjcCHCADIQYMHQsgAkHwAWogARCeESACKAL0ASEGIAIoAvABIgVBgICAgHhGDRcgAiACKQKIAjcDuAIgAiACKQKAAjcDsAIgAiACKQL4ATcDqAJBCEHAABDPICIDIAY2AgggAyAFNgIEIANBHDYCACADIAIpA6gCNwIMIAMgAikDsAI3AhQgAyACKQO4AjcCHEEAIQUgAyEGDBwLIAJB0AFqIAEQ7AIgAigC0AFBB0YNFSACIAIpA+gBNwKMAiACIAIpA+ABNwKEAiACIAIpA9gBNwL8ASACIAIpA9ABNwL0AUHAABCJASIGRQ0NIAZBGzYCACAGIAIpAvABNwIEIAYgAikC+AE3AgwgBiACKQKAAjcCFCAGIAIpAogCNwIcIAYgAigCkAI2AiQLQQAhBQwaCyACQfABaiABEM4BCyABKQOwASEMIAMgAikD8AE3AgAgAyACKAL4ATYCCCABIAw3A6gBIAJB8ABqIAEgBEEBEPcEIAIoAnQhBiACKAJwIQMMGQsgASABKAJ4IgNBgMAAcjYCeCACQeAAaiABEHkgAigCYCEGIAEgAzYCeEEBIQMgAigCZCEFIAZBAXFFDQIgBSEGDBgLIAJB8AFqIAEQzgELIAEpA7ABIQwgAyACKQPwATcCACADIAIoAvgBNgIIIAEgDDcDqAEgAS0AuAEiBUGgAUcNAyABKAKIASEFIAFBCzYCiAEgBUELRg0BIAIgASgCoAE2AvgBIAIgASkCmAE3A/ABAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIAYpAgA3AgwgASAGKAIINgIUDAILQQAhAyAFIQYCQAJAIAUoAgAiB0F0akEHIAdBC0sbQXhqDh0ACgoKCgoKCgoKFwoKCgoKCgoKCgoKCgoKCgoKAQoLIAUoAigiAygCAEEwRw0JIAMtABBBAUcNCSADKAIMIQYgAygCCCEDIAJB6ICAgHg2AvABIAMgBiACQfABahCzGyEGIAEtALgBQaIBRw0KIAEgARDvDRCGCQwKCyAFLQAQRQ0IIAUoAgwhAyAFKAIIIQYgAkHogICAeDYC8AEgBiADIAJB8AFqELMbIQYgAS0AuAFBogFHDQkgASABEO8NEIYJDAkLIAJB8AFqIAEQzgELIAEgASgCtAEiBjYCrAEgASABKAKwATYCqAEgAyACKQPwATcCACADIAIoAvgBNgIIQcAAEIkBIgNFDQUgA0EAOgAMIAMgBjYCCCADIAQ2AgQgA0EhNgIAAkAgAS0AekEycQ0AIAJBi4CAgHg2AvABIAEgBCAGIAJB8AFqENwdCyACQQU6APgBIAIgAzYC8AEgAkHQAGogASACQfABakEBQQAQUSACKAJUIQYgAigCUCEDDBMLIAJB8AFqQQRyIAUQsiUgAkEGNgKEAiACQYiGmwE2AoACIAJBsICAgHg2AvABIAEoArABIAEoArQBIAJB8AFqELMbIQYCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLQQEhAwwSCyACQfABahCCIkGs85oBQShBzIebARCkIQALQYiOmwFB1gBB4I6bARCkIQALQYiOmwFB1gBB4I6bARCkIQALQQhBwAAQjSQAC0EIQcAAEI0kAAsgAS0AuAEhA0EAIQcCQCABLQCBAUEgcUUNAAJAIANBNUYNACADQRJHDQELIAEQjgQhByABLQC4ASEDCyADQf8BcQ0CIAEgASgCeCIDQf//e3E2AnggAkHwAWogARDbAyABIAM2AnggAigC9AEhBiACKALwASIIQYCAgIB4Rw0BIAdFDQAgBxDqGyAHKAIAIAdBBGooAgAQ3iMgB0EUQQQQzhQLIAUQiQIgBUHAAEEIEM4UQQEhAwwLCyACKAL4ASEJIAEoAqwBIQpBwAAQiQEiA0UNASADQQA2AgggA0IxNwMAIAJCADcCgAIgAiADNgL8ASACQgA3AogCIAJBgICAgHg2AvABQcAAEIkBIgNFDQIgAyAHNgIgIANBADYCHCADIAo2AhggAyAENgIUIAMgBTYCECADIAk2AgwgAyAGNgIIIAMgCDYCBCADQRg2AgAgAkEFOgCAASACIAM2AnggAkHwAWoQphYgAkHYAGogASACQfgAakEBQQAQUSACKAJcIQYgAigCWCEDDAoLIAEoAqwBIQhBACEDQQhBwAAQzyAiAUEANgIIIAFCMTcDACACQgA3AoACIAIgATYC/AEgAkIANwKIAiACQYCAgIB4NgLwAUEIQcAAEM8gIgYgBzYCICAGQQA2AhwgBiAINgIYIAYgBDYCFCAGIAU2AhAgBkKYgICAgICAgIB/NwMAIAJB8AFqEKYWDAkLQQhBwAAQjSQAC0EIQcAAEI0kAAtBASEFIAIoAtQBIQYMBQtBASEFDAQLQQEhBQwDC0EBIQUgAigClAEhBgwCCyABLQC4ASEFCyACIAY6AJ8CIAIgBDYCmAICQAJAAkACQAJAAkACQAJAAkAgBUH/AXEiBkHQAEYNAAJAAkACQCAGQRhGDQBBgICAgHghBwwBCyACQfABaiABQQAQ2gEgAigC9AEhBiACKALwASIHQYCAgIB4Rg0EIAIoAvgBIQkgAS0AuAEiBUHQAEYNASAGIQgLIAMoAgAhCiACIAJBmAJqNgKkAiACIAJBnwJqNgKgAgJAIAVB/wFxIgZB4gBGDQACQCAGQcwARw0AIAEoAoABQYDAAHENAQsCQAJAAkAgBUH/AXEiBkHLAEYNAAJAIAZBGUcNACABKAKIASEGIAFBCzYCiAECQAJAIAZBC0YNACABQYwBaiEFIAIgASgCoAE2AvgBIAIgASkCmAE3A/ABAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBjYCCCABIAUpAgA3AgwgASAFKAIINgIUDAELIAJB8AFqIAEQzgELIAEpA7ABIQwgAyACKQPwATcCACADIAIoAvgBNgIIIAEgDDcDqAEgAkHwAWogARCbBSACKQPwASIMUEUNAyACKAL4ASEGDA0LIAEoAnghBgJAAkACQCAFQf8BcUGmf2oiC0EQSw0AQQEgC3RBgYgEcQ0BCyAFQbR/akH/AXFB1ABLDQELIAUgBhDhDUUNAgsgASgCtAEhAyACQYyBgIB4NgLwASAKIAMgAkHwAWoQsxshBiABLQC4AUGiAUcNDCABIAEQ7w0QhgkMDAsgAkEAIAFBCGoiCyABKAIIIgVBCkYiBhs2AqgCIAYNByAFQQJHDQcCQCABKQMQIgxCA4NCAFINACAMpyIGIAYoAgAiBkEBajYCACAGQX9MDQkLIAEoAogBIQYgAUELNgKIAQJAAkAgBkELRg0AIAFBjAFqIQUgAiABKAKgATYC+AEgAiABKQKYATcD8AECQCABKAIIQQpGDQAgCxC1CwsgASAGNgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAQsgAkHwAWogARDOAQsgASABKAK0ASIGNgKsASABIAEoArABNgKoASADIAIpA/ABNwIAIAMgAigC+AE2AgggAiAMNwOoAgJAIAEtAHpBBHFFDQAgAhDHGyINNwPwASACQagCaiACQfABahDRDCEDIA0QiR0gASgCrAEhBiADRQ0AIAEoAqgBIQMgAkGqgICAeDYC8AEgASADIAYgAkHwAWoQ3B0gASgCrAEhBgsgAkEAOgCMAiACQQA6AIQCIAJBADYCgAIgAiAGNgL8ASACIAo2AvgBIAIgDDcD8AEgAiABNgKIAiACQSBqIAJBoAJqIAEgAkHwAWpBABDkASACKAIkIQYgAigCICEFDAoLIAUgARCUDCEMIAEoAogBIQYgAUELNgKIAQJAAkAgBkELRg0AIAFBjAFqIQsgAiABKAKgATYC+AEgAiABKQKYATcD8AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAGNgIIIAEgCykCADcCDCABIAsoAgg2AhQMAQsgAkHwAWogARDOAQsgASABKAK0ASIGNgKsASABIAEoArABNgKoASADIAIpA/ABNwIAIAMgAigC+AE2AgggAiAFQf8BcUH4AEYiAzoAjAIgAkEAOgCEAiACQQA2AoACIAIgBjYC/AEgAiAKNgL4ASACIAw3A/ABIAIgATYCiAIgAkEYaiACQaACaiABIAJB8AFqIAMQ5AEgAigCHCEGIAIoAhghBQwJCyABKAKsASEDIAIoApgCIQVBwAAQiQEiBkUNByAGIAM2AhQgBiAFNgIQIAYgDDcDCCAGQS82AgBBACEFDAgLIAJBqAJqIAEgASgCeCIDQYACcUUgA0GAAXFFEOACIAIoAqgCIQYgAi0AvAIiA0ECRg0IIAIgAikCtAI3AvwBIAIgAikCrAI3AvQBIAIgAi8AvQI7AIUCIAIgAi0AvwI6AIcCIAIgATYCiAIgAkEAOgCMAiACIAM6AIQCIAIgBjYC8AEgAkEQaiACQaACaiABIAJB8AFqQQAQ5AEgAigCFCEGIAIoAhAhBQwHCyACIAk2AvgBIAIgBjYC9AEgAigCmAIhAwwBCyACQgQ3AvQBQQAhByAEIQMLIAIgBzYC8AEgAkEoaiABIAMgAkHwAWoQmAggAigCLCEGIAIoAighBQwHC0EBIQUMBgsgAkHbBK1CIIYgAkGoAmqthDcD8AFB2OWaASACQfABakGM5poBENcbCwALQQhBwAAQjSQACyAHQYCAgIB4Rg0CDAELQQEhBSAHQYCAgIB4Rg0BCyAIIAkQ2h0gByAIEOcjC0EBIQMgBUEBcQ0AAkAgBigCAEEeRw0AQQAhAwwBCwJAAkAgAS0AgQFBIHENACAGIQMMAQsCQCABLQC4AUH/AXFBEkYNACAGIQMMAQsCQCABEIoEIgUNACAGIQMMAQsgASgCrAEhB0EIQcAAEM8gIgMgBzYCECADIAQ2AgwgAyAFNgIIIAMgBjYCBCADQS02AgALIAJBBToA+AEgAiADNgLwASACQQhqIAEgAkHwAWpBAUEAEFEgAigCDCEGIAIoAgghAwsgACADNgIAIAAgBjYCBCACQcACaiQAC7InAhF/AX4jAEGQAWsiAyQAIAEoAhAhBCADQYABaiACIAEoAgwiBUEAELACAkACQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRRDQAgACAUNwIADAELAkACQAJAIAVFDQAgA0GAAWogAiAFEN8dIAMtAIABQQRGDQAgAykDgAEiFEL/AYNCBFINAQsgA0EANgJIIANBgAFqIAIgA0HIAGpBn+uaAUEBEOcNIAMtAIABQQRGDQEgAykDgAEiFEL/AYNCBFENASAAIBQ3AgAMAgsgACAUNwIADAELIAEoAgghBkGQh5ABIQcCQAJAAkAgAi0AXUUNAEEAIQgMAQsCQCAGDQBBACEJQQAhCCAFIAQgAigCVCACKAJYEIkcDQILIANBgAFqIAIQrxQCQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRRDQAgACAUNwIADAMLQdGHkAEhB0EBIQgLIAYhCQsgASgCBCEKIANBgAFqIAIgBSAJIAcgCRDxGgJAAkACQCADLQCAAUEFRg0AIAMpA4ABIRQMAQsCQAJAAkACQCAJRQ0AIANBAToAViADQcAAaiAKEO4MIAItAF0hASAHQQFxDQEgAUEBcQ0CIANBgAFqIAIQ1BAgAy0AgAFBBEYNAiADKQOAASIUQv8Bg0IEUg0EDAILIAdBAXFFDQIgAi0AXUEBcQ0CIANBgAFqIAIQrxQgAy0AgAFBBEYNAiADKQOAASIUQv8Bg0IEUg0DDAILAkAgAUEBcQ0AIANBgAFqIAIQrxQgAy0AgAFBBEYNACADKQOAASIUQv8Bg0IEUg0DCyADQQA6AFYLAkAgB0HAAHFFDQAgAi0AXUEBcQ0AIAIgAigCOEEBajYCOAsgA0EAOgBXQQAhC0EAIQYDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGIAlGDQAgA0E4aiAKIAZBDGxqIgEQ7gwgA0GAAWogAiAEIAcgCyAMIANB1wBqIANB1gBqEIcGAkAgAy0AgAFBBEYNACADKQOAASIUQv8Bg0IEUg0SCyABKAIADQYgASgCBCIMKAIAIgtBe2pBBCALQQRLGw4GAQIDBAUHAQsCQCAKIAlBDGxqQXRqIgFFDQAgA0EIaiABEO4MCyADQYABaiACIAUgBCAHIAsgDBDnAiADLQCAAUEERg0PIAMpA4ABIhRC/wGDQgRSDRAMDwsgA0GAAWogDEEIaiACEIMWIAMtAIABQQRGDQwgAykDgAEiFEL/AYNCBFINCgwMCyADQTBqIAxBCGoiDRCfFSADQYABaiACIAMoAjBBABCwAgJAIAMtAIABQQRGDQAgAykDgAEiFEL/AYNCBFINCQsgA0EoaiANEOAdIAMoAiwhDiADKAIoIQsgA0EgaiAMKAIoEJ0EIAMoAiQhDyADKAIgIRACQCALQf7/e0sgDiALckVyIhENACADQYABaiACIAsQ3x0gAy0AgAFBBEYNACADKQOAASIUQv8Bg0IEUg0JCyADQYABaiANIAIQsAYCQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQkLIBENBwJAIBBB/v97Sw0AIA8gEHINCAsgA0GAAWogAiAOEN8dIAMtAIABQQRGDQcgAykDgAEiFEL/AYNCBFENBwwICyADQYABaiACIAwoAggiC0EAELACAkACQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQELAkAgC0UNACADQYABaiACIAsQ3x0gAy0AgAFBBEYNACADKQOAASIUQv8Bg0IEUg0BCyADQYABaiAMQRBqIAIQgxYCQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQELIANBADYCgAEgA0HwAGogAiADQYABakGV7ZoBQQEQ5w0CQCADLQBwQQRGDQAgAykDcCIUQv8Bg0IEUg0BCyADQYABaiAMQShqIAIQ9yMgAy0AgAFBBEYNCyADKQOAASIUQv8Bg0IEUQ0LCyAUQv8Bg0IEUg0IDAoLIAwoAkQhDSADQfAAaiACIAwoAkAiC0EAELACAkACQCADLQBwQQRGDQAgAykDcCIUQv8Bg0IEUg0BCwJAIAtFDQAgA0HwAGogAiALEN8dIAMtAHBBBEYNACADKQNwIhRC/wGDQgRSDQELIAMgDTYCeCADIAs2AnQgA0EBNgJwAkAgAigCSEUNACADQdgAaiACQQAgA0ECQQEgA0HwAGoQ9gkgAy0AWEEERg0AIAMpA1giFEL/AYNCBFINAQsgA0EANgKAASADQfAAaiACIANBgAFqQZXumgFBAxDmDQJAIAMtAHBBBEYNACADKQNwIhRC/wGDQgRSDQELAkACQAJAIAxBCGoiCygCAEF/ag4DAQABAAsgA0HwAGogAhDUECADLQBwQQRGDQEgAykDcCIUQv8Bg0IEUQ0BDAILIAItAF0NACADQfAAaiACENQQIAMtAHBBBEYNACADKQNwIhRC/wGDQgRSDQELIANB8ABqIAsgAhCwBgJAIAMtAHBBBEYNACADKQNwIhRC/wGDQgRSDQELAkAgAi0AXQ0AIANB8ABqIAIQ1BAgAy0AcEEERg0AIAMpA3AiFEL/AYNCBFINAQsgA0HwAGogAiADQYABakGW7ZoBQQEQ5w0CQCADLQBwQQRGDQAgAykDcCIUQv8Bg0IEUg0BCyADQfAAaiACIANBgAFqQZftmgFBARDnDQJAIAMtAHBBBEYNACADKQNwIhRC/wGDQgRSDQELAkAgAi0AXQ0AIANB8ABqIAIQ1BAgAy0AcEEERg0AIAMpA3AiFEL/AYNCBFINAQsgA0HwAGogDEEoaiACEOgfAkAgAy0AcEEERg0AIAMpA3AiFEL/AYNCBFINAQsgAigCSEUNCiADQfAAaiACEJgTIAMtAHBBBEYNCiADKQNwIhRC/wGDQgRRDQoLIBRC/wGDQgRSDQcMCQsgDCgCZCENIANBgAFqIAIgDCgCYCILQQAQsAICQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQQLAkAgC0UNACADQYABaiACIAsQ3x0gAy0AgAFBBEYNACADKQOAASIUQv8Bg0IEUg0ECyADIA02AogBIAMgCzYChAEgA0EBNgKAASACKAJIRQ0CIANB2ABqIAJBACADQQJBASADQYABahD2CQJAIAMtAFhBBEYNACADKQNYIhRC/wGDQgRSDQQLIAIoAkhFDQIgA0EANgJgIANCgICAgMAANwJYIAwoAmghCyADIANB2ABqNgKAASALIANBgAFqEKULIAMoAmAhDSADKAJcIQsgAyADKAJYNgKIASADIAs2AoABIAMgCyANQQxsIg1qIhI2AowBA0ACQAJAIA1FDQACQCALKAIAIg5BgICAgHhGDQAgC0EMaiERIAtBBGoiECgCACELIAIoAkhFDQIgA0HoAGogAiAQKQIAIhSnIhAgFEIgiKciDyAQIA9BARDVByADLQBoQQRGDQIgAykDaCIUQv8Bg0IEUQ0CIAMgETYChAEgDiALEL8lIANBgAFqEP4XDAcLIAtBDGohEgsgAyASNgKEASADQYABahD+FwwECyAOIAsQvyUgDUF0aiENIBEhCwwACwsgA0GAAWogASACENsIIAMtAIABQQRGDQcgAykDgAEiFEL/AYNCBFENBwwGCyADQYABaiACIAwoAigiDygCMEEAELACAkACQCADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQELAkAgDygCMCILRQ0AIANBgAFqIAIgCxDfHSADLQCAAUEERg0AIAMpA4ABIhRC/wGDQgRSDQELIANBATYCgAEgAyAPKQIwNwKEAQJAIAIoAkhFDQAgA0HwAGogAkEAIANBAkEBIANBgAFqEPYJAkAgAy0AcEEERg0AIAMpA3AiFEL/AYNCBFINAgsgAigCSEUNACADQQA2AnggA0KAgICAwAA3AnAgDygCCEEGdCELIA8oAgQhDSADIANB8ABqNgKAAQJAA0AgC0UNASALQUBqIQsgDSADQYABahClCyANQcAAaiENDAALCyADKAJ4IQ0gAygCdCELIAMgAygCcDYCiAEgAyALNgKAASADIAsgDUEMbCINaiITNgKMAQNAAkACQCANRQ0AAkAgCygCACIOQYCAgIB4Rg0AIAtBDGohESALQQRqIhAoAgAhCyACKAJIRQ0CIANB2ABqIAIgECkCACIUpyIQIBRCIIinIhIgECASQQEQ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QQEQ5w0CQCADLQBAQQRGDQAgAykDQCINQv8Bg0IEUg0BCwJAIAItAF0NACADQcAAaiACENQQIAMtAEBBBEYNACADKQNAIg1C/wGDQgRSDQELIANBwABqIAFBJGogAhBTAkAgAy0AQEEERg0AIAMpA0AiDUL/AYNCBFINAQsgA0HAAGogAiADQShqEOUNIAMtAEBBBEYNBiADKQNAIg1C/wGDQgRRDQYLIA1C/wGDQgRRDQUgACANNwIADAYLIANBKGogAUEEaiACEKIEIAMtAChBBEYNBCADKQMoIg1C/wGDQgRRDQQgACANNwIADAULIANBKGogAUEEaiACENUIIAMtAChBBEYNAyADKQMoIg1C/wGDQgRRDQMgACANNwIADAQLIANBKGogAiABKAIEEL8EAkAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFENACAAIA03AgAMBAsgA0EANgIoIANBwABqIAIgA0EoahDlDQJAIAMtAEBBBEYNACADKQNAIg1C/wGDQgRRDQAgACANNwIADAQLIANBEGogARCeDSADKAIUIgFFDQIgA0EoaiACIAEQ3x0gAy0AKEEERg0CIAMpAygiDUL/AYNCBFENAiAAIA03AgAMAwsCQCABLQAkRQ0AIANBADYCKCADQRhqIAIgA0EoakH57ZoBQQcQ5g0CQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ1BAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsCQCAGLQBFRQ0AIANBADYCKCADQRhqIAIgA0EoakGA7poBQQUQ5g0CQCADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0CCyADQShqIAIQ1BAgAy0AKEEERg0AIAMpAygiDUL/AYNCBFINAQsgA0EANgJAIANBKGogAiADQcAAakGF7poBQQgQ5g0CQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0BCwJAAkAgBi0ARA0AIANBKGogAhDUECADLQAoQQRGDQEgAykDKCINQv8Bg0IEUQ0BDAILIANBKGogAiADQcAAakH47ZoBQQEQ5w0CQCADLQAoQQRGDQAgAykDKCINQv8Bg0IEUg0CCyACLQBdDQAgA0EoaiACENQQIAMtAChBBEYNACADKQMoIg1C/wGDQgRSDQELIANBKGogByACEIMW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ASgCsAEhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtALgBIgVBEkcNACABKAKAASIGQYHAAHFBgMAARw0BIAEoAogBIQYgAUELNgKIASABQYwBaiEFAkACQCAGQQtGDQAgAiABKAKgATYC8AEgAiABKQKYATcD6AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAGNgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAQsgAkHoAWogARDOAQsgASABKAK0ASIGNgKsASABIAEoArABNgKoASADIAIpA+gBNwIAIAMgAigC8AE2AggCQAJAAkACQAJAIAEtALgBQdEARw0AIAEoAogBIQYgAUELNgKIASAGQQtGDQEgAiABKAKgATYC8AEgAiABKQKYATcD6AECQCABKAIIQQpGDQAgAUEIahC1CwsgASAGNgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAgsCQCABKAKAAUGA4ABxQYDgAEcNACACQbqBgIB4NgLoASABIAQgBiACQegBahDcHQsgASABKAJ4IgZB/9//v39xQYAgcjYCeCACQRBqIAEoArABIAEQ7gMgAigCECEHIAEgBjYCeEEBIQYgAigCFCEIAkAgB0EBcUUNACAIIQMMFwsCQAJAAkACQAJAIAEtALgBIgdBE0cNACABKAKIASEHIAFBCzYCiAEgB0ELRg0BIAIgASgCoAE2AvABIAIgASkCmAE3A+gBAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBzYCCCABIAUpAgA3AgwgASAFKAIINgIUDAILIAEoArQBIQMgASgCsAEhBSACQdgBaiAHELIlIAJBjwKtQiCGQZrkmgGthDcDiAIgAkHoAWpBzZWAASACQYgCahDICCACIAIpAtgBNwL0ASACIAIoAuABNgL8ASAFIAMgAkHoAWoQsxshAyABLQC4AUGiAUcNAiABIAEQ7w0QhgkMAgsgAkHoAWogARDOAQsgASkDsAEhCSADIAIpA+gBNwIAIAMgAigC8AE2AgggASAJNwOoASACQQhqIAEQhgEgAigCDCEFIAIoAghBAXFFDQEgBSEDCyAIEKMEIAhB4ABBCBDOFAwXCyAFDQIgCCEDQQEhBgwWCyACQegBaiABEM4BCyABKQOwASEJIAMgAikD6AE3AgAgAyAC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jSQAC0EIQcAAEI0kAAtBCEEwEI0kAAtBCEHAABCNJAALQQhBMBCNJAALQQhBwAAQjSQAC0EIQTAQjSQAC0EIQcAAEI0kAAtBCEHAABCNJAALIAJBoAFqJAALtSACC38CfiMAQYACayICJAAgAkHgAWogASgCCCIDQQRBHBCrESACKALkASEEAkACQAJAAkACQCACKALgAUEBRg0AIAJBADYCCCACIAIoAugBIgU2AgQgAiAENgIAIAEoAgAhBCACIAEoAgQiASADQRxsaiIGNgLsASACIAQ2AugBIAIgATYC4AECQCADDQAgAiABNgLkASACQeABahDLGAwDCyACQQxqQQRqIQdBACEDA0ACQAJAAkAgASgCACIIQQhGDQAgByABQRRqKQIANwIQIAcgAUEMaikCADcCCCAHIAFBBGopAgA3AgAgAkEANgIMIAIoAhAhCSACKAIUIQogAigCGCEEIAIpAhwhDRD6FyELIAIoAiQhDCACIAs2AiQgAkEMahC3ISAIQQdGDQECQCADIAIoAgBHDQAgAhCRGiACKAIEIQULIAUgA0EcbGoiCyAMNgIYIAsgDTcCECALIAQ2AgwgCyAKNgIIIAsgCTYCBCALIAg2AgAgAiADQQFqIgM2AggMAgsgAUEcaiEGDAQLAkACQAJAIAQgAigCACADa00NACACIAMgBEEEQRwQ4hogAigCCCEDDAELIARFDQELIAIoAgQhBSAEQRxsIgtFDQAgBSADQRxsaiAKIAv8CgAACyACIAMgBGoiAzYCCCAJIApBBEEcENUTIAxBNEEEEM4UCyABQRxqIgEgBkcNAAwCCwsgBCACKALoARDpIAALIAIgBjYC5AEgAkHgAWoQyxgCQAJAAkACQAJAAkACQAJAIAMOAggAAQsgAkEANgIIIAIoAgQiASgCACIDQQhGDQEgACADNgIAIAAgASkCBDcCBCAAIAEpAgw3AgwgACABKQIUNwIUDAgLIAIoAgQhAUEAIQQgAkEANgLoASACQoCAgIDAADcC4AEgASADQRxsaiEJQQEhA0EEIQoCQAJAA0AgASgCAEEBRw0BIAJBmAFqIAFBBGooAgAgAUEIaigCACILELgIIAItAJgBDQECQAJAIAIoApwBIgdBgAFPDQBBASEIDAELAkAgB0GAEE8NAEECIQgMAQtBA0EEIAdBgIAESRshCAsgCyAIRw0BAkAgA0F/aiACKALgAUcNACACQeABahCdGiACKALkASEKCyAKIARqIAc2AgAgBEEEaiEEIAIgAzYC6AEgA0EBaiEDIAFBHGoiASAJRw0ACyACKALgASIIQYCAgIB4Rg0BIAJBmAFqIAIpAuQBIg1CHoinQfz///8HcSIEQQJ2QQRBCBCrESACKAKcASEDIAIoApgBQQFGDQMgAkHgAWpBBGohCiANpyEJIAJBADYCWCACIAIoAqABIgE2AlQgAiADNgJQQQAhCwJAIARFDQAgBEF8akECdkEBaiELIAkhAwNAIAFBBGogAygCACIHNgIAIAEgBzYCACABQQhqIQEgA0EEaiEDIARBfGoiBA0ACwsgCCAJQQRBBBDVEyACIAIpA1A3A5gBIAIgCzYCoAEgAiALRToApAEgAkGYAWoQ1wUgCiACKQOgATcCCCAKIAIpA5gBNwIAIAJBADYC4AEgACACQeABahDWCgwJCyACKALgASACKALkAUEEQQQQ1RMLIAIoAgQhCiACKAIIIQFBACEDIAJBADYC6AEgAkKAgICAEDcC4AEgAUUNAiAKIAFBHGxqIQlBASELIAohAQNAAkAgASgCAEEBRg0AIAIoAuABIQQMBgsgAigC4AEhBCABQQhqKAIAQQFHDQUgAUEEaigCAC0AACEHAkAgAyAERw0AIAJB4AFqENETIAIoAuQBIQsLIAsgA2ogBzoAACACIANBAWoiAzYC6AEgAUEcaiIBIAlHDQALIAIoAuABIgxBgICAgHhGDQUgAikC5AEhDQwDC0GI2IkBELAjAAsgAyACKAKgARDpIAALIAIpAuQBIQ1BACEMCyACQZgBaiANQiCIIg6nIgtBAUECEKsRIAIoApwBIQQCQCACKAKYAUEBRg0AIAJB5AFqIQggDachB0EAIQMgAkEANgJYIAIgAigCoAEiATYCVCACIAQ2AlACQCAOUA0AQQAhAwNAIAFBAWogByADai0AACIEOgAAIAEgBDoAACABQQJqIQEgCyADQQFqIgNHDQALCyAMIAdBAUEBENUTIAIgAikDUDcDmAEgAiADNgKgASACIANFOgCkASACQZgBahDJBSAIIAIpA6ABNwIIIAggAikDmAE3AgAgAkEBNgLgASAAIAJB4AFqENYKDAQLIAQgAigCoAEQ6SAACyAEIAtBAUEBENUTCyACQQA2AugBIAJCgICAgMAANwLgASACQdAAaiACQeABahDHGCACQeABakEEciEMIAJBmAFqQQRqIQUgCiELAkACQANAIAsoAgBBAkcNAgJAAkAgCygCBEEBRw0AIAtBEGooAgAiA0EBdCEIIAtBDGooAgAhAQJAIANFDQAgASAIaiIEQX5qRQ0AIARBf2osAABBAEgNBQsgAkHgAWogA0H/////B3EiB0EEQQgQqxEgAigC5AEhBiACKALgAUEBRg0DQQAhBCACQQA2ApABIAIgAigC6AEiAzYCjAEgAiAGNgKIAQJAIAhFDQBBACEEA0AgAyABLQAANgIAIANBBGogAUEBai0AADYCACADQQhqIQMgAUECaiEBIAcgBEEBaiIERw0ACwsgAiACKQOIATcD4AEgAiAENgLoASACIARFOgDsASACQeABahDXBSACIAwpAgA3A9ABIAIgDCgCCDYC2AEgAigC4AEiAUGAgICAeEYNBCAFIAIoAtgBNgIIIAUgAikD0AE3AgAgAiABNgKYASACQdAAaiACQZgBahDiDCABIAIoApwBQQRBCBDVEwwBCyACQdAAaiALQQhqEOIMCyALQRxqIgsgCUcNAAsgAiACKQJYNwI0IAIgAikCUDcCLCACQQA2AiggACACQShqENYKDAMLIAYgAigC6AEQ6SAACyACKAJQIAIoAlRBBEEIENUTIAJBADYC6AEgAkKAgICAEDcC4AEgAkHQAGogAkHgAWoQxhggAkHgAWpBBHIhDCACQZgBakEEaiEFAkACQAJAAkADQCAKKAIAQQJHDQQCQAJAIAooAgRBAUcNACACQdAAaiAKQQhqEL4MDAELIApBEGooAgAiA0EDdCEHIApBDGooAgAhAQJAIANFDQAgASAHaiIEQXhqRQ0AIARBfGooAgBB/wBLDQYLIAJB4AFqIANB/////wFxIghBAUECEKsRIAIoAuQBIQsgAigC4AFBAUYNAkEAIQQgAkEANgKQASACIAIoAugBIgM2AowBIAIgCzYCiAECQCAHRQ0AQQAhBANAIAEoAgAiB0GAAk8NBSABQQRqKAIAIgtBgAJPDQYgAyAHOgAAIANBAWogCzoAACADQQJqIQMgAUEIaiEBIAggBEEBaiIERw0ACwsgAiACKQOIATcD4AEgAiAENgLoASACIARFOgDsASACQeABahDJBSACIAwpAgA3A9ABIAIgDCgCCDYC2AEgAigC4AEiAUGAgICAeEYNBSAFIAIoAtgBNgIIIAUgAikD0AE3AgAgAiABNgKYASACQdAAaiACQZgBahC+DCABIAIoApwBQQFBAhDVEwsgCkEcaiIKIAlHDQALIAIgAikCWDcCSCACIAIpAlA3AkAgAkEBNgI8IAAgAkE8ahDWCgwFCyALIAIoAugBEOkgAAtB0P2aAUErIAJB/wFqQZjihgFBmLGFARDPFAALQdD9mgFBKyACQf8BakGY4oYBQaixhQEQzxQACyACKAJQIAIoAlRBAUECENUTAkACQAJAAkAgAigCCCIBQQJJDQAgAigCBCIDKAIAQQZHDQAgAygCDCIERQ0AIAMoAgghDCADIAFBHGxqIQlBACEBIAMhCkEBIQcDQAJAAkAgAUEBcUUNACAKIQEgCiAJRw0BDAULIAcgCSAKa0Ecbk8NBCAKIAdBHGxqIQELIAEoAgBBBkcNASABKAIMIgdFDQEgAUEcaiEKIAcgBCAHIARJGyEIIAEoAgghAUEAIQsgDCEHAkACQANAIAcgARCBBUUNASAHQRxqIQcgAUEcaiEBIAggC0EBaiILRw0ACyAIIQQMAQsgCyAESw0DIAshBAtBACEHQQEhASAEDQALCyACIAIoAgg2AlwgAiACKQIANwJUDAILQQAgCyAEQazuiQEQiwoACyACQQA2AnggAkKAgICAwAA3AnAgAkEANgKEASACQoCAgIDAADcCfCACKAIAIQEgAiAJNgKUASACIAE2ApABIAIgAzYCiAEgAkGYAWpBBGohCkEAIQdBASELQQQhBgJAA0ACQAJAIAMgB2oiASgCACIIQQhGDQAgCiABQRRqKQIANwIQIAogAUEMaiIMKQIANwIIIAogAUEEaiIFKQIANwIAIAJBADYCmAEgAiAMKAIANgLoASACIAUpAgA3A+ABIAJBmAFqELchIAhBBkYNAUGs85oBQShBnO6JARCkIQALIAFBHGohCQwCCyACIAIoAugBIgg2AsABIAIgAikD4AE3A7gBAkACQCAIIARJDQAgAkHgAWogCCAEayIIQQRBHBCrESACKALkASEMIAIoAuABQQFHDQEgDCACKALoARDpIAALIAQgCBD0FgALIAIgAigC6AEiBTYCyAEgAiAMNgLEASACIAg2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IAEQ5QIgASgCwAEhCQJAAkAgAUE8EKwOIgYNAAJAIAEtAMgBIgZBW2oiCkESSw0AQQEgCnRBg4AacUUNACADQaACaiABIAEoAsABEMIaIAcgAygCqAI2AgggByADKQKgAjcCACABLQDIASEGCyADQRM6AFggBkH/AXFBE0YNASABKALEASEIIAEoAsABIQkgA0HQA2ogBhDDJSADQY8CrUIghiADQdgAaq2ENwMYIANBoAJqQc2VgAEgA0EYahD3HiADIAMpAtADNwKsAiADIAMoAtgDNgK0AiAJIAggA0GgAmoQsxshBiABLQDIAUGiAUcNACABEMoUIQggARDeESABIAgQgxQLIABBgYCAgHg2ApABIAAgBjYCACADQcABahDQIgwKCyACDQEgASgCwAEhCiABKALEASEGIANBoAJqIAEQhgIgASAGNgK8ASABIAo2ArgBIAcgAykCoAI3AgAgByADKAKoAjYCCAwCCyADQRhqQQRyIANBoAJqQQRyQSj8CgAAIAMgAy0AzwI6AEcgAyADLwDNAjsARSADIAk6AEQgAyAINgIYQQAhCwJAIAEtAIEBQSBxRQ0AIAEtAMgBQf8BcUESRw0AIANBoAJqIAEQxAUgASAGQQFyNgJ4IANBEGogARC0BSADKAIUIQsCQAJAIAMoAhBBAXENACABEN4RAkAgCw0AIAEgA0GgAmoQshQMAgsgASABKAJ4QX5xIAZBAXFyNgJ4IANBoAJqEJ8iDAILIANBATYC0AMgAyALNgLUAyABIANBoAJqELIUIANB0ANqEOkfC0EAIQsLIANBoAJqQQhBCEHYABCBDyADKAKkAiEGIAMoAqACQQFGDQIgAyADKAKoAiIMNgKIASADIAY2AoQBIAFBvAFqIQ1BjwKtQiCGIh9Bg/WaAa2EISAgA0GgAmpBDGohDiADQbQDaiEPIANBoAJqQSRqIRAgA0HYAGpBCGohEUEAIQlBACEIAkADQCADIAg2AowBIAEQtBYCQCABLQDIASIGQXBqDgQCAAACAAsCQAJAIAZBAkYNACABKALAASESIAEQgxIgA0GgAmogARCmCyADKAKgAiEGIAMtALQCQQJGDQkgAygCrAIhCiADKAKoAiETIAMoAqQCIRQCQAJAIAEtAMgBQQlHDQAgARDeESABEIMSIANBoAJqIAEQpgsCQCADLQC0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QQAhBwJAA0AgAiAGKAIAIhI2AlQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAlB/wFxQXFqDg4BBgYGBgYGBgYGBgYGAAYLIAEoAogBIQQgAUELNgKIASAEQQtGDQEgAiAMKAIINgKwASACIAwpAgA3A6gBAkAgCygCAEEKRg0AIAsQtQsLIAsgBDYCACAKIAUpAgA3AgAgCiAFKAIINgIIDAILIAEoAogBIQQgAUELNgKIASAEQQtGDQIgAiAMKAIINgKwASACIAwpAgA3A6gBAkAgCygCAEEKRg0AIAsQtQsLIAsgBDYCACAKIAUpAgA3AgAgCiAFKAIINgIIDAMLIAJBqAFqIAEQzgELIAEgASgCtAEiEzYCrAEgASABKAKwATYCqAEgBiACKQOoATcCACAGIAIoArABNgIIIAEgASgCeCIUQcAAcjYCeCABLQCBAUEgcUUNECABLQC4AUH/AXFBPkcNECABEPIEIgRFDRBBACEJDBELIAJBqAFqIAEQzgELIAEpA7ABIRkgBiACKQOoATcCACAGIAIoArABNgIIIAEgGTcDqAEgAkGoAWogARDgASACKAKsASEEIAIoAqgBIglBBUcNASACIAQ2AjwgAkEBNgI4DBILIAJBqAFqIAEQpAggAi0AqAENASACLQCpASETIAEoAqwBIRUgASgCqAEhFiACIAEtALgBIgk6AH8gAkGoAWogARDgASACKAKsASEEAkAgAigCqAEiFEEFRw0AIAIgBDYCPCACQQE2AjhBAUUNEAwSCyAOIA8pAxA3AxAgDiAPKQMINwMIIA4gDykDADcDACACIAQ2AoQBIAIgFDYCgAEgAS0AuAEhBAJAAkACQAJAAkACQAJAAkACQCABLQCBAUEgcUUNACAEDmsGAgICBwICBwIBBwICAgIHAgICAgICAgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcCAgICAgICAgIHAgICAgICAgICAgICAgIHAgICAgICAgICBwICAgICBwILIAQOCgUGBgYGBgYGBgAGCyABKAKIASEEIAFBCzYCiAEgBEELRg0BIAIgDCgCCDYCsAEgAiAMKQIANwOoAQJAIAsoAgBBCkYNACALELULCyALIAQ2AgAgCiAFKQIA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AkGoAWogARDOAQsgASABKAK0ASIUNgKsASABIAEoArABIhI2AqgBIAYgAikDqAE3AgAgBiACKAKwATYCCCARQQxqIRFBASEEIAEtALgBIglBA0cNAQwECwsgASgCtAEhBiABKAKwASEFIAJByABqIAkQsiUgAkGPAq1CIIZBnOSaAa2ENwOAASACQagBakHNlYABIAJBgAFqEK8QIAIgAikCSDcCtAEgAiACKAJQNgK8ASAFIAYgAkGoAWoQsxshBCABLQC4AUGiAUcNACABEL8UIQYgARCSECABIAYQhgkLIABBMjYCACAAIAQ2AgQgAkEsahCyFSACKAIsIAIoAjAQ5yMMAgsgByACKAKwARDpIAALIAEoAogBIQcgAUELNgKIAQJAAkAgB0ELRg0AIAIgASgCoAE2ArABIAIgASkCmAE3A6gBAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBzYCCCABIAUpAgA3AgwgASAFKAIINgIUDAELIAJBqAFqIAEQzgELIAEgASgCtAEiBTYCrAEgASABKAKwATYCqAEgBiACKQOoATcCACAGIAIoArABNgIIAkAgBEUNACACQagBaiABQdQBaiADIBIgFBCuBwsgAEEONgIAIAAgAikCLDcCBCAAIAIoAjQ2AgwgACAFNgIUIAAgAzYCEAsgAkHgAWokAAvbHgEGfwJAAkACQAJAAkACQAJAAkACQAJAQQAgACgCACICQXxqIgMgAyACSxsOCQABAgMEBQkHCAALAkAgAkEDRw0AIAAoAgQiAiABEFwgAigCAEEaRw0AIAEgAkEIahCLCyIDRQ0AIAIQhAIgAiADKQM4NwM4IAIgAykDMDcDMCACIAMpAyg3AyggAiADKQMgNwMgIAIgAykDGDcDGCACIAMpAxA3AxAgAiADKQMINwMIIAIgAykDADcDACADQcAAQQgQzhQLAkAgACgCSCICRQ0AIAAoAkQiBCACQQZ0aiEFA0ACQAJAIAQoAgBBB0YNAAJAIARBOGooAgAiAkUNACACQQxsIQYgBEE0aigCACEHA0AgBygCACICIAEQXAJAIAIoAgBBGkcNACABIAJBCGoQiwsiA0UNACACEIQCIAIgAykDODcDOCACIAMpAzA3AzAgAiADKQMoNwMoIAIgAykDIDcDICACIAMpAxg3AxggAiADKQMQNwMQIAIg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IQ0MAAsLQQAhCgsgAkHAAGokACAKC8sdAQZ/AkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAIgJBdGpBByACQQtLGw4mHwABAgMEBQYHCAkKCwwfHw0ODxARHxITFB8fFRYXGBkaGxwfHh8fCyAAKAIMIgJFDR4gAkEEdCECIAAoAgghAANAAkAgACgCAEECRg0AIAEtAAANACAAQQxqKAIAIAEQmQELIABBEGohACACQXBqIgINAAwfCwsgACgCDCICRQ0dIAJBDGwhAiAAKAIIIQADQAJAAkAgACgCACIDDQAgAEEEaigCACABEJwFDAELIAEtAAANACADIAEQmQELIABBDGohACACQXRqIgINAAweCwsCQCAAKAIgIgRBCGooAgAiAkUNACAEQQRqKAIAIgAgAkEGdGohBQNAAkAgACIDQThqKAIAIgBFDQAgAS0AAEEBcQ0AIABBDGwhAiADQTRqKAIAIQADQAJAIAEtAAANACAAKAIAIAEQmQELIABBDGohACACQXRqIgINAAsLIAMgARDjCSADQcAAaiIAIAVHDQALCwJAIARBFGooAgAiAEUNACABLQAAQQFxDQAgAEEMbCECIARBEGooAgAhAANAAkAgAS0AAA0AIAAoAgAgARCZAQsgAEEMaiEAIAJBdGoiAg0ACwsgBCgCGEGAgICAeEYNHCABIARBHGooAgAgBEEgaigCABDvGg8LIAEtAAANGyAAKAIEIQAMGQsgAS0AAA0aIAAoAgwhAAwYCyABLQAADRkgACgCBCABEJkBIAEtAAANGSAAKAIIIQAMFwsCQAJAIAJBC0cNAAJAAkAgACgCBA4DAAEDAAsgACgCECICRQ0CIAJBKGwhAyAAKAIMIQIDQAJAIAIoAgBBB0YNACACIAEQ4wkLIAJBKGohAiADQVhqIgMNAAwDCwsgACgCECICRQ0BIAAoAgwiAyACQThsaiEEA0AgAyICQThqIQMCQAJAAkACQCACKAIADgMAAQIACwJAIAIoAghBA0cNACABLQAAQQFxDQAgAigCDCABEJkBCwJAAkACQAJAAkAgAigCKCICKAIADgcHAAECAwcEBwsgAkEMaigCACIFRQ0GIAVBKGwhBSACQQhqKAIAIQIDQAJAIAIoAgBBB0YNACACIAEQ4wkLIAJBKGohAiAFQVhqIgUNAAwHCwsgAigCBCABEOMJDAULIAJBDGooAgAiBUUNBCAFQThsIQYgAkEIaigCACEHQQAhAgNAAkACQAJAAkAgByACaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACABLQAAQQFxDQAgBUEMaigCACABEJkBCyAFQShqKAIAIAEQ4wkMAgsgBUEwaigCACIFRQ0BIAEtAABBAXENASAFIAEQmQEMAQsgBUEEaigCACABEOMJCyAGIAJBOGoiAkcNAAwFCwsgAigCBCABEOMJIAEtAAANAyACKAIIIAEQmQEMAwsgAS0AAA0CIAIoAgQgARCZAQwCCyACKAIwIgJFDQEgAS0AAEEBcQ0BIAIgARCZAQwBCwJAAkACQAJAAkAgAigCBCICKAIADgcFAAECAwUEBQsgAkEMaigCACIFRQ0EIAVBKGwhBSACQQhqKAIAIQIDQAJAIAIoAgBBB0YNACACIAEQ4wkLIAJBKGohAiAFQVhqIgUNAAwFCwsgAigCBCABEOMJDAMLIAJBDGooAgAiBUUNAiAFQThsIQYgAkEIaigCACEHQQAhAgNAAkACQAJAAkAgByACaiIFKAIADgMAAQIACwJAIAVBCGooAgBBA0cNACABLQAAQQFxDQAgBUEMaigCACABEJkBCyAFQShqKAIAIAEQ4wkMAgsgBUEwaigCACIFRQ0BIAEtAABBAXENASAFIAEQmQEMAQsgBUEEaigCACABEOMJCyAGIAJBOGoiAkcNAAwDCwsgAigCBCABEOMJIAEtAAANASACKAIIIAEQmQEMAQsgAS0AAA0AIAIoAgQgARCZAQsgAyAERw0ADAILCwJAAkACQAJAAkACQAJAAkACQAJAIAIOCwoAAQIDBAUGBwgKCgsgAS0AAA0JIAAoAiggARCZASAAKAIIQQJHDQkgAS0AAEEBcQ0JIABBDGohAgwICyAAKAIIQQFHDQggAS0AAEEBcQ0IIABBDGohAgwHCyABLQAADQcgAEEEaiECDAYLAkAgACgCBCICKAIAIgNBA0cNACABLQAAQQFGDQcgAigCECABEJkBIAJBDGooAgAiA0UNByABLQAAQQFxDQcgA0EEdCEDIAJBCGooAgBBDGohAgNAAkAgAS0AAA0AIAIoAgAgARCZAQsgAkEQaiECIANBcGoiAw0ADAgLCyABLQAADQYgAigCICABEJkBIANBAkcNBiABLQAAQQFxDQYgAkEEaiECDAULIAEtAAANBSAAQQRqIQIMBAsgAS0AAA0EIABBBGohAgwDCyABLQAADQMgAEEEaiECDAILIAEtAAANAiAAQQRqIQIMAQsgAS0AAA0BIABBBGohAgsgAigCACABEJkBCyABLQAADRggACgCOCEADBYLIAEtAAANFyAAKAIoIAEQmQEgACgCCEECRw0XIAEtAABBAXENFyAAKAIMIQAMFQsgACgCCEEBRw0WIAEtAABBAXENFiAAKAIMIQAMFAsgAS0AAA0VIAAoAgQgARCZASABLQAADRUgACgCCCABEJkBIAEtAAANFSAAKAIMIQAMEwsCQCAALQAYQQVHDQACQAJAIAAoAhAiAigCAEEaRw0AIAJBCGpBt+SaAUEEEKkdDQELIAEtAAANASACIAEQmQEMAQsgAUEBOgAACyAAKAIMIgJFDRQgAS0AAEEBcQ0UIAJBBHQhAiAAKAIIQQxqIQADQAJAIAEtAAANACAAKAIAIAEQmQELIABBEGohACACQXBqIgINAAwVCwsCQCABLQAADQAgACgCECABEJkBCyAAKAIEQYCAgIB4Rg0TIAAoAgggACgCDCABELoYDwsgACgCDCICRQ0SIAEtAABBAXENEiACQQJ0IQIgACgCCCEAA0ACQCABLQAADQAgACgCACABEJkBCyAAQQRqIQAgAkF8aiICDQAMEwsLIAAoAgwiAkUNESABLQAAQQFxDREgAkECdCECIAAoAgghAANAAkAgAS0AAA0AIAAoAgAgARCZAQsgAEEEaiEAIAJBfGoiAg0ADBILC0EBIQICQCABLQAADQAgACgCBCABEJkBIAEtAAAhAgsgACgCCCIAQQhqKAIAIgNFDRAgAkEBcQ0QIANBAnQhAiAAQQRqKAIAIQADQAJAIAEtAAANACAAKAIAIAEQmQELIABBBGohACACQXxqIgINAAwRCwsCQCAAKAIMIgJFDQAgAkEobCEDIAAoAgghAgNAIAIgARDjCSACQShqIQIgA0FYaiIDDQALCwJAIAAoAhAiACgCAEGAgICAeEcNACABLQAADRAgACgCBCEADA4LIAAoAggiAkUNDyABLQAAQQFxDQ8gAkEwbCECIAAoAgQhAANA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AykCTDcCHCADIAMpAkQ3AhQgAyADLwBVOwAlIAMgAy0AVzoAJyADIAc6ACQgAyAGNgIQQQAhBgJAAkACQAJAAkACQAJAAkACQCABLQCBAUEgcUUNAAJAIAdBAkYNACADQTBqIANBEGoQ0gggAygCMEUNACADKAI4IQcgAygCNCEIIANBrYGAgHg2AkAgASAIIAcgA0HAAGoQ3B0LIAEtAIEBQSBxRQ0AQQAhBiABLQC4ASIJQRJHDQEgASABKAJ4IgZBgCByNgJ4IANBAToAQCADQQE6ADAgA0EIaiADQTBqIANBwABqIAEQ3wEgAygCCCEHIAEgBjYCeCADKAIMIQYgB0EBcQ0CCyABLQC4ASEJCyABQbABaiEHAkAgCUH/AXFB2QBGDQBBACEKIANBADYCKCADQQA2AixBACELDAQLIAEoAogBIQggAUELNgKIASAIQQtGDQEgAyABKAKgATYCSCADIAEpApgBNwNAAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCDYCCCABIAUpAgA3AgwgASAFKAIINgIUDAILIABBAzoAFCAAIAY2AgAMBQsgA0HAAGogARDOAQsgASkDsAEhESAHIAMpA0A3AgAgByADKAJINgIIIAEgETcDqAEgA0HAAGogARCrCSADKAJEIQsCQCADKAJAIggNACAAQQM6ABQgACALNgIADAMLIAEtALgBIQkCQCABLQCBAUEgcUUNACAJQf8BcUEHRw0AIAEoAogBIQkgAUELNgKIAQJAAkAgCUELRg0AIAMgASgCoAE2AkggAyABKQKYATcDQAJAIAEoAghBCkYNACABQQhqELULCyABIAk2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyADQcAAaiABEM4BCyABKQOwASERIAcgAykDQDcCACAHIAMoAkg2AgggASARNwOoASADQcAAaiABEPIDIAMoAkQhCQJAIAMoAkAiDEGAgICAeEcNACAAQQM6ABQgACAJNgIAAkAgC0UNACALEOobIAsoAgAgC0EEaigCABDeIyALQRRBBBDOFAsgCBCJAiAIQcAAQQgQzhQMBAsCQCADKAJIIgpFDQAgCkEEdCENIAlBCGohDgNAIA5BfGooAgAhDyAOKAIAIRAgA0GYgYCAeDYCQCABIA8gECADQcAAahDcHSAOQRBqIQ4gDUFwaiINDQALCyAJIAoQnA8gDCAJEOAjIAEtALgBIQkLIAMgCDYCKCADIAs2AiwCQCAJQf8BcUHZAEYNACAIIQoMAQsgASgCiAEhCSABQQs2AogBAkACQCAJQQtGDQAgAyABKAKgATYCSCADIAEpApgBNwNAAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCTYCCCABIAUpAgA3AgwgASAFKAIINgIUDAELIANBwABqIAEQzgELIAEgASgCtAEiCTYCrAEgASABKAKwASIMNgKoASAHIAMpA0A3AgAgByADKAJINgIIIANBloGAgHg2AkAgASAMIAkgA0HAAGoQ3B0gA0HAAGogARCrCSADKAJEIQkCQCADKAJAIgwNACAAQQM6ABQgACAJNgIADAILIAwgCRCwHSABLQC4ASEJIAghCgsCQAJAAkACQAJAIAEtAIEBQSBxRQ0AIAlB/wFxQYEBRg0BCyADQcAAakEEQQRBEBCBDyADKAJEIQ4gAygCQEUNASAOIAMoAkgQ6SAACyABKAKIASEIIAFBCzYCiAECQAJAIAhBC0YNACADIAEoAqABNgJIIAMgASkCmAE3A0ACQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAQsgA0HAAGogARDOAQsgASkDsAEhESAHIAMpA0A3AgAgByADKAJINgIIIAEgETcDqAEgA0HAAGogARDyAyADKAJEIQkgAygCQCIOQYCAgIB4Rw0BIABBAzoAFCAAIAk2AgAgCiEIDAMLIAMoAkghCUEAIQ0MAQsgAygCSCENCyABLQC4ASEMAkACQCABKAKAAUGAwABxIghFDQAgDEH/AXFBgQFHDQAgASgCiAEhCCABQQs2AogBAkACQCAIQQtGDQAgAyABKAKgATYCSCADIAEpApgBNwNAAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCDYCCCABIAUpAgA3AgwgASAFKAIINgIUDAELIANBwABqIAEQzgELIAEgASgCtAEiCDYCrAEgASABKAKwASIMNgKoASAHIAMpA0A3AgAgByADKAJINgIIIANBmYGAgHg2AkAgASAMIAggA0HAAGoQ3B0gA0HAAGogARDyAyADKAJEIQgCQCADKAJAIgxBgICAgHhHDQAgAEEDOgAUIAAgCDYCACAKIQgMAgsgCCADKAJIEJwPIAwgCBDgIyABKAKAAUGAwABxIQggAS0AuAEhDAsCQAJAIAhFDQAgDEH/AXFB2QBHDQAgASgCiAEhCCABQQs2AogBAkACQCAIQQtGDQAgAyABKAKgATYCSCADIAEpApgBNwNAAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCDYCCCABIAUpAgA3AgwgASAFKAIINgIUDAELIANBwABqIAEQzgELIAEgASgCtAEiCDYCrAEgASABKAKwASIMNgKoASAHIAMpA0A3AgAgByADKAJINgIIIANBl4GAgHg2AkAgASAMIAggA0HAAGoQ3B0gA0HAAGogARCrCSADKAJEIQwCQCADKAJAIggNACAAQQM6ABQgACAMNgIAIAohCAwDCyADIAg2AjAgAyAMNgJAAkAgCkUNACADQcAAahC9HiADQTBqEP4hIAEtALgBIQwMAQsgA0EoahCmICADIAg2AigCQCAMRQ0AIANBLGoQvR4gAyAMNgIsIAwhCyABLQC4ASEMDAILIANBwABqEL0eIAEtALgBIQwMAQsgCiEICwJAAkACQCAMQf8BcUECRw0AIAEoAogBIQwgAUELNgKIAQJAAkAgDEELRg0AIAMgASgCoAE2AkggAyABKQKYATcDQAJAIAEoAghBCkYNACABQQhqELULCyABIAw2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyADQcAAaiABEM4BCyABKQOwASERIAcgAykDQDcCACAHIAMoAkg2AgggASARNwOoASAIRQ0BIAEgASgCeCIMQYCAgAJyNgJ4IANBwABqIAEQTyABIAw2AnggAygCRCEMIAMoAkAiCkGAgICAeEcNAiAAQQM6ABQgACAMNgIADAMLIAEoArQBIQUgASgCsAEhByADQTBqIAwQsiUgA0GPAq1CIIZBgvWaAa2ENwNYIANBwABqQc2VgAEgA0HYAGoQrxAgAyADKQIwNwJMIAMgAygCODYCVCAHIAUgA0HAAGoQsxshBQJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAEEDOgAUIAAgBTYCAAwCCyABIAEoAngiDEH///99cTYCeCADQcAAaiABEE8gASAMNgJ4IAMoAkQhDCADKAJAIgpBgICAgHhHDQAgAEEDOgAUIAAgDDYCAEEAIQgMAQsgAygCSCEQAkACQAJA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AXENACACKAKMASIDQQhqEOMDIANBIEEIEM4UCyAEQQFxDQMLQQEhBCACQYgBaiABQaT/mgFBAUEAEOMCIAItAIgBRQ0BIAIoAowBIQNBASEEDBALIAEoArABIQUgASgCiAEhAyABQQs2AogBIAFBjAFqIQYgAUGwAWohBAJAAkAgA0ELRg0AIAIgASgCoAE2ApABIAIgASkCmAE3A4gBAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgAzYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIAJBiAFqIAEQzgELIAEpA7ABIRggBCACKQOIATcCACAEIAIoApABNgIIIAEgGDcDqAEgAkGIAWogARCbBSACKAKQASEDIAIpA4gBIhhQDQIgAigClAEhB0EAIQggAS0AgQFBIHFFDQ4gAUEIaiEJIAEoAnghCkEKIQsgASgCGCEMIAEoAgQhDSABKAIAIQ4gAS0AHCEPAkAgASgCCCIQQQpGDQAgAkGIAWogCRCPBiACIAIpAowBNwOgAiACIAIoApQBNgKoAiACKAKIASELCyABQYgBaiERQQAhEkEAIRMCQCABKAIgQYCAgIB4Rg0AIAEoAjQhEyABKAIoIRILIAEoAmghFCABLQAdIRVBCyEWAkAgESgCACIIQQtGDQAgAUGYAWohF0EKIRYCQCAIQQpGDQAgAkGIAWogERCPBiACIAIpAowBNwOQAiACIAIoApQBNgKYAiACKAKIASEWCyACIAIpA5ACNwPwASACIAIoApgCNgL4ASACIBcoAgg2AoQCIAIgFykCADcC/AELIAIgCzYCkAEgAiANNgKMASACIA42AogBIAIgAikDoAI3ApQBIAIgAigCqAI2ApwBIAIgFDYCtAEgAiATNgKsASACIBI2AqgBIAIgFToApQEgAiAPOgCkASACIAw2AqABIAIgASgCrAEiDDYC3AEgAiABKAKoASINNgLYASACIAo2ArABIAIgFjYCuAEgAiAEKAIINgLoASACIAQpAwA3A+ABIAIgAikD8AE3ArwBIAIgAikD+AE3AsQBIAIgAikDgAI3AswBIAIgAigCiAI2AtQBIAEgCkEBcjYCeCACQbgBaiESIAJB4AFqIRMCQAJAAkAgAS0AuAEiDkHZAEcNACARQQs2AgAgCEELRg0BIAIgASgCoAE2AvgBIAIgASkCmAE3A/ABAkAgEEEKRg0AIAkQtQsLIAEgCDYCCCABIAYpAgA3AgwgASAGKAIINgIUDAILIAEoArQBIQYgASgCsAEhCCACQaACaiAOELIlIAJBjwKtQiCGQez0mgGthDcDkAIgAkHwAWpBzZWAASACQZACahDICCACIAIpAqACNwL8ASACIAIoAqgCNgKEAiAIIAYgAkHwAWoQsxshCCAOQaIBRw0PIAEgARDvDRCGCQwPCyACQfABaiABEM4BCyABKQOwASEZIAQgAikD8AE3AgAgBCACKAL4ATYCCCABIBk3A6gBIAJBGGogARCJAyACKAIcIQggAigCGCEGAkACQCABKAJ4Ig5BgICAwABxDQAgAS0AuAFB/wFxQQpGDQELIAZBAXENDiABIA5BfnEgCkEBcXI2AngCQCALQQpGDQAgAkGQAWoQtQsLIBZBDnFBCkYNDyASELULDA8LAkACQCAGDQAgCBCjBEHgACEGDAELIAhBCGoQ4wNBICEGCyAIIAZBCBDOFCABIAJBiAFqEMYIIAQgEygCCDYCCCAEIBMpAwA3AwACQCABKAKIAUEOcUEKRg0AIBEQtQsLIAEgDDYCrAEgASANNgKoASARIBIpAxg3AxggESASKQMQNwMQIBEgEikDCDcDCCARIBIpAwA3AwBBACEIDA4LIAItAIkBIQggAkEIaiABEF0gAigCDCEGAkACQAJAIAIoAghBAXENAEEAIQQgAS0AuQENACABQbABaiEDIAFBDGohByABQQhqIREgAUGYAWohBSABQYwBaiESIAhB/wFxQaQBRyETA0AgAS0AuAFBBEcNASABKAKIASEIIAFBCzYCiAECQAJAIAhBC0YNACACIAUoAgg2ApABIAIgBSkCADcDiAECQCARKAIAQQpGDQAgERC1CwsgESAINgIAIAcgEikCADcCACAHIBIoAgg2AggMAQsgAkGIAWogARDOAQsgASkDsAEhGCADIAIpA4gBNwIAIAMgAigCkAE2AgggASAYNwOoAQJAAkACQAJAAkAgAS0AuAFBBUcNACABKAKIASEIIAFBCzYCiAEgCEELRg0BIAIgBSgCCDYCkAEgAiAFKQIANwOIAQJAIBEoAgBBCkYNACARELULCyARIAg2AgAgByASKQIANwIAIAcgEigCCDYCCAwCCyABIAEoAngiCEH///+/f3E2AnggAiABKAKwASABEO4DIAIoAgAhCiABIAg2AnggAigCBCEWIApBAXFFDQIgFiEDDAcLIAJBiAFqIAEQzgELIAEgASgCtAEiCjYCrAEgASABKAKwATYCqAEgAyACKQOIATcCACADIAIoApABNgIIQQQhCAJAAkACQAJAAkACQAJAAkAgBigCAA4UBwcAAQECAQIBAQMDAQEBBAEFBgEHC0EYQRQgBigCBEGAgICAeEYbIQgMBgtBCCEIDAULQRAhCAwEC0EUIQgMAwtBDCEIDAILQSghCAwBC0EgIQgLIAYgCGooAgAhFkHgABCJASIIRQ0MIAggCjYCDCAIIBY2AgggCCAGNgIEIAhBBjYCACAIIQYMAQsgAS0AuAEiCEEFRw0DIAEoAogBIQggAUELNgKIAQJAAkAgCEELRg0AIAIgBSgCCDYCkAEgAiAFKQIANwOIAQJAIBEoAgBBCkYNACARELULCyARIAg2AgAgByASKQIANwIAIAcgEigCCDYCCAwBCyACQYgBaiABEM4BCyABIAEoArQBIgo2AqwBIAEgASgCsAE2AqgBIAMgAikDiAE3AgAgAyACKAKQATYCCEEEIQgCQAJAAkACQAJAAkACQAJAIAYoAgAOFAcHAAEBAgECAQEDAwEBAQQBBQYBBwtBGEEUIAYoAgRBgICAgHhGGyEIDAYLQQghCAwFC0EQIQgMBAtBFCEIDAMLQQwhCAwCC0EoIQgMAQtBICEICyAGIAhqKAIAIQtB4AAQiQEiCEUNDCAIIBM6ABQgCCAKNgIQIAggCzYCDCAIIBY2AgggCCAGNgIEIAhBDzYCACAIIQYLIAEtALkBQQFHDQALCyAGIQMMEAsgASgCtAEhAyABKAKwASEEIAJB8AFqIAgQsiUgAkGPAq1CIIZBm+SaAa2ENwOgAiACQYgBakHNlYABIAJBoAJqEK8QIAIgAikC8AE3ApQBIAIgAigC+AE2ApwBIAQgAyACQYgBahCzGyEDAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAWEIQjCyAGEKMEIAZB4ABBCBDOFEEBIQQMDgtBASEEIAJBiAFqIAFBARC2AyACKAKIASIGQYGAgIB4Rg0KIAIgAkGMAWoiASgCGDYCSCACIAEpAhA3A0AgAiABKQIINwM4IAIgASkCADcDMEHgABCJASIDRQ0HIAMgBjYCBCADQQI2AgAgA0EIaiACQTBqQdgA/AoAAAwJC0EBIQQMDAsgASgCsAEhCCABKAKIASEEIAFBCzYCiAEgAUGwAWohAwJAAkAgBEELRg0AIAFBjAFqIQYgAiABKAKgATYCkAEgAiABKQKYATcDiAECQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkGIAWogARDOAQsgASkDsAEhGCADIAIpA4gBNwIAIAMgAigCkAE2AgggASAYNwOoAUEAIREMAgsgASgCsAEhCCABKAKIASEEIAFBCzYCiAEgAUGwAWohAwJAAkAgBEELRg0AIAFBjAFqIQYgAiABKAKgATYCkAEgAiABKQKYATcDiAECQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkGIAWogARDOAQsgASkDsAEhGCADIAIpA4gBNwIAIAMgAigCkAE2AgggASAYNwOoAUEBIREMAQsgASgCsAEhCCABKAKIASEEIAFBCzYCiAEgAUGwAWohAwJAAkAgBEELRg0AIAFBjAFqIQYgAiABKAKgATYCkAEgAiABKQKYATcDiAECQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkGIAWogARDOAQsgASkDsAEhGCADIAIpA4gBNwIAIAMgAigCkAE2AgggASAYNwOoAUECIRELIAJBEGogARCqAUEBIQQgAigCFCEGAkAgAigCEEEBcUUNACAGIQMMCQsgASgCrAEhAUHgABCJASIDRQ0DIAMgEToAECADIAE2AgwgAyAINgIIIAMgBjYCBCADQQ42AgAMBAtBCEHgABCNJAALQQhB4AAQjSQAC0EIQeAAEI0kAAtBCEHgABCNJAALQQAhBAwDCyACKAKMASEDDAILIAEgAkGIAWoQxgggBCATKAIINgIIIAQgEykDADcDAAJAIAEoAogBQQ5xQQpGDQAgERC1CwsgASAMNgKsASABIA02AqgBIBEgEikDGDcDGCARIBIpAxA3AxAgESASKQMINwMIIBEgEikDADcDACAIQQhqEOMDIAhBIEEIEM4UQQAhCAsgAkEANgIoIAJBADsBLCABKAKsASEGQeAAEIkBIgFF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ASACQcgAakHNlYABIAJBoAFqEMgIIAIgAikCMDcCVCACIAIoAjg2AlwgBiAEIAJByABqELMbIQQCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLIABBAjoAMiAAIAQ2AgAMAgsgAS0AuAEhBQsCQAJAIAVB/wFxQQRHDQAgASgCiAEhBSABQQs2AogBAkACQCAFQQtGDQAgAiABKAKgATYCUCACIAEpApgBNwNIAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIAJByABqIAEQzgELIAEpA7ABIQwgBCACKQNINwIAIAQgAigCUDYCCCABIAw3A6gBIAEoArABIQggAkGgAWogARCbBSACKAKoASEFAkAgAikDoAEiDEIAUQ0AIAIoAqwBIQkgAkECNgKkASACQYvwmgE2AqABIAJBGGogAUHgACACQaABahCyCSACKAIcIQogAigCGEEBRw0CAkAgDEIDg0IAUg0AIAynIgEgASgCACIEQX9qNgIAIARBAUcNACABIAEoAhAQ3h4LIAohBQsgAEECOgAyIAAgBTYCAAwCCyABKAK0ASEEIAEoArABIQYgAkE8aiAFELIlIAJBjwKtQiCGQZnkmgGthDcDoAEgAkHIAGpBzZWAASACQaABahDICCACIAIpAjw3AlQgAiACKAJENgJcIAYgBCACQcgAahCzGyEEAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQI6ADIgACAENgIADAELIAIgCjYCaEEAIQogAkEAOgBkIAJBADYCYCACIAk2AlwgAiAFNgJYIAIgDDcDUCACQQA2AmwgAkEAOwFwIAIgASgCrAE2AkwgAkEAOgByIAIgCDYCSAJAAkACQAJAAkAgAS0AuAEiBUH1AEcNACABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQaABaiABEM4BCyABKQOwASEMIAQgAikDoAE3AgAgBCACKAKoATYCCCABIAw3A6gBIAEgASgCeCIFQf///79/cTYCeCACQRBqIAEoArABIAEQ7gMgAigCECEIIAEgBTYCeCACKAIUIQogCEEBcQ0BIAEtALgBIQULAkACQAJAAkAgBUH/AXFBBUcNACABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQaABaiABEM4BCyABKQOwASEMIAQgAikDoAE3AgAgBCACKAKoATYCCCABIAw3A6gBIAEtALgBIgVBc2pB/wFxQQJJDQNBAyEJIAVB/wFxQQpHDQUgASgCiAEhBSABQQs2AogBIAVBC0YNASACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwCCyABKAK0ASEEIAEoArABIQYgAkH8AGogBRCyJSACQY8CrUIghkGb5JoBrYQ3A7gBIAJBoAFqQc2VgAEgAkG4AWoQrxAgAiACKQJ8NwKsASACIAIoAoQBNgK0ASAGIAQgAkGgAWoQsxshBAJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAEECOgAyIAAgBDYCAAwFCyACQaABaiABEM4BCyABKQOwASEMIAQgAikDoAE3AgAgBCACKAKoATYCCCABIAw3A6gBQQAhCQwCCyABKAKIASEIIAFBCzYCiAECQAJAIAhBC0YNACACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQaABaiABEM4BCyABKQOwASEMIAQgAikDoAE3AgAgBCACKAKoATYCCCABIAw3A6gBAkAgAS0AuAEiCEEKRw0AIAVB/wFxQQ1GIQggASgCiAEhBSABQQs2AogBAkACQCAFQQtGDQAgAiABKAKgATYCqAEgAiABKQKYATcDoAECQCABKAIIQQpGDQAgAUEIahC1CwsgASAFNgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkGgAWogARDOAQtBAUECIAgbIQkgASkDsAEhDCAEIAIpA6ABNwIAIAQgAigCqAE2AgggASAMNwOoAQwCCyABKAK0ASEEIAEoArABIQYgAkGIAWogCBCyJSACQY8CrUIghkGS8poBrYQ3A7gBIAJBoAFqQc2VgAEgAkG4AWoQrxAgAiACKQKIATcCrAEgAiACKAKQATYCtAEgBiAEIAJBoAFqELMbIQQCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLIABBAjoAMiAAIAQ2AgAMAgsgAEECOgAyIAAgCjYCAAwCCyABIAEoAngiCEGAIHI2AnhBACEFAkAgAS0AuAFBCUcNACABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQaABaiABEM4BCyABKQOwASEMIAQgAikDoAE3AgAgBCACKAKoATYCCCABIAw3A6gBIAEgASgCeCIFQf///79/cTYCeCACQQhqIAEoArABIAEQ7gMgAigCCCELIAEgBTYCeCACKAIMIQUgC0EBcUUNACAAQQI6ADIgACAFNgIAIAEgCDYCeAwBCyABIAg2AngCQCABEP0IIggNAAJAAkACQCABLQC4ASIIQQNHDQAgASgCiAEhCCABQQs2AogBIAhBC0YNASACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAGKQIANwIMIAEgBigCCDYCFAwCCyABKAK0ASEEIAEoArABIQYgAkGUAWogCBCyJSACQY8CrUIghkGD9ZoBrYQ3A7gBIAJBoAFqQc2VgAEgAkG4AWoQrxAgAiACKQKUATcCrAEgAiACKAKcATYCtAEgBiAEIAJBoAFqELMbIQggAS0AuAFBogFHDQIgASABEO8NEIYJDAILIAJBoAFqIAEQzgELIAEgASgCtAEiBjYCrAEgASABKAKwATYCqAEgBCACKQOgATcCACAEIAIoAqgBNgIIIAAgAikDcDcDMCAAIAIpA2g3AyggACACKQNgNwMgIAAgAikDWDcDGCAAIAIpA1A3AxAgACACKQNINwMIIAAgCToAQSAAIAc6AEAgACAFNgI8IAAgCjYCOCAAIAY2AgQgACADNgIADAMLIABBAjoAMiAAIAg2AgAgBUUNACAFEKMEIAVB4ABBCBDOFAsgCkUNACAKEKMEIApB4ABBCBDOFAsgAkHI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QCADKAIYIgMtACxBAkYNAAsLAkAgACgCQCIDRQ0AIANBCGooAgAiCEUNACAIQQJ0IQggA0EEaigCACEDA0AgAygCACABELYBIANBBGohAyAIQXxqIggNAAsLIAAoAkQiA0UNACADQQhqKAIAIghFDQAgCEEMbCEGIANBBGooAgAhCANAAkACQCAIKAIAIgMNACAIQQRqKAIAIgMgARCyAiADKAIAQQVHDQEgASADQQhqEIsLIgdFDQEgAykDECESIANCADcDECADKQMIIRMgA0IBNwMIIANCADcAFSADEJIJIAMgBzYCKCADIBI3AxggAyATNwMQIANBADYCCCADQQY2AgAMAQsgAyABEFwgAygCAEEaRw0AIAEgA0EIahCLCyIHRQ0AIAMQhAIgAyAHKQM4NwM4IAMgBykDMDcDMCADIAcpAyg3AyggAyAHKQMgNwMgIAMgBykDGDcDGCADIAcpAxA3AxAgAyAHKQMINwMIIAMgBykDADcDACAHQcAAQQgQzhQLIAhBDGohCCAGQXRqIgYNAAsLIAJBgAFqJAAPCwALQQRBDBCNJAALQQhB4AAQjSQAC0EEQQwQjSQAC0EIQeAAEI0kAAuxHAIKfwF+IwBB8AFrIgIkACABKAKwASEDIAEoAogBIQQgAUELNgKIASABQYwBaiEFIAFBsAFqIQYCQAJAIARBC0YNACACIAEoAqABNgKoASACIAEpApgBNwOgAQJAIAEoAghBCkYNACABQQhqELULCyABIAQ2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyACQaABaiABEM4BCyABKQOwASEMIAYgAikDoAE3AgAgBiACKAKoATYCCCABIAw3A6gBAkACQAJAAkACQCABLQC4ASIEDQAgASgCiAEhBCABQQs2AogBAkACQCAEQQtGDQAgAiABKAKgATYCqAEgAiABKQKYATcDoAECQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAQsgAkGgAWogARDOAQsgASkDsAEhDCAGIAIpA6ABNwIAIAYgAigCqAE2AgggASAMNwOoASABLQC4ASIEQcAARg0CIARBogFGDQEgASgCtAEhBCABKAKwASEHIAEQkhAgAkGSgYCAeDYCoAEgASAHIAQgAkGgAWoQ3B0QoyUhDCAC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ACABELoBIABBBGohACACQXxqIgINAAwOCwsgACgCDCICRQ0MIAJBAnQhAiAAKAIIIQADQCAAKAIAIAEQugEgAEEEaiEAIAJBfGoiAg0ADA0LCyAAKAIEIAEQugEgACgCCCIAQQhqKAIAIgJFDQsgAkECdCECIABBBGooAgAhAANAIAAoAgAgARC6ASAAQQRqIQAgAkF8aiICDQAMDAsLAkAgACgCDCICRQ0AIAJBKGwhAyAAKAIIIQIDQCACIAEQxwogAkEoaiECIANBWGoiAw0ACwsCQCAAKAIQIgAoAgBBgICAgHhHDQAgACgCBCEADAkLIAAoAggiAkUNCiACQTBsIQIgACgCBCEAA0AgACABEM8DIABBMGohACACQVBqIgINAAwLCwsCQCAAKAIgIgNBCGooAgAiAEUNACAAQQxsIQIgA0EEaigCACEAA0AgACgCACABELoBIABBDGohACACQXRqIgINAAsLAkAgA0EUaigCACIARQ0AIABB2ABsIQIgA0EQaigCACEAA0AgACABEJoDIABB2ABqIQAgAkGof2oiAg0ACwsgAygCMCIADQcMCQsgACgCDCIADQYMCAsgACgCBCEADAULIABBIGohAgJAIAAtADRBAkcNAANAIAIoAgAiAEEYaiECIAAtACxBAkYNAAsLIAEgAikDACACQRBqKAIAEPQNDwsgASAAKAIEIgZBwABqELQKAkAgBkGEAWooAgAiAEUNACAGQYABaigCACICIABB2ABsaiEFA0ACQAJAAkAgAigCACIAQXxqDgICAAELIAIoAgQgARC6AQwBCwJAAkACQCAADgQDAAECAwsgAigCBEEBRw0CIAIoAgggARC6AQwCCyABIAIoAgQiBEHAAGoQtAoCQCAEQYQBaigCACIARQ0AIABB2ABsIQMgBEGAAWooAgAhAANAAkACQAJAIAAoAgBBfGoOAgIAAQsgAEEEaigCACABELoBDAELIAAgARDmCgsgAEHYAGohACADQah/aiIDDQALCwJAIARBmAFqKAIAIgBFDQAgAEEobCEDIARBlAFqKAIAIQADQCAAIAEQugggAEEoaiEAIANBWGoiAw0ACwsgBC0APEEGRg0BIAEgBEEQahC0CgwBCyACKAIMIgBFDQAgAEEobCEDIAIoAgghAANAIAEgABDzBiAAQShqIQAgA0FYaiID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CwJAAkACQAJAIApB/wFxIgtBHEYNACADQcAAaiABEPYIIAMoAkQhCiADKAJAIgxBB0YNAiADIAYpAxg3A5ABIAMgBikDEDcDiAEgAyAGKQMINwOAASADIAYpAwA3A3gCQCAEIAMoAsgBRw0AIANByAFqEKsaCyADKALMASIHIARBKGxqIgIgCjYCBCACIAw2AgAgAiADKQN4NwMIIAIgAykDgAE3AxAgAiADKQOIATcDGCACIAMpA5ABNwMgDAELIAEoAsABIQkgARDeESABKAK8ASEMIANBwABqIAFBABDAASADKAJEIQogAygCQCIHQQdGDQEgAyAGKQMYNwOAAiADIAYpAxA3A/gBIAMgBikDCDcD8AEgAyAGKQMANwPoASABKAK8ASEIQQhBKBDVICICIAo2AgQgAiAHNgIAIAIgAykD6AE3AwggAiADKQPwATcDECACIAMpA/gBNwMYIAIgAykDgAI3AyACQCAEIAMoAsgBRw0AIANByAFqEKsaCyADKALMASIHIARBKGxqIgpBADYCGCAKIAw2AhQgCiAJNgIQIAogCDYCDCAKIAk2AgggCiACNgIEIApBAjYCAAsgAyAEQQFqIgQ2AtABAkAgAS0AyAEiAkF7ag4DAwACAAsgASgCxAEhBCABKALAASEHIANBkAJqIAIQwyUgA0GPAq1CIIZBnOSaAa2ENwOoASADQcAAakHNlYABIANBqAFqEPceIAMgAykCkAI3AkwgAyADKAKYAjYCVCAHIAQgA0HAAGoQsxshCiABLQDIAUGiAUcNACABIAEQjCMQgxQLIABBBzYCACAAIAo2AgQgA0HIAWoQlSEMBwsgARDeESALQRxHDQAgAS0AyAFB/wFxQQVHDQAgASgCvAEhAiABKAK4ASEKIANBuoCAgHg2AkAgASAKIAIgA0HAAGoQ4x0MAAsLIANBEGogASACEPsGAkACQCADLQAkQQJGDQAgAyADKQMoNwJcIAMgAykDIDcCVCADIAMpAxg3AkwgAyADKQMQNwJEIABBBGogA0HAAGpBJPwKAABBACEBDAELIAAgAygCEDYCBEEHIQELIAAgATYCAAwECyAEQaIBRg0BCyADQcAAakEEciAEEMMlIANBHDYCVCADQfCMmwE2AlAgA0GwgICAeDYCQCABKALAASABKALEASADQcAAahCzGyEEAkAgAS0AyAFBogFHDQAgASABEIwjEIMUCyAAQQc2AgAgACAENgIEDAILIAEQjCMhASAAQQc2AgAgACABNgIEDAELIAEgASgCeCINQf//e3E2AnggASgCwAEhDiABEN4RIANBwABqQQhBCEE4EIEPIAMoAkQhBAJAAkACQAJAAkACQAJAIAMoAkBBAUYNACADQQA2AjwgAyADKAJIIgg2AjggAyAENgI0IANB6AFqQQhqIQQgA0HoAWpBBGohDCADQdAAaiEPIANB6AFqQQRyIRAgA0HIAWpBCGohBSADQcAAakEIaiELIANBwABqQQRyIREgAS0AyAEhAkEAIQpBACESA0AgCkE4bCEGAkADQAJAIAJB/wFxIgJBA0cNACABEN4RIAEoArwBIQkgAyADKQI0NwNAIAMgAygCPCIENgJIIAMgEzYCYCADIBQ2AlwgAyASNgJYIAMgCTYCVCADIA42AlAgAyABNgJMIARBOGwhAiAEQX9qIQcgAygCRCEEIBJBAXEhBgJAA0AgAkUNASAEKAIAIQoCQAJAAkAgB0UNACAKQQJHDQEgBEEMaigCACEKIARBCGooAgAhBSADQbuAgIB4NgLoASABIAUgCiADQegBahDjHQwBCyAKQQJHDQAgBEEEaigCACgCAA0BIAZFDQAgA0G6gICAeDYC6AEgASAUIBMgA0HoAWoQ4x0LIARBOGohBCACQUhqIQIgB0F/aiEHDAELCyAEKAIMIQIgBCgCCCEEIANB7oCAgHg2AugBIAQgAiADQegBahCzGyEEAkAgAS0AyAFBogFHDQAgARDKFCECIAEQ3hEgASACEIMUCyAAQQc2AgAgACAENgIEIANBwABqENMiDAsLIAEtAIEBQQRxRQ0HQQAhBCABLQDIAUEKRg0IDAkLIAEoAsABIQkCQAJAAkACQAJAIAJBHEYNACADQegBaiABEJsEIAMoAuwBIQcgAygC6AEiAkEFRg0KIAUgBCkDEDcDECAFIAQpAwg3AwggBSAEKQMANwMAIAMgBzYCzAEgAyACNgLIAQJAIAEtAMgBIhVBCUYNAAJAIAINAEEAIQcgFUEXRw0FIAEQ3hEgA0EIaiABQcAAEKMYIAMoAgwhByADKAIIQQFHDQUgAykD0AEQhyEMDAsgECAVEMMlIANBDTYC/AEgA0GoiZsBNgL4ASADQbCAgIB4NgLoASABKALAASABKALEASADQegBahCzGyEEAkAgAS0AyAFBogFHDQAgASABEIwjEIMUCyADIAQ2AkQMAwsgARDeESADQegBaiABEPYIIAMoAuwBIQcgAygC6AEiCUEHRg0BIAMgBCkDGDcDqAIgAyAEKQMQNwOgAiADIAQpAwg3A5gCIAMgBCkDADcDkAJBCEEoENUgIgIgBzYCBCACIAk2AgAgAiADKQOQAjcDCCACIAMpA5gCNwMQIAIgAykDoAI3AxggAiADKQOoAjcDICAMIAMpA+ABNwIYIAwgAykD2AE3AhAgDCADKQPQATcCCCAMIAMpA8gBNwIAQQAhByADQQA2AkAgESADQegBakEk/AoAACADIAI2AmgMBAsgARDeESABKAK8ASEVIANB6AFqIAFBABDAASADKALsASEHIAMoAugBIhZBB0YNCSADIAQpAxg3A8ABIAMgBCkDEDcDuAEgAyAEKQMINwOwASADIAQpAwA3A6gBQQhBKBDVICICIAc2AgQgAiAWNgIAIAIgAykDqAE3AwggAiADKQOwATcDECACIAMpA7gBNwMYIAIgAykDwAE3AyAgA0EANgJYIAMgFTYCVCADIAk2AlAgAyAJNgJIIAMgAjYCREECIQcgA0ECNgJAIAMgASgCvAE2AkwMAwsgAyAHNgJEIAJFDQcLIANByAFqEPoZIAMoAkQhBwwHCyABKAK8ASECIA8gBRDwHiADIAc2AnAgAyACNgJMIAMgCTYCSEEBIQcgA0EBNgJACyADKAJEIQkgA0H4AGogC0Ew/AoAAAJAIAogAygCNEcNACADQTRqEK0aIAMoAjghCAsgCCAGaiICIAc2AgAgAkEEaiAJNgIAIAJBCGogA0H4AGpBMPwKAAAgAyAKQQFqIgo2AjxBAyECAkACQAJAIAEtAMgBIgdBfWoOBQECAgIAAgsgARDeESABLQDIASICQQNGDQMLIAZBOGohBgwBCwsgASgCxAEhBCABKALAASECIANB6AFqIAcQwyUgA0GPAq1CIIZBnOSaAa2ENwOQAiADQcAAakHNlYABIANBkAJqEPceIAMgAykC6AE3AkwgAyADKALwATYCVCACIAQgA0HAAGoQsxshByABLQDIAUGiAUcNBCABEMoUIQQgARDeESABIAQQgxQMBAsgASgCvAEhEyABKAK4ASEUQQEhEkED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JGooAgAhAANAAkACQCAAKAIAQQlHDQAgAEEIaiABEMsBDAELIAAgARDEAQsgAEE4aiEAIAVBSGoiBQ0ACwsLhhkCF38BfiMAQYACayIDJAACQAJAAkAgAS0AuAEiBEESRg0AIARBPkcNAQsgAS0AgQFBIHFFDQAgAUEIaiEFQQohBiABKAIYIQcgASgCBCEIIAEoAgAhCSABLQAcIQogASgCeCILIQQCQCABKAIIQQpGDQAgA0HAAWogBRCPBiADIAMpAsQBNwOoASADIAMoAswBNgKwASADKALAASEGIAEoAnghBAtBACEMQQAhDQJAIAEoAiBBgICAgHhGDQAgASgCNCENIAEoAighDAsgASgCaCEOIAEtAB0hDyABQYgBaiEQQQshESAEIRICQCABKAKIASITQQtGDQAgAUGYAWohFEEKIREgBCESAkAgE0EKRg0AIANBwAFqIBAQjwYgAyADKQLEATcDmAEgAyADKALMATYCoAEgAygCwAEhESABKAJ4IRILIAMgAykDmAE3A8ABIAMgAygCoAE2AsgBIAMgFCgCCDYC1AEgAyAUKQIANwLMAQsgAyAGNgIoIAMgCDYCJCADIAk2AiAgAyADKQOoATcCLCADIAMoArABNgI0IAMgDjYCTCADIAQ2AkggAyANNgJEIAMgDDYCQCADIA86AD0gAyAKOgA8IAMgBzYCOCADIAEoAqwBIhQ2AnQgAyABKAKoASIVNgJwIAMgETYCUCADIAEoArgBNgKAASADIAEpA7ABNwN4IAMgAykDwAE3AlQgAyADKQPIATcCXCADIAMpA9ABNwJkIAMgAygC2AE2AmwgASASQYEgcjYCeCADQQA6AMABIANBADoAuAEgA0EYaiADQbgBaiADQcABaiABEN8BIAMoAhghBCABIBJBAXI2AnggAUGwAWohDiADKAIcIQ8gA0HQAGohCiADQfgAaiETAkACQCAEQQFHDQAgDyEIDAELAkACQAJAIAEtAIABQQFxRQ0AIA8oAghBAUcNACAPKAIEIgQoAiANACAEKAIkDQAgDygCECAEKAIEa0EBSw0AQYCAgIB4IRYMAQsCQAJAAkAgAS0AuAEiBA0AIAEoAogBIQQgAUELNgKIASABQYwBaiEXIARBC0YNASADIAEoAqABNgLIASADIAEpApgBNwPAAQJAIAEoAghBCkYN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BGooAgAgARClAgwBCyAAIAEQXCAAKAIAQRpHDQAgASAAQQhqEIsLIgRFDQAgABCEAiAAIAQpAzg3AzggACAEKQMwNwMwIAAgBCkDKDcDKCAAIAQpAyA3AyAgACAEKQMYNwMYIAAgBCkDEDcDECAAIAQpAwg3AwggACAEKQMANwMAIARBwABBCBDOFAsgAkEMaiECIANBdGoiAw0ADAYLCwJAAkACQCAAKAIIDgMAAQIACwJAIAAoAigiBUEIaigCACIARQ0AIABBDGwhAyAFQQRqKAIAIQQDQCAEKAIAIgAgARBcAkAgACgCAEEaRw0AIAEgAEEIahCLCyICRQ0AIAAQhAIgACACKQM4NwM4IAAgAikDMDcDMCAAIAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDACACQcAAQQgQzhQLIARBDGohBCADQXRqIgMNAAsLAkAgBUEUaigCACIARQ0AIABB2ABsIQIgBUEQaigCACEAA0AgACABEJYBIABB2ABqIQAgAkGof2oiAg0ACwsCQCAFKAIwIgBFDQAgACABEFwgACgCAEEaRw0AIAEgAEEIahCLCyICRQ0AIAAQhAIgACACKQM4NwM4IAAgAikDMDcDMCAAIAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDACACQcAAQQgQzhQLAkAgBSgCNCIARQ0AIABBCGooAgAiAkUNACACQTBsIQIgAEEEaigCAEEkaiEAA0ACQCAAQXxqKAIAIgRFDQAgBCABELYBCwJAIAAoAgAiBEUNACAEIAEQtgELIABBMGohACACQVBqIgINAAsLAkAgBSgCOCIARQ0AIABBCGooAgAiAkUNACACQQJ0IQIgAEEEaigCACEAA0AgACgCACABELYBIABBBGohACACQXxqIgINAAsLIAUoAiAiAEUNBiAFKAIcIgQgAEEEdGohAwNAIAQoAgAiACABEFwCQCAAKAIAQRpHDQAgASAAQQhqEIsLIgJFDQAgABCEAiAAIAIpAzg3AzggACACKQMwNwMwIAAgAikDKDcDKCAAIAIpAyA3AyAgACACKQMYNwMYIAAgAikDEDcDECAAIAIpAwg3AwggACACKQMANwMA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NgIIIAEgEykCADcCDCABIBMoAgg2AhQMAgsgESgCACEMIBFBCzYCAAJAAkAgDEELRg0AIAUgASgCoAE2AlAgBSABKQKYATcDSAJAIAEoAghBCkYNACAGELULCyABIAw2AgggASATKQIANwIMIAEgEygCCDYCFAwBCyAFQcgAaiABEM4BCyABKQOwASEWIA8gBSkDSDcCACAPIAUoAlA2AgggASAWNwOoAQwDCyAFQcgAaiABEM4BCyABKQOwASEWIA8gBSkDSDcCACAPIAUoAlA2AgggASAWNwOoASAFQYWBgIB4NgJIIAEgCSANIAVByABqENwdDAELIAEoArQBIREgBUEwaiAMELIlIAVBjwKtQiCGQev0mgGthDcDsAEgBUHIAGpBzZWAASAFQbABahCvECAFIAUpAjA3AlQgBSAFKAI4NgJcIAsgESAFQcgAahCzGyENIAEtALgBQaIBRw0BIAEgARDvDRCGCQwBCyABIAEoAngiCkGAIHIiDEH///+/f3E2AnggBUEIaiABKAKwASABEO4DIAUoAgghCSABIAw2AnggBSgCDCENAkACQCAJQQFxDQAgASgCrAEhCUEMEIkBIgwNAUEEQQwQjSQACyABIAo2AngMAQsgDCAJNgIIIAwgCzYCBCAMIA02AgAgASAKNgJ4IAEoAqwBIQ0CQCASRQ0AIBIoAgAiCRCjBCAJQeAAQQgQzhQgEkEMQQQQzhQLAkACQAJAAkAgAS0AuAEiEkEFRw0AIBEoAgAhEiARQQs2AgAgEkELRg0BIAUgASgCoAE2AlAgBSABKQKYATcDSAJAIAEoAghBCkYNACAGELULCyABIBI2AgggASATKQIANwIMIAEgEygCCDYCFAwCCyABKAK0ASERIAEoArABIQ8gBUE8aiASELIlIAVBjwKtQiCGQZvkmgGthDcDsAEgBUHIAGpBzZWAASAFQbABahCvECAFIAUpAjw3AlQgBSAFKAJENgJcIA8gESAFQcgAahCzGyENIAEtALgBQaIBRg0CIAwhEgwDCyAFQcgAaiABEM4BCyABKQOwASEWIA8gBSkDSDcCACAPIAUoAlA2AgggASAWNwOoAQJAAkBBKBCJASIRRQ0AIBEgBS0A4gE6AB8gESAFLwHgATsAHSARIBU2AiQgESAMNgIgIBEgDjoAHCARIBA2AhggESANNgIU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AUHAAEEIEM4UDwsL6RcCE38BfiMAQZACayICJAAgAUGwAWohAyABKAKwASEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQC4AUGhf2oOCAIBAQEBAQEAAQsgASgCiAEhBSABQQs2AogBAkACQCAFQQtGDQAgAUGMAWohBiACIAEoAqABNgJwIAIgASkCmAE3A2gCQCABKAIIQQpGDQAgAUEIahC1CwsgASAFNgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkHoAGogARDOAQsgASABKAK0ASIFNgKsASABIAEoArABNgKoASADIAIpA2g3AgAgAyACKAJwNgIIIAJBAzoAPCACIAQ2AjQgAiAFNgI4IAJBIGogASACQTRqQQBBABBRIAIoAiQhAyACKAIgIQUMDwsgASABKAJ4IgdBgMAAcjYCeCACQRhqIAEQeSACKAIYIQggASAHNgJ4QQEhBSACKAIcIQYgCEEBcQ0HQQAhBSAGKAIAIghBHkYNB0EAIQUgAS0AgQFBIHFFDQYCQCABLQC4ASIJQTVGDQAgCUESRw0HCyABQQhqIQpBCiELIAEoAhghDCABKAIEIQ0gASgCACEOIAEtABwhDwJAIAEoAghBCkYNACACQegAaiAKEI8GIAIgAikCbDcDgAIgAiACKAJ0NgKIAiACKAJoIQsLQQAhBUEAIQkCQCABKAIgQYCAgIB4Rg0AIAEoAjQhCSABKAIoIQULIAEoAmghECABLQAdIREgAUGIAWohCEELIRICQCABKAKIASITQQtGDQAgAUGYAWohFEEKIRICQCATQQpGDQAgAkHoAGogCBCPBiACIAIpAmw3A/ABIAIgAigCdDYC+AEgAigCaCESCyACIAIpA/ABNwPQASACIAIoAvgBNgLYASACIBQoAgg2AuQBIAIgFCkCADcC3AELIAIgCzYCcCACIA02AmwgAiAONgJoIAIgAikDgAI3AnQgAiACKAKIAjYCfCACIBA2ApQBIAIgCTYCjAEgAiAFNgKIASACIBE6AIUBIAIgDzoAhAEgAiAMNgKAASACIAEoAqwBIg02ArwBIAIgASgCqAEiDjYCuAEgAiAHNgKQASACIBI2ApgBIAIgAygCCDYCyAEgAiADKQMANwPAASACIAIpA9ABNwKcASACIAIpA9gBNwKkASACIAIpA+ABNwKsASACIAIoAugBNgK0ASABIAdBAXI2AnggAkEQaiABEKgDIAJBmAFqIQkgAkHAAWohDCACKAIUIQUgAigCEEEBcQ0DIAEoAogBIQ8gAUELNgKIASAPQQtGDQEgAUGMAWohECACIAEoAqABNgLYASACIAEpApgBNwPQAQJAIAEoAghBCkYNACAKELULCyABIA82AgggASAQKQIANwIMIAEgECgCCDYCFAwCCyABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACABQYwBaiEGIAIgASgCoAE2AnAgAiABKQKYATcDaAJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQegAaiABEM4BCyABKQOwASEVIAMgAikDaDcCACADIAIoAnA2AgggASAVNwOoASACQShqIAEgBEEAEPcEIAIoAiwhAyACKAIoIQUMDQsgAkHQAWogARDOAQsgASkDsAEhFSADIAIpA9ABNwIAIAMgAigC2AE2AgggASAVNwOoASABLQC4AUUNASAFEOobIAUoAgAgBUEEaigCABDeIyAFQRRBBBDOFCABIAJB6ABqEMYIIAMgDCgCCDYCCCADIAwpAwA3AwACQCABKAKIAUEOcUEKRg0AIAgQtQsLIAEgDTYCrAEgASAONgKoASAIIAkpAxg3AxggCCAJKQMQNwMQIAggCSkDCDcDCCAIIAkpAwA3AwBBACEFDAILIAEgAkHoAGoQxgggAyAMKAIINgIIIAMgDCkDADcDAAJAIAEoAogBQQ5xQQpGDQAgCBC1CwsgASANNgKsASABIA42AqgBIAggCSkDGDcDGCAIIAkpAxA3AxAgCCAJKQMINwMIIAggCSkDADcDACAFQQhqEOMDIAVBIEEIEM4UQQAhBQwBCyABIAEoAnhBfnEgB0EBcXI2AngCQCALQQpGDQAgAkHwAGoQtQsLIBJBDnFBCkYNACAJELULCyAGKAIAIQgLIAIgBTYCQAJAAkACQAJAIAhBGEcNAAJAIAYoAgRBgICAgHhGDQAgAS0AuAEiAw0CQQAhEkEFIQNBASEHIAYhCQwHCyACIAZBBGoiAykCGDcDgAEgAiADKQIQNwN4IAIgAykCCDcDcCACIAMpAgA3A2gCQAJAAkAgBUUNACABLQC4ASIDDQEg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IgJBCUYNACABKAJ4IQtBACEKDAELIAEgASgCeCILQYAgcjYCeCABKAKwASEIIAEoAogBIQIgAUELNgKIASABQbABaiEKAkACQCACQQtGDQAgAUGMAWohBiANIAEoAqABNgIoIA0gASkCmAE3AyACQCABKAIIQQpGDQAgAUEIahC1CwsgASACNgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgDUEgaiABEM4BCyABKQOwASEdIAogDSkDIDcCACAKIA0oAig2AgggASAdNwOoASABIAEoAngiCkH///+/f3E2AnggDUEIaiABKAKwASABEO4DIA0oAgghAiABIAo2AnggDSgCDCEGIAJBAXENASABKAKsASEEQQwQiQEiCkUNAyAKIAQ2AgggCiAINgIEIAogBjYCACABLQC4ASECCyANIAo2AnQgDSAHNgJYIA0gBSkDADcDICANIAUpAwg3AyggDSAFKQMQNwMwIA0gBSkDGDcDOCANIAMpAgA3A0AgDSADKAIINgJIIA0gDUEUajYCUCANIA1BHGo2AkwgDSANQRpqNgJUIA0gDUEZajYCXCANIA1BGGo2AmAgDSANQR1qNgJkIA0gDUEeajYCaCANIA1BH2o2AmwgDSANQRtqNgJwIAEgC0HAgBByNgJ4AkAgAkH/AXFBF0YNAEEAIQVBASECDAYLIAEoAogBIQUgAUELNgKIAQJAAkAgBUELRg0AIAFBjAFqIQQgDSABKAKgATYCgAEgDSABKQKYATcDeAJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAEKQIANwIMIAEgBCgCCDYCFAwBCyANQfgAaiABEM4BCyABIA0oAoABNgK4ASABIAEpA7ABNwOoASABIA0pA3g3ArABIAEtAIEBQSBxRQ0DIAEtALgBQf8BcUE+Rw0DIAEQ8gQiBUUNA0EAIQQMBAsgACAGNgIEIAEgCzYCeCAAQQ02AgALAkACQCAEQQVHDQAgBSkDCCIdQgODQgBSDQEgHaciASABKAIAIgBBf2o2AgAgAEEBRw0BIAEgASgCEBDeHgwBCyAFEMkOCyADKAIEIgEgAygCCBDaHSADKAIAIAEQ5yMMDgtBBEEMEI0kAAsgDSABEIwBIA0oAgQhBSANKAIAIQQLIARBAXENASAFRSECIA0tABxBAUcNACAFRQ0AIAEo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DQAgASgCNCETIAEoAighEgsgASgCaCEUIAEtAB0hFUELIQggASgCeCIWIRcCQCAKKAIAIhhBC0YNACABQZgBaiEZQQohCCAWIRcCQCAYQQpGDQAgA0HYAGogChCPBiADIAMpAlw3A+ABIAMgAygCZDYC6AEgAygCWCEIIAEoAnghFwsgAyADKQPgATcDwAEgAyADKALoATYCyAEgAyAZKAIINgLUASADIBkpAgA3AswBCyADIA02AmAgAyAPNgJcIAMgEDYCWCADIAMpA/ABNwJkIAMgAygC+AE2AmwgAyAUNgKEASADIBY2AoABIAMgEzYCfCADIBI2AnggAyAVOgB1IAMgEToAdCADIA42AnAgAyABKAKsASITNgKsASADIAEoAqgBIg42AqgBIAMgCDYCiAEgAyAHKAIINgK4ASADIAcpAwA3A7ABIAMgAykDwAE3AowBIAMgAykDyAE3ApQBIAMgAykD0AE3ApwBIAMgAygC2AE2AqQBQQEhFiABIBdBAXI2AnggA0GwAWohDQJAAkACQCABLQC4ASIIQeAARg0AQQEhEiAIQYoBRw0CIAooAgAhCCAKQQs2AgACQAJAIAhBC0YNACADIAEoAqABNgLIASADIAEpApgBNwPAAQJAIAEoAghBCkYNACAMELULCyABIAg2AgggASAJKQIANwIMIAEgCSgCCDYCFAwBCyADQcABaiABEM4BCyABKQOwASEaIAcgAykDwAE3AgAgByADKALIATYCCCABIBo3A6gBDAELIAooAgAhCCAKQQs2AgACQAJAIAhBC0YNACADIAEoAqABNgLIASADIAEpApgBNwPAAQJAIAEoAghBCkYNACAMELULCyABIAg2AgggASAJKQIANwIMIAEgCSgCCDYCFAwBCyADQcABaiABEM4BCyABKQOwASEaIAcgAykDwAE3AgAgByADKALIATYCCCABIBo3A6gBCwJAAkAgAS0AgQFBIHFFDQAgAS0AuAFB/wFxQT5HDQAgARDyBCIXRQ0AQQAhCAwBCyADQRBqIAEQjAEgAygCFCEXIAMoAhAhCAtBASEWQQAhEiAIQQFxDQAgFxCJAiAXQcAAQQgQzhRBASEWAkACQAJAIAEtALgBIghBAUcNACAKKAIAIQggCkELNgIAIAhBC0YNASADIAEoAqABNgLIASADIAEpApgBNwPAAQJAIAEoAghBCkYNACAMELULCyABIAg2AgggASAJKQIANwIMIAEgCSgCCDYCFAwCCyABKAK0ASEXIAEoArABIQ8gA0HwAWogCBCyJSADQY8CrUIghkGy8JoBrYQ3A+ABIANBwAFqQc2VgAEgA0HgAWoQrxAgAyADKQLwATcCzAEgAyADKAL4ATYC1AEgDyAXIANBwAFqELMbIRcgAS0AuAFBogFHDQIgASABEO8NEIYJDAILIANBwAFqIAEQzgELIAEpA7ABIRogByADKQPAATcCACAHIAMoAsgBNgIIIAEgGjcDqAFBASESQQAhFgsgA0GIAWohCCABIANB2ABqEMYIIAcgDSgCCDYCCCAHIA0pAwA3AwACQCABKAKIAUEOcUEKRg0AIAoQtQsLIAEgEzYCrAEgASAONgKoASAKIAgpAxg3AxggCiAIKQMQNwMQIAogCCkDCDcDCCAKIAgpAwA3AwACQCAWRQ0AIBINASAXQQhqEOMDIBdBIEEIEM4UDAELIANBkYGAgHg2AlggASALIAsgA0HYAGoQ3B0gASgCrAEhCEEEQRwQzyAiEiAGOgAZQQAhASASQQA6ABggEkEANgIUIBIgCDYCECASIAQ2AgwgEkEANgIIIBJCgICAgIABNwIAQQBBCBDiIwwBCyADQdgAakEEQQhBOBCBDyADKAJcIQgCQCADKAJYRQ0AIAggAygCYBDpIAALQQAhFiADQQA2AiQgAyADKAJgIg42AiAgAyAINgIcAkACQAJAIAEtALgBQQZHDQAgASgCrAEhCCABKAKoASESDAELIAFBDGohEEEIIQ0gAUEIaiEPIAFBmAFqIREgA0HYAGpBCGohFwNAAkACQCAFRQ0AIANB2ABqIAEgAiAGEJcDDAELIAEgASgCeCIIQcAAcjYCeCADQdgAaiABIAIgBhCXAyABIAg2AngLIAMoAlwhEgJAIAMoAlgiE0EHRw0AIAMoAiAiASAWEOkaIAMoAhwgARDiI0EBIQEMBAsgAyAXKQMoNwNQIAMgFykDIDcDSCADIBcpAxg3A0AgAyAXKQMQNwM4IAMgFykDCDcDMCADIBcpAwA3AygCQCAWIAMoAhxHDQAgA0EcahCtGiADKAIgIQ4LIA4gDWoiCEF8aiASNgIAIAhBeGogEzYCACAIIAMpAyg3AwAgCCADKQNQNwMoIAggAykDSDcDICAIIAMpA0A3AxggCCADKQM4NwMQIAggAykDMDcDCCADIBZBAWoiFjYCJCABLQC4AUEHRw0CIAooAgAhCCAKQQs2AgACQAJAIAhBC0YNACADIBEoAgg2AmAgAyARKQIANwNYAkAgDygCAEEKRg0AIA8QtQsLIA8gCDYCACAQIAkpAgA3AgAgECAJKAIINgIIDAELIANB2ABqIAEQzgELIAEgASgCtAEiCDYCrAEgASABKAKwASISNgKoASAHIAMpA1g3AgAgByADKAJgNgIIIA1BOGohDSABLQC4AUEGRw0ACwsgA0H3gICAeDYCWCABIAggEiASIARGGyASIAggC0YbIAggA0HYAGoQ3B0LAkAgAg0AAkACQCABLQC4ASIIQX1qDgQCAQEAAQsgCigCACEIIApBCzYCAAJAAkAgCEELRg0AIAMgASgCoAE2AmAgAyABKQKYATcDWAJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAJKQIANwIMIAEgCSgCCDYCFAwBCyADQdgAaiABEM4BCyABKQOwASEaIAcgAykDWDcCACAHIAMoAmA2AgggASAaNwOoAQwBCyAIQaMBRg0AIAEtALkBQQFxDQAgASgCtAEhCCABKAKwASEXIANB9oCAgHg2AlggASAXIAggA0HYAGoQ3B0gA0EIaiABEK0DIAMoAgggAygCDBDAHgNAIAEQ0g0NASABEJIQIAEtALgBQaIBRw0ACwsgASgCrAEhCAJAQRwQiQEiEkUNACASIAMoAiQ2AgggEiADKQIcNwIAIBIgBjoAGUEAIQEgEkEAOgAYIBJBADYCFCASIAg2AhAgEiAENgIMQQBBCBDiIwwBC0EEQRwQjSQACyAAIBI2AgQgACABNgIAIANBgAJqJAALnhYCG38BfiMAQaABayIDJAAgA0EGNgIcQZC/gQEhBCADQZC/gQE2AhggA0GVgICAeDYCACADIAEgAkEFdGoiBTYCFCADQfgAakEEciEGIANBjAFqIQcgA0HoAGpBBHIhCCADQdgAakEEciEJIANBKGpBBHIhCiADQThqQQRyIQsgA0EEciEMQQYhDUECIQ5BAiEPQQQhEEECIRFBAiESQQIhEwJAAkADQCANQQN0IRQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIAEgBUYNASADQSBqIRUCQCABKAIAIhZBlYCAgHhGDQACQAJAAkACQAJAAkAgFkGAgICAeHNBFSAWQQBIG0F0ag4EAAECAwYLIAEoAgwhFyABKAIIIhghGQwECyABKAIEIRkgASgCCCIYIRcMAwsgA0H4AGogASgCCCIYIAEoAgwQzAUgAygCeEUNAQwDCyADQfgAaiABKAIEIAEoAggiGBDMBSADKAJ4DQILIAMoAnwhGSADKAKAASEXCyANRQ0AIBQhGiAEIQICQANAAkAgAkEEaigCACAXRw0AIAIoAgAgGSAXEKgYRQ0CCyACQQhqIQIgGkF4aiIaDQAMAgsLIAMgFjYCICADIAEpAxA3A1ggAyABKQMYNwNgIAEoAgwhGyABKAIEIRwgGCEdIAEhFQsgAUEgaiEBIBVBlYCAgHg2AgAgAygCICICQZWAgIB4Rg0ACyADIAE2AhAgAyAbNgJ0IAMgHTYCcCADIBw2AmwgAyACNgJoIAMQ0yEgAyADKQNgNwMIIAMgAykDWDcDAAJAAkACQAJAAkACQAJAAkACQCACQYCAgIB4c0EVIAJBAEgbQX9qDg8BAAACAAAAAAAAAAMEBQYACyADIBs2AoQBIAMgHTYCgAEgAyAcNgJ8IAMgAjYCeCADIANB+ABqIANBnwFqQeDBgQEQlB42AkwgA0EBOgBIDAcLIANBADoASCADIBxB/wFxIgJBBiACQQZJGzoASQwFCyADQQA6AEggAyADKQNwIh5CBiAeQgZUGzwASQwECyADQcgAaiAdIBsQ1xAgHCAdEJ4jDAQLIANByABqIBwgHRDXEAwCCyADQcgAaiAdIBsQjwMgHCAdEJ4jDAILIANByABqIBwgHRCPAwsgA0HoAGoQhRQLAkAgAy0ASEUNACADKAJMIQIMFQsgAy0ASQ4HAgMEBQYHAQILQQAhAiAAQQA6AAYgACARQQFxOgAFIAAgDkEBcToABCAAIA9BAXE6AAMgACASQQFxOgACIAAgE0EBcToAASAAQQAgECAQQf8BcUEERhs6AAcgAyABNgIQDBQLIAMoAgAhAiADQZWAgIB4NgIAIAJBlYCAgHhGDQYgBiAMKAIINgIIIAYgDCkCADcCACADIAI2AnggA0H4AGoQhRQMDwsCQCATQf8BcUECRg0AQZy+gQFBFBCeGyECDBILIANB+ABqIAMQihAgAy0AeEEBRg0PIAMtAHkhEwwOCwJAIBJB/wFxQQJGDQBBsL6BAUEVEJ4bIQIMEQsgA0H4AGogAxCKECADLQB4QQFGDQ4gAy0AeSESDA0LAkAgD0H/AXFBAkYNAEHFvoEBQRUQnhshAgwQCyADKAIAIQIgA0GVgICAeDYCAAJAAkAgAkGVgICAeEYNACAKIAwoAgg2AgggCiAMKQIANwIAIAMgAjYCKCACQYCAgIB4c0EVIAJBAEgbIhpBdGpBAkkNAQJAIBpBFUYNACADQfgAaiADQShqEMwJIAMgA0H4AGpBqMGBAUHgv4EBEIgYNgIkIANBAToAICADQShqEIUUDAwLIAMoAjAhFyADKAIsIRogAyACNgJQIAMgGjYCSCADIBo2AkwgAyAaIBdBBXRqNgJUAkACQAJAIBdFDQAgAyAaQSBqIgE2AkwgGigCACIZQZWAgIB4Rg0AIAkgGigCDDYCCCAJIBopAgQ3AgAgAyAZNgJYIAMgGikCGDcDcCADIBopAhA3A2ggF0EBRw0BIANBlYCAgHg2AngMAgsgA0ELOgB4IAMgA0H4AGpBkMGBARCJGDYCJCADQQE6ACAMDAsgAyAaQcAAajYCTCADIAEpAwAiHjcDeCADIAEpAwg3A4ABIAMgASkDEDcDiAEgAyABKQMYNwOQASAep0GVgICAeEcNBwsgA0H4AGoQ1CEgByAIKQIANwIAIAcgCCgCCDYCCCADIAMpA2A3A4ABIAMgAykDWDcDeCADKAJoIRogA0HIAGoQxBogAyAaNgKIASADQSBqIANB+ABqEPMHIAJBf0oNCyADQShqEIUUDAsLQejAgQFBEBDUGyECDBALIAMgAykDMDcDgAEgAyADKQMoNwN4IANBlYCAgHg2AogBIANBIGogA0H4AGoQ8wcMCQsCQCAOQf8BcUECRg0AQdq+gQFBDRCeGyECDA8LIANB+ABqIAMQihAgAy0AeEEBRg0MIAMtAHkhDgwLCwJAIBBB/wFxQQRGDQBB576BAUEYEJ4bIQIMDgsgAygCACECIANBlYCAgHg2AgACQAJAIAJBlYCAgHhGDQAgCyAMKAIINgIIIAsgDCkCADcCACADIAI2AjggAkGAgICAeHNBFSACQQBIGyIaQXRqQQJJDQECQCAaQRVGDQAgA0H4AGogA0E4ahDMCSADIANB+ABqQajBgQFB4L+BARCIGDYCJCADQQE6ACAgA0E4ahCFFAwICyADKAJAIRcgAygCPCEaIAMgAjYCUCADIBo2AkggAyAaNgJMIAMgGiAXQQV0ajYCVAJAAkACQCAXRQ0AIAMgGkEgaiIBNgJMIBooAgAiGUGVgICAeEYNACAJIBooAgw2AgggCSAaKQIENwIAIAMgGTYCWCADIBopAhg3A3AgAyAaKQIQNwNoIBdBAUcNASADQZWAgIB4NgJ4DAILIANBCzoAeCADIANB+ABqQZDBgQEQiRg2AiQgA0EBOgAgDAgLIAMgGkHAAGo2AkwgAyABKQMAIh43A3ggAyABKQMINwOAASADIAEpAxA3A4gBIAMgASkDGDcDkAEgHqdBlYCAgHhHDQYLIANB+ABqENQhIAcgCCkCADcCACAHIAgoAgg2AgggAyADKQNgNwOAASADIAMpA1g3A3ggAygCaCEaIANByABqEMQaIAMgGjYCiAEgA0EgaiADQfgAahDcByACQX9KDQcgA0E4ahCFFAwHC0HowIEBQRAQ1BshAgwOCyADIAMpA0A3A4ABIAMgAykDODcDeCADQZWAgIB4NgKIASADQSBqIANB+ABqENwHDAULAkAgEUH/AXFBAkYNAEH/voEBQQ8QnhshAgwNCyADQfgAaiADEIoQIAMtAHhBAUYNCiADLQB5IREMCQtB6MCBAUEQENQbIQIMCwsgA0H4AGoQ1CEgA0ELOgB4IAMgA0H4AGpBkMGBARCJGDYCJCADQQE6ACAgA0HoAGoQhRQgA0HYAGoQhRQMAwsgA0H4AGoQ1CEgA0ELOgB4IAMgA0H4AGpBkMGBARCJGDYCJCADQQE6ACAgA0HoAGoQhRQgA0HYAGoQhRQLIANByABqEMQaIAJBf0oNACADQThqEIUUCyADLQAgQQFGDQIgAy0AISEQDAQLIANByABqEMQaIAJBf0oNACADQShqEIUUCyADLQAgQQFHDQELIAMoAiQhAgwECyADLQAhIQ8LIAMoAhwhDSADKAIYIQQgAygCFCEFIAMoAhAhAQwBCwsgAygCfCECCyAAIAI2AgRBASECCyAAIAI6AAAgAxDTISADQaABaiQAC4MUAg1/AX4jAEGwAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEQlgpB8ABGDQAgARCWCkHQAEcNAQsgASgCACIDKAJADQEgA0EANgJMIANBfzYCQCABEJYKIQQCQCABEOoeDQAgAiADKAJYIgU2AlQgAiADKQJQIg83AkwgAiAPNwNAIAIgBTYCSCACQQo2AnAgACABKAIEIAEoAgggAkHAAGogAkHwAGoQ2g4MBgsgARCWCkH7AEcNAiADQcQAaiEGIAJB8ABqIAEQjA4gAiACKAKEATYCOCACIAIpAnw3AzADQCABEOoeRQ0EIAEQlgpB/QBGDQQCQAJAIAEQlgoiBUGAAUkiB0UNAEEBIQgMAQsCQCAFQYAQTw0AQQIhCAwBC0EDQQQgBUGAgARJGyEICyADKAJMIgkhCgJAIAggBigCACAJa00NACAGIAkgCEEBQQEQ4hogAygCTCEKCyADKAJIIApqIQoCQAJAIAcNACAFQT9xQYB/ciEHIAVBBnYhCwJAIAVBgBBPDQAgCiAHOgABIAogC0HAAXI6AAAMAgsgBUEMdiEMIAtBP3FBgH9yIQsCQCAFQf//A0sNACAKIAc6AAIgCiALOgABIAogDEHgAXI6AAAMAgsgCiAHOgADIAogCzoAAiAKIAxBP3FBgH9yOgABIAogBUESdkFwcjoAAAwBCyAKIAU6AAALIAMgCCAJajYCTAwACwtBiN6JAUE6QcTeiQEQpCEAC0GY3YkBEPMdAAsgAiADKAJYNgI4IAIgAykCUDcDMAJAIAEQlgoiCEHcAEYNACABEOoeGkGAgICAeCEGDAILIAJBwABqIAEQjA4gAkEfNgJwIAAgASgCBCABKAIIIAJBwABqIAJB8ABqENoODAILAkACQAJAIAMoAlAiBSABKAIIRg0AIAIgARCWCiIFNgIsAkAgBUH9AEYNACACQSxqQYTbiQFB+N2JARC4HAALIAEQogkaIAJB8ABqIAMoAkgiByADKAJMIglBzombAUECEJMDAkAgAigCcA0AQQAhDQJAIAItAH4NACACLQB8IQYgAigCpAEhCiACKAKgASELIAIoAnQhAQJAA0ACQCABRQ0AAkAgASAKSQ0AIAEgCkYNAQwPCyALIAFqLAAAQUBIDQ4LAkAgASAKRg0AAkACQCALIAFqIggsAAAiBUF/TA0AIAVB/wFxIQUMAQsgCC0AAUE/cSEMIAVBH3EhDgJAIAVBX0sNACAOQQZ0IAxyIQUMAQsgDEEGdCAILQACQT9xciEMAkAgBUFwTw0AIAwgDkEMdHIhBQwBCyAMQQZ0IAgtAANBP3FyIA5BEnRBgIDwAHFyIQULAkAgBkEBcUUNACABIQoMAwtBASEGQQEhCAJAIAVBgAFJDQBBAiEIIAVBgBBJDQBBA0EEIAVBgIAESRshCAsgCCABaiEBDAELCyAGQQFxRQ0BCyACIAo2AkRBASENCyACIA02AkAMAwsgAkH4AGohASACKAKsASEGIAIoAqgBIQogAigCpAEhCCACKAKgASEFIAIoApQBQX9GDQEgAkHAAGogASAFIAggCiAGQQAQtAcMAgsgAiADQdAAaiIIKAIIIgk2AlQgAiAIKQIAIg83AkwgAiAPNwNAIAIgCTYCSCACQQo2AnAgACABKAIEIAUgAkHAAGogAkHwAGoQ2g4MAwsgAkHAAGogASAFIAggCiAGQQEQtAcLAkACQAJAIAIoAkANAEEAIQoDQCAHIApqIQgCQAJAIAkgCmsiBUEHSw0AQQAhAQJAIAUNAEEAIQgMAgsDQAJAIAggAWotAABBOkcNAEEBIQgMAwsgBSABQQFqIgFHDQALQQAhCCAFIQEMAQsgAkEgakE6IAggBRCUCiACKAIkIQEgAigCICEICwJAIAhBAXFFDQACQCABIApqIgEgCU8NACAHIAFqLQAAQTpHDQAgAkHwAGogAUEBQQEQqxEgAigCdCEGAkACQAJAIAIoAnBBAUYNACACKAJ4IQgCQCABRQ0AIAFFDQAgCCAHIAH8CgAACwJAIAkgAUEBaiIMTQ0AIAcgDGosAABBv39MDQILIAJB8ABqIAkgDGsiBUEBQQEQqxEgAigCdCEJIAIoAnBBAUYNAiACKAJ4IQpBASELIAVFDQcgBUUNCSAKIAcgDGogBfwKAAAMCQsgBiACKAJ4EOkgAAsgByAJIAwgCUHI3YkBELwiAAsgCSACKAJ4EOkgAAsgCSABQQFqIgpPDQELC0EAIQoDQCAHIApqIQgCQAJAIAkgCmsiBUEHSw0AQQAhAQJAIAUNAEEAIQgMAgsDQAJAIAggAWotAABBPUcNAEEBIQgMAwsgBSABQQFqIgFHDQALQQAhCCAFIQEMAQsgAkEYakE9IAggBRCUCiACKAIcIQEgAigCGCEICwJAIAhBAUcNAAJAIAEgCmoiASAJTw0AIAcgAWotAABBPUcNACACQRBqIAcgCSABELQYIAJBwABqIAIoAhAgAigCFBC+EiACQQhqIAcgCSABQQFqEJQYIAJB8ABqIAIoAgggAigCDBC+EiACKAJ4IQUgAigCdCEKIAIoAnAhCSACKAJIIQEgAigCRCEIIAIoAkAhBkEAIQsMBgsgCSABQQFqIgpPDQELCyACQfAAaiAJQQFBARCrESACKAJ0IQgCQCACKAJwQQFGDQAgAigCeCEBAkAgCUUNACAJRQ0AIAEgByAJ/AoAAAtBACELQYGAgIB4IQYMBAsgCCACKAJ4EOkgAAsCQCACKAJEIgFFDQACQCABIAlJDQAgASAJRg0BDAkLIAcgAWosAABBv39MDQgLIAJB8ABqIAFBAUEBEKsRIAIoAnQhBiACKAJwQQFGDQQgAigCeCEIAkACQCABDQBBAiEFDAELAkAgAUUNACAIIAcgAfwKAAALIAFBAmohBQsCQAJAIAUgCUkNACAJIQwgBSAJRg0BDAgLIAcgBWosAABBv39MDQcgBSEMCyACQfAAaiAJIAxrIgVBAUEBEKsRIAIoAnQhCSACKAJwQQFGDQUgAigCeCEKQQIhCyAFDQELQQAhBQwBCyAFRQ0AIAogByAMaiAF/AoAAAsgACALOgAcIAAgBTYCGCAAIAo2AhQgACAINgIIIAAgBjYCBCAAIAIpAzAiDzcCICAAIAmtQiCGIAGthDcCDCACIAIoAjg2AmAgAiADKQJQNwJkIAAgAikDYDcCKCACIAMoAlg2AmwgACACKQNoNwIwIAIgDzcDWCAAIARB0ABGOgA4IABBIjYCAAsgAyADKAJAQQFqNgJAIAJBsAFqJAAPCyAGIAIoAngQ6SAACyAJIAIoAngQ6SAACyAHIAkgBSAJQbjdiQEQvCIACyAHIAlBACABQajdiQEQvCIACyALIAogASAKQdiVmwEQvCIAC4UTAhd/An4jAEEwayIGJAACQAJAAkAgAygCECIHIAMoAhQiCEsNACACQQAgBSABKAK4AiIJayIKIAogBUsbIgtBICALQSBJGzYCDCAGQRhqIAIQzR0CQCAGKAIcIgtFDQAgC0ECdCILRQ0AIAYoAhhBACAL/AsACwJAIAVFDQAgBUECdCILRQ0AIARBACAL/AsACyABKAIkIgwoAtwCIg1FDQEgB0EBaiEOIAVBAWpBAXYhCyAEIQ8DQCALRQ0CIA8gDjYCACALQX9qIQsgD0EIaiEPIA1Bf2oiDQ0ADAILCyAAQQA2AgAMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAgAOAwIAAQILIAEoAiBFDQYgASgCHCgCACENDAILIAMoAgQhCyABLQAJQQFxRQ0CQQAhDSALQQFqIgsgASgCIE8NASABKAIcIAtBAnRqKAIAIQ0MAQsCQCAMKAKwAiAMKAK0AkYNACAGQQM6ACQgBkEANgIoIAZBJGoQyB4hCyAAQQI2AgAgACALNgIEDAkLIAEoAiBFDQMgASgCHCgCACENCyAHIAhJDQEgASgCKCEQQQAhEQwECyAGIAs2AiwgBkECNgIoIAZBAzoAJCAGQSRqEMgeIQsgAEECNgIAIAAgCzYCBAwGCyAKQSAgCkEgSRshEiAHIAMoAgwiEyAHIBNLGyEUIApBAnQhFSAEIAlBAnRqIRYgASgCKCEQIAMoAgghFyADLQAYQQFxIRggAS0ACEH/AXEhGUEAIREDQAJAAkACQAJAAkAgByIPIBRGDQAgD0EBaiEHIAEgDSAXIA9qIhotAAAQ1hohHSANIBBJDQQgASANEIEcIh6nIgtB/wdxRQ0DIA9BAEcgC3ENBCALQQJxDQQgC0EEcQ0BDAILIBQgE0H88oQBEO4WAAsgD0UNACAaQX9qLQAAIAwtAOACRw0CCwJAIAtBCHFFDQAgGi0AACAMLQDgAkcNAgsCQCALQRBxRQ0AIA9FDQACQCAaQX9qLQAAQXZqDgQBAwMAAwsgGi0AAEEKRg0CCwJAAkACQAJAAkACQCALQSBxRQ0AAkAgGi0AAEF2ag4EAAgIAQgLAkAgD0UNACAaQX9qLQAAIhtBDUYNCEEKIQ4gC0HAAHFFDQQMAwtBCiEOIAtBwABxDQFBCiEOIAtBgAFxDQQMBQsgC0HAAHFFDQIgGi0AACEOIA9FDQAgGkF/ai0AACEbDAELIA4tAJCRhQFFDQUgC0GAAXFFDQMMAgsgG0H/AXEtAJCRhQEgDi0AkJGFAUYNBAsgC0GAAXFFDQEgGi0AACEOIA9FDQAgGkF/ai0AAC0AkJGFASAOLQCQkYUBRw0DDAELIA4tAJCRhQENAgsCQCALQYACcUUNACAXIBMgDxCVBUH/AXFFDQILIAtBgARxRQ0AIBcgEyAPEOgDQf8BcUUNAQsCQCAeQiqIpyIcQQF0QQFyIgsgBU8NACAEIAtBAnRqIAc2AgALAkACQCAFIAlNDQAgBkEQaiACEM0dIAogBigCFCILRw0BAkAgFUUNACAWIAYoAhAgFfwKAAALIB5CCoinIg5FDQAgDmgiCyAKTw0AA0AgFiALQQJ0aiAHNgIAIA5BfiALd3EiDmgiCyASSQ0ACwsCQCAYDQBBASERIBlFDQIgHUKAgICAgIABg1ANAgsgACAcNgIEIABBATYCAAwICyAKIAtB7PKEARD2FgALIA1FDQQCQCAdpyILQf8HcUUNACAPQQBHIAtxDQUgC0ECcQ0FAkAgC0EEcUUNACAPRQ0AIBpBf2otAAAgDC0A4AJHDQYLAkAgC0EIcUUNACAaLQAAIAwtAOACRw0GCwJAIAtBEHFFDQAgD0UNAAJAIBpBf2otAABBdmoOBAEHBwAHCyAaLQAAQQpGDQYLAkACQAJAAkACQAJAIAtBIHFFDQACQCAaLQAAQXZqDgQADAwBDAsCQCAPRQ0AIBpBf2otAAAiDkENRg0MQQohDSALQcAAcQ0CDAMLQQohDSALQcAAcQ0DQQohDSALQYABcQ0EDAULIAtBwABxRQ0BIBotAAAhDSAPRQ0CIBpBf2otAAAhDgsgDkH/AXEtAJCRhQEgDS0AkJGFAUYNCQsgC0GAAXFFDQIgGi0AACENIA9FDQEgGkF/ai0AAC0AkJGFASANLQCQkYUBRw0IDAILIA0tAJCRhQFFDQcgC0GAAXFFDQELIA0tAJCRhQENBgsCQCALQYACcUUNACAXIBMgDxCVBUH/AXFFDQYLIAtBgARxRQ0AIBcgEyAPEOgDQf8BcUUNBQsgHUIriCEeIAZBCGogAhDNHQJAIB1CCoinIg9FDQAgD2giCyAGKAIMIg5PDQAgBigCCCENIA5BICAOQSBJGyEOA0AgDSALQQJ0aiAHNgIAIA9BfiALd3EiD2giCyAOSQ0ACwsgHqchDSAHIAhGDQMMAAsLQQBBAEGI+oQBEO4WAAtBAEEAQYj6hAEQ7hYACyANIBBJDQACQCABIA0QgRwiHaciC0H/B3FFDQAgAygCDCEPIAMoAgghBwJAIAhFDQAgC0EBcQ0CCwJAIAtBAnFFDQAgCCAPRw0CCwJAIAtBBHFFDQAgCEUNAAJAIAhBf2oiDSAPTw0AIAcgDWotAAAgDC0A4AJGDQEMAwsgDSAPQYDshAEQ7hYACwJAIAtBCHFFDQAgCCAPRg0AAkAgCCAPTw0AIAcgCGotAAAgDC0A4AJGDQEMAwsgCCAPQazthAEQ7hYACwJAIAtBEHFFDQAgByAPIAgQxxVFDQILAkAgC0EgcUUNACAHIA8gCBCPFkUNAgsCQCALQcAAcUUNACAHIA8gCBDbFEUNAgsCQCALQYABcUUNACAHIA8gCBCfFEUNAgsCQCALQYACcUUNACAHIA8gCBCVBUH/AXFFDQILIAtBgARxRQ0AIAcgDyAIEOgDQf8BcUUNAQtBASERAkAgHUIqiKciHEEBdEEBciILIAVPDQAgBCALQQJ0aiAIQQFqNgIACyAFIAlNDQAgBiACEM0dIAogBigCBCILRw0BIAQgCUECdGohBwJAIApBAnQiC0UNACAHIAYoAgAgC/wKAAALIB1CCoinIg9FDQBBASERIA9oIgsgCk8NACAIQQFqIQ0gCkEgIApBIEkbIQ4DQCAHIAtBAnRqIA02AgAgD0F+IAt3cSIPaCILIA5JDQALCyAAIBw2AgQgACARNgIADAELIAogC0Hs8oQBEPYWAAsgBkEwaiQAC9QUAhZ/AX4jAEGQAmsiAiQAIAJBADYCJCACQoCAgIDAADcCHCACQYCAgIB4NgIoIAEoAgghAyABKAIEIQQgAiABKAIANgI8IAIgBDYCOCACIAQ2AjQgAiAEIANBHGxqIgU2AkACQAJAAkACQCADDQAgAiAENgI4IAJBNGoQyxgMAQsgAkGMAWpBBGohBiACQcQAakEEaiEHQQQhCEEAIQkCQANAIAQiAUEcaiEEIAEoAgAiA0EIRg0BIAcgASkCFDcCECAHIAEpAgw3AgggByABKQIENwIAIAIgAzYCRCACKQJEIRggAkEANgJEIAIgAikCVDcDcCACIAIpAkw3A2ggAiAYNwNgEPoXIQEgAigCXCEKIAIgATYCXCACQcQAahC3IQJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCYA4HBgEFBQUFAAULIAIoAmwhAyACKAJoIQEgAiACKAJkNgKEASACIAE2AnwgAiABIANBHGxqIgs2AogBIAMNAiACIAE2AoABIAJB/ABqEMsYDAELIAIoAmghASACKAJkIQMCQAJAIAIoAihBgICAgHhGDQAgAkEoaiADIAMgAWoQ2RQMAQsgAkH8AGogAUEBQQEQqxEgAigCgAEhDCACKAJ8QQFGDQMgAigChAEhDQJAIAFFDQAgAUUNACANIAMgAfwKAAALIAIgATYCMCACIA02AiwgAiAMNgIoCyABRQ0AIAMgAUEBEM4UCyAKQTRBBBDOFAwHCwNAIAEoAgAiDEEIRg0EIAYgAUEUaiINKQIANwIQIAYgAUEMaiIOKQIANwIIIAYgAUEEaikCADcCACACQQA2AowBIAIoApABIQ8gAigClAEhAyACIA0oAgA2ArABIAIgDikCADcDqAEQ+hchDSACKAKkASEOIAIgDTYCpAEgAkGMAWoQtyECQAJAAkAgDEEBRw0AAkACQCACKAIoQYCAgIB4Rg0AIAJBKGogDyAPIANqENkUDAELIAJBhAJqIANBAUEBEKsRIAIoAogCIQwgAigChAJBAUYNAiACKAKMAiENAkAgA0UNACADRQ0AIA0gDyAD/AoAAAsgAiADNgIwIAIgDTYCLCACIAw2AigLAkAgA0UNACAPIANBARDOFAsgDkE0QQQQzhQMAgsgAiACKAKwATYCwAEgAiACKQOoATcDuAEgAigCKCENIAJBgICAgHg2AigCQCANQYCAgIB4Rg0AIAIgAikCLDcCyAEgAiANNgLEASACQRBqIAJBxAFqENgUAkACQCACKAIUIg1FDQBBASEQIAIoAhAiESANELIRIRIgDSETDAELQQAhEBD6FyESCwJAIAkgAigCHEcNACACQRxqEJEaIAIoAiAhCAsgCCAJQRxsaiINIBI2AhggDSATNgIIIA0gETYCBCANIBA2AgAgAiAJQQFqIgk2AiQLAkAgCSACKAIcRw0AIAJBHGoQkRoLIAIoAiAiCCAJQRxsaiINIAM2AgggDSAPNgIEIA0gDDYCACANIAIpA7gBNwIMIA0gAigCwAE2AhQgDSAONgIYIAIgCUEBaiIJNgIkDAELIAwgAigCjAIQ6SAACyABQRxqIgEgC0YNBQwACwsgDCACKAKEARDpIAALIAIgAikDcDcD4AEgAiACKQNoNwPYASACIAIpA2A3A9ABIAIoAighASACQYCAgIB4NgIoAkAgAUGAgICAeEYNACACIAIpAiw3AvABIAIgATYC7AEgAkEIaiACQewBahDYFAJAAkAgAigCDCIBRQ0AQQEhAyACKAIIIhQgARCyESENIAEhFQwBC0EAIQMQ+hchDQsCQCAJIAIoAhxHDQAgAkEcahCRGiACKAIgIQgLIAggCUEcbGoiASANNgIYIAEgFTYCCCABIBQ2AgQgASADNgIAIAIgCUEBaiIJNgIkCwJAIAkgAigCHEcNACACQRxqEJEaCyACKAIgIgggCUEcbGoiASACKQPQATcCACABIAIpA9gBNwIIIAEgAikD4AE3AhAgASAKNgIYIAIgCUEBaiIJNgIkDAQLIApBNEEEEM4UDAILIAFBHGohCwsgAiALNgKAASACKAJgIQEgAkH8AGoQyxggCkE0QQQQzhQgAUEBRg0BIAFBBkYNAQsgAkHgAGoQ6gsLIAQgBUcNAAsgBSEECyACIAQ2AjggAigCKCEBIAIpAiwhGCACQTRqEMsYAkAgAUGAgICAeEYNACACIBg3AvwBIAIgATYC+AEgAiACQfgBahDYFAJAAkAgAigCBCIDRQ0AQQEhBiACKAIAIg0gAxCyESEMDAELQQAhBhD6FyEMCwJAIAkgAigCHEcNACACQRxqEJEaIAIoAiAhCAsgCCAJQRxsaiIBIAw2AhggASADNgIIIAEgDTYCBCABIAY2AgAgAiAJQQFqIgk2AiQLAkACQAJAAkAgCQ4CBAABCyACQQA2AiQgAigCICIBKAIAIgNBCEYNASAAIAM2AgAgACABKQIENwIEIAAgASkCDDcCDCAAIAEpAhQ3AhQMBAsgAigCICIVQRhqIQYgFSAJQRxsIgVqIRRBACEWIAUhEkEBIQdBACEXQQEhCEEBIQpBACEPQQAhEEEAIQNBASEOQQEhBEEBIQsDQCAGKAIAIQEgDkEBcSENQQAhDgJAIA1FDQAgAS0AMCEOCyAEQQFxIQ1BACEMQQAhBAJAIA1FDQAgAS0AMSEECyABKAIsIRMgASgCFCENAkAgC0EBcUUNACABLQAyIQwLIAwhCyADIBNqIQwgDSAPaiEPAkACQAJAIAdBAUcNACABKAIADQELQQAhBwwBC0F/IBcgASgCBGoiByAHIBdJGyEXQQEhBwsgASgCGCETIAwgA0khAyAPIA1JIQ0gASgCECERAkACQAJAIAhBAXFFDQAgASgCCA0BC0EAIQgMAQsgASgCDCAWaiIBIBZPIQggASEWCyATIBByIRBBfyAMIAMbIQNBfyAPIA0bIQ8gESAKcSEKIAZBHGohBiASQWRqIhINAAsgC0EBcSELIARBAXEhBCAOQQFxIRJBACEGQQAhDQJAA0AgBUUNASAVKAIYIgEoAiQgBnIhBiABKAIcIA1yIQ0gASgCCEEBRw0BIAVBZGohBSAVQRxqIRUgASgCDEUNAAsLIAlBZGwhCUEAIQxBACEOA0AgCUUNAiAUQXxqKAIAIgEoAiggDHIhDCABKAIgIA5yIQ4gASgCCEEBRw0CIAlBHGohCSAUQWRqIRQgASgCDEUNAAwCCwtBmNiJARCwIwALAkBBNBCJASIBDQBBBEE0EI0kAAsgASALOgAyIAEgBDoAMSABIBI6ADAgASADNgIsIAEgDDYCKCABIAY2AiQgASAONgIgIAEgDTYCHCABIBA2AhggASAPNgIUIAEgCjYCECABIBY2AgwgASAINgIIIAEgFzYCBCABIAc2AgAgACACKQIcNwIEIAAgAigCJDYCDCAAIAE2AhggAEEGNgIADAILIAAQ+hc2AhggAEEANgIACyACQRxqEIgbCyACQZACaiQAC/kRARR/IwBBEGsiBiQAAkACQAJAAkAgAUEhTw0AIAEhBwwBCyACQX5qIQgDQAJAIAQNACAAIAEgAiADQQEQ1AIMAwsgACABQfj///8DcWohCSAAIAFBA3YiCkEObGohBwJAAkAgAUHAAEkNACAAIAkgByAKEIsMIQsMAQsCQAJAIAAtAAAiCiAJLQAAIgxGDQAgCiAMSSENDAELIAAtAAEgCS0AAUkhDQsCQAJAIAogBy0AACIORg0AIAogDkkhCgwBCyAALQABIActAAFJIQoLIAAhCyANIApHDQACQAJAIAwgDkYNACAMIA5JIQoMAQsgCS0AASAHLQABSSEKCyAHIAkgDSAKcxshCwsgBEF/aiEEIAYgCy0AASIPOgABIAYgCy0AACIQOgAAIAsgAGtBAXYhEQJAAkAgBUUNAAJAIAUtAAAiCSAQQf8BcSIHRw0AIAUtAAEgD0H/AXFJDQEMAgsgCSAHTw0BCyADIAFJDQQgAiABQQF0IhJqIQ1BACEHIAAhCiARIRMDQAJAAkAgCiAAQQAgE0F9aiIJIAkgE0sbQQF0aiIUSQ0AIBAhFQwBCyALLQAAIRVBACEOIBBB/wFxIRZBACEMA0ACQAJAIAogDGoiCS0AACIQIBZGDQAgECAWSSEQDAELIAlBAWotAAAgD0H/AXFJIRALIAIgDSAOaiIXQX5qIBAbIAdBAXRqIAkvAAA7AAAgByAQaiEQAkACQCAJQQJqIhgtAAAiGSAVQf8BcSIHRg0AIBkgB0khGQwBCyAJQQNqLQAAIAstAAEiD0khGQsgAiAXQXxqIBkbIBBBAXRqIBgvAAA7AAAgECAZaiEQAkACQCAJQQRqIhgtAAAiGSAHRg0AIBkgB0khGQwBCyAJQQVqLQAAIAstAAEiD0khGQsgAiAXQXpqIBkbIBBBAXRqIBgvAAA7AAAgECAZaiEQAkACQCAJQQZqIhctAAAiGSAHRg0AIBkgB0khBwwBCyAJQQdqLQAAIAstAAEiD0khBwsgAiAOQXhqIg4gDWogBxsgEEEBdGogFy8AADsAACAMQQhqIQwgECAHaiEHIAlBCGogFEkNAAsgCiAMaiEKIA0gDGshDQsCQAJAIAogACATQQF0aiIOSQ0AIBUhEAwBCyALLQAAIRADQAJAAkAgCi0AACIJIBBB/wFxIgxGDQAgCSAMSSEJDAELIApBAWotAAAgCy0AASIPSSEJCyACIA1BfmoiDSAJGyAHQQF0aiAKLwAAOwAAIAcgCWohByAKQQJqIgogDkkNAAsLAkAgEyABRg0AIA1BfmoiDSAHQQF0aiAKLwAAOwAAIApBAmohCiABIRMMAQsLAkAgB0EBdCIMRQ0AIAAgAiAM/AoAAAsgASAHayEOAkAgASAHRg0AIAggEmohCSAAIAxqIQogDiENA0AgCiAJLwAAOwAAIAlBfmohCSAKQQJqIQogDUF/aiINDQALCyAHRQ0AAkAgASAHSQ0AIAAgDGogDiACIAMgBCAGENUBIAchASAHQSFJDQMMAgtBtP2aAUETQejpmgEQ1xsMBAsgAyABSQ0DIAIgAUEBdCIVaiEMQQAhCiAAIQ0DQAJAIA0gAEEAIBFBfWoiCSAJIBFLG0EBdGoiGE8NACALLQAAIRZBACEQQQAhDgNAAkACQCAWQf8BcSIHIA0gDmoiCS0AACIXRg0AIAcgF0khFwwBCyALLQABIAlBAWotAABJIRcLIAwgEGoiGUF+aiACIBcbIApBAXRqIAkvAAA7AAAgCiAXQQFzaiEKAkACQCAHIAlBAmoiDy0AACIXRg0AIAcgF0khFwwBCyALLQABIAlBA2otAABJIRcLIBlBfGogAiAXGyAKQQF0aiAPLwAAOwAAIAogF0EBc2ohCgJAAkAgByAJQQRqIg8tAAAiF0YNACAHIBdJIRcMAQsgCy0AASAJQQVqLQAASSEXCyAZQXpqIAIgFxsgCkEBdGogDy8AADsAACAKIBdBAXNqIQoCQAJAIAcgCUEGaiIXLQAAIhlGDQAgByAZSSEHDAELIAstAAEgCUEHai0AAEkhBwsgEEF4aiIQIAxqIAIgBxsgCkEBdGogFy8AADsAACAOQQhqIQ4gCiAHQQFzaiEKIAlBCGogGEkNAAsgDSAOaiENIAwgDmshDAsCQCANIAAgEUEBdGoiDk8NACALLQAAQf8BcSEHA0ACQAJAIAcgDS0AACIJRg0AIAcgCUkhCQwBCyALLQABIA1BAWotAABJIQkLIAxBfmoiDCACIAkbIApBAXRqIA0vAAA7AAAgCiAJQQFzaiEKIA1BAmoiDSAOSQ0ACwsCQCARIAFGDQAgAiAKQQF0aiANLwAAOwAAIA1BAmohDSAKQQFqIQogDEF+aiEMIAEhEQwBCwsCQCAKQQF0Ig5FDQAgACACIA78CgAACyABIApGDQIgCCAVaiEJIAAgDmohDSABIAprIgchDANAIA0gCS8AADsAACAJQX5qIQkgDUECaiENIAxBf2oiDA0ACwJAIAEgCkkNACAAIA5qIQBBACEFIAchASAHQSFJDQIMAQsLIAogASABQfjpmgEQiwoACyAHQQJJDQAgAyAHQRBqSQ0BIAdBAXYhEAJAAkACQCAHQQ9LDQAgB0EHTQ0BIAAgAhCOCSAAIBBBAXQiCWogAiAJahCOCUEEIRcMAgsgACACIAIgB0EBdGoiCRDZHyAAIBBBAXQiCmogAiAKaiAJQRBqENkfQQghFwwBCyACIAAvAAA7AABBASEXIAIgEEEBdCIJaiAAIAlqLwAAOwAAC0EAIQkgBkEANgIIQQAgF2shCyAAIBdBAXQiCmohGCACIApqIRYgBiAQNgIMIAcgEGshGSAGQQhqIQ8DQCAJIQ4CQCAXIBkgECAPIAlBAnRqKAIAIgkbIgpPDQAgAiAJQQF0IglqIQwgCyAKaiENIBggCWohCiAWIAlqIQkDQCAJIAovAAA7AAAgDCAJELMMIApBAmohCiAJQQJqIQkgDUF/aiINDQALC0EBIQkgDkEBcUUNAAsgAiAHIAAQ+wgLIAZBEGokAA8LAAvqEwIdfwN+IwBBMGsiAiQAAkACQCABKAIAIgNBkd+BAUERIAEoAgQiBCgCDCIFEQwADQAgAEEoaiEGIAAoAigiB0ECaiEIIAAoAsACIQkgACgCvAIhCiAAKAIEIQsgACgCCCEMIAAoArgCIQ1BACEOA0ACQAJAAkACQAJAAkAgDCAORg0AIAwgDmshDyALIA5BAnRqIRACQAJAAkACQCAODQAgECgCACIBQf8BcSERQQAhEgwBCyAQKAIAIgFB/wFxIRFBACESIA4gDU0NAQtBACETDAELAkACQCARQf8BRw0AIAghFCAIIA9JDQEgCCAPQfzthAEQ7hYACyARIBFBAnZqIAFBA3FBAEdqQQJqIhQgD08NAwtBASESIBAgFEECdGooAgAiFEEBIBRBf0obIRMLAkACQAJAAkACQCABQf8BcUGCfmoOAgEAAgsCQCAPQQFGDQAgByAPQX5qIgFLDQcgEEEIaiEVIBAoAgQhAUECIRYgByEXDAQLQQFBAUG8zYEBEO4WAAsCQAJAIA9Bf2oOAgABAwtBAUEBQdzNgQEQ7hYAC0ECQQJB7M2BARDuFgALAkAgD0EBRg0AIBFBAnYgAUEDcUEAR2oiFyAPQX5qIgFLDQYgESAPIBdBAmoiFGsiAUsNByAQQQhqIRUgECgCBCEBIBAgFEECdGohGEEAIRYMAgtBAUEBQfzNgQEQ7hYACyABQQh2IRkgECgCCCEVIBAoAgQhAUEBIRYLAkACQAJAIA5FDQAgDiAKRiAOIAlGciEUIA4gDU0NAiAUDQEgA0GFn4UBQQIgBREMAA0KDAgLIANBiZ+FAUECIAURDAANCQwHCyADQezHgQFBAiAFEQwADQgMBgsCQCAUDQAgA0GHn4UBQQIgBREMAA0IDAYLIANB7seBAUECIAURDAANBwwFCyACQcsANgIcIAIgAEHEAmo2AhhBASEaIAMgBEHetYEBIAJBGGoQxgYNByACIAAoAhwiAUEARzoAFCACQcwANgIcIAIgAkEUajYCGCADIARBtbSBASACQRhqEMYGDQcgAkE9NgIcIAIgAEEYajYCGCADIARBq7WBASACQRhqEMYGDQcgAiAAKAIUIhQ2AhQgAkE9NgIcIAIgAkEUajYCGCADIARBlrWBASACQRhqEMYGDQcgAkE9NgIcIAIgAEGsAmo2AhggAyAEQdu0gQEgAkEYahDGBg0HIAJBPTYCHCACIABBsAJqNgIYIAMgBEH5tIEBIAJBGGoQxgYNByACQT02AhwgAiAGNgIYIAMgBEHFtIEBIAJBGGoQxgYNByACQc0ANgIcIAIgAEEsajYCGCADIARB/bOBASACQRhqEMYGDQcgAiAAKAIkQQAgARsgFCAMakECdGo2AhQgAkE9NgIcIAIgAkEUajYCGCADIARBvrWBASACQRhqEMYGDQcgA0Hym4UBQQIgBREMACEaDAcLIBQgD0GM7oQBEO4WAAtBACAHIAFBzM2BARCLCgALQQAgFyABQYzOgQEQiwoAC0EAIBEgAUGczoEBEIsKAAsgAiAONgIMIAIgATYCFCACQQc2AiQgAkEHNgIcIAIgAkEUajYCICACIAJBDGo2AhhBASEaIAMgBEG034EBIAJBGGoQxgYNAkEAIRtBACEUQQAhHANAIBshAQJAAkACQAJAA0AgICEfAkACQAJAAkACQAJAAkACQCAWDgMCAAECCyABDQJBASEbIBkhHSAVIQEMBQsgASAXTw0BIBUhHiABIR0MAwsgASARSQ0BCyAUQQFxIR1BACEUIB8hICAdDQNBASEaIANBkvKaAUEBIAURDAANDAJAIA5Bf2ogDU8NACADQcnfgQFBEiAFEQwADQ0CQCATRQ0AQQAhAQNAIAIgATYCGCAIIRQCQCAQLQAAIh1B/wFGDQAgHSAdQQJ2aiAdQQNxQQBHakECaiEUCwJAIBQgD08NAAJAAkACQAJAIBAgFEECdGooAgAiHUF/TA0AIBQgAWpBAWoiFCAPSQ0BIBQgD0HM7YQBEO4WAAsgAUUNAUEAQcjEmAEgAkEYakEAIAFB3O2EARCjHAALIBAgFEECdGooAgAhFCABRQ0BIANB36aYAUECIAURDAANEgwBCyAdQf////8HcSEUCyACIBQ2AhQgAkEHNgIcIAIgAkEUajYCGCADIARBzZWAASACQRhqEMYGDRAgEyABQQFqIgFHDQEMAgsLIBQgD0G87YQBEO4WAAtBASEaIANBkvKaAUEBIAURDAANDQsCQCAODQBBASEaIAJBATYCFCACQQc2AhwgAiACQRRqNgIYIAMgBEHu3oEBIAJBGGoQxgYNDQtBAiEWIAchHQJAAkACQCAQLQAAIgFBgn5qDgIAAgELQQEhHQwBCyABQQJ2IAFBA3FBAEdqQQJqIRYgASEdC0EAIRQCQCASRQ0AAkACQAJAAkAgAUH/AUcNACAIIA9JDQEgCCAPQfzthAEQ7hYACyABIAFBAnZqIAFBA3FBAEdqQQJqIgEgD0kNASABIA9BjO6EARDuFgALQQEhFCAQIAhBAnRqKAIAIgFBAEgNAiABQQFHDQEMAgtBASEUIBAgAUECdGooAgAiAUEASA0BIAFBAUYNAQsgAUEBaiEUCwJAAkAgFiAOaiAdaiAUaiIBIA5JDQAgAUH/////B08NASABIQ4gASAMTQ0MIAEgDCAMQaTfgQEQiwoAC0Hc34EBELAjAAsgAiABrTcDGEHQ/ZoBQSsgAkEYakGEyoEBQezfgQEQzxQACyABQQJ2Ih0gF08NBCACIBUgHUECdGooAgA2AhggAkEYaiABQQNxci0AACEdIBghHgsgAUEBaiEbIB4gAUECdGooAgAhAQsgFEEBcUUNAyABrUIghiAdrUL/AYMiIUIIhoQhIAJAIAEgH0IgiKdGDQAgICAhhCEgQQEhFCAbIQEMAQsgICAfQv8Bg4QhIAwFCyAfQoCAgIBwg0KAgICAEFENAAsgHEUNAiADQd+mmAFBAiAFEQwADQcMAgsgHSAXQcTIgQEQ7hYACyABrUIghiAdrUL/AYMiH0IIhoQgH4QhIAwBCyAcQQFqIRwgH0IgiKchAQJAIB+nIh1B/wFxIB9CCIinIh5B/wFxRg0AIAIgHToAEyACIB46AAwgAiABNgIUIAJBPTYCLCACQc4ANgIkIAJBzgA2AhwgAiACQRRqNgIoIAIgAkEMajYCICACIAJBE2o2AhggAyAEQcmMgAEgAkEYahDGBkUNAgwFCyACIB06AAwgAiABNgIUIAJBPTYCJCACQc4ANgIcIAIgAkEUajYCICACIAJBDGo2AhggAyAEQcyMgAEgAkEYahDGBkUNAQwEC0EBIRQMAAsLC0EBIRoLIAJBMGokACAaC4oWAh9/An4jAEHAAWsiAiQAIAJBADYCJCACQoCAgICAATcCHAJAAkAgAS0AuAFBAUYNACABQQxqIQMgAUEIaiEEIAFBmAFqIQUgAUGMAWohBiABQbABaiEHIAJBmAFqQR1qIQggAkEoakEIaiEJIAJBmAFqQQhqIQpBACELQQAhDEEIIQ1BACEOQQAhDwNAAkAgD0H+/3tLDQAgDyAOckUNACACQfiAgIB4NgKYASABIA8gDiACQZgBahDcHQsgASgCsAEhECACQZgBaiABQQAQ2gEgAigCnAEhEQJAAkACQAJAIAIoApgBIhJBgICAgHhHDQAgAEGAgICAeDYCACAAIBE2AgQMAQsgAigCoAEhEwJAAkACQAJAAkACQAJAAkACQAJAIAEtALgBQRxHIhQNACABKAKwASEPIAEoAogBIRUgAUELNgKIASAVQQtGDQEgAiAFKAIINgKgASACIAUpAgA3A5gBAkAgBCgCAEEKRg0AIAQQtQsLIAQgFTYCACADIAYpAgA3AgAgAyAGKAIINgIIDAILAkACQAJAAkAgAS0AgQFBIHFFDQAgAkGYAWogAUHlgpsBQQVBABDjAiACLQCYAQ0GQQMhFkEAIRUCQCACLQCZASIXQaQBRg0AQYvwmgEhGEECIRkCQAJAAkACQAJAAkAgF0Ggf2oOMQMGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYCBgYEAAEGC0EBIRVBASEWDAULQQAhFgwDC0GN8JoBIRhBAyEZCyABKAKsASEXIAEoAqgBIRogGCAZEPsYISEgAkGlgYCAeDYCmAEgAiAhNwOgASABIBogFyACQZgBahDcHQwCC0ECIRYLQQEhFQsgAkGYAWogAUHugpsBQQFBABDjAiACLQCYAUEBRg0GIAItAJkBIRogAkGYAWogAUGk/5oBQQFBABDjAiACLQCYAUEBRg0GIAItAJkBIRsCQCAVIBpBpAFHcg0AIBtBpAFGDQELIAJBmAFqIAEQ7wEgAigCnAEhHCACKAKYASIVQQdHDQEgHCEdDAcLIAJBmAFqIAEQ7wEgAigCnAEhHSACKAKYASIaQQdGDQYgAiAIKQAANwNQIAIgCCgABzYAVyACLQC0ASEYIAIoArABIRkgAikDqAEhISACKAKkASEeIAIoAqABIRcgASgCrAEhGyAcIRYMAQsgAiAIKQAANwOIASACIAgoAAc2AI8BIAItALQBIRggAigCsAEhGSACKAKsASEeIAIpAqQBISIgAigCoAEhFwJAAkACQCAVDgUABAQEAQQLIAIgAigAjwE2AH8gAiACKQOIATcDeCAerUIghiAiQiCIhCEhICKnIR4MAQtBAiEYIBchHiAcIRcgIiEhCyAaQaQBRyEfIBtBpAFHISAgAiACKQN4NwNQIAIgAigAfzYAVyABKAKsASEbQQchGgsgAiACKQNQNwNgIAIgAigAVzYAZwJAIAwgAigCHEcNACACQRxqEK8aIAIoAiAhDQsgDSALaiIVIBo2AgAgFUEcaiAYOgAAIBVBGGogGTYCACAVQRBqICE3AwAgFUEMaiAeNgIAIBVBCGogFzYCACAVQQRqIB02AgAgFUEdaiACKQNgNwAAIBVBJGogAigAZzYAACAVQT5qIBY6AAAgFUE9aiAgOgAAIBVBPGogHzoAACAVQThqIBM2AgAgFUE0aiARNgIAIBVBMGogEjYCACAVQSxqIBs2AgAgFUEoaiAQNgIAIAIgDEEBajYCJCAWIRwMCQsgCCACKQOIATcAACAIIAIoAI8BNgAHIAIgGDoAtAEgAiAZNgKwASACIB42AqwBIAIgIjcCpAEgAiAXNgKgASACIBw2ApwBIAIgFTYCmAEgAkEQaiACQZgBahDKAyACKAIUIRUgAigCECEHIAJB3ICAgHg2AiggByAVIAJBKGoQsxshHQJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAkGYAWoQyQsMAwsgAkGYAWogARDOAQsgASABKAK0ASIYNgKsASABIAEoArABNgKoASAHIAIpA5gBNwIAIAcgAigCoAE2AgggAkGYAWogAUEAEHIgAigCnAEhFSACKAKYASIWQQdHDQIgAEGAgICAeDYCACAAIBU2AgQMAwsgAigCnAEhHQsgESATENodIBIgERDnIyAAQYCAgIB4NgIAIAAgHTYCBAwFCyAJIAopAxg3AxggCSAKKQMQNwMQIAkgCikDCDcDCCAJIAopAwA3AwAgAiAVNgIsIAIgFjYCKEEAIRcCQAJAIAEtAIEBQSBxRQ0AIAEtALgBQf8BcUEJRw0AIAEgASgCeCIOQYAgcjYCeCABKAKwASENIAEoAogBIRUgAUELNgKIAQJAAkAgFUELRg0AIAIgBSgCCDYCoAEgAiAFKQIANwOYAQJAIAQoAgBBCkYNACAEELULCyAEIBU2AgAgAyAGKQIANwIAIAMgBigCCDYCCAwBCyACQZgBaiABEM4BCyABKQOwASEhIAcgAikDmAE3AgAgByACKAKgATYCCCABICE3A6gBIAEgASgCeCIVQf///79/cTYCeCACQQhqIAEoArABIAEQ7gMgAigCCCEWIAEgFTYCeCACKAIMIRUgFkEBcQ0BIAEoAqwBIRZBDBCJASIXRQ0DIBcgFjYCCCAXIA02AgQgFyAVNgIAIAEgDjYCeAsgASgCrAEhDkEoEIkBIhZFDQMgFiACKQNINwMgIBYgAikDQDcDGCAWIAIpAzg3AxAgFiACKQMwNwMIIBYgAikDKDcDACABKAKsASEZAkAgDCACKAIcRw0AIAJBHGoQrxoLIAIoAiAiDSALaiIVQQI2AgAgFUE4aiATNgIAIBVBNGogETYCACAVQTBqIBI2AgAgFUEsaiAZNgIAIBVBKGogEDYCACAVQRhqIBc2AgAgFUEUaiAYNgIAIBVBEGogDzYCACAVQQxqIA42AgAgFUEIaiAPNgIAIBVBBGogFjYCACACIAxBAWo2AiQMBAsgACAVNgIEIAEgDjYCeCAAQYCAgIB4NgIAIAJBKGoQyQsLIBEgExDaHSASIBEQ5yMMAwtBBEEMEI0kAAtBCEEoEI0kAAsCQAJAIAEtALgBIhVBB0YNACAVQQFHDQEMBgsgASgCiAEhFSABQQs2AogBAkACQCAVQQtGDQAgAiAFKAIINgKgASACIAUpAgA3A5gBAkAgBCgCAEEKRg0AIAQQtQsLIAQgFTYCACADIAYpAgA3AgAgAyAGKAIINgIIDAELIAJBmAFqIAEQzgELIAEgASgCtAEiFjYCrAEgASABKAKwASIRNgKoASAHIAIpA5gBNwIAIAcgAigCoAE2AgggAS0AuAEhFSAUDQMgFUH/AXFBAUYNAgwDCyABKAK0ASEHIAEoArABIRYgAkHsAGogFRCyJSACQY8CrUIghkGc5JoBrYQ3AyggAkGYAWpBzZWAASACQShqEK8QIAIgAikCbDcCpAEgAiACKAJ0NgKsASAWIAcgAkGYAWoQsxshFQJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgDEEBaiEMIABBgICAgHg2AgAgACAVNgIECyACKAIgIgEgDBCTHyACKAIcIAEQ6SMMBAsgAkG6gICAeDYCmAEgASARIBYgAkGYAWoQ3B0gAS0AuAEhFQsgC0HAAGohCyAMQQFqIQwgFUH/AXFBAUcNAAsLIAAgAigCJDYCCCAAIAIpAhw3AgALIAJBwAFqJAALyhEBE38jAEEQayIGJAACQAJAAkACQCABQSFPDQAgASEHDAELIAJBeGohCANAAkAgBA0AIAAgASACIANBARDTAgwDCyAAIAFBA3YiCUE4bGohCiAAIAlBBXRqIQcCQAJAIAFBwABJDQAgACAHIAogCRCKDCELDAELAkACQCAAKAIAIgkgBygCACIMRg0AIAkgDEkhDQwBCyAAKAIEIAcoAgRJIQ0LAkACQCAJIAooAgAiDkYNACAJIA5JIQkMAQsgACgCBCAKKAIESSEJCyAAIQsgDSAJRw0AAkACQCAMIA5GDQAgDCAOSSEJDAELIAcoAgQgCigCBEkhCQsgCiAHIA0gCXMbIQsLIARBf2ohBCAGIAsoAgQiDzYCBCAGIAsoAgAiDjYCACALIABrQQN2IRACQAJAIAVFDQACQCAFKAIAIgogDkcNACAFKAIEIA9JDQEMAgsgCiAOTw0BCyADIAFJDQQgAiABQQN0IhFqIQxBACEHIAAhCSAQIRIDQAJAAkAgCSAAQQAgEkF9aiIKIAogEksbQQN0aiITSQ0AIA4hDQwBCyALKAIAIQ1BACEUQQAhFQNAAkACQCAJIBVqIgooAgAiFiAORg0AIBYgDkkhFgwBCyAKQQRqKAIAIA9JIRYLIAIgDCAUaiIXQXhqIBYbIAdBA3RqIAopAgA3AgAgByAWaiEHAkACQCAKQQhqIhgoAgAiFiANRg0AIBYgDUkhFgwBCyAKQQxqKAIAIAsoAgQiD0khFgsgAiAXQXBqIBYbIAdBA3RqIBgpAgA3AgAgByAWaiEHAkACQCAKQRBqIhgoAgAiFiANRg0AIBYgDUkhFgwBCyAKQRRqKAIAIAsoAgQiD0khFgsgAiAXQWhqIBYbIAdBA3RqIBgpAgA3AgAgByAWaiEHAkACQCAKQRhqIhcoAgAiFiANRg0AIBYgDUkhFgwBCyAKQRxqKAIAIAsoAgQiD0khFgsgAiAUQWBqIhQgDGogFhsgB0EDdGogFykCADcCACAVQSBqIRUgByAWaiEHIApBIGogE0kNAAsgCSAVaiEJIAwgFWshDAsCQAJAIAkgACASQQN0aiIVSQ0AIA0hDgwBCyALKAIAIQ4DQAJAAkAgCSgCACIKIA5GDQAgCiAOSSEKDAELIAlBBGooAgAgCygCBCIPSSEKCyACIAxBeGoiDCAKGyAHQQN0aiAJKQIANwIAIAcgCmohByAJQQhqIgkgFUkNAAsLAkAgEiABRg0AIAxBeGoiDCAHQQN0aiAJKQIANwIAIAlBCGohCSABIRIMAQsLAkAgB0EDdCIMRQ0AIAAgAiAM/AoAAAsgASAHayEOAkAgASAHRg0AIAggEWohCiAAIAxqIQkgDiENA0AgCSAKKQIANwIAIApBeGohCiAJQQhqIQkgDUF/aiINDQALCyAHRQ0AAkAgASAHSQ0AIAAgDGogDiACIAMgBCAGENgBIAchASAHQSFJDQMMAgtBtP2aAUETQejpmgEQ1xsMBAsgAyABSQ0DIAIgAUEDdCIYaiEMQQAhCSAAIQ0DQAJAIA0gAEEAIBBBfWoiCiAKIBBLG0EDdGoiD08NACALKAIAIQdBACEVQQAhDgNAAkACQCAHIA0gDmoiCigCACIURg0AIAcgFEkhFAwBCyALKAIEIApBBGooAgBJIRQLIAwgFWoiFkF4aiACIBQbIAlBA3RqIAopAgA3AgAgCSAUQQFzaiEJAkACQCAHIApBCGoiFygCACIURg0AIAcgFEkhFAwBCyALKAIEIApBDGooAgBJIRQLIBZBcGogAiAUGyAJQQN0aiAXKQIANwIAIAkgFEEBc2ohCQJAAkAgByAKQRBqIhcoAgAiFEYNACAHIBRJIRQMAQsgCygCBCAKQRRqKAIASSEUCyAWQWhqIAIgFBsgCUEDdGogFykCADcCACAJIBRBAXNqIQkCQAJAIAcgCkEYaiIWKAIAIhRGDQAgByAUSSEUDAELIAsoAgQgCkEcaigCAEkhFAsgFUFgaiIVIAxqIAIgFBsgCUEDdGogFikCADcCACAOQSBqIQ4gCSAUQQFzaiEJIApBIGogD0kNAAsgDSAOaiENIAwgDmshDAsCQCANIAAgEEEDdGoiDk8NACALKAIAIQcDQAJAAkAgByANKAIAIgpGDQAgByAKSSEKDAELIAsoAgQgDUEEaigCAEkhCgsgDEF4aiIMIAIgChsgCUEDdGogDSkCADcCACAJIApBAXNqIQkgDUEIaiINIA5JDQALCwJAIBAgAUYNACACIAlBA3RqIA0pAgA3AgAgDUEIaiENIAlBAWohCSAMQXhqIQwgASEQDAELCwJAIAlBA3QiDkUNACAAIAIgDvwKAAALIAEgCUYNAiAIIBhqIQogACAOaiENIAEgCWsiByEMA0AgDSAKKQIANwIAIApBeGohCiANQQhqIQ0gDEF/aiIMDQALAkAgASAJSQ0AIAAgDmohAEEAIQUgByEBIAdBIUkNAgwBCwsgCSABIAFB+OmaARCLCgALIAdBAkkNACADIAdBEGpJDQEgB0EBdiEVAkACQAJAIAdBD0sNACAHQQdNDQEgACACEI0JIAAgFUEDdCIKaiACIApqEI0JQQQhFAwCCyAAIAIgAiAHQQN0aiIKENgfIAAgFUEDdCIJaiACIAlqIApBwABqENgfQQghFAwBCyACIAApAgA3AgAgAiAVQQN0IgpqIAAgCmopAgA3AgBBASEUC0EAIQogBkEANgIIQQAgFGshDyAAIBRBA3QiCWohCyACIAlqIRggBiAVNgIMIAcgFWshFiAGQQhqIRcDQCAKIQ4CQCAUIBYgFSAXIApBAnRqKAIAIgobIglPDQAgAiAKQQN0IgpqIQwgDyAJaiENIAsgCmohCSAYIApqIQoDQCAKIAkpAgA3AgAgDCAKEMsMIAlBCGohCSAKQQhqIQogDUF/aiINDQALC0EBIQogDkEBcUUNAAsgAiAHIAAQggkLIAZBEGokAA8LAAvwFAICfwJ+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIBQXRqQQcgAUELSxtBf2oOJAABAgMEBQYHCAkKCwwNDg8QERITIhQVFhciGBkaGxwdHh8gISILIAAoAggiASAAKAIMEOgaIAAoAgQgARDgIw8LIABBBGoQshUgACgCBCAAKAIIEOcjDwsCQCAALQAcQQJGDQAgACkDCCIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDeHgsgACgCIBD2DQ8LIAAoAgQiABDZASAAQcAAQQgQzhQPCyAAKAIMIgAQ2QEgAEHAAEEIEM4UDwsgACgCBCIBENkBIAFBwABBCBDOFCAAKAIIIgAQ2QEgAEHAAEEIEM4UDwsCQAJAAkACQAJAAkACQAJAAkACQAJAIAEODAoAAQIDBAUGBwgoCSgLIABBCGoQuw8MJwsgAEEIahDmFgwmCyAAQQRqEIUiDCULIABBBGoQ3REMJAsgAEEEahCaHwwjCyAAQQRqEJofDCILIABBBGoQhSIMIQsgAEEEahCaHwwgCyAAQQRqELIdDB8LAkACQCAAKAIEDgIAASALIAAoAgwiASAAKAIQENkdIAAoAgggARDfIwweCyAAQQhqEJkRIAAoAgggACgCDBDiIwwdCyAAKQMIIAAoAiAQsRYMHQsgACgCKCIBENkBIAFBwABBCBDOFCAAQQhqEP8QDwsCQCAAKAIIDQAgACkDECIDQgODQgBSDRogA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0aIAAgACgCEBDeHg8LIABBDGoQhiIPCyAAKAIEIgEQ2QEgAUHAAEEIEM4UIAAoAggiARDZASABQcAAQQgQzhQgACgCDCIAENkBIABBwABBCBDOFA8LIABBBGohAQJAIAAtABhBBUkNACAAKAIQIgIQ2QEgAkHAAEEIEM4UCyABEI0bIAAoAgQgACgCCBDgIyAAKAIoIgBFDRcgABDqGyAAKAIAIABBBGooAgAQ3iMgAEEUQQQQzhQPCyAAKAIQIgEQ2QEgAUHAAEEIEM4UAkAgACgCBCIBQYCAgIB4Rg0AIABBBGoQjRsgASAAKAIIEOAjCyAAKAIgIgBFDRYgABDqGyAAKAIAIABBBGooAgAQ3iMgAEEUQQQQzhQPCyAAKAIIIgEgACgCDBDYHSAAKAIEIAEQ3iMPCyAAKQMIIgNCA4NCAFINFCADpyIAIAAoAgAiAUF/ajYCACABQQFHDRQgACAAKAIQEN4eDwsCQAJAAkACQAJAIAAoAggOBgEYGAIDBAALAkAgACkDECIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDeHgsgACkDGCIDQgODQgBSDRcgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0XIAAgACgCEBDeHg8LIABBEGoQrRIPCyAAKQMgIgNQDRUgA0IDg0IAUg0VIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNFSAAIAAoAhAQ3h4PCyAAKQMYIAAoAiAQwRYPCyAAKQMYIQMCQCAAKQMQIgRCA4NCAFINACAEpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEN4eCyADQgODQgBSDRMgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0TIAAgACgCEBDeHg8LIAAoAggiASAAKAIMENgdIAAoAgQgARDeIyAAKAIUIgEgACgCGBDlDyAAKAIQIAEQ5iMPCyAAKAIEIgEQ2QEgAUHAAEEIEM4UAkAgACgCGCIBRQ0AIAEQ6hsgASgCACABQQRqKAIAEN4jIAFBFEEEEM4UCyAAKAIIIgBBBGoiASgCACAAQQhqKAIAENgdIAAoAgAgASgCABDeIyAAQRBqIgEoAgAgAEEUaigCABDlDyAAKAIMIAEoAgAQ5iMgAEEgQQQQzhQPCyAAKAIIIgEgACgCDBCPHyAAKAIEIAEQ3yMgACgCECIBQQRqIQICQAJAIAEoAgBBgICAgHhGDQAgAigCACABQQhqKAIAEJAfIAEoAgAgAigCABDhIwwBCyACEIYiCyABQRhBBBDOFAJAIAAoAiAiAUUNACABEKwPIAEoAgAgAUEEaigCABDhIyABQRRBBBDOFAsgACgCJCIARQ0QIAAoAgAiARCmBCABQeAAQQgQzhQgAEEMQQQQzhQPCwJAIAAtABxBAkYNACAAKQMIIgNCA4NCAFINACADpyIBIAEoAgAiAkF/ajYCACACQQFHDQAgASABKAIQEN4eCyAAKAIgIgBBBGoiASgCACAAQQhqKAIAENodIAAoAgAgASgCABDnIyAAQRBqIgEoAgAgAEEUaigCABCRHyAAKAIMIAEoAgAQ5SMCQCAAKAIwIgFFDQAgARDZASABQcAAQQgQzhQLAkAgACgCNCIBRQ0AIAEQrA8gASgCACABQQRqKAIAEOEjIAFBFEEEEM4UCwJAIAAoAjgiAUUNACABEOobIAEoAgAgAUEEaigCABDeIyABQRRBBBDOFAsgAEEcaiIBKAIAIABBIGooAgAQnA8gACgCGCABKAIAEOAjIABBwABBBBDOFA8LIAAoAgwiAEUNDiAAENkBIABBwABBCBDOFA8LIAAoAgQiABDZASAAQcAAQQgQzhQPCyAAKAIEIgAQ2QEgAEHAAEEIEM4UDwsgAEEIahD3EA8LIAApAwggACkDGBCBFA8LIAAoAgQiAEHAAGoQkxMgAEGAAWoiASgCACAAQYQBaigCABDMGCAAKAJ8IAEoAgAQ5SMCQCAAKAJ4IgFFDQAgARDqGyABKAIAIAFBBGooAgAQ3iMgAUEUQQQQzhQLIABBkAFqEIkRIAAoApABIABBlAFqKAIAEN8jAkAgAC0APEEGRg0AIABBEGoQkxMLIABBoAFBCBDOFA8LIABBBGoQiREgACgCBCAAKAIIEN8jDwsgACgCBCIBENkBIAFBwABBCBDOFCAAKAIIIgAQpgQgAEHgAEEIEM4UDwsgACgCBCIAENkBIABBwABBCBDOFA8LIAAoAgQiABDZASAAQcAAQQgQzhQPCyAAKAIEIgEQ2QEgAUHAAEEIEM4UIAAoAggiABCmBCAAQeAAQQgQzhQPCyAAKAIEIgEQ2QEgAUHAAEEIEM4UIAAoAggiABDqGyAAKAIAIABBBGooAgAQ3iMgAEEUQQQQzhQPCyAAKAIEIgEQ2QEgAUHAAEEIEM4UIAAoAggiABCmBCAAQeAAQQgQzhQPCyAAKQMIIgNCA4NCAFINASADpyIAIAAoAgAiAUF/ajYCACABQQFHDQEgACAAKAIQEN4eDwsCQAJAIAAoAgQiACgCAEEDRg0AIAAQuw8MAQsgAEEEahDSGAsgAEEoQQgQzhQLDwsgACgCHCIBRQ0AIAEoAgAiAhCmBCACQeAAQQgQzhQgAUEMQQQQzhQLIAAoAjgiABDZASAAQcAAQQgQzhQL1hQCFX8CfiMAQaABayIDJAACQAJAIAEtAIABQQRxDQAgAEEANgIIIABCgICAgMAANwIADAELIANBADYCJCADQoCAgIDAADcCHAJAAkACQAJAAkACQAJAIAEtALgBQRhHDQAgAUGwAWohBCABKAKwASEFIAFBDGohBkEIIQcgAUEIaiEIIAFBmAFqIQkgAUGMAWohCkGPAq1CIIZBsvCaAa2EIRggA0H4AGpBDGohC0EEIQxBACENA0AgASgCsAEhDiABKAKIASEPIAFBCzYCiAECQAJAIA9BC0YNACADIAkoAgg2AoABIAMgCSkCADcDeAJAIAgoAgBBCkYNACAIELULCyAIIA82AgAgBiAKKQIANwIAIAYgCigCCDYCCAwBCyADQfgAaiABEM4BCyABKQOwASEZIAQgAykDeDcCACAEIAMoAoABNgIIIAEgGTcDqAECQAJAAkACQAJAAkAgAS0AuAENACABKAKIASEPIAFBCzYCiAECQAJAIA9BC0YNACADIAkoAgg2AoABIAMgCSkCADcDeAJAIAgoAgBBCkYNACAIELULCyAIIA82AgAgBiAKKQIANwIAIAYgCigCCDYCCAwBCyADQfgAaiABEM4BCyABKQOwASEZIAQgAykDeDcCACAEIAMoAoABNgIIIAEgGTcDqAEgA0EIaiABEK0DIAMoAgwhECADKAIIQQFxDQ0gAyAQNgIoIAEtALgBIg9BAUcNAyABKAKIASEPIAFBCzYCiAEgD0ELRg0BIAMgCSgCCDYCgAEgAyAJKQIANwN4AkAgCCgCAEEKRg0AIAgQtQsLIAggDzYCACAGIAopAgA3AgAgBiAKKAIINgIIDAILIANB+ABqIAFBAEEAEOACIAMtAIwBQQJGDQsgAyADKQOIATcDUCADIAMpA4ABNwNIIAMgAykDeDcDQEHAABCJASIPRQ0DIA9BGjYCACAPIAMpA0A3AwggDyADKQNINwMQIA8gAykDUDcDGCAPIAMpA1g3AyAgDyADKQNgNwMoIA8gAykDaDcDMCAPIAMpA3A3AzggA0EFOgCAASADIA82AnggA0EQaiABIANB+ABqQQBBARBRIAMoAhQhECADKAIQQQFxDQwMBAsgA0H4AGogARDOAQsgASkDsAEhGSAEIAMpA3g3AgAgBCADKAKAATYCCCABIBk3A6gBDAILIAEoArQBIQQgASgCsAEhECADQSxqIA8QsiUgAyAYNwM4IANB+ABqQc2VgAEgA0E4ahDICCALIAMoAjQ2AgggCyADKQIsNwIAIBAgBCADQfgAahCzGyEQAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyADQShqEP4hDAkLQQhBwAAQjSQACyABLQC4ASEPAkACQAJAAkACQAJAIAEtAIEBQSBxRQ0AIA9B/wFxQRJHDQAgAyABEKgDIAMoAgQhEQJAIAMoAgBBAXFFDQAgESESDAMLIAEoAogBIQ8gAUELNgKIAQJAAkAgD0ELRg0AIAMgCSgCCDYCgAEgAyAJKQIANwN4AkAgCCgCAEEKRg0AIAgQtQsLIAggDzYCACAGIAopAgA3AgAgBiAKKAIINgIIDAELIANB+ABqIAEQzgELIAEpA7ABIRkgBCADKQN4NwIAIAQgAygCgAE2AgggASAZNwOoAQJAIBFFDQBBACETDAILIAEtALgBIQ8LIA9B/wFxDQNBACERQQEhEwsgASABKAJ4Ig9B//97cTYCeCADQfgAaiABENsDIAEgDzYCeCADKAJ8IRIgAygCeCIUQYCAgIB4Rw0BIBMNACAREOobIBEoAgAgEUEEaigCABDeIyARQRRBBBDOFAsgEBCJAiAQQcAAQQgQzhQgEiEQDAoLIAMoAoABIRUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQKAIAIg9BdGpBByAPQQtLGw4mAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUACyAQQQRqIQ8MLAsgEEEQaiEPDCsLIBBBEGohDwwqCyAQKAIgQTBqIQ8MKQsgEEEIaiEPDCgLIBBBBGohDwwnCyAQQQxqIQ8MJgsgEEEwaiEPDCULIBBBIGohDwwkCyAQQSBqIQ8MIwsgEEEQaiEPDCILIBBBHGohDwwhCyAQQRRqIQ8MIAsgEEEQaiEPDB8LIBBBEGohDwweCyAQKAIIDgcWFxgZGhscFgsgEEEcaiEPDBwLIBBBDGohDwwbCyAQQRRqIQ8MGgsgECgCIEEkaiEPDBkLIBBBBGohDwwYCyAQQQRqIQ8MFwsgEEEIaiEPDBYLIBBBCGohDwwVCyAQQRhqIQ8MFAsgEEEoaiEPDBMLIBBBBGohDwwSCyAQKAIEIQ8MEQsgEEEQaiEPDBALIBBBDGohDwwPCyAQQQhqIQ8MDgsgEEEIaiEPDA0LIBBBDGohDwwMCyAQQQxqIQ8MCwsgEEEMaiEPDAoLIBBBEGohDwwJCyAQQQhqIQ8MCAsgEEEEaiEPDAcLIBBBGGohDwwGCyAQQQxqIQ8MBQsgEEEMaiEPDAQLIBBBEGohDwwDCyAQQRBqIQ8MAgsgEEEgaiEPDAELIBBBIGohDwsgASgCrAEhFiAPKAIAIRcgA0IANwKQASADQQM6AIwBIANBADYCiAEgA0IANwKYASADQgA3AoABIANCgICAgMAANwJ4QcAAEIkBIg9FDQUgD0IANwIkIA8gFjYCICAPIBc2AhwgD0EFOgAYIA8gEDYCECAPIBU2AgwgDyASNgIIIA8gFDYCBCAPQRc2AgACQCATDQAgERDqGyARKAIAIBFBBGooAgAQ3iMgEUEUQQQQzhQLIANB+ABqEI0bQQBBBBDgIyABKAKsASERDAELIBBFDQUgASgCrAEhESAQIQ8LAkAgDSADKAIcRw0AIANBHGoQsBogAygCICEMCyAMIAdqIhAgETYCACAQQXxqIA42AgAgEEF4aiAPNgIAIAMgDUEBaiINNgIkIAdBDGohByABLQC4ASIPQRhGDQALIA0NAQsgACADKAIkNgIIIAAgAykCHDcCAAwGCyAPQdgARw0CIAEoAngiD0GAgAhxDQIgD0GAgCBxIQ8CQCACDQAgDw0AIAEoArQBIQ8gASgCsAEhBCADQY6AgIB4NgJAIAQgDyADQcAAahCzGyEQIAEtALgBQaIBRw0FIAEgARDvDRCGCQwFCyAPDQIgAS0AgAFBCHENAiABKAKsASEPIANB2oCAgHg2AkAgBSAPIANBwABqELMbIRAgAS0AuAFBogFHDQQgASABEO8NEIYJDAQLQQhBwAAQjSQACyAOIRAMAgsgACADKAIkNgIIIAAgAykCHDcCAAwCCyADKAJ4IRALIABBgICAgHg2AgAgACAQNgIEIAMoAiAiASANENodIAMoAhwgARDnIwsgA0GgAWokAAupEgIOfwF+IwBB0ABrIgMkAAJAAkACQCABLQAdIgRBpAFGDQAgASgCaCEFIANBOGpBEEEBQQEQgQ8gAygCPCEGAkAgAygCOA0AQQAhByADQQA2AiAgAyADKAJANgIcIAMgBjYCGAJAIAEoAlwiCEUNACAFIQkDQAJAIAEoAlgiBi0AAEEtRw0AIANBGGpBARD8HiADKAIcIAMoAiBqQS06AAAgASAJQQFqIgk2AmggASAIQX9qIgg2AlwgASAGQQFqNgJYIAMgB0EBaiIHNgIgIAgNAQwFCwJAA0ACQAJAAkACQAJAAkACQCABKAJYIgosAAAiBkF/Sg0AIAotAAFBP3EhCyAGQR9xIQwCQAJAIAZBYE8NACAMQQZ0IAtyIQYMAQsgC0EGdCAKLQACQT9xciELAkAgBkFwTw0AIAsgDEEMdHIhBgwBCyALQQZ0IAotAANBP3FyIAxBEnRBgIDwAHFyIQYLAkACQCAGQf8ASw0AIAYtAICemQFFDQNBASELDAELQZ+2gQEgBkEJdkGQnZsBaiAGQf+DOEsbLQAAQQV0IAZBA3ZBP3FqLQDAq5sBIAZBB3F2QQFxRQ0CAkAgBkGAEE8NAEECIQsMAQtBA0EEIAZBgIAESRshCwsgA0EYaiALEPweIAMoAhwgAygCIGohDAJAAkACQAJAAkAgBkGAAUkNACAGQT9xQYB/ciENIAZBBnYhDiAGQYAQSQ0BIAZBDHYhDyAOQT9xQYB/ciEOIAZB//8DSw0CIA9BYHIhEEEDIQYgDiEPDAMLIAwgBjoAAEEBIQYMAwsgDCANOgABIAwgDkHAAXI6AABBAiEGDAILIAZBEnZBcHIhECAPQT9xQYB/ciEPIAwgDToAA0EEIQYgDiENCyAMIA06AAIgDCAPOgABIAwgEDoAAAsgASAIIAZrIgg2AlwgASAKIAZqNgJYIAEgASgCaCAGajYCaCADIAsgB2oiBzYCICAIDQcMCAsCQAJAIAZB/wFxLQCAnpkBDQAgBkHcAEcNAiABIAhBf2oiBjYCXCABIApBAWoiCDYCWCABIAEoAmhBAWoiCzYCaAJAAkAgBkUNACAILQAAQfUARg0BCyADQaOAgIB4NgI4IAEgCyADQThqEIAjDAgLIANBOGogARCJBCADKAI4QQNGDQECQCADKAI8IgZBgHBxQYCwA0YNAAJAAkAgBkGAAUkiCkUNAEEBIQgMAQsCQCAGQYAQTw0AQQIhCAwBC0EDQQQgBkGAgARJGyEICyADQRhqIAgQ/B4gAygCHCADKAIgaiELIAoNBCAGQT9xQYB/ciEKIAZBBnYhDAJAIAZBgBBPDQAgCyAKOgABIAsgDEHAAXI6AAAMBwsgBkEMdiENIAxBP3FBgH9yIQwCQCAGQf//A0sNACALIAo6AAIgCyAMOgABIAsgDUHgAXI6AAAMBwsgCyAKOgADIAsgDDoAAiALIA1BP3FBgH9yOgABIAsgBkESdkFwcjoAAAwGCyABKAJoIQYgA0GjgICAeDYCOCABIAYgA0E4ahCAIwwGCyAIQX9qIQggASgCaCEMQQAhBgNAIAogBmoiCywAACIHQX9MDQQgBy0AgJ6ZAUEBRw0EIAEgCDYCXCABIAwgBmpBAWo2AmggASALQQFqNgJYIAZBAWohBiAIQX9qIghBf0cNAAwECwsgAygCPCIGQQhqEOMDIAZBIEEIEM4UIAEoAmghBiADQaOAgIB4NgI4IAEgBiADQThqEIAjIAEoAlwhCAsgASgCaCIGIAlGDQYgBiEJIAgNBwwGCyALIAY6AAAMAQsgASgCbCELIAEoAmAhCiADQRhqIAwgBmoiByAMayIGEPweIAMoAiAhCAJAIAcgDEYNACAGRQ0AIAMoAhwgCGogCiAMIAtraiAG/AoAAAsgAyAIIAZqIgc2AiAMAgsgAyAIIAdqIgc2AiALIAEgAS0AhQFBAXI6AIUBCyABKAJcIggNAAsLCyAHDQMLAkAgBEG0f2pB/wFxQdUATw0AIAEoAnRBCGogASgCYCACIAEoAmxraiAFIAJrELsEIREMBAsgASgCCCEGIAFBCjYCCAJAIAZBCkYNACAGQQJHDQAgASkDECERDAQLIANB6QStQiCGIAFBCGqthDcDOEGqjYABIANBOGpBoMOZARDXGwALIAYgAygCQBDpIAALQZDDmQEQsCMACyADQQA2AiwgA0KAgICAEDcCJAJAAkAgBEG0f2pB/wFxQdUATw0AIAEoAmwhCyABKAJgIQogA0EkaiAHIAUgAmsiBmoQ/B4gA0EkaiAGEPweIAMoAiwhCAJAIAUgAkYNACAGRQ0AIAMoAiggCGogCiACIAtraiAG/AoAAAsgAyAIIAZqNgIsDAELIAEpAwghESABQQo2AgggAyABKQMQNwNAIAMgETcDOAJAAkACQCARpyIGQQpGDQAgBkECRg0BCyABKAJsIQsgASgCYCEKIANBJGogByAFIAJrIghqEPweIANBJGogCBD8HiADKAIsIQcCQCAFIAJGDQAgCEUNACADKAIoIAdqIAogAiALa2ogCPwKAAALIAMgByAIajYCLAwBCyADIAMpA0AiETcDMCADQRBqIANBMGoQihQgA0EkaiADKAIUIAdqEPweIANBCGogA0EwahCKFCADKAIIIQcgA0EkaiADKAIMIgYQ/B4gAygCLCEIAkAgBkUNACAGRQ0AIAMoAiggCGogByAG/AoAAAsgAyAIIAZqNgIsQQIhBiARQgODQgBSDQAgEaciBiAGKAIAIghBf2o2AgACQCAIQQFHDQAgBiAGKAIQEN4eCyADKAI4IQYLAkAgBkEKRg0AIAZBAkYNACADQThqELULCyADKAIgIQcLIAMoAhwhCCADQSRqIAcQ/B4gAygCKCEGIAMoAiwhCwJAIAdFDQAgB0UNACAGIAtqIAggB/wKAAALIAMoAiQhCCABKAJ0QQhqIAYgCyAHahC7BCERIAhBgICAgHhGDQAgCCAGEJ4jCwJAIAEoAghBCkYNACABQQhqELULCyABIBE3AxAgAUECNgIIIABByQA6AAggACACNgIAIAAgAS0AHDoACSAAIAEoAmg2AgQgAygCGCADKAIcEJ4jIANB0ABqJAAL1hQCEn8BfiMAQeABayIDJAAgAUGIAWohBAJAAkACQAJAAkACQAJAAkACQCABKAKIASIFQQtHDQAgASkDCCEVIAFBCjYCCCADIAEpAxA3A6ABIAMgFTcDmAEgA0HAAGogARDOASABKQMIIRUgAUEKNgIIIAMgASkDEDcDOCADIBU3AzAgAUEIaiEFAkACQCABKAKIAUEOcUEKRw0AIAQgAykDSDcDGCAEIAMpA0A3AxAgBCADKQM4NwMIIAQgAykDMDcDAAwBCyAEELULIAQgAykDMDcDACAEIAMpAzg3AwggBCADKQNANwMQIAQgAykDSDcDGCAFKAIAQQpGDQAgBRC1CwsgBSADKQOgATcDCCAFIAMpA5gBNwMAQQshBiAEKAIAIgVBC0YNAQsCQCABLQCgAUHdAEcNACABLQChAUEBcUUNAgsgBSEGC0ECIQUgAg0BDAYLIAEoArABIQYCQCABLQC4ASICQfgARw0AIAFBsAFqIQQgAUELNgKIASADIAEpApgBNwMwIAMgASgCoAE2AjggAUGMAWohAgJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASACKQIANwIMIAEgAigCCDYCFCABKQOwASEVIAQgAykDMDcCACAEIAMoAjg2AgggASAVNwOoASADQQA2AtgBIANCgICAgMAANwLQAUEBIQUgA0EwaiABQQEgBiADQdABakEBQQAQiwMgAygCMCEEIAMtAEQiAkEDRg0GIAMgAykCPDcDoAEgAyADKQI0NwOYASADIAMtAEc6AMIBIAMgAy8ARTsBwAEgAygCSCEFQcAAEIkBIgFFDQIgASAENgIIIAFBDzYCACABIAMpA5gBNwIMIAEgAykDoAE3AhQgASACOgAcIAEgAy8BwAE7AB0gASADLQDCAToAHyABIAU2AiBBACEFIAEhBAwGCyABKAK0ASEEIANBmAFqIAIQsiUgA0GPAq1CIIZB5IKbAa2ENwPQASADQTBqQc2VgAEgA0HQAWoQyAggAyADKQKYATcCPCADIAMoAqABNgJEIAYgBCADQTBqELMbIQRBASEFIAJBogFHDQUgASABEO8NEIYJDAULAkACQCABLQCBAUEgcUUNAAJAIAZBC0cNACABKQMIIRUgAUEKNgIIIAMgASkDEDcDoAEgAyAVNwOYASADQcAAaiABEM4BIAEpAwghFSABQQo2AgggAyABKQMQNwM4IAMgFTcDMCABQQhqIQICQAJAIAEoAogBQQ5xQQpHDQAgBCADKQNINwMYIAQgAykDQDcDECAEIAMpAzg3AwggBCADKQMwNwMADAELIAQQtQsgBCADKQMwNwMAIAQgAykDODcDCCAEIAMpA0A3AxAgBCADKQNINwMYIAIoAgBBCkYNACACELULCyACIAMpA6ABNwMIIAIgAykDmAE3AwAgBCgCAEELRg0FCyABLQCgAUESRw0FIAEtAIEBQSBxRQ0FIAFBCGohByABKAJ4IQhBCiEJIAEoAhghCiABKAIEIQsgASgCACEMIAEtABwhDQJAIAEoAggiDkEKRg0AIANBmAFqIAcQjwYgAyADKQKcATcD0AEgAyADKAKkATYC2AEgAygCmAEhCQtBACECQQAhBgJAIAEoAiBBgICAgHhGDQAgASgCNCEGIAEoAighAgsgASgCaCEPIAEtAB0hEEELIRECQCAEKAIAIhJBC0YiEw0AIAFBmAFqIRRBCiERAkAgEkEKRg0AIANBmAFqIAQQjwYgAyADKQKcATcDwAEgAyADKAKkATYCyAEgAygCmAEhEQsgAyADKQPAATcDmAEgAyADKALIATYCoAEgAyAUKAIINgKsASADIBQpAgA3AqQBCyADIAk2AjggAyALNgI0IAMgDDYCMCADIAMpA9ABNwI8IAMgAygC2AE2AkQgAyAPNgJcIAMgBjYCVCADIAI2AlAgAyAQOgBNIAMgDToATCADIAo2AkggAyABKAKsASIMNgKEASADIAEoAqgBIg02AoABIAMgCDYCWCADIBE2AmAgAyABKAK4ATYCkAEgAyABKQOwATcDiAEgAyADKQOYATcCZCADIAMpA6ABNwJsIAMgAykDqAE3AnQgAyADKAKwATYCfCABIAhBAXI2AnggASgCsAEhCyABQQs2AogBIAFBsAFqIQICQAJAIBMNACABQYwBaiEGIAMgASgCoAE2AtgBIAMgASkCmAE3A9ABAkAgDkEKRg0AIAcQtQsLIAEgEjYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIANB0AFqIAEQzgELIANB4ABqIQYgA0GIAWohCiABKQOwASEVIAIgAykD0AE3AgAgAiADKALYATYCCCABIBU3A6gBIANBmAFqIAEgCxDDAQJAAkACQCADKAKYASILQYCAgIB4ag4CAQAECyABIANBMGoQ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EBDeHgsgAygCBCIBIAMoAggQ2h0gAygCACABEOcjCyAGQfAAaiQAC+URAhJ/A34jAEHAAGsiAiQAA0ACQAJAAkACQAJAAkACQAJAAkACQCABKAIAIgNBdGpBByADQQtLG0Fzag4LAAEBAQEBAQEBAQIBCyABKAIMQQFGDQILIAJBwABqJAAPCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgQiAygCACIEQXRqQQcgBEELSxsOJgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlAAsgA0EIaiEEIANBBGohAwwsCyADQRRqIQQgA0EQaiEDDCsLIANBFGohBCADQRBqIQMMKgsgAygCICIDQTRqIQQgA0EwaiEDDCkLIANBDGohBCADQQhqIQMMKAsgA0EIaiEEIANBBGohAwwnCyADQRBqIQQgA0EMaiEDDCYLIANBNGohBCADQTBqIQMMJQsgA0EkaiEEIANBIGohAwwkCyADQSRqIQQgA0EgaiEDDCMLIANBFGohBCADQRBqIQMMIgsgA0EgaiEEIANBHGohAwwhCyADQRhqIQQgA0EUaiEDDCALIANBFGohBCADQRBqIQMMHwsgA0EUaiEEIANBEGohAwweCyADKAIIDgcWFxgZGhscFgsgA0EgaiEEIANBHGohAwwcCyADQRBqIQQgA0EMaiEDDBsLIANBGGohBCADQRRqIQMMGgsgAygCICIDQShqIQQgA0EkaiEDDBkLIANBCGohBCADQQRqIQMMGAsgA0EIaiEEIANBBGohAwwXCyADQQxqIQQgA0EIaiEDDBYLIANBDGohBCADQQhqIQMMFQsgA0EcaiEEIANBGGohAwwUCyADQSxqIQQgA0EoaiEDDBMLIANBCGohBCADQQRqIQMMEgsgAygCBCIDQQRqIQQMEQsgA0EUaiEEIANBEGohAwwQCyADQRBqIQQgA0EMaiEDDA8LIANBDGohBCADQQhqIQMMDgsgA0EMaiEEIANBCGohAwwNCyADQRBqIQQgA0EMaiEDDAwLIANBEGohBCADQQxqIQMMCwsgA0EQaiEEIANBDGohAwwKCyADQRRq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AyACQShsaiEEA0ACQAJAAkACQAJAAkACQCADKAIADgQAAQIDAAsgAygCICICDQQMBQsgA0EMaigCACICRQ0CIAJBKGwhBSADQQhqKAIAIQIDQAJAIAIoAgBBB0YNACACIAEQwwQgASACEP8ICyACQShqIQIgBUFYaiIFDQAMAwsLIAMoAgQiAiABEMMEIAEgAhD/CAwBCyABIANBBGoQnggLIAMoAhgiAkUNAQsgAigCACABELYBCyADQShqIgMgBEcNAAsLAkAgACgCHCICRQ0AIAIoAgAgARC2AQsgACgCICICRQ0EIAJBCGooAgAiBUUNBCAFQTBsIQUgAkEEaigCAEEkaiECA0ACQCACQXxqKAIAIgNFDQAgAyABELYBCwJAIAIoAgAiA0UNACADIAEQtgELIAJBMGohAiAFQVBqIgUNAAwFCwsgACgCDCICRQ0AIAAoAggiAyACQShsaiEEA0ACQAJAAkACQAJAAkACQCADKAIADgQAAQIDAAsgAygCICICDQQMBQsgA0EMaigCACICRQ0CIAJBKGwhBSADQQhqKAIAIQIDQAJAIAIoAgBBB0YNACACIAEQwwQgASACEP8ICyACQShqIQIgBUFYaiIFDQAMAwsLIAMoAgQiAiABEMMEIAEgAhD/CAwBCyABIANBBGoQnggLIAMoAhgiAkUNAQsgAigCACABELYBCyADQShqIgMgBEcNAAsLIAAoAhAiAkUNAgwBCyAAKAIYIgJFDQELIAIoAgAgARC2AQsLhBICD38BfiMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQQgASgCACIDQXxqIANBBEkbDgcAAQIDBAUGAAsgASgCCCEEIAEoAhQhBSABKAIQIQYgAkEIaiABKAIMIgdBCEEoEIEPIAIoAgwhCCACKAIIQQFGDQcgAigCECEJAkAgCEUNACAHQShsIQogCSEDIAghCwNAIApFDQEgAkEIaiAEEOUDIAMgAikDKDcDICADIAIpAyA3AxggAyACKQMYNwMQIAMgAikDEDcDCCADIAIpAwg3AwAgA0EoaiEDIApBWGohCiAEQShqIQQgC0F/aiILDQALC0EAIQRBACEDAkAgASgCGCIKRQ0AQQwQiQEiA0UNCSAKKAIIIQwgCigCBCENQeAAEIkBIgtFDQogCyAKKAIAEG4gAyAMNgIIIAMgDTYCBCADIAs2AgALAkAgASgCHCIBRQ0AQRQQiQEiBEUNCyABKQIMIREgBCABKAIEIAEoAggQuwcgBCARNwIMCyAAIAQ2AhwgACADNgIYIAAgBTYCFCAAIAY2AhAgACAHNgIMIAAgCTYCCCAAIAg2AgQgAEEENgIADAYLIAEoAgghBCABKAIUIQUgASgCECEGIAJBCGogASgCDCIHQQhBKBCBDyACKAIMIQggAigCCEEBRg0KIAIoAhAhCQJAIAhFDQAgB0EobCEKIAkhAyAIIQsDQCAKRQ0BIAJBCGogBBDlAyADIAIpAyg3AyAgAyACKQMgNwMYIAMgAikDGDcDECADIAIpAxA3AwggAyACKQMINwMAIANBKGohAyAKQVhqIQogBEEoaiEEIAtBf2oiCw0ACwtBACEEQQAhAwJAIAEoAhgiCkUNAEEMEIkBIgNFDQwgCigCCCEMIAooAgQhDUHgABCJASILRQ0NIAsgCigCABBuIAMgDDYCCCADIA02AgQgAyALNgIACwJAIAEoAhwiAUUNAEEUEIkBIgRFDQ4gASkCDCERIAQgASgCBCABKAIIELsHIAQgETcCDAsgACAENgIcIAAgAzYCGCAAIAU2AhQgACAGNgIQIAAgBzYCDCAAIAk2AgggACAINgIEIABBBTYCAAwFCyABLQAUIQogASgCCCELIAEoAgQhCEHAABCJASIERQ0NIAQgASgCEBBMIAEtABYhByABLQAVIQkCQAJAIAEoAgwiAQ0AQQAhAwwBC0EMEIkBIgNFDQ8gASgCCCEGIAEoAgQhDEHgABCJASIFRQ0QIAUgASgCABBuIAMgBjYCCCADIAw2AgQgAyAFNgIACyAAIAc6ABYgACAJOgAVIAAgCjoAFCAAIAQ2AhAgACADNgIMIAAgCzYCCCAAIAg2AgQgAEEGNgIADAQLIAEoAgwhCiABKAIIIQtBwAAQiQEiBEUNDyAEIAEoAgQQTCABLQAUIQgCQAJAIAEoAhAiAQ0AQQAhAwwBC0EMEIkBIgNFDREgASgCCCEJIAEoAgQhBUHgABCJASIHRQ0SIAcgASgCABBuIAMgCTYCCCADIAU2AgQgAyAHNgIACyAAIAg6ABQgACADNgIQIAAgCjYCDCAAIAs2AgggACAENgIEIABBBzYCAAwDCyABKAIsIQQgASgCKCEKQcAAEIkBIgNFDREgAyABKAIwEEwgAS0ANCELIAAgARDlAyAAIAs6ADQgACADNgIwIAAgBDYCLCAAIAo2AigMAgsgASgCGCEGIAEoAhQhDEHAABCJASIHRQ0RIAcgASgCEBBMIAEoAgghBCABLQAlIQ0gAS0AJCEOIAJBCGogASgCDCIJQQhBKBCBDyACKAIMIQggAigCCEEBRg0SIAIoAhAhBQJAIAhFDQAgCUEobCEKIAUhAyAIIQsDQCAKRQ0BIAJBCGogBBDlAyADIAIpAyg3AyAgAyACKQMgNwMYIAMgAikDGDcDECADIAIpAxA3AwggAyACKQMINwMAIANBKGohAyAKQVhqIQogBEEoaiEEIAtBf2oiCw0ACwtBACEEQQAhAwJAIAEoAhwiCkUNAEEMEIkBIgNFDRQgCigCCCEPIAooAgQhEEHgABCJASILRQ0VIAsgCigCABBuIAMgDzYCCCADIBA2AgQgAyALNgIACwJAIAEoAiAiAUUNAEEUEIkBIgRFDRYgASkCDCERIAQgASgCBCABKAIIELsHIAQgETcCDAsgACANOgAlIAAgDjoAJCAAIAQ2AiAgACADNgIcIAAgBjYCGCAAIAw2AhQgACAHNgIQIAAgCTYCDCAAIAU2AgggACAINgIEIABBCTYCAAwBCyABKAIIIQQgAkEIaiABKAIMIgdBCEEoEIEPIAIoAgwhCCACKAIIQQFGDRUgAigCECEJAkAgCEUNACAHQShsIQogCSEDIAghCwNAIApFDQEgAkEIaiAEEOUDIAMgAikDKDcDICADIAIpAyA3AxggAyACKQMYNwMQIAMgAikDEDcDCCADIAIpAwg3AwAgA0EoaiEDIApBWGohCiAEQShqIQQgC0F/aiILDQALCwJAAkAgASgCECIEDQBBACEDDAELQQwQiQEiA0UNFyAEKAIIIQsgBCgCBCEFQeAAEIkBIgpFDRggCiAEKAIAEG4gAyALNgIIIAMgBTYCBCADIAo2AgALIAAgAzYCECAAIAc2AgwgACAJNgIIIAAgCDYCBCAAQQo2AgAgACABLwEcOwEcIAAgASkCFDcCFAsgAkEwaiQADwsgCCACKAIQEOkgAAtBBEEMEI0kAAtBCEHgABCNJAALQQRBFBCNJAALIAggAigCEBDpIAALQQRBDBCNJAALQQhB4AAQjSQAC0EEQRQQjSQAC0EIQcAAEI0kAAtBBEEMEI0kAAtBCEHgABCNJAALQQhBwAAQjSQAC0EEQQwQjSQAC0EIQeAAEI0kAAtBCEHAABCNJAALQQhBwAAQjSQACyAIIAIoAhAQ6SAAC0EEQQwQjSQAC0EIQeAAEI0kAAtBBEEUEI0kAAsgCCACKAIQEOkgAAtBBEEMEI0kAAtBCEHgABCNJAALwhICDn8BfiMAQYABayIDJABBACEEAkACQAJAIAItAIEBQSBxRQ0AIAIgAigCeCIFQYAgciIGNgJ4AkAgAi0AuAEiB0ESRg0AIAdBPkYNACACIAU2AngMAQsgAiAGNgJ4IANBADoAUCADQQE6AGggA0EwaiADQdAAaiADQegAaiACEN8BIAMoAjQhBCADKAIwIQYgAiAFNgJ4IAZBAXENAQsCQAJAAkACQCACLQC4ASIFDQAgAigCiAEhBSACQQs2AogBIAJBjAFqIQgCQAJAIAVBC0YNACADIAIoAqABNgJwIAMgAikCmAE3A2gCQCACKAIIQQpGDQAgAkEIahC1CwsgAiAFNgIIIAIgCCkCADcCDCACIAgoAgg2AhQMAQsgA0HoAGogAhDOAQsgAiADKAJwNgK4ASACIAIpA7ABNwOoASACIAMpA2g3ArABIAIgAigCeCIJQf//335xIgZBgICAAXIiBTYCeCABKAIQIQogASgCDCELAkACQCABKAIUIgwtAAANACACIAVB//5fcSIGNgJ4AkAgCy0AAA0AIAIgBUH//F9xNgJ4IANB6ABqIAIQ7QEgAygCbCEHIAMoAmgiDUGAgICAeEYNBCADKAJwIg5BBnQhBiAHIQUDQCAGRQ0DAkAgBSgCAA0AIANBKGogBUEIahCKFCADKAIsQQRHDQAgBUHAAGohBSAGQUBqIQYgAygCKCgAAEH00KWbB0YNAQsLIAooAgQhBSAKKAIAIQYgA0GRgICAeDYCaCACIAYgBSADQegAahDcHQwCCyACIAZBgAJyNgJ4IANB6ABqIAIQ7QEgAygCbCEHIAMoAmgiDUGAgICAeEYNAyADKAJwIg5BBnQhBiAHIQUDQCAGRQ0CAkAgBSgCAA0AIANBIGogBUEIahCKFCADKAIkQQRHDQAgBUHAAGohBSAGQUBqIQYgAygCICgAAEH00KWbB0YNAQsLIAooAgQhBSAKKAIAIQYgA0GRgICAeDYCaCACIAYgBSADQegAahDcHQwBCwJAIAstAAANACACIAlB//zffnFBgIGAAXI2AnggA0HoAGogAhDtASADKAJsIQcgAygCaCINQYCAgIB4Rg0DIAMoAnAiDkEGdCEGIAchBQNAIAZFDQICQCAFKAIADQAgA0EYaiAFQQhqEIoUIAMoAhxBBEcNACAFQcAAaiEFIAZBQGohBiADKAIYKAAAQfTQpZsHRg0BCwsgCigCBCEFIAooAgAhBiADQZGAgIB4NgJoIAIgBiAFIANB6ABqENwdDAELIAIgBkGAg4ABcjYCeCADQegAaiACEO0BIAMoAmwhByADKAJoIg1BgICAgHhGDQIgAygCcCIOQQZ0IQYgByEFA0AgBkUNAQJAIAUoAgANACADQRBqIAVBCGoQihQgAygCFEEERw0AIAVBwABqIQUgBkFAaiEGIAMoAhAoAABB9NClmwdGDQELCyAKKAIEIQUgCigCACEGIANBkYCAgHg2AmggAiAGIAUgA0HoAGoQ3B0LIAIgCTYCeCACLQC4ASIFQQFGDQIgAigCtAEhBiACKAKwASEIIANBxABqIAUQsiUgA0GPAq1CIIZBsvCaAa2ENwNQIANB6ABqQc2VgAEgA0HQAGoQyAggAyADKQJENwJ0IAMgAygCTDYCfCAIIAYgA0HoAGoQsxshCiACLQC4AUGiAUcNAyACIAIQ7w0QhgkMAwsgAigCtAEhBiACKAKwASEHIANBOGogBRCyJSADQY8CrUIghkGftoEBrYQ3A1AgA0HoAGpBzZWAASADQdAAahDICCADIAMpAjg3AnQgAyADKAJANgJ8IAcgBiADQegAahCzGyEFAkAgAi0AuAFBogFHDQAgAiACEO8NEIYJCwJAIARFDQAgBBCsDyAEKAIAIARBBGooAgAQ4SMgBEEUQQQQzhQLIAUhBAwDCyACIAk2AngCQCAERQ0AIAQQrA8gBCgCACAEQQRqKAIAEOEjIARBFEEEEM4UCyAHIQQMAgsgAkGwAWohBSACKAKIASEGIAJBCzYCiAECQAJAIAZBC0YNACADIAIoAqABNgJwIAMgAikCmAE3A2gCQCACKAIIQQpGDQAgAkEIahC1CwsgAiAGNgIIIAIgCCkCADcCDCACIAgoAgg2AhQMAQsgA0HoAGogAhDOAQsgAikDsAEhESAFIAMpA2g3AgAgBSADKAJwNgIIIAIgETcDqAFBACEFQQAhCgJAIAItAIEBQSBxRQ0AQQAhCiACLQC4AUH/AXFBCUcNACACIAIoAngiBkGAIHI2AnggA0EJOgBoIANBCGogA0HoAGogAhCFAiADKAIIIQggAiAGNgJ4IAMoAgwhCiAIQQFxDQELIA5BBnQhCCALLQAAIQ8gDC0AACEQAkADQCAIIAVGIgkNASAHIAVqIQYgBUHAAGohBSAGKAIARQ0ACwsgA0HoAGogAiAQQQFxIA9BAXEgCRDJBCADKAJsIQgCQCADKAJoIglBgYCAgHhHDQACQCAKDQAgCCEKDAILIAooAgAiAhCjBCACQeAAQQgQzhQgCkEMQQQQzhQgCCEKDAELIAMgAykCeDcDYCADIAMpAnA3A1gCQCAJQYCAgIB4Rw0AIAIoAoABQYDAAHFFDQAgDkUNACAOQQZ0IQYgByEFA0ACQCAFKAIAQQRHDQAgBUEQaigCACEPIAVBDGooAgAhECADQaqBgIB4NgJoIAIgECAPIANB6ABqENwdCyAFQcAAaiEFIAZBQGoiBg0ACwsgCy0AACEFIAwtAAAhBiACKAKsASELIAEoAhgoAgAhDAJAQcgAEIkBIgJFDQAgAiAONgIIIAIgBzYCBCACIA02AgAgAiAINgIcIAIgCTYCGCACIAMpA1g3AiAgAiADKQNgNwIoIAIgBjoARSACIAU6AEQgAiAKNgJAIAIgBDYCPEEAIQUgAkEANgI4IAIgCzYCNCACIAw2AjAgAiABKQIANwIMIAIgASgCCDYCFCACIQQMAwtBBEHIABCNJAALIAcgDhCUHyANIAcQ6SMCQCAERQ0AIAQQrA8gBCgCACAEQQRqKAIAEOEjIARBFEEEEM4UCyAKIQQLIAEoAgQiAiABKAIIENodIAEoAgAgAhDnI0EBIQULIAAgBDYCBCAAIAU2AgAgA0GAAWokAAufEQMIfwN+AXwjAEHwAGsiBCQAAkACQAJAAkACQAJAIAJFDQAgAyADQX9qcUUNASADQQpHDQJBACEFAkAgASACEMIdukRxo3kJT5MKQKObIg9EAAAAAAAA8L9kRQ0AIA9EAAAAAAAA8EFjRQ0AIA+rIQULIARBDGogBRCxHCAEQRhqIAEgAhDUEyAEKAIgIgZBwABJDQMgBEHgAGpBkM4AEIwWIAYQ1BohA0EBIQcDQAJAIAQoAmgiBSADSQ0AIARB1ABqIQgDQAJAIAQoAhwiAyAGIAQoAmQiCSAFEPIhDQAgBCgCYCAJEMcjDAcLIARByABqIARBGGogBEHgAGoQ0wYgBCAEKAJQNgIwIAQgBCkCSDcDKCAEIAgpAgA3AzggBCAIKAIINgJAIAQoAhggAxDHIyAEIAQoAjA2AiAgBCAEKQMoNwMYQQAhCQNAAkACQCAJIAdGDQAgBEHIAGogBEE4akGQzgAQgQogBCAEKAJQNgJAIAQgBCkCSDcDOCAEKAJUIQZBBCEFA0AgBUUNAiAEQQxqIAYgBkEKbiIDQQpsaxD1HSAFQX9qIQUgAyEGDAALCyAEKAI4IAQoAjwQxyMgBCgCaCEFIAQoAiAhBgwCCyAJQQFqIQkMAAsLCyAEQcgAaiAEQeAAaiAEQeAAahCZEiAEKAJgIAQoAmQQxyMgBCAEKAJQNgJoIAQgBCkCSDcDYCAHQQF0IQcMAAsLQQEhB0EBQQEQwyAiA0EwOgAAQQEhCQwECwJAQSAgA2dBH3MiBW4iCSAFbEH/AXFBIEYNACAEQcgAaiABIAIQwh0iDCAFrSINgCIOIAwgDiANfn1CAFKtfCIMp0F/IAxCgICAgBBUGxCxHCABIAJBAnRqIQpBfyAFdEF/cyEIQQAhBkEAIQMDQAJAAkAgASAKRg0AIAEoAgAiByAGQf8BcXQgA3IhAyAGQSBqIQYDQCAGQf8BcSIJIAVJDQIgBEHIAGogAyAIcRD1HSAHIAUgBmt2IAMgBXYgCUEgSxshAyAGIAVrIQYMAAsLAkAgBkH/AXFFDQAgBEHIAGogAxD1HQsgBCgCUEF/aiEFIAQoAkghByAEKAJMIQMCQAJAA0AgBUF/Rg0BIAMgBWoiBkUNASAGLQAADQIgBUF/aiEFDAALCyAFQQFqIQkMBgsgBUEBaiEJDAULIAFBBGohAQwACwsgBEHIAGogASACEMIdIgwgBa0iDYAiDiAMIA4gDX59QgBSrXwiDKdBfyAMQoCAgIAQVBsQsRwgBCABIAIgAkF/aiILQdjogwEQ4B5BfyAFdEF/cyEHIAQoAgAiCCAEKAIEQQJ0aiEKA0ACQAJAIAggCkYNACAIKAIAIQNBACEGA0AgBkH/AXEgCU8NAiAEQcgAaiADIAdxEPUdIAMgBXYhAyAGQQFqIQYMAAsLIAEgAiALQejogwEQpx8oAgAhBgJAA0AgBkUNASAEQcgAaiAGIAdxEPUdIAYgBXYhBgwACwsgBCgCUCEJIAQoAkwhAyAEKAJIIQcMBAsgCEEEaiEIDAALC0EAIQUCQCABIAIQwh26IAO4ENwlo5siD0QAAAAAAADwv2RFDQAgD0QAAAAAAADwQWNFDQAgD6shBQsgBEEMaiAFELEcIARBGGogASACENQTIANBA3QiBSgC8PqDASEKIAUoAuz6gwEhAQJAIAQoAiAiBkHAAEkNACAEQeAAaiABEIwWIAYQ1BohCUEBIQgDQAJAIAQoAmgiBSAJSQ0AIARB1ABqIQIDQAJAIAQoAhwiCSAGIAQoAmQiByAFEPIhDQAgBCgCYCAHEMcjDAQLIARByABqIARBGGogBEHgAGoQ0wYgBCAEKAJQNgIwIAQgBCkCSDcDKCAEIAIpAgA3AzggBCACKAIINgJAIAQoAhggCRDHIyAEIAQoAjA2AiAgBCAEKQMoNwMYQQAhBwNAAkACQCAHIAhGDQAgBEHIAGogBEE4aiABEIEKIAQgBCgCUDYCQCAEIAQpAkg3AzggBCgCVCEGIAohBQNAIAVFDQIgBEEMaiAGIAYgA24iCSADbGsQ9R0gBUF/aiEFIAkhBgwACwsgBCgCOCAEKAI8EMcjIAQoAmghBSAEKAIgIQYMAgsgB0EBaiEHDAALCwsgBEHIAGogBEHgAGogBEHgAGoQmRIgBCgCYCAEKAJkEMcjIAQgBCgCUDYCaCAEIAQpAkg3A2AgCEEBdCEIDAALCwJAA0ACQCAEKAIgIgVBAUsNACAEKAIcIgggBUEAQajogwEQpx8oAgAhBQNAIAVFDQMgBEEMaiAFIAUgA24iBiADbGsQ9R0gBiEFDAALCyAEQcgAaiAEQRhqIAEQgQogBCAEKAJQNgJoIAQgBCkCSDcDYCAEKAJUIQYgCiEFAkADQCAFRQ0BIARBDGogBiAGIANuIgkgA2xrEPUdIAVBf2ohBSAJIQYMAAsLIAQgBCgCaDYCICAEIAQpA2A3AxgMAAsLIAQoAhQhCSAEKAIQIQMgBCgCDCEHIAQoAhggCBDHIwwBCwJAA0ACQCAEKAIgIgVBAUsNACAEKAIcIgggBUEAQajogwEQpx8oAgAhBQNAIAVFDQMgBEEMaiAFIAVBCm4iBkEKbGsQ9R0gBiEFDAALCyAEQcgAaiAEQRhqQZDOABCBCiAEIAQoAlA2AmggBCAEKQJINwNgIAQoAlQhBkEEIQUCQANAIAVFDQEgBEEMaiAGIAZBCm4iA0EKbGsQ9R0gBUF/aiEFIAMhBgwACwsgBCAEKAJoNgIgIAQgBCkDYDcDGAwACwsgBCgCFCEJIAQoAhAhAyAEKAIMIQcgBCgCGCAIEMcjC0EAIQUDQCAJIAVGDQEgAyAFaiIGIAYtAAAiBkEwciAGQdcAaiAGQQpJGzoAACAFQQFqIQUMAAsLIAAgCTYCCCAAIAM2AgQgACAHNgIAIARB8ABqJAAL6xICG38BfiMAQZABayICJAAgAkEANgIkIAJCgICAgIABNwIcAkACQCABLQC4AUEBRg0AIAFBDGohAyABQQhqIQQgAUGYAWohBSABQYwBaiEGIAFBsAFqIQcgAkEoakEIaiEIIAJB0ABqQQhqIQkgAkHQAGpBHGohCkEAIQtBCCEMQQAhDUEAIQ5BACEPA0ACQCAPQf7/e0sNACAOIA9yRQ0AIAJB+ICAgHg2AlAgASAPIA4gAkHQAGoQ3B0LIAEoArABIRAgAkHQAGogAUEAENoBIAIoAlQhEQJAAkACQAJAIAIoAlAiEkGAgICAeEcNACAAQYCAgIB4NgIAIAAgETYCBAwBCyACKAJYIRMCQAJAAkACQCABLQC4AUEcRw0AIAEoArABIQ8gASgCiAEhFCABQQs2AogBAkACQCAUQQtGDQAgAiAFKAIINgJYIAIgBSkCADcDUAJAIAQoAgBBCkYNACAEELULCyAEIBQ2AgAgAyAGKQIANwIAIAMgBigCCDYCCAwBCyACQdAAaiABEM4BCyABIAEoArQBIhU2AqwBIAEgASgCsAE2AqgBIAcgAikDUDcCACAHIAIoAlg2AgggAkHQAGogAUEAEHIgAigCVCEUIAIoAlAiFkEHRw0BIABBgICAgHg2AgAgACAUNgIEDAILIAJB0ABqIAEQ7wEgAigCVCEWAkAgAigCUCIXQQdGDQAgAiAKKQIANwN4IAIgCigCCDYCgAEgAigCaCEYIAIoAmQhFSACKAJgIRkgAigCXCEaIAIoAlghGwwDCyAAQYCAgIB4NgIAIAAgFjYCBAwBCyAIIAkpAxg3AxggCCAJKQMQNwMQIAggCSkDCDcDCCAIIAkpAwA3AwAgAiAUNgIsIAIgFjYCKAJAAkACQAJAIAEtALgBIhRBF0cNACABKAKIASEUIAFBCzYCiAECQAJAIBRBC0YNACACIAUoAgg2AlggAiAFKQIANwNQAkAgBCgCAEEKRg0AIAQQtQsLIAQgFDYCACADIAYpAgA3AgAgAyAGKAIINgIIDAELIAJB0ABqIAEQzgELIAEpA7ABIR0gByACKQNQNwIAIAcgAigCWDYCCCABIB03A6gBAkACQCABLQCBAUEgcUUNACABLQC4AUH/AXFBPkcNACABEPIEIhRFDQBBACEWDAELIAJBEGogARCMASACKAIUIRQgAigCECEWCyAWQQFxDQEgAkEIaiACQShqEMoDIAIoAgwhFiACKAIIIRcgAkGAgYCAeDYCUCABIBcgFiACQdAAahDcHSABKAKsASEXQQhBKBDPICIWIAIpA0g3AyAgFiACKQNANwMYIBYgAikDODcDECAWIAIpAzA3AwggFiACKQMoNwMAIAIgFzYCOCACIA82AjQgAiAUNgIwIAIgFjYCLCACQQQ2AiggAS0AuAEhFAtBACEYAkACQCABLQCBAUEgcUUNACAUQf8BcUEJRw0AIAEgASgCeCIXQYAgcjYCeCABKAKwASEZIAEoAogBIRQgAUELNgKIAQJAAkAgFEELRg0AIAIgBSgCCDYCWCACIAUpAgA3A1ACQCAEKAIAQQpGDQAgBBC1CwsgBCAUNgIAIAMgBikCADcCACADIAYoAgg2AggMAQsgAkHQAGogARDOAQsgASkDsAEhHSAHIAIpA1A3AgAgByACKAJYNgIIIAEgHTcDqAEgASABKAJ4IhRB////v39xNgJ4IAIgASgCsAEgARDuAyACKAIAIRYgASAUNgJ4IAIoAgQhFCAWQQFxDQEgASgCrAEhFkEMEIkBIhhFDQMgGCAWNgIIIBggGTYCBCAYIBQ2AgAgASAXNgJ4CyABKAKsASEOQSgQiQEiFkUNAyAWIAIpA0g3AyAgFiACKQNANwMYIBYgAikDODcDECAWIAIpAzA3AwggFiACKQMoNwMAAkAgAS0AgQFBIHFFDQAgAS0AuAFB/wFxQQpHDQAgASgCiAEhFCABQQs2AogBAkACQCAUQQtGDQAgAiAFKAIINgJYIAIgBSkCADcDUAJAIAQoAgBBCkYNACAEELULCyAEIBQ2AgAgAyAGKQIANwIAIAMgBigCCDYCCAwBCyACQdAAaiABEM4BCyABIAEoArQBIhQ2AqwBIAEgASgCsAEiFzYCqAEgByACKQNQNwIAIAcgAigCWDYCCCACQf+AgIB4NgJQIAEgFyAUIAJB0ABqENwdC0ECIRcgDyEbIA4hGiAPIRkMBQsgASAXNgJ4CyAAQYCAgIB4NgIAIAAgFDYCBCACQShqEMkLDAILQQRBDBCNJAALQQhBKBCNJAALIBEgExDaHSASIBEQ5yMMAQsgASgCrAEhHAJAIA0gAigCHEcNACACQRxqEK8aIAIoAiAhDAsgDCALaiIUIBc2AgAgFEEYaiAYNgIAIBRBFGogFTYCACAUQRBqIBk2AgAgFEEMaiAaNgIAIBRBCGogGzYCACAUQQRqIBY2AgAgFEEcaiACKQN4NwIAIBRBJGogAigCgAE2AgAgFEE4aiATNgIAIBRBNGogETYCACAUQTBqIBI2AgAgFEEsaiAcNgIAIBRBKGogEDYCACACIA1BAWoiDTYCJAJAAkAgAS0AuAEiFEEHRg0AIBRBAUcNAQwGCyABKAKIASEUIAFBCzYCiAECQAJAIBRBC0YNACACIAUoAgg2AlggAiAFKQIANwNQAkAgBCgCAEEKRg0AIAQQtQsLIAQgFDYCACADIAYpAgA3AgAgAyAGKAIINgIIDAELIAJB0ABqIAEQzgELIAEgASgCtAEiFjYCrAEgASABKAKwASIRNgKoASAHIAIpA1A3AgAgByACKAJYNgIIIAEtALgBIRQgF0ECRw0DIBRB/wFxQQFGDQIMAwsgASgCtAEhByABKAKwASEPIAJBhAFqIBQQsiUgAkGPAq1CIIZBnOSaAa2ENwMoIAJB0ABqQc2VgAEgAkEoahCvECACIAIpAoQBNwJcIAIgAigCjAE2AmQgDyAHIAJB0ABqELMbIRQCQCABLQC4AUGiAUcNACABIAEQ7w0QhgkLIABBgICAgHg2AgAgACAUNgIECyACKAIgIgEgDRCUHyACKAIcIAEQ6SMMBAsgAkG6gICAeDYCUCABIBEgFiACQdAAahDcHSABLQC4ASEUCyALQcAAaiELIBRB/wFxQQFHDQALCyAAIAIoAiQ2AgggACACKQIcNwIACyACQZABaiQAC8gRAgh/An4jAEGAAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgkAAQIDBAUGBwgACyABQQA6ADkgAS0AOiEDIAEgAC0AIDoAOgJAIAAoAgwiBEUNACAEQcgAbCEFIAAoAghBIGohBCABQRBqIQYDQCABQQA6ADkgBEFgaikDACIKp0F+akEAIApCAlYbIQcCQAJAAkAgCkICUQ0AIAdFDQELAkACQAJAIAcOAwABAgALIAEgBBCwEiABLQA0QQFHDQMCQCAEKQMAIgpCA4NCAFINACAKpyIHIAcoAgAiB0EBajYCACAHQX9MDRALIAYgChDgBhoMAwsgASAEQXBqELASDAILIAEgBEFwahCwEgwBCyABIAQQsBILIAFBADoAOSAEQcgAaiEEIAVBuH9qIgUNAAsLAkAgACgCHCIERQ0AIAQgARDFCgsgASADOgA6DAgLIABBCGogARCpAQwHCyAAKAIYDQYCQCAAKAIMIgRFDQAgBEHQAGwhBiAAKAIIIQMgAS0AOSEIQQAhBANAIAFBAToAOQJAAkACQAJAIAMgBGoiBykDACIKpyIFQX5qQQIgCkIBVhsOAwABAgALIAdBCGooAgANAiABIAdBEGoQsBIMAgsgASAHQQhqELASDAELAkAgBUEBcQ0AIAEgB0EIahCwEgsCQCAHQSBqKQMAQgBSDQAgASAHQShqELASCyABLQA0QQFHDQAgBygCAA0AIAEgB0EIahDlEQsgASAIOgA5IAYgBEHQAGoiBEcNAAsLIAAoAhwiBEUNBiAEIAEQxQoMBgsCQAJAAkAgACgCCA4DAAIBAAsgASAAKAIoEKABDAcLIAEtADohAyABLQA5IQggAUGBAjsAOSABIAAoAgwiBkEIakEEELgPAkAgAS0ANEEBRw0AIAEoAjAQohQhBCACQQApA6ilnAEiCjcDaCACQQApA6ClnAEiCzcDYCACIAs3A3AgAiAKNwN4IAIgASkCLDcCTCACIAEoAjQ2AlQgAiALNwMgIAIgCjcDKCACIAs3AzAgAiAKNwM4IAEtADghByABLQA9IQUgAiABLwA7OwBbIAJBgQI7AFkgAkEBOgBIIAIgBDYCRCACIAE2AkAgAiAFOgBdIAIgBzoAWAJAIAYoAiAiBEUNACACLQBUQQFHDQAgAkEAOgBZAkAgBCgCCCIHRQ0AIAQoAgQiAEEIaiEEIAdBMGwiBSEHA0AgAkEgaiAEELASIARBMGohBCAHQVBqIgcNAAsgAi0AVEEBRw0AIABBIGohBANAAkAgAi0AVEEBRw0AIAJBIGogBEFoahCwEiACLQBUIQcgAi0AWSEAAkAgBEEEaigCACIJRQ0AIAdBAXFFDQAgAi0AWiEHIAJBgQI7AFkgCSACQSBqEI4CIAIgBzoAWiACLQBUIQcLAkAgBCgCACIJRQ0AIAdBAXFFDQAgAi0AWiEHIAJBgQI7AFkgCSACQSBqEI4CIAIgBzoAWgsgAiAAOgBZCyAEQTBqIQQgBUFQaiIFDQALCyACQQE6AFoLAkAgBigCQCIERQ0AIAItAFRBAUcNACAGKAI8IgUgBEEEdGohAANAAkAgAi0AVEEBRw0AIAItAFkhBCACQYECOwBZIAUoAgAgAkEgahB3IAIgBDoAWQJAIAUoAgwiBEUNACACLQBUQQFHDQAgAi0AWSEJIAJBgQI7AFkCQCAEKAIIIgdFDQAgB0ECdCEHIAQoAgQhBANAAkAgAi0AVEEBRw0AIAJBgQI7AFkgBCgCACACQSBqEI4CIAJBgQI7AFkLIARBBGohBCAHQXxqIgcNAAsLIAIgCToAWQsgAkEBOgBaCyAFQRBqIgUgAEcNAAsLAkAgAi0AVEEBRw0AIAYoAiwiBEUNACAEQThsIQcgBigCKCEEA0ACQCACLQBUQQFHDQAgBCACQSBqELEBCyAEQThqIQQgB0FIaiIHDQALCwJAIAIoAiQiBEUNACACKAIgIAIoAiwQ8A0gBCAEQQR0QRdqQXBxIgdqQQlqIgRFDQAgAigCICAHayAEQQgQzhQLIAJBMGoQ5hgLIAEgCDoAOSABIAM6ADoMBgsCQCAALQAkQQJGDQAgASgCMBCiFCEEIAIgATYCQCACIAQ2AkQgAkEBOgBZIAJBAToASCACIAEpAiw3AkwgAiABKAI0NgJUIAJBACkDoKWcASIKNwMgIAJBACkDqKWcASILNwMoIAIgCjcDMCACIAs3AzggAiABKAE6NgFaIAIgAS0AODoAWCACQSBqIAAoAigQ1QMCQCACKAIkIgFFDQAgAigCICACKAIsEPANIAEgAUEEdEEXakFwcSIEakEJaiIBRQ0AIAIoAiAgBGsgAUEIEM4UCyACQTBqEOYYDAYLIABBKGohBgJAIAAoAigiBCgCFCIHRQ0AIABBEGohAyAHQQxsIQcgBCgCECEEA0AgAS0AOSEFIAFBAToAOSAEKAIAIAEQdyABIAU6ADkgBEEMaiEEIAdBdGoiBw0ACyAALQAkQQJGDQAgASADIAYQ1ggMBgsgASAGEKUNDAULIAEtADkhBCABQQE6ADkgACgCBCIHIAEQdyABIAQ6ADkgAS0ANEEBRw0EIAcoAgBBGkcNBCABIAdBCGoQ5REMBAsgACgCECIERQ0DIAQgARDFCgwDCyABIAAoAgQiB0EoakEAELgPIAcpAwBCAFINAiAHQQhqIQQCQCAHLQAcQQJHDQADQCAEKAIAIgdBGGohBCAHLQAsQQJGDQALIAFBAToAOQsgASAEELASDAILIAEtADkhByABQQE6ADkgACgCBCIEIAEQdyABIAc6ADkgAS0ANEEBRw0BAkADQEEEIQcCQAJAIAQoAgAiBUF0akEHIAVBC0sbQXhqDhAABQUFBQUDBQUFBQUFBQUBBQtBKCEHCyAEIAdqKAIAIQQMAAsLIAEgBEEIahDlEQwBCyABLQA0QQFHDQAgASAAQRBqELASCyACQYABaiQADwsAC+QSAg5/AX4jAEGgAWsiAiQAIAEoArABIQMgAkHgAGogARCkCAJAAkAgAi0AYEEBRw0AIAIoAmQhASAAQQc2AgAgACABNgIEDAELIAItAGEhBCABKAKwASEFIAJB4ABqIAEQmgUgAigCZCEGAkAgAigCYCIHQQdHDQAgAEEHNgIAIAAgBjYCBAwBCyABQbABaiEIIAIgAikDgAE3A1ggAiACKQN4NwNQIAIgAikDcDcDSCACIAIpA2g3A0AgAiAGNgI8IAIgBzYCOCABLQC4ASEJAkACQAJAAkACQAJAIAEtAIEBQSBxDQAgCUH/AXFBF0cNASABKAKIASEGIAFBCzYCiAECQAJAIAZBC0YNACABQYwBaiEHIAIgASgCoAE2AmggAiABKQKYATcDYAJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyACQeAAaiABEM4BCyABKQOwASEQIAggAikDYDcCACAIIAIoAmg2AgggASAQNwOoAQwCC0EAIQoCQCAJQf8BcUEKRw0AIAEoAogBIQkgAUELNgKIAQJAAkAgCUELRg0AIAFBjAFqIQsgAiABKAKgATYCaCACIAEpApgBNwNgAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgCTYCCCABIAspAgA3AgwgASALKAIINgIUDAELIAJB4ABqIAEQzgELIAEgASgCtAEiCTYCrAEgASABKAKwASILNgKoASAIIAIpA2A3AgAgCCACKAJoNgIIAkACQCAHQQNLDQAgB0ECRw0BCyABLQCBAUEEcQ0BIAEtAHlBwABxDQEgAkHmgICAeDYCYCALIAkgAkHgAGoQsxshBgJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAEEHNgIAIAAgBjYCBAwEC0EBIQogAkEBOgBUCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBw4HAAYBAgMNBQALQQAhBSABLQC4AUEJRw0DIAEgASgCeCIFQYAgcjYCeCACQSBqIAEoArABIAEQ2AogAigCICEJIAEgBTYCeCACKAIkIQUgCUEBcUUNAyAAQQc2AgAgACAFNgIEDA8LIAJBwABqIQsMBQsgAkHIAGohCwwECyABLQC4AUEJRg0EIAJBADYCYAwICyACQdgAahDNHiACIAU2AlgMCAsgAkGoBK1CIIYgAkE4aq2ENwNgQZSRgAEgAkHgAGpB0IybARDXGwALIAJByABqIQsLQQAhCQJAIAEtALgBQQlHDQAgASABKAJ4IgxBgCByNgJ4IAEoArABIQ0gASgCiAEhCSABQQs2AogBAkACQCAJQQtGDQAgAUGMAWohDiACIAEoAqABNgJoIAIgASkCmAE3A2ACQCABKAIIQQpGDQAgAUEIahC1CwsgASAJNgIIIAEgDikCADcCDCABIA4oAgg2AhQMAQsgAkHgAGogARDOAQsgASkDsAEhECAIIAIpA2A3AgAgCCACKAJoNgIIIAEgEDcDqAEgASABKAJ4IglB////v39xNgJ4IAJBKGogASgCsAEgARDuAyACKAIoIQ4gASAJNgJ4IAIoAiwhDyAOQQFxDQIgASgCrAEhDkEMEIkBIglFDQMgCSAONgIIIAkgDTYCBCAJIA82AgAgASAMNgJ4IAsgBTYCACALIAEoAqwBNgIECwJAIAIoAlAiBUUNACAFKAIAIgsQowQgC0HgAEEIEM4UIAVBDEEEEM4UCyACIAk2AlAMBQsgASABKAJ4IglBgCByNgJ4IAJBMGogASgCsAEgARDYCiACKAIwIQsgASAJNgJ4IAIoAjQhCSALQQFxDQIgAiAJNgJgIAlFDQMgAkHgAGoQzR4gAiAFNgJEIAIgASgCrAEiCTYCSCACQbeBgIB4NgJgIAEgBSAJIAJB4ABqENwdDAQLIAAgDzYCBCABIAw2AnggAEEHNgIADAYLQQRBDBCNJAALIABBBzYCACAAIAk2AgQMBAsgAkHgAGoQzR4LIAEtALgBQRdHDQAgASgCiAEhBiABQQs2AogBAkACQCAGQQtGDQAgAUGMAWohByACIAEoAqABNgJoIAIgASkCmAE3A2ACQCABKAIIQQpGDQAgAUEIahC1CwsgASAGNgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgAkHgAGogARDOAQsgASkDsAEhECAIIAIpA2A3AgAgCCACKAJoNgIIIAEgEDcDqAEgCkUNASACQRhqIAJBOGoQygMgAigCHCEGIAIoAhghByACQfmAgIB4NgJgIAEgByAGIAJB4ABqENwdDAELIAIgAikCTDcDiAEgAiACKQJUNwOQASACIAIoAlw2ApgBIAIoAkghBSACKAJEIQkgAigCQCEIDAMLAkACQCABLQCBAUEgcUUNACABLQC4AUH/AXFBPkcNACABEPIEIghFDQBBACEGDAELIAJBEGogARCMASACKAIUIQggAigCECEGCyAGQQFxRQ0BIABBBzYCACAAIAg2AgQLIAJBOGoQyQsMAgsCQCABKAJ4QYCBgAFxQYCBgAFHDQACQAJAIAgoAgAiBkF0akEHIAZBC0sbQXJqDgkAAgICAgICAgECCyACQQhqIAhBCGoQihQgAigCDEEFRw0BIAIoAggiBigAAEHh7oXLBnMgBkEEai0AAEH0AHNyDQELIAIgCBCcBCACKAIEIQYgAigCACEHIAJB0YCAgHg2AmAgASAHIAYgAkHgAGoQ3B0LAkAgAS0AeUHAAHFFDQAgASgCrAEhBiACQaqBgIB4NgJgIAEgAyAGIAJB4ABqENwdCyABKAKsASEFAkBBKBCJASIGRQ0AIAYgAikDWDcDICAGIAIpA1A3AxggBiACKQNINwMQIAYgAikDQDcDCCAGIAIpAzg3AwBBBCEHIAMhCQwBC0EIQSgQjSQACwJAIARBAXENACAAIAU2AhAgACAJNgIMIAAgCDYCCCAAIAY2AgQgACAHNgIAIAAgAikDiAE3AhQgACACKQOQATcCHCAAIAIoApgBNgIkDAELIAEoAqwBIQQgAkGpgYCAeDYCYCABIAMgBCACQeAAahDcHSAAIAU2AhAgACAJNgIMIAAgCDYCCCAAIAY2AgQgACAHNgIAIAAgAikDiAE3AhQgACACKQOQATcCHCAAIAIoApgBNgIkCyACQaABaiQAC8kRAQR/A0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhMAGxsBAgMbGwQFBgcICQoODQwLAAsgACgCDCICRQ0aIAJBMGwhAiAAKAIIIQADQCAAIAEQ8AEgAEEwaiEAIAJBUGoiAg0ADBsLCwJAIAEtAARBAUcNAAJAAkACQCAAKAIEIgMoAgAiAkF0akEHIAJBC0sbQXJqDgMCAAEgCyADKAIIQQVGDQEMHwsgAygCDEUNHgsgAUEAOgAECyAAKAIIIQAMHQsgACgCDCIARQ0YIAEtAARBAUcNGAJAAkAgACgCACICQXRqQQcgAkELSxtBcmoOAxwAARsLIAAoAghBBUYNGwwaCyAAKAIMRQ0ZIAFBADoABA8LIAAoAighAAwbCyABLQAEQQFHDRUCQAJAAkAgACgCBCIDKAIAIgJBdGpBByACQQtLG0Fyag4DAgABFwsgAygCCEEFRg0BDBYLIAMoAgxFDRULIAFBADoABAwVCyABLQAEQQFHDRICQAJAIAAoAhAiAygCACICQXRqQQcgAkELSxtBcmoOAxMAARILIAMoAghBBUYNEgwRCyADKAIMRQ0QIAFBADoABAwSCyABLQAEQQFHDRQCQAJAIAAoAgQiAigCACIAQXRqQQcgAEELSxtBcmoOAxAAAQ8LIAIoAghBBUYNDwwOCyACKAIMRQ0NIAFBADoABA8LAkAgACgCBCIDQdAAaigCACIARQ0AIABBMGwhAiADQcwAaigCACEAA0AgACABEPABIABBMGohACACQVBqIgINAAsLAkACQAJAIAMoAgBBeWoOAgECAAsgAyABEIUHCyADQTBqKAIAIgBFDQAgAEEwbCECIANBLGooAgAhAANAIAAgARDwASAAQTBqIQAgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0TIANB6ABqKAIAIgBFDRMgAEEwbCECIANB5ABqKAIAIQADQCAAIAEQ8AEgAEEwaiEAIAJBUGoiAg0ADBQLCwJAIAEtAARBAUcNAAJAAkACQCAAKAIEIgMoAgAiAkF0akEHIAJBC0sbQXJqDgMCAAEOCyADKAIIQQVGDQEMDQsgAygCDEUNDAsgAUEAOgAECyAAKAIIIQAMFgsCQCABLQAEQQFHDQACQAJAAkAgACgCBCIDKAIAIgJBdGpBByACQQtLG0Fyag4DAgABDAsgAygCCEEFRg0BDAsLIAMoAgxFDQoLIAFBADoABAsgACgCCCEADBULIAAoAgQiAkECRg0GAkAgAkEBRw0AIAEtAARBAUcNBwJAAkAgACgCCCIDKAIAIgJBdGpBByACQQtLG0Fyag4DCAABBwsgAygCCEEFRg0HDAYLIAMoAgxFDQUgAUEAOgAEDAcLIAAoAggiAkEIaigCACIDRQ0GIAJBBGooAgAiAiADQThsaiEEA0AgAiABEIUHAkAgAkEwaigCACIDRQ0AIAEtAARBAUcNAAJAAkACQAJAIAMoAgAiBUF0akEHIAVBC0sbQXJqDgMCAAEDCyADKAIIQQVGDQEMAgsgAygCDEUNAQsgAUEAOgAEDAELIAMgARD3AQsgAkE4aiICIARHDQAMBwsLIAEtAARBAUcNDwJAAkACQAJAIAAoAgQiAigCACIAQXRqQQcgAEELSxtBcmoOAwMAAQILIAIoAghBBUYNAgwBCyACKAIMRQ0AIAFBADoABAwRCyACIAEQ9wEPCyABQQA6AAQPCyAAQQhqIAEQkAEPCwJAAkACQAJAIAAoAgQOAwABAgALIAAoAgggARDEBwwCCyAAKAIIIAEQxQcMAQsgACgCCCABEIwFCwJAAkAgAS0ABEEBRw0AAkACQAJAIAAoAgwiAygCACICQXRqQQcgAkELSxtBcmoOAwIAAQQLIAMoAghBBUYNAQwDCyADKAIMRQ0CCyABQQA6AAQLIAAoAhAhAAwSCyADIAEQ9wEgACgCECEADBELAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCABEMQHDAILIAAoAgggARDFBwwBCyAAKAIIIAEQjAULAkACQCABLQAEQQFHDQACQAJAAkAgACgCDCIDKAIAIgJBdGpBByACQQtLG0Fyag4DAgABBAsgAygCCEEFRg0BDAMLIAMoAgxFDQILIAFBADoABAsgACgCECEADBELIAMgARD3ASAAKAIQIQAMEAsgAyABEPcBDAELIAFBADoABAsCQCAAKAIYIgJFDQAgAS0ABEEBRw0AAkACQAJAAkAgAigCACIDQXRqQQcgA0ELSxtBcmoOAwIAAQMLIAIoAghBBUYNAQwCCyACKAIMRQ0BCyABQQA6AAQMAQsgAiABEPcBCwJAAkAgACgCHCICRQ0AIAEtAARBAUcNAAJAAkACQCACKAIAIgNBdGpBByADQQtLG0Fyag4DAgABBAsgAigCCEEFRg0BDAMLIAIoAgxFDQILIAFBADoABAsgACgCDCEADA4LIAIgARD3ASAAKAIMIQAMDQsgAyABEPcBIAAoAgghAAwMCyADIAEQ9wEgACgCCCEADAsLIAIgARD3AQ8LIAFBADoABA8LIAMgARD3AQwBCyABQQA6AAQLIAAoAgwiAkUNAiAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEtAARBAUcNAAJAAkACQAJAIAAoAgAiAkF0akEHIAJBC0sbQXJqDgMCAAEDCyAAKAIIQQVGDQEMAgsgACgCDEUNAQsgAUEAOgAEDAELIAAgARD3AQsCQCADQQhqKAIAIgBFDQAgAEEwbCECIANBBGooAgAhAANAIAAgARDwASAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNAwwACwsgAyABEPcBCyAAKAIIIAEQ8AEgACgCFCIADQQLDwsgACABEPcBDwsgAUEAOgAEDwsgAyABEPcBIAAoAgghAAwACwvJEQIPfwJ+IwBB4ABrIgUkAAJAAkACQAJAAkACQAJAAkAgAygCFCIGIAMoAgwiB0kNACADKAIEIQggAygCACEJQQIhCgwBCyADKAIIIAZqLQAAIQsgAygCBCEIIAMoAgAhCQJAIAEpAOAEIAFB6ARqKQAAhCABQfAEaikAACABQfgEaikAAISEUA0AIAVBMGogAUHgBGogC0EDdkEQcWoiCikDACAKQQhqKQMAIAtB/wBxELUWIAUpAzBCAYNQDQAgC60hFEIEIRUMAgsgASALai0AYCEKCyAKQf8BcSELAkACQCAJDgMEAAEECyALQQZqIQsMAwsCQCABLQBZQQFxRQ0AIAggASgCgAUoAtwCTw0CIAhBBmwgC2pBDGohCwwDCyAIrSEUQgIhFQsgFEIghiAVhCEUDAILIAEoAoQFEJAYIQsMAgsCQCALIAIoAogBIgxJDQAgCyAMQaj6hAEQ7hYACyACKAKEASALQQJ0aigCACILQQBODQEgBSACNgJYIAUgATYCVCAFQcgAaiAFQdQAaiAJIAggChCNAQJAIAUoAkhBBUcNACAFKAJMIQsMAgsgBSkDSCEUCwJAAkACQAJAIBSnIgtBfWpBAiALQQJLGw4DAAECAAsgBUEBOgBUIAUgBjYCWCAFQdQAahDIHiEGDAILIAUgBjYCWCAFQQA6AFQgBSAUQiCIPABVIAVB1ABqEMgeIQYMAQsgBUEDOgBUIAUgFDcCWCAFQdQAahDIHiEGCyAAIAYQ4RU2AgggAEKCgICAEDcCAAwBCwJAIAMoAhAiCiAGRg0AIAFB4AJqIQggBkF/aiEGIAEoAoQFIQ0gASgCgAUhDiADKAIIIQxBACEPAkACQAJAAkACQAJAAkACQANAIAYgB08NBCALQf///z9xIAggDCAGaiIQLQAAIhFqLQAAaiIDIAIoAnwiCU8NAwJAAkAgAigCeCADQQJ0aigCACIJQQBIDQBBACEDIAkhCwwBCyAFIAI2AlggBSABNgJUIAVBKGogBUHUAGogCyARQQh0EK0BIAUoAiwhCyAFKAIoIQMLAkAgA0EBcUUNACAFQQE6AFQgBSAGNgJYIAAgBUHUAGoQyB4Q4RU2AgggAEKCgICAEDcCAAwLCwJAIAtBgICAwABJDQACQCALQYCAgMAAcQ0AIAtBgICAgARxDQMgC0GAgICAAnFFDQEgEC0AACELIAUgBjYCWCAFIAs6AFUgBUEAOgBUIAAgBUHUAGoQyB4Q4RU2AgggAEKCgICAEDcCAAwMC0EAIRICQCAOKALcAkEBRg0AIA0gAiALEJsdIgMoAgAgA0EEaigCAEEAEPsRIRILQQEhDyAGQQFqIRMLIAogBkYNAiAGQX9qIgYgBE8NAAsgAEICNwIADAkLIAAgEzYCCCAAIBI2AgQgACAPNgIADAgLAkACQAJAIAoNACABLQDfBEEBaiIJIAtB////P3FqIgYgAigCfCIDTw0FQQAhAwJAIAIoAnggBkECdGooAgAiBkEATg0AIAUgAjYCWCAFIAE2AlQgBUEYaiAFQdQAaiALIAlBEHRBAXIQrQEgBSgCHCEGIAUoAhghAwsCQCADQQFxRQ0AIAVBAToAVCAFQQA2AlggBUHUAGoQyB4hBgwCCyAGQYCAgMAAcUUNAkEAIRMMBwsgC0H///8/cSAIIAwgCkF/aiIHai0AACIJai0AAGoiBiACKAJ8IgNPDQVBACEDAkAgAigCeCAGQQJ0aigCACIGQQBODQAgBSACNgJYIAUgATYCVCAFQSBqIAVB1ABqIAsgCUEIdBCtASAFKAIkIQYgBSgCICEDCwJAIANBAUcNACAFQQE6AFQgBSAKNgJYIAVB1ABqEMgeIQYMAQsCQCAGQYCAgMAAcUUNACAKIRMMBwsgBkGAgICAAnFFDQEgBSAHNgJYIAUgCToAVSAFQQA6AFQgBUHUAGoQyB4hBgsgACAGEOEVNgIIIABCgoCAgBA3AgAMCAsgD0EBIA9BAXMgEyAKTXJBAXEiBhshAyALQYCAgIAEcQ0FIAYNBSAAQgI3AgAMBwsgAyAJQbjmhAEQ7hYACyAGIAdBnI6FARDuFgALIAYgA0HI5oQBEO4WAAsgBiADQbjmhAEQ7hYAC0EBIQMgDiANIAIgBhDJHSESCyAAIBM2AgggACASNgIEIAAgAzYCAAwBCwJAAkACQAJAAkACQAJAAkACQAJAIAYNACABLQDfBEEBaiIJIAtB////P3FqIgMgAigCfCIGTw0CQQAhBgJAIAIoAnggA0ECdGooAgAiA0EATg0AIAUgAjYCWCAFIAE2AlQgBUEIaiAFQdQAaiALIAlBEHRBAXIQrQEgBSgCDCEDIAUoAgghBgsCQCAGQQFxRQ0AIAVBAToAVCAFQQA2AlggBUHUAGoQyB4hBgwFCyADQYCAgMAAcQ0BDAgLIAZBf2oiCSAHSQ0CIAkgB0GMjoUBEO4WAAtBASELQQAhBkEAIQkgASgCgAUoAtwCQQFGDQcMBQsgAyAGQcjmhAEQ7hYACyALQf///z9xIAEgAygCCCAJai0AACIEai0A4AJqIgMgAigCfCIHTw0BQQAhBwJAIAIoAnggA0ECdGooAgAiA0EATg0AIAUgAjYCWCAFIAE2AlQgBUEQaiAFQdQAaiALIARBCHQQrQEgBSgCFCEDIAUoAhAhBwsCQCAHQQFxRQ0AIAVBAToAVCAFIAY2AlggBUHUAGoQyB4hBgwBCyADQYCAgMAAcQ0CIANBgICAgAJxRQ0EIAUgCTYCWCAFIAQ6AFUgBUEAOgBUIAVB1ABqEMgeIQYLIAAgBhDhFTYCCCAAQoKAgIAQNwIADAULIAMgB0G45oQBEO4WAAtBASELQQAhCSABKAKABSgC3AJBAUYNAgtBASELIAEoAoQFIAIgAxCbHSICKAIAIAJBBGooAgBBABD7ESEJDAELQQAhCwsgACAGNgIIIAAgCTYCBCAAIAs2AgALIAVB4ABqJAAL8Q8CBX8BfgJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCAABAgMEBQYHAAsgASAAQQhqENUMAkAgACkDCCIHQgODQgBSDQAgB6ciAiACKAIAIgJBAWo2AgAgAkF/TA0JCyABQQxqIgMgBxDgBhoCQCAAKAIgIgRBCGooAgAiAEUNACAAQQxsIQIgBEEEaigCACEAA0AgACgCACABELwBIABBDGohACACQXRqIgINAAsLAkAgBEEUaigCACIARQ0AIABB2ABsIQIgBEEQaigCACEAA0AgACABEJQCIABB2ABqIQAgAkGof2oiAg0ACwsCQCAEKAIwIgBFDQAgACABELwBCwJAIAQoAjQiAEUNACAAQQhqKAIAIgJFDQAgAkEwbCECIABBBGooAgBBJGohAANAAkAgAEFkaikDACIHQgODQgBSDQAgB6ciBSAFKAIAIgVBAWo2AgAgBUF/TA0LCyADIAcQ4AYaAkAgAEF8aigCACIFRQ0AIAUgARCWAgsCQCAAKAIAIgVFDQAgBSABEJYCCyAAQTBqIQAgAkFQaiICDQALCwJAIAQoAjgiAEUNACAAQQhqKAIAIgJFDQAgAkECdCECIABBBGooAgAhAANAIAAoAgAgARCWAiAAQQRqIQAgAkF8aiICDQALCyAEQSBqKAIAIgBFDQcgBEEcaigCACIFIABBBHRqIQMDQCAFKAIAIAEQvAECQCAFKAIMIgBFDQAgAEEIaigCACICRQ0AIAJBAnQhAiAAQQRqKAIAIQADQCAAKAIAIAEQlgIgAEEEaiEAIAJBfGoiAg0ACwsgBUEQaiIFIANHDQAMCAsLIAEgAEEIahDVDAJAIAApAwgiB0IDg0IAUg0AIAenIgIgAigCACICQQFqNgIAIAJBf0wNCAsgAUEMaiIEIAcQ4AYaAkAgACgCICIGQQhqKAIAIgBFDQAgBkEEaigCACIFIABBBnRqIQMDQAJAIAVBOGooAgAiAEUNACAAQQxsIQIgBUE0aigCACEAA0AgACgCACABELwBIABBDGohACACQXRqIgINAAsLIAUgARDYCyAFQcAAaiIAIQUgACADRw0ACwsCQCAGQRRqKAIAIgBFDQAgAEEMbCECIAZBEGooAgAhAANAIAAoAgAgARC8ASAAQQxqIQAgAkF0aiICDQALCwJAIAYoAhhBgICAgHhGDQAgBkEgaigCACIARQ0AIABBMGwhAiAGQRxqKAIAIQADQCAAIAEQ9QIgAEEwaiEAIAJBUGoiAg0ACwsCQCAGKAI8IgBFDQAgAEEIaigCACICRQ0AIAJBMGwhAiAAQQRqKAIAQSRqIQADQAJAIABBZGopAwAiB0IDg0IAUg0AIAenIgUgBSgCACIFQQFqNgIAIAVBf0wNCgsgBCAHEOAGGgJAIABBfGooAgAiBUUNACAFIAEQlgILAkAgACgCACIFRQ0AIAUgARCWAgsgAEEwaiEAIAJBUGoiAg0ACwsgBigCQCIARQ0GIAAoAgAgARCWAg8LIAAoAgQiAEEIaigCACICRQ0FIABBBGooAgAiACACQThsaiEFA0AgACABENgLAkAgAEEwaigCACICRQ0AIAIgARC8AQsgAEE4aiIAIAVHDQAMBgsLIAAoAgQiAEEIaigCACICRQ0EIABBBGooAgAiACACQThsaiEFA0AgACABENgLAkAgAEEwaigCACICRQ0AIAIgARC8AQsgAEE4aiIAIAVHDQAMBQsLIAAoAgQgARD1CQ8LAkAgACgCBCIFKQMIIgdCA4NCAFINACAHpyIAIAAoAgAiAEEBajYCACAAQX9MDQQLIAFBDGogBxDgBhoCQCAFKAIgIgBFDQAgAEEIaigCACICRQ0AIAJBMGwhAiAAQQRqKAIAIQADQCAAIAEQ4BMgAEEwaiEAIAJBUGoiAg0ACwsgBSgCJCABEJYCDwsCQCAAKAIEIgApAwAiB0IDg0IAUg0AIAenIgIgAigCACICQQFqNgIAIAJBf0wNAwsgAUEMaiIDIAcQ4AYaIAAoAigiAkUNASAAKAIkIgAgAkEwbGohBQNAAkAgACgCAA0AAkAgAEEIaikDACIHQgODQgBSDQAgB6ciAiACKAIAIgJBAWo2AgAgAkF/TA0FCyADIAcQ4AYaCwJAIABBKGooAgAiAkUNACACIAEQvAELIABBMGoiACAFRw0ADAILCwJAIAAoAgQiACgCAA0AAkAgACkDCCIHQgODQgBSDQAgB6ciAiACKAIAIgJBAWo2AgAgAkF/TA0DCyABQQxqIAcQ4AYaCwJAAkAgAC0ARUF+ag4CAQIACwJAIAApAygiB0IDg0IAUg0AIAenIgIgAigCACICQQFqNgIAIAJBf0wNAwsgAUEMaiICIAcQ4AYaAkAgACgCQCIALQAlQQJGDQACQCAAKQMIIgdCA4NCAFINACAHpyIFIAUoAgAiBUEBajYCACAFQX9MDQQLIAIgBxDgBhogAEEgaiABEIoODwsgACgCCCICRQ0BIAJBOGwhAiAAKAIEIQADQAJAAkAgACgCAEEJRw0AIABBCGogARD1AgwBCyAAIAEQmAMLIABBOGohACACQUhqIgINAAwCCwsgACgCKCICRQ0AIAJBOGwhAiAAKAIkIQADQAJAAkAgACgCAEEJRw0AIABBCGogARD1AgwBCyAAIAEQmAMLIABBOGohACACQUhqIgINAAsLDwsAC78TAgh/A34jAEHAGmsiAyQAIANCg4CAgBA3AhwgA0KDgICAEDcCECADQoOAgIAQNwIoIANBADoAMSADQYACOwEkIANBAjYCDCADQQE6ABggA0ECQQEgAkH1A0kbIgQ6ADAgA0GADmogA0EoahDcCCADIAMpAY4ONwPwDSADIAMvAZYOOwH4DSADLQCNDiEFIAMtAIwOIQYgAygCiA4hByADKAKEDiEIIAMoAoAOIQkCQAJAAkACQAJAIAMoArQRIgpBgICAgHhHDQAgAyADKQPwDTcD8AUgAyADLwH4DTsB+AUgBiEEDAELIANBoBRqQRhqIANBgA5qQRhqQZwD/AoAACADQaAUakG4A2ogA0GADmpBuANqQegC/AoAACADIAU6AK0UIAMgBjoArBQgAyAHNgKoFCADIAg2AqQUIAMgCTYCoBQgAyAKNgLUFyADIAMpA/ANNwGuFCADIAMvAfgNOwG2FCADQeAXaiEFAkAgAygC6BciCSADKALgF0cNACAFEIgaCyADKALkFyAJQQlsaiIIQgA3AAAgCEEAOgAIIAMgCUEBajYC6BcgA0H4F2ohBwJAIAMoAoAYIgkgAygC+BdHDQAgBxCHGgsgA0HUF2ohBiADKAL8FyAJQQN0akIANwIAIAMgCUEBajYCgBggA0HsF2ohCgJAIAMoAvQXIgkgAygC7BdHDQAgChCFGgsgAygC8BcgCUECdGpBADYCACADIAlBAWo2AvQXIANBgA5qIAZBABCLEAJAAkACQCADKAKADiIJQQNGDQAgAyADKQGODjcD4A0gAyADLwGWDjsB6A0MAQsgA0GADmogBkEAEIsQAkAgAygCgA4iCUEDRg0AIAMgAykBjg43A+ANIAMgAy8Blg47AegNDAELIANBgA5qIAZBABCLECADKAKEDiEIAkACQCADKAKADiIJQQNGDQAgAyADKQGODjcD4A0gAyADLwGWDjsB6A0MAQsgAyAINgKsGiADQYAOaiAGQQAQixAgAygChA4hCAJAIAMoAoAOIglBA0YNACADIAMpAY4ONwPgDSADIAMvAZYOOwHoDQwBCyADIAg2ArAaIANBgA5qIANBoBRqEJUPAkAgAygCgA4iCUEDRg0AIAMgAykBjg43A+ANIAMgAy8Blg47AegNDAILIANBgA5qIANBoBRqEIoWAkAgAygCgA4iCUEDRg0AIAMgAykBjg43A+ANIAMgAy8Blg47AegNDAILIANBgA5qIANBoBRqIAEgAhCFBAJAIAMoAoAOIglBA0YNACADIAMpAY4ONwPgDSADIAMvAZYOOwHoDQwCCyAGEPoWIANBgA5qIANBoBRqENYOIANBnBhqIANBgA5qQYAC/AoAACADQYAOaiADQaAUahD6CAJAIAMoAoAOIglBA0YNACADIAMpAY4ONwPgDSADIAMvAZYOOwHoDQwCCyADQaAUahCNDyADQYAOaiADQaAUahDWBwJAIAMoAoAOIglBA0YNACADIAMpAY4ONwPgDSADIAMvAZYOOwHoDQwCCyADQYAOaiADQaAUahCkAgJAIAMoAoAOIglBA0YNACADIAMpAY4ONwPgDSADIAMvAZYOOwHoDQwCCyADQaAUahCmCiADQaAUahCwAyADQYAOaiADQcAUaiIGEL4BIANBkBhqIQkCQCADKAKQGCIIRQ0AIAggCCgCACIBQX9qNgIAIAFBAUcNACADKAKQGCADKAKUGBDuEQsgCSADKAKIDjYCCCAJIAMpAoAONwIAIAMgA0GgFGpBkAZBiAYgAygCkBgbaigCADYCpBogBRD7FiAKEPwWIAcQ/RYgA0GEGGoQ/BYgAyADKQHmFzcD4A0gAyADLwHuFzsB6A0gAykC1BchCyADKQLcFyEMIAMvAeQXIQkgA0GYC2ogA0HwF2pByAL8CgAAIAYQgBwgAyADLwHoDTsBkAsgAyADKQPgDTcDiAsgA0GoA2ogA0GYC2pByAL8CgAAIAMgAy8BkAsiCDsB+AUgAyADKQOICyINNwPwBSADIA03A5gDIAMgCDsBoAMgA0HQAGogA0GoA2pByAL8CgAAIAMgCTsBRCADIAw3AjwgAyALNwI0IAMgAykDmAM3AUYgAyADLwGgAzsBTgJAAkACQAJAAkACQCACQfUDSQ0AIANBoBRqQQJBASADQTRqEKQBAkAgAygCoBQiCUGAgICAeEcNACADIAMpAbYUNwOYCyADIAMvAb4UOwGgCwwGCyADIAMpAbYUNwOADiADIAMvAb4UOwGIDiADLQC1FCEFIAMtALQUIQcgAygCsBQhAiADKAKsFCEGIAMoAqgUIQogAygCpBQhASADQYAGaiADQcAUakGoAvwKAAAgAyADKQOADjcDqAggAyADLwGIDjsBsAhB0AIQiQEiCEUNASAIIAU6AB0gCCAHOgAcIAggAjYCGCAIIAY2AhQgCCAKNgIQIAggATYCDCAIIAk2AgggCEKBgICAEDcCACAIIAMpA6gINwEeIAggAy8BsAg7ASYgCEEoaiADQYAGakGoAvwKAABB3NKEASEHDAQLIANBoBRqQQBBASADQTRqEKEBIAMoAqAUDQIgAyADKQG2FDcDgA4gAyADLwG+FDsBiA4gAy0AtRQhCSADLQC0FCEFIAMoArAUIQcgAygCrBQhAiADKAKoFCEGIAMoAqQUIQogA0G4CGogA0HAFGpBwAL8CgAAIAMgAykDgA43A/gKIAMgAy8BiA47AYALQeQCEIkBIghFDQEgCCAJOgAZIAggBToAGCAIIAc2AhQgCCACNgIQIAggBjYCDCAIIAo2AgggCEKBgICAEDcCACAIIAMpA/gKNwEaIAggAy8BgAs7ASIgCEEkaiADQbgIakHAAvwKAABBxNOEASEHDAMLQQRB0AIQjSQAC0EEQeQCEI0kAAsgAyADKQG2FDcDmAsgAyADLwG+FDsBoAsMAQsgA0E0ahDQEkEAIQUMBgsgAy0AtRQhBSADLQC0FCEEIAMoArAUIQcgAygCrBQhCCADKAKoFCEJIANBNGoQ0BIMBAsgAy0AjQ4hBSADLQCMDiEEIAMoAogOIQcMAQsgAy0AjQ4hBSADLQCMDiEEIAMoAogOIQcgAygChA4hCAsgA0HAFGoQgBwgBhDQEiADIAMvAegNIgI7AZALIAMgAykD4A0iCzcDiAsgAyALNwPwBSADIAI7AfgFCyADIAMpA/AFNwOYCyADIAMvAfgFOwGgCwsgCUEDRg0AIABBAzoACQwBCyAAIAU6AAkgACAEOgAIIAAgBzYCBCAAIAg2AgAgACADLwGYCzsBCgsgA0HAGmokAAuQEgIRfwF+IwBB0AFrIgIkACABKAKwASEDIAEoAogBIQQgAUELNgKIASABQYwBaiEFIAFBsAFqIQYCQAJAIARBC0YNACACIAEoAqABNgJoIAIgASkCmAE3A2ACQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBSkCADcCDCABIAUoAgg2AhQMAQsgAkHgAGogARDOAQsgASABKAK0ASIHNgKsASABIAEoArABIgg2AqgBIAYgAikDYDcCACAGIAIoAmg2AggCQAJAAkAgAS0AuAEiBA0AIAEoAogBIQQgAUELNgKIAQJAAkAgBEELRg0AIAIgASgCoAE2AmggAiABKQKYATcDYAJAIAEoAghBCkYNACABQQhqELULCyABIAQ2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyACQeAAaiABEM4BCyABKQOwASETIAYgAikDYDcCACAGIAIoAmg2AgggASATNwOoASABIAEoAngiBEG///9fcUHAAHI2AnggAiABEK0DIAIoAgAhCSABIAQ2AnggAigCBCEKIAlBAXFFDQEgCCAHIAoQ2hIhASAAQQA2AgAgACABNgIEDAILIAEoArQBIQYgASgCsAEhCSACQQhqIAQQsiUgAkGPAq1CIIZBn7aBAa2ENwMgIAJB4ABqQc2VgAEgAkEgahDICCACIAIpAgg3AmwgAiACKAIQNgJ0IAkgBiACQeAAahCzGyEEAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQA2AgAgACAENgIEDAELAkACQAJAAkAgAS0AuAEiBEEBRw0AIAEoAogBIQQgAUELNgKIAQJAAkAgBEELRg0AIAIgASgCoAE2AmggAiABKQKYATcDYAJAIAEoAghBCkYNACABQQhqELULCyABIAQ2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyACQeAAaiABEM4BCyAB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KAIAIgVBAWo2AgAgBUF/TA0ECyACQdgCaiAAIAsgBigCCBDfCQJAIAIpA9gCIgxQDQAgAigC8AIhBiACKQPoAiENIAIoAuACIQUCQCADKQMAIgtCA4NCAFINACALpyIDIAMoAgAiA0EBajYCACADQX9MDQULIAIgCzcD6AIgAiAFNgLgAiACIAw3A9gCIAYgDSACQdgCahDsEAwBCwsCQCACKALgAkF4aikDACILQgODQgBSDQAgC6ciACAAKAIAIgBBAWo2AgAgAEF/TA0DCyACQQA2AugDIAIgCzcD4AMCQCADKQMAIgtCA4NCAFINACALpyIDIAMoAgAiA0EBajYCACADQX9MDQMLIAJBADYCGCACIAs3AxAgAkHqBK1CIIYiCyACQRBqrYQ3A+gCIAIgCyACQeADaq2ENwPgAiACIAsgBq2ENwPYAkHphYABIAJB2AJqQbzkmgEQ1xsACyAEQShsIQYCQANAIAZFDQEgAyAAEO0XIAZBWGohBiADQShqIQMMAAsLAkAgBygCAEGAgICAeEcNACAHQQRqIAAQigUMAwsgByAAENccDAILIAIgAikD2AM3A+ACIAIgAikD0AM3A9gCIAJBwANqENgiIAJBtAFqEJERAkAgAigC5AJFDQAgAkEANgK8ASACQoCAgICAATcCtAEgAiAAKQJANwLAASABKAIIQShsIQYgAiACQdgCajYCyAEgASgCBCEDAkADQCAGRQ0BIAZBWGohBiADIAJBtAFqEPYMIANBKGohAwwACwsgAUEcaiEDIAFBIGohACABKAIMIgYoAgQhBQJAAkAgBigCAEGAgICAeEcNACAFIAJBtAFqEL0BDAELIAUgBigCCCACQbQBahCMHgsgAkG0AWogAxD2GiAAIAJBtAFqEK8iIAJBtAFqEJkhCyACQdgCahCGDQwBCwALIAJB8ANqJAALwxABBX8gACgCACECIAEtAAQhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkF0akEHIAJBC0sbDiYAASMiISAfHh0cGxoZGCUXFhUUExIREA4NJSUMCwoJCAcGBQQDAgALIAFBADoABA8LIANBAXFFDSMgASAAKAIMIgIgASgCAGpBAmo2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AAwLCyAAIAIpA7ACNwIYIAAgAikDqAI3AhAgACACKQOgAjcCCCAAQQI6ACAgAEKigICAsICAgIB/NwIADAoLIAAgAikDsAI3AhggACACKQOoAjcCECAAIAIpA6ACNwIIIABBAzoAICAAQqKAgICwgICAgH83AgAMCQsgAiACKQOwAjcDyAIgAiACKQOoAjcDwAIgAiACKQOgAjcDuAJBBCEDIAQoAgAgASgCCEYNBCABEJYKQfsARw0EIAJB0AJqIAEgAkEQahCUBCACLQDUAiEBIAIoAtACIgVBIkYNAyAAQQVqIAJB0AJqQQVqQTv8CgAAIAAgAToABCAAIAU2AgAMCAsgACACKQOwAjcCGCAAIAIpA6gCNwIQIAAgAikDoAI3AgggAEEFOgAgIABCooCAgLCAgICAfzcCAAwHCyAAIAIpA7ACNwIYIAAgAikDqAI3AhAgACACKQOgAjcCCCAAQQg6ACAgAEKigICAsICAgIB/NwIADAYLIAAgAikDsAI3AhggACACKQOoAjcCECAAIAIpA6ACNwIIIABBCToAICAAQqKAgICwgICAgH83AgAMBQsgAUH/AXFBDEYNACACIAQoAgg2AswCIAIgBCkCADcCxAIgASEDCyAAIAIpA8gCNwIYIAAgAikDwAI3AhAgACACKQO4AjcCCCAAIAM6ACAgAEKigICAsICAgIB/NwIADAMLAkAgAy0AZQ0AIAJB2ABqIAEQjA4gAiACKAJsNgJUIAIgAikCZDcCTCACIAIpAxA3A0AgAiACKAIYNgJIIAJBIDYCkAEgAkHQAmogASgCBCABKAIIIAJBwABqIAJBkAFqENoOIAAgAkHQAmpBwAD8CgAADAMLIAJBIGogARD9BSAAQqKAgICggICAgH83AgAgACACKQIwNwIYIAAgAikCODcCICACIAIpAxA3AiQgACACKQIgNwIIIAIgAigCGDYCLCAAIAIpAig3AhAMAgsgAkEMakHQ2okBQdTaiQEQuBwACyACQYACaiABELUMIABCooCAgNCAgICAfzcCACAAIAIpAxAiBjcCCCAAIAIpA5ACNwIYIAAgAigCmAI2AiAgAiACKAIYNgKIAiAAIAIpA4gCNwIQIAIgBjcDgAILIAJBkANqJAALzhACDn8EfiMAQYACayICJAACQAJAAkACQAJAAkAgAS0AFCIDQQJGDQBBACEEIAJBADYBUiACQQA2AgwgAkKAgICAgAE3AgQgAkKAgICAgAE3AkAgAkKAgICAwAA3AjAgAkEANgJIIAJBADoAPCACQQA2AjggAiAALwF4OwFQIAIgACgCdDYCTCACQQApA6ClnAEiEDcCECACQQApA6ilnAEiETcCGCACIBA3AiAgAiARNwIoIAIgAC0AfjoAViAAQSxqIQUCQANAIARB1ABGDQEgACAEakEsaiIGKAIAIQcgBiACQQRqIARqIggoAgA2AgAgCCAHNgIAIARBBGohBAwACwsgASgCECEJAkAgASkDACIQQgODIhJCAFINACAQpyIEIAQoAgAiBEEBajYCACAEQX9MDQYLIAUgECAJQQEQqw5BACEEIAJBADYCYCACQoCAgICAATcCWCACQQA2AowBIAJBADoAkAEgAkEANgKcASACQQA2AaYBIAJCgICAgMAANwKEASACQoCAgICAATcClAEgAiAALwF4OwGkASACIAAoAnQ2AqABIAJBACkDoKWcASIRNwJkIAJBACkDqKWcASITNwJsIAIgETcCdCACIBM3AnwgAiAALQB+OgCqAQJAA0AgBEHUAEYNASAAIARqQSxqIgYoAgAhByAGIAJB2ABqIARqIggoAgA2AgAgCCAHNgIAIARBBGohBAwACwsgASgCGCIKKAIIIgdBBnQhBiAKKAIEIQQgAC0AfkEBcUUNAQNAIAZFDQQCQCAEKAIAIgdBfmoOAwQABAALIAZBQGohBiAEQcAAaiEEIAdBBXFBAUcNAAwDCwtBACEEIAJBADYB+gEgAkEANgK0ASACQoCAgICAATcCrAEgAkKAgICAgAE3AugBIAJCgICAgMAANwLYASACQQA2AvABIAJBADoA5AEgAkEANgLgASACIAAvAXg7AfgBIAIgACgCdDYC9AEgAkEAKQOgpZwBIhA3ArgBIAJBACkDqKWcASIRNwLAASACIBA3AsgBIAIgETcC0AEgAiAALQB+OgD+ASAAQSxqIQUgASgCGCEKAkADQCAEQdQARg0BIAAgBGpBLGoiBigCACEHIAYgAkGsAWogBGoiCCgCADYCACAIIAc2AgAgBEEEaiEEDAALCwJAIAooAhQiBEUNACAEQQxsIQcgCigCECEEIAAtAHkhCCAALQAoIQkDQCAAQQA6AHkgAEEAOgAoAkAgBCgC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AUGYAWohBiABQYwBaiEHIAFBCGohCCABQbABaiEJIAJBtAFqIQogAkEgakEkaiELQSAhDEEAIQ0DQCACIA02AhwCQCABKAJoIAEoArABIgNGDQAgASADNgJoIAEgASgCZCADIAEoAmxrIgNrNgJcIAEgASgCYCADajYCWAsgAkEgaiABEIYCIAkgAigCKDYCCCAJIAIpAiA3AgACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtALgBIgNBfmoOEQIBAQEBAQEBAQEBAQEBAQEEAAsCQCADQURqDg8HAQEBAQEBAQEBAQEBAQMACyADQaMBRg0EC0Gs85oBQShBuISbARCkIQALIAEgASgCeCIOQf//eXE2AnggASgCsAEhDyABKAKIASEDIAFBCzYCiAECQAJAIANBC0YNACACIAYoAgg2AiggAiAGKQIANwMgAkAgCCgCAEEKRg0AIAgQtQsLIAggAzYCACAFIAcpAgA3AgAgBSAHKAIINgIIDAELIAJBIGogARDOAQsgASkDsAEhFSAJIAIpAyA3AgAgCSACKAIoNgIIIAEgFTcDqAECQAJAAkACQCABLQC4ASIDQQNGDQACQCADQRxHDQAgASgCiAEhAyABQQs2AogBAkACQCADQQtGDQAgAiAGKAIINgIoIAIgBikCADcDIAJAIAgoAgBBCkYNACAIELULCyAIIAM2AgAgBSAHKQIANwIAIAUgBygCCDYCCAwBCyACQSBqIAEQzgELIAEpA7ABIRUgCSACKQMgNwIAIAkgAigCKDYCCCABIBU3A6gBIAJBCGogARCtAyACKAIMIRAgAigCCEEBcUUNAyAQIQ8gASAONgJ4DAgLIAIgARCtAyACKAIEIRECQCACKAIAQQFxRQ0AIBEhDyABIA42AngMCAsgAS0AuAEhAyACQQM6ALsCIAEoArABIRICQCADQQNHDQBBASEQDAILIAEoArQBIQkgAkG8AmogAxCyJSACQY8CrUIghiACQbsCaq2ENwPIAiACQSBqQc2VgAEgAkHIAmoQrxAgAiACKQK8AjcCLCACIAIoAsQCNgI0IBIgCSACQSBqELMbIQ8gAS0AuAFBogFHDQMgARC/FCEDIAEQkhAgASADEIYJDAMLQQAhECAJKAIAIhIhEQsgASgCtAEhAyACQSBqIAEQhgIgASADNgKsASABIBI2AqgBIAkgAikCIDcCACAJIAIoAig2AgggA61CIIYgD62EIRVBASETDAgLIAJBAzoAuwIgAS0AuAEiA0EDRg0GIAEoArQBIQkgASgCsAEhDSACQbwCaiADELIlIAJBjwKtQiCGIAJBuwJqrYQ3A8gCIAJBIGpBzZWAASACQcgCahCvECACIAIpArwCNwIsIAIgAigCxAI2AjQgDSAJIAJBIGoQsxshDwJAIAEtALgBQaIBRw0AIAEQvxQhAyABEJIQIAEgAxCGCQsgECERCyAREIkCIBFBwABBCBDOFCABIA42AngMAwsgCCkDACEVIAhBCjYCACACIAgpAwg3AyggAiAVNwMgAkACQCAVpyIDQQpGDQAgA0EFRg0BIAJBIGoQtQsLQazzmgFBKEGMiJsBEKQhAAsgASgCsAEiAyABKAJsIhJJDQkgASgCtAEiECABKAJwSw0JIAIpAyghFiABKAJgIAMgEmtqIBAgA2sQ+xghFSACQSBqIAEQhgIgASAQNgKsASABIAM2AqgBIAkgAikCIDcCACAJIAIoAig2AgggEK1CIIYgA62EIRcgFkIgiKchEiAWpyERQQAhEwwGCyABIAEoAngiA0H/v39xNgJ4IAJBIGogASgCsAFBACABEGMgASADNgJ4IAIoAiAhDyACKAKwASIDQYGAgIB4Rg0BIAIpAjwhFiACKQI0IRggAikCLCEZIAIoAighDiACKAIkIRQgAkHMAWogC0HsAPwKAAAgAiAKKAIINgLIASACIAopAgA3A8ABQQQhEwJAIANBgICAgHhHDQAgGCEXIBYhGiAZIRUgDiESIBQhESAPIRAMBgtBoAEQiQEiEEUNCSAQIBY3AhwgECAYNwIUIBAgGTcCDCAQIA42AgggECAUNgIEIBAgDzYCACAQQSRqIAJBzAFqQewA/AoAACAQIAM2ApABIBAgAikDwAE3ApQBIBAgAigCyAE2ApwBQQMhEwwFCyACQSBqQQRyQaMBELIlIAJBIDYCNCACQZiEmwE2AjAgAkGwgICAeDYCICABKAKwASABKAK0ASACQSBqELMbIQ8LIA9BCGoQ4wMgD0EgQQgQzhQLIAAgAigCHDYCCCAAIAIpAhQ3AgAgAkHQAmokAA8LIAEoArABIQMgASgCtAEhEiACQSBqIAEQhgIgASASNgKsASABIAM2AqgBIAkgAikCIDcCACAJIAIoAig2AghBAiETIA8hEQsgASAONgJ4CwJAIA0gAigCFEcNACACQRRqEKsaIAIoAhghBAsgBCAMaiIDIBo3AwAgA0F4aiAXNwMAIANBcGogFTcDACADQWxqIBI2AgAgA0FoaiARNgIAIANBZGogEDYCACADQWBqIBM2AgAgDEEoaiEMIA1BAWohDQwACwsgAyACKAIoEOkgAAtBiI6bAUHWAEHgjpsBEKQhAAtBCEGgARCNJAALqQ8BBX8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADhQSEgABAgMEBQYHCAkKCwwNDg8QERILIAEtADRBAUcNEQJAIABBBGoiAygCAEGAgICAeEYNACACIAM2AgQgAiAAQRBqNgIMIAIgAEEcajYCCCABIAJBBGoQ+AUMEgsgAiAAQRRqNgIMIAIgAEEgajYCCCACIABBCGo2AgQgASACQQRqEPgFDBELIAEtADRBAUcNECABLQA6IQQgAUEBOgA6IABBEGohAyABLQA5IQUCQCAALQAkQQJHDQADQCADKAIAIgZBGGohAyAGLQAsQQJGDQALIAFBAToAOQsgASADELASAkAgACgCKCIARQ0AIAAgARCVEgsgASAEOgA6IAEgBToAOQwQCyABLQA0QQFHDQ8gAS0AOiEFIAFBAToAOiAAQRBqIQMgAS0AOSEEAkACQCAALQBEQQRGDQAgASADEMYRDAELAkAgAC0AJEECRw0AA0AgAygCACIGQRhqIQMgBi0ALEECRg0ACyABQQE6ADkLIAEgAxCwEgsgAUEBOgA6IAEgBDoAOQJAIAAoAlgiAEUNACAAIAEQlRILIAEgBToAOiABIAQ6ADkMDwsgAS0ANEEBRw0OIAAoAgwiA0UNDiADQThsIQMgACgCCCEAA0ACQCABLQA0QQFHDQAgACABELEBCyAAQThqIQAgA0FIaiIDDQAMDwsLIAEtADRFDQ0gAS8AOSEDIAFBgQI7ADkgACgCBCABEI4CIAEgAzsAOQwNCyABLQA0QQFHDQwgAS0AOiEGIAFBAToAOiABLQA5IQQCQCAAKAIMIgNFDQAgA0E4bCEDIAAoAghBMGohAANAAkAgAS0ANEEBRw0AIAFBgQI7ADkgACgCACABEI4CIAFBgQI7ADkLIABBOGohACADQUhqIgMNAAsLIAEgBjoAOiABIAQ6ADkMDAsgAS0ANEEBRw0LIAEvADkhAyABQYECOwA5IAAoAgQgARCOAiABIAM7ADkMCwsgAS0ANEEBRw0KIAEvADkhAyABQYECOwA5IAAoAgQgARCOAiABIAM7ADkMCgsgAS0ANEEBRw0JIAAoAgRBAUcaIABBCGogARDkEQwJCyABLQA0QQFHDQggAS0AOiEDIAEtADkhBiABQYECOwA5IAAoAgQgARCOAgJAIAEtADRBAUcNACABQYECOwA5IAAoAgggARCOAiABLQA0QQFHDQAgAUGBAjsAOSAAKAIMIAEQjgIgAS0ANEEBRw0AIAFBgQI7ADkgACgCECABEI4CCyABIAM6ADogASAGOgA5DAgLIAEtADRBAUcNByABLQA6IQYgAUEBOgA6IAEtADkhBCABIABBGGoQsBIgAS0ANCEDAkAgACgCNCIFRQ0AIANBAXFFDQAgAUGBAjsAOSAFIAEQjgIgAS0ANCEDCwJAIAAoAjAiAEUNACADQQFxRQ0AIAFBgQI7ADkgACABEI4CCyABIAY6ADogASAEOgA5DAcLIAEtADRBAUcNBiABLwA5IQMgAUGBAjsAOSAAKAIEIAEQjgIgASADOwA5DAYLIAEtADRBAUcNBSABLwA5IQMgAUGBAjsAOSAAKAIEIAEQjgIgASADOwA5DAULIAEtADRBAUcNBCABLQA5IQMgAS0AOiEGIAFBgQI7ADkgACgCBCABEI4CIAEgBjoAOiABIAM6ADkgAS0ANEEBRw0EIAFBgQI7ADkgACgCCCABEI4CIAEgBjoAOiABIAM6ADkMBAsgAS0ANEEBRw0DIAFBADoAOSABIABBGGoQsBIgAS0ANCEDAkAgACgCNCIGRQ0AIANBAXFFDQAgAS0AOiEDIAFBgQI7ADkgBiABEI4CIAEgAzoAOiABLQA0IQMLAkAgACgCMCIGRQ0AIANBAXFFDQAgAS0AOiEDIAFBgQI7ADkgBiABEI4CIAEgAzoAOiABLQA0IQMLAkAgACgCQCIGRQ0AIANBAXFFDQAgAS0AOiEDIAFBgQI7ADkgBiABEI4CIAEgAzoAOiABLQA0IQMLIAFBAToAOSAAKAJEIgBFDQMgA0EBcUUNAyABLQA6IQMgAUEBOgA6IAAgARCOAiABIAM6ADogAUEBOgA5DAMLIAAoAghBAEgNAiAAKAIQIgNFDQIgAS0ANEEBRw0CIANBAnQhAyAAKAIMIQADQAJAIAEtADRBAUcNACABLwA5IQYgAUGBAjsAOSAAKAIAIAEQjgIgASAGOwA5CyAAQQRqIQAgA0F8aiIDDQAMAwsLIAEtADRBAUcNASABLQA6IQMgAUEBOgA6IAEtADkhBgJAIAAtABxBAkYNACABIABBCGoQsBILIAEgAzoAOiABIAY6ADkgACgCKCIARQ0BIAAgARDBHgwBCyABLQA0QQFHDQAgACgCQCIARQ0AIAEtADohBiABLQA5IQQgAUGBAjsAOQJAIAAoAggiA0UNACADQQJ0IQMgACgCBCEAA0ACQCABLQA0QQFHDQAgAUGBAjsAOSAAKAIAIAEQjgIgAUGBAjsAOQsgAEEEaiEAIANBfGoiAw0ACwsgASAGOgA6IAEgBDoAOQsgAkEQaiQAC4MPAhF/AX4jAEHAAGsiBCQAAkACQCADKAIADQAgBEEEaiABKAKwDSABKAK0DSIFKAIIQX9qQXhxakEIaiIGIAMoAggiByADKAIMIgggAygCECIJIAMoAhQiCiAFKAIQIgsREwACQAJAIAQoAgRBAUcNACACQZgDaiEMIAFBkAVqIQ0gAy0AGCEOQQAhDyABLQCsDUEBcSEQIAEpAwBCAoUgASkDCIQhFSAJIREDQCAEKAIIIRIgBCAEKAIMIgU2AiQgBCAJNgIgAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUgCEsNACAJIAVBAWpLDQAgBCATQYB+cSAOciITNgIcIAQgBTYCGCAEIAk2AhQgBCAINgIQIAQgBzYCDCAEQQE2AgQgEA0BIBVQDQMgAigCyARBAkYNAiAEQTBqIA0gDCAEQQRqIA8Q8QEgBCgCNCEUAkACQAJAAkAgBCgCMCIPQQJHDQAgFEEBcUUNAyAEQQRqIAEgAiADEMAFIAQoAgQNAUEAIQUMAgsgD0UNDiAEIAQoAjgiBTYCICAEIAo2AiQgCiAISw0HIAUgCkEBaksNByAEIA42AhwgBCAKNgIYIAQgBTYCFCAEIAg2AhAgBCAHNgIMIAQgFDYCCCAEQQI2AgQgAigCyARBAkYNCCACQdgBaiEFAkACQAJAAkACQAJAAkACQCABKAKABSIJLQDiAg0AIARBMGogASAFIARBBGoQUCAEKAIwIgVBAkYNASAFQQFxRQ0HIAQoAjghCSAEKAI0IQgMFAsgCS0A4wIhEiAEQTBqIAEgBSAEQQRqEFAgBCgCMCIJQQJHDQELIAQgBCgCNCIFNgIkIARBAjYCIAwBCyAJQQFHDQQgBCgCOCEJIAQoAjQhCCASQQFxRQ0RIARBIGogBEEEaiAIIAkgCSABIAUQ/QcgBCgCICIFQQJHDQEgBCgCJCEFCyAFEOEVGiAEQTBqIAEgAiADEMAFIAQoAjANAUEAIQUMAgsgBUUNAiAEKAIoIQkgBCgCJCEIDBALIAAgBCkCOEIgiTcCBEEBIQULIAAgBTYCAAwUC0Gzn4UBQc8BQZyghQEQ1xsACyAAIAQpAgxCIIk3AgRBASEFCyAAIAU2AgAMEQsgAigCyARBAkYNBiACQdgBaiEFAkACQAJAAkACQCABKAKABSIJLQDiAg0AIARBBGogASAFIAMQUCAEKAIEIgVBAkYNAUEBIQkgBUEBRg0EQQAhCQwNCyAJLQDjAiEKIARBBGogASAFIAMQUCAEKAIEIglBAkcNAQsgBCAEKAIIIgU2AjQgBEECNgIwDAELIAQoAgwhCCAEKAIIIRIgCUEBRw0KIApBAXFFDQogBEEwaiADIBIgCCAIIAEgBRD9ByAEKAIwIglBAkcNCSAEKAI0IQULIAUQ4RUaIARBBGogASACIAMQwAUCQAJAIAQoAgQNAEEAIQUMAQsgACAEKQIMQiCJNwIEQQEhBQsgACAFNgIADBELIAQoAgwhCCAEKAIIIRIMCAsgBCAINgIsIARBBzYCPCAEQfgANgI0IAQgBEEsajYCOCAEIARBIGo2AjBB4IeAASAEQTBqQYjkmgEQ1xsAC0Gs85oBQShBsIyFARCkIQALQeyBhQEQsCMAC0GM/YQBQZEBQeT9hAEQ1xsACyAEIAg2AiwgBEEHNgI8IARB+AA2AjQgBCAEQSxqNgI4IAQgBEEgajYCMEHgh4ABIARBMGpBiOSaARDXGwALQbyBhQEQsCMAC0G8gYUBELAjAAsgBCgCOCEIIAQoAjQhEgsgACAINgIIIAAgEjYCBCAAIAk2AgAMBwtBASEFCyAAIAk2AgggACAINgIEIAAgBTYCAAwFCyARIApPDQEgEkF/Rg0CIARBBGogBiAHIAggEkEBaiIRIAogCxETACAFIQ8gBCgCBA0ACwsgAEEANgIADAILQdT9hAEQsCMACwJAAkACQAJAIAEtAKwNQQFGDQACQAJAAkAgASkDAEIChSABKQMIhFANACACKALIBEECRg0EIAJB2AFqIQUCQAJAAkAgASgCgAUiCS0A4gINACAEQQRqIAEgBSADEFAgBCgCBCIFQQJHDQEMCAsgCS0A4wIhCiAEQQRqIAEgBSADEFAgBCgCBCIJQQJGDQcgBCgCDCEIIAQoAgghEiAJQQFHDQQgCkEBcUUNBCAEQTBqIAMgEiAIIAggASAFEP0HIAQoAjAiCUECRw0BIAQoAjQhBQwIC0EBIQkgBUEBRg0CQQAhCQwDCyAEKAI4IQggBCgCNCESDAILIARBBGogASACIAMQwAUCQAJAIAQoAgQNAEEAIQUMAQsgACAEKQIMQiCJNwIEQQEhBQsgACAFNgIADAYLIAQoAgwhCCAEKAIIIRILIAAgCDYCCCAAIBI2AgQgACAJNgIADAQLQazzmgFBKEGAjIUBEKQhAAtBvIGFARCwIwALIAQoAgghBQsgBRDhFRogBEEEaiABIAIgAxDABQJAAkAgBCgCBA0AQQAhBQwBCyAAIAQpAgxCIIk3AgRBASEFCyAAIAU2AgALIARBwABqJAALtA4CB38BfgJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgsAAQIDBAUGBwgJCgALIAEgAEEIahDkCQ8LIAEtACghAiABQQA6ACggAS0AeSEDIAFBADoAeSABQSxqIQQCQCAAKAIoIgUoAgBBGkcNACAFQRhqKAIAIQYCQCAFKQMIIglCA4NCAFINACAJpyIHIAcoAgAiB0EBajYCACAHQX9MDQsLIAQgCSAGELYMCyAFIAEQbSABIAI6ACggASADOgB5IAAoAghBAkcNCCABQQA6AHkgAUEAOgAoAkAgACgCDCIAKAIAQRpHDQAgAEEYaigCACEFAkAgACkDCCIJQgODQgBSDQAgCaciBiAGKAIAIgZBAWo2AgAgBkF/TA0LCyAEIAkgBRC2DAsgACABEG0gASACOgAoIAEgAzoAeQ8LIAAoAghFDQcgAS0AKCEFIAFBADoAKCABLQB5IQIgAUEAOgB5AkAgACgCDCIAKAIAQRpHDQAgAEEYaigCACEDAkAgACkDCCIJQgODQgBSDQAgCaciBCAEKAIAIgRBAWo2AgAgBEF/TA0KCyABQSxqIAkgAxC2DAsgACABEG0gASAFOgAoIAEgAjoAeQ8LIAEtACghBSABQQA6ACggAS0AeSECIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIABBGGooAgAhAwJAIAApAwgiCUIDg0IAUg0AIAmnIgQgBCgCACIEQQFqNgIAIARBf0wNCQsgAUEsaiAJIAMQtgwLIAAgARBtIAEgBToAKCABIAI6AHkPCwJAIAAoAgQiACgCACIFQQNHDQAgAS0AKCEDIAFBADoAKCABLQB5IQQgAUEAOgB5IAFBLGohBwJAIAAoAhAiBSgCAEEaRw0AIAVBGGooAgAhAgJAIAUpAwgiCUIDg0IAUg0AIAmnIgYgBigCACIGQQFqNgIAIAZBf0wNCQsgByAJIAIQtgwLIAUgARBtIAEgAzoAKCABIAQ6AHkgAEEMaigCACIFRQ0GIAVBBHQhAiAAQQhqKAIAQQxqIQADQCABQQA6AHkgAUEAOgAoAkAgACgCACIFKAIAQRpHDQAgBUEYaigCACEGAkAgBSkDCCIJQgODQgBSDQAgCaciCCAIKAIAIghBAWo2AgAgCEF/TA0KCyAHIAkgBhC2DAsgBSABEG0gASADOgAoIAEgBDoAeSAAQRBqIQAgAkFwaiICDQAMBwsLIAEtACghAyABQQA6ACggAS0AeSEEIAFBADoAeQJAIAAoAiAiAigCAEEaRw0AIAJBGGooAgAhBgJAIAIpAwgiCUIDg0IAUg0AIAmnIgcgBygCACIHQQFqNgIAIAdBf0wNCAsgAUEsaiAJIAYQtgwLIAIgARBtIAEgAzoAKCABIAQ6AHkgBUECRw0FIAFBADoAeSABQQA6ACgCQCAAKAIEIgAoAgBBGkcNACAAQRhqKAIAIQUCQCAAKQMIIglCA4NCAFINACAJpyICIAIoAgAiAkEBajYCACACQX9MDQgLIAFBLGogCSAFELYMCyAAIAEQbSABIAM6ACggASAEOgB5DwsgAS0AKCEFIAFBADoAKCABLQB5IQIgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAEEYaigCACEDAkAgACkDCCIJQgODQgBSDQAgCaciBCAEKAIAIgRBAWo2AgAgBEF/TA0HCyABQSxqIAkgAxC2DAsgACABEG0gASAFOgAoIAEgAjoAeQ8LIAEtACghBSABQQA6ACggAS0AeSECIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIABBGGooAgAhAwJAIAApAwgiCUIDg0IAUg0AIAmnIgQgBCgCACIEQQFqNgIAIARBf0wNBgsgAUEsaiAJIAMQtgwLIAAgARBtIAEgBToAKCABIAI6AHkPCyABLQAoIQUgAUEAOgAoIAEtAHkhAiABQQA6AHkCQCAAKAIEIgAoAgBBGkcNACAAQRhqKAIAIQMCQCAAKQMIIglCA4NCAFINACAJpyIEIAQoAgAiBEEBajYCACAEQX9MDQULIAFBLGogCSADELYMCyAAIAEQbSABIAU6ACggASACOgB5DwsgAS0AKCEFIAFBADoAKCABLQB5IQIgAUEAOgB5AkAgACgCBCIAKAIAQRpHDQAgAEEYaigCACEDAkAgACkDCCIJQgODQgBSDQAgCaciBCAEKAIAIgRBAWo2AgAgBEF/TA0ECyABQSxqIAkgAxC2DAsgACABEG0gASAFOgAoIAEgAjoAeQ8LIAEtACghBSABQQA6ACggAS0AeSECIAFBADoAeQJAIAAoAgQiACgCAEEaRw0AIABBGGooAgAhAwJAIAApAwgiCUIDg0IAUg0AIAmnIgQgBCgCACIEQQFqNgIAIARBf0wNAwsgAUEsaiAJIAMQtgwLIAAgARBtIAEgBToAKCABIAI6AHkLDwsAC/IPAgl/BX4jAEGQAWsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiA0F/ag4RCgEBAQEBAQEBAQEBAQEBAQABCwJAAkACQAJAIAEoAggiAw4IAwABBwkJAgUDCyABQSxqIQQMBQsgASgCDEEYaiEEDAQLIAEoAgxBLGohBAwDCyABQSxqIQQMAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDhMAGRgBAgMEBQYHCAkKCwwNDhkPAAsgACABQQRqEM4DDBILIAAgASgCBBCIASAAIAEoAggQkQIMEQsgASgCDCIDRQ0QIAAgAxCIAQwQCyABQQA6ACQgACABKAIoEJECDA8LIAEtACRBAkYNDiABQQA6ACQMDgsgAS0AJEECRg0NIAFBADoAJAwNCyAAIAEoAgQQiAEgACABKAIIEJECIAEoAhQiA0UNDCAAIAMQkQIMDAsgACABKAIQEIgBIAEoAgwiA0UNCyADQRhsIQQgASgCCCEDA0ACQCADQRRqKAIAIgVFDQAgACAFEIgBCyAAIAMQzgMgA0EYaiEDIARBaGoiBA0ADAwLCyAAIAEoAgQQiAEMCgsgACABKAIEIgNByABqEM4DIANB4ABqIQQCQCADKAIAIgVBCEYNACADQShqIQYCQCAFQQdGDQAgAyAAEJkFIAAoAgBFDQAgACADEP4ICyAAIAYQzgMLIAQoAgBBgICAgHhGDQkgACAEEM4DDAkLIAAgASgCBBCIASAAIAEoAggQkQIMCAsgACABKAIEEIgBIAAgASgCCBCRAgwHCwJAIAEoAgQiA0ECRg0AAkAgA0EBRw0AIAAgASgCCBCIAQwBCyABKAIIIgMoAggiBEUNACADKAIEIgcgBEE4bGohCANAIAApAgAhCyAAQQA2AgAgAiAAKQIINwNoIAIgCzcDYCAHIAAQmQUCQCAAKAIARQ0AIAAgBxD+CCAAKAIAIglFDQAgACgCBCIKRQ0AAkAgACgCDCIGRQ0AIAlBCGohBCAJKQMAQn+FQoCBgoSIkKDAgH+DIQsgCSEDA0ACQCALQgBSDQADQCAEIgVBCGohBCADQYB+aiEDIAUpAwBCgIGChIiQoMCAf4MiC0KAgYKEiJCgwIB/UQ0ACyALQoCBgoSIkKDAgH+FIQsLIAMgC3qnQQJ0QeADcWtBYGoQshIgC0J/fCALgyELIAZBf2oiBg0ACwsgCiAKQQV0QSdqQWBxIgNqQQlqIgRFDQAgCSADayAEQQgQzhQLIAAgAikDaDcCCCAAIAIpA2A3AgACQCAHKAIwIgNFDQAgACADEIgBCyAHQThqIgcgCEcNAAsLAkAgASgCGCIDRQ0AIAAgAxCIAQsCQCABKAIcIgNFDQAgACADEIgBCyAAIAEoAgwQkQIMBgsCQAJAAkACQCABKAIEDgMAAQIACyABKAIIIgMoAggiBEUNAiAEQThsIQQgAygCBCEDA0AgAyAAEIQKIANBOGohAyAEQUhqIgQNAAwDCwsgASgCCCIDKAIIIgRFDQEgBEE4bCEEIAMoAgQhAwNAIAMgABCECiADQThqIQMgBEFIaiIEDQAMAgsLIAEoAgggABDSIAsgACABKAIMEIgBIAAgASgCEBCRAgwFCwJAAkACQAJAIAEoAgQOAwABAgALIAEoAggiAygCCCIERQ0CIARBOGwhBCADKAIEIQMDQCADIAAQhAogA0E4aiEDIARBSGoiBA0ADAMLCyABKAIIIgMoAggiBEUNASAEQThsIQQgAygCBCEDA0AgAyAAEIQKIANBOGohAyAEQUhqIgQNAAwCCwsgASgCCCAAENIgCyAAIAEoAgwQiAEgACABKAIQEJECDAQLIAAgASgCBBCIAQwDCyABKAIMIgQtAFANAyAEQdEAaiEECyAELQAADQICQAJAIAMOCAIBAgIEBAIAAgsgASgCDCIDLQBFQQNGDQMgA0EgahDDDQ0BDAMLIAEoAigoAhhBgICAgHhGDQILIAFBCGogABDCBQsgASgCAEERRw0EIAJB4ABqEOkbIAEpAwghCyABIAIpA2A3AwggASkDECEMIAEgAikDaDcDECABKQMYIQ0gASACKQNwNwMYIAEpAyAhDiABIAIpA3g3AyAgASkDKCEPIAEgAikDgAE3AyggAiAPNwNYIAIgDjcDUCACIA03A0ggAiAMNwNAIAIgCzcDOCACQQhqIAAgAkE4akEAEF4gAigCCCIDQW1qQQIgA0ESSxsOAwECAwELIAEpAwghCyABQQA2AgggASkDACEMIAFCATcDACACIAEpAyg3A4gBIAIgASkDIDcDgAEgAiABKQMYNwN4IAIgASkDEDcDcCACIAs3A2ggAiAMNwNgIAJB4ABqEK8EDAMLIAEpAwghCyABQQA2AgggASkDACEMIAFCATcDACACIAEpAyg3A4gBIAIgASkDIDcDgAEgAiABKQMYNwN4IAIgASkDEDcDcCACIAs3A2ggAiAMNwNgIAJB4ABqEK8EDAILIAFBCGoiARDRBSABIAIpAzA3AyAgASACKQMoNwMYIAEgAikDIDcDECABIAIpAxg3AwggASACKQMQNwMADAELIAEQrwQgASACKQMwNwMoIAEgAikDKDcDICABIAIpAyA3AxggASACKQMYNwMQIAEgAikDEDcDCCABIAIpAwg3AwALIAJBkAFqJAAPCwAL9g8CCX8BfiMAQdACayICJABBAiEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAMgBIgRB+wBqIgVBBnQgBUH8AXFBAnZyQf8BcQ4HBAEBAgEDAAELIAEoAsABIQYCQCAEQf8BcUGdAUYNACABKALEASEFIAJBnAFqIAQQwyUgAkGP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AkAgAygCACIIQRNHDQAgBiEBDAILIAMpAgQhDSADKQIMIQ4gAykCFCEPIAMpAhwhECADKQIkIREgAygCLCEJIAQoAgQgB2oiAyAINgIAIANBLGogCTYCACADQSRqIBE3AgAgA0EcaiAQNwIAIANBFGogDzcCACADQQxqIA43AgAgA0EEaiANNwIAIAQgBCgCCEEBajYCCCACIAk2AmggAiARNwNgIAIgEDcDWCACIA83A1AgAiAONwNIIAIgDTcDQCAHQTBqIQcgAEFQaiEAIAFBMGohCSAGIQMgBUF/aiIFDQALCyALIAFrQTBuIQMCQCALIAFGDQADQCABEIECIAFBMGohASADQX9qIgMNAAsLIAwgChDhIwsgAigCICEEIAIoAhwhASACQoiAgICAATcCHCAEIAFrQTBuIQMgAigCJCEAAkACQAJAIAQgAUcNACACKAIsIgFFDQIgAigCKCIEIAAoAggiA0YNASABQTBsIgdFDQEgACgCBCIJIANBMGxqIAkgBEEwbGogB/wKAAAMAQsDQCABEIECIAFBMGohASADQX9qIgMNAAsgAigCLCIBRQ0BAkAgAigCKCIEIAAoAggiA0YNACABQTBsIgdFDQAgACgCBCIJIANBMGxqIAkgBEEwbGogB/wKAAALIAAgAyABajYCCAwBCyAAIAMgAWo2AggLAkAgAigCPCIDIAIoAjQiAUYNACADIAFrQQJ2IQMDQCABKAIAIgQQ2QEgBEHAAEEIEM4UIAFBBGohASADQX9qIgMNAAsLIAIoAjggAigCMBDeIwsgAigCDCACKAIQENgdIAIoAgggAigCDBDeIwsgAkGAAWokAAvQDQIKfwd+IwBB8ABrIgIkAAJAAkAgAEQAAAAAAAAAAGINACABQTA6AAAgAUEBaiEDDAELAkAgAL0iDEIAWQ0AIAFBLToAACABQQFqIQELIAxCAYZC/v///////w+DIQ0CQAJAAkAgDEI0iKdB/w9xIgQNAEHOdyEDDAELIARBzXdqIQMCQCANUA0AIA1CgICAgICAgBCEIQ0MAQsgAkHAAGpB2LODASADQYnEJmxB4YNwakEVdSIFQQR0aykDACINQjWIIA18QQsgBUGx2ZV/bEETdSADaiIDa60iDohCAEKas+bMmbPmzBlCABDoEQJAIAIpA0giDEIKfiANIA1CNoh9IA6I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AQsgACABEJgGCyAAQShqIQAgA0FYaiIDDQALCyAHLQA8IgBBBkYNAQJAIABBAksNACAHQShqIQMCQCAAQQJHDQAgAyABEM8eCyABIAMQpQkgBy0APCEACyAAQf8BcUEDRw0BIAIgASAHQRBqIgAQnQ0gAi0ALEEGRg0BIAAQkxMgACACKQMoNwMoIAAgAikDIDcDICAAIAIpAxg3AxggACACKQMQNwMQIAAgAikDCDcDCCAAIAIpAwA3AwAMAQsgBUEMaigCACIARQ0AIAVBCGooAgAiCCAAQShsaiEJA0ACQAJAAkACQAJAIAgoAgAOBQQAAQIDBAsgCCgCBEEBRw0DIAgoAggiACABEFwgACgCAEEaRw0DIAEgAEEIahCLCyIDRQ0DIAAQhAIgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACADQcAAQQgQzhQMAwsgCCgCBCIAIAEQXCAAKAIAQRpHDQIgASAAQQhqEIsLIgNFDQIgABCEAiAAIAMpAzg3AzggACADKQMwNwMwIAAgAykDKDcDKCAAIAMpAyA3AyAgACADKQMYNwMYIAAgAykDEDcDECAAIAMpAwg3AwggACADKQMANwMAIANBwABBCBDOFAwCCyABIAgoAgQQjQwMAQsgCEEMaigCACIARQ0AIABBKGwhAyAIQQhqKAIAIQADQCAAIAEQoAIgAEEoaiEAIANBWGoiAw0ACwsgCEEoaiIIIAlHDQALCyAFQShqIgUgBkcNAAsLIAQtADwiAEEGRg0BAkAgAEECSw0AIARBKGohAwJAIABBAkcNACADIAEQzx4LIAEgAxClCSAELQA8IQALIABB/wFxQQNHDQEgAiABIARBEGoiABCdDSACLQAsQQZGDQEgABCTEyAAIAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDAAwBCyAAKAIMIgNFDQAgA0EobCEDIAAoAgghAANAIAAgARCgAiAAQShqIQAgA0FYaiIDDQALCyACQTBqJAALygwCGH8CfiMAQdACayIGJABCgICAgICAgIDAACABrSIegCIfIB5+QoCAgICAgICAwABSrSEe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EQwADQgMAgsgASALQZyWhQEQ7hYACyABIBhBjJaFARDuFgALIBVBAWohFSAeQiCIpyEaAkAgHqciG0H/AXEgHkIIiKciGEH/AXFGDQAgAiAbOgACIAIgGDoAAyACIBo2AhwgAkE9NgIYIAJBzgA2AhAgAkHOADYCCCACIAJBHGo2AhQgAiACQQNqNgIMIAIgAkECajYCBCADIARByYyAASACQQRqEMYGDQYMAQsgAiAbOgADIAIgGjYCHCACQT02AhAgAkHOADYCCCACIAJBHGo2AgwgAiACQQNqNgIEIAMgBEHMjIABIAJBBGoQxgYNBQwACwsgESAGSQ0ACwsgAkHLADYCCCACIABB2AJqNgIEIAMgBEHetYEBIAJBBGoQxgYNACACIAAoAigiAUEARzoAHCACQcwANgIIIAIgAkEcajYCBCADIARBtbSBASACQQRqEMYGDQAgAkE9NgIIIAIgAEE0ajYCBCADIARBq7WBASACQQRqEMYGDQAgAiAAKAIgIho2AhwgAkE9NgIIIAIgAkEcajYCBCADIARBlrWBASACQQRqEMYGDQAgAkE9NgIIIAIgAEHAAmo2AgQgAyAEQdu0gQEgAkEEahDGBg0AIAJBPTYCCCACIABBxAJqNgIEIAMgBEH5tIEBIAJBBGoQxgYNACACQT02AgggAiAAQThqNgIEQQEhEyADIARBxbSBASACQQRqEMYGDQFBASETIAJBASAAKAI8dDYCHCACQdIANgIIIAIgAkEcajYCBCADIARB0bWBASACQQRqEMYGDQEgAkHNADYCCCACIABBwABqNgIEIAMgBEH9s4EBIAJBBGoQxgYNASACIAAoAhRBDGwgACgCCCAaakECdGogACgCJGogACgCMEEAIAEbajYCHCACQT02AgggAiACQRxqNgIEIAMgBEG+tYEBIAJBBGoQxgYNASADQfKbhQFBAiAFEQwAIRMMAQtBASETCyACQSBqJAAgEwvcDgIRfwR+IwBB0AZrIgMkACADQgA3A8AEIANCADcDsAQgA0IANwPIBCADQgA3A7gEIAMgAUEQaiIEIANBsARqIAEoAgBBAXEbIgUpAwA3A5AEIAMgBSkDCDcDmAQgAyAFKQMQNwOgBCADIAUpAxg3A6gEAkACQAJAAkAgAi8AuQJBswZxRQ0AAkAgAS0AW0EBcUUNAEGAASEF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IAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDACACQcAAQQgQzhQLIANBDGohAyAEQXRqIgQNAAsLAkAgBSgCGEGAgICAeEYNACAFQSBqKAIAIgBFDQAgAEEwbCECIAVBHGooAgAhAANAIAAgARDLASAAQTBqIQAgAkFQaiICDQALCwJAIAUoAjwiAEUNACAAQQhqKAIAIgJFDQAgAkEwbCECIABBBGooAgBBJGohAANAAkAgAEF8aigCACIDRQ0AIAMgARC2AQsCQCAAKAIAIgNFDQAgAyABELYBCyAAQTBqIQAgAkFQaiICDQALCyAFKAJAIgBFDQAgACgCACABELYBCwu5DQEHfyMAQTBrIgMkACAALAAJIQQgAC0AACEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQABQQRHDQACQCAALQAFIgZBBEcNACAFQQFxDQAgBA0CQQAhBgwmCyABQejhgwFBAiACKAIMIgcRDABFDQdBASEGDCULQQEhBiABQejhgwFBAiACKAIMIgcRDAANJCAAKAABIghBCHYhCSAIQf8BcQ4EAQIDBAELIAFB6OGDAUECIAIoAgwRDAAiBg0jIARFDSMgBEEBcUUNBwwLCyABIAlB/wFxQQJ0KALYqJwBQQIgBxEMAEUNAwwiCyABIAlB/wFxQYABc0ECdCgCnKmcAUEQIAcRDABFDQIMIQsgASAJQYABc0H/AXFBAnQiBygCnLmcASAHKAKcsZwBIAIoAgwiBxEMAEUNAQwgCyADIAk6AAkgAyAIQRh2OgALIAMgCEEQdjoACiADIANBCWo2AgxBASEGIAMgA0EJakEBajYCECADIANBC2o2AhQgA0HsADYCLCADQewANgIkIANB7AA2AhwgAyADQRRqNgIoIAMgA0EQajYCICADIANBDGo2AhggASACQcuAgAEgA0EYahDGBg0fCyAALQAFQQRHDQFBASEGDAULIAZBBEcNAkEAIQYMBAsgACgABSEAQQEhBiABQZDwmgFBASAHEQwADRwMAgsCQCAEQQJxRQ0AIAIoAgwhAAwHCyAEQQRxDQgCQCAEQQhxRQ0A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AyADKQOYATcCnAIgAyADKQOgATcCpAIgByADQewBahDaHzYCBCAHQQg2AgAgAiAGNgIIIABBBGogAkEk/AoAACAAQSI2AgAMBAsgEEUNASAKQSJGDQELIAMoAjQgAygCOEEBQQEQ1RMLIANBEGoQiwQLIAIQhxsLIANBsAJqJAAL6AwCC38BfiMAQcABayIDJAAgA0IENwIkIANCADcCHCADQoCAgIDAADcCFCADQQA2AjAgAyABNgIsIANBIGohBAJAA0AgAkEEaiIBKAIAIQVB2AAhBgJAAkACQAJAAkAgAigCAA4MBAQEBAQEBAMAAQICBAtBKCEGDAILQTAhBgwBC0EMIQYLIANBgAFqIANBLGogBSAGahDKDCADKAKAASIGQSJGDQAgAEEEaiADQYABakEEakE8/AoAACAAIAY2AgAMAgsgASgCACEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAgBBeWoOBQANAgEEBwsgAUEEQQAgASgCAEGIgMQARiIGG2ohAQNAAkACQCAGQQFHDQAgA0GAAWogA0EsaiABQQhqEMoMIAMoAoABIgdBIkYNASADKQKMASEOIAMoAogBIQEgAygChAEhBiADQTRqIANBlAFqQSz8CgAADBMLIAEoAgAiBUGAgLx/akECIAVB///DAEsbIgVBBkkNAAJAAkACQCAFQXpqDgIAAQALIAEoAgRB2ABqIQUMAQsgAUEQaiEFCyADQYABaiADQSxqIAUQygwgAygCgAEiB0EiRg0AIAMpAowBIQ4gAygCiAEhASADKAKEASEGIANBNGogA0GUAWpBLPwKAAAMEgsgA0HgAGogBiABEPoNAkAgAygCYEEERg0AIANBCGogA0HgAGoQzxIgAygCDCEIIAMoAgghCQJAIAMoAigiByADKAIgRw0AIAQQjhoLIAMoAiQgB0EYbGoiBSABNgIEIAUgBjYCACAFIAMpAmA3AgggBSADKQJoNwIQIAMgB0EBajYCKCAIIQEgCSEGDAELIANBgAFqIAYgASADQSxqEK4VAkAgAygCgAEiB0EiRg0AIAMpAowBIQ4gAygCiAEhASADKAKEASEGIANBNGogA0GUAWpBLPwKAAAMEgsgAygCKCIIRQ0GIAMoAiQgCEEYbGpBaGohBQJAAkACQANAIAUoAgAi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gICAgHhqDgIAAgELIAEgA0EoahCyFAwCCyABIAEoAnhBfnEgBEEBcXI2AnggAykCnAEhDSADQShqEJ8iIAEgASgCeCIHQf98cUGAAXI2AnggAyANNwK0AiADIAY2ArACIAMgAjYCxAIgAyAFNgLAAiADIANBJGo2ArwCIANBCGogAUEBIA2nIA1CIIinEJAcEMoKIAMoAgwhBgJAAkAgAygCCEEBRw0AIABBgYCAgHg2AgAgACAGNgIEIANBsAJqEJAhIAUQkSMgA0HEAmoQzCIMAQsgACADKQKwAjcCACAAIAMoArgCNgIIIAEoArwBIQwgAygCJCEJQQRBGBDVICILQgA3AgggC0KAgICAgAE3AgAgC0IANwIQIABBATsBJCAAIAI2AiAgACAFNgIcIABBADYCGCAAIAw2AhQgACAJNgIQIAAgBjYCDCADQQA2AkAgA0IANwI4IANCADcCRCADIAs2AjQgA0EANgIwIANCgICAgIABNwIoIANBADsBTCADQShqEJMgCyABIAc2AngMAgsgASADQShqELIUIANBmAFqQQRyEIghCyAAQYCAgIB4NgIACyADQfACaiQAC8kMAQx/IwBBEGsiAiQAAkAgAC0AAEEBRg0AIAAoAgQhAwJAIAAtAAFBAUYNACADKAIAKAIAIgRBARCMHyAEKAIEIAQoAggiBWpBLDoAACAEIAVBAWo2AggLIABBAjoAASACQQhqIAMoAgBB+NuaAUESELcFAkACQCACLQAIQQRGDQAgAikDCBDGICEADAELIAMoAgAoAgAiAEEBEIwfIAAoAgQgACgCCCIEakE6OgAAIAAgBEEBajYCCAJAAkAgASgCAEGAgICAeEcNACADKAIAKAIAIgBBBBCMHyAAKAIEIAAoAggiAWpB7uqx4wY2AAAgACABQQRqNgIIDAELIAEoAgQhBiABKAIIIQEgAygCACIFKAIAIgBBARCMHyAAKAIEIAAoAggiBGpB2wA6AAAgACAEQQFqNgIIAkAgAUUNACAGIAFBDGxqIQdBASEAA0ACQCAAQQFxDQAgAygCACgCACIAQQEQjB8gACgCBCAAKAIIIgFqQSw6AAAgACABQQFqNgIICwJAAkAgBigCAEGAgICAeEcNACADKAIAKAIAIgBBBBCMHyAAKAIEIAAoAggiAWpB7uqx4wY2AAAgACABQQRq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QVhqIQUgBkEoaiEGDAALCyAAIAQoAjg2AgggACAEKQIwNwIADAYLQYyNmwEQsCMACyAEQZgBahC7FQsgCEFYaiEIDAALCyAGIAQoAvABEOkgAAsgBEEwahCQIQsgAhCWFCAEQbACaiQAC5INAhF/AX4jAEGwAWsiASQAIABBCGohAkEKIQMgACgCGCEEIAAoAgQhBSAAKAIAIQYgAC0AHCEHAkAgACgCCEEKRg0AIAFB8ABqIAIQjwYgASABKQJ0NwOgASABIAEoAnw2AqgBIAEoAnAhAwtBACEIQQAhCQJAIAAoAiBBgICAgHhGDQAgACgCNCEJIAAoAighCAsgACgCaCEKIAAoAnghCyAALQAdIQwgAEGIAWohDUELIQ5BCyEPAkAgACgCiAEiEEELRg0AIABBmAFqIRFBCiEOQQohDwJAIBBBCkYNACABQfAAaiANEI8GIAEgASkCdDcDkAEgASABKAJ8NgKYASABKAJwIQ8gDSgCACEOCyABIAEpA5ABNwNwIAEgASgCmAE2AnggASARKAIINgKEASABIBEpAgA3AnwLIAEgAzYCECABIAU2AgwgASAGNgIIIAEgASkDoAE3AhQgASABKAKoATYCHCABIAo2AjQgASAJNgIsIAEgCDYCKCABIAw6ACUgASAHOgAkIAEgBDYCICABIAAoAqwBIgk2AlwgASAAKAKoASIENgJYIAEgCzYCMCABIA82AjggASAAKAK4ATYCaCABIAApA7ABNwNgIAEgASkDcDcCPCABIAEpA3g3AkQgASABKQOAATcCTCABIAEoAogBNgJUIAAgC0EBcjYCeCAAQQs2AogBIABBjAFqIQ8gAEGwAWohCwJAAkAgDkELRg0AIAEgACgCoAE2AnggASAAKQKYATcDcAJAIAAoAghBCkYNACACELULCyAAIA42AgggACAPKQIANwIMIAAgDygCCDYCFAwBCyABQfAAaiAAEM4BCyABQeAAaiEDIAApA7ABIRIgCyABKQNwNwIAIAsgASgCeDYCCCAAIBI3A6gBAkACQAJAAkACQCAALQC4ASIOQXNqDgIAAQILIA0oAgAhDiANQQs2AgACQAJAIA5BC0YNACABIAAoAqABNgJ4IAEgACkCmAE3A3ACQCAAKAIIQQpGDQAgAhC1CwsgACAONgIIIAAgDykCADcCDCAAIA8oAgg2AhQMAQsgAUHwAGogABDOAQsgACkDsAEhEiALIAEpA3A3AgAgCyABKAJ4NgIIIAAgEjcDqAEMAgsgDSgCACEOIA1BCzYCAAJAAkAgDkELRg0AIAEgACgCoAE2AnggASAAKQKYATcDcAJAIAAoAghBCkYNACACELULCyAAIA42AgggACAPKQIANwIMIAAgDygCCDYCFAwBCyABQfAAaiAAEM4BCyAAKQOwASESIAsgASkDcDcCACALIAEoAng2AgggACASNwOoAQwBCwJAIA5BkQFHDQAgDSgCACEOIA1BCzYCAAJAAkAgDkELRg0AIAEgACgCoAE2AnggASAAKQKYATcDcAJAIAAoAghBCkYNACACELULCyAAIA42AgggACAPKQIANwIMIAAgDygCCDYCFAwBCyABQfAAaiAAEM4BCyAAKQOwASESIAsgASkDcDcCACALIAEoAng2AgggACASNwOoASAALQC4ASEOC0EAIQggDkH/AXFBBEcNASANKAIAIQ4gDUELNgIAAkACQCAOQQtGDQAgASAAKAKgATYCeCABIAApApgBNwNwAkAgACgCCEEKRg0AIAIQtQsLIAAgDjYCCCAAIA8pAgA3AgwgACAPKAIINgIUDAELIAFB8ABqIAAQzgELIAApA7ABIRIgCyABKQNwNwIAIAsgASgCeDYCCCAAIBI3A6gBIAAoAnghBQJAAkAgAC0AuAEiDkG1f2oiBkEfSw0AQQEgBnRBgYCCkHhxDQELIA5BtH9qQf8BcUHUAEsNAgsgDiAFEOENDQEgDSgCACEOIA1BCzYCAAJAAkAgDkELRg0AIAEgACgCoAE2AnggASAAKQKYATcDcAJAIAAoAghBCkYNACACELULCyAAIA42AgggACAPKQIANwIMIAAgDygCCDYCFAwBCyABQfAAaiAAEM4BCyAAKQOwASESIAsgASkDcDcCACALIAEoAng2AgggACASNwOoASAALQC4AUHgAEYhCAwBCyAALQC4AUGRAUYhCAsgAUE4aiEOIAAgAUEIahDGCCALIAMoAgg2AgggCyADKQMANwMAAkAgACgCiAFBDnFBCkYNACANELULCyAAIAk2AqwBIAAgBDYCqAEgDSAOKQMYNwMYIA0gDikDEDcDECANIA4pAwg3AwggDSAOKQMANwMAIAFBsAFqJAAgCAvHDQIFfwJ+IwBB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IARB3n5qDgIFBgcLIAEoAogBIQQgAUELNgKIAQJAAkAgBEELRg0AIAFBjAFqIQYgAiABKAKgATYCECACIAEpApgBNwMIAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBDYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIAJBCGogARDOAQsgASABKAK0ASIGNgKsASABIAEoArABNgKoASAFIAIpAwg3AgAgBSACKAIQNgIIQQIhBUIAIQgMCwsgASgCiAEhBiABQQs2AogBAkACQCAGQQtGDQAgAUGMAWohByACIAEoAqABNgIQIAIgASkCmAE3AwgCQCABKAIIQQpGDQAgAUEIahC1CwsgASAGNgIIIAEgBykCADcCDCABIAcoAgg2AhQMAQsgAkEIaiABEM4BCyABIAEoArQBIgY2AqwBIAEgASgCsAE2AqgBIAUgAikDCDcCACAFIAIoAhA2AgggBEHqAEYhBEEBIQVCACEIDAoLIAJBCGogARCHCiACKQMYIglCgICAgHCDIQggAi8ADSACLQAPQRB0ciEBIAIpAxAhCiACLQAMIQQgAigCCCEGIAmnIQdBACEFDAoLIAMgASgCbCIESQ0EIAEoArQBIgYgASgCcEsNBCABKAJgIAMgBGtqIAYgA2sQ+xghCSABKQMIIQogAUEKNgIIIAIgASkDEDcDECACIAo3AwggCqciBEEKRg0FIARBB0cNBSACKQMQIQogAkEIahC1CyABKAKIASEEIAFBCzYCiAECQAJAIARBC0YNACABQYwBaiEGIAIgASgCoAE2AhAgAiABKQKYATcDCAJAIAEoAghBCkYNACABQQhqELULCyABIAQ2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyACQQhqIAEQzgELIAEgASgCtAEiBDYCrAEgASABKAKwATYCqAEgBSACKQMINwIAIAUgAigCEDYCCCAJQoCAgIBwgyEIIARBCHYhASAJpyEHQQMhBSADIQYMCQsgAyABKAJsIgRJDQUgASgCtAEiBiABKAJwSw0FIAEoAmAgAyAEa2ogBiADaxD7GCEKIAEpAwghCCABQQo2AgggAiABKQMQNwMQIAIgCDcDCAJAAkAgCKciBEEKRg0AIARBCEYNASACQQhqELULC0Gs85oBQShB3IebARCkIQALIAIoAgwhByABKAKIASEE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NgIUAkACQAJAIAEtALgBQc8ARg0AQQghBAwBCyABQbABaiEFIAEoAogBIQQgAUELNgKIASABQYwBaiEGAkACQCAEQQtGDQAgAiABKAKgATYCQCACIAEpApgBNwM4AkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBDYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIAJBOGogARDOAQsgASkDsAEhDSAFIAIpAzg3AgAgBSACKAJANgIIIAEgDTcDqAECQAJAAkACQAJAAkACQAJAAkAgAS0AuAENACABKAKIASEEIAFBCzYCiAECQAJAIARBC0YNACACIAEoAqABNgJAIAIgASkCmAE3AzgCQCABKAIIQQpGDQAgAUEIahC1CwsgASAENgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkE4aiABEM4BCyABKQOwASENIAUgAikDODcCACAFIAIoAkA2AgggASANNwOoASACQThqIAFBABByIAIoAjwhByACKAI4IgRBB0YNBSACIAIpA1g3A8ABIAIgAikDUDcDuAEgAiACKQNINwOwASACIAIpA0A3A6gBIAIgBzYCpAEgAiAENgKgASABLQCBAUEgcUUNAiABLQC4ASIIQQlHDQMgASgCsAEhCSABKAKIASEIIAFBCzYCiAECQAJAIAhBC0YNACACIAEoAqABNgJAIAIgASkCmAE3AzgCQCABKAIIQQpGDQAgAUEIahC1CwsgASAINgIIIAEgBikCADcCDCABIAYoAgg2AhQMAQsgAkE4aiABEM4BCyABKQOwASENIAUgAikDODcCACAFIAIoAkA2AgggASANNwOoASABIAEoAngiCEH/3/+/f3FBgCByNgJ4IAJBCGogASgCsAEgARDuAyACKAIIIQogASAINgJ4IAIoAgwhCAJAIApBAXFFDQAgCCEHDAULIAJBwAFqIQoCQAJAIAQOBwEAAAADAwMBCyACQbgBaiEKCyABKAKsASELQQRBDBDPICIMIAs2AgggDCAJNgIEIAwgCDYCACAKEM0eIAogDDYCAAwCC0EHIQQMBwsgCBCEIwsgAS0AuAEhCAsCQCAIQf8BcUEBRw0AIAJBqAFqIQggASgCiAEhCiABQQs2AogBIApBC0YNAyACIAEoAqABNgJAIAIgASkCmAE3AzgCQCABKAIIQQpGDQAgAUEI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IAE2AhQgAkGABDYCECAAKAIAIRMgACgCBCEUIAJBGGogEUH22poBQQcQtwUCQAJAAkACQCACLQAYQQRHDQAgASgCACgCACISQQEQjB8gEigCBCASKAIIIhFqQTo6AAAgEiARQQFqNgIIIBNBAUcNASACQQhqIAJBGGogFBDGCyACKAIIIRQgASgCACgCACIRIAIoAgwiEhCMHyARKAIIIRMCQCASRQ0AIBJFDQAgESgCBCATaiAUIBL8CgAACyARIBMgEmo2AggMAgsgAikDGBDGICEBDAILIAEoAgAoAgAiEkEEEIwfIBIoAgQgEigCCCIRakHu6rHjBjYAACASIBFBBGo2AggLAkAgEEH/AXFBBkYNACABKAIAKAIAIhJBARCMHyASKAIEIBIoAggiEWpBLDoAACASIBFBAWo2AgggAkECOgARIAJBGGogASgCAEH92poBQQQQtwUCQCACLQAYQQRGDQAgAikDGBDGICEBDAILIAEoAgAoAgAiEkEBEIwfIBIoAgQgEigCCCIRakE6OgAAIBIgEUEBajYCCCAAQQhqIAEQmAEiAQ0BCyACQRBqQYHbmgFBByAAQSBqEL8GIgENAAJAAkAgD0GAgICAeEYNACACLQAQDQEgAkEQakGI25oBQQogAEEsahDJCiIBDQILAkAgDkGAgICAeEYNACACLQAQDQEgAkEQakGS25oBQQ4gAEE4ahC/BiIBDQILAkAgDUGAgICAeEYNACACLQAQDQEgAigCFCEBAkAgAi0AEUEBRg0AIAEoAgAoAgAiEkEBEIwfIBIoAgQgEigCCCIRakEsOgAAIBIgEUEBajYCCAsgAkECOgARIAJBGGogASgCAEGg25oBQQgQtwUCQCACLQAYQQRGDQAgAikDGBDGICEBDAMLIAEoAgAoAgAiEkEBEIwfIBIoAgQgEigCCCIRakE6OgAAIBIgEUEBajYCCCABIABBxABqEMwEIgENAgsCQCAMQYCAgIB4Rg0AIAItABANASACQRBqIABB0ABqEKQLIgENAgsCQCALQYCAgIB4Rg0AIAItABANASACQRBqQa3bmgFBBiAAQdwAahDJCiIBDQILAkAgCkGAgICAeEYNACACLQAQDQEgAkEQakGz25oBQQ0gAEHoAGoQyQoiAQ0CCwJAIAlBgICAgHhGDQAgAi0AEA0BIAJBEGpBwNuaAUEIIABB9ABqEMkKIgENAgsCQCAIQYCAgIB4Rg0AIAItABANASACQRBqIABBgAFqENsGIgENAgsCQCAHQYCAgIB4Rg0AIAItABANASACQRBqIABBjAFqEJUGIgENAgsCQCAGQYCAgIB4Rg0AIAItABANASACQRBqIABBmAFqEPgGIgENAgsCQCAFQYCAgIB4Rg0AIAItABANASACQRBqIABBpAFqEN0CIgENAgsCQCAEQQFxRQ0AIAItABANASACQRBqQYrcmgFBCCAAQbABahDNBCIBDQILAkAgA0EBcUUNACACLQAQDQEgAkEQakGS3JoBQQcgAEHRAWoQzQQiAQ0CC0EAIQEgAigCECIAQYD+A3FFDQEgAEEBcQ0BIAIoAhQoAgAoAgAiAEEBEIwfIAAoAgQgACgCCCISakH9ADoAACAAIBJBAWo2AggMAQsQxyAhAQsgAkHAAGokACABC88KAgx/AX4jAEHgAGsiAyQAIAEgASgCeCIEQf////9+cTYCeCACKAIIIQVBACEGIANBADYCCCADQoCAgIDAADcCACABKALMASEHAkACQAJAAkACQAJAAkACQCABKALQASIIRQ0AIAhBA3QhCUEAIQZBBCEKIAchCwNAAkAgAiALENEMRQ0AIAIoAgwhDCACKAIIIQ0CQCACKQMAIg9CA4NCAFINACAPpyIOIA4oAgAiDkEBajYCACAOQX9MDQQLIANBxICAgHg2AjAgAyAPNwM4IA0gDCADQTBqELMbIQwCQCAGIAMoAgBHDQAgAxCpGiADKAIEIQoLIAogBkECdGogDDYCACADIAZBAWoiBjYCCAsgC0EIaiELIAlBeGoiCQ0ACwsCQCACKQMAIg9CA4NCAFINACAPpyILIAsoAgAiC0EBajYCACALQX9MDQELAkAgCCABKALIAUcNACABQcgBahC0GiABKALMASEHCyAHIAhBA3RqIA83AwAgASAIQQFqNgLQAQJAIAEtALgBQd0ARg0AIAEgASgCeCILQf////99cTYCeCADQTBqIAEQiQogASALNgJ4IAMoAjQhCyADKAIwIgxBE0YNAyADIAMpA0A3AxggAyADKQNINwMgIAMgAykDUDcDKCADKAI8IQcgAygCOCEJIAMoAlghCiADKAJcIQ0MBAsgA0EANgIUIANCgICAgMAANwIMIANBMGogAUEA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IAQ2AnhBASEHCyAAIAg2AgQgACAHNgIAIAJB0ABqJAALkAoBA38CQAJAAkADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOEwAQEAECAxAQBAUPDgwLCgkIBwYACyAAKAIMIgJFDQ8gAS0AAEEBcQ0PIAJBMGwhAiAAKAIIIQADQAJAIAEtAAANACAAIAEQqQMLIABBMGohACACQVBqIgINAAwQCwsCQCABLQABDQAgAS0AAA0PIAAoAgQgARCZASABLQAADQ8gACgCCCEADAwLIAFBAToAAA8LIAAoAgwiAEUNDSABLQAAQQFxDQ0gACABEJkBDwsgAS0AAA0MIAAoAighAAwJCyABLQAADQsgACgCBCABEJkBIAEtAAANCyAAKAIIIAEQqQMgACgCFCIARQ0LIAEtAABBAXFFDQgMCwsCQCABLQAADQAgACgCECABEJkBCyAAKAIMIgJFDQogACgCCCIDIAJBGGxqIQQDQCABLQAAIQACQCADKAIUIgJFDQAgAEEBcQ0AIAIgARCZASABLQAAIQALAkAgA0EIaigCACICRQ0AIABBAXENACACQTBsIQIgA0EEaigCACEAA0ACQCABLQAADQAgACABEKkDCyAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCwwACwsgAS0AAA0JIAAoAgQgARCZAQwJCyAAQQhqIAEQ7wMPCwJAAkACQAJAIAAoAgQOAwABAgALIAAoAgggARDDCAwCCyAAKAIIIAEQxAgMAQsgACgCCCABEKoKCyABLQAADQcgACgCDCABEJkBIAEtAAANByAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIAEQwwgMAgsgACgCCCABEMQIDAELIAAoAgggARCqCgsgAS0AAA0GIAAoAgwgARCZASABLQAADQYgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFHDQAgAS0AAA0BIAAoAgggARCZAQwBCyAAKAIIIgJBCGooAgAiA0UNACACQQRqKAIAIgIgA0E4bGohBANAIAIgARDjCQJAIAJBMGooAgAiA0UNACABLQAAQQFxDQAgAyABEJkBCyACQThqIgIgBEcNAAsLIAEtAAAhAgJAIAAoAhgiA0UNACACQQFxDQAgAyABEJkBIAEtAAAhAgsCQAJAIAAoAhwiA0UNACACQQFxDQAgAyABEJkBIAEtAABFDQEMBwsgAkEBcQ0GCyAAKAIMIQAMAgsgAS0AAA0EIAAoAgQgARCZASABLQAADQQgACgCCCEADAELIAEtAAANAyAAKAIEIAEQmQEgAS0AAA0DIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgBFDQAgAS0AAEEBcQ0AIABBMGwhAiADQcwAaigCACEAA0ACQCABLQAADQAgACABEKkDCyAAQTBqIQAgAkFQaiICDQALCwJAAkACQCADKAIAQXlqDgIBAgALIAMgARDjCQsgA0EwaigCACIARQ0AIAEtAABBAXENACAAQTBsIQIgA0EsaigCACEAA0ACQCABLQAADQAgACABEKkDCyAAQTBqIQAgAkFQaiICDQALCyADKAJgQYCAgIB4Rg0BIANB6ABqKAIAIgBFDQEgAS0AAEEBcQ0BIABBMGwhAiADQeQAaigCACEAA0ACQCABLQAADQAgACABEKkDCyAAQTBqIQAgAkFQaiICDQAMAgsLIAEtAAANACAAKAIEIAEQmQEPCwu3CgEMfyMAQYACayIDJAAgASgCwAEhBEEAIQUCQAJAIAEtAMgBIgZB0QBHDQBBAiEHDAELAkACQCAGQeIARg0AIAZB7QBGDQFBrPOaAUEoQbSGmwEQpCEAC0EBIQcMAQtBACEHIAIhBQsgARDeESABKAK8ASEIAkACQCACRQ0AIAEoAoABQYDAAHFFDQACQAJAIAEtAMgBIgZB4ABGDQAgBkGKAUYNACADQQA7ARwMAQsgA0HgAGogARDEBSABIAEoAnhBAXI2AngCQAJAAkAgAS0AyAEiBkGKAUYNACAGQeAARw0BCyABEN4RIANBEGogARCqDCADKAIUIQYCQCADKAIQQQFxRQ0AIANBAToAHCADIAY2AiAMAgsgAyAGNgLgASADQeABahClIgJAIAEtAMgBIgZBAUYNACABKALEASEJIAEoAsABIQogA0HUAWogBhDDJSADQY8CrUIghkGy8JoBrYQ3A/gBIANB4AFqQc2VgAEgA0H4AWoQ9x4gAyADKQLUATcC7AEgAyADKALcATYC9AEgCiAJIANB4AFqELMbIQYCQCABLQDIAUGiAUcNACABIAEQjCMQgxQLIANBAToAHCADIAY2AiAMAgsgARDeESADQYACOwEcIAEgA0HgAGoQshQgA0GRgYCAeDYCYCABIAggCCADQeAAahDjHSABKAK8ASEGIANCADcCbCADQoCAgICAATcCYCADQgA3AXJBACEBIANBADYCaEEEQRwQ1SAiCyAHOgAZIAtBADoAGCALQQA2AhQgCyAGNgIQIAsgBDYCDCALQQA2AgggC0KAgICAgAE3AgAgA0HgAGoQmCEgA0EcahDAIQwECyADQQA7ARwLIAEgA0HgAGoQshQLIANBHGoQwCELQQghCSADQeAAakEEQQhBOBCBDyADKAJkIQoCQCADKAJgRQ0AIAogAygCaBDpIAALQQAhBiADQQA2AiwgAyADKAJoIgw2AiggAyAKNgIkIANB4ABqQQhqIQ0CQAJAA0AgAS0AyAFBBkYNAQJAAkAgBUUNACADQeAAaiABIAIgBxCcBgwBCyABIAEoAngiCkHAAHI2AnggA0HgAGogASACIAcQnAYgASAKNgJ4CyADKAJkIQsCQCADKAJgIg5BB0cNACADQSRqEJghQQEhAQwECyADQTBqIA1BMPwKAAACQCAGIAMoAiRHDQAgA0EkahCtGiADKAIoIQwLIAwgCWoiCkF8aiALNgIAIApBeGogDjYCACAKIANBMGpBMPwKAAAgAyAGQQFqIgY2AiwgAS0AyAFBB0cNAiABEN4RIAlBOGohCQwACwsgASgCuAEhBiABKAK8ASEJIANB94CAgHg2AmAgASAJIAYgCSAIRhsgBiAGIARGGyAJIANB4ABqEOMdCwJAIAINACABEJgcDQAgASgCxAEhBiABKALAASEJIANB9oCAgHg2AmAgASAJIAYgA0HgAGoQ4x0gA0EIaiABEK4KIAMgAygCDDYCZCADIAMoAggiBjYCYCADQeQAaiEJAkACQCAGDQAgCRClIgwBCyAJEIghCwNAIAEQmBwNASABEN4RIAEtAMgBQaIBRw0ACwsgASgCvAEhBiADQgA3AmwgA0KAgICAgAE3AmAgA0IANwFyQQAhASADQQA2AmhBBEEcENUgIgsgBzoAGSALQQA6ABggC0EANgIUIAsgBjYCECALIAQ2AgwgCyADKAIsNgIIIAsgAykCJDcCACADQeAAahCYIQsgACALNgIEIAAgATYCACADQYACaiQAC/IIAhV/An4jAEGQBGsiAiQAQQAhAyACQQxqQQBBgAT8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A0EYaiADQYgDahDkG0EAIQEgAygCHCEJDAELIANBADYChAMgCigCBCEJIAooAgAhAQsgA0H8AmoQhxsLQQgQiQEiAg0BQQRBCBCNJAALIANB0ABqIAJBJPwKAAAgA0EIaiADQdAAahDzECADKAIMIQkgAygCCCEBQQgQiQEiAkUNAgsgAiABNgIAIAIgCTYCBCAFEIsEIAVBCEEEEM4UQcgAEIkBIgFFDQIgASADQfwBakEs/AoAACABIAI2AiwgASADKQPgATcCMCABIAMpA+gBNwI4IAEgAykD8AE3AkACQCADKAI0IgIgC0cNACADQSxqEI0aCyADKAIwIAJBA3RqIgkgATYCBCAJQQk2AgAgAyACQQFqNgI0IABBBGogA0EsakEk/AoAACAAQSI2AgAgBCAEKAIQQQFqNgIQDAULQcDWiQEQ8x0AC0EEQQgQjSQAC0EEQcgAEI0kAAsgA0HIAmogARCMDiADQRY2AuACIAAgASgCBCABKAIIIANByAJqIANB4AJqENoOAkAgC0GAgICAeEcNACADQdAAahDiHgsgA0EsahCHGwsgBCAEKAIQQQFqNgIQIAIQhxsLIANBoANqJAALpgoCB38DfiMAQSBrIgMkACABQbABaiEEAkAgAS0AuAEiBUEDRw0AIANBCGogASABKAKwAUEAENgGIAQgAygCEDYCCCAEIAMpAgg3AgAgAS0AuAEhBQsgASgCtAEhBiABKAKwASEHAkACQAJAAkACQAJAAkACQAJAAkACQCAFQf8BcSIIQbl/ag4CAQIACyAIQaIBRg0CIANBCGpBBHIgBRCyJSADQQM2AhwgA0GwhZsBNgIYIANBsICAgHg2AgggASgCsAEgASgCtAEgA0EIahCzGyEHAkAgAS0AuAFBogFHDQAgARC/FCEEIAEQkhAgASAEEIYJCyAAQQI6ABggACAHNgIADAkLIAcgASgCbCIISQ0EIAZBfmoiBSABKAJwSw0EIAEoAmAgByAIa2ogBSAHaxD7GCEKIAEpAwghCyABQQo2AgggAyABKQMQNwMQIAMgCzcDCAJAAkAgC6ciCEEKRg0AIAhBAkkNASADQQhqELULC0Gs85oBQShBnIibARCkIQALIAMpAxAhCyADKAIMIQYgASgCiAEhCSABQQs2AogBAkACQCAJQQtGDQAgASAJNgIIIAEgASkCjAE3AgwgASABKAKUATYCFCADIAEoAqABNgIQIAMgASkCmAE3AwgMAQsgA0EIaiABEM4BCyABKQOwASEMIAQgAykDCDcCACAEIAMoAhA2AgggASAMNwOoAUEAIQEgCEEBcUUNByACRQ0CQQAhAQwGCyAHIAEoAmwiCEkNBCAGQX9qIgUgASgCcEsNBCABKAJgIAcgCGtqIAUgB2sQ+xghCiABKQMIIQsgAUEKNgIIIAMgASkDEDcDECADIAs3AwgCQAJAIAunIghBCkYNACAIQQJJDQEgA0EIahC1CwtBrPOaAUEoQZyImwEQpCEACyADKQMQIQsgAygCDCEGIAEoAogBIQkgAUELNgKIAQJAAkAgCUELRg0AIAEgCTYCCCABIAEpAowBNwIMIAEgASgClAE2AhQgAyABKAKgATYCECADIAEpApgBNwMIDAELIANBCGogARDOAQsgASkDsAEhDCAEIAMpAwg3AgAgBCADKAIQNgIIIAEgDDcDqAFBASEBIAhBAXFFDQYgAkUNAkEBIQEMBQsgASkDCCEKIAFBCjYCCCADIAEpAxA3AxAgAyAKNwMIAkACQCAKpyIFQQpGDQAgBUEJRg0BIANBCGoQtQsLQazzmgFBKEG8h5sBEKQhAAsgAygCDCECIAEoAogBIQUgAUELNgKIAQJAAkAgBUELRg0AIAEgBTYCCCABIAEpAowBNwIMIAEgASgClAE2AhQgAyABKAKgATYCECADIAEpApgBNwMIDAELIANBCGogARDOASABKAK0ASEGIAEoArABIQcLIAEgBjYCrAEgASAHNgKoASAEIAMpAwg3AgAgBCADKAIQNgIIIABBAjoAGCAAIAI2AgAMBgsgAEECOgAYIAAgBjYCACAKQgODQgBSDQUgCqciASABKAIAIgBBf2o2AgAgAEEBRw0FIAEgASgCEBDeHgwFCyAAQQI6ABggACAGNgIAIApCA4NCAFINBCAKpyIBIAEoAgAiAEF/ajYCACAAQQFHDQQgASABKAIQEN4eDAQLQYiOmwFB1gBB4I6bARCkIQALQYiOmwFB1gBB4I6bARCkIQALIAZBCGoQ4wMgBkEgQQgQzhRCACELCyAAIAE6ABggACALNwMQIAAgBTYCDCAAIAc2AgggACAKNwMACyADQSBqJAALoQoCDX8BfiMAQcAAayIDJAAgA0EgaiABEJsFIAMoAighBAJAAkAgAykDICIQQgBSDQBBASEFDAELIAMgAygCLCIGNgIcIAMgBDYCGCADIBA3AxAgA0EIaiADQRBqEIoUIAMoAgghBwJAAkACQAJAAkACQAJAAkAgAygCDEF9ag4HAQMEAAIHBQcLIAcoAABB8+jJywZzIAdBBGoiBS8AAEHuzgFzckUNBSAHKAAAQe7qtZMGcyAFLwAAQeXkAXNyRQ0FIAcoAABB78SpqwZzIAdBBGoiBS8AAEHj6AFzckUNBSAHKAAAQeLSncsGcyAFLwAAQe7oAXNyRQ0FIAcoAABB8/K1kwZzIAdBBGovAABB79gBc3JFDQUMBgsgBy8AAEHh3AFzIAdBAmotAABB+QBzckH//wNxRQ0EDAULIAcoAABB9dyt8wZzIAdBA2oiBSgAAEHu3t3zBnNyRQ0DIAcoAABB4t694wZzIAUoAABB7MqF8wZzckUNAwwECyAHKAAAQe7qseMGRg0CIAcoAABB9t6lowZGDQIMAwsgBygAAEHuytmrBnMgB0EEai0AAEHyAHNyRQ0BDAILIAcpAABC6dzRk5fN27npAIUgB0EIajEAAELjAIWEUEUNAQsgA0GugYCAeDYCICABIAQgBiADQSBqENwdC0EAIQhBACEHAkACQAJAAkACQCABLQC4ASIFQRJHDQAgASABKAJ4IgdBgCByNgJ4IANBADoAICADQQE6AD8gAyADQT9qIANBIGogARDfASADKAIAIQUgASAHNgJ4IAMoAgQhBwJAIAVBAXFFDQAgByEJDAILIAEtALgBIQULQQQhCUEAIQoCQAJAIAVB/wFxQdkARw0AIAEoAogBIQUgAUELNgKIAQJAAkAgBUELRg0AIAFBjAFqIQkgAyABKAKgATYCKCADIAEpApgBNwMgAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIAkpAgA3AgwgASAJKAIINgIUDAELIANBIGogARDOAQsgASADKAIoNgK4ASABIAEpA7ABNwOoASABIAMpAyA3ArABIANBIGogARDyAyADKAIkIQkgAygCICIKQYCAgIB4Rg0BIAMoAighCCABLQC4AUHZAEcNACABKAK0ASEFIAEoArABIQsgA0GWgYCAeDYCICABIAsgBSADQSBqENwdA0AgAS0AuAEiBUECRg0BIAVBowFGDQEgARCSEAwACwsgASgCsAEhDCABIAEoAngiBUGAIHI2AnggA0EgaiABEGUgASAFNgJ4IAMoAiQhCyADKAIgIg1BgICAgHhHDQIgCSAIEJwPIAogCRDgIyALIQkLIAdFDQAgBxCsDyAHKAIAIAdBBGooAgAQ4SMgB0EUQQQQzhQLQQEhBSAQQgODQgBRDQEgCSEEDAMLIAMoAighDiABKAKsASEPQcgAEIkBIgFFDQFBACEFIAFBADoARCABIAg2AkAgASAJNgI8IAEgCjYCOCABIA82AjQgASAMNgIwIAEgDjYCLCABIAs2AiggASANNgIkIAEgBzYCICABQQA6ABwgAUEANgIYIAEgBjYCFCABIAQ2AhAgASAQNwMIIAEgDzYCBCABIAI2AgAgASEEDAILIBCnIgEgASgCACIEQX9qNgIAQQEhBQJAIARBAUYNACAJIQQMAgsgASABKAIQEN4eIAkhBAwBC0EIQcgAEI0kAAsgACAENgIEIAAgBTYCACADQcAAaiQAC7kKAgl/AX4jAEHQAGsiAyQAIAFBsAFqIQQgASgCsAEhBUEAIQZBACEHAkACQAJAAkACQAJAAkACQAJAIAINACABLQC4ASIIIQcCQCAIQfMARw0AIAEoAogBIQcgAUELNgKIAQJAAkAgB0ELRg0AIAFBjAFqIQkgAyABKAKgATYCMCADIAEpApgBNwMoAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBzYCCCABIAkpAgA3AgwgASAJKAIINgIUDAELIANBKGogARDOAQsgASkDsAEhDCAEIAMpAyg3AgAgBCADKAIwNgIIIAEgDDcDqAEgAS0AuAEhBwsgB0H/AXFB4wBHDQEgCEHzAEYhByABKAKIASEIIAFBCzYCiAECQAJAIAhBC0YNACABQYwBaiEJIAMgASgCoAE2AjAgAyABKQKYATcDKAJAIAEoAghBCkYNACABQQhqELULCyABIAg2AgggASAJKQIANwIMIAEgCSgCCDYCFAwBCyADQShqIAEQzgELIAEpA7ABIQwgBCADKQMoNwIAIAQgAygCMDYCCCABIAw3A6gBCwJAIAEtALgBIghBEkcNACABIAEoAngiBkGAIHI2AnggA0EAOgBAIANBAToAKCADQQhqIANBwABqIANBKGogARDfASADKAIIIQggASAGNgJ4IAMoAgwh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AEUNDCABIAAQyAEPCyAAKAIoIQAMCQsgASAAKAIEEMgBIAAoAgggARC8AyAAKAIUIgANCAwKCyABIAAoAhAQyAEgACgCDCICRQ0JIAAoAggiAyACQRhsaiEEA0ACQCADKAIUIgBFDQAgASAAEMgBCwJAIANBCGooAgAiAEUNACAAQTBsIQIgA0EEaigCACEAA0AgACABELwDIABBMGohACACQVBqIgINAAsLIANBGGoiAyAERg0KDAALCyABLQAMIQIgAUEBOgAMIAEgACgCBBDIASABIAI6AAwMCAsgAEEIaiABEOEFDwsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIgIoAggiA0UNAiACKAIEIgIgA0E4bGohBANAIAIgARDICgJAIAJBMGooAgAiA0UNACABIAMQyAELIAJBOGoiAiAERw0ADAMLCyAAKAIIIgIoAggiA0UNASACKAIEIgIgA0E4bGohBANAIAIgARDICgJAIAJBMGooAgAiA0UNACABIAMQyAELIAJBOGoiAiAERw0ADAILCyAAKAIIIAEQsggLIAEgACgCDBDIASAAKAIQIQAMBAsCQAJAAkACQCAAKAIEDgMAAQIACyAAKAIIIgIoAggiA0UNAiACKAIEIgIgA0E4bGohBANAIAIgARDICgJAIAJBMGooAgAiA0UNACABIAMQyAELIAJBOGoiAiAERw0ADAMLCyAAKAIIIgIoAggiA0UNASACKAIEIgIgA0E4bGohBANAIAIgARDICgJAIAJBMGooAgAiA0UNACABIAMQyAELIAJBOGoiAiAERw0ADAILCyAAKAIIIAEQsggLIAEgACgCDBDIASAAKAIQIQAMAwsCQCAAKAIEIgJBAkYNAAJAIAJBAUcNACABIAAoAggQyAEMAQsgACgCCCICKAIIIgNFDQAgAigCBCICIANBOGxqIQQDQCACIAEQyAoCQCACQTBqKAIAIgNFDQAgASADEMgBCyACQThqIgIgBEcNAAsLAkAgACgCGCICRQ0AIAEgAhDIAQsCQCAAKAIcIgJFDQAgASACEMgBCyAAKAIMIQAMAgsgASAAKAIEEMgBIAAoAgghAAwBCyABIAAoAgQQyAEgACgCCCEADAALCwJAIAAoAgQiA0HQAGooAgAiAEUNACAAQTBsIQIgA0HMAGooAgAhAANAIAAgARC8AyAA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AHI2AnggAkEgaiABEPkHIAEgDTYCeCACKAIkIQ4gAigCICIPQQJGDQQgAikCKCEQAkAgBCACKAIIRw0AIAJBCGoQsRoLIAIoAgwiCCAHaiINIA82AgAgDUEIaiAQNwIAIA1BBGogDjYCACACIARBAWoiDTYCEAJAAkACQAJAIAEtALgBIg5Be2oOAwYBAAELIAEoAogBIQ0gAUELNgKIASANQQtGDQEgAiAMKAIINgIoIAIgDCkCADcDIAJAIAsoAgBBCkYNACALELULCyALIA02AgAgCiAFKQIANwIAIAogBSgCCDYCCAwCCyABKAK0ASEEIAEoArABIQcgAkEUaiAOELIlIAJBjwKtQiCGQZzkmgGthDcDOCACQSBqQc2VgAEgAkE4ahCvECACIAIpAhQ3AiwgAiACKAIcNgI0IAcgBCACQSBqELMbIQ4gAS0AuAFBogFGDQogDSEEDAwLIAJBIGogARDOAQsgASABKAK0ASINNgKsASABIAEoArABIg42AqgBIAYgAikDIDcCACAGIAIoAig2AgggAS0AuAFBBUcNAiACQSBqIAkgAyAOIA0QrgcMAgsgAkEgaiABEM4BCyABKQOwASEQIAYgAikDIDcCACAGIAIoAig2AgggASAQNwOoAQJAIAQgAigCCEcNACACQQhqELEaIAIoAgwhCAsgCCAHakECNgIAIAIgBEEBajYCEAsgB0EQaiEHIARBAWohBAwACwsgAigCDCEIDAULIAJBIGogARDOAQsgASABKAK0ASIENgKsASABIAEoArABNgKoASAGIAIpAyA3AgAgBiACKAIoNgIIQcAAEIkBIg5FDQIgDkENNgIAIA4gAikCCDcCBCAOIAIoAhA2AgwgDiAENgIUIA4gAzYCEEEAIQEMBAsgByACKAIoEOkgAAsgASABEO8NEIYJIA0hBAwBC0EIQcAAEI0kAAsgCCAEEOgaIAIoAgggCBDgI0EBIQELIAAgDjYCBCAAIAE2AgAgAkHAAGokAAveCQEJfyMAQcAAayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDKAIADgkAAQgCAwQFBgcACyADQQRqIAEQjA0hAAwICyADKAIEIQRBACEAIAJBFGogAygCCCIFQQBBBEEMEL8PIAIoAhghBiACKAIUQQFGDQkgAigCHCEHAkAg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KAIIIAEQrAkMAgsgACgCCCABEK0JDAELIAAoAgggARCMCwsgACgCDCABELoBIAAoAhAhAAwECwJAAkACQAJAIAAoAgQOAwABAgALIAAoAgggARCsCQwCCyAAKAIIIAEQrQkMAQsgACgCCCABEIwLCyAAKAIMIAEQugEgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFHDQAgACgCCCABELoBDAELIAAoAggiAkEIaigCACIDRQ0AIAJBBGooAgAiAiADQThsaiEEA0AgAiABEMcKAkAgAkEwaigCACIDRQ0AIAMgARC6AQsgAkE4aiICIARHDQALCwJAIAAoAhgiAkUNACACIAEQugELAkAgACgCHCICRQ0AIAIgARC6AQsgACgCDCEADAILIAAoAgQgARC6ASAAKAIIIQAMAQsgACgCBCABELoBIAAoAgghAAwACwsCQCAAKAIEIgNB0ABqKAIAIgBFDQAgAEEwbCECIANBzABqKAIAIQADQCAAIAEQzwMgAEEwaiEAIAJBUGoiAg0ACwsCQAJAAkAgAygCAEF5ag4CAQIACyADIAEQxwoLIANBMGooAgAiAEUNACAAQTBsIQIgA0EsaigCACEAA0AgACABEM8DIABBMGohACACQVBqIgINAAsLIAMoAmBBgICAgHhGDQAgA0HoAGooAgAiAEUNACAAQTBsIQIgA0HkAGooAgAhAANAIAAgARDPAyAAQTBqIQAgAkFQaiICDQALCw8LIAAoAgQgARC6AQu6CQIWfwJ+IwBB4ABrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAA0AIANBKGogACgCwBIgACgCxBIiBCgCCEF/akF4cWpBCGoiBSACKAIIIgYgAigCDCIHIAIoAhAiCCACKAIUIgkgBCgCECIKERMAAkACQCADKAIoQQFHDQAgAUHYAWohCyAJQQFqIQwgAUEYaiENIABBsA1qIQ4gAi0AGCEPQQAhECAALQDUEkEBcSERIAApA7ANQgKFIAApA7gNhCEZIAAtAKwNQQFxIRIgACkDAEIChSAAKQMIhCEaIAghE0EAIRQDQCADKAIsIgQgFEkNEiADKAIwIRUgAyAINgJQIAMgBDYCVCAEIAdLDQQgCCAEQQFqIhZLDQQgAyAXQYB+cSAPciIXNgIkIAMgBDYCICADIAg2AhwgAyAHNgIYIAMgBjYCFCADQQE2AgwgEQ0FIBlQDQcgASgCyAFBAkYNBiADQShqIA4gDSADQQxqIBAQ8QEgAygCKCIQQQJGDRICQAJAIBBFDQAgAygCLCEUIAMgAygCMCIQNgJEIAMgCTYCSCAJIAdLDQogECAMSw0KIAMgGEGAfnEgD3IiGDYCQCADIAk2AjwgAyAQNgI4IAMgBzYCNCADIAY2AjAgAyAUNgIsIANBAjYCKCASDQsCQCAaUA0AIAEoAsgEQQJGDQ0gA0HQAGogACALIANBKGoQnwIgAygCUCIUQQJGDRUgFEEBRw0FIARBf0YNDiADKAJUIRQMAgtBxICFAUGPAUGMgYUBENcbAAsgEyAJTw0CIARBf0YNEAsgA0EoaiAFIAYgByAWIAkgChETACAWIRMgFSEQIAMoAigNAAsLQQAhBAwRCyAQIAMoAlhLDQlBASEEDBALIAAtAKwNQQFGDQkgACkDAEIChSAAKQMIhFANDiABKALIBEECRg0KIAFB2AFqIQQCQAJAAkACQAJAIAAoAoAFIgctAOICDQAgA0EoaiAAIAQgAhBQIAMoAigiBEECRw0BDBELIActAOMCIQkgA0EoaiAAIAQgAhBQIAMoAigiB0ECRg0QIAdBAUcNASAJQQFxRQ0CIANBDGogAiADKAIsIAMoAjAiByAHIAAgBBD9ByADKAIMIgRBAkcNAyADKAIQIQQMEQsgBEEBRg0BC0EAIQQMAQtBASEECyAEQQBHIQQMDwsgAyAHNgJEIANBBzYCNCADQfgANgIsIAMgA0HEAGo2AjAgAyADQdAAajYCKEHgh4ABIANBKGpBiOSaARDXGwALQazzmgFBKEG8jYUBEKQhAAtBjI2FARCwIwALQcSAhQFBjwFBnIGFARDXGwALIAMgBzYCTCADQQc2AlwgA0H4ADYCVCADIANBzABqNgJYIAMgA0HEAGo2AlBB4IeAASADQdAAakGI5JoBENcbAAtBrPOaAUEoQaCMhQEQpCEAC0HcgYUBELAjAAtBtICFARCwIwALQfzWhAFBJUGQ14QBENcbAAtBrPOaAUEoQYCMhQEQpCEAC0G8gYUBELAjAAtBpICFARCwIwALIAMoAiwhBAsgBBDhFRoLIAAgASACENwGIQQLIANB4ABqJAAgBAukCQEDfwJAAkACQANAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4TAA8PAQIDDw8EBRAODAsKCQgHBgALIAAoAgwiAkUNDiACQTBsIQIgACgCCCEAA0AgACABENEDIABBMGohACACQVBqIgINAAwPCwsgASAAKAIEEN0MIAAoAgghAAwLCyAAKAIMIgBFDQwgASAAEN0MDwsgACgCKCEADAkLIAEgACgCBBDdDCAAKAIIIAEQ0QMgACgCFCIADQgMCgsgASAAKAIQEN0MIAAoAgwiAkUNCSAAKAIIIgMgAkEYbGohBANAAkAgAygCFCIARQ0AIAEgABDdDAsCQCADQQhqKAIAIgBFDQAgAEEwbCECIANBBGooAgAhAANAIAAgARDRAyAAQTBqIQAgAkFQaiICDQALCyADQRhqIgMgBEYNCgwACwsgASAAKAIEEN0MDAgLIABBCGogARCrBA8LAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQxgoCQCACQTBqKAIAIgNFDQAgASADEN0MCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQxgoCQCACQTBqKAIAIgNFDQAgASADEN0MCyACQThqIgIgBEcNAAwCCwsgACgCCCABEKMMCyABIAAoAgwQ3QwgACgCECEADAQLAkACQAJAAkAgACgCBA4DAAECAAsgACgCCCICKAIIIgNFDQIgAigCBCICIANBOGxqIQQDQCACIAEQxgoCQCACQTBqKAIAIgNFDQAgASADEN0MCyACQThqIgIgBEcNAAwDCwsgACgCCCICKAIIIgNFDQEgAigCBCICIANBOGxqIQQDQCACIAEQxgoCQCACQTBqKAIAIgNFDQAgASADEN0MCyACQThqIgIgBEcNAAwCCwsgACgCCCABEKMMCyABIAAoAgwQ3QwgACgCECEADAMLAkAgACgCBCICQQJGDQACQCACQQFHDQAgASAAKAIIEN0MDAELIAAoAggiAigCCCIDRQ0AIAIoAgQiAiADQThsaiEEA0AgAiABEMYKAkAgAkEwaigCACIDRQ0AIAEgAxDdDAsgAkE4aiICIARHDQALCwJAIAAoAhgiAkUNACABIAIQ3QwLAkAgACgC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AgQMBwsgAS0AuAFB3wBGDQMMBAsgBhC1CyAGIAMpAyA3AwAgBiADKQMoNwMIIAYgAykDMDcDECAGIAMpAzg3AxggBygCAEEKRg0BIAcQtQsMAQsCQAJAIAEtALgBQQZGDQAgASgCrAEhBwwBCyABKAKIASEHIAFBCzYCiAECQAJAIAdBC0YNACABQYwBaiEIIAMgASgCoAE2AiggAyABKQKYATcDIAJAIAEoAghBCkYNACABQQhqELULCyABIAc2AgggASAIKQIANwIMIAEgCCgCCDYCFAwBCyADQSBqIAEQzgELIAEgASgCtAEiBzYCrAEgASABKAKwATYCqAEgBCADKQMgNwIAIAQgAygCKDYCCAsgACAHNgIMIAAgBTYCCCAAIAY2AgQgAEESNgIADAQLIAcgAykDGDcDCCAHIAMpAxA3AwAgBigCAEELRg0BIAEtAKABIQYLIAZB/wFxQQhHDQAgAyABEK0DIAMoAgQhBiADKAIAQQFxRQ0BIABBEzYCACAAIAY2AgQMAgsgASgCtAEhBiABKAKwASEHIANBx4CAgHg2AiAgByAGIANBIGoQsxshBgJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAEETNgIAIAAgBjYCBAwBCwJAAkAgAS0AuAFBBkYNACABKAKsASEHDAELIAEoAogBIQcgAUELNgKIAQJAAkAgB0ELRg0AIAFBjAFqIQggAyABKAKgATYCKCADIAEpApgBNwMgAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBzYCCCABIAgpAgA3AgwgASAIKAIINgIUDAELIANBIGogARDOAQsgASABKAK0ASIHNgKsASABIAEoArABNgKoASAEIAMpAyA3AgAgBCADKAIoNgIICyAAIAc2AgwgACAFNgIIIAAgBjYCBCAAQRI2AgALIAIoAgQiASACKAIIENodIAIoAgAgARDnIyADQcAAaiQAC80IAgp/AX4jAEEgayIDJAAgASgCECEEIANBGGogAiABKAIMIgVBABCwAgJAAkAgAy0AGEEERg0AIAMpAxgiDUL/AYNCBFENACAAIA03AgAMAQsCQAJAAkAgBUUNACADQRhqIAIgBRDfHSADLQAYQQRGDQAgAykDGCINQv8Bg0IEUg0BCyADQQA2AgggA0EYaiACIANBCGpBku+aAUEBEOcNIAMt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KAIAIgBFDQAgAS0AAEEBcQ0AIABBDGwhAyAEQRBqKAIAIQADQAJAIAEtAAANACAAKAIAIAEQmQELIABBDGohACADQXRqIgMNAAsLIAQoAhhBgICAgHhGDQQgBEEgaigCACIARQ0EIAEtAABBAXENBCAAQTBsIQMgBEEcaigCACEAA0ACQCABLQAADQAgACABEKkDCyAAQTBqIQAgA0FQaiIDDQAMBQsLIAAoAgQiAEEIaigCACIDRQ0DIABBBGooAgAiACADQThsaiECA0AgACABEOMJAkAgAEEwaigCACIDRQ0AIAEtAABBAXENACADIAEQmQELIABBOGoiACACRw0ADAQLCyAAKAIEIgBBCGooAgAiA0UNAiAAQQRqKAIAIgAgA0E4bGohAgNAIAAgARDjCQJAIABBMGooAgAiA0UNACABLQAAQQFxDQAgAyABEJkBCyAAQThqIgAgAkcNAAwDCwsgACgCBCIAQShqKAIAIgNFDQEgA0EwbCEDIABBJGooAgBBKGohAANAAkAgACgCACICRQ0AIAEtAABBAXENACACIAEQmQELIABBMGohACADQVBqIgMNAAwCCwsgACgCBCIALQBFIgNBA0YNAAJAIANBAkYNAAJAIAAoAkAiAC0AJUECRg0AIABBIGogARCBEg8LIABBCGooAgAiA0UNASADQThsIQMgAEEEaigCACEAA0ACQAJAIAAoAgBBCUcNACABLQAADQEgAEEIaiABEKkDDAELIAAgARDTBAsgAEE4aiEAIANBSGoiAw0ADAILCyAAQShqKAIAIgNFDQAgA0E4bCEDIABBJGooAgAhAANAAkACQCAAKAIAQQlHDQAgAS0AAA0BIABBCGogARCpAwwBCyAAIAEQ0wQLIABBOGohACADQUhqIgMNAAsLC9kIAgx/An4jAEHgAGsiAiQAQQAhAyACQQA2AVogAkEANgIUIAJCgICAgIABNwIMIAJCgICAgIABNwJIIAJCgICAgMAANwI4IAJBADYCUCACQQA6AEQgAkEANgJAIAIgAC8BeDsBWCACIAAoAnQ2AlQgAkEAKQOgpZwBIg43AhggAkEAKQOopZwBIg83AiAgAiAONwIoIAIgDzcCMCACIAAtAH46AF4gAEEsaiEEAkADQCADQdQARg0BIAAgA2pBLGoiBSgCACEGIAUgAkEMaiADaiIH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CCABIAQpAgA3AgwgASAEKAIINgIUDAELIAJBIGogARDOAQsgASkDsAEhCCADIAIpAyA3AgAgAyACKAIoNgIIIAEgCDcDqAECQAJAAkAgAS0AuAEiBg0AIAEoAogBIQYgAUELNgKIAQJAAkAgBkELRg0AIAIgASgCoAE2AiggAiABKQKYATcDIAJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASAEKQIANwIMIAEgBCgCCDYCFAwBCyACQSBqIAEQzgELIAEpA7ABIQggAyACKQMgNwIAIAMgAigCKDYCCCABIAg3A6gBIAEgASgCeCIGQcAAcjYCeCACIAEQrQMgAigCACEHIAEgBjYCeCACKAIEIQYgB0EBcUUNASAAQRM2AgAgACAGNgIEDAILIAEoArQBIQMgASgCsAEhBCACQQhqIAYQsiUgAkGPAq1CIIZBn7aBAa2ENwM4IAJBIGpBzZWAASACQThqEMgIIAIgAikCCDcCLCACIAIoAhA2AjQgBCADIAJBIGoQsxshAwJAIAEtALgBQaIBRw0AIAEgARDvDRCGCQsgAEETNgIAIAAgAzYCBAwBCwJAAkACQAJAIAEtALgBIgdBAUcNACABKAKIASEHIAFBCzYCiAEgB0ELRg0BIAIgASgCoAE2AiggAiABKQKYATcDIAJAIAEoAghBCkYNACABQQhqELULCyABIAc2AgggASAEKQIANwIMIAEgBCgCCDYCFAwCCyABKAK0ASEDIAEoArABIQQgAkEUaiAHELIlIAJBjwKtQiCGQbLwmgGthDcDOCACQSBqQc2VgAEgAkE4ahDICCACIAIpAhQ3AiwgAiACKAIcNgI0IAQgAyACQSBqELMbIQMgAS0AuAFBogFHDQIgASABEO8NEIYJDAILIAJBIGogARDOAQsgASkDsAEhCCADIAIpAyA3AgAgAyACKAIoNgIIIAEgCDcDqAEgASABKAJ4IgNB///f/31xQYCAIHI2AnggAkHAAGogARCJCiABIAM2AngCQCACKAJAQRNHDQAgAigCRCEDDAELAkBBMBCJASIDDQBBCEEwEI0kAAsgAyACKQNoNwMoIAMgAikDYDcDICADIAIpA1g3AxggAyACKQNQNwMQIAMgAikDSDcDCCADIAIpA0A3AwAgACAFNgIMIAAgAzYCCCAAIAY2AgQgAEEDNgIA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AQwTCyABQQhqIQIgAUEEaiEBDBILIAEoAgQiAUEEaiECDBELIAFBFGohAiABQRBqIQEMEAsgAUEQaiECIAFBDGohAQwPCyABQQxqIQIgAUEIaiEBDA4LIAFBDGohAiABQQhqIQEMDQsgAUEQaiECIAFBDGohAQwMCyABQRBqIQIgAUEMaiEBDAsLIAFBEGohAiABQQxqIQEMCgsgAUEUaiECIAFBEGohAQwJCyABQQxqIQIgAUEIaiEBDAgLIAFBCGohAiABQQRqIQEMBwsgAUEcaiECIAFBGGohAQwGCyABQRBqIQIgAUEMaiEBDAULIAFBEGohAiABQQxqIQEMBAsgAUEUaiECIAFBEGohAQwDCyABQRRqIQIgAUEQaiEBDAILIAFBJGohAiABQSBqIQEMAQsgAUEkaiECIAFBIGohAQsgACACKAIANgIEIAAgASgCADYCAAvzBwINfwR+AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJFDQACQCACKQMAIhBCA4NCAFINACAQpyIDIAMoAgAiA0EBajYCACADQX9MDQYLIAEoAgwhBCABKAIIIQUgAigCCCEGAkAgASkDACIRQgODQgBSDQAgEaciAyADKAIAIgNBAWo2AgAgA0F/TA0GC0HAABCJASIDDQFBCEHAABCNJAALIAEpAwAiECERIAEoAhAiBSEHIAEoAgwiCCECIAEoAggiCSEDAkAgEEIDg0IAUg0AIBCnIgIgAigCACICQQFqNgIAIAJBf0wNBSABKQMAIREgASgCECEHIAEoAgwhAiABKAIIIQMLIBGnIQogAS0AFCELAkAgEUIDg0IAUg0AIAogCigCACIBQQFqNgIAIAFBf0wNBQtBwAAQiQEiDEUNAyACrUIghiADrYQhEiARQiCIpyENQQAhDkEaIQ8gCyEEDAELIANBADoAHCADIAY2AhggA0IANwMQIAMgEDcDCCADQRo2AgACQCACKQMAIhNCA4NCAFINACATpyIGIAYoAgAiBkEBajYCACAGQX9MDQQLIAEoAgwhCyABKAIIIQcgAigCCCECAkAgASkDACISQgODQgBSDQAgEqciASABKAIAIgFBAWo2AgAgAUF/TA0EC0HAABCJASIGRQ0EQQAhCiAGQQA6ABwgBiACNgIYQgAhECAGQgA3AxAgBiATNwMIIAZBGjYCAEHA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IAIpA3A3AyggAiACKQNoNwMgIAIgAikDYDcDGCACIAo2AhQgAiALNgIQIAEtALgBQdsARw0BIAEoAogBIQogAUELNgKIAQJAAkAgCkELRg0AIAIgASgCoAE2AmAgAiABKQKYATcDWAJAIAEoAghBCkYNACABQQhqELULCyABIAo2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyACQdgAaiABEM4BCyABKQOwASEMIAYgAikDWDcCACAGIAIoAmA2AgggASAMNwOoASACQdgAaiABQQAQqAggAigCXCEGAkAgAigCWCIFQYCAgIB4Rg0AIAIgAikCaDcDqAEgAiACKQJgNwOgAQwDCyAAQRM2AgAgACAGNgIEAkACQCALQXlqDgIBAgALIAJBEGoQyQsLIAIoAjwiASACKAJAEJAfIAIoAjggARDhIwsgBCAIEJAfIAcgBBDhIwwCC0GAgICAeCEFAkAgC0EIRw0AIAJB9oCAgHg2AlggASAJIAkgAkHYAGoQ3B0LCyABKAKsASEKQYABEIkBIgFFDQEgASACQRBqQcgA/AoAACABIAg2AlAgASAENgJMIAEgBzYCSCABIAY2AmQgASAFNgJgIAEgCjYCfCABIAM2AnggACABNgIEIABBCzYCACABIAIpAwA3AlQgASACKAIINgJcIAEgAikDoAE3A2ggASACKQOoATcDcAsgAkGwAWokAA8LQQhBgAEQjSQAC84GAQV/AkACQAJAIAEtAGwiAkF9akEBIAJBAksbQf8BcQ4DAAECAAsgAUEANgJQDAELIAFBwABqIQMCQCACQQJHDQADQCADKAIYIgMtACxBAkYNAAsLIANBADYCKAsCQCABKAKEASIDRQ0AIAEoAoABIgIgA0HYAGxqIQQDQAJAAkAgAigCACIDQQVHDQAgAigCBCAAEKYBDAELIANBBEYNAAJAAkACQCADDgQDAAECAwsgAigCBEEBRw0CIAIoAgggABCmAQwCCwJAAkACQCACKAIEIgUtAGwiBkF9akEBIAZBAksbQf8BcQ4DAAECAAsgBUEANgJQDAELIAVBwABqIQMCQCAGQQJHDQADQCADKAIYIgMtACxBAkYNAAsLIANBADYCKAsCQCAFQYQBaigCACIDRQ0AIANB2ABsIQYgBUGAAWooAgAhAwNAAkACQCADKAIAQQVHDQAgA0EE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AkACQAJAAkACQAJAAkACQCAAKAIAIgAoAgAOFA8PAAECAwgECAgFBgcICAkLDA0ODwsCQCAAKAIEQYCAgIB4Rg0AIAEgAEEEahDbHCABIABBHGoQ9hogAEEQaiABEJUlDwsgASAAQQhqENscIAEgAEEgahD2GiAAQRRqIAEQlSUPCyAAQRBqIAEoAhQQ1B4gASAAQShqEMshDwsgAEHYAGohAiAAQRBqIQMCQAJAIAAtAERBBEYNACADIAEQkwsMAQsgAyABKAIUENQeCyABIAIQyyEPCyAAKAIMQThsIQQgACgCCCEFQQAhAANAIAQgAEYNDAJAAkACQAJAAkACQAJAAkBBBCAFIABqIgIoAgAiA0F8aiADQQRJGw4HAAECAwQFBgALIAEgAkEEahDbHCACQRhqIAEQryIgASACQRxqEPYaDAYLIAEgAkEEahDbHCACQRhqIAEQryIgASACQRxqEPYaDAULIAJBEGooAgAgARC9ASACQQxqIAEQryIMBAsgAkEEaigCACABEL0BIAJBEGogARCvIgwDCyACQTBqKAIAIAEQvQEgAiABEM8LDAILIAJBEGooAgAgARC9ASABIAJBBGoQ2xwgAkEcaiABEK8iIAEgAkEgahD2GgwBCyACQQRqIAEQsCILIABBOGohAAwACwsgACgCDEE4bCECIAAoAgghAANAIAJFDQsgACABEM0hIABBMGogARCFBSACQUhqIQIgAEE4aiEADAALCyABIABBCGoQ3BwPCyAAQQRqIAEQhQUgAEEIaiABEIUFIABBDGogARCFBSAAQRBqIQAMAwsgAEEQaiABEPkeDwsgAEEEaiEADAELIABBBGogARCFBSAAQQhqIQAMAAsLIABBEGogARD5HiABIABBwABqELMiIAEgAEHEAGoQsyIPCyAAKAIIQQBIDQIgASAAQQhqENwcDwsgAEEoaiECAkAgAC0AHEECRg0AIAEoAhQgAEEIahDyBhoLIAIgARCvIg8LIABBCGogARCTCwsLvAUBCH8gASACaiEDQQAhBAJAAkACQCACDQAgASECQQAhBQwBCyABIQIDQCAEIQUCQAJAIAIiBCwAACIGQX9MDQAgBEEBaiECIAZB/wFxIQYMAQsgBC0AAUE/cSECIAZBH3EhBwJAIAZBX0sNACAHQQZ0IAJyIQYgBEECaiECDAELIAJB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IAJBEGogARCKBSACKAIEQYCAgIB4Rg0CIAJBBGogARDyGw8LIAEgAkEEahDZHA8LIAEgAkEEahDZHAsPCyACQQRqIAEQigUgASACKAIIENkcDwsgASACQQRqEPYBDwsgAigCICABEHAPCyABIAJBDGoQrSIPCyACQQRqIQAMCgsgAkEEaiEADAkLIAJBIGoQliAPCyACQQRqIAEQpA8PCyABIAJBBGoQ4hIPCyACQQRqIQAMBQsgAkEEaiEADAQLIAJBBGohAAwDCyACQQRqIQAMAgsgAkEEaiEADAELIAJBBGohAAwACwsgAkEEaiABEOgdC/MGAgh/AX4jAEHAAGsiAiQAIAEgASgCeCIDQYAgcjYCeCABKAKIASEEIAFBCzYCiAEgAUGMAWohBQJAAkAgBEELRg0AIAIgASgCoAE2AiggAiABKQKYATcDIAJAIAEoAghBCkYNACABQQhqELULCyABIAQ2AgggASAFKQIANwIMIAEgBSgCCDYCFAwBCyACQSBqIAEQzgELIAEgAigCKDYCuAEgASABKQOwATcDqAEgASACKQMgNwKwASABIAEoAnhB////v39xNgJ4IAJBCGogASgCsAEgARDuAyACKAIIIQQgASADNgJ4IAIoAgwhBgJAIANBgCBxDQAgAS0AuAFB/gFxQRJHDQACQCABQYgBaiIDKAIAIgdBC0cNACABKQMIIQogAUEKNgIIIAIgASkDEDcDGCACIAo3AxAgAkEwaiABEM4BIAEpAwghCiABQQo2AgggAiABKQMQNwMoIAIgCjcDICABQQhqIQcCQAJAIAEoAogBQQ5xQQpHDQAgAyACKQM4NwMYIAMgAikDMDcDECADIAIpAyg3AwggAyACKQMgNwMADAELIAMQtQsgAyACKQMgNwMAIAMgAikDKDcDCCADIAIpAzA3AxAgAyACKQM4NwMYIAcoAgBBCkYNACAHELULCyAHIAIpAxg3AwggByACKQMQNwMAIAMoAgAiB0ELRg0BCyABKAK0ASABKAKYAUcNACABKAKwASEIIAFBCzYCiAEgAiAHNgIgIAIgBSgCGDYCPCACIAUpAhA3AjQgAiAFKQIINwIsIAIgBSkCADcCJAJAAkACQAJAAkACQCABLQC4AUFuag4CAQACC0E2IQUCQAJAAkACQCACLQA4QW1qDiQIBQUFAAUFBQUF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CyABIAAQ5gEgACABEFQgASADOgAlIAEgBDoAJCABIAAQuAEgASACOgAmIAAoAgBBGUcNACABIAAQzQEPCwuqBgIGfwN+IwBBoAFrIgEkAAJAAkACQAJAAkACQCAAKAIADggFBQUFAAECAwULIAAoAgwiAigCACACQQxqKAIAEPsdRQ0EDAMLIAAoAgQiAigCACACQQxqKAIAEPsdRQ0DDAILIAAoAgwNAQwCCyAAKAIMRQ0BCwJAAkBBHBCJASICRQ0AEPoXIQMgAiAAKAIYNgIYIAIgACkCEDcCECACIAApAgg3AgggAiAAKQIANwIAIAAgAzYCGCAAQQA2AgAgASACNgIQQQEhBCABQQE2AgwgAUE4aiEDA0AgASAEQX9qIgI2AhQgASABKAIQIgUgAkEcbGoiACkCBDcDGCABIAApAgw3AyAgASAAKQIUNwMoAkACQAJAAkACQAJAAkAgACgCACIGQQhGDQAgAyABKQMYNwIAIAMgASkDIDcCCCADIAEpAyg3AhAgASAGNgI0IAYOCAUFBQUCAwEEBQsgASgCDCEDIAJFDQggBSEAA0AgABC3ISAAQRxqIQAgAkF/aiICDQAMCQsLIAEoAkAhACABQQA2AkAgASgCPCECIAFBADYCnAEgASAANgKYASABIAM2ApQBIAEgAiAAQRxsajYCkAEgASACNgKMASABQQxqIAFBjAFqEMAHDAMLIAEoAkAhAhD6FyEGIAIoAhghBSACIAY2AhggAikCACEHIAJBADYCACACKQIQIQggAikCCCEJIAAgBzcCACAAIAk3AgggACAINwIQIAAgBTYCGCABIAQ2AhQMAwsgASgCOCECEPoXIQYgAigCGCEFIAIgBjYCGCACKQIAIQcgAkEANgIAIAIpAhAhCCACKQIIIQkgACAHNwIAIAAgCTcCCCAAIAg3AhAgACAFNgIYIAEgBDYCFAwCCyABKAJAIQAgAUEANgJAIAEoAjwhAiABQQA2ApwBIAEgADYCmAEgASADNgKUASABIAIgAEEcbGo2ApABIAEgAjYCjAEgAUEMaiABQYwBahDABwsgASgCFCEECyABQTRqELchIAQNAAsgASgCECEFIAEoAgwhAwwBC0EEQRwQjSQACyADIAVBBEEcENUTCyABQaABaiQAC6YFAgx/An4jAEGgAWsiAyQAQQAhBCADQQBB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AAsgA0EBaiEGIAMgBEcNAAsgACgCBCIDIANBAWpBA3ZBB2wgA0EISRshAwsgACADIAAoAgxrNgIIC/QFAwJ/An4BfCMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQCABKAIADgQAAwECAAsgAiABKQMIIgQ3AwggAiACQQhqEIoUIAIoAgAgAigCBBD8GCEFAkAgBEIDg0IAUg0AIASnIgEgASgCACIDQX9qNgIAIANBAUcNACABIAEoAhAQ3h4LIABCADcDGCAAIAU3AxAgAEEANgIIIABCADcDICAAQRs2AgAMBwsgACABKAIEIgEpAwA3AwAgACABKQMINwMIIAAgASkDEDcDECAAIAEpAxg3AxggACABKQMgNwMgIAAgASkDKDcDKCAAIAEpAzA3AzAgACABKQM4NwM4IAFBwABBCBDOFAwGC0HAABCJASIDRQ0BIANCADcDECADQQM2AgggA0EbNgIAIANCADcDGCADQgA3AyBBwAAQiQEiAUUNAiABIAM2AgQgAUEQNgIAIAFBBToAECABQgA3AwggAEIANwMIIAAgASkDGDcDGCAAIAEpAyA3AyAgACABKQMoNwMoIAAgASkDMDcDMCAAIAEpAzg3AzggACABKQMANwMAIAAgASkDEDcDECABQcAAQQgQzhQMBQsgASsDCCIGIAZiDQICQCAGmUQAAAAAAADwf2ENACAAQgA3AyAgACAGOQMYIABCADcDECAAQQM2AgggAEEbNgIADAULEMobIQQgAEEQaiIBQgA3AwAgACAENwMIIAFCADcABSAAQRo2AgAgBr1Cf1UNBEHAABCJASIBRQ0DIAEgACkDODcDOCABIAApAzA3AzAgASAAKQMoNwMoIAEgACkDIDcDICABIAApAxg3AxggASAAKQMQNwMQIAEgACkDCDcDCCABIAApAwA3AwAgACABNgIEIABBCGoiAUIANwMAIAFBADoACCAAQRA2AgAMBAtBCEHAABCNJAALQQhBwAAQjSQACyAAQgA3AxAgAEKxnIXzBDcDCCAAQgA3ABUgAEEaNgIADAELQQhBwAAQjSQACyACQRBqJAALkAUBAn8CQAJAAkACQAJAAkAgACgCAA4IAAUBAgUFAwQACwJAIAAoAiAiAkEIaigCACIARQ0AIABBDGwhAyACQQRqKAIAIQADQCABIAAoAgAQyAEg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CEHAABCNJAALQQhBwAAQjSQAC9QFAgd/BH4jAEHQAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIADgMAAQIACwJAIAEoAghBA0cNACABKAIMIAAQvQELIAEoAiggABD2DAwJCwJAIAEoAjAiA0UNACADIAAQvQELIAIgAUEQaiIEEPMTIAAoAhQgAhDyBg0BIAIgBBDRDA0CIAQpAwghCSAEKQMQIQogBCkDGCELIAFCADcDGCAEKQMAIQwgAUIBNwMQIAFCADcAHSABQQA2AiggAiALNwMwIAIgCjcDKCACIAk3AyAgAiAMNwMYIAJBOGogAkEYahDnGiACKQM4IQkgAigCRCEFIAIoAkAhBiABQQA2AjAgA0UNAyABKAIMIQcgASgCCCEIIAIgAikDEDcCLCACIAIpAwg3AiQgAiACKQMANwIcQSgQiQEiBEUNBSAEQQA2AgAgBCACKQIYNwIEIAQgAikCIDcCDCAEIAIpAig3AhQgBCACKAIwNgIcIARBADYCIEEoEIkBIgBFDQYgACAHNgIQIAAgCDYCDCAAIAM2AgggACAENgIEIABBBDYCAAwECyABKAIEIAAQ9gwMBwsgAikDACIJQgODQgBSDQYgCaciASABKAIAIgBBf2o2AgAgAEEBRw0GIAEgASgCEBDeHgwGCyACKQMAIglCA4NCAFINBSAJpyIBIAEoAgAiAEF/ajYCACAAQQFHDQUgASABKAIQEN4eDAULIAIgAikDEDcCLCACIAIpAwg3AiQgAiACKQMANwIcQSgQiQEiAEUNAyAAQQA2AgAgACACKQIYNwIEIAAgAikCIDcCDCAAIAIpAig3AhQgACACKAIwNgIcIABBADYCIAsgARDJESABIAA2AiggASAFNgIcIAEgBjYCGCABIAk3AxAgAUEANgIIIAFBADYCAAwDC0EIQSgQjSQAC0EIQSgQjSQAC0EIQSgQjSQACyACQdAAaiQAC84FAgx/AX4jAEEwayICJAAgAUGwAWohAyABKAKwASEEAkAgAS0AuAFBFkcNACABKAKIASEFIAFBCzYCiAECQAJAIAVBC0YNACABQYwBaiEGIAIgASgCoAE2AiggAiABKQKYATcDIAJAIAEoAghBCkYNACABQQhqELULCyABIAU2AgggASAGKQIANwIMIAEgBigCCDYCFAwBCyAC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QANAIAJBJEYNASAJIAJqIgQoAgAhASAEIANBCGogAmoiCigCADYCACAKIAE2AgAgAkEEaiECDAALCyADQQhqENsOIAAgBTYCBCAAIAc2AgAgA0HgAGokAA8LQQRBGBCNJAALhgUBBn9BBCECAkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRFDQNBCCECCyABIAAgAmooAgAQ3QwPCwJAIAAoAgQiAy0AbEECRw0AIANBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgA0GEAWooAgAiAEUNACADQYABaigCACICIABB2ABsaiEEA0BBBCEFAkACQCACKAIAIgBBBUYNACAAQQRGDQECQAJAAkAgAA4EBAIAAQQLAkAgAigCBCIGLQBsQQJHDQAgBkHAAGohAANAIAAoAhgiAC0ALEECRg0ACwsgBkGQAWohBwJAIAZBhAFqKAIAIgBFDQAgAEHYAGwhBSAGQYABaigCACEAA0ACQAJAIAAoAgBBBUcNACABIABBBGooAgAQ3QwMAQsgACABENkGCyAAQdgAaiEAIAVBqH9qIgUNAAsLIAcgARCZCCAGLQA8IgBBBkYNAyAAQQJHDQMgBkEQaiEAA0AgACgCGCIALQAsQQJGDQAMBAsLIAJBDGooAgAiAEUNAiAAQShsIQUgAkEIaigCACEAA0AgACABEKEFIABBKGohACAFQVhqIgUNAAwDCwtBCCEFIAIoAgRFDQELIAEgAiAFaigCABDdDAsgAkHYAGoiAiAERw0ACwsCQCADQZgBaigCACIARQ0AIABBKGwhAiADQZQBaigCACEAA0AgASAAEPAGIABBKGohACACQVhqIgINAAsLIAMtADwiAUEGRg0BIAFBAkcNASADQRBqIQEDQCABKAIYIgEtACxBAkYNAAwCCwsgACgCDCICRQ0AIAJBKGwhAiAAKAIIIQADQCAAIAEQoQUgAEEoaiEAIAJBWGoiAg0ACwsLhgUBBn9BBCECAkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRFDQNBCCECCyABIAAgAmooAgAQyAEPCwJAIAAoAgQiAy0AbEECRw0AIANBwABqIQADQCAAKAIYIgAtACxBAkYNAAsLAkAgA0GEAWooAgAiAEUNACADQYABaigCACICIABB2ABsaiEEA0BBBCEFAkACQCAC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/35xQYCAgIABcjYCeCADIAo2ApgBIAMgBzYClAEgAyAINgKQASADQdgAaiABIAlBASADQZABahBDIAEgADYCeAJAIAMoAlhBE0cNACADIAMoAlw2AgQgA0ETNgIADAELIAMgA0HYAGpBMPwKAAALIAMoAgQhByADKAIAIgpBE0YNAiADQTBqIAVBKPwKAAACQCACKAIIIgAgAigCAEcNACACEK4aCyACKAIEIABBMGxqIgggBzYCBCAIIAo2AgAgCEEIaiADQTBqQSj8CgAAIAIgAEEBajYCCAwACwtBACEHCyADQaABaiQAIAcLvgQCA38FfiMAQZABayIDJAACQCACQoCAgICAgICAwABaDQAgACACQgGGWg0AAkACQCACIAJCf3wiBoNQDQAgAiACeaciBEF+aiIFrSIHhiIIQoCAgICAgICAIFgNAiAIQoCAgICAgICAwABaDQIgACAIQgGGIglaDQIgA0GAAWpCAEKAgICAgICAgIB/IAl9IgIgCUIAEOIcIANB8ABqIAMpA4ABIgYgAykDiAEiCiAJQgAQ6BEgA0HgAGogBiAKQgGEIABCAYZCABDoESACIAMpA3h9IAMpA3AiAkIAUq19IQZCACACfSEKIAMpA2ghAiADKQNgIQACQCAFIAFqIgVBPk0NAAJAIAEgBGpBv39qIgFBP25BAXENACADQdAAaiAKIAYgAkIAEOgRIAVBQWohBSADKQNYIABCAYh8IQIgAykDUCEACyABQT9JDQADQCADQcAAaiAKIAYgAkIAEOgRIANBMGogCiAGIABCAYggAykDSHxCABDoESADKQM4IAMpA0BCAYh8IQIgAykDMCEAIAVBgn9qIgVBPksNAAsLIANBIGogACACIAUQthYgA0EQaiAKIAYgAiAFQT9zrYhCABDoESADIAMpAxggAykDKEL///////////8Ag3wgAykDECICIAMpAyBCfoN8IAJUrXxCAnxCACAJQgAQ6BEgAykDCCICQgAgCCAIIAJWG30gB4ghAgwBC0IAIQIgAUHAAE8NACAGIAAgAa2GgyECCyADQZABaiQAIAIPCwALjgQBCH8gASAAIABBA2pBfHEiAmsiA2oiBEEDcSEFQQAhAUEAIQYCQCAAIAJGDQBBACEGA0AgBiAALAAAQb9/SmohBiAAQQFqIQAgA0EBaiIDDQALCwJA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IAJBUGoiAg0ACwsCQCADKAI8IgFFDQAgAUEIaigCACICRQ0AIAJBMGwhAiABQQRqKAIAQSRqIQEgAEEMaiEFA0ACQCABQWRqKQMAIgZCA4NCAFINACAGpyIEIAQoAgAiBEEBajYCACAEQX9MDQMLIAUgBhDgBhoCQCABQXxqKAIAIgRFDQAgBCAAEJYCCwJAIAEoAgAiBEUNACAEIAAQlgILIAFBMGohASACQVBqIgINAAsLAkAgAygCQCIBRQ0AIAEoAgAgABCWAgsPCwAL7gQBBX8jAEEgayICJAACQAJAIAANAEEAIQEMAQsCQCAAKAIAQScgAEEEaiIDKAIAKAIQEQgADQADQAJAAkACQAJAAkACQCABQSJGDQACQCABQYCAxABHDQAgACgCAEEnIABBBGooAgAoAhARCAAhAQwJCwJAAkACQAJAAkACQAJAIAFBJkoNACABQXdqDgUCBAkJAwELIAFBJ0YNBSABQdwARg0EDAgLIAENByACQgA3AQIgAkHc4AA7AQAMBgsgAkIANwECIAJB3OgBOwEADAULIAJCADcBAiACQdzkATsBAAwECyACQgA3AQIgAkHc3AE7AQAMAwsgAkIANwECIAJB3LgBOwEADAILIAJCADcBAiACQdzOADsBAAwBC0GAgMQAIQEgACgCAEEiIAMoAgAoAhARCAANBgwFC0EAIQFBAiEEDAELAkACQAJAIAFB/wVNDQAgARCfCUUNACACQRBqIAEQkQ0gAiACLwAYOwEIIAIgAikAEDcDAAwBCyABENQEDQEgAkEQaiABEJENIAIgAi8AGDsBCCACIAIpABA3AwALIAItABohASACLQAbIQQgAiACLwEIOwEYIAIgAikDADcDECABQf8BcSAEQf8BcUkNAgwDCyACIAE2AgBBgAEhAUGBASEECyACIAIvAQg7ARggAiACKQMANwMQCyAEQf8BcSEFIAFB/wFxIQQgAigCECEGA0AgBiEBAkAgBUGAAUsNACACQRBqIARqLQAAIQELIAAoAgAgASADKAIAKAIQEQgADQMgBSAEQQFqIgRHDQALC0GAgMQAIQEMAAsLQQEhAQsgAkEgaiQAIAELyAQBCn8jAEEgayICJAAgASABKAJoIgNBAWoiBDYCaCABIAEoAlwiBUF/aiIGNgJcIAEgASgCWCIHQQFqIgg2AlggAS0A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IQggAygCHCEJIAEoAnghCgJAAkACQCAEQcwARw0AIApBgAVxDQELIARB8QBHDQEgCkGAAnFFDQELIANBwoCAgHg2AhggASAIIAcgA0EYahDjHQsgACAFOgAUIAAgBjYCECAAIAc2AgwgACAINgIIIAAgCTYCBCAAIAI2AgAgACADLwEUOwAVIAAgAy0AFjoAFyAAQQA2AhgMAgsgAEECOgAUIAAgAjYCAAwBCyABKALEASEEIAEoAsABIQIgA0HLACABEMYNIgs3AwggARDeESADELUbIgw3AxggA0EYaiADQQhqENEMIQUgDBCHIQJAAkAgBQ0AIANCwcrZi8YNNwMYIANBGGogA0EIahDRDEUNAQsgA0GpgICAeDYCGCABIAIgBCADQRhqEJobCyAAQQA2AhggAEEAOgAUIABBADYCECAAIAQ2AgwgACACNgIIIAAgCzcDAAsgA0EwaiQAC7EEARN/IwBBwABrIgIkACABKAIEIQMgAiABKAIIIgRBCEHAABCBDyACKAIEIQUCQAJAAkAgAigCAEEBRg0AIAIoAgghBgJAIAVFDQAgAyAEQQZ0aiEHQQAhCCAFIQkDQCAIIQogAyILIAdGDQEgCygCNCEDIAsoAiwhDCALKAIoIQ0gAiALKAI4Ig5BBEEMEIEPIAIoAgQhDyACKAIAQQFGDQMgAigCCCEQAkAgD0UNACAOQQxsIREgECEIIA8hEgNAIBFFDQEgAygCCCETIAMoAgQhFEHAABCJASIBRQ0GIAIgAygCABBMIAEgAikDODcDOCABIAIpAzA3AzAgASACKQMoNwMoIAEgAikDIDcDICABIAIpAxg3AxggASACKQMQNwMQIAEgAikDCDcDCCABIAIpAwA3AwAgCEEIaiATNgIAIAhBBGogFDYCACAIIAE2AgAgCEEMaiEIIBFBdGohESADQQxqIQMgEkF/aiISDQALCyALQcAAaiEDIApBAWohCCACIAsQiAMgBiAKQQZ0aiIBIA42AjggASAQNgI0IAEgDzYCMCABIAw2AiwgASANNgIoIAEgAikDIDcDICABIAIpAxg3AxggASACKQMQNwMQIAEgAikDCDcDCCABIAIpAwA3AwAgCUF/aiIJDQALCyAAIAQ2AgggACAGNgIEIAAgBTYCACACQcAAaiQADwsgBSACKAIIEOkgAAsgDyACKAII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aiEDAkACQCABQYABSQ0AIAFBgBBJDQECQCABQYCABE8NACADIAFBP3FBgAFyOgACIAMgAUEMdkHgAXI6AAAgAyABQQZ2QT9xQYABcjoAASAAQQMgAmo2AggPCyADIAFBP3FBgAFyOgADIAMgAUEGdkE/cUGAAXI6AAIgAyABQQx2QT9xQYABcjoAASADIAFBEnZBB3FB8AFyOgAAIABBBCACajYCCA8LIAMgAToAACAAQQEgAmo2AggPCyADIAFBP3FBgAFyOgABIAMgAUEGdkHAAXI6AAAgAEECIAJqNgIIC/MDAQR/AkACQAJAAkACQAJAIAAoAgAOBQUAAQMEBQsgACgCBEEBRw0EIAEtAABBAXENBEEIIQIMAQsgAS0AAA0DQQQhAgsgACACaigCACABEJkBDwsCQCAAKAIEIgMtAGxBAkcNACADQcAAaiEAA0AgACgCGCIALQAsQQJGDQALCwJAIANBhAFqKAIAIgBFDQAgA0GAAWooAgAiAiAAQdgAbGohBANAAkACQCACKAIAIgBBBUcNACABLQAADQEgAigCBCABEJkBDAELIABBBEYNAAJAAkACQCAADgQDAAECAwsgAigCBEEBRw0CIAEtAAANAiACKAIIIAEQmQEMAgsgASACKAIEEKgMDAELIAJBDGooAgAiAEUNACAAQShsIQUgAkEIaigCACEAA0AgACABEMIHIABBKGohACAFQVhqIgUNAAsLIAJB2ABqIgIgBEcNAAsLAkAgA0GYAWooAgAiAEUNACAAQShsIQIgA0GUAWooAgAhAANAIAAgARDCByAAQShqIQAgAkFYaiICDQALCyADLQA8IgFBBkYNASABQQJHDQEgA0EQaiEBA0AgASgCGCIBLQAsQQJGDQAMAgsLIAAoAgwiAkUNACACQShsIQIgACgCCCEAA0AgASAAELoFIABBKGohACACQVhqIgINAAsLC/kDAQR/AkACQAJAAkACQCAAKAIADgUEAAECAwQLIAAoAgRBAUcNAyAAKAIIIAEQvAEPCyAAKAIEIAEQvAEPCyAAKAIEIgJBwABqIAEQlRMCQCACQYQBaigCACIARQ0AIABB2ABsIQMgAkGAAWooAgAhAANAAkACQAJAIAAoAgBBfGoOAgIAAQsgAEEEaigCACABELwBDAELIAAgARDPBgsgAEHYAGohACADQah/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CiABQZLymgFBASAEEQwADQMgACgCyAIhCkEAIQcDQCADIAc2AiggAyAKKAIANgIsIANBPTYCHCADQT02AhQgAyADQSxqNgIYIAMgA0EoajYCECABIAJB9JuFASADQRBqEMYGDQMgCkEEaiEKIAYgB0EBaiIHRg0CDAALC0Gk6YQBELAjAAsgAUGS8poBQQEgBBEMAA0AIANBnwE2AhQgAyAANgIQQQEhCiABIAJBkLSBASADQRBqEMYGDQEgAUHym4UBQQIgBBEMACEKDAELQQEhCgsgA0EwaiQAIAoLhgQBAX8jAEEwayIDJAACQAJAAkACQAJAAkACQCACQX1qDgYBBAIEBAMACyACQQ5HDQMgASkAAELEyo3L1q2Ytt8AhSABQQZqKQAAQuy+uarXzdiy8gCFhFBFDQMgA0EgakGs8okBQaz2iQEQ4wwgACADQSBqEMcYDAULIAEvAABBwdwBcyABQQJqLQAAQfkAc3JB//8DcQ0CIANBIGpB1PKWAUHc8pYBEOMMIAAgA0EgahDHGAwECyABKAAAQcGmjcoEcyABQQRqLQAAQckAc3JFDQIMAQsgASkAAELB5s3L9szbsuQAUg0AIANBIGpBvfWFAUEKEI4IIAMtACQhAQJAIAMoAiAiAkGAgICAeEcNACAAQYCAgIB4NgIAIAAgAToABAwDCyADIAMoACw2ABwgAyADKQAlNwAVIAMgAToAFCADIAI2AhAgA0EQahDUBSAAIAMpAhg3AgggACADKQIQNwIADAILIANBCGpBhO6WAUElIAEgAhCYDgJAIAMoAggiAUUNACADQRBqIAEgASADKAIMQQN0ahDjDCADQSBqIANBEGoQxxggAygCIEGAgICAeEYNACAAIAMpAig3AgggACADKQIgNwIADAILIABBgICAgHg2AgAgAEEBOgAEDAELIANBIGpB3PKWAUHk8pYBEOMMIAAgA0EgahDHGAsgA0EwaiQAC74DAQl/AkACQCAAKAIYIgIgACgCACIDRg0AIAIgA0khBAwBCyAAKAIkIAAoAgxJIQQLAkACQCAAKAJIIgIgACgCMCIDRg0AIAIgA0khBQwBCyAAKAJUIAAoAjxJIQULIABBMEHIACAFG2ohAyAAIARBAXNBGGxqIQICQAJAIABByABBMCAFG2oiBSgCACIGIAAgBEEYbGoiBygCACIA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KAK0ASEGIANBBGogBRCyJSADQY8CrUIghkGC9ZoBrYQ3AyggA0EQakHNlYABIANBKGoQyAggAyADKQIENwIcIAMgAygCDDYCJCAEIAYgA0EQahCzGyEFAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQYCAgIB4NgIAIAAgBTYCBAwBCyADKAIYIQIgAEEANgIUIAAgBDYCDCAAIAI2AgggACAFNgIEIAAgBjYCACAAIAEoAqwBNgIQCyADQTBqJAALvQMBBX8jAEEQayICJAAgACgCACEAAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyAALQA5IQMgAEEBOgA5IAEoAgggABB3IAAgAzoAOQwDCyAALQA5IQMgAEEBOgA5IAEoAgQgABB3IAAgAzoAOQwCCyAAIAEoAgQiBEHAAGoQkgogACAEQfwAahCSDwJAIAQoAngiAUUNACAALQA0QQFHDQAgAC0AOiEFIAAtADkhBiAAQYECOwA5AkAgASgCCCIDRQ0AIANBAnQhAyABKAIEIQEDQAJAIAAtADRBAUcNACAAQYECOwA5IAEoAgAgABCOAiAAQYECOwA5CyABQQRqIQEgA0F8aiIDDQALCyAAIAU6ADogACAGOgA5CyAEQZQBaigCACEBIARBmAFqKAIAIQMgAiAANgIMAkAgA0UNACADQShsIQMDQCACQQxqIAEQqQggAUEoaiEBIANBWGoiAw0ACwsgBC0APEEGRg0BIAAgBEEQahCSCgwBCyABKAIMIgNFDQAgA0EobCEDIAEoAgghAQNAIAEgABCFECABQShqIQEgA0FYaiIDDQALCyACQRBqJAALswMBAn8CQAJAAkAgACgCACICQQRGDQACQAJAAkAgAg4EAwABAgMLIAAoAgRBAUcNAiABLQAEQQFHDQICQAJAIAAoAggiAigCACIAQXRqQQcgAEELSxtBcmoOAwYAAQULIAIoAghBBUYNBQwECyACKAIMRQ0DIAFBADoABA8LAkAgACgCBCIDLQBsQQJHDQAgA0HAAGohAANAIAAoAhgiAC0ALEECRg0ACwsCQCADQYQBaigCACIARQ0AIABB2ABsIQIgA0GAAWooAgAhAANAAkACQCAAKAIAQQVHDQAgAUEAOgAEDAELIAAgARCqCAsgAEHYAGohACACQah/aiICDQAL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LEUNAEH0ABCJASIBRQ0DIAEgA0HkAWpB9AD8CgAAIANBhoDEADYC2AIgAyABNgLcAiADQcABaiADQdgCahCxCSAAQQRqIANBwAFqQST8CgAAIABBiYDEADYCAAwBCyAAIANB5AFqQfQA/AoAACADQcABahCJGwsgBCAEKAIgQQFqNgIgIANBsANqJAAPC0G41YkBEPMdAAtBBEH0ABCNJAALpwMBA38jAEEQayICJAAgACgCACEDAkACQAJAAkACQCABKAIADgUEAAECAwQLIAEoAgRBAUcNAyABKAIIIAMQvAEMAwsgASgCBCADELwBDAILIAEoAgQiBEHAAGogAxCVEwJAIARBhAFqKAIAIgBFDQAgAEHYAGwhASAEQYABaigCACEAA0ACQAJAAkAgACgCAEF8ag4CAgABCyAAQQRqKAIAIAMQvAEMAQsgACADEJ4JCyAAQdgAaiEAIAFBqH9qIgENAAsLAkAgBCgCeCIARQ0AIABBCGooAgAiAUUNACABQQJ0IQEgAEEEaigCACEAA0AgACgCACADEJYCIABBBGohACABQXxqIgENAAsLAkAgBEGYAWooAgAiAEUNACAAQShsIQEgBEGUAWooAgAhAANAIAAgAxDDByAAQShqIQAgAUFYaiIBDQALCyAELQA8QQZGDQEgBEEQaiADEJUTDAELIAEoAgghACABKAIMIQEgAiADNgIMIAFFDQAgAUEobCEDA0AgAkEMaiAAELcIIABBKGohACADQVhqIgMNAAsLIAJBEGokAAuWAwEDfyMAQRBrIgMkAAJAAkAgAg0AIABBAjoAAAwBCwJAAkACQAJAIAEsAAAiBEF/Sg0AAkAgBEFASQ0AAkACQAJAIARBYE8NAEECIQUMAQsgBEFwTw0BQQMhBQsgBSACTQ0EDAULIARBeEkNAgsgACAEOgABIABBAToAAAwECyAAIARB/wFxNgIEIABBADoAAAwDC0EEIQUgAkEESQ0BCyADQQRqIAEgBRDMBQJAIAMoAgRBAUcNACAAIAQ6AAEgAEEBOgAADAILAkAgAygCDEUNAAJAAkAgAygCCCIBLAAAIgJBf0wNACACQf8BcSECDAELIAEtAAFBP3EhBCACQR9xIQUCQCACQV9LDQAgBUEGdCAEciECDAELIARBBnQgAS0AAkE/cXIhBAJAIAJBcE8NACAEIAVB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BkEAIQADQAJAAkACQAJAIAYgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAS0AAEEBcQ0AIAJBDGooAgAgARCZAQsgAkEoaigCACABEOMJDAILIAJBMGooAgAiAkUNASABLQAAQQFxDQEgAiABEJkBDAELIAJBBGooAgAgARDjCQsgBSAAQThqIgBHDQAMAwsLIAMoAgQgARDjCSABLQAADQEgAygCCCABEJkBDAELIAEtAAANACADKAIEIAEQmQELAkAgAygCMCIARQ0AIAEtAABBAXENACAAIAEQmQELIANBOGoiAyAERw0ACwsLoQMBBX8CQCAAKAIIIgJFDQAgACgCBCIDIAJBOGxqIQQDQAJAAkACQAJAAkACQCADKAIADgcFAAECAwUEBQsgA0EMaigCACIARQ0EIABBKGwhAiADQQhqKAIAIQADQAJAIAAoAgBBB0YNACAAIAEQ4wkLIABBKGohACACQVhqIgINAAwFCwsgAygCBCABEOMJDAMLIANBDGooAgAiAEUNAiAAQThsIQUgA0EIaigCACEGQQAhAANAAkACQAJAAkAgBiAAaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACABLQAAQQFxDQAgAkEMaigCACABEJkBCyACQShqKAIAIAEQ4wkMAgsgAkEwaigCACICRQ0BIAEtAABBAXENASACIAEQmQEMAQsgAkEEaigCACABEOMJCyAFIABBOGoiAEcNAAwDCwsgAygCBCABEOMJIAEtAAANASADKAIIIAEQmQEMAQsgAS0AAA0AIAMoAgQgARCZAQsCQCADKAIwIgBFDQAgAS0AAEEBcQ0AIAAgARCZAQsgA0E4aiIDIARHDQALCwulAwIFfwF+AkACQCAAQoCAgIAQWg0AIAEhAiAAIQcMAQsgAUF4aiICIABCgMLXL4AiB0KAvqjQD34gAHynIgNBkM4AbiIEQZDOAHAiBUH//wNxQeQAbiIGQQF0LwCwq5gBOwAAIAFBfGogAyAEQZDOAGxrIgNB//8DcUHkAG4iBEEBdC8AsKuYATsAACABQXpqIAUgBkHkAGxrQf//A3FBAXQvALCrmAE7AAAgAUF+aiADIARB5ABsa0H//wNxQQF0LwCwq5gBOwAACyACQXxqIQIgB6chAQJAAkADQAJAIAFBj84ASw0AIAJBBGoh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IAUpAAAgB4UiB0IgiH5CIIkgBkIgiCAHQv////8Pg36FIQYgCCEHIARBEGoiBCADSQ0ACyAAIANqIgQpAAggBoUhBiAEKQAAIAiFIQcMAQsCQCABQQdLDQACQAJAIAFBA0sNACABDQFC05GMrYjR2p8kIQdCxObBm+DF4owTIQYMAwsgADUAAELTkYytiNHanySFIQcgACABakF8ajUAAELE5sGb4MXijBOFIQYMAgsgACABakF/ajEAAEIIhiAAIAFBAXZqMQAAhELE5sGb4MXijBOFIQYgADEAAELTkYytiNHanySFIQcMAQsgACkAAELTkYytiNHanySFIQcgACABakF4aikAAELE5sGb4MXijBOFIQYLIAIgAigCACAHQv////8PgyAGQiCIfiABrYUgB0IgiCAGQv////8Pg35CIImFIganakHdy92eeWwgBkIgiKdqQcnB+P0AbEGj7rmcBGo2AgAL/QICBn8DfgJAIAAoAgwNAEEADwsCQCABKQMAIghCA4NCAFINACAIpykDCCEICyAIp0Hdy92eeWwgCEIgiKdqQd3L3Z55bCABKAIIIgJqQd3L3Z55bCEDAkAgASkDECIIQgODQgBSDQAgCKcpAwghCAsgAUEQaiEEIAMgCKdqQd3L3Z55bCAIQiCIp2pB3cvdnnlsQQ93IgVBGXatQoGChIiQoMCAAX4hCSAAKAIAIQMgACgCBCEGQQAhBwJAA0ACQCADIAUgBnEiBWopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MiCFANAANAAkAgASADQQAgCHqnQQN2IAVqIAZxa0EobGoiAEFYahDRDEUNACACIABBYGooAgBHDQAgBCAAQWhqENEMDQQLIAhCf3wgCIMiCFBFDQALC0EAIQAgCiAKQgGGg0KAgYKEiJCgwIB/g1BFDQEgBSAHQQhqIgdqIQUMAAsLIABBcGpBACAAGwvaAgEIfyACIAFBDGxBdGoiA2ohBCAAIANqIQUgACABQQF2IgZBDGxqIgNBdGohBwJAA0ACQCAGDQAgB0EMaiEHAkAgAUEBcUUNACACIAAgAyAAIAdJIgQbIgYoAgg2AgggAiAGKQIANwIAIAMgACAHT0EMbGohAyAAIARBDGxqIQALAkAgACAHRw0AIAMgBUEMakYNAwsQpCMACyAC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IAEQvAEMAQsgACABEM8GCyAAQdgAaiEAIANBqH9qIgMNAAsLAkAgAigCeCIARQ0AIABBCGooAgAiA0UNACADQQJ0IQMgAEEEaigCACEAA0AgACgCACABEJYCIABBBGohACADQXxqIgMNAAsLAkAgAkGYAWooAgAiAEUNACAAQShsIQMgAkGUAWooAgAhAANAIAAgARDeByAAQShqIQAgA0FYaiIDDQALCyACLQA8QQZGDQEgAkEQaiABEJUTDwsgACgCDCIDRQ0AIANBKGwhAyAAKAIIIQADQCAAIAEQwwcgAEEoaiEAIANBWGoiAw0ACwsL0gIBBX9BACEBQQBBECAAQaudBEkbIgIgAkEIciICIAJBAnQoApSYggFBC3QgAEELdCICSxsiAyADQQRyIgMgA0ECdCgClJiCAUELdCACSxsiAyADQQJyIgMgA0ECdCgClJiCAUELdCACSxsiAyADQQFqIgMgA0ECdCgClJiCAUELdCACSxsiAyADQQFqIgMgA0ECdCgClJiCAUELdCACSxsiA0ECdCgClJiCAUELdCIEIAJGIAQgAklqIANqIgNBAnQiAkGUmIIBaiEFIAIoApSYggFBFXYhAkH/BSEEAkACQCADQR9LDQAgBSgCBEEVdiEEIANFDQELIAVBfGooAgBB////AHEhAQsCQCAEIAJBf3NqRQ0AIAAgAWshAyAEQX9qIQRBACEAA0AgACACQY/2gQFqLQAAaiIAIANLDQEgBCACQQFqIgJHDQALCyACQQFxC9ICAQV/QQAhAUEAQRkgAEG51AVJGyICIAJBDWoiAiACQQJ0KALIloIBQQt0IABBC3QiAksbIgMgA0EGaiIDIANBAnQoAsiWggFBC3QgAksbIgMgA0EDaiIDIANBAnQoAsiWggFBC3QgAksbIgMgA0ECaiIDIANBAnQoAsiWggFBC3QgAksbIgMgA0EBaiIDIANBAnQoAsiWggFBC3QgAksbIgNBAnQoAsiWggFBC3QiBCACRiAEIAJJaiADaiIDQQJ0IgJByJaCAWohBSACKALIloIBQRV2IQJB7wshBAJAAkAgA0ExSw0AIAUoAgRBFXYhBCADRQ0BCyAFQXxqKAIAQf///wBxIQELAkAgBCACQX9zakUNACAAIAFrIQMgBEF/aiEEQQAhAANAIAAgAkGg6oEBai0AAGoiACAD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IgEoAiANAiABQX82AiACQCABKAIsIgUgASgCJEcNACABQSRqEKIaCyABKAIoIAVBmAFsaiIGIAQ2AgAgBkEEaiADQewCakHAAPwKAAAgBkHEAGogA0G8AmpBMPwKAAAgBkH0AGogAkEk/AoAACABIAVBAWo2AiwgASABKAIgQQFqNgIgIABBBGogA0GsA2pBJPwKAAAgAEEiNgIACyADQdADaiQADwsgA0EMakGk04kBQbjTiQEQuBwAC0Go04kBEPMdAAuKAwEFfyMAQSBrIgIkACACQQhqIAEQzAEgAigCDCEDAkACQCACKAIIQQFHDQAgAEEANgIAIAAgAzYCBAwBCwJAAkAgAygCAEEtRg0AAkACQAJAAkAgAS0AgQFBIHFFDQAgAS0AuAFB/wFxQRJGDQELIABBADYCBAwBCyACIAEQqAMgAigCBCEEAkAgAigCAEEBRw0AIABBADYCACAAIAQ2AgQgAygCAEEtRw0CDAQLIAEoAogBIQUgAUELNgKIAQJAAkAgBUELRg0AIAFBjAFqIQYgAiABKAKgATYCGCACIAEpApgBNwMQAkAgASgCCEEKRg0AIAFBCGoQtQsLIAEgBTYCCCABIAYpAgA3AgwgASAGKAIINgIUDAELIAJBEGogARDOAQsgASACKAIYNgK4ASABIAEpA7ABNwOoASABIAIpAxA3ArABIAAgBDYCBAsgACADNgIADAMLIAMQiQIMAQsgACADKQIENwIAIANBwABBCBDOFAwBCyADQcAAQQgQzhQLIAJBIGokAAv1AgEFfwJAIAAoAggiAkUNACAAKAIEIgMgAkE4bGohBANAAkACQAJAAkACQAJAIAMoAgAOBwUAAQIDBQQFCyADQQxqKAIAIgBFDQQgAEEobCECIANBCGooAgAhAANAAkAgACgCAEEHRg0AIAAgARDHCgsgAEEoaiEAIAJBWGoiAg0ADAULCyADKAIEIAEQxwoMAwsgA0EMaigCACIARQ0CIABBOGwhBSADQQhqKAIAIQZBACEAA0ACQAJAAkACQCAGIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARC6AQsgAkEoaigCACABEMcKDAILIAJBMGooAgAiAkUNASACIAEQugEMAQsgAkEEaigCACABEMcKCyAFIABBOGoiAEcNAAwDCwsgAygCBCABEMcKIAMoAgggARC6AQwBCyADKAIEIAEQugELAkAgAygCMCIARQ0AIAAgARC6AQsgA0E4aiIDIARHDQALCwv1AgEFfwJAIAAoAggiAkUNACAAKAIEIgMgAkE4bGohBANAAkACQAJAAkACQAJAIAMoAgAOBwUAAQIDBQQFCyADQQxqKAIAIgBFDQQgAEEobCECIANBCGooAgAhAANAAkAgACgCAEEHRg0AIAAgARDHCgsgAEEoaiEAIAJBWGoiAg0ADAULCyADKAIEIAEQxwoMAwsgA0EMaigCACIARQ0CIABBOGwhBSADQQhqKAIAIQZBACEAA0ACQAJAAkACQCAGIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARC6AQsgAkEoaigCACABEMcKDAILIAJBMGooAgAiAkUNASACIAEQugEMAQsgAkEEaigCACABEMcKCyAFIABBOGoiAEcNAAwDCwsgAygCBCABEMcKIAMoAgggARC6AQwBCyADKAIEIAEQugELAkAgAygCMCIARQ0AIAAgARC6AQsgA0E4aiIDIARHDQALCwuLAwEEfyMAQSBrIgMkAAJAAkAgAi0ADCIEQQFHDQAgACABKQIINwIIIAAgASkCADcCACACKAIAIAIoAgQQxyMMAQsCQAJAAkACQAJAAkACQAJAAkAgAS0ADCIFDgMBAAIBCyAAIAItAA86AA8gACACLwANOwANIAAgAikCADcCACAAIAIoAgg2AgggAEECIARrOgAMIAEoAgQhBAwHCyAERQ0BDAILIARFDQELIAEoAgQiBCABKAIIIAIoAgQiBiACKAIIELAcQf8BcQ4CAgMBCyADQRBqIAEgAhCMEiAAIAUgA0EQahD3FwwECyADIAIoAgg2AhggAyACKQIANwMQIANBBGogA0EQaiABEK8eIABBAiAFayADQQRqEPcXDAMLIABBACkCgOODATcCCCAAQQApAvjigwE3AgAgAigCACAGEMcjDAELIAMgASgCCDYCGCADIAEpAgA3AxAgA0EEaiADQRBqIAIQrx4gACAFIANBBGoQ9xcMAQsgASgCACAEEMcjCyADQSBqJAAL4wIBBH8jAEEgayIEJAACQAJAAkACQCACIAEoAgQiBSABIAEoAgAiBkGAgICAeEYiBxsoAghPDQACQAJA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BBCbJCAAIAMoAhA2AgggACADKQIINwIADAMLIAUgAygCHBDpIAALQQAgBCACQZDegwEQiwoACyAFIAQgAkGw3oMBEIsKAAsgA0EgaiQAC/ICAgN/An4jAEEgayIBJAACQAJAAkAgACgCACICRQ0AIAAoAggiAyAAKAIETw0AAkACQAJAAkAgAiADai0AACICQckARg0AIAJBwgBHDQQgACADQQFqNgIIIAEgABCnDyABKAIADQEgACgCECICRQ0CIAJB5MiXAUHUyJcBIAEtAARBAXEiAxtBGUEQIAMbEJoHRQ0CQQIhAgwGCyAAIANBAWo2AghBAiECIABBABCdAkUNBAwFCyAAKAIQRQ0BIAApAgAhBCAAIAEpAgA3AgAgACkCCCEFIAAgASkCCDcCCCABIAU3AxggASAENwMQIAAQvgkhAiAAIAEpAxg3AgggACABKQMQNwIAIAJB/wFxIQIMBAsgACABKQIINwIIIAAgASkCADcCAAtBACECDAILQQJBACAAQQAQnQIbIQIMAQsCQCAAKAIQIgNFDQAgA0Gr7JoBQQEQmgcNAQtBAkEBIAAQwQkbIQILIAFBIGokACACC4QDAQR/IwBBMGsiAyQAAkACQCACLQAMIgRBAUcNACAAIAEpAgg3AgggACABKQIANwIADAELAkACQAJAAkACQAJAAkACQAJAIAEtAAwiBQ4DAQACAQsgAyACEJ4gIAAgAykCADcCACADQQIgAy0ADGs6AAwgACADKQIINwIIIAEoAgQhBAwHCyAERQ0BDAILIARFDQELIAEoAgQiBCABKAIIIAIoAgQiBiACKAIIIgIQsBxB/wFxDgICAwELIAMgASgCCDYCCCADIAEpAgA3AwAgA0EUaiADIAIoAgQgAigCCBCrDSAAIAUgA0EUahD3FwwECyADIAEoAgg2AgggAyABKQIANwMAIANBFGogBiACIAMQjAkgAEECIAVrIANBFGoQ9xcMAwsgAEEAKQKA44MBNwIIIABBACkC+OKDATcCAAwBCyADIAEoAgg2AiggAyABKQIANwMgIANBIGogBiACELEhIAAgBSADQSBqEPcXDAELIAEoAgAgBBDHIwsgA0EwaiQAC/0CAQN/IwBBwABrIgMkACADIAE2AhggAyACKQIANwIcIAMgAigCCDYCJCADQRxqIQICQAJAIAEtAMgB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BQwGCwJAIAdQDQAgACgCECICRQ0AIAJB36aYAUECEJoHDQQLQQEhAiAAIAAoAhRBAWo2AhQgB0IBfCEHIABCARC8DUUNAAwFCwsgABC3BiECDAMLIABBn+6aAUEBEJoHIQIMAgtBASECDAELIAAQtwYhAiAAIAAoAhQgBqdrNgIUCyABQRBqJAAgAgv9AgIFfwF+IwBBMGsiAyQAIAEoArABIQQCQAJAIAEtALgBIgVB+ABHDQAgAUGwAWohBSABKAKIASEGIAFBCzYCiAECQAJAIAZBC0YNACABQYwBaiEHIAMgASgCoAE2AhggAyABKQKYATcDEAJAIAEoAghBCkYNACABQQhqELULCyABIAY2AgggASAHKQIANwIMIAEgBygCCDYCFAwBCyADQRBqIAEQzgELIAEpA7ABIQggBSADKQMQNwIAIAUgAygCGDYCCCABIAg3A6gBIAAgAUEBIAQgAhDtCgwBCyABKAK0ASEGIANBBGogBRCyJSADQY8CrUIghkHkgpsBrYQ3AyggA0EQakHNlYABIANBKGoQyAggAyADKQIENwIcIAMgAygCDDYCJCAEIAYgA0EQahCzGyEFAkAgAS0AuAFBogFHDQAgASABEO8NEIYJCyAAQQg2AgAgACAFNgIEIAIoAgQiASACKAIIENodIAIoAgAgARDnIwsgA0EwaiQAC+cCAQR/AkAgASgCCCICRQ0AIAEoAgQiAyACQdgAbGohBANAAkACQAJAAkACQAJAAkAgAygCAA4GBgECAwYABgsgAC0AJCEFIABBAjoAJCAALQAlIQEgACADKAIEIgIQ5gEgAiAAEFQgACABOgAlIABBAjoAJCAAIAIQuAEgACABOgAlIAAgBToAJAwFCyADKAIEQQFHDQQgAygCCCEBIAAtACQiAg0DIAEoAgAiBUF0akEHIAVBC0sbQXtqIgVBH0sNAkEBIAV0Qa6igIB4cQ0DIAUNAiABLQARDQIMAwsgA0EEaiAAENMJDAMLIANBDGooAgAiAUUNAiABQShsIQIgA0EIaigCACEBA0AgASAAEO4GIAFBKGohASACQVhqIgINAAwDCwsgAEEDOgAkCyAALQAlIQUgACABEOYBIAEgABBUIAAgBToAJSAAIAI6ACQgACABELgBCyADQdgAaiIDIARHDQALCwvYAgICfwF+IwBBIGsiAyQA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IANBfmoiA2ogCKciACAAQf//A3FB5ABuIgBB5ABsa0H//wNxQQF0LwCwq5gBOwAAIACtIQgLAkACQCAGUA0AIAhQDQELIAJBDGogA0F/aiIDaiAIp0EBdC0AsauYAToAAAsgASAGQn9VQQFBACACQQxqIANqQRQgA2sQyQYhAyACQSBqJAAgAwuDAwEBfyMAQZABayICJAAgAkGwoYUBNgKIASACQayphQE2AoABIAJBrKmFATYCeCACQayphQE2AnAgAkHMqYUBNgJoIAJBzKmFATYCYCACQayphQE2AlggAkGsqYUBNgJQIAJBlJmFATYCSCACQcyphQE2AkAgAkHMqYUBNgI4IAJB0K6FATYCMCACQYihhQE2AiggAkGsqYUBNgIgIAJBrKmFATYCGCACQZylhQE2AhAgAiAANgJEIAIgAEHBAGo2AnwgAiAAQcAAajYCdCACIABBP2o2AmwgAiAAQSBqNgJkIAIgAEEYajYCXCACIABBPmo2AlQgAiAAQT1qNgJMIAIgAEEQajYCPCACIABBCGo2AjQgAiAAQcIAajYCLCACIABBKGo2AiQgAiAAQTxqNgIcIAIgAEE7ajYCFCACIABBOmo2AgwgAiAAQThqNgKMASACIAJBjAFqNgKEASABQZihhQFBBkHgr4UBQRAgAkEMakEQELkLIQAgAkGQAWokACAAC9MCAgN/AX4CQAJAIAApAzBCAFINACAAKQM4IgRCA4NCAFINASAEpyIBIAEoAgAiAkF/ajYCACACQQFHDQEgASABKAIQEN4eDAELIABBMGoQ8RILAkAgACgCACIBQQRGDQACQAJAAkACQCABDgQBAgMAAQsgACgCCCEDAkAgACgCDCICRQ0AIAMhAQNAIAEQ6wwgAUEoaiEBIAJBf2oiAg0ACwsgACgCBCADQQhBKBDNEw8LIABBCGoQrRIPCyAAKAIERQ0BIAAoAggiARCcASABQcAAQQgQzhQPCyAAKAIEIgBBwABqEJINIABBlAFqKAIAIQECQCAAKAKYASICRQ0AA0AgARDrDCABQShqIQEgAkF/aiICDQALIABBlAFqKAIAIQELIAAoApABIAFBCEEoEM0TAkAgAC0APEEGRg0AIABBEGoQ8hMLIABBoAFBCBDOFAsLxAICA38BfiMAQRBrIgMkACABKAIsIQQgA0EIaiACIAEo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AEEIEM4UIABBDEEEEM4UDAMLIARBCGoQ3xQMAgsgBEEIaiIGKAIAIQACQCAEKAIMIgVFDQADQAJAIAAoAgBBB0YNACAAEJwICyAAQShqIQAgBUF/aiIFDQALIAYoAgAhAAsgBCgCBCAAQQhBKBDNEyAEKAIYIgBFDQEgACgCACIFENoCIAVB4ABBCBDOFCAAQQxBBBDOFAwBCyAEKAIEIgAQnAggAEEoQQgQzhQgBCgCGCIARQ0AIAAoAgAiBRDaAiAFQeAAQQgQzhQgAEEMQQQQzhQLIANBAWoiAyABRw0ACwsL6QICBX8CfiMAQRBrIgIkAAJAIAEoArABIgMgASgCbCIESQ0AIAEoArQBIgUgASgCcEsNACABKAJgIAMgBGtqIAUgA2sQ+xghByABKQMIIQggAUEKNgIIIAIgASkDEDcDCCACIAg3AwACQAJAIAinIgRBCkYNACAEQQRGDQEgAhC1CwtBrPOaAUEoQfyHmwEQpCEACyABQbABaiEEIAIpAwghCCABKAKIASEGIAFBCzYCiAECQAJAIAZBC0YNACABIAY2AgggASABKQKMATcCDCABIAEoApQBNgIUIAIgASgCoAE2AgggAiABKQKYATcDACADIQYMAQsgAiABEM4BIAEoArQBIQUgASgCsAEhBgsgASAFNgKsASABIAY2AqgBIAQgAikDADcCACAEIAIoAgg2AgggACAFNgIMIAAgAzYCCCAAIAc3AxAgACAINwMAIAJBEGokAA8LQYiOmwFB1gBB4I6bARCkIQAL7wIBA38jAEEQayIBJAACQAJAAkACQCAALQC4AUF6ag4CAQACCyAAKAKIASECIABBCzYCiAECQAJAIAJBC0YNACAAQYwBaiEDIAEgACgCoAE2AgggASAAKQKYATcDAAJAIAAoAghBCkYNACAAQQhqELULCyAAIAI2AgggACADKQIANwIMIAAgAygCCDYCFAwBCyABIAAQzgELIAAgASgCCDYCuAEgACAAKQOwATcDqAEgACABKQMANwKwAUEAIQAMAgsgACgCiAEhAiAAQQs2AogBAkACQCACQQtGDQAgAEGMAWohAyABIAAoAqABNgIIIAEgACkCmAE3AwACQCAAKAIIQQpGDQAgAEEIahC1CwsgACACNgIIIAAgAykCADcCDCAAIAMoAgg2AhQMAQsgASAAEM4B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ASAAEL8UIQMgABCSECAAIAMQhgkMAQsgACgCiAEhASAAQQs2AogBAkACQCABQQtGDQAgAEGMAWohAyACIAAoAqABNgIYIAIgACkCmAE3AxACQCAAKAIIQQpGDQAgAEEIahC1CwsgACABNgIIIAAgAykCADcCDCAAIAMoAgg2AhQMAQsgAkEQaiAAEM4BCyAAIAIoAhg2ArgBIAAgACkDsAE3A6gBIAAgAikDEDcCsAFBACEBCyACQTBqJAAgAQvGAgEBfwJAAkACQAJAAkACQCAADgMAAQIACyABLQAYDQIMAwsgAi0AJQ0DIAEoAgghACABKAIEIQEgAi0AJCEDIAJBADoAJAJAIABFDQAgAEE4bCEAA0ACQAJAIAEoAgANACACIAFBCGoQ0Q4MAQsgASACEIkLCyABQThqIQEgAEFIaiIADQALCyACIAM6ACQPCwJAIAEoAgANACACIAFBCGoQ0Q4PCyABIAIQiQsMAgsgAigCIC0ANEUNAQsgAS0AGSEAAkAgAi0AJUEBRw0AIABB/wFxDQELIAItACQhAyACQQBBAiAAQf8BcRs6ACQCQCABKAIIIgBFDQAgAEE4bCEAIAEoAgQhAQNAAkACQCABKAIADQAgAiABQQhqENEODAELIAEgAhCJCwsgAUE4aiEBIABBSGoiAA0ACwsgAiADOgAkDwsLygIBA38CQAJAAkACQANAAkAgACgCACICQQJGDQACQAJAAkAgAg4HAQIABQcGCAELAAsgAEEANgIYDwsgACgCDCICRQ0DIAJBKGwhAiAAKAIIIQADQAJAIAAoAgBBB0YNACAAIAEQowoLIABBKGohACACQVhqIgINAAwECwsgACgCBCEADAALCyAAKAIMIgJFDQAgAkE4bCEDIAAoAgghBEEAIQADQAJAAkACQAJAIAQgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAkEMaigCACABEKYBCyACQShqKAIAIAEQ1QsMAgsgAkEgakEANgIAIAJBMGooAgAiAkUNASACIAEQpgEMAQsgAkEEaigCACABENULCyADIABBOGoiAEcNAAsLDwsgACgCBCABEKMKIAAoAgggARCmAQ8LIAAoAgQgARCmAQviAgEEfyMAQYABayICJAACQAJAAkAgAS0AFEECRg0AIABBGjYCACAAIAEpAxA3AxggACABKQMINwMQIAAgASkDADcDCAwBCyACIAEoAgAiAykDGDcDACACIAMpAyA3AwggAiADKQMoNwMQIAIgAykDADcDGCACIAMpAwg3AyAgAygCFCEEIAMoAhAhBSACQShqIAIQpApBwAAQiQEiAUUNASABIAIpA2A3AzggASACKQNYNwMwIAEgAikDUDcDKCABIAIpA0g3AyAgASACKQNANwMYIAEgAikDODcDECABIAIpAzA3AwggASACKQMoNwMAIABBADYCCCAAIAE2AiggACAENgIkIAAgBTYCICAAQRQ2AgAgAiACKQMYNwJwIAIgAikDIDcCeCAAIAIpAmw3AgwgACACKQJ0NwIUIAAgAigCfDYCHCADQTBBCBDOFAsgAkGAAWokAA8LQQhBwAAQjSQAC68CAgR/A34jAEEgayICJABBFCEDIAApAwAiBiEHAkAgBkLoB1QNAEEUIQMgBiEHA0AgAkEMaiADaiIAQXxqIAciCCAIQpDOAIAiB0KQzgB+faciBEH//wNxQeQAbiIFQQF0LwCwq5gBOwAAIABBfmogBCAFQeQAbGtB//8DcUEBdC8AsKuYATsAACADQXxqIQMgCEL/rOIEVg0ACwsCQCAHQglYDQAgAkEMaiADQX5qIgNqIAenIgAgAEH//wNxQeQAbiIAQeQAbGtB//8DcUEBdC8AsKuYATsAACAArSEHCwJAAkAgBlANACAHUA0BCyACQQxqIANBf2oiA2ogB6dBAXQtALGrmAE6AAALIAFBAUEBQQAgAkEMaiADakEUIANrEMkGIQMgAkEgaiQAIAMLwQIBCn8jAEEQayIBJAACQCAAKAKMBiICIAAoArwDIgNPDQACQCAAKAKwAy0ABEUNACAAKAK4AyACQRRsaiIDKAIIRQ0AIAMoAgQhBCAAKALQAyEFIAAoAtQDIQYgACgCxAMhByAAKALIAyEIIAFBCGogAEG0A2oiCSACQQAgABD4ESAAQfwDaiEKIAEoAgwhACABKAIIIQMDQCADQQFHDQECQAJAAkAgACAITw0AIAcgAEEJbGoiAygAASACRw0CIANBADYAASAERQ0CIAQgCiADLQAAai0AAGoiAyAGTw0BIAUgA0ECdGpBADYCAAwCCyAAIAhBnNaBARDuFgALIAMgBkGs1oEBEO4WAAsgASAJIAJBASAAEPgRIAEoAgQh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AkACQCABKAIAIgANACABQQRqKAIAIAIQ4gQMAQsgAi0AOSEEIAJBAToAOSAAIAIQdyACIAQ6ADkLIAFBDGohASADQXRqIgMNAAsLAkAgAigCBCIBRQ0AIAIoAgAgAigCDBDwDSABIAFBBHRBF2pBcHEiA2pBCWoiAUUNACACKAIAIANrIAFBCBDOFAsgAkEQahDmGCACQeAAaiQAC74CAQN/AkACQAJAAkACQANAAkAgACgCACICQQJGDQACQAJAIAIOBwgBAAQFCAYICwALIAAoAgwiAkUNBiACQShsIQIgACgCCCEAA0ACQCAAKAIAQQdGDQAgACABEMYKCyAAQShqIQAgAkFYaiICDQAMBwsLIAAoAgQhAAwACwsgACgCDCICRQ0DIAJBOGwhAyAAKAIIIQRBACEAA0ACQAJAAkACQCAEIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAEgAkEMaigCABDdDAsgAkEoaigCACABEKMMDAILIAJBMGooAgAiAkUNASABIAIQ3QwMAQsgAkEEaigCACABEKMMCyADIABBOGoiAEcNAAwECwsgACgCBCABEMYKIABBCGohAAwBCyAAQQRqIQALIAEgACgCABDdDAsLvgIBA38CQAJAAkACQAJAA0ACQCAAKAIAIgJBAkYNAAJAAkAgAg4HCAEABAUIBggLAAsgACgCDCICRQ0GIAJBKGwhAiAAKAIIIQADQAJAIAAoAgBBB0YNACAAIAEQxwoLIABBKGohACACQVhqIgINAAwHCwsgACgCBCEADAALCyAAKAIMIgJFDQMgAkE4bCEDIAAoAgghBEEAIQADQAJAAkACQAJAIAQgAGoiAigCAA4DAAECAAsCQCACQQhqKAIAQQNHDQAgAkEMaigCACABELoBCyACQShqKAIAIAEQxwoMAgsgAkEwaigCACICRQ0BIAIgARC6AQwBCyACQQRqKAIAIAEQxwoLIAMgAEE4aiIARw0ADAQLCyAAKAIEIAEQxwogAEEIaiEADAELIABBBGohAAsgACgCACABELoBCwu+AgEDfwJAAkACQAJAAkADQAJAIAAoAgAiAkECRg0AAkACQCACDgcIAQAEBQgGCAsACyAAKAIMIgJFDQYgAkEobCECIAAoAgghAANAAkAgACgCAEEHRg0AIAAgARDICgsgAEEoaiEA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DUIBhoNCAFINAUEBIQcLIAYgCEEIaiIIaiACcSEGDAELC0EBIQkCQCABIAtqLAAAQQBODQAgCyEKDAELIAEpAwBCgIGChIiQoMCAf4N6p0EDdiEKCyAAIAo2AgQgACAJNgIAC60CAQJ/AkAgACgCACICQQRGDQACQAJAAkAgAg4EAwABAgMLIAAoAgRBAUcNAiAAKAIIIAEQugEPCyABIAAoAgQiA0HAAGoQtAoCQCADQYQBaigCACIARQ0AIABB2ABsIQIgA0GAAWooAgAhAANAAkACQCAAKAIAQQVHDQAgAEEEaigCACABELoBDAELIAAgARDUCgsgAEHYAGohACACQah/aiICDQALCwJAIANBmAFqKAIAIgBFDQAgAEEobCECIANBlAFqKAIAIQADQCAAIAEQygggAEEoaiEAIAJBWGoiAg0ACwsgAy0APEEGRg0BIAEgA0EQahC0Cg8LIAAoAgwiAkUNACACQShsIQIgACgCCCEAA0AgACABEMoIIABBKGohACACQVhqIgINAAsLC8MCAQZ/IwBBIGsiAiQAIAAoAgAhAwJAAkACQAJAAkAgACgCBCIADgMEAgEAC0EBIQQgASgCACIFQdimmAFBByABKAIEIgYoAgwiBxEMAA0CIABBA3QhAEEAIQEDQAJAIAANAEEAIQQMBAsgAiADNgIcAkAgAUUNACAFQd+mmAFBAiAHEQwADQQLIAJBJDYCECACIAJBHGo2AgwgBSAGQfiogQEgAkEMahC5Iw0DIANBCGohAyABQX9qIQEgAEF4aiEADAALCyACQQE2AhggAkEBNgIQIAIgAzYCDCACIANBCGo2AhQgASgCACABKAIEQaiogQEgAkEMahC5IyEEDAELIAJBATYCECACIAM2AgwgASgCACABKAIEQfiogQEgAkEMahC5IyEECyACQSBqJAAgBA8LQfDHmAFBDkHIppgBEKQhAAvEAgEEfyMAQcAAayICJAACQAJAAkAgASgCDEUNACACQSBqIAEQ/gcCQCACKAIgQYCAgIB4Rg0AIAIgAigCKDYCGCACIAIpAiA3AxAgAkEIaiACQRBqENgUAkACQCACKAIMIgNFDQAgAigCCCIEIAMQshEhBSAAIAM2AgggACAENgIEQQEhAwwBC0EAIQMQ+hchBQsgACAFNgIYIAAgAzYCAAwCCyABEPcIIQMg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AxA3AxgLIAJBMGokAAuVAgICfwJ+AkACQAJAAkAgACkDACIDp0F+akEAIANCAlYbDgIBAgALIAApAxAiA0IDg0IAUg0CIAOnIgAgACgCACIBQX9qNgIAIAFBAUcNAiAAIAAoAhAQ3h4PCwJAIAApAyAiBEIDg0IAUg0AIASnIgEgASgCACICQX9qNgIAIAJBAUcNACABIAEoAhAQ3h4LIANCAlENASAAQQhqIQACQCADQgBSDQAgACkDACIDQgODQgBSDQIgA6ciACAAKAIAIgFBf2o2AgAgAUEBRw0CIAAgACgCEBDeHg8LIAAQrRIPCyAAKQMQIgNCA4NCAFINACADpyIAIAAoAgAiAUF/ajYCACABQQFHDQAgACAAKAIQEN4eCwuqAgECfwJAAkACQAJAIAAoAgAOBAMAAQIDCyAAKAIEQQFHDQIgACgCCCABELoBDwsgASAAKAIEIgJBwABqELQKAkAgAkGEAWooAgAiAEUNACAAQdgAbCEDIAJBgAFqKAIAIQADQAJAAkACQCAAKAIAQXxqDgICAAELIABBBGooAgAgARC6AQwBCyAAIAEQ1QULIABB2ABqIQAgA0Gof2oiAw0ACwsCQCACQZgBaigCACIARQ0AIABBKGwhAyACQZQBaigCACEAA0AgACABEMoIIABBKGohACADQVhqIgMNAAsLIAItADxBBkYNASABIAJBEGoQtAoPCyAAKAIMIgNFDQAgA0EobCEDIAAoAgghAANAIAAgARC6CCAAQShqIQAgA0FYaiIDDQALCwuaAgEFfyMAQSBrIQICQCABKAIEIgMgAUFoaigCAEkgASgCACIEIAFBZGooAgAiBUkgBCAFRhtBAUcNACACIAEoAhg2AhggAiABKQIQNwMQIAIgASkCCDcDCCABQUhqIQUCQAJAA0AgBSIBQdAAaiABQTRqKAIANgIAIAFByABqIAFBLGopAgA3AgAgAUHAAGogAUEkaikCADcCACABQThqIAFBHGoiBSkCADcCACAFIABGDQEgAUFkaiEFIAMgAUEEaigCAEkgBCABKAIAIgZJIAQgBkYbDQALIAFBHGohBQwBCyABQRxqIQULIAFBHGogBDYCACAFIAM2AgQgBSACKQMINwIIIAUgAikDEDcCECAFIAIoAhg2AhgLC8UCAQR/IwBBMGsiAyQAIAEoAsABIQQC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APwKAAALIAMgASACajYCCAsPCyADIAEgAmo2AggLswIBAn8gACgCACECAkADQAJAAkACQCACDgcEAAIBAgQEBAsgACgCDCICRQ0DIAJBKGwhAiAAKAIIIQADQAJAAkACQCAAKAIADggAAQEBAQEBAgELIAEgAEEIahDRDgwBCyAAIAEQiQsLIABBKGohACACQVhqIgINAAwECwsgACgCDCICRQ0CIAJBOGwhAiAAKAIIIQADQAJAAkACQAJAIAAoAgAOAwABAgALAkAgAEEoaigCACIDKAIADQAgASADQQhqENEODAMLIAMgARCJCwwCCyABIABBEGoQ0Q4MAQsCQCAAQQRqKAIAIgMoAgANACABIANBCGoQ0Q4MAQsgAyABEIkLCyAAQThqIQAgAkFIaiICDQAMAwsLIAAoAgQiACgCACICDQALIAEgAEEIahDRDgsLngIBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCwoAAQIDBAUGBwgKCgsgASAAKAIoEN0MIAAoAghBAkcNCSAAQQxqIQAMCAsgACgCCEEBRw0IIABBDGohAAwHCyAAQQRqIQAMBgsCQCAAKAIEIgAoAgAiAkEDRw0AIAEgACgCEBDdDCAAQQxqKAIAIgJFDQcgAkEEdCECIABBCGooAgBBDGohAANAIAEgACgCABDdDCAAQRBqIQAgAkFwaiICDQAMCAsLIAEgACgCIBDdDCACQQJHDQYgAEEEaiEADAULIABBBGohAAwECyAAQQRqIQAMAwsgAEEEaiEADAILIABBBGohAAwBCyAAQQRqIQALIAEgACgCABDdDAsLoAICAn8CfkEAIQICQAJAAkACQCABKAIQIAAoAghHDQAgACgCBCABENQLRQ0AAkAgACgCACICKQMAIgRCA4NCAFINACAEpyIAIAAoAgAiAEEBajYCACAAQX9MDQILIAEoAgwhACABKAIIIQMgAigCCCECAkAgASkDACIFQgODQgBSDQAgBaciASABKAIAIgFBAWo2AgAgAUF/TA0CC0HAABCJASIBRQ0CIAFBADoAHCABIAI2AhggAUIANwMQIAEgBDcDCCABQRo2AgBBwAAQiQEiAkUNAyACIAE2AiggAkIANwMgIAIgADYCHCACIAM2AhggAiAFNwMQIAJBADYCCCACQRQ2AgALIAIPCwALQQhBwAAQjSQAC0EIQcAAEI0kAAuoAgEDfwJAAkACQAJAAkACQCAAKAIADgcFAAECAwUEBQsgACgCDCICRQ0EIAJBKGwhAiAAKAIIIQADQAJAIAAoAgBBB0YNACAAIAEQxwoLIABBKGohACACQVhqIgINAAwFCwsgACgCBCABEMcKDwsgACgCDCICRQ0CIAJBOGwhAyAAKAIIIQRBACEAA0ACQAJAAkACQCAEIABqIgIoAgAOAwABAgALAkAgAkEIaigCAEEDRw0AIAJBDGooAgAgARC6AQsgAkEoaigCACABEMcKDAILIAJBMGooAgAiAkUNASACIAEQugEMAQsgAkEEaigCACABEMcKCyADIABBOGoiAEcNAAwDCwsgACgCBCABEMcKIAAoAgggARC6AQ8LIAAoAgQgARC6AQsLngIBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOCwoAAQIDBAUGBwgKCgsgASAAKAIoEMgBIAAoAghBAkcNCSAAQQxqIQAMCAsgACgCCEEBRw0IIABBDGohAAwHCyAAQQRqIQAMBgsCQCAAKAIEIgAoAgAiAkEDRw0AIAEgACgCEBDIASAAQQxqKAIAIgJFDQcgAkEEdCECIABBCGooAgBBDGohAANAIAEgACgCABDIASAAQRBqIQAgAkFwaiICDQAMCAsLIAEgACgCIBDIASACQQJHDQYgAEEEaiEADAULIABBBGohAAwECyAAQQRqIQAMAwsgAEEEaiEADAILIABBBGohAAwBCyAAQQRqIQALIAEgACgCABDIAQsLmQICAX8BfiMAQSBrIgMkACADQRBqIAIgASgCCCABIAEtABQQzwcCQAJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELAkACQAJAIAEoAhhFDQAgA0EANgIQIANBCGogAiADQRBqQb7smgFBARDnDQJAIAMtAAhBBEYNACADKQMIIgRC/wGDQgRRDQAgACAENwIADAQLAkAgAi0AXQ0AIANBEGogAhDUECADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyADQRBqIAFBGGogAhClESADLQAQQQRGDQAgAykDECIEQv8Bg0IEUg0CCyAAQQQ6AAAMAgsgACAENwIADAELIAAgBDcCAAsgA0EgaiQAC5QCAgJ/AX4jAEEgayID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KAIAIgBBf2o2AgAgAEEBRw0AIAIgAigCEBDeHgsgA0EgaiQAC+8BAQN/AkACQAJAIAEoAgAOAwABAgALIAEoAgwiAkUNASACQShsIQIgASgCCCEBA0ACQCABKAIAQQdGDQAgASAAEMYKCyABQShqIQEgAkFYaiICDQAMAgsLIAEoAgwiAkUNACACQThsIQMgASgCCCEEQQAhAQNAAkACQAJAAkAgBCABaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACAAIAJBDGooAgAQ3QwLIAJBKGooAgAgABDGCgwCCyACQTBqKAIAIgJFDQEgACACEN0MDAELIAJBBGooAgAgABDGCgsgAyABQThqIgFHDQALCwuCAgICfwF+IwBBwABrIgIkAAJAAkACQAJAAkACQCABKAIADgQAAQIDAAsCQCABKQMIIgRCA4NCAFINACAEpyIBIAEoAgAiAUEBajYCACABQX9MDQULIABBADYCACAAIAQ3AwgMAwsgACABKQMINwMIIAAgASkDADcDAAwCCyABKAIEIQMQ+iAhASACIAMQTCABIAIpAzg3AzggASACKQMwNwMwIAEgAikDKDcDKCABIAIpAyA3AyAgASACKQMYNwMYIAEgAikDEDcDECABIAIpAwg3AwggASACKQMANwMAIABBAjYCACAAIAE2AgQMAQsgAEEDNgIACyACQcAAaiQADwsAC+8BAQN/AkACQAJAIAEoAgAOAwABAgALIAEoAgwiAkUNASACQShsIQIgASgCCCEBA0ACQCABKAIAQQdGDQAgASAAEMgKCyABQShqIQEgAkFYaiICDQAMAgsLIAEoAgwiAkUNACACQThsIQMgASgCCCEEQQAhAQNAAkACQAJAAkAgBCABaiICKAIADgMAAQIACwJAIAJBCGooAgBBA0cNACAAIAJBDGooAgAQyAELIAJBKGooAgAgABDICgwCCyACQTBqKAIAIgJFDQEgACACEMgBDAELIAJBBGooAgAgABDICgsgAyABQThqIgFHDQALCwv5AQEFfyMAQTBrIgEkAEEAIQICQAJAAkACQCAALQDIASIDQX1qDgQCAQEAAQsgABDeEQwBCyADQaMBRg0AIAAtAMkBQQFxDQAgACgCxAEhBCAAKALAASEFIAFBDGogAxDDJSABQRhqQQFBAUEBEIEPIAEoAhwhAiAB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IAAoAgwiAkUNACAAKAIIIgMgAkEobGohBANAAkACQAJAAkACQCADKAIADgUEAAECAwQLIAMoAgRBAUcNAyADKAIIIAEQvQEMAwsgAygCBCABEL0BDAILIAEgAygCBBDPBAwBCyADQQxqKAIAIgBFDQAgAEEobCECIANBCGooAgAhAANAIAAgARDxAyAAQShqIQAgAkFYaiICDQALCyADQShqIgMgBEcNAAsLC9kBAgF/AX4jAEEgayIDJAACQAJAIAEoAgBBAUcNACADQRBqIAIgASgCBEEAELACAkAgAy0AEEEERg0AIAMpAxAiBEL/AYNCBFENACAAIAQ3AgAMAgsgA0EANgIQIANBCGogAiADQRBqQbvsmgFBAxDnDSADLQAIQQRGDQAgAykDCCIEQv8Bg0IEUQ0AIAAgBDcCAAwBCyADQRBqIAFBDGogAhD3IwJAIAMtABBBBEYNACADKQMQIgRC/wGDQgRRDQAgACAENwIADAELIABBBDoAAAsgA0EgaiQAC+cBAQN/IwBBMGsiBSQAIAEgASgCeCIGQYAgcjYCeAJAAkAgAS0AyAEiByACQf8BcUYNACAFIAc6AA8gBUGPAq1CIIYgBUEPaq2ENwMQIAVBGGpBBHJBzZWAASAFQRBqEPceIAUgBDYCLCAFIAM2AiggBUGwgICAeDYCGCABKALAASABKALEASAFQRhqELMbIQICQCABLQDIAUGiAUcNACABIAEQjCMQgxQLQQEhBAwBCyABEN4RIAUgARD7BSAFKAIEIQIgBSgCACEECyABIAY2AnggACACNgIEIAAgBDYCACAFQTBqJAALzwEBA38CQAJAAkACQAJAIAEoAgwiAyACSw0AIAMNAQwCCyABIAMgAkF/c2o2AgwgASABKAIAIgQgAmoiA0EBaiABKAIEIgUgAiAFIARrIgRJGzYCACACIARPDQEgASABKAIIIAJqIgJBAWo2AggMAwsgASABKAIAIgIgA2ogASgCBCIEIANBf2oiBSAEIAJrIgJJGzYCAAJAIAUgAk8NACABIAEoAgggA2o2AggLQQAhAyABQQA2AgwMAQtBACEDCwsgACADNgIEIAAgAjYCAAvbAQEEfyMAQRBrIgQkAEEAIQUCQCADKAIQIgYgAygCFCIHSw0AAkACQCADKAIADQAgBEEEaiABQQRqIAMoAgggAygC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1xsACyABIAM2AhQgASACNgIQIAAgASgCGDYCGCAAIAEpAhA3AhAgACABKQIINwIIIAAgASkCADcCACAEQSBqJAALtAEBAn8jAEEQayIEJAACQAJAIAEtAKwNQQFGDQACQAJAAkAgASkDAEIChSABKQMIhFANACACKALIBEECRg0EIAQgASACQdgBaiADEOcEIAQoAgAiBUECRw0BIAQoAgQQ4RUaCyAAIAEgAiADEMAFDAELIAQoAgQhASAAIAQpAgg3AgggACABNgIEIAAgBTYCAAsgBEEQaiQADwtBrPOaAUEoQeCLhQEQpCEAC0GsgYUBELAjAAufAQECfwJAAkAgAEEASA0AIAAhAgwBCyABQS06AABBACAAayECIAFBAWohAQsCQCACQeMASg0AAkAgAkEJSg0AIAEgAkEwajoAACAAQR92QQFqDwsgASACQQF0QbCrmAFqLwAAOwAAIABBH3ZBAnIPCyABIAJB5ABuIgNBMGo6AAAgASACIANB5ABsa0EBdC8AsKuYATsAASAAQR92QQNqC6cBAQJ/IAAoAgQhAiABIAAoAggiAxDCJCADQQN0IQMCQANAIANFDQEgAigCACACQQRqKAIAIAEQ/yIgA0F4aiEDIAJBCGohAgwACwsgACgCECECIAEgACgCFCIDEMIkIANBFGwhAwJAA0AgA0UNASACKAIMIAJBEGooAgAgARD/IiACQQRqKAIAIAJBCGooAgAgARDDIiADQWxqIQMgAkEUaiECDAALCwuqAQICfwF+AkACQCAAKAIAIgEtACVBAkcNACABQQRqKAIAIQACQCABKAIIIgJFDQADQCAAEO8HIABBOGohACACQX9qIgINAAsgAUEEaigCACEACyABKAIAIABBCEE4EM0TDAELAkAgASkDCCIDQgODQgBSDQAgA6ciACAAKAIAIgJBf2o2AgAgAkEBRw0AIAAgACgCEBDeHgsgAUEgahCKDwsgAUEoQQgQzhQLvgEBA38Df0EIIQFBASECAkACQAJAAkACQAJAAkACQAJAIAAoAgAiA0F0akEHIANBC0sbIgNBf2oOFwUFBwABCAcCBwcFBgcHAwUFBwcHBwcFBAtBBCEBDAcLIAAtABFFDQNBDCEBDAYLIAAoAghBAkcPCyAAKAIIQQBHDwsgA0EkRw0CIAAoAgQoAgBBAkkPC0EAIQIM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QYKCgAEgAkEQahDGBiEADAELIAJBB61CIIYgAK2ENwMQIAEoAgAgASgCBEGzgoABIAJBEGoQxgYhAAsgAkEgaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EDdCEBA0AgAiAANgIMIAJBBGogAkEMakGDARCHDBogAEEIaiEAIAFBeGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC64BAQN/IwBBIGsiAiQAIAJCABCKDQJAAkAgAigCAEGEgICAeEcNACACKAIEIQNBEBCJASIERQ0BIAQgATsBDCAEIAM2AgggBEKBgICAEDcCACAEQQ5qIAFBEHY6AAAgACAENgIAIABB3NuEATYCBCACQSBqJAAPCyACIAIpAwg3AxggAiACKQMANwMQQdD9mgFBKyACQRBqQYzZhAFB7NmEARDPFAALQQRBEBCNJAALnwEBAn8gABCgCiEBIAAoAsASIAAoAsQSIgIoAghBf2pBeHFqQQhqIAIoAhgRBAAhAgJAIAAtANQSQQFHDQBBrPOaAUEoQayNhQEQpCEACyABIAJqIAAoAtASIgAoAtACQRRsaiAAKALcAkECdGogACgCxAIiAigCEEEDdGogAigCHEEFdGogAigCKEEMbGogAigCLGogACgCwAJqQYgDagubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQRxsIQEDQCACIAA2AgwgAkEEaiACQQxqQfYAEIcMGiAAQRxqIQAgAUFkaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALoQEBA38CQAJAAkACQCABKAIAIgINAEEAIQMMAQtBACEDA0ACQCABKAIIIgQgASgCBE8NACACIARqLQAAQcUARw0AIAEgBEEBajYCCAwCCwJAIANFDQAgASgCECICRQ0AIAJB36aYAUECEJoHDQMLIAEQpwMNAiADQQFqIQMgASgCACICDQALC0EAIQEMAQtBASEBCyAAIAM2AgQgACABNgIAC5MBAgJ/AX4CQCABRQ0AA0ACQCAAQRBqKQMAIgRQDQAgBEIDg0IAUg0AIASnIgIgAigCACIDQX9qNgIAIANBAUcNACACIAIoAhAQ3h4LAkAgACkDACIEQgODQgBSDQAgBKciAiACKAIAIgNBf2o2AgAgA0EBRw0AIAIgAigCEBDeHgsgAEEgaiEAIAFBf2oiAQ0ACwsLmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakH5AhCHDBogAEEEaiEAIAFBfGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpBqwMQhwwaIABBDGohACABQXRqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQTBsIQEDQCACIAA2AgwgAkEEaiACQQxqQZ4DEIcMGiAAQTBqIQAgAUFQaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EwbCEBA0AgAiAANgIMIAJBBGogAkEMakG/AxCHDBogAEEwaiEAIAFBUGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpB7QMQhwwaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQTBsIQEDQCACIAA2AgwgAkEEaiACQQxqQYwEEIcMGiAAQTBqIQAgAUFQaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0E4bCEBA0AgAiAANgIMIAJBBGogAkEMakGNBBCHDBogAEE4aiEAIAFBSGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpBpwQQhwwaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQR0IQEDQCACIAA2AgwgAkEEaiACQQxqQaYEEIcMGiAAQRBqIQAgAUFwaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EYbCEBA0AgAiAANgIMIAJBBGogAkEMakG8BBCHDBogAEEYaiEAIAFBaGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBXQhAQNAIAIgADYCDCACQQRqIAJBDGpBvwQQhwwaIABBIGohACABQWBqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQThsIQEDQCACIAA2AgwgAkEEaiACQQxqQcMEEIcMGiAAQThqIQAgAUFIaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakHSAhCHDBogAEEEaiEAIAFBfGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBHQhAQNAIAIgADYCDCACQQRqIAJBDGpB/gIQhwwaIABBEGohACABQXBqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQR0IQEDQCACIAA2AgwgAkEEaiACQQxqQdoEEIcMGiAAQRBqIQAgAUFwaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBCADQQN0IQECQANAIAFFDQEgAiAANgIMIAJBBGogAkEMakHlBBCHDBogAUF4aiEBIABBCGohAAwACwsgAkEEahDxHSEBIAJBEGokACABC7QBAQJ/QQghAkEEIQMCQAJAAkACQAJAAkACQAJAIAEoAgAOFAcHAAEBAgECAQEDAwEBAQQBBQYBBwtBHEEYIAEoAgRBgICAgHhGIgMbIQJBGEEUIAMbIQMMBgtBDCECQQghAwwFC0EUIQJBECEDDAQLQRghAkEUIQMMAwtBECECQQwhAwwCC0EsIQJBKCEDDAELQSQhAkEgIQMLIAAgASACaigCADYCBCAAIAEgA2ooAgA2AgALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0ECdCEBA0AgAiAANgIMIAJBBGogAkEMakGuBRCHDBogAEEEaiEAIAFBfGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBDGwhAQNAIAIgADYCDCACQQRqIAJBDGpB2AUQhwwaIABBDGohACABQXRqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQTBsIQEDQCACIAA2AgwgAkEEaiACQQxqQdEFEIcMGiAAQTBqIQAgAUFQaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EwbCEBA0AgAiAANgIMIAJBBGogAkEMakHqBRCHDBogAEEwaiEAIAFBUGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpBkgYQhwwaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQTBsIQEDQCACIAA2AgwgAkEEaiACQQxqQaAGEIcMGiAAQTBqIQAgAUFQaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0E4bCEBA0AgAiAANgIMIAJBBGogAkEMakGhBhCHDBogAEE4aiEAIAFBSGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpBrQYQhwwaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQR0IQEDQCACIAA2AgwgAkEEaiACQQxqQawGEIcMGiAAQRBqIQAgAUFwaiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EYbCEBA0AgAiAANgIMIAJBBGogAkEMakHBBhCHDBogAEEYaiEAIAFBaGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBOGwhAQNAIAIgADYCDCACQQRqIAJBDGpBxQYQhwwaIABBOGohACABQUhqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAubAQEDfyMAQRBrIgIkACAAKAIAIgMoAgQhACADKAIIIQMgASgCAEGS75oBQQEgASgCBCgCDBEMACEEIAJBADoACSACIAQ6AAggAiABNgIEAkAgA0UNACADQQJ0IQEDQCACIAA2AgwgAkEEaiACQQxqQfYEEIcMGiAAQQRqIQAgAUF8aiIBDQALCyACQQRqEPEdIQAgAkEQaiQAIAALmwEBA38jAEEQayICJAAgACgCACIDKAIEIQAgAygCCCEDIAEoAgBBku+aAUEBIAEoAgQoAgwRDAAhBCACQQA6AAkgAiAEOgAIIAIgATYCBAJAIANFDQAgA0EEdCEBA0AgAiAANgIMIAJBBGogAkEMakGyBRCHDBogAEEQaiEAIAFBcGoiAQ0ACwsgAkEEahDxHSEAIAJBEGokACAAC5sBAQN/IwBBEGsiAiQAIAAoAgAiAygCBCEAIAMoAgghAyABKAIAQZLvmgFBASABKAIEKAIMEQwAIQQgAkEAOgAJIAIgBDoACCACIAE2AgQCQCADRQ0AIANBBHQhAQNAIAIgADYCDCACQQRqIAJBDGpB2QYQhwwaIABBEGohACABQXBqIgENAAsLIAJBBGoQ8R0hACACQRBqJAAgAAulAQEBfwJAAkACQAJAAkAgACgCAA4FBAABAgMECyAAKAIEQQFHDQMgAS0AOSECIAFBAToAOSAAKAIIIAEQdyABIAI6ADkPCyABLQA5IQIgAUEBOgA5IAAoAgQgARB3IAEgAjoAOQ8LIAEgACgCBBDyBQ8LIAAoAgwiAkUNACACQShsIQIgACgCCCEAA0AgACABELAEIABBKGohACACQVhqIgINAAsLC6YBAAJAIAAoAgBFDQAgACABEMMEIAEgABD/CAsCQCAAKAIwIgBFDQAgACABEFwgACgCAEEaRw0AIAEgAEEIahCLCyIBRQ0AIAAQhAIgACABKQM4NwM4IAAgASkDMDcDMCAAIAEpAyg3AyggACABKQMgNwMgIAAgASkDGDcDGCAAIAEpAxA3AxAgACABKQMINwMIIAAgASkDADcDACABQcAAQQgQzhQLC7QBAQJ/QQghAkEEIQMCQAJAAkACQAJAAkACQAJAIAEoAgAOFAcHAAEBAgECAQEDAwEBAQQBBQYBBwtBHEEYIAEoAgRBgICAgHhGIgMbIQJBGEEUIAMbIQMMBgtBDCECQQghAwwFC0EUIQJBECEDDAQLQRghAkEUIQMMAwtBECECQQwhAwwCC0EsIQJBKCEDDAELQSQhAkEgIQMLIAAgASACaigCADYCBCAAIAEgA2ooAgA2AgALswEBAn8jAEEgayIEJAACQAJAIAEoAgBBgICAgHhGDQAgBEEIahDoIEEEQTgQ1SAiBUHI45oBNgIAIAUgAzYCICAFIAI2AhwgBSAEKQIINwIEIAUgBCkCEDcCDCAFIAQpAhg3AhQgBSABKQIANwIkIAUgASkCCDcCLCAFIAEoAhA2AjQgAEGAgICAeDYCACAAIAU2AgQMAQsgACABKAIMNgIIIAAgASkCBDcCAAsgBEEgaiQAC5oBAQN/IwBBEGsiAiQAAkAgAUUNACAAKAIcIAAoAiAgASgCEBC0IiEDIAIgACgCKCAAKAIsIAEoAgwiBCADKAIAIgMgBCADSRsgBCADIAQgA0sbEP0ZIAIgAigCACIEIAIoAgRqNgIMIAIgBDYCCCACQQhqELQURQ0AIAEoAgwhASAAIANBIBCbGyAAIAFBKBCbGwsgAkEQaiQAC64BAQJ/IwBBIGsiAiQAIAEoAgAhAyABQZWAgIB4NgIAAkACQAJAIANBlYCAgHhGDQAgAiABKAIMNgIUIAIgASkCBDcCDCACIAM2AggCQCADQYCAgIB4Rw0AIAAgAi0ADDoAASACQQhqEIUUQQAhAQwDCyAAIAJBCGogAkEfakHAuYEBEJQeNgIEDAELIABB6MCBAUEQENQbNgIEC0EBIQELIAAgAToAACACQSBqJAALowEBA38jAEEQayIDJAACQCACQf////8HTw0AIAEoAtgCIQQCQCABKAIIIgUgASgCAEcNACABEIkaCyAAIAU2AgQgAEEDNgIAIAEgBUEBajYCCCABKAIEIAVBFGxqIgEgAjYCECABIAQ2AgwgAUEANgIIIAFCADcCACADQRBqJAAPCyADIAKtNwMIQdzYgQFBNCADQQhqQfTJgQFBkNmBARDPFAALkgEBAX8jAEEQayIFJAACQAJAIAEoAgAiAUEBcQ0AIAAgASACIAMQwg4MAQsgBSABIAQRBAAiATYCACAFIAIgAWsiAiADaiIBNgIIIAUgATYCBCAFQSAgAUEKdmdrIgFBByABQQdJG0ECdEEBcjYCDCAFIAIQqg0gACAFKQIINwIIIAAgBSkCADcCAAsgBUEQaiQAC5EBAQN/AkAgASAAKAIAIAAoAggiAmtNDQAgACACIAFBBEEEEMkaIAAoAgghAgsgACgCBCACQQJ0aiEDAkACQAJAIAFBAkkNACABQX9qIQQDQCADQQA2AgAgA0EEaiEDIARBf2oiBA0ACyACIAFqQX9qIQIMAQsgAUUNAQsgA0EANgIAIAJBAWohAgsgACACNgIIC5EBAQN/AkAgASAAKAIAIAAoAggiAmtNDQAgACACIAFBBEEEEMkaIAAoAgghAgsgACgCBCACQQJ0aiEDAkACQAJAIAFBAkkNACABQX9qIQQDQCADQQA2AgAgA0EEaiEDIARBf2oiBA0ACyACIAFqQX9qIQIMAQsgAUUNAQsgA0EANgIAIAJBAWohAgsgACACNgIIC5UBAQN/IwBBEGsiAyQAAkACQAJAIAJBAXFFDQAgA0EEaiACQQF2IgJBAEEBQQEQwA8gAygCCCEEIAMoAgRBAUYNAiADKAIMIQUCQCACRQ0AIAJFDQAgBSABIAL8CgAACyAAIAI2AgggACAFNgIEIAAgBDYCAAwBCyAAIAEgAhDICAsgA0EQaiQADwsgBCADKAIMEOkgAAuSAQIBfwJ+IAAgACgCOEEBajYCOCAAIAGtQv8BgyIDIAAoAjwiAUEDdK2GIAApAzCEIgQ3AzACQAJAQQggAWsiAkEBSw0AIAAgACkDGCAEhTcDGCAAEJkOIAApAzAhBCAAIAMgAkEDdK2INwMwIAAgBCAAKQMAhTcDACABQXlqIQEMAQsgAUEBaiEBCyAAIAE2AjwLmQECA38BfgJAIAAoAggiAUUNACAAKAIEIQADQCAAQQhqIQICQAJAIAAoAgANACACKQMAIgRCA4NCAFINASAEpyICIAIoAgAiA0F/ajYCACADQQFHDQEgAiACKAIQEN4eDAELIAIQrRILAkAgAEEoaigCACICRQ0AIAIQnAEgAkHAAEEIEM4UCyAAQTBqIQAgAUF/aiIBDQALCwuqAQEDfyMAQRBrIgEkACAAKAKIASECIABBCzYCiAECQAJAIAJBC0YNACAAQYwBaiEDIAEgACgCoAE2AgggASAAKQKYATcDAAJAIAAoAghBCkYNACAAQQhqELULCyAAIAI2AgggACADKQIANwIMIAAgAygCCDYCFAwBCyABIAAQzgELIAAgASgCCDYCuAEgACAAKQOwATcDqAEgACABKQMANwKwASABQRBqJAALowECAX8BfiMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACkDACIDp0F+akECIANCAVYbDgMAAQIACyACIABBCGo2AgQgAUHBqZoBQQkgAkEEakGCBBC8DCEADAILIAIgAEEIajYCCCABQbqpmgFBByACQQhqQYMEELwMIQAMAQsgAiAANgIMIAFBtamaAUEFIAJBDGpBhAQQvAwhAAsgAkEQaiQAIAALowECAX8BfiMAQRBrIgIkAAJAAkACQAJAIAAoAgAiACkDACIDp0F+akEAIANCAlYbDgMAAQIACyACIAA2AgQgAUG1qZoBQQUgAkEEakGJBBC8DCEADAILIAIgAEEIajYCCCABQbqpmgFBByACQQhqQYoEELwMIQAMAQsgAiAAQQhqNgIMIAFBwamaAUEJIAJBDGpBiwQQvAwhAAsgAkEQaiQAIAAL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdLcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQMLAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/ANBH3EhAgsgAyACdbcL0wEBAn9BACECQQAhAwJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAA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AGo2AgggAiACNgIYIAIgAkEEajYCEEHUjIABIAJBCGpBuMSYARDXGwALIAJBIGokACABIANrC58BAQZ/IwBBEGsiASQAIAFBCEEIQQQQiA4gASgCCCECIAEoAgQhAwJAAkAgASgCACIEDQAMAQsgASgCDCEFIANBCWoiBkUNACAEQf8BIAb8CwALIAEgBTYCDCABIAI2AgggASADNgIEIAEgBDYCACABQsHK2YvGDRDgBhogARCyGxDgBhogACABKQIINwIIIAAgASkCADcCACABQRBqJAALqAEAAkACQAJAAkACQCACQXtqDgUAAQMEAgQLIAEoAABB9eal8wZzIAFBBGotAABB5wBzcg0DQZsBDwsgASgAAEH13KWLB3MgAUEEai8AAEH1ygFzcg0CQZkBDwsgASkAAEL13JGr5qyat+UAhSABQQhqMQAAQuQAhYRQRQ0BQZgBDwsgASgAAEH13K3zBnMgAUEDaigAAEHu3t3zBnNyDQBBmgEPC0GkAQuiAQEBfwJAIAAoAgAiAUEDRg0AAkACQAJAIAEOAgECAAsgACgCGCEBIAAoAgQiABDJCyAAQShBCBDOFCABRQ0CIAEoAgAiABCjBCAAQeAAQQgQzhQgAUEMQQQQzhQPCyAAQQhqEMkOIAAoAigiABDJCyAAQShBCBDOFA8LIAApAxAgACgCKBCbFiAAKAIwIgBFDQAgABCJAiAAQcAAQQgQzhQLC58BAQJ/IwBBwABrIgIkACABIAEoAngiA0H/fHE2AnggAiABQQAQlwQgASADNgJ4IAIoAgAhAQJAAkAgAi0AFCIDQQJHDQAgAEECOgAUIAAgATYCAAwBCyACIAIpAgw3AiwgAiACKQIENwIkIAIgAikAFTcANSACIAIoABw2ADwgAiADOgA0IAIgATYCICAAIAJBIGoQ5xoLIAJBwABqJAAL1wEBAX9BACECAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgtEAAAAAAAAAAAhAAJAIAG9Qv///////////wCDQv/////////3/wBVDQAgAZ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBB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DwsgASgAAEHj3rmbB3MgAUEEai0AAEH0AHNyDQFB0QAPCyABKQAAQuPeuaOXzdu65QBSDQBB0gAPC0GkAQuwAQACQAJAAkACQAJAAkAgAkF+ag4HAwUFBQIBAAULIAEpAABC5MqJq/fs2bLyAFINBEHTAA8LIAEoAABB5MqZiwZzIAFBA2oiAigAAEHh6rGjB3NyDQJB1AAPCyABKAAAQeTKsasGcyABQQRqLwAAQfTKAXNyDQJB1QAPCyABLwAAQeTeAUcNAUHWAA8LIAEoAABB5MqN4wZzIAIoAABB7MLJqwZzcg0AQfwADwtBpAELmgECAn8BfiMAQTBrIgMkACABKAJ4IQQgA0EAOgAXIANBADoAFiADIAI2AhAgASAEQf/8729xQYCAgBByNgJ4IANBADYCICADQoCAgIDAADcCGCADIANBEGo2AiwgAyADQRZqNgIoIAMgA0EXajYCJCADQQhqIANBGGogARDKAiADKQMIIQUgASAENgJ4IAAgBTcDACADQTBqJAALhgECAn8BfiABQgODIQUCQAJAAkACQCAAKAIAQQFHDQAgAiAAKAIERg0BC0EIIQMgBUIAUg0BIAGnIgQgBCgCACIEQQFqNgIAIARBf0oNAQwCC0EYIQMgBUIAUg0AIAGnIgQgBCgCACIEQQFqNgIAIARBf0wNAQsgACADaiABIAIQgQcaDwsAC8wBAQF/QQAhAgJAIAC9Qv///////////wCDQv/////////3/wBVDQAgAJ0iACAARAAAAAAAAPA9op1EAAAAAAAA8EGioSAApiIARAAAAAAAAPBBoCAAIABEAAAAAAAAAABjG/wDIQILAkAgAb1C////////////AINC//////////f/AFUNACABnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMgAnIhAgsgArcLzAEBAX9BACECAkAgAL1C////////////AINC//////////f/AFUNACAAnSIAIABEAAAAAAAA8D2inUQAAAAAAADwQaKhIACmIgBEAAAAAAAA8EGgIAAgAEQAAAAAAAAAAGMb/AMhAgsCQCABvUL///////////8Ag0L/////////9/8AVQ0AIAGdIgAgAEQAAAAAAADwPaKdRAAAAAAAAPBB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C4oBACAAQQA6ABggAEF/NgIUIAAgBjYCECAAIAU2AgwgACAENgIIIAAgAzYCBCAAIAI2AgACQCABKAIUIgYgASgCDEcNACABQQxqEL4aCyABIAZBAWo2AhQgASgCECAGQRxsaiIBIAApAgA3AgAgASAAKQIINwIIIAEgACkCEDcCECABIAAoAhg2AhgLcwEEf0F/IQNBACEEAkAgAUUNAAJAA0ACQCABQQFLDQAgACAEQQxsaigCACIBIAJHDQJBACEDDAMLIAQgAUEBdiIFIARqIgYgACAGQQxsaigCACACSxshBCABIAVrIQEMAAsLIAQgASACSWohBAsgAyAEagtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIANCIIgiCCAGfiIGIAUgAUIgiCIJfnwiBUIghnwiCjcDACAAIAggCX4gBSAGVK1CIIYgBUIgiIR8IAogB1StfCAEIAF+IAMgAn58fDcDCAt5AgF/AX4CQAJAIAGtIAKtfiIEQiCIpw0AIASnIgFBeEsNACACQQhqIgMgAUEHakF4cSIBaiICIANJDQECQCACQfj///8HSw0AIAAgATYCCCAAIAI2AgQgAEEINgIADwsgAEEANgIADwsgAEEANgIADwsgAEEANgIAC44BAQJ/IwBBEGsiAiQAAkACQAJAAkACQAJAAkAgAUIDVg0AIAGnDgQBAgMEAQtBASEDIAJBAToAACACIAE3AwggACACQdi/gQEQiRg2AgQMBQtBACEDIABBADoAAQwECyAAQQE6AAEMAgsgAEECOgABDAELIABBAzoAAQtBACEDCyAAIAM6AAAgAkEQaiQAC48BAQN/IwBBEGsiAiQAAkACQAJAAkAgASgCAEGVgICAeEcNAEEAIQMMAQtBACEDAkACQCABKAIAIgRBgICAgHhzQRUgBEEASBtBbmoOBAEDAwADCyABKAIIDQILIAEQhRQLDAELQQEhAyABIAJBD2pBsMGBARCUHiEBCyAAIAE2AgQgACADNgIAIAJBEGokAAuJAQECfyMAQRBrIgIkACABKAIAIQMgAUEANgIAIAEoAgQhASADEOYgAkACQCABEKUjDQAgAkEIaiABELUUQQEhAQJAAkAgAi0ACEEBRw0AIAAgAigCDDYCBAwBCyAAIAItAAk6AAFBACEBCyAAIAE6AAAMAQsgAEGABDsBACABELoiCyACQRBqJAALgAEBAn8jAEEQayIDJAAgAigCAEGS75oBQQEgAigCBCgCDBEMACEEIANBADoACSADIAQ6AAggAyACNgIEAkAgAUUNAANAIAMgADYCDCADQQRqIANBDGpBKxCHDBogAEEBaiEAIAFBf2oiAQ0ACwsgA0EEahDxHSEAIANBEGokACAAC3UBAX8CQCABKAIAIgJFDQAgACABKAIIQX9qQXhxakEIaiACEQMACwJAIABBf0YNACAAIAAoAgQiAkF/ajYCBCACQQFHDQAgASgCBCABKAIIIgFBBCABQQRLGyIBakEHakEAIAFrcSICRQ0AIAAgAiABEM4UCwt5AgF/AX4CQAJAIAGtIAKtfiIEQiCIpw0AIASnIgFBeEsNACACQQhqIgMgAUEHakF4cSIBaiICIANJDQECQCACQfj///8HSw0AIAAgATYCCCAAIAI2AgQgAEEINgIADwsgAEEANgIADwsgAEEANgIADwsgAEEANgIAC3UBAX8CQCABKAIAIgJFDQAgACABKAIIQX9qQXhxakEIaiACEQMACwJAIABBf0YNACAAIAAoAgQiAkF/ajYCBCACQQFHDQAgASgCBCABKAIIIgFBBCABQQRLGyIBakEHakEAIAFrcSICRQ0AIAAgAiABEM4UCwt6AQF/IAIgARDCJCABQQR0IQMgAEEMaiEBAkADQCADRQ0BIAFBeGooAgAgAUF8aigCACACEMMiIAIgAS0AACIAQXdqQQsgAEEISxtB/wFxIgAQgSACQCAAQQtHDQAgAS0AACACENwjCyADQXBqIQMgAUEQaiEBDAALCwuPAQECfyMAQRBrIgIkACAAQQRqIQMCQAJAAkACQCAAKAIADgMAAQIACyACIAM2AgQgAUG/rpoBQQcgAkEEakHeAxC8DCEADAILIAIgAzYCCCABQYqrmgFBCSACQQhqQd8DELwMIQAMAQsgAiADNgIMIAFBsLqaAUEDIAJBDGpBoQQQvAwhAAsgAkEQaiQAIAALhQECAn8BfgJAAkAgACgCACIALQAlQQJHDQAgAEEEaiIBKAIAIABBCGooAgAQkh8gACgCACABKAIAEOIjDAELAkAgACkDCCIDQgODQgBSDQAgA6ciASABKAIAIgJBf2o2AgAgAkEBRw0AIAEgASgCEBDeHgsgAEEgahDzEQsg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fwJAAkAgBSAERg0AIANBCGogAhDbGyADLQAIDQEgBCEFCyADQRBqJAAgBSABTw8LIAAoAgQgBGogAy0ACToAACAAIAAoAghBAWo2AgggBEEBaiEEDAALC3QBAn8jAEEQayICJAAgAC8BACEDQQUhAANAIAJBDGogAGpBfmogA0EPcUHoi4MBai0AADoAACAAQX9qIQAgA0EEdkH/H3EiAw0ACyABQQFBrMyXAUECIAJBDGogAGpBf2pBBSAAaxDJBiEAIAJBEGokACAAC3QBAn8jAEEQayICJAAgAC8BACEDQQUhAANAIAJBDGogAGpBfmogA0EPcUHQo5wBai0AADoAACAAQX9qIQAgA0EEdkH/H3EiAw0ACyABQQFBrMyXAUECIAJBDGogAGpBf2pBBSAAaxDJBiEAIAJBEGokACAAC3sBAn8gASACp3EhA0EIIQQCQANAIAAgA2opAABCgIGChIiQoMCAf4MiAkIAUg0BIAMgBGogAXEhAyAEQQhqIQQMAAsLAkAgACACeqdBA3YgA2ogAXEiA2osAABBAEgNACAAKQMAQoCBgoSIkKDAgH+DeqdBA3YhAwsgAwuGAQEEfyMAQRBrIgMkAAJAAkAgASgCACIEIAIoAgAiBU8NACADIAIoAgg2AgggAyACKQIANwMAIAAgAyABKAIEIgYgASgCCBCrDQwBCyADIAEoAgg2AgggAyABKQIANwMAIAAgAyACKAIEIgYgAigCCBCrDSAFIQQLIAQgBhDHIyADQRBqJAALdAECf0EAIQICQCABKAIQIgNFDQBBACECIAEoAgwgA0EDdGoiAUF4akUNACABQXxqKAIAIQILAkACQEEAIAIgA0EBdGsiASABIAJLGyICIAAoAggiAUsNACAAIAI2AggMAQsgACACIAFrEI4QCyAAIAI2AgwLggEBAn8jAEEgayIDJAAgA0EUakHCzoUBQQYQzQxBASEEAkACQAJAIAMtABRBAUcNACAAIAMtABU6AAEMAQsgAygCGCIERQ0BIANBCGogBCADKAIcIAEgAhDZDCAAIAMpAwg3AgRBACEECyAAIAQ6AAAgA0EgaiQADwtB7O6JARCwIwALegECfyABIAKncSEDQQghBAN/AkAgACADaikAAEKAgYKEiJCgwIB/gyICUA0AAkAgACACeqdBA3YgA2ogAXEiA2osAABB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zAVB7beYASADKAIIIAMoAgQiAhshBEEJIAMoAgwgAhshAgsgBCACIAEQlgQhAiADQRBqJAAgAgtrAgF/AX4CQAJAAkACQCAALQAsIgFBfWpBASABQQJLG0H/AXEOAgECAAsgABDxEg8LIAApAwAiAkIDg0IAUg0BIAKnIgAgACgCACIBQX9qNgIAIAFBAUcNASAAIAAoAhAQ3h4PCyAAEPcQCwttAgR/AX4gASgCECECIAEoAgwhAyABKAIIIQQCQCABKQMAIgZCA4NCAFINACAGpyIFIAUoAgAiBUEBajYCACAFQX9KDQAACyAAIAI2AhAgACADNgIMIAAgBDYCCCAAIAY3AwAgACABLQAUOgAUC2sCAX8BfgJAAkACQAJAIAAtACwiAUF9akEBIAFBAksbQf8BcQ4CAQIACyAAEPQSDwsgACkDACICQgODQgBSDQEgAqciACAAKAIAIgFBf2o2AgAgAUEBRw0BIAAgACgCEBDeHg8LIAAQ+hALC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUG8vJoBQRIgAkEMakGbAxC8DCEADAELIAIgAzYCCCABQbG8mgFBCyACQQhqQZwDELwMIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQhqIQMCQAJAIAApAwBCAVINACACIAM2AgwgAUGPppoBQQMgAkEMakHjAhC8DCEADAELIAIgAzYCCCABQYuUmwFBBSACQQhqQbUCELwMIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUGslJsBQQQgAkEMakHSAhC8DCEADAELIAIgAzYCCCABQb+umgFBByACQQhqQd4DELwMIQALIAJBEGokACAAC24BAn8jAEEQayICJAAgACgCACIAQQRqIQMCQAJAIAAoAgBBAUcNACACIAM2AgwgAUGslJsBQQQgAkEMakHSAhC8DCEADAELIAIgAzYCCCABQYzDmgFBDCACQQhqQcECELwMIQALIAJBEGokACAAC3cBAX8jAEEQayICJAAgAiAAQThqNgIMIAFBuq2aAUERQf6omgFBBCAAQcoEQbOjmgFBBCAAQTBqQfwBQcutmgFBBSAAQTxqQcsE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IANBOGohAyACQX9qIgINAAsLIAAoAgAgAUEIQTgQzRMLYwEBfyMAQRBrIgIkAAJAAkAgACkDAFANACACIAA2AgwgAUHmp5oBQREgAkEMakHAAhC8DCEADAELIAIgAEEIajYCCCABQYuUmwFBBSACQQhqQfICELwMIQALIAJBEGokACAAC1gBA38jAEEQayIBJAAgACgCMCECIAAoAjQhAyABIABBHGo2AgwCQCADRQ0AIANBPGwhAANAIAFBDGogAhCRCSACQTxqIQIgAEFEaiIADQALCyABQRBqJAALYQEFfyABKAI0IQIgASgCGCEDIAEoAhQhBCABKAI4IgUhBgNAAkAgBg0AAkAgASgCREUNACABIAEoAkAgAyAFbGo2AkALIABBBDoAAA8LIAIgBCADEPoiIAZBf2ohBgwACwtuAgF/AX4jAEEQayIBJAAgAUEAKAKkkJsBNgIIIAFBACkCnJCbATcDAEKAgIT+pt7hESECA0ACQCACQgBSDQAgACABKAIINgIIIAAgASkDADcCACABQRBqJAAPCyABIAKnELMdIAJCIIghAgwACwtiAQJ/IwBBEGsiBCQAIARBADYCDCAEIAEgBEEMahDWGCAEKAIEIQUgACADNgIQIABBADYCDCAAIAM2AgggACACNgIEIAAgBToAGCAAIAE2AgAgACAEKAIMNgIUIARBEGokAAtsAQN/QQAhAgJAAkACQAJAIAEoAgAiA0GAgICAeHNBCyADQQBIGw4DAAECAwsgAUEEaiECQbiQmwEhBAwCCyABQQRqIQJB9JCbASEEDAELIAFBBGohAkGwkZsBIQQLIAAgBDYCBCAAIAI2AgALYgACQAJAAkACQAJAAkACQCAAKAIADgYBAgMEBQYACyAAQQRqEKUiDwsgAEEIahDSIg8LIABBBGoQlyMPCyAAQQRqEJkjDwsgAEEEahCYIw8LIABBBGoQqiIgAEEIahClIgsLXwECfyAAKAIIIQICQAJAIAFBgAFPDQBBASEDDAELAkAgAUGAEE8NAEECIQMMAQtBA0EEIAFBgIAESRshAwsgACADEPweIAEgACgCBCAAKAIIahDoDiAAIAMgAmo2AggLYAEBfyMAQSBrIgQkACAEIAE2AgQgBCAANgIAIAQgAzYCDCAEIAI2AgggBEEKNgIcIARBATYCFCAEIARBCGo2Ahgg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CyACQQhqIAFBBGoQyhUgAigCDCEDIAIoAgghAQsgACADNgIEIAAgATYCACACQRBqJAALWQEBfyMAQSBrIgMkACADQQhqIAAoAgBBCGpBoMmYARCpHiADKAIMIQAgA0EQaiADKAIIIAEQkgsgA0EQahCpDiACEOUYIAAgACgCAEEBajYCACADQSBqJAALWQEBfyMAQSBrIgMkACADQQhqIAAoAgRBCGpB0MmYARCpHiADKAIMIQAgA0EQaiADKAIIIAEQkgsgA0EQahCpDiACEOUYIAAgACgCAEEBajYCACADQSBqJAALWQEBfyMAQSBrIgMkACADQQhqIAAoAgBBCGpBiMuYARCpHiADKAIMIQAgA0EQaiADKAIIIAEQkgsgA0EQahCpDiACEJwSIAAgACgCAEEBajYCACADQSBqJAALWQEBfyMAQSBrIgMkACADQQhqIAAoAgRBCGpBmMuYARCpHiADKAIMIQAgA0EQaiADKAIIIAEQkgsgA0EQahCpDiACEJwSIAAgACgCAEEBajYCACADQSBqJAALXgIDfwF+IwBBEGsiAiQAIAApAgwhBSAAKAIUIQMgAC8BGCEEIAJBBGogABCICCABIAQ7ARggASADNgIUIAEgBTcCDCABIAIoAgw2AgggASACKQIENwIAIAJBEGokAAtZAQJ/IAAoAgAiAUEEaigCACEAAkAgASgCCCICRQ0AA0AgABCkEyAAQTBqIQAgAkF/aiICDQALIAFBBGooAgAhAAsgASgCACAAQQhBMBDNEyABQRRBBBDOFAtTAAJAAkAgAUUNAAJAAkAgAyABSw0AIAMgAUcNAQwCCyACIAFqLAAAQb9/Sg0BC0EAIQIMAQsgAiABaiECIAMgAWshAQsgACABNgIEIAAgAjYCAAtbAQJ/IwBBEGsiAiQAAkACQCABLQALQf8BRg0AIAJBCGogARCAGyACKAIMIQMgAigCCCEBDAELIAEoAgQhAyABKAIAIQELIAAgATYCACAAIAM2AgQgAkEQaiQAC1YAAkAgAC0AeEEBcUUNACADEOMDDwsgASACIAMQsxshAgJAIAAoAkgiAyAAKAJARw0AIABBwABqEKkaCyAAIANBAWo2AkggACgCRCADQQJ0aiACNgIAC1kBAn8CQCAAQgODQgBSDQAgAKciAiACKAIAIgNBf2o2AgAgA0EBRw0A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AAsLCz8BAX8CQCABKAIIIgJFDQAgAkEEdCECIAEoAgRBDGohAQNAIAAgASgCABCIASABQRBqIQEgAkFwaiICDQALCws/AQF/AkAgASgCCCICRQ0AIAJBBHQhAiABKAIEQQxqIQEDQCAAIAEoAgAQyAEgAUEQaiEBIAJBcGoiAg0ACwsLSgEBfyAAKAIAKAIAIQACQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQugoPCyAAKAIAIAEQmxMPCyAAKAIAIAEQnBMLRAEBfwJAIAAoAggiAiAAKAIARw0AIAAQhhoLIAAgAkEBajYCCCAAKAIEIAJBDGxqIgAgASkCADcCACAAIAEoAgg2AggLUAECfiABKQIAIQIgASkCCCEDIABBBGoQ4iACQCACQu26rbbNhdT14wCFIANC+IKZvZXuxsW5f4WEQgBSDQAgAEEkahCgGAsgAEEwQQQQzhQLPwEBfwJAIAAoAngiBEEBcUUNACADEN0IDwsgASACIAMQsxshAwJAIARBCHFFDQAgACADENIcDwsgACADEIASC0EBAX8CQCAAKAIUIgMgACgCDEcNACAAQQxqEKUaCyAAIANBAWo2AhQgACgCECADQQN0aiIAIAI6AAQgACABNgIAC0EBAX8gACgCCEEEdCECIAAoAgQhAAJAA0AgAkUNASAAIAEQliUgACgCDCABEJocIAJBcGohAiAAQRBqIQAMAAsLCz4AAkAgAiADTw0AQbT9mgFBEyAEENcbAAsgACADNgIEIAAgATYCACAAIAIgA2s2AgwgACABIANBGGxqNgIIC0EBAX8jAEEQayICJAAgAiABNgIEIAIgADYCACACQQE2AgwgAiACNgIIQeKogQEgAkEIahDVGyEBIAJBEGokACABC0cBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABELoKDwsgACgCACABEJsTDwsgACgCACABEJwTCz8BAX8jAEEQayICJAAgACgCACEAIAJBADYCDCACIAEgAkEMahC7DSAAIAIoAgAgAigCBBCGDiACQRBqJABBAAs+AQF/A0ACQCACDQAPCyAAKAAAIQMgACABKAAANgAAIAEgAzYAACACQX9qIQIgAUEEaiEBIABBBGohAAwACws+AQF/A0ACQCACDQAPCyAAKAAA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IANBFGoQrh4ACzoBAX8jAEEQayIDJAAgAyABNgIEIAMgADYCACADQRGtQiCGIAOthDcDCEHNlYABIANBCGogAhDXGwALRAEBfyAAKAIAIQACQCABKAIIIgJBgICAEHENAAJAIAJBgICAIHENACAAIAEQzQ8PCyAALQAAIAEQuxIPCyAAIAEQhxILPQEBfyMAQRBrIgckACAHQQhqIAEtAAAgAyAEENAIIAcoAgwhASAAIAcoAgg2AgAgACABNgIEIAdBEGokAAs/AQJ/AkACQCABKAIAIgIgASgCBCIDRw0ADAELIAEgAkEBajYCACACLQAAIQELIAAgAToAASAAIAIgA0c6AAALQQEBfyABIAEoAggiBEEBajYCCAJAIARBAEgNACAAIAE2AgwgACADNgIIIAAgAjYCBCAAQcDngQE2AgAPCxDfJQALOAEBfyAAIAEoAgAiAjYCCCAAIAEpAgQ3AgAgAEEgIAJBCnZnayIBQQcgAUEHSRtBAnRBAXI2AgwLRgICfwF+IABBCEEJIAG9IgRCf1UiAhtBAyAEQv////////8Hg1AiAxs2AgQgAEHSz5oBQcDcgwEgAhtBz8+aASADGzYCAAtCAAJAIAEoAgBBgICAgHhGDQAgACABKAIINgIIIAAgASkCADcCAA8LIAAgASgCBCIBQQRqKAIAIAFBCGooAgAQ1BMLQQEBfyMAQRBrIgIkACACIAEoAgg2AgggAiABKQIANwMAIAIQgAogACACKAIINgIIIAAgAikDADcCACACQRBqJAALPwEBfyMAQRBrIgIkACACIAEpAgA3AwAgAiABKAIINgIIIAEtAAwhASACQQIQpwsgACABIAIQ9xcgAkEQaiQACzsAAkAgAiAAIANB/wFxai0AQGoiAyAAKAIIIgJJDQAgAyACQdyVhQEQ7hYACyAAKAIEIANBAnRqKAIACz0AAkACQCABQQRNDQAgAUEITA0BIAAoAAUPC0EFIAEgAUGEgIUBEIsKAAtBAEEEIAFBe2pBoIWFARCLCgALRAEBfwJAQRgQiQEiAg0AQQRBGBCNJAALIAIgASkCEDcCECACIAEpAgg3AgggAiABKQIANwIAIAAgAjYCBCAAQQA2AgALRwACQAJAAkACQCAALQAADgUBAQECAwALIABBBGoQpwgLDwsgACgCBCAAKAIIENUjDwsgAEEE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akGc4oMBQdDngwFBywBB+OeDARDQCwALOQIBfwF+IwBBEGsiAiQAIAJBCGogAUEEQQQQ+BYgAikDCCEDIABBADYCCCAAIAM3AgAgAkEQaiQACy4AAkAgASADRg0AIAEgA0sgASADSWsPCyAAIAAgAUECdCIBaiACIAIgAWoQ7RMLOQIBfwF+IwBBEGsiAiQAIAJBCGogAUEBQQEQ+BYgAikDCCEDIABBADYCCCAAIAM3AgAgAkEQaiQACzkBAX8CQCABIAAoAjx2QX5qIgEgACgCFCICSQ0AIAEgAkGcloUBEO4WAAsgACgCECABQQxsaigCCAtBAQF/IwBBEGsiASQAIAEgADYCDCABQcjEmAE2AghBACABQQhqQazShAEgAUEMakGs0oQBQQAgAUGc5YQBENALAAs7AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AghBACADQQhqQcjXhAEgA0EMakHI14QBQQAgAyACENALAAs9AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQdychQFBB0GMooUBQQQgAkEMakGWARDBDiEAIAJBEGokACAACz0BAX8jAEEQayICJAAgAiAAKAIANgIMIAFBlMaXAUEMQbjumgFBAyACQQxqQdgBEMEOIQAgAkEQaiQAIAALPQEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUGgspcBQQpBuO6aAUEDIAJBDGpB2QEQwQ4hACACQRBqJAAgAAs7AQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AghBACADQQhqQfiwhQEgA0EMakH4sIUBQQAgAyACENALAAs+AQF/AkAgASgCiAIiA0UNACAAIAEvAZADNgIIIAAgAkEBajYCBAsgACADNgIAIAFBCEHIA0GYAyACGxDVIQs5AQF/IAAgAhCMHyAAKAIIIQMCQCACRQ0AIAJFDQAgACgCBCADaiABIAL8CgAACyAAIAMgAmo2AggLOgECfyABLQAAIgJBAXYhAwJAIAJBGEkNAEEAIANBC0GArpgBEIsKAAsgACADNgIEIAAgAUEBajYCAAtAAQF/AkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEP8JDwsgACgCACABEJ0TDwsgACgCACABEJ4TCzkBAX8jAEEQayICJAAgAkEIaiAAEIoUIAIoAgggAigCDCABKAIA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ASECAkAgAUGAgICAeEYNACABIABBhAVqIgAoAgAQkBhGDQAgASAAKAIAENsYRiECCyACCzYBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBk5+FAUELIAJBDGpByQAQvAwhACACQRBqJAAgAAs1AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQfyhhQFBECACQQxqQSYQvAwhACACQRBqJAAgAAs2AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQcehhQFBEyACQQxqQZUBELwMIQAgAkEQaiQAIAALNgEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUGYpYUBQQMgAkEMakGjARC8DCEAIAJBEGokACAACzUBAX8jAEEQayICJAAgAiAAKAIANgIMIAFB4LCFAUEJIAJBDGpBJhC8DCEAIAJBEGokACAACzYBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBw66FAUEMIAJBDGpBpwEQvAwhACACQRBqJAAgAAs2AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQeCthQFBDSACQQxqQasBELwMIQAgAkEQaiQAIAALNgEBfyMAQRBrIgIkACACIAAoAgA2AgwgAUG3rIUBQRggAkEMakGyARC8DCEAIAJBEGokACAACzYBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBlKmFAUEMIAJBDGpBtwEQvAwhACACQRBqJAAgAAs2AQF/IwBBEGsiAiQAIAIgACgCADYCDCABQaCphQFBCSACQQxqQcMBELwMIQAgAkEQaiQAIAALOQEBfyAAEN0QIABBMGoQ1RQgACgCkAMiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCkAMQ8hwLCzYBAX8jAEEQayICJAAgAiAAKAIANgIMIAFBmp2FAUEOIAJBDGpBzwAQvAwhACACQRBqJAAgAAszAQF/IwBBEGsiAyQAIANBCGogABCKFCADKAIIIAMoAgwgASACENwfIQAgA0EQaiQAIAALMwEBfyMAQRBrIgMkACADQQhqIAAQihQgAygCCCADKAIMIAEgAhDcHyEAIANBEGokACAACzUBAX8CQCAAKAIIIgIgACgCAEcNACAAEIMaCyAAIAJBAWo2AgggACgCBCACQQJ0aiABNgIACzgBAX8CQCABKAIAIgNB/////wdJDQAgAhD0HQAL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vAwhACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQdmthQFBByACQQxqQakBELwMIQAgAkEQaiQAIAALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHsp4UBQRIgAkEMakGwARC8DCEAIAJBEGokACAACzMBAX8jAEEQayICJAAgAiAANgIMIAFBjqmFAUEGIAJBDGpBtgEQvAwhACACQRBqJAAgAAszAQF/IwBBEGsiAiQAIAIgADYCDCABQa2thQFBCSACQQxqQbsBELwMIQAgAkEQaiQAIAALMgEBfyMAQRBrIgIkACACIAA2AgwgAUGQspcBQRAgAkEMakEmELwMIQAgAkEQaiQAIAALMgEBfyAAKAIIIQEgACgCBCEAAkADQCABRQ0BIAFBf2ohASAAEOUbIABBGGohAAwACwsLMQEBfyMAQRBrIgIkACACQQhqIAAQihQgASACKAIIIAIoAgwQmgchACACQRBqJAAgAAstAAJAIAMgAUkNACAAIAMgAWs2AgQgACACIAFqNgIADwsgASADIAMgBBCLCgALMwEBfyMAQRBrIgIkACACIAA2AgwgAUHIx5gBQQcgAkEMakHJABC8DCEAIAJBEGokACAACzMBAX8CQCABRQ0AA0AgACgCACICEJwBIAJBwABBCBDOFCAAQQRqIQAgAUF/aiIBDQALCwsvAAJAIAFFDQADQAJAIAAoAgBBB0YNACAAEJwICyAAQShqIQAgAUF/aiIBDQALCwszAQF/AkAgAUUNAANAIAAoAgAiAhCcASACQcAAQQgQzhQgAEEMaiEAIAFBf2oiAQ0ACwsLMgEBfyAAQQhqENwLAkAgAEF/Rg0AIAAgACgCBEF/aiIBNgIEIAENACAAQRhBBBDOFAsLMgACQAJAIAAtAHhBAXENACAALQCBAUEIcUUNAQsgAxDjAw8LIAAgASACIAMQsxsQhgkLNAACQCABLQAADQAgACgCICABEJkBIAAoAgBBAkcNACABLQAAQQFxDQAgACgCBCABEJkBCws4AAJAIANFDQACQCABRQ0AIAAgASADIAIoAjQRCwAPCyAAQYCAgIB4NgIADwsgAEGAgICAeDYCAAs1AAJAIAEoAkRFDQACQCABLQBMDQAgASACEJ4GDAELIAEgAjYCBCABQQE2AgALIABBBDoAAAswAQF/IAAgAUEUQQwgASgCAEECSSICG2ooAgA2AgQgACABQRBBCCACG2ooAgA2AgALLgEBfyMAQRBrIgMkACADQQhqIAIgACABEIARIAMoAgghASADQRBqJAAgAUEBRgsuAQF/IwBBEGsiAyQAIANBCGogAiAAIAEQgBEgAygCCCEBIANBEGokACABQQFGCzIAAkACQCAALQB4QQFxDQAgAC0AgQFBCHFFDQELIAMQ3QgPCyAAIAEgAiADELMbEIMUCzkBAX8CQAJAIAAtACxBAkcNACAAKAIYIgEQ5B0gAUEwQQgQzhQMAQsgACkDGBCHIQsgACkDABCHIQs9AQF/IAEgASgCeCIDQf//+/9+cUGAgICAAXI2AnggACABIAIoAgwoAgAgAigCEC0AACACEEMgASADNgJ4CzMBAX8jAEEQayICJAAgAiAANgIMIAFB4o+bAUEJIAJBDGpB3gQQvAwhACACQRBqJAAgAAsuACABQQxsIQECQANAIAFFDQEgACgCACACEL0BIAFBdGohASAAQQxqIQAMAAsLCzAAAkAgACgCACIAKAIAQQNHDQAgAEEQaiABEIoFIABBBGogARDyGw8LIAAgARCcHwsuAQJ/IAAgASgCCCICQX9qIgMgAiADIAJJGyADIAIgAyACSxsQ8xsgASAAEJYlCzIBAX8gAEEMahDBGAJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEgQQQQzhQLCzYAAkAgAC0AFEECRg0AIAAoAgAQuyAgACgCEBC6IiAAKAIMEDdFDQAgACgCBCAAKAIIEKceCwsxAQF/QQEhAgJAAkAgARAZQQFGDQBBACECDAELIAEQMyEBCyAAIAE2AgQgACACNgIACy0AAkACQCACQQFxDQAgAbgQCyECDAELIAGtEAYhAgsgACACNgIEIABBADYCAAstAAJAA0AgAUUNASAAKAIAIABBBGooAgAQniMgAUF/aiEBIABBEGohAAwACwsLLQACQANAIAFFDQEgACgCACAAQQRqKAIAEJ4jIAFBf2ohASAAQRRqIQAMAAsLCy0AAkAgAUUNAANAIAAoAgAgAEEEaigCABDdISAAQRhqIQAgAUF/aiIBDQALCws5AQF/QQEhAQJAIAAtAAQNACAAKAIAIgEoAgBBk++aAUEBIAEoAgQoAgwRDAAhAQsgACABOgAEIAELOQEB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AQF/AkAgASgCACICRQ0AIAAgAhEDAAsCQCABKAIEIgJFDQAgACACIAEoAggQzhQLCy4BAX8CQCABKAIAIgRBAXENACAAIAQgAiADENwbDwsgACABIAQgBCACIAMQ0xMLKgEBfyMAQRBrIgQkACAEQQRqIAIgAxDDFSAAIARBBGoQ3RsgBEEQaiQACzABAX8jAEEQayIBJAAgAUHAABDIDCAAIAEpAgg3AgggACABKQIANwIAIAFBEGokAAsvAQJ/AkAgACgCACIBRQ0AIAEgASgCACICQX9qNgIAIAJBAUcNACAAKAIAEPUcCwsyAQF/AkAgACgCACIBQYGAxABHDQAgACAAQQRqEIocIgE2AgALQQAgACABQYCAxABGGwsvAQF/IwBBIGsiASQAIAFBgICAgHg2AgggACAAIAFBCGoQsxshACABQSBqJAAgAAsxAQF/IABBCGohAgJAIAAoAghBCkYNACACELULCyACIAEpAwg3AwggAiABKQMANwMACyoBAX8jAEEQayIDJAAgA0EEaiABIAIQsRQgACADQQRqEJgbIANBEGokAAsvAQF/IwBBIGsiASQAIAFBgICAgHg2AgggACAAIAFBCGoQsxshACABQSBqJAAgAAsvAAJAAkAgACgCACIAKAIAQQNGDQAgABCUIwwBCyAAQQRqEMQhCyAAQShBCBDOFAszAAJAAkAgACgCACIAKAIAQYCAgIB4Rg0AIAAQlCEMAQsgAEEEahClIgsgAEEYQQQQzhQLLwAgABCNISAAQQxqEJIhIABBMGoQzyIgACgCNBCPIyAAKAI4EI0jIABBGGoQkyELLwEBfwJAIAAoAgAiAUECRg0AIABBBGohAAJAIAENACAAKAIAEJwjDwsgABClIgsLNQEBfyAAQQRqIQECQAJAAkAgACgCAA4CAQIACyABEKoiDwsgASgCABCcIw8LIAEoAgAQmyMLMAACQCAALQAlQQJHDQAgABCZIQ8LIAApAwgQhyEgACgCICIAEKUeIABBKEEIEM4UCzAAIAAoAgAgACgCBCABEK4iIABBIGogARDNISAAKAJoIAEQ9gwgAEHIAGogARC4IAsxAQF/AkAgASgCACICRQ0AIAAgAhEDAAsCQCABKAIEIgJFDQAgACACIAEoAggQzhQLCzEBAX8gAUF4aiICIAIoAgBBAWoiAjYCAAJAIAINAAALIAAgATYCBCAAQdCnnAE2AgALKwACQCABKAIADQAgAUF/NgIAIAAgATYCBCAAIAFBBGo2AgAPCyACEPMdAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhDwDCADQRBqJAALLAACQCABIANHDQACQCABRQ0AIAAgAiAB/AoAAAsPCyABIANBwNmaARD2FgALKwAgACACIAMoAgAQ6gYgAEEQaiACQRBqIAMoAgAQ6gYgAkEIIAEgAxDsBwspAAJAIAEgA0cNAAJAIAFFDQAgACACIAH8CgAACw8LIAEgAyAEEPYWAAstAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahCpJQALMwEBfyABIAIoAgQiAyACKAIIELEhIAAgASgCCDYCCCAAIAEpAgA3AgAgAigCACADEMcjCy8BAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAIAAoAgQQ7hELCy4BAX8CQCABIAAoAhQiAkkNACABIAJB7JeFARDuFgALIAAoAhAgAUECdGooAgALLgEBfwJAIAEgACgCICICSQ0AIAEgAkHslYUBEO4WAAsgACgCHCABQQJ0aigCAAs3AQF/QQghAQJAAkACQCAAKAIAQX5qDgYBAgICAAACC0EEIQELIAAoAgQgACgCCEEEIAEQzxMLCy8BAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAIAAoAgQQ8BELCzAAAkAgACgCAEGAgICAeEcNAEGo5oQBELAjAAsgAEEMaiABEOwJIABBPGogARDsCQsrACAAEKAKIAAoArANIAAoArQNIgAoAghBf2pBeHFqQQhqIAAoAhgRBABqCzABAX8CQEEkEIkBIgINAEEEQSQQjSQACyACIAFBJPwKAAAgACACNgIEIABBCjYCAAssACAAIAFBLkYgAC0ABHI6AAQgACgCACIAKAIAIAEgAEEEaigCACgCEBEIAAstAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIakH0rpgBQQFBABDmDgALKAAgASACIAMgBBDFHyEDIAAgAiAEazYCBCAAIAEgBGpBACADGzYCAAstAAJAIAAoAgAiAEUNACAAEKwPIAAoAgAgAEEEaigCABDhIyAAQRRBBBDOFAsLLQACQCAAKAIAIgBFDQAgABCyFSAAKAIAIABBBGooAgAQ5yMgAEEUQQQQzhQLCy0AAkAgACgCACIARQ0AIAAQ6hsgACgCACAAQQRqKAIAEN4jIABBFEEEEM4UCwsvAQF/IABBBGoiASgCACAAQQhqKAIAEOkaIAAoAgAgASgCABDiIyAAQRxBBBDOFAsvAQF/IABBBGoiASgCACAAQQhqKAIAEOkaIAAoAgAgASgCABDiIyAAQRhBBBDOFAstAAJAAkAgAA0AIAEQiQJBwAAhAAwBCyABQQhqEOMDQSAhAAsgASAAQQgQzhQLMQEBfwJAIAEtADRBAUcNACABLwA5IQIgAUGBAjsAOSAAKAIAIAEQjgIgASACOwA5CwspAQF+IAAgACkDACIBp0F+akECIAFCAVYbQQJ0QbiEnQFqKAIAaigCAAsxAQF+QgAhAgJAIAEtAMgBQaEBRw0AIAEQzBQhAiABEN4RCyAAQQA2AgAgACACNwMICykAAkAgAyACSQ0AIAMgAkH8yoEBEO4WAAsgACABIANBDGxqKQIENwMACzMCAX8BfiAAKAIEIgEgACgCCBD7GCECAkAgACgCACIAQYCAgIB4Rg0AIAAgARC4FAsgAgspAQF/IAAgACgCACIBQX9qNgIAAkAgAUEESQ0AIAFBAnENACAAELILCwssAAJAAkAgACgCAEGJgMQARg0AIABB9ABqEIkbDAELIABBBGohAAsgABCgBAsuAQF/AkBBDBCJASIBDQBBBEEMEI0kAAsgASAAKAIINgIIIAEgACkCADcCACABCy8BAX8gACABQf8BcUECdCIBKALs3pwBIgI2AgAgACACIAEoArTenAFBAXRqNgIECy0AAkAgAS0AEEEBcUUNACADEIUGCwJAIAJFDQAgAxDUBQsgAEGAgICAeDYCAAsxAQJ/AkAgACgCACIBQYCAgIB4Rg0AIAAoAgQiAiAAKAIIEJUdIAEgAkEEQRAQ1RMLCyYBAX9BACEEAkAgASADSQ0AIAIgACABIANraiADEKgYRSEECyAECy4BAX8CQCAAKAIAIgBFDQAgACgCACIBEKMEIAFB4ABBCBDOFCAAQQxBBBDOFAsLLgEBfwJAIAAoAgAiAEUNACAAKAIAIgEQpAQgAUHgAEEIEM4UIABBDEEEEM4UCwsrAQF/IAAoAgAiAkEYaiEAAkAgAi0ALEECRw0AIAAgARDPHgsgASAAEKUJCywBAn8gABCxDAJAIAAoAiAiAUUNACAAKAIkIgJFDQAgACgCKCACIAEQzhQLCygBAX8gAEEEIAAoAgAiAUF8aiABQQRJG0ECdEHgg50BaigCAGooAgALLwACQAJAAkAgACgCAA4CAQIACyAAQQRqEKUiDwsgACkDCBCHIQ8LIAApAwgQhyELKAACQCACDQACQCABRQ0AIAAgAUEIEM4UC0EIDwsgACABQQggAhCzBAsnAANAAkAgAC0AFEECRg0AIAEgABDyBhoPCyAAKAIAQRhqIQAMAAsLOQEBf0EEQRwQ1SAiAEEANgIIIABCgYCAgBA3AgAgAEEAKQOgpZwBNwIMIABBACkDqKWcATcCFCAACysBAX8gAC0AFCEBIABBAToAFCAAQXhqIQACQCABDQAgABDFJQ8LIAAQvCALIwACQCACQQFxRQ0AIAAgASACQQF2EJgUDwsgACABIAIQyAgLKwACQCABQf//A0sNACAAIAE7AQQgAEEANgIADwtBuMOBAUHBACACENcbAAsqAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCABCcBwsLKQEBfwJAAkAgAQ0AIAAhAgwBCyABIAAQvyAiAg0AIAAgARCNJAALIAILKAACQCAFIANNDQBBACAFIANBzNOBARCLCgALIAAgASACIAUgBBCzCQslACAAKAIAIAAoAgQiACgCCEF/akF4cWpBCGogASAAKAIMEQgACyUAIAAoAgAgACgCBCIAKAIIQX9qQXhxakEIaiABIAAoAlARCAALIQACQCABQRdqQXhxQQ9qQXhxIgFFDQAgACABQQgQzhQLCy0BAX5BACkDmJWdASEBQQBCADcDmJWdASAAIAFCIIg+AgQgACABp0EBRjYCAAsmAAJAIAMgAk0NAEEAIAMgAiAEEIsKAAsgACADNgIEIAAgATYCAAsuAQF/IAAoAgQiASAAKAIIEJEdIAAoAgAgARCzIyAAKAIMIAAoAhBBBEEEEM8TCykAAkAgACgCAEGAgICAeEYNACAAEIcbIABBJGoQkxgPCyAAQQRqEIcbCywAIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAFBADYCACABELchCyUAIAAgASgCACABKAIEIgEoAghBf2pBeHFqQQhqIAEoAhQRBwALLgAgASgCAEHxmIUBQe6YhQEgACgCAC0AACIAG0ENQQMgABsgASgCBCgCDBEMAAsqAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCABD1HAsLKgEBfyAAKAIAIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAAoAgAQ2xALCywBAX8gACgCgAIiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCgAIQ8hwLCyoBAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAEPIcCwsqAQF/QQAhAQJAIAAQoglFDQAgABDkBCAAKAIAKAJQIAAoAghHIQELIAELKgEBfwJAIAAoAgAiAkUNACABKAIAIAIgACgCBCABKAIEKAIMEQwADwsACyoBAX8gACgCACIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAKAIAEOcTCwsqAQF/IAAoAgAiASABKAIAIgFBf2o2AgACQCABQQFHDQAgACgCABDuEgsLJQAgAiADIAFBARDMHiEBIAAgA0F/ajYCBCAAIAJBACABGzYCAAslAAJAA0AgAUUNASAAKQMAEIMdIAFBf2ohASAAQRhqIQAMAAsLCysAIABBADYCGCAAQQA6ABQgAEEANgIQIAAgASkDCDcDCCAAIAEpAwA3AwALLgEBfyAAKAIAIQEgAEGBgMQANgIAAkAgAUGBgMQARw0AIABBBGoQihwhAQsgAQsjAAJAIAJBAXFFDQAgACABIAJBAXYQ4BQPCyAAIAEgAhDICAspAAJAIABBgICAgHhGDQAgACABEJ4jDwsgAUEIahDjAyABQSBBCBDOFAsuACABKAIAQaWUmwFBq8OaASAAKAIALQAAIgAbQQdBBSAAGyABKAIEKAIMEQwACykAAkAgACgCAEEHRw0AIAAoAhAiABCJAiAAQcAAQQgQzhQPCyAAEMkLCywAIAAoAgBB3cvdnnlsIAAoAgRqQd3L3Z55bCAAKAIIakHdy92eeWxBD3etCyMAAkAgAkEBcUUNACAAIAEgAkEBdhCxFA8LIAAgASACEMgICycBAX8gAEEYaiECAkAgACkDAEIBUg0AIAIgARDWHA8LIAIgARCXFAskACABKAIUIABBCGoQ8gYaIAEgAEEgahCzIiABIABBJGoQsyILLAEBfyAAQRhqIQECQAJAIAAoAgANACABEJkhDAELIAEQlCELIAApAxAQyyILJwECfyABQQAQECECIAFBARAQIQMgARC6IiAAIAM2AgQgACACNgIACyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEBQQEQxxoLCyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEEQQwQyRoLCysAIAEoAgBBmKKFAUHxmIUBIAAtAAAiABtBD0ENIAAbIAEoAgQoAgwRDAALIwACQCAAKAIAIgBBAXENACAAEIgUDwsgAEF+cSABIAIQ9hgLJwEBfyAAIAAoAgAiAUF/ajYCAAJAIAFBAUcNACAAIAAoAhAQ3h4LCyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEEQQQQ0RoLCyYBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgAUEBQQEQ4hoLCyIAAkAgAUUNAANAIAAQrxUgAEEcaiEAIAFBf2oiAQ0ACwsLIgACQCABRQ0AA0AgABC3ISAAQRxqIQAgAUF/aiIBDQALCwstAQJ/AkAgACgCACIBQYCAgIB4Rg0AIAAoAgQiAiAAKAIIEJUdIAEgAhDMIwsLIwAgACgCACAAKAIEIgAoAghBf2pBeHFqQQhqIAAoAkARBAALJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBHBDiGgsLLgAgASgCACAAKAIAKAIAaEECdCIAKALE3JwBIAAoAvzbnAEgASgCBCgCDBEMAAskAAJAIAApAwBCAoUgACkDCIRQDQAgABD3HSAAQZAFahD3HQsLIwAgACgCBCAAKAIIIgAoAghBf2pBeHFqQQhqIAAoAkARBAALLgAgASgCACAAKAIAKAIAaEECdCIAKAL435wBIAAoArDfnAEgASgCBCgCDBEMAAsmAQF/AkAgASAAKAIAIAAoAggiAmtNDQAgACACIAFBAUEBENEaCwssAQF/IAAoAgAiARCcASABQcAAQQgQzhQgACgCBCIAENoCIABB4ABBCBDOFAsiAAJAIAFFDQADQCAAEJsDIABBOGohACABQX9qIgENAAsLCyIAAkAgAUUNAANAIAAQnAggAEEoaiEAIAFBf2oiAQ0ACwsLIgACQCABRQ0AA0AgABCDAyAAQTBqIQAgAUF/aiIBDQALCwsjAAJAIAFFDQADQCAAEPsDIABB2ABqIQAgAUF/aiIBDQALCwsiAAJAIAFFDQADQCAAEO8HIABBOGohACABQX9qIgENAAsLCyMAAkAgAUUNAANAIAAQqQogAEHAAGohACABQX9qIgENAAsLCyMAAkAgAUUNAANAIAAQ5QcgAEHAAGohACABQX9qIgENAAsLCyoBAX9BpAEhAwJAIAJBBEcNAEGff0GkfyABKAAAQe3K0YsGRhshAwsgAwstAQJ/AkAgACgCACIBQYCAgIB4Rg0AIAAoAgQiAiAAKAIIEJAfIAEgAhDhIwsLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQhBOBDHGgsLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQRBBBDHGgsLJgEBfwJAIAEgACgCACAAKAIIIgJrTQ0AIAAgAiABQQhBMBDHGgsLLAEBfyAAKAIAIgEQ2QEgAUHAAEEIEM4UIAAoAgQiABCmBCAAQeAAQQgQzhQLJwEBfyAAIAAoAgAiAUF/ajYCAAJAIAFBAUcNACAAIAAoAhAQ3h4LCyMAIABBIGogARCKBQJAIAAoAgBBAkcNACAAQQRqIAEQigULCyYAIAAoAgAgACgCBCABEK4iIABBwABqIAEQryIgAEEgaiABELggCyMAIABBIGogARCWJQJAIAAoAgBBAkcNACAAQQRqIAEQliULCykAIAAoAkggACgCTBCeIyAAKAJUIAAoAlgQniMgACgCYCAAKAJkEJ4jCy4AIABBHGpBACABKQIAQsjl9uTn/77HyACFIAEpAghCxp+B1u7psZXnAIWEUBsLKwAgACABKQIQNwIQIAAgASkCCDcCCCAAIAEpAgA3AgAgAUGBgICAeDYCAAstACABKAIAIAAoAgAtAABBAnQiACgC4IadASAAKALUhp0BIAEoAgQoAgwRDAALJQEBfwJAIAAoAjhFDQAgACgCQCIBRQ0AIAAoAjwgAUEBEM4UCwsjAQF/QQEhAQJAIAAoAgAiAEEBcQ0AIAAoAghBAUYhAQsgAQstACABKAIAIAAoAgAtAABBAnQiACgCqKicASAAKAKYqJwBIAEoAgQoAgwRDAALJgACQCAADQBBlKacAUEyEIokAAsgACACIAMgBCAFIAEoAhAREgALHgACQCACIAFJDQAgAiABIAMQ7hYACyAAIAJBAnRqCx8AAkAgAUUNACAAIAFuIAFqQQF2DwtBhIyEARDCIwALLQAgASgCACAAKAIALQAAQQJ0IgAoAujgnAEgACgCzOCcASABKAIEKAIMEQwACy0AIAEoAgAgACgCAC0AAEECdCIAKAKw2pwBIAAoAqTanAEgASgCBCgCDBEMAAstACABKAIAIAAoAgAtAABBAnQiACgCqN6cASAAKAKc3pwBIAEoAgQoAgwRDAALLQAgASgCACAAKAIALQAAQQJ0IgAoAoTknAEgACgC8OOcASABKAIEKAIMEQwACyAAAkAgASAAayIBQRBJDQAgACABEMUGDwsgACABEOYcCyoBAX8gACgCACAAKAIEEKsjIAAoAhAiASAAKAIUEO8dIAAoAgwgARCsIwseAAJAIAIgAUkNACACIAEgAxDuFgALIAAgAkEDdGoLKQAgASAAQYABc0H/AXFBAnQiACgCsPWcASAAKAKw7ZwBIAIoAgwRDAALLQAgASgCACAAKAIALQAAQQJ0IgAoAtj9nAEgACgCzP2cASABKAIEKAIMEQwACy0AIAEoAgAgACgCAC0AAEECdCIAKALw/ZwBIAAoAuT9nAEgASgCBCgCDBEMAAstACABKAIAIAAoAgAtAABBAnQiACgClP6cASAAKAKI/pwBIAEoAgQoAgwRDAALLQAgASgCACAAKAIALQAAQQJ0IgAoAtT+nAEgACgCoP6cASABKAIEKAIMEQwACy0AIAEoAgAgACgCAC0AAEECdCIAKALk/5wBIAAoAtj/nAEgASgCBCgCDBEMAAstACABKAIAIAAoAgAtAABBAnQiACgC/P+cASAAKALw/5wBIAEoAgQoAgwRDAALLQAgASgCACAAKAIALQAAQQJ0IgAoAqCAnQEgACgClICdASABKAIEKAIMEQwACy0AIAEoAgAgACgCAC0AAEECdCIAKALggJ0BIAAoAqyAnQEgASgCBCgCDBEMAAseAAJAIAIgAUkNACACIAEgAxDuFgALIAAgAkEFdGoLHgACQCACIAFJDQAgAiABIAMQ7hYACyAAIAJBAnRqCx4AAkAgAiABSQ0AIAIgASADEO4WAAsgACACQQZ0agsnACAAKQMIIAApAxgQiyUgAEEgahCiIiAAKAI4EI0jIAAoAjwQkCMLHgACQCACIAFJDQAgAiABIAMQ7hYACyAAIAJBDGxqCyUBAX8gASgCACECIAFBADYCACABKAIEIQEgAhDmICAAIAEQlwILIAEBf0EAIQQCQCABIANHDQAgACACIAEQqBhFIQQLIAQLJQEBfyABKAIAIQIgAUEANgIAIAEoAgQhASACEOYgIAAgARC1FAslACAAIAEoAgg2AgQgAEEAIAEoAgQgASgCAEGAgICAeEYbNgIACx8AIAAgAhCpDSAAQRBqIAJBEGoQqQ0gAkEIIAEQtQoLKgAgASgCACAALQAAQQJ0IgAoAoConAEgACgC9KecASABKAIEKAIMEQwACyIBAX8CQCABIAAoAgAgACgCCCICa00NACAAIAIgARDaCgsLIAEBf0EAIQQCQCABIANJDQAgAiAAIAMQqBhFIQQLIAQLIAACQCAAKAIAIgBBAXENACAAEIgUDwsgACABIAIQ9hgLIAEBf0EAIQQCQCABIANHDQAgACACIAEQqBhFIQQLIAQLIAEBf0EAIQQCQCABIANHDQAgACACIAEQqBhFIQQLIAQLJAACQCAADQBBlKacAUEyEIokAAsgACACIAMgBCABKAIQEQ4ACyQAAkAgAA0AQZSmnAFBMhCKJAALIAAgAiADIAQgASgCEBEPAAskAAJAIAANAEGUppwBQTIQiiQACyAAIAIgAyAEIAEoAhARDwALJAACQCAADQBBlKacAUEyEIokAAsgACACIAMgBCABKAIQEQ4ACyQAAkAgAA0AQZSmnAFBMhCKJAALIAAgAiADIAQgASgCEBE5AAskAAJAIAANAEGUppwBQTIQiiQACyAAIAIgAyAEIAEoAhARNQALJAACQCAADQBBlKacAUEyEIokAAsgACACIAMgBCABKAIQEQ4ACyQAAkAgAA0AQZSmnAFBMhCKJAALIAAgAiADIAQgASgCEBEvAAshAAJAIAJFDQAgAiABEL8gIQELIAAgAjYCBCAAIAE2AgALIgEBfyAAIAAoAgAiAUF/ajYCAAJAIAFBAUcNACAAEI4PCwshAAJAIAJFDQAgAiABEL8gIQELIAAgAjYCBCAAIAE2AgALHgAgACgCJEEAIAAoAhwbIAAoAhQgACgCCGpBAnRqCyEAIAAgAhDKBiAAQcAAaiACQcAAahDKBiACQQggARDoBwskACAAKAIAIAAoAgRBBEEEEM8TIAAoAgwgACgCEEEEQQQQzxMLKgAgASgCACAALQAAQQJ0IgAoAuTbnAEgACgCzNucASABKAIEKAIMEQwACx8AIAAgAhCNCSAAQSBqIAJBIGoQjQkgAkEIIAEQggkLHwAgACACEI4JIABBCGogAkEIahCOCSACQQggARD7CAsnAQF/AkBBxAAQiQEiAQ0AQQRBxAAQjSQACyABIABBxAD8CgAAIAELKgAgASgCACAALQAAQQJ0IgAoApDonAEgACgC6OacASABKAIEKAIMEQwACyABAX9BACEEAkAgASADRw0AIAAgAiABEKgYRSEECyAECyoAIAEoAgAgAC0AAEECdCIAKALc6ZwBIAAoArjpnAEgASgCBCgCDBEMAAseACABKAIAIAJBBHRrQXBqKAIAQd3L3Z55bEEPd60LJQEBfwJAQcAAEIkBIgENAEEIQcAAEI0kAAsgASAAKAIAEEwgAQskAQF/AkBBKBCJASIBDQBBCEEoEI0kAAsgASAAKAIAELkFIAELJQEBfwJAQeAAEIkBIgENAEEIQeAAEI0kAAsgASAAKAIAEG4gAQsiAEHo8JoBQd7wmgEgAEEBcSIAG0ELQQogABsgASACEL0ECyQAIABBADYCECAAQQA6ABQgACABKQMINwMIIAAgASkDADcDAAsjACABIAAoAiAQ3QwCQCAAKAIAQQJHDQAgASAAKAIEEN0MCwsjACAAKAIgIAEQvAECQCAAKAIAQQJHDQAgACgCBCABELwBCwsjACABIAAoAiAQyAECQCAAKAIAQQJHDQAgASAAKAIEEMgBCwslACAAIAEoAgg2AgQgAEEAIAEoAgQgASgCAEGAgICAeEYbNgIACyQAAkAgASgCAEGAgICAeEYNACAAIAEgAhDpFw8LIABBBDoAAAsjAQF/IABBBGohAQJAIAAoAgANACABKAIAEI0jDwsgARCIIQslAQF+IAApAwghAQJAIAAoAgANACABEIchDwsgASAAKQMYEIslCyIAAkADQCAALQAlQQJGDQEgACgCICEADAALCyAAIAEQlxQLGwAgACABIAIgAyABQQFyZ0EBdEE+c0EAEN0BCx8AIAAgAhCXCSAAQTBqIAJBMGoQlwkgAkEIIAEQ5AgLIgACQANAIAAtACVBAkYNASAAKAIgIQAMAAsLIAEgABDpDAsbACAAIAEgAiADIAFBAXJnQQF0QT5zQQAQ3gELIQEBf0EAIQECQCAAKAIAQRFHDQAgAEEIahDJEiEBCyABCx8AAkAgAEUNACABIABBBGooAgAgAEEIaigCABDzGwsLHwACQCAARQ0AIAEgAEEMaigCACAAQRBqKAIAEPMbCwsgAQF/QQAhBAJAIAEgA0cNACAAIAIgARCoGEUhBAsgBAshAAJAIAJFDQAgAiABEL8gIQELIAAgAjYCBCAAIAE2AgALIQACQCACRQ0AIAIgARC/ICEBCyAAIAI2AgQgACABNgIACyMBAX8gACgCACEBIABBADYCACAAKAIEIQAgARDmICAAELoiCyMAAkBBACAAKAIAEQQAIgANAEG4pJwBEPwdAAsgACABNgIACyMAIABBATYCBCAAIAEoAgBBgYCAgHhHIgE2AgggACABNgIACyEBAX8CQEECEIkBIgENAEEBQQIQjSQACyABIAA6AAAgAQslAAJAIAAtAAANACABQa7smgFBBRCaBw8LIAFBs+yaAUEEEJoHCxkAAkAgAFANACAAQgODUEUNACAApxCAHwsLIgACQCAADQBBlKacAUEyEIokAAsgACACIAMgASgCEBELAAshACAAKAIAIgAoAgBBCGogACgCBCABKAIAIAEoAgQQvQQLIAACQCABKAIARQ0AIABBqLqYATYCBCAAIAE2AgAPCwALHQAgASgCACACQQV0a0FgaiICKQMAIAIpAwgQvhwLHQAgASgCACACQQR0a0FwaiICKQMAIAIpAwgQvhwLHQACQCABQf8BSQ0AIAAgAawQ/iIPCyAAIAEQkBALJwAgAC0AAEECdCIAKAKM6pwBIAAoAoDqnAEgASgCACABKAIEEL0ECycAIAAtAABBAnQiACgC/OqcASAAKAKY6pwBIAEoAgAgASgCBBC9BAsnACAALQAAQQJ0IgAoAuzrnAEgACgC4OucASABKAIAIAEoAgQQvQQLJwAgAC0AAEECdCIAKAKU7JwBIAAoAvjrnAEgASgCACABKAIEEL0ECycAIAAtAABBAnQiACgC8OycASAAKAKw7JwBIAEoAgAgASgCBBC9BAsdACAAKAIAIgBBEEEgIAAoAgBBA0YbaigCABD5CQsdAAJAIABBAkcNACABQQhqEOMDIAFBIEEIEM4UCwsmAQF/AkAgACgCACIBQYCAgIB4Rg0AIAAQjRsgASAA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fwJAIAAoAgAiAUUNACAAKAIEIAFBARDOFAsLHQACQCAALQALQf4BRw0AIAAoAgAgACgCCBDHDAsLHAEBfwJAIAEgABC/ICICDQAgACABEI0kAAsgAgshAQF/AkAgACgCACIBQYSAgIB4SA0AIAEgACgCBBC0IwsLHgAgACgCACIAKAIAIAAoAgQgASgCACABKAIEEL0ECx4BAX8Q8SAiAUIANwIMIAEgADcCBCABQQE2AgAgAQseAQF/EPEgIgBCADcCBCAAQQo2AgAgAEIANwIMIAALHAAgACgCACIAKAIAIAEgAEEEaigCACgCDBEIAAscAAJAIAAoAgBBAkYNACAAKAIEIAAoAggQniMLCyEAQciNmwFBxo2bASAALQAAG0ECIAEoAgAgASgCBBC9BAshAQF/AkAgACgCACIBQYCAgIB4Rg0AIAEgACgCBBCeIwsLHQACQCAALQALQf4BRw0AIAAoAgAgACgCCBDHDAsLGwAgASACIAMQsxshAyAAQQI6AAAgACADNgIECxsAIAEgAiADELMbIQMgAEEBOgAAIAAgAzYCBAscAQF/AkAgASAAEL8gIgINACAAIAEQjSQACyACCxkAAkAgASAAKAIITQ0AIAAgASACEL4CGgsLGQACQCABIAAoAghNDQAgACABIAIQugIaCwsbACAAIAEQmQUCQCABKAIARQ0AIAEgABD+CAsLIQEBfwJAIAAoAgAiAUGAgICAeEYNACABIAAoAgQQniMLCx0AAkAgAC0AC0H+AUcNACAAKAIAIAAoAggQxwwLCxwBAX8CQCABIAAQvyAiAg0AIAAgARCNJAALIAILGgACQCAALQA0QQRHDQAgABC0HQ8LIAAQvB8LGgAgACkDCBCHISAAQSBqEMoiIABBJGoQyiILGwAgACkDACAAQRBqKQMAEIslIABBGEEIEM4UCxwAIABBDGogACgCBCAAKAIIIAAoAgAoAhARCwALGQACQCABKAIAQRFHDQAgACABQQhqEN8HCwsbACAAKAIAIAAoAgQgARCuIiAAQShqIAEQkiULGQACQCAAKAIAQQFHDQAgAEEEaiABEIoFCwsZAAJAIAAoAgBBA0cNACAAQQRqIAEQigULCxkAAkAgACgCAEEBRw0AIABBBGogARCKBQsLGQACQCAAKAIAQQNHDQAgAEEEaiABEJYlCwsZAAJA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IAFBCGo2AgALHAAgAEEAKQKYlpsBNwIIIABBACkCkJabATcCAAscACAAQQApAujkmgE3AgggAEEAKQLg5JoBNwIACxwAIABBACkCuJabATcCCCAAQQApArCWmwE3AgALEgAgAEEEahDiICAAQSRqEKAYCxYAIABBuOeaATYCBCAAIAFBHGo2AgALFgAgAEHw65oBNgIEIAAgAUEIajYCAAscACAAQQApAqiWmwE3AgggAEEAKQKglpsBNwIACxwAIABBACkC+OSaATcCCCAAQQApAvDkmgE3AgALHAAgAEEAKQLolpsBNwIIIABBACkC4JabATcCAAscACAAQQApAviWmwE3AgggAEEAKQLwlpsBNwIACxwAIABBACkC2JabATcCCCAAQQApAtCWmwE3AgALHAAgAEEAKQLIlpsBNwIIIABBACkCwJabATcCAAsUAAJAIAAoAgBBC0YNACAAEKAiCwsSACAAQQhqEKAiIABBOGoQniILFAACQCAAKAIAQQpGDQAgABCFFgsLFQAgACgCACIAEOsHIABBDEEEEM4UCxQAAkAgAC0AFEEDRg0AIAAQtB0LCxQAAkAgACgCAEEHRg0AIAAQuxULCxQAIAAgASACIAMQ2AYgASAAEKIPCxYAIAAoAgAiABCAByAAQcAAQQgQzhQLFgAgACgCACIAEKIeIABBwABBBBDOFAsUAAJAIAAtAAhBBUkNACAAEKUiCwsYAAJAIAAoAgBBgICAgHhGDQAgABDRIgsLGAACQCAAKAIAQYCAgIB4Rg0AIAAQlCELCxUAIAAoAgAiABC7FSAAQShBCBDOFAsYAQF+IAAtAMgBIAAQxg0hASAAEN4RIAELGAACQCAAKAIAQYCAgIB4Rg0AIAAQjSELCxQAAkAgASgCAEUNACABIAAQigULCxMAAkAgAEEDRw0AIAEgAhC9AQsLFAACQCAAKAIARQ0AIAAgARCVJQsLEwAgASAAENscIABBDGogARCvIgsTACABIABBMGoQ2hwgACABEO0XCxMAIAAgARCTJSAAQQRqIAEQigULFAACQCABKAIARQ0AIAEgABCFBQsLFwAgACABIAAgASACEOMSQcSLmwEQvR8LFAACQCABKAIARQ0AIAEgABCWJQsLFwAgACABIAAgASACEOcRQdSLmwEQvR8LEwAgAEEwaiABEN4cIAAgARDK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ABC4JAALCwAgACgCACABEHMLCwAgAEEMQQQQzhQLCwAgACACIAMQwxULCwAgAiAAIAEQmgcLDgAgAUG4jIMBQRgQmgcLDgAgAUGYjIMBQSAQmgcLCgAgABCMGBpBAQsLACAAIAEgAhCLFgsJACAAEB1BAUYLDAAgACgCACABEM0PCwwAIAAoAgAgARCGCAsMACAAKAIAIAEQ+h8LDAAgACgCACABEPofCwsAIAAoAowDQQJLCwsAIAEgACgCtAJNCwsAIAEgACgCyAJNCwwAIAAoAgAgARDeFQsMACAAKAIAIAEQ4BULDAAgACgCACABEIwNCwwAIAAoAgAgARDgCgsMACAAKAKkDUHEAmoLCgAgAEEwahCGGwsMACAAKAKkDUHEAmoLCwAgAC0ArApBAXELDAAgACgCpA1BxAJqCwsAIAAoAowDQQJLCwwAIAAoAgAgARDfIgsMACAAKAIAIAEQnhALDgAgAUHXzJcBQQIQmgcLDAAgACgCACABEN8iCwwAIAAoAgAgARCmIQsKACAAIAEQtCQACwoAIAAgARC5HgALDAAgACgCACABEPofCw0AQQBBAToAqZSdAQALDAAgACABKQIANwMACwoAIAAgARC2JAALDAAgACgCACABEKUOCwoAIAAQ9RAaQQELCgAgABCsAxpBAQsLACAAIAFBBBCiGwsMACAAKAIAIAEQiBkLDAAgACgCACABEOYaCwwAIAAoAgAgARDdHwsMACAAKAIAIAEQ1x0LDAAgACgCACABEJ4QCwoAIAAgAa0QsxELCgAgABDZDxpBAQsMACAAKAIAIAEQqyELCwAgACABEMcLQQALCwAgACABIAIQsxsLCwAgASAAIAIQ3SQLDAAgACABQZACEMsCCwwAIAAgAUGRAhDLAgsMACAAIAFBkgIQywILDAAgACABQZMCEMsCCwwAIAAgAUGUAhDLAgsMACAAIAFBlQIQywILDAAgACABQZYCEMsCCwwAIAAgAUGXAhDLAgsMACAAIAFBmAIQywILDAAgACABQZkCEMsCCwwAIAAgAUGaAhDLAgsMACAAIAFBmwIQywILDAAgACABQZwCEMsCCwwAIAAgAUGdAhDLAgsMACAAIAFBngIQywILDAAgACABQZ8CEMsCCwwAIAAgAUGgAhDLAgsMACAAIAFBoQIQywILDAAgACABQaICEMsCCwwAIAAgAUGjAhDLAgsMACAAIAFBpAIQywILCwAgACABIAIQsxsLCwAgASAAIAIQxiQLCwAgASAAIAIQ3SQLDAAgACgCACABELEFCwwAIAAoAgAgARCBAwsMACAAKAIAIAEQ3QULDAAgACgCACABEL0cCwwAIAAoAgAgARCtCwsMACAAKAIAIAEQrQsLDAAgACgCACABEOINCwwAIAAoAgAgARC6FAsMACAAKAIAIAEQ3QULDAAgACgCACABEOwKCwwAIAAoAgAgARCRCgsMACAAKAIAIAEQ5xILDAAgACgCACABEKchCwwAIAAoAgAgARDVHQsMACAAKAIAIAEQlAsLDgAgAEHZ75oBQQsQsQoLDAAgACgCACABEK4LCwwAIAAoAgAgARCCAwsMACAAKAIAIAEQsgULDAAgACgCACABEN4FCwwAIAAoAgAgARDjDQsMACAAKAIAIAEQ3gULDAAgACgCACABEK4LCwwAIAAoAgAgARC6CgsOACAAQf8BcS0A+IGdAQsMACAAIAEpAhA3AwALDAAgACgCACABEKUOCwwAIAAoAgAgARClDgsMACAAKAIAIAEQvxILDAAgACgCACABEN8PCwwAIAAoAgAgARCPCgsLACAAIAFBBBDaEwsLACAAQRBBBBDOFAsKACAAEIgGGkEBCwwAIAAQvSEgABCDJQsLACAAQThBBBDOFAsLACAAIAEgAhCAEwsMACAAEJUiIAAQhiULCwAgAEEwQQQQzhQLCgAgAEEIahCgGAsMACAAKAIAIAEQhggLDAAgACgCACABEM4NCwsAIAAgAUEIENoTCwwAIAAQiSEgARDLIgsMACABEL4hIAAQyyILDAAgABCHISABEIchCwsAIABBBCABENUhCwwAIAAoAgAgARCqBwsMACABIAAoAgAQ9xoLDAAgASAAKAIAEPcaCwwAIAAoAgAgARCzFAsMACAAKAIAIAEQ7RcLDAAgACgCACABEL4YCwwAIAAoAgAgARCFBQsMACAAKAIAIAEQ6gILDAAgACgCACABENgECwwAIAAoAgAgARC6EgsMACAAKAIAIAEQyhMLDAAgACgCACABELoSCw4AIABB4KecAUGCBxA8CwoAIABBeGoQvCALCwAgACABIAIQkQMLCQAgAEEANgIACwkAIABCATcDAAsJACAAIAEQ+h8LBwAgAEF+cQsKACAAKAIAEIgUCwkAQQFBABD8GAsJACAAIAAQtxQLCAAgAEGAAmoLCAAgAEGQA2oLCAAgAEHIAGoLCQAgAEEANgIACwgAIAAQ7RIACwsAQQAoArCQnQFFCw0AIABBgICAgHg2AgALDABBx/eaAUEKEPsYCwwAQYXumgFBCBD7GAsMAEGN7poBQQgQ+xgLDABBy/CaAUEIEPsYCwwAQbqhmgFBCRD7GAsMAEHz05gBQQkQ+xgLCQAgACABEMQWCwkAIAAgARC2DgsJACAAIAEQ+h8LDABBv+yaAUEIEPsYCwwAQdnvmgFBCxD7GAsMAEGo75oBQQgQ+xgLDABBp+6aAUEIEPsYCwwAQa/umgFBCBD7GAsMAEHSz5oBQQgQ+xgLDABBuc+aAUENEPsYCwwAQcbPmgFBCRD7GAsMAEGkz5oBQQ4Q+xgLBwAgAEEYagsJACAAIAEQniMLCQAgACABEN8iCwgAIAAgARBzCwkAIAAgARDfIgsJACAAIAEQ6xYLCgAgACgCABC7IAsKABDdCiAAEMgNCwkAIAAgARCHAgsJACAAIAEQqQYLBwAgACgCQAsIACAALQDEAgsHACAAKAIUCwgAIAAoAqwCCwgAIAAoArACCwUAIAFFCwgAIAAtANgCCwcAIAAoAiALCAAgACgCwAILCAAgACgCxAILCAAgAC0AzBILCAAgAC0AvA0LBwAgABChDQsHACAAEKAKCwcAIAAQqBILBwAgACgCQAsHAEEAEKIUCwcAIAAoAiALBwAgACgCJAsHACAAKAIoCwcAIAAQ+QgLBABBAQsEACAACwMAAAsEAEEACwQAQQALBABBAAsEAEEBCwQAQQELBAAgAAsEAEEACwQAQQELBAAgAAsEAEEBCwQAQQALAwAACwcAQbiUnQELBwBBvJSdAQsEAEEACwQAQQALBwBBxJSdAQsEAEEBCwIACwIACwIACwIACwvwjx0CAEGAgIABC6CHHcDAAAJceMAAAy0weMAAAjB4wAAGX2F3YWl0wAAGc3VwZXJfwAAQQHN3Yy9oZWxwZXJzL18vX8AAwAFfwAAFNDg7MjvAATvAATvAAAUzODsyO8ABO8ABO8AAwAE6wAADXHgwwAAEXHUwMMAAwAEvwADAAi4uwAACLS7AAMABLsAAAS3AAmUtwADAAS3AABBnb3QgY29kZXBvaW50IFUrwCYgd2hpY2ggb2NjdXJzIGJlZm9yZSBsYXN0IGNvZGVwb2ludCBVK8AAF2JhZCByZWZlcmVuY2UgdG8gbmFtZSAjwAAZYmFkIHJlZmVyZW5jZSB0byBzb3VyY2UgI8AAASPAABppbnZhbGlkIHV0Zi04IHNlcXVlbmNlIG9mIMASIGJ5dGVzIGZyb20gaW5kZXggwAAqaW5jb21wbGV0ZSB1dGYtOCBieXRlIHNlcXVlbmNlIGZyb20gaW5kZXggwABKaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgbGl0ZXJhbCBvciBjb25jYXQsIGdvdCDAAEBpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBsaXRlcmFsLCBnb3QgwAAYZXhwZWN0ZWQgY2hhciBhdCBvZmZzZXQgwAAcZ2F2ZSB1cCBzZWFyY2hpbmcgYXQgb2Zmc2V0IMAAIXF1aXQgc2VhcmNoIGFmdGVyIG9ic2VydmluZyBieXRlIMALIGF0IG9mZnNldCDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAVYnl0ZSByYW5nZSBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwADABCBhdCDAACBpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAqaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogwBcgaXMgYWxyZWFkeSByZW5hbWVkIHRvIMAWLCBidXQgaXQncyByZW5hbWVkIGFzIMAATWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHBhcnNlX2xpdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgwAADb3IgwAAVVW5leHBlY3RlZCBjaGFyYWN0ZXIgwAARY2FsbGVkIGV4cGVjdCBvbiDAAMAJIGF0IGxpbmUgwAggY29sdW1uIMAADWludmFsaWQgc3BhbiDAGCBmb3IgaGF5c3RhY2sgb2YgbGVuZ3RoIMAAEXN0YXJ0IGJ5dGUgaW5kZXggwCcgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc3RyaW5nIG9mIGxlbmd0aCDAAA9lbmQgYnl0ZSBpbmRleCDAJyBpcyBvdXQgb2YgYm91bmRzIGZvciBzdHJpbmcgb2YgbGVuZ3RoIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAMAVIGV4Y2VlZHMgY2FwYWNpdHkgb2YgwBAgd2hlbiBpbnNlcnRpbmcgwAAHc3RyaW5nIMAAKEJhZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlLCBleHBlY3RlZCDAABF1bmtub3duIHZhcmlhbnQgYMAMYCwgZXhwZWN0ZWQgwAAPaW52YWxpZCBsZW5ndGggwAssIGV4cGVjdGVkIMAAD2ludmFsaWQgdmFsdWU6IMALLCBleHBlY3RlZCDAAA5pbnZhbGlkIHR5cGU6IMALLCBleHBlY3RlZCDAABJVbmV4cGVjdGVkIHRva2VuIGDADGAuIEV4cGVjdGVkIMAAInNwYXJzZSBzZXQgY2FwYWNpdHkgY2Fubm90IGV4Y2NlZCDAAAFbwAJdIMAADGNhcHR1cmUocGlkPcAILCBncm91cD3ABywgc2xvdD3ABSkgPT4gwADAAS3ABCA9PiDAABBtYXAuc3RhcnRfcG9zID0gwBY7IHRvdGFsX2V4dHJhX2J5dGVzID0gwAk7IGJwb3MgPSDAAB1pbnZhbGlkIHJhbmdlIG1hcHBpbmcgaW5kZXg6IMAAU2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGB0b2tlbl92YWx1ZWAgc2hvdWxkIGJlIGEgd29yZCwgYnV0IGdvdDogwAAvdHJpZWQgdG8gdW53cmFwIGJ5dGUgY2xhc3MgZnJvbSBIaXJGcmFtZSwgZ290OiDAADJ0cmllZCB0byB1bndyYXAgVW5pY29kZSBjbGFzcyBmcm9tIEhpckZyYW1lLCBnb3Q6IMAAKXRyaWVkIHRvIHVud3JhcCBleHByIGZyb20gSGlyRnJhbWUsIGdvdDogwAAqdHJpZWQgdG8gdW53cmFwIGdyb3VwIGZyb20gSGlyRnJhbWUsIGdvdDogwAAvdHJpZWQgdG8gdW53cmFwIHJlcGV0aXRpb24gZnJvbSBIaXJGcmFtZSwgZ290OiDAAC10cmllZCB0byB1bndyYXAgYWx0IHBpcGUgZnJvbSBIaXJGcmFtZSwgZ290OiDAABBhc3NlcnRpb24gYGxlZnQgwBcgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IMAJCiByaWdodDogwAAQYXNzZXJ0aW9uIGBsZWZ0IMAQIHJpZ2h0YCBmYWlsZWQ6IMAJCiAgbGVmdDogwAkKIHJpZ2h0OiDAAD9pbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnZhbGlkIHN5bnRheDogUGF0OiDAAAZyYW5nZSDAECBvdXQgb2YgYm91bmRzOiDAAAdlcnJvcjogwAAaaW52YWxpZCBiYXNlNjQgY2hhcmFjdGVyOiDAACZjYW5ub3QgZmxhdHRlbiB0aGUgaW5kZXhlZCBzb3VyY2VtYXA6IMAACmJhZCBqc29uOiDAAEhjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiDAAFFpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBmb3VuZCBpbXBvc3NpYmxlIGVycm9yIGluIG1ldGEgZW5naW5lOiDAAAZpbmRleCDADyBvdXQgb2YgcmFuZ2U6IMAAKmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IMAALVVuZXhwZWN0ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlc2VydmVkIHdvcmQ6IMAAEWludmFsaWQgJ3RvJyBpZDogwAATaW52YWxpZCAnZnJvbScgaWQ6IMAAKW5vdCB5ZXQgaW1wbGVtZW50ZWQ6IGpzb24gc3ViZGlhZ25vc3RpYzogwADAAjogwADAwMABIMAAAiAgwAEgwAADXHV7wAF9AAlFeHBlY3RlZCDABiBkaWdpdAABJ8BNJyBtb2RpZmllciBjYW4gb25seSBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlciBvZiBhIGZ1bmN0aW9uLCBtZXRob2Qgb3IgY2xhc3MAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvZW1wdHkucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9tZXRhL3N0cmF0ZWd5LnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3ByZWZpbHRlci90ZWRkeS5ycwAvcnVzdC9kZXBzL3J1c3RjLWRlbWFuZ2xlLTAuMS4yNy9zcmMvbGVnYWN5LnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvdHdvd2F5LnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9qc3gucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2h5YnJpZC9yZWdleC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2luZGV4LnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvYWxsb2Mvc3JjL2JvcnJvdy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93eXotMC41LjEvc3JjL2NvbXUucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL2lucHV0LnJzAGNyYXRlcy9zd2NfY29tbW9uL3NyYy9pbnB1dC5ycwBjcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9saXN0LnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC91bnN0YWJsZS9xdWlja3NvcnQucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9jb252ZXJ0LnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci90eXBlc2NyaXB0LnJzAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3R5cGVzY3JpcHQucnMAY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL3R5cGVzY3JpcHQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFya2luZ19sb3RfY29yZS0wLjkuMTAvc3JjL3BhcmtpbmdfbG90LnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9jdXJyZW50LnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9pZGVudC5ycwBjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvc3RtdC5ycwBjcmF0ZXMvc3djX2VjbWFfY29kZWdlbi9zcmMvc3RtdC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYW55aG93LTEuMC4xMDAvc3JjL2ZtdC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91dWlkLTEuMTYuMC9zcmMvZm10LnJzAGNyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9saXQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9zaGlmdC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWdpbnQvc2hpZnQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvcHJlZmlsdGVyL2J5dGVzZXQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvc3BhcnNlX3NldC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9hbHBoYWJldC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvYWxwaGFiZXQucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL29iamVjdC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9zdG9wYXQucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvcGFyc2VyL3BhdC5ycwBjcmF0ZXMvc3djX2VjbWFfYXN0L3NyYy9wYXQucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2RpeV9mbG9hdC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL25mYS9ub25jb250aWd1b3VzLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvbmZhL2NvbnRpZ3VvdXMucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWludGVnZXItMC4xLjQ2L3NyYy9yb290cy5ycwBjcmF0ZXMvc3djX2NvbW1vbi9zcmMvY29tbWVudHMucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL3RyYWl0cy5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvZGZhL29uZXBhc3MucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL21ldGEvd3JhcHBlcnMucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy9mbXQvYnVpbGRlcnMucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtMS4xMC42L3NyYy9idWlsZGVycy5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbWFydHN0cmluZy0xLjAuMS9zcmMvb3BzLnJzAGNyYXRlcy9zd2NfY29tbW9uL3NyYy9zeW50YXhfcG9zLnJzAGNyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy9tb2R1bGVfZGVjbHMucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvcHJpbWl0aXZlcy5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcHJpbWl0aXZlcy5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ieXRlcy0xLjExLjEvc3JjL2J5dGVzLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2NhcHR1cmVzLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VuaWNvZGUtd2lkdGgtMC4yLjIvc3JjL3RhYmxlcy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL2NoYXIvbWV0aG9kcy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvbXV0ZXgvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3N5bmMvb25jZS9ub190aHJlYWRzLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2J5dGVzLXN0ci0wLjIuNS9zcmMvYnl0ZV9zdHIucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9leHByLnJzAGNyYXRlcy9zd2NfZWNtYV91dGlscy9zcmMvY29uc3RydWN0b3IucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvZXJyb3IucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9lcnJvci5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hbnlob3ctMS4wLjEwMC9zcmMvZXJyb3IucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL21ldGEvZXJyb3IucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvcHJlZmlsdGVyL21lbWNoci5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21lbWNoci5ycwBjcmF0ZXMvc3djX2VjbWFfdHJhbnNmb3Jtc19iYXNlL3NyYy9maXhlci5ycwBiaW5kaW5ncy9iaW5kaW5nX3R5cGVzY3JpcHRfd2FzbS9zcmMvZXJyb3JfcmVwb3J0ZXIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL3ByZWZpbHRlci5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9pdGVyLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xNDAvc3JjL3Nlci5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3V0aWwvcmVtYXBwZXIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2RmYS9yZW1hcHBlci5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9yZXZlcnNlX2lubmVyLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9uZmEvdGhvbXBzb24vY29tcGlsZXIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWVtY2hyLTIuNy42L3NyYy9tZW1tZW0vc2VhcmNoZXIucnMAY3JhdGVzL3N3Y19zb3VyY2VtYXAvc3JjL2VuY29kZXIucnMAY3JhdGVzL3N3Y19jb21tb24vc3JjL2Vycm9ycy9kaWFnbm9zdGljX2J1aWxkZXIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL25mYS90aG9tcHNvbi9idWlsZGVyLnJzAGNyYXRlcy9zd2Nfc291cmNlbWFwL3NyYy9idWlsZGVyLnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL2xleGVyL251bWJlci5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZGVjMmZsdC9kZWNpbWFsX3NlcS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3BhY2tlZC9yYWJpbmthcnAucnMAY3JhdGVzL3N3Y19jb21tb24vc3JjL3NvdXJjZV9tYXAucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL25mYS90aG9tcHNvbi9tYXAucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL3JlcHIvaGVhcC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvcGFja2VkL3BhdHRlcm4ucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMDAvc3JjL2NhY2hlL2ludGVybi5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL2F1dG9tYXRvbi5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2FkZGl0aW9uLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvb3BzL2Z1bmN0aW9uLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjYvc3JjL2JpZ3VpbnQvc3VidHJhY3Rpb24ucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuNi9zcmMvYmlndWludC9tdWx0aXBsaWNhdGlvbi5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC42L3NyYy9iaWd1aW50L2RpdmlzaW9uLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9mbHQyZGVjL3N0cmF0ZWd5L2RyYWdvbi5ycwBjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvY2xhc3NfYW5kX2ZuLnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL2xleGVyL3Rva2VuLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9uZmEvdGhvbXBzb24vcGlrZXZtLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9iaWdudW0ucnMAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfdHlwZXNjcmlwdC9zcmMvdHNfZW51bS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJraW5nX2xvdF9jb3JlLTAuOS4xMC9zcmMvdGhyZWFkX3Bhcmtlci93YXNtLnJzAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3RyYW5zZm9ybS5ycwBjcmF0ZXMvaHN0ci9zcmMvd3RmOF9hdG9tLnJzAGNyYXRlcy9zd2NfZWNtYV9wYXJzZXIvc3JjL3BhcnNlci9tb2R1bGVfaXRlbS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9wcmVmaWx0ZXIvbWVtbWVtLnJzAGNyYXRlcy9zd2NfZWNtYV9jb2RlZ2VuL3NyYy90ZXh0X3dyaXRlci9iYXNpY19pbXBsLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3Bvb2wucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvaW50ZXJ2YWwucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvbGl0ZXJhbC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbWV0YS9saXRlcmFsLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvbG9vay5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L3N0ZC9zcmMvc3luYy9sYXp5X2xvY2sucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy9haG9jb3Jhc2ljay5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbmZhL3Rob21wc29uL2JhY2t0cmFjay5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaXR2ZWMtMS4wLjEvc3JjL3NsaWNlL2FwaS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9haG8tY29yYXNpY2stMS4xLjMvc3JjL3BhY2tlZC9hcGkucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9zdGQvc3JjL3BhdGgucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvc2VhcmNoLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvdXRpbC9zZWFyY2gucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL2h5YnJpZC9zZWFyY2gucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYWhvLWNvcmFzaWNrLTEuMS4zL3NyYy91dGlsL2RlYnVnLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvZGVidWcucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC41MC9zcmMvcXVldWUucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvc3RhdGUucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvZGV0ZXJtaW5pemUvc3RhdGUucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvdHJhbnNsYXRlLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvYXN0L3BhcnNlLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9kZWMyZmx0L3BhcnNlLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTIuMC9zcmMvbWFwL2NvcmUucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL3V0aWwvd2lyZS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvdXRpbC9lc2NhcGUucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2lubGluZS5ycwBjcmF0ZXMvc3djX2NvbW1vbi9zcmMvc3ludGF4X3Bvcy9oeWdpZW5lLnJzAGNyYXRlcy9zd2NfY29tbW9uL3NyYy9zeW50YXhfcG9zL2FuYWx5emVfc291cmNlX2ZpbGUucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbmZhL3Rob21wc29uL2xpdGVyYWxfdHJpZS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1hdXRvbWF0YS0wLjQuNy9zcmMvbmZhL3Rob21wc29uL3JhbmdlX3RyaWUucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbm9kZS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yZWdleC1zeW50YXgtMC44LjQvc3JjL3VuaWNvZGUucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9zdGQvc3JjL3N5bmMvb25jZS5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaXR2ZWMtMS4wLjEvc3JjL3NsaWNlLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvaW1wX3N0ZC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNC41L3NyYy9yYXcvbW9kLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9oYXNoYnJvd24tMC4xNi4wL3NyYy9yYXcvbW9kLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LXN5bnRheC0wLjguNC9zcmMvYXN0L21vZC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAY3JhdGVzL3N3Y19jb21tb24vc3JjL2Vycm9ycy9tb2QucnMAY3JhdGVzL3N3Y19lY21hX3RyYW5zZm9ybXNfYmFzZS9zcmMvaGVscGVycy9tb2QucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy9ic3RyL21vZC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb21wYWN0X3N0ci0wLjcuMS9zcmMvcmVwci9tb2QucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy9oaXIvbW9kLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvcGFja2VkcGFpci9tb2QucnMAY3JhdGVzL3N3Y19lY21hX3BhcnNlci9zcmMvbGV4ZXIvbW9kLnJzAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2Uvc3JjL3Jlc29sdmVyL21vZC5ycwBjcmF0ZXMvc3djX2VjbWFfcGFyc2VyL3NyYy9wYXJzZXIvbW9kLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21lbWNoci0yLjcuNi9zcmMvYXJjaC9hbGwvbW9kLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL2RldGVybWluaXplL21vZC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9zeW1ib2xpemUvbW9kLnJzAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX2Jhc2Uvc3JjL3JlbmFtZS9tb2QucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfY29yZS0xLjAuMjI4L3NyYy9kZS9tb2QucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2Y1ZWNhNGZjZmE5MDhkMWUwMzhhZmQxOWM2ZTc0NmYwNzU4NTkxMzAvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZmx0MmRlYy9tb2QucnMAY3JhdGVzL2hzdHIvc3JjL3d0ZjgvbW9kLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvaWQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc21hcnRzdHJpbmctMS4wLjEvc3JjL2JveGVkLnJzAC9ydXN0Yy9mNWVjYTRmY2ZhOTA4ZDFlMDM4YWZkMTljNmU3NDZmMDc1ODU5MTMwL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtYXV0b21hdGEtMC40Ljcvc3JjL21ldGEvbGltaXRlZC5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuNTAvc3JjL3Rhc2svc2luZ2xldGhyZWFkLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3RyaW9tcGhlLTAuMS4xNC9zcmMvYXJjLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwAvcnVzdGMvZjVlY2E0ZmNmYTkwOGQxZTAzOGFmZDE5YzZlNzQ2ZjA3NTg1OTEzMC9saWJyYXJ5L2FsbG9jL3NyYy9zeW5jLnJzAGNyYXRlcy9zd2NfZWNtYV90cmFuc2Zvcm1zX3R5cGVzY3JpcHQvc3JjL3NlbWFudGljLnJzAGNyYXRlcy9oc3RyL3NyYy9keW5hbWljLnJzAGNyYXRlcy9zd2NfZWNtYV91dGlscy9zcmMvbGliLnJzAGNyYXRlcy9oc3RyL3NyYy9saWIucnMAY3JhdGVzL3N3Y190c19mYXN0X3N0cmlwL3NyYy9saWIucnMAY3JhdGVzL3N3Y19lY21hX2NvZGVnZW4vc3JjL2xpYi5ycwBiaW5kaW5ncy9iaW5kaW5nX3R5cGVzY3JpcHRfd2FzbS9zcmMvbGliLnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI3L3NyYy9saWIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuMy9zcmMvbGliLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BoZl9zaGFyZWQtMC4xMS4zL3NyYy9saWIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY29tcGFjdF9zdHItMC43LjEvc3JjL2xpYi5ycwAvaG9tZS9ub2RlL2hvbWUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ydXN0Yy1oYXNoLTIuMS4xL3NyYy9saWIucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2NvcGVkLXRscy0xLjAuMS9zcmMvbGliLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC41MC9zcmMvbGliLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9uZmEvdGhvbXBzb24vbmZhLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy9oeWJyaWQvZGZhLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Foby1jb3Jhc2ljay0xLjEuMy9zcmMvZGZhLnJzAC9ob21lL25vZGUvaG9tZS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JlZ2V4LWF1dG9tYXRhLTAuNC43L3NyYy91dGlsL3V0ZjgucnMAL2hvbWUvbm9kZS9ob21lLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmVnZXgtc3ludGF4LTAuOC40L3NyYy91dGY4LnJzAC9ydXN0L2RlcHMvcnVzdGMtZGVtYW5nbGUtMC4xLjI3L3NyYy92MC5ycwAddW5leHBlY3RlZCByZWdleCBmaW5kIGVycm9yOiDANQp0byBoYW5kbGUgZmluZCBlcnJvcnMsIHVzZSAndHJ5JyBvciAnc2VhcmNoJyBtZXRob2RzAAEnwFInIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIHR5cGUgcGFyYW1ldGVyIG9mIGEgY2xhc3MsIGludGVyZmFjZSBvciB0eXBlIGFsaWFzAAEnwCwnIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSB0eXBlIHBhcmFtZXRlcgABJ8AzJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyAAEnwDUnIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbgATaGF5c3RhY2sgb2YgbGVuZ3RoIMAMIGlzIHRvbyBsb25nAAFgwCZgIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYGZyb21gIGNsYXVzZQABYMAwYCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlADlpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBzdHI6OmZyb21fdXRmOCjABCkgPSDAIiB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGNoYXIsIGJ1dCDAESBjaGFycyB3ZXJlIGZvdW5kAAZMYWJlbCDAFCBpcyBhbHJlYWR5IGRlY2xhcmVkACphbmNob3JlZCBzZWFyY2hlcyBmb3IgYSBzcGVjaWZpYyBwYXR0ZXJuICjAHikgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgZW5hYmxlZAAQZmxvYXRpbmcgcG9pbnQgYMABYAABYMAGYCBvciBgwAFgAAtjaGFyYWN0ZXIgYMABYAAJaW50ZWdlciBgwAFgAAlib29sZWFuIGDAAWAAEWR1cGxpY2F0ZSBmaWVsZCBgwAFgAAFgwAFgAFwAwAUgPT4gWwBSQSBzdHJpbmcgbGl0ZXJhbCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nLgotIERpZCB5b3UgbWVhbiBgaW1wb3J0IHsgIsAMIiBhcyBmb28gfWA/AB9VbmV4cGVjdGVkIHRva2VuLiBEaWQgeW91IG1lYW4gwAE/AAE8wAggbWFjcm9zPgAsRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDzAAT4AATzAAT4AASbAATsAwAk6IGJwb3MgPSDADTsgbGluZWJwb3MgPSDAATsADUJpdFNwYW5FcnJvcjzAAz46OgAEZ290IMAaIHNlZ21lbnRzLCBleHBlY3RlZCA0IG9yIDUAASfAICcgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCAnwAsnIG1vZGlmaWVyLgABJ8AZJyBtb2RpZmllciBtdXN0IHByZWNlZGUgJ8ALJyBtb2RpZmllci4AASfAGCcgbW9kaWZpZXIgYWxyZWFkeSBzZWVuLgAkRHVwbGljYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZyAnwAInLgARc3RhcnQgYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMALIG9mIHN0cmluZykAD2VuZCBieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAsgb2Ygc3RyaW5nKQBAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBwYXR0ZXJuOiBFeHByKMABKQAGdW5pb24owAEpAAhKc1ZhbHVlKMABKQAHc3BhcnNlKMABKQAGTUFUQ0gowAEpADpleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBwYXJlbnRoZXNlcy9icmFja2V0cyAowAEpADFleGNlZWRlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyAowAEpACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQACICjAASkAFWBhdGAgc3BsaXQgaW5kZXggKGlzIMAXKSBzaG91bGQgYmUgPD0gbGVuIChpcyDAASkAFGluc2VydGlvbiBpbmRleCAoaXMgwBcp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MDAwNDg7MjsxNTM7MDUwOzIwNDQ4OzI7MTM5OzAwMDswMDA0ODsyOzIzMzsxNTA7MTIyNDg7MjsxNDM7MTg4OzE0MzQ4OzI7MDcyOzA2MTsxMzk0ODsyOzA0NzswNzk7MDc5NDg7MjswMDA7MjA2OzIwOTQ4OzI7MTQ4OzAwMDsyMTE0ODsyOzI1NTswMjA7MTQ3NDg7MjswMDA7MTkxOzI1NTQ4OzI7MTA1OzEwNTsxMDU0ODsyOzAzMDsxNDQ7MjU1NDg7MjsxNzg7MDM0OzAzNDQ4OzI7MjU1OzI1MDsyNDA0ODsyOzAzNDsxMzk7MDM0NDg7MjsyNTU7MDAwOzI1NTQ4OzI7MjIwOzIyMDsyMjA0ODsyOzI0ODsyNDg7MjU1NDg7MjsyNTU7MjE1OzAwMDQ4OzI7MjE4OzE2NTswMzI0ODsyOzEyODsxMjg7MTI4NDg7MjswMDA7MTI4OzAwMDQ4OzI7MTczOzI1NTswNDc0ODsyOzI0MDsyNTU7MjQwNDg7MjsyNTU7MTA1OzE4MDQ4OzI7MjA1OzA5MjswOTI0ODsyOzA3NTswMDA7MTMwNDg7MjsyNTU7MjU1OzI0MDQ4OzI7MjQwOzIzMDsxNDA0ODsyOzIzMDsyMzA7MjUwNDg7MjsyNTU7MjQwOzI0NTQ4OzI7MTI0OzI1MjswMDA0ODsyOzI1NTsyNTA7MjA1NDg7MjsxNzM7MjE2OzIzMDQ4OzI7MjQwOzEyODsxMjg0ODsyOzIyNDsyNTU7MjU1NDg7MjsyNTA7MjUwOzIxMDQ4OzI7MjExOzIxMTsyMTE0ODsyOzE0NDsyMzg7MTQ0NDg7MjsyNTU7MTgyOzE5MzQ4OzI7MjU1OzE2MDsxMjI0ODsyOzAzMjsxNzg7MTcwNDg7MjsxMzU7MjA2OzI1MDQ4OzI7MTE5OzEzNjsxNTM0ODsyOzE3NjsxOTY7MjIyNDg7MjsyNTU7MjU1OzIyNDQ4OzI7MDAwOzI1NTswMDA0ODsyOzA1MDsyMDU7MDUwNDg7MjsyNTA7MjQwOzIzMDQ4OzI7MTI4OzAwMDswMDA0ODsyOzEwMjsyMDU7MTcwNDg7MjswMDA7MDAwOzIwNTQ4OzI7MTg2OzA4NTsyMTE0ODsyOzE0NzsxMTI7MjE5NDg7MjswNjA7MTc5OzExMzQ4OzI7MTIzOzEwNDsyMzg0ODsyOzAwMDsyNTA7MTU0NDg7MjswNzI7MjA5OzIwNDQ4OzI7MTk5OzAyMTsxMzM0ODsyOzAyNTswMjU7MTEyNDg7MjsyNDU7MjU1OzI1MDQ4OzI7MjU1OzIyODsyMjU0ODsyOzI1NTsyMjg7MTgxNDg7MjsyNTU7MjIyOzE3MzQ4OzI7MDAwOzAwMDsxMjg0ODsyOzI1MzsyNDU7MjMwNDg7MjsxMjg7MTI4OzAwMDQ4OzI7MTA3OzE0MjswMzU0ODsyOzI1NTsxNjU7MDAwNDg7MjsyNTU7MDY5OzAwMDQ4OzI7MjE4OzExMjsyMTQ0ODsyOzIzODsyMzI7MTcwNDg7MjsxNTI7MjUxOzE1MjQ4OzI7MTc1OzIzODsyMzg0ODsyOzIxOTsxMTI7MTQ3NDg7MjsyNTU7MjM5OzIxMzQ4OzI7MjU1OzIxODsxODU0ODsyOzIwNTsxMzM7MDYzNDg7MjsyNTU7MTkyOzIwMzQ4OzI7MjIxOzE2MDsyMjE0ODsyOzE3NjsyMjQ7MjMwNDg7MjsxMjg7MDAwOzEyODQ4OzI7MTAyOzA1MTsxNTM0ODsyOzI1NTswMDA7MDAwNDg7MjsxODg7MTQzOzE0MzQ4OzI7MDY1OzEwNTsyMjU0ODsyOzEzOTswNjk7MDE5NDg7MjsyNTA7MTI4OzExNDQ4OzI7MjQ0OzE2NDswOTY0ODsyOzA0NjsxMzk7MDg3NDg7MjsyNTU7MjQ1OzIzODQ4OzI7MTYwOzA4MjswNDU0ODsyOzE5MjsxOTI7MTkyNDg7MjsxMzU7MjA2OzIzNTQ4OzI7MTA2OzA5MDsyMDU0ODsyOzExMjsxMjg7MTQ0NDg7MjsyNTU7MjUwOzI1MDQ4OzI7MDAwOzI1NTsxMjc0ODsyOzA3MDsxMzA7MTgwNDg7MjsyMTA7MTgwOzE0MDQ4OzI7MDAwOzEyODsxMjg0ODsyOzIxNjsxOTE7MjE2NDg7MjsyNTU7MDk5OzA3MTQ4OzI7MDY0OzIyNDsyMDg0ODsyOzIzODsxMzA7MjM4NDg7MjsyNDU7MjIyOzE3OTQ4OzI7MjU1OzI1NTsyNTU0ODsyOzI0NTsyNDU7MjQ1NDg7MjsyNTU7MjU1OzAwMDQ4OzI7MTU0OzIwNTswNTAzODsyOzI0MDsyNDg7MjU1Mzg7MjsyNTA7MjM1OzIxNTM4OzI7MDAwOzI1NTsyNTUzODsyOzEyNzsyNTU7MjEyMzg7MjsyNDA7MjU1OzI1NTM4OzI7MjQ1OzI0NTsyMjAzODsyOzI1NTsyMjg7MTk2Mzg7MjswMDA7MDAwOzAwMDM4OzI7MjU1OzIzNTsyMDUzODsyOzAwMDswMDA7MjU1Mzg7MjsxMzg7MDQzOzIyNjM4OzI7MTY1OzA0MjswNDIzODsyOzIyMjsxODQ7MTM1Mzg7MjswOTU7MTU4OzE2MDM4OzI7MTI3OzI1NTswMDAzODsyOzIxMDsxMDU7MDMwMzg7MjsyNTU7MTI3OzA4MDM4OzI7MTAwOzE0OTsyMzczODsyOzI1NTsyNDg7MjIwMzg7MjsyMjA7MDIwOzA2MDM4OzI7MDAwOzAwMDsxMzkzODsyOzAwMDsxMzk7MTM5Mzg7MjsxODQ7MTM0OzAxMTM4OzI7MTY5OzE2OTsxNjkzODsyOzAwMDsxMDA7MDAwMzg7MjsxODk7MTgzOzEwNzM4OzI7MTM5OzAwMDsxMzkzODsyOzA4NTsxMDc7MDQ3Mzg7MjsyNTU7MTQwOzAwMDM4OzI7MTUzOzA1MDsyMDQzODsyOzEzOTswMDA7MDAwMzg7MjsyMzM7MTUwOzEyMjM4OzI7MTQzOzE4ODsxNDMzODsyOzA3MjswNjE7MTM5Mzg7MjswNDc7MDc5OzA3OTM4OzI7MDAwOzIwNjsyMDkzODsyOzE0ODswMDA7MjExMzg7MjsyNTU7MDIwOzE0NzM4OzI7MDAwOzE5MTsyNTUzODsyOzEwNTsxMDU7MTA1Mzg7MjswMzA7MTQ0OzI1NTM4OzI7MTc4OzAzNDswMzQzODsyOzI1NTsyNTA7MjQwMzg7MjswMzQ7MTM5OzAzNDM4OzI7MjU1OzAwMDsyNTUzODsyOzIyMDsyMjA7MjIwMzg7MjsyNDg7MjQ4OzI1NTM4OzI7MjU1OzIxNTswMDAzODsyOzIxODsxNjU7MDMyMzg7MjsxMjg7MTI4OzEyODM4OzI7MDAwOzEyODswMDAzODsyOzE3MzsyNTU7MDQ3Mzg7MjsyNDA7MjU1OzI0MDM4OzI7MjU1OzEwNTsxODAzODsyOzIwNTswOTI7MDkyMzg7MjswNzU7MDAwOzEzMDM4OzI7MjU1OzI1NTsyNDAzODsyOzI0MDsyMzA7MTQwMzg7MjsyMzA7MjMwOzI1MDM4OzI7MjU1OzI0MDsyNDUzODsyOzEyNDsyNTI7MDAwMzg7MjsyNTU7MjUwOzIwNTM4OzI7MTczOzIxNjsyMzAzODsyOzI0MDsxMjg7MTI4Mzg7MjsyMjQ7MjU1OzI1NTM4OzI7MjUwOzI1MDsyMTAzODsyOzIxMTsyMTE7MjExMzg7MjsxNDQ7MjM4OzE0NDM4OzI7MjU1OzE4MjsxOTMzODsyOzI1NTsxNjA7MTIyMzg7MjswMzI7MTc4OzE3MDM4OzI7MTM1OzIwNjsyNTAzODsyOzExOTsxMzY7MTUzMzg7MjsxNzY7MTk2OzIyMjM4OzI7MjU1OzI1NTsyMjQzODsyOzAwMDsyNTU7MDAwMzg7MjswNTA7MjA1OzA1MDM4OzI7MjUwOzI0MDsyMzAzODsyOzEyODswMDA7MDAwMzg7MjsxMDI7MjA1OzE3MDM4OzI7MDAwOzAwMDsyMDUzODsyOzE4NjswODU7MjExMzg7MjsxNDc7MTEyOzIxOTM4OzI7MDYwOzE3OTsxMTMzODsyOzEyMzsxMDQ7MjM4Mzg7MjswMDA7MjUwOzE1NDM4OzI7MDcyOzIwOTsyMDQzODsyOzE5OTswMjE7MTMzMzg7MjswMjU7MDI1OzExMjM4OzI7MjQ1OzI1NTsyNTAzODsyOzI1NTsyMjg7MjI1Mzg7MjsyNTU7MjI4OzE4MTM4OzI7MjU1OzIyMjsxNzMzODsyOzAwMDswMDA7MTI4Mzg7MjsyNTM7MjQ1OzIzMDM4OzI7MTI4OzEyODswMDAzODsyOzEwNzsxNDI7MDM1Mzg7MjsyNTU7MTY1OzAwMDM4OzI7MjU1OzA2OTswMDAzODsyOzIxODsxMTI7MjE0Mzg7MjsyMzg7MjMyOzE3MDM4OzI7MTUyOzI1MTsxNTIzODsyOzE3NTsyMzg7MjM4Mzg7MjsyMTk7MTEyOzE0NzM4OzI7MjU1OzIzOTsyMTMzODsyOzI1NTsyMTg7MTg1Mzg7MjsyMDU7MTMzOzA2MzM4OzI7MjU1OzE5MjsyMDMzODsyOzIyMTsxNjA7MjIxMzg7MjsxNzY7MjI0OzIzMDM4OzI7MTI4OzAwMDsxMjgzODsyOzEwMjswNTE7MTUzMzg7MjsyNTU7MDAwOzAwMDM4OzI7MTg4OzE0MzsxNDMzODsyOzA2NTsxMDU7MjI1Mzg7MjsxMzk7MDY5OzAxOTM4OzI7MjUwOzEyODsxMTQzODsyOzI0NDsxNjQ7MDk2Mzg7MjswNDY7MTM5OzA4NzM4OzI7MjU1OzI0NTsyMzgzODsyOzE2MDswODI7MDQ1Mzg7MjsxOTI7MTkyOzE5MjM4OzI7MTM1OzIwNjsyMzUzODsyOzEwNjswOTA7MjA1Mzg7MjsxMTI7MTI4OzE0NDM4OzI7MjU1OzI1MDsyNTAzODsyOzAwMDsyNTU7MTI3Mzg7MjswNzA7MTMwOzE4MDM4OzI7MjEwOzE4MDsxNDAzODsyOzAwMDsxMjg7MTI4Mzg7MjsyMTY7MTkxOzIxNjM4OzI7MjU1OzA5OTswNzEzODsyOzA2NDsyMjQ7MjA4Mzg7MjsyMzg7MTMwOzIzODM4OzI7MjQ1OzIyMjsxNzkzODsyOzI1NTsyNTU7MjU1Mzg7MjsyNDU7MjQ1OzI0NTM4OzI7MjU1OzI1NTswMDAzODsyOzE1NDsyMDU7MDUwNDg7NTswNDg7NTsxNDg7NTsyNDg7NTszNDg7NTs0NDg7NTs1NDg7NTs2NDg7NTs3NDg7NTs4NDg7NTs5NDg7NTsxMDQ4OzU7MTE0ODs1OzEyNDg7NTsxMzQ4OzU7MTQ0ODs1OzE1NDg7NTsxNjQ4OzU7MTc0ODs1OzE4NDg7NTsxOTQ4OzU7MjA0ODs1OzIxNDg7NTsyMjQ4OzU7MjM0ODs1OzI0NDg7NTsyNTQ4OzU7MjY0ODs1OzI3NDg7NTsyODQ4OzU7Mjk0ODs1OzMwNDg7NTszMTQ4OzU7MzI0ODs1OzMzNDg7NTszNDQ4OzU7MzU0ODs1OzM2NDg7NTszNzQ4OzU7Mzg0ODs1OzM5NDg7NTs0MDQ4OzU7NDE0ODs1OzQyNDg7NTs0MzQ4OzU7NDQ0ODs1OzQ1NDg7NTs0NjQ4OzU7NDc0ODs1OzQ4NDg7NTs0OTQ4OzU7NTA0ODs1OzUxNDg7NTs1MjQ4OzU7NTM0ODs1OzU0NDg7NTs1NTQ4OzU7NTY0ODs1OzU3NDg7NTs1ODQ4OzU7NTk0ODs1OzYwNDg7NTs2MTQ4OzU7NjI0ODs1OzYzNDg7NTs2NDQ4OzU7NjU0ODs1OzY2NDg7NTs2NzQ4OzU7Njg0ODs1OzY5NDg7NTs3MDQ4OzU7NzE0ODs1OzcyNDg7NTs3MzQ4OzU7NzQ0ODs1Ozc1NDg7NTs3NjQ4OzU7Nzc0ODs1Ozc4NDg7NTs3OTQ4OzU7ODA0ODs1OzgxNDg7NTs4MjQ4OzU7ODM0ODs1Ozg0NDg7NTs4NTQ4OzU7ODY0ODs1Ozg3NDg7NTs4ODQ4OzU7ODk0ODs1OzkwNDg7NTs5MTQ4OzU7OTI0ODs1OzkzNDg7NTs5NDQ4OzU7OTU0ODs1Ozk2NDg7NTs5NzQ4OzU7OTg0ODs1Ozk5NDg7NTsxMDA0ODs1OzEwMTQ4OzU7MTAyNDg7NTsxMDM0ODs1OzEwNDQ4OzU7MTA1NDg7NTsxMDY0ODs1OzEwNzQ4OzU7MTA4NDg7NTsxMDk0ODs1OzExMDQ4OzU7MTExNDg7NTsxMTI0ODs1OzExMzQ4OzU7MTE0NDg7NTsxMTU0ODs1OzExNjQ4OzU7MTE3NDg7NTsxMTg0ODs1OzExOTQ4OzU7MTIwNDg7NTsxMjE0ODs1OzEyMjQ4OzU7MTIzNDg7NTsxMjQ0ODs1OzEyNTQ4OzU7MTI2NDg7NTsxMjc0ODs1OzEyODQ4OzU7MTI5NDg7NTsxMzA0ODs1OzEzMTQ4OzU7MTMyNDg7NTsxMzM0ODs1OzEzNDQ4OzU7MTM1NDg7NTsxMzY0ODs1OzEzNzQ4OzU7MTM4NDg7NTsxMzk0ODs1OzE0MDQ4OzU7MTQxNDg7NTsxNDI0ODs1OzE0MzQ4OzU7MTQ0NDg7NTsxNDU0ODs1OzE0NjQ4OzU7MTQ3NDg7NTsxNDg0ODs1OzE0OTQ4OzU7MTUwNDg7NTsxNTE0ODs1OzE1MjQ4OzU7MTUzNDg7NTsxNTQ0ODs1OzE1NTQ4OzU7MTU2NDg7NTsxNTc0ODs1OzE1ODQ4OzU7MTU5NDg7NTsxNjA0ODs1OzE2MTQ4OzU7MTYyNDg7NTsxNjM0ODs1OzE2NDQ4OzU7MTY1NDg7NTsxNjY0ODs1OzE2NzQ4OzU7MTY4NDg7NTsxNjk0ODs1OzE3MDQ4OzU7MTcxNDg7NTsxNzI0ODs1OzE3MzQ4OzU7MTc0NDg7NTsxNzU0ODs1OzE3NjQ4OzU7MTc3NDg7NTsxNzg0ODs1OzE3OTQ4OzU7MTgwNDg7NTsxODE0ODs1OzE4MjQ4OzU7MTgzNDg7NTsxODQ0ODs1OzE4NTQ4OzU7MTg2NDg7NTsxODc0ODs1OzE4ODQ4OzU7MTg5NDg7NTsxOTA0ODs1OzE5MTQ4OzU7MTkyNDg7NTsxOTM0ODs1OzE5NDQ4OzU7MTk1NDg7NTsxOTY0ODs1OzE5NzQ4OzU7MTk4NDg7NTsxOTk0ODs1OzIwMDQ4OzU7MjAxNDg7NTsyMDI0ODs1OzIwMzQ4OzU7MjA0NDg7NTsyMDU0ODs1OzIwNjQ4OzU7MjA3NDg7NTsyMDg0ODs1OzIwOTQ4OzU7MjEwNDg7NTsyMTE0ODs1OzIxMjQ4OzU7MjEzNDg7NTsyMTQ0ODs1OzIxNTQ4OzU7MjE2NDg7NTsyMTc0ODs1OzIxODQ4OzU7MjE5NDg7NTsyMjA0ODs1OzIyMTQ4OzU7MjIyNDg7NTsyMjM0ODs1OzIyNDQ4OzU7MjI1NDg7NTsyMjY0ODs1OzIyNzQ4OzU7MjI4NDg7NTsyMjk0ODs1OzIzMDQ4OzU7MjMxNDg7NTsyMzI0ODs1OzIzMzQ4OzU7MjM0NDg7NTsyMzU0ODs1OzIzNjQ4OzU7MjM3NDg7NTsyMzg0ODs1OzIzOTQ4OzU7MjQwNDg7NTsyNDE0ODs1OzI0MjQ4OzU7MjQzNDg7NTsyNDQ0ODs1OzI0NTQ4OzU7MjQ2NDg7NTsyNDc0ODs1OzI0ODQ4OzU7MjQ5NDg7NTsyNTA0ODs1OzI1MTQ4OzU7MjUyNDg7NTsyNTM0ODs1OzI1NDQ4OzU7MjU1Mzg7NTswMzg7NTsxMzg7NTsyMzg7NTszMzg7NTs0Mzg7NTs1Mzg7NTs2Mzg7NTs3Mzg7NTs4Mzg7NTs5Mzg7NTsxMDM4OzU7MTEzODs1OzEyMzg7NTsxMzM4OzU7MTQzODs1OzE1Mzg7NTsxNjM4OzU7MTczODs1OzE4Mzg7NTsxOTM4OzU7MjAzODs1OzIxMzg7NTsyMjM4OzU7MjMzODs1OzI0Mzg7NTsyNTM4OzU7MjYzODs1OzI3Mzg7NTsyODM4OzU7MjkzODs1OzMwMzg7NTszMTM4OzU7MzIzODs1OzMzMzg7NTszNDM4OzU7MzUzODs1OzM2Mzg7NTszNzM4OzU7MzgzODs1OzM5Mzg7NTs0MDM4OzU7NDEzODs1OzQyMzg7NTs0MzM4OzU7NDQzODs1OzQ1Mzg7NTs0NjM4OzU7NDczODs1OzQ4Mzg7NTs0OTM4OzU7NTAzODs1OzUxMzg7NTs1MjM4OzU7NTMzODs1OzU0Mzg7NTs1NTM4OzU7NTYzODs1OzU3Mzg7NTs1ODM4OzU7NTkzODs1OzYwMzg7NTs2MTM4OzU7NjIzODs1OzYzMzg7NTs2NDM4OzU7NjUzODs1OzY2Mzg7NTs2NzM4OzU7NjgzODs1OzY5Mzg7NTs3MDM4OzU7NzEzODs1OzcyMzg7NTs3MzM4OzU7NzQzODs1Ozc1Mzg7NTs3NjM4OzU7NzczODs1Ozc4Mzg7NTs3OTM4OzU7ODAzODs1OzgxMzg7NTs4MjM4OzU7ODMzODs1Ozg0Mzg7NTs4NTM4OzU7ODYzODs1Ozg3Mzg7NTs4ODM4OzU7ODkzODs1OzkwMzg7NTs5MTM4OzU7OTIzODs1OzkzMzg7NTs5NDM4OzU7OTUzODs1Ozk2Mzg7NTs5NzM4OzU7OTgzODs1Ozk5Mzg7NTsxMDAzODs1OzEwMTM4OzU7MTAyMzg7NTsxMDMzODs1OzEwNDM4OzU7MTA1Mzg7NTsxMDYzODs1OzEwNzM4OzU7MTA4Mzg7NTsxMDkzODs1OzExMDM4OzU7MTExMzg7NTsxMTIzODs1OzExMzM4OzU7MTE0Mzg7NTsxMTUzODs1OzExNjM4OzU7MTE3Mzg7NTsxMTgzODs1OzExOTM4OzU7MTIwMzg7NTsxMjEzODs1OzEyMjM4OzU7MTIzMzg7NTsxMjQzODs1OzEyNTM4OzU7MTI2Mzg7NTsxMjczODs1OzEyODM4OzU7MTI5Mzg7NTsxMzAzODs1OzEzMTM4OzU7MTMyMzg7NTsxMzMzODs1OzEzNDM4OzU7MTM1Mzg7NTsxMzYzODs1OzEzNzM4OzU7MTM4Mzg7NTsxMzkzODs1OzE0MDM4OzU7MTQxMzg7NTsxNDIzODs1OzE0MzM4OzU7MTQ0Mzg7NTsxNDUzODs1OzE0NjM4OzU7MTQ3Mzg7NTsxNDgzODs1OzE0OTM4OzU7MTUwMzg7NTsxNTEzODs1OzE1MjM4OzU7MTUzMzg7NTsxNTQzODs1OzE1NTM4OzU7MTU2Mzg7NTsxNTczODs1OzE1ODM4OzU7MTU5Mzg7NTsxNjAzODs1OzE2MTM4OzU7MTYyMzg7NTsxNjMzODs1OzE2NDM4OzU7MTY1Mzg7NTsxNjYzODs1OzE2NzM4OzU7MTY4Mzg7NTsxNjkzODs1OzE3MDM4OzU7MTcxMzg7NTsxNzIz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dGVybklERXJyb3JTdGF0ZUlEc2hvdWxkIGZpbmQgYSBtYXRjaAAACQwgAG4AAABYAwAAEgAAAEJ5dGVDbGFzc2VzKEJ5dGVDbGFzc2VzKHtzaW5nbGV0b25zfSlQcmVmaWx0ZXJwcmVpc19mYXN0bWF4X25lZWRsZV9sZW4AAMk9IAB6AAAAxwEAACoAAABkZW5zZShGQUlMAADZIiAAdgAAAKIAAAA+AAAA0jsgAGoAAAB4AwAADAAAAIcWIABuAAAANgIAADQAAABUb29NYW55UGF0dGVybnNvbmVwYXNzOjpERkEoCiAgKiBEIMMgAABpBgAATGF6eVN0YXRlSURUcnlGcm9tSW50RXJyb3JNZW1jaHJpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBzdWZmaXggbWF0Y2ggcGx1cyByZXZlcnNlIG1hdGNoIGltcGxpZXMgdGhlcmUgbXVzdCBiZSBhIG1hdGNoAAAJDCAAbgAAAIAFAAAZAAAACQwgAG4AAABFBQAAGQAAAGZvcndhcmRyZXZlcnNlTWVtY2hyMk5vbldvcmRCeXRlV29yZEJ5dGVUZXh0TGluZUxGTGluZUNSQ3VzdG9tTGluZVRlcm1pbmF0b3LEBAAAEAAAAAQAAAC1AAAAQ29uZmlndmlzaXRlZF9jYXBhY2l0eQAAAAAAAAQAAAAEAAAAUQAAAE1lbWNocjNSZXZlcnNlSHlicmlkRW5naW5lU21hbGxJbmRleEVycm9yYXR0ZW1wdGVkUmV2ZXJzZURGQVJldmVyc2VERkFFbmdpbmViaXRzU3RhbmRhcmRMZWZ0bW9zdExvbmdlc3RQYXR0ZXJuU2V0SW5zZXJ0RXJyb3JjYXBhY2l0eU5vWWVzUGF0dGVybkVPSWFoby1jb3Jhc2ljayBERkEgc2hvdWxkIG5ldmVyIGZhaWwAAAB4DCAAdQAAAHEAAAASAAAA2SIgAHYAAAAnAAAALQAAAAkxIAB2AAAAKwAAACcAAAAJMSAAdgAAADsAAAAYAAAAnhUgAHcAAAAjAAAAEQAAAFByZWdyb3VwX2luZm8AAADFBAAAYAAAABAAAADGBAAAxwQAAAQAAAAEAAAAiQAAAAAAAAAAAQAAAQAAAMgEAAAAAAAAAAEAAAEAAACfAAAAAAAAACAAAAAQAAAAyQQAAGNvbmZpZ25mYXN0cmlkZTJzdGFydF9tYXBjbGFzc2VzcXVpdHNldGNhY2hlX2NhcGFjaXR5AAAAKFIhAAYAAAAuUiEAAwAAADFSIQAHAAAAOFIhAAkAAABBUiEABwAAAEhSIQAHAAAAT1IhAA4AAABERkEAAAAAAAEAAAABAAAAuQAAAG1hdGNoX2tpbmROL0EAAADKBAAABAAAAAQAAADLBAAAzAQAABAAAAAEAAAAzQQAAM4EAAAEAAAABAAAAM8EAADQBAAAGAAAAAQAAADRBAAA0gQAABwAAAAEAAAA0wQAANQEAAA8AQAABAAAANUEAADWBAAAIAUAABAAAADXBAAAAAAAAAQAAAAEAAAA2AQAAGluZm9uZmFyZXZwaWtldm1iYWNrdHJhY2tvbmVwYXNzaHlicmlkZGZhAAAAPFMhAAQAAAACTyEAAwAAAC5SIQADAAAAQFMhAAYAAABGUyEABgAAAExTIQAJAAAAVVMhAAcAAABcUyEABgAAAGJTIQADAAAAQ29yZW0iIABrAAAA7QAAABEAAABSZXZlcnNlQW5jaG9yZWRjb3JlSW1wbGljaXRSZXZlcnNlU3VmZml4Qm91bmRlZEJhY2t0cmFja2VyUmV2ZXJzZUlubmVycHJlaW5uZXJMYXp5U3RhdGVJREVycm9yQ2FjaGVFcnJvckludmFsaWRJbnB1dEFuY2hvcmVkSW52YWxpZElucHV0VW5hbmNob3JlZFVuc3VwcG9ydGVkU3RyZWFtVW5zdXBwb3J0ZWRPdmVybGFwcGluZ1Vuc3VwcG9ydGVkRW1wdHlTUGlrZVZNUGlrZVZNRW5naW5lR3JvdXBJbmZvAAAAAAAAAAEAAAABAAAA2QQAAAAAAAAwAAAAEAAAANoEAAAAAAAACAAAAAQAAADbBAAAAAAAAAQAAAAEAAAA3AQAAHN0YXJ0c19mb3JfZWFjaF9wYXR0ZXJuYnl0ZV9jbGFzc2VzdW5pY29kZV93b3JkX2JvdW5kYXJ5c3BlY2lhbGl6ZV9zdGFydF9zdGF0ZXNza2lwX2NhY2hlX2NhcGFjaXR5X2NoZWNrbWluaW11bV9jYWNoZV9jbGVhcl9jb3VudG1pbmltdW1fYnl0ZXNfcGVyX3N0YXRlrFIhAAoAAAACTyEAAwAAAOxUIQAXAAAAA1UhAAwAAAAPVSEAFQAAAEhSIQAHAAAAJFUhABcAAABPUiEADgAAADtVIQAZAAAAVFUhABkAAABtVSEAFwAAAFNlYXJjaGVycmFiaW5rYXJwc2VhcmNoX2tpbmRHcm91cEluZm9Jbm5lcnNsb3RfcmFuZ2VzbmFtZV90b19pbmRleGluZGV4X3RvX25hbWVtZW1vcnlfZXh0cmFCb3VuZGVkQmFja3RyYWNrZXJFbmdpbmV1bmFuY2hvcmVkIHNlYXJjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGVuYWJsZWRhbmNob3JlZCBzZWFyY2hlcyBhcmUgbm90IHN1cHBvcnRlZCBvciBlbmFibGVkUmVnZXhJbmZvR3JvdXBJbmZvRXJyb3JSZWdleEluZm9JcHJvcHNfdW5pb25PbmVQYXNzT25lUGFzc0VuZ2luZWVyclRvb01hbnlHcm91cHNwYXR0ZXJubWluaW11bU1pc3NpbmdHcm91cHNGaXJzdE11c3RCZVVubmFtZWREdXBsaWNhdGVTbWFsbEluZGV4SHlicmlkSHlicmlkRW5naW5lAAAAAAABAAAAAQAAAN0EAAB1dGY4X2VtcHR5YXV0b3ByZXdoaWNoX2NhcHR1cmVzbmZhX3NpemVfbGltaXRvbmVwYXNzX3NpemVfbGltaXRoeWJyaWRfY2FjaGVfY2FwYWNpdHlkZmFfc2l6ZV9saW1pdGRmYV9zdGF0ZV9saW1pdGxpbmVfdGVybWluYXRvcqxSIQAKAAAAYFchAAoAAABqVyEABwAAAAJPIQADAAAAcVchAA4AAAB/VyEADgAAAI1XIQASAAAAn1chABUAAABcUyEABgAAAGJTIQADAAAAtFchAA4AAADCVyEADwAAAFVTIQAHAAAATFMhAAkAAAADVSEADAAAANFXIQAPAAAAREZBRW5naW5lUmV2ZXJzZUh5YnJpZAAAAAAAAAQAAAAEAAAA3gQAAKo6IABoAAAA5wEAACAAAADcQyAAZgAAAL8EAAAuAAAA3EMgAGYAAADABAAAKgAAABk/IABmAAAARQIAABIAAABhZ2VBZ2VhaGV4QVNDSUlfSGV4X0RpZ2l0QWxwaGFiZXRpY2FscGhhYmV0aWNhc2NpaWhleGRpZ2l0YmNCaWRpX0NsYXNzYmlkaWNCaWRpX0NvbnRyb2xiaWRpY2xhc3NiaWRpY29udHJvbGJpZGltQmlkaV9NaXJyb3JlZGJpZGltaXJyb3JlZGJpZGltaXJyb3JpbmdnbHlwaEJpZGlfTWlycm9yaW5nX0dseXBoYmlkaXBhaXJlZGJyYWNrZXRCaWRpX1BhaXJlZF9CcmFja2V0YmlkaXBhaXJlZGJyYWNrZXR0eXBlQmlkaV9QYWlyZWRfQnJhY2tldF9UeXBlYmxrYm1nYnBiYnB0Y2Fub25pY2FsY29tYmluaW5nY2xhc3NDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzY2FzZWRDYXNlZGNhc2Vmb2xkaW5nQ2FzZV9Gb2xkaW5nY2FzZWlnbm9yYWJsZUNhc2VfSWdub3JhYmxlY2NjY2VDb21wb3NpdGlvbl9FeGNsdXNpb25jZmNoYW5nZXN3aGVuY2FzZWZvbGRlZENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkY2hhbmdlc3doZW5jYXNlbWFwcGVkQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWRjaGFuZ2Vzd2hlbmxvd2VyY2FzZWRDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZGNoYW5nZXN3aGVubmZrY2Nhc2Vmb2xkZWRDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkY2hhbmdlc3doZW50aXRsZWNhc2VkQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWRjaGFuZ2Vzd2hlbnVwcGVyY2FzZWRDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZGNpY2prYWNjb3VudGluZ251bWVyaWNrQWNjb3VudGluZ051bWVyaWNjamtjb21wYXRpYmlsaXR5dmFyaWFudGtDb21wYXRpYmlsaXR5VmFyaWFudGNqa2lpY29yZWtJSUNvcmVjamtpcmdnc291cmNla0lSR19HU291cmNlY2praXJnaHNvdXJjZWtJUkdfSFNvdXJjZWNqa2lyZ2pzb3VyY2VrSVJHX0pTb3VyY2VjamtpcmdrcHNvdXJjZWtJUkdfS1BTb3VyY2Vjamtpcmdrc291cmNla0lSR19LU291cmNlY2praXJnbXNvdXJjZWtJUkdfTVNvdXJjZWNqa2lyZ3Nzb3VyY2VrSVJHX1NTb3VyY2Vjamtpcmd0c291cmNla0lSR19UU291cmNlY2praXJndWtzb3VyY2VrSVJHX1VLU291cmNlY2praXJndXNvdXJjZWtJUkdfVVNvdXJjZWNqa2lyZ3Zzb3VyY2VrSVJHX1ZTb3VyY2VjamtvdGhlcm51bWVyaWNrT3RoZXJOdW1lcmljY2prcHJpbWFyeW51bWVyaWNrUHJpbWFyeU51bWVyaWNjamtyc3VuaWNvZGVrUlNVbmljb2RlY29tcGV4RnVsbF9Db21wb3NpdGlvbl9FeGNsdXNpb25jb21wb3NpdGlvbmV4Y2x1c2lvbmN3Y2Zjd2NtY3drY2Zjd2xjd3Rjd3VkYXNoRGFzaGRlY29tcG9zaXRpb25tYXBwaW5nRGVjb21wb3NpdGlvbl9NYXBwaW5nZGVjb21wb3NpdGlvbnR5cGVEZWNvbXBvc2l0aW9uX1R5cGVkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50RGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludGRlcERlcHJlY2F0ZWRkZXByZWNhdGVkZGlkaWFEaWFjcml0aWNkaWFjcml0aWNkbWR0ZWFFYXN0X0FzaWFuX1dpZHRoZWFzdGFzaWFud2lkdGhlYmFzZUVtb2ppX01vZGlmaWVyX0Jhc2VlY29tcEVtb2ppX0NvbXBvbmVudGVtb2RFbW9qaV9Nb2RpZmllcmVtb2ppRW1vamllbW9qaWNvbXBvbmVudGVtb2ppbW9kaWZpZXJlbW9qaW1vZGlmaWVyYmFzZWVtb2ppcHJlc2VudGF0aW9uRW1vamlfUHJlc2VudGF0aW9uZXByZXNlcXVpZGVvRXF1aXZhbGVudF9VbmlmaWVkX0lkZW9ncmFwaGVxdWl2YWxlbnR1bmlmaWVkaWRlb2dyYXBoZXhwYW5kc29ubmZjRXhwYW5kc19Pbl9ORkNleHBhbmRzb25uZmRFeHBhbmRzX09uX05GRGV4cGFuZHNvbm5ma2NFeHBhbmRzX09uX05GS0NleHBhbmRzb25uZmtkRXhwYW5kc19Pbl9ORktEZXh0RXh0ZW5kZXJleHRlbmRlZHBpY3RvZ3JhcGhpY0V4dGVuZGVkX1BpY3RvZ3JhcGhpY2V4dGVuZGVyZXh0cGljdGZjbmZrY0ZDX05GS0NfQ2xvc3VyZWZjbmZrY2Nsb3N1cmVmdWxsY29tcG9zaXRpb25leGNsdXNpb25nY0dlbmVyYWxfQ2F0ZWdvcnlnY2JHcmFwaGVtZV9DbHVzdGVyX0JyZWFrZ2VuZXJhbGNhdGVnb3J5Z3JhcGhlbWViYXNlR3JhcGhlbWVfQmFzZWdyYXBoZW1lY2x1c3RlcmJyZWFrZ3JhcGhlbWVleHRlbmRHcmFwaGVtZV9FeHRlbmRncmFwaGVtZWxpbmtHcmFwaGVtZV9MaW5rZ3JiYXNlZ3JleHRncmxpbmtoYW5ndWxzeWxsYWJsZXR5cGVIYW5ndWxfU3lsbGFibGVfVHlwZWhleEhleF9EaWdpdGhleGRpZ2l0aHN0aHlwaGVuSHlwaGVuaWRjSURfQ29udGludWVpZGNvbnRpbnVlaWRlb0lkZW9ncmFwaGljaWRlb2dyYXBoaWNpZHNJRF9TdGFydGlkc2JJRFNfQmluYXJ5X09wZXJhdG9yaWRzYmluYXJ5b3BlcmF0b3JpZHN0SURTX1RyaW5hcnlfT3BlcmF0b3JpZHN0YXJ0aWRzdHJpbmFyeW9wZXJhdG9yaW5kaWNwb3NpdGlvbmFsY2F0ZWdvcnlJbmRpY19Qb3NpdGlvbmFsX0NhdGVnb3J5aW5kaWNzeWxsYWJpY2NhdGVnb3J5SW5kaWNfU3lsbGFiaWNfQ2F0ZWdvcnlpbnBjaW5zY2lzY0lTT19Db21tZW50amFtb3Nob3J0bmFtZUphbW9fU2hvcnRfTmFtZWpnSm9pbmluZ19Hcm91cGpvaW5jSm9pbl9Db250cm9sam9pbmNvbnRyb2xqb2luaW5nZ3JvdXBqb2luaW5ndHlwZUpvaW5pbmdfVHlwZWpzbmp0a2FjY291bnRpbmdudW1lcmlja2NvbXBhdGliaWxpdHl2YXJpYW50a2lpY29yZWtpcmdnc291cmNla2lyZ2hzb3VyY2VraXJnanNvdXJjZWtpcmdrcHNvdXJjZWtpcmdrc291cmNla2lyZ21zb3VyY2VraXJnc3NvdXJjZWtpcmd0c291cmNla2lyZ3Vrc291cmNla2lyZ3Vzb3VyY2VraXJndnNvdXJjZWtvdGhlcm51bWVyaWNrcHJpbWFyeW51bWVyaWNrcnN1bmljb2RlbGJMaW5lX0JyZWFrbGNMb3dlcmNhc2VfTWFwcGluZ2xpbmVicmVha2xvZUxvZ2ljYWxfT3JkZXJfRXhjZXB0aW9ubG9naWNhbG9yZGVyZXhjZXB0aW9ubG93ZXJMb3dlcmNhc2Vsb3dlcmNhc2Vsb3dlcmNhc2VtYXBwaW5nbWF0aE1hdGhuYU5hbWVuYTFVbmljb2RlXzFfTmFtZW5hbWVhbGlhc05hbWVfQWxpYXNuY2hhck5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50bmZjcWNORkNfUXVpY2tfQ2hlY2tuZmNxdWlja2NoZWNrbmZkcWNORkRfUXVpY2tfQ2hlY2tuZmRxdWlja2NoZWNrbmZrY2Nhc2Vmb2xkTkZLQ19DYXNlZm9sZG5ma2NjZm5ma2NxY05GS0NfUXVpY2tfQ2hlY2tuZmtjcXVpY2tjaGVja25ma2RxY05GS0RfUXVpY2tfQ2hlY2tuZmtkcXVpY2tjaGVja25vbmNoYXJhY3RlcmNvZGVwb2ludG50TnVtZXJpY19UeXBlbnVtZXJpY3R5cGVudW1lcmljdmFsdWVOdW1lcmljX1ZhbHVlbnZvYWxwaGFPdGhlcl9BbHBoYWJldGljb2NvbW1lbnRvZGlPdGhlcl9EZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50b2dyZXh0T3RoZXJfR3JhcGhlbWVfRXh0ZW5kb2lkY090aGVyX0lEX0NvbnRpbnVlb2lkc090aGVyX0lEX1N0YXJ0b2xvd2VyT3RoZXJfTG93ZXJjYXNlb21hdGhPdGhlcl9NYXRob3RoZXJhbHBoYWJldGljb3RoZXJkZWZhdWx0aWdub3JhYmxlY29kZXBvaW50b3RoZXJncmFwaGVtZWV4dGVuZG90aGVyaWRjb250aW51ZW90aGVyaWRzdGFydG90aGVybG93ZXJjYXNlb3RoZXJtYXRob3RoZXJ1cHBlcmNhc2VPdGhlcl9VcHBlcmNhc2VvdXBwZXJwYXRzeW5QYXR0ZXJuX1N5bnRheHBhdHRlcm5zeW50YXhwYXR0ZXJud2hpdGVzcGFjZVBhdHRlcm5fV2hpdGVfU3BhY2VwYXR3c3BjbVByZXBlbmRlZF9Db25jYXRlbmF0aW9uX01hcmtwcmVwZW5kZWRjb25jYXRlbmF0aW9ubWFya3FtYXJrUXVvdGF0aW9uX01hcmtxdW90YXRpb25tYXJrcmFkaWNhbFJhZGljYWxyZWdpb25hbGluZGljYXRvclJlZ2lvbmFsX0luZGljYXRvcnJpc2JTZW50ZW5jZV9CcmVha3NjU2NyaXB0c2NmU2ltcGxlX0Nhc2VfRm9sZGluZ3NjcmlwdGV4dGVuc2lvbnNTY3JpcHRfRXh0ZW5zaW9uc3NjeHNkU29mdF9Eb3R0ZWRzZW50ZW5jZWJyZWFrc2VudGVuY2V0ZXJtaW5hbFNlbnRlbmNlX1Rlcm1pbmFsc2Zjc2ltcGxlY2FzZWZvbGRpbmdzaW1wbGVsb3dlcmNhc2VtYXBwaW5nU2ltcGxlX0xvd2VyY2FzZV9NYXBwaW5nc2ltcGxldGl0bGVjYXNlbWFwcGluZ1NpbXBsZV9UaXRsZWNhc2VfTWFwcGluZ3NpbXBsZXVwcGVyY2FzZW1hcHBpbmdTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmdzbGNzb2Z0ZG90dGVkc3BhY2VXaGl0ZV9TcGFjZXN0Y3N0ZXJtc3VjdGNUaXRsZWNhc2VfTWFwcGluZ3Rlcm1UZXJtaW5hbF9QdW5jdHVhdGlvbnRlcm1pbmFscHVuY3R1YXRpb250aXRsZWNhc2VtYXBwaW5ndWNVcHBlcmNhc2VfTWFwcGluZ3VpZGVvVW5pZmllZF9JZGVvZ3JhcGh1bmljb2RlMW5hbWV1bmljb2RlcmFkaWNhbHN0cm9rZXVuaWZpZWRpZGVvZ3JhcGh1cHBlclVwcGVyY2FzZXVwcGVyY2FzZXVwcGVyY2FzZW1hcHBpbmd1cnN2YXJpYXRpb25zZWxlY3RvclZhcmlhdGlvbl9TZWxlY3RvcnZlcnRpY2Fsb3JpZW50YXRpb25WZXJ0aWNhbF9PcmllbnRhdGlvbnZvdnN3YldvcmRfQnJlYWt3aGl0ZXNwYWNld29yZGJyZWFrd3NwYWNleGlkY1hJRF9Db250aW51ZXhpZGNvbnRpbnVleGlkc1hJRF9TdGFydHhpZHN0YXJ0eG9uZmN4b25mZHhvbmZrY3hvbmZrZAAAAMhYIQADAAAAy1ghAAMAAADOWCEABAAAANJYIQAPAAAAwlomAAUAAADhWCEACgAAAOtYIQAKAAAA4VghAAoAAAD1WCEADQAAANJYIQAPAAAAAlkhAAIAAAAEWSEACgAAAA5ZIQAFAAAAE1khAAwAAAAfWSEACQAAAARZIQAKAAAAKFkhAAsAAAATWSEADAAAADNZIQAFAAAAOFkhAA0AAABFWSEADAAAADhZIQAN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cmxldHRlcm51bWJlckxldHRlcl9OdW1iZXJsaW5lc2VwYXJhdG9yTGluZV9TZXBhcmF0b3JsbExvd2VyY2FzZV9MZXR0ZXJsbU1vZGlmaWVyX0xldHRlcmxvT3RoZXJfTGV0dGVybG93ZXJjYXNlbGV0dGVyVGl0bGVjYXNlX0xldHRlcmx1VXBwZXJjYXNlX0xldHRlcm1tYXJrbWF0aHN5bWJvbE1hdGhfU3ltYm9sbWNTcGFjaW5nX01hcmttZW1uTm9uc3BhY2luZ19NYXJrbW9kaWZpZXJsZXR0ZXJtb2RpZmllcnN5bWJvbE1vZGlmaWVyX1N5bWJvbG5kbmxub090aGVyX051bWJlcm5vbnNwYWNpbmdtYXJrb3BlbnB1bmN0dWF0aW9uT3Blbl9QdW5jdHVhdGlvbm90aGVyb3RoZXJsZXR0ZXJvdGhlcm51bWJlcm90aGVycHVuY3R1YXRpb25PdGhlcl9QdW5jdHVhdGlvbm90aGVyc3ltYm9sT3RoZXJfU3ltYm9sUHVuY3R1YXRpb25wYXJhZ3JhcGhzZXBhcmF0b3JQYXJhZ3JhcGhfU2VwYXJhdG9ycGNwZHBlcGZwb3ByaXZhdGV1c2Vwc3B1bmN0cHVuY3R1YXRpb25zc2VwYXJhdG9yU2VwYXJhdG9yc2tzbXNvc3BhY2VzZXBhcmF0b3JTcGFjZV9TZXBhcmF0b3JzcGFjaW5nbWFya3N1cnJvZ2F0ZXRpdGxlY2FzZWxldHRlcnVwcGVyY2FzZWxldHRlcnp6bHpwenMAAADQwCYAAQAAALIfJgAFAAAAZH4hAAsAAABvfiEADAAAAHt+IQACAAAAfX4hAAcAAABaWiEAAgAAAIR+IQAGAAAAin4hABAAAACafiEAEQAAAKt+IQACAAAAvXohAAoAAACtfiEABQAAAH1+IQAHAAAAsn4hAAIAAAC0fiEACwAAAL9+IQANAAAAZyYmAAQAAADMfiEAFAAAAOB+IQAVAAAA9X4hAAcAAAB9fiEABwAAAPx+IQACAAAA/n4hAAkAAAAHfyEADgAAABV/IQAPAAAAJH8hAA8AAAAzfyEAEAAAAEN/IQANAAAAUH8hAA4AAABefyEABQAAAFB/IQAOAAAAY38hAA0AAABwfyEADgAAAH5/IQAQAAAAjn8hABEAAACffyEABgAAAIR+IQAG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YXRrYmVuZ0JlbmdhbGliZW5nYWxpYmhhaWtzdWtpQmhhaWtzdWtpYmhrc2JvcG9Cb3BvbW9mb2JvcG9tb2ZvYnJhaEJyYWhtaWJyYWhtaWJyYWlCcmFpbGxlYnJhaWxsZWJ1Z2lCdWdpbmVzZWJ1Z2luZXNlYnVoZEJ1aGlkYnVoaWRjYWttQ2hha21hY2FuYWRpYW5hYm9yaWdpbmFsQ2FuYWRpYW5fQWJvcmlnaW5hbGNhbnNjYXJpQ2FyaWFuY2FyaWFuY2F1Y2FzaWFuYWxiYW5pYW5jaGFrbWFjaGFtQ2hhbWNoZXJDaGVyb2tlZWNoZXJva2VlY2hvcmFzbWlhbkNob3Jhc21pYW5jaHJzY29tbW9uQ29tbW9uY29wdENvcHRpY2NvcHRpY2NwbW5DeXByb19NaW5vYW5jcHJ0Q3lwcmlvdGN1bmVpZm9ybUN1bmVpZm9ybWN5cHJpb3RjeXByb21pbm9hbmN5cmlsbGljQ3lyaWxsaWNjeXJsZGVzZXJldERlc2VyZXRkZXZhRGV2YW5hZ2FyaWRldmFuYWdhcmlkaWFrRGl2ZXNfQWt1cnVkaXZlc2FrdXJ1ZG9nckRvZ3JhZG9ncmFkc3J0ZHVwbER1cGxveWFuZHVwbG95YW5lZ3lwRWd5cHRpYW5fSGllcm9nbHlwaHNlZ3lwdGlhbmhpZXJvZ2x5cGhzZWxiYUVsYmFzYW5lbGJhc2FuZWx5bUVseW1haWNlbHltYWljZXRoaUV0aGlvcGljZXRoaW9waWNnZW9yR2VvcmdpYW5nZW9yZ2lhbmdsYWdHbGFnb2xpdGljZ2xhZ29saXRpY2dvbmdHdW5qYWxhX0dvbmRpZ29ubU1hc2FyYW1fR29uZGlnb3RoR290aGljZ290aGljZ3JhbkdyYW50aGFncmFudGhhZ3JlZWtHcmVla2dyZWtndWphcmF0aUd1amFyYXRpZ3Vqcmd1bmphbGFnb25kaWd1cm11a2hpR3VybXVraGlndXJ1aGFuSGFuaGFuZ0hhbmd1bGhhbmd1bGhhbmloYW5pZmlyb2hpbmd5YUhhbmlmaV9Sb2hpbmd5YWhhbm9IYW51bm9vaGFudW5vb2hhdHJIYXRyYW5oYXRyYW5oZWJySGVicmV3aGVicmV3aGlyYUhpcmFnYW5haGlyYWdhbmFobHV3aG1uZ1BhaGF3aF9IbW9uZ2htbnBOeWlha2VuZ19QdWFjaHVlX0htb25naHJrdEthdGFrYW5hX09yX0hpcmFnYW5haHVuZ09sZF9IdW5nYXJpYW5pbXBlcmlhbGFyYW1haWNpbmhlcml0ZWRJbmhlcml0ZWRpbnNjcmlwdGlvbmFscGFobGF2aUluc2NyaXB0aW9uYWxfUGFobGF2aWluc2NyaXB0aW9uYWxwYXJ0aGlhbkluc2NyaXB0aW9uYWxfUGFydGhpYW5pdGFsT2xkX0l0YWxpY2phdmFKYXZhbmVzZWphdmFuZXNla2FpdGhpS2FpdGhpa2FsaUtheWFoX0xpa2FuYUthdGFrYW5ha2FubmFkYUthbm5hZGFrYXRha2FuYWthdGFrYW5hb3JoaXJhZ2FuYWthd2lLYXdpa2F5YWhsaWtoYXJLaGFyb3NodGhpa2hhcm9zaHRoaWtoaXRhbnNtYWxsc2NyaXB0S2hpdGFuX1NtYWxsX1NjcmlwdGtobWVyS2htZXJraG1ya2hvaktob2praWtob2praWtodWRhd2FkaUtodWRhd2FkaWtpdHNrbmRha3RoaWxhbmFUYWlfVGhhbWxhb0xhb2xhb29sYXRpbkxhdGlubGF0bmxlcGNMZXBjaGFsZXBjaGFsaW1iTGltYnVsaW1idWxpbmFMaW5lYXJfQWxpbmJMaW5lYXJfQmxpbmVhcmFsaW5lYXJibGlzdUxpc3VseWNpTHljaWFubHljaWFubHlkaUx5ZGlhbmx5ZGlhbm1haGFqYW5pTWFoYWphbmltYWhqbWFrYU1ha2FzYXJtYWthc2FybWFsYXlhbGFtTWFsYXlhbGFtbWFuZE1hbmRhaWNtYW5kYWljbWFuaU1hbmljaGFlYW5tYW5pY2hhZWFubWFyY01hcmNoZW5tYXJjaGVubWFzYXJhbWdvbmRpbWVkZWZhaWRyaW5NZWRlZmFpZHJpbm1lZGZtZWV0ZWltYXlla01lZXRlaV9NYXlla21lbmRNZW5kZV9LaWtha3VpbWVuZGVraWtha3VpbWVyY01lcm9pdGljX0N1cnNpdmVtZXJvTWVyb2l0aWNfSGllcm9nbHlwaHNtZXJvaXRpY2N1cnNpdmVtZXJvaXRpY2hpZXJvZ2x5cGhzbWlhb01pYW9tbHltbW9kaU1vZGltb25nTW9uZ29saWFubW9uZ29saWFubXJvTXJvbXJvb210ZWltdWx0TXVsdGFuaW11bHRhbmlteWFubWFyTXlhbm1hcm15bXJuYWJhdGFlYW5OYWJhdGFlYW5uYWdtTmFnX011bmRhcmluYWdtdW5kYXJpbmFuZE5hbmRpbmFnYXJpbmFuZGluYWdhcmluYXJiT2xkX05vcnRoX0FyYWJpYW5uYmF0bmV3YU5ld2FuZXd0YWlsdWVOZXdfVGFpX0x1ZW5rb05rb25rb29uc2h1TnVzaHVudXNodW55aWFrZW5ncHVhY2h1ZWhtb25nb2dhbU9naGFtb2doYW1vbGNoaWtpT2xfQ2hpa2lvbGNrb2xkaHVuZ2FyaWFub2xkaXRhbGljb2xkbm9ydGhhcmFiaWFub2xkcGVybWljT2xkX1Blcm1pY29sZHBlcnNpYW5PbGRfUGVyc2lhbm9sZHNvZ2RpYW5PbGRfU29nZGlhbm9sZHNvdXRoYXJhYmlhbk9sZF9Tb3V0aF9BcmFiaWFub2xkdHVya2ljT2xkX1R1cmtpY29sZHV5Z2h1ck9sZF9VeWdodXJvcml5YU9yaXlhb3JraG9yeWFvc2FnZU9zYWdlb3NnZW9zbWFPc21hbnlhb3NtYW55YW91Z3JwYWhhd2hobW9uZ3BhbG1QYWxteXJlbmVwYWxteXJlbmVwYXVjUGF1X0Npbl9IYXVwYXVjaW5oYXVwZXJtcGhhZ1BoYWdzX1BhcGhhZ3NwYXBobGlwaGxwUHNhbHRlcl9QYWhsYXZpcGhueFBob2VuaWNpYW5waG9lbmljaWFucGxyZHBydGlwc2FsdGVycGFobGF2aXFhYWNxYWFpcmVqYW5nUmVqYW5ncmpuZ3JvaGdydW5pY1J1bmljcnVucnNhbWFyaXRhblNhbWFyaXRhbnNhbXJzYXJic2F1clNhdXJhc2h0cmFzYXVyYXNodHJhc2dud1NpZ25Xcml0aW5nc2hhcmFkYVNoYXJhZGFzaGF2aWFuU2hhdmlhbnNoYXdzaHJkc2lkZFNpZGRoYW1zaWRkaGFtc2lnbndyaXRpbmdzaW5kc2luaFNpbmhhbGFzaW5oYWxhc29nZFNvZ2RpYW5zb2dkaWFuc29nb3NvcmFTb3JhX1NvbXBlbmdzb3Jhc29tcGVuZ3NveW9Tb3lvbWJvc295b21ib3N1bmRTdW5kYW5lc2VzdW5kYW5lc2VzeWxvU3lsb3RpX05hZ3Jpc3lsb3RpbmFncmlzeXJjU3lyaWFjc3lyaWFjdGFnYWxvZ1RhZ2Fsb2d0YWdiVGFnYmFud2F0YWdiYW53YXRhaWxlVGFpX0xldGFpdGhhbXRhaXZpZXRUYWlfVmlldHRha3JUYWtyaXRha3JpdGFsZXRhbHV0YW1pbFRhbWlsdGFtbHRhbmdUYW5ndXR0YW5nc2FUYW5nc2F0YW5ndXR0YXZ0dGVsdVRlbHVndXRlbHVndXRmbmdUaWZpbmFnaHRnbGd0aGFhVGhhYW5hdGhhYW5hdGhhaVRoYWl0aWJldGFuVGliZXRhbnRpYnR0aWZpbmFnaHRpcmhUaXJodXRhdGlyaHV0YXRuc2F0b3RvVG90b3VnYXJVZ2FyaXRpY3VnYXJpdGljdmFpVmFpdmFpaXZpdGhWaXRoa3VxaXZpdGhrdXFpd2FuY2hvV2FuY2hvd2FyYVdhcmFuZ19DaXRpd2FyYW5nY2l0aXdjaG94cGVveHN1eHllemlZZXppZGl5ZXppZGl5aVlpeWlpaXphbmFiYXphcnNxdWFyZVphbmFiYXphcl9TcXVhcmV6YW5iemluaHp5eXl6enp6AAAAgIkhAAUAAACFiSEABQAAAIqJIQAEAAAAhYkhAAUAAACOiSEABAAAAJKJIQASAAAApIkhAAQAAACoiSEABAAAAKyJIQAUAAAAwIkhABUAAADViSEABAAAANmJIQAGAAAA34khAAYAAADZiSEABgAAAOWJIQAIAAAA7YkhAAgAAAD1iSEABAAAAPmJIQAQAAAACYohAAQAAADtiSEACAAAAA2KIQAHAAAAFIohAAcAAAAbiiEABAAAABSKIQAHAAAAH4ohAAQAAAAjiiEACAAAACuKIQAIAAAAI4ohAAgAAAAziiEABAAAADeKIQAFAAAAPIohAAUAAAA3iiEABQAAAEGKIQAEAAAARYohAAkAAABOiiEACAAAAEWKIQAJAAAAVoohAAUAAABbiiEABQAAAGCKIQAEAAAAW4ohAAUAAABkiiEABAAAAGiKIQAHAAAAb4ohAAcAAABoiiEABwAAAHaKIQAJAAAAf4ohAAkAAACIiiEABAAAAH+KIQAJAAAAjIohAAQAAACQiiEACAAAAJiKIQAIAAAAkIohAAgAAACgiiEABAAAAKSKIQAGAAAAqoohAAYAAACkiiEABgAAALCKIQAEAAAAtIohAAcAAAC7iiEABwAAALSKIQAHAAAAwoohAAQAAADGiiEACAAAAM6KIQAIAAAAxoohAAgAAADWiiEABAAAANqKIQAFAAAA34ohAAUAAADaiiEABQAAAOSKIQAEAAAA6IohAAYAAADuiiEAEgAAAACLIQATAAAAE4shAAQAAAAAiyEAEwAAABeLIQAEAAAAG4shAAYAAAAhiyEABgAAABuLIQAGAAAAJ4shABEAAACSiSEAEgAAADiLIQAGAAAA6IohAAYAAAA+iyEABAAAAEKLIQAEAAAARoshAAQAAABKiyEACAAAAFKLIQAIAAAASoshAAgAAABaiyEACgAAAGSLIQAKAAAAboshAAQAAABkiyEACgAAAHKLIQAGAAAAeIshAAYAAAB+iyEABAAAAIKLIQAGAAAAiIshAAYAAACCiyEABgAAAI6LIQAEAAAAkoshAAwAAACeiyEABAAAAKKLIQAHAAAAqYshAAkAAACyiyEACQAAALuLIQAHAAAAooshAAcAAADCiyEACwAAAJKLIQAMAAAAzYshAAgAAADViyEACAAAAN2LIQAEAAAA1YshAAgAAADhiyEABwAAAOiLIQAHAAAA74shAAQAAADziyEACgAAAP2LIQAKAAAA84shAAoAAAAHjCEABAAAAAuMIQALAAAAFowhAAoAAAALjCEACwAAACCMIQAEAAAAJIwhAAUAAAApjCEABQAAACSMIQAFAAAALowhAAQAAADoiyEABwAAADKMIQAEAAAANowhAAgAAAA+jCEACAAAADaMIQAIAAAARowhAAQAAABKjCEAFAAAAF6MIQATAAAASowhABQAAABxjCEABAAAAHWMIQAHAAAAfIwhAAcAAAB1jCEABwAAAIOMIQAEAAAAh4whAAcAAACOjCEABwAAAIeMIQAHAAAAlYwhAAQAAACZjCEACAAAAKGMIQAIAAAAmYwhAAgAAACpjCEABAAAAK2MIQAIAAAAtYwhAAgAAACtjCEACAAAAL2MIQAEAAAAwYwhAAoAAADLjCEACgAAAMGMIQAKAAAA1YwhAAQAAADZjCEADQAAAOaMIQAEAAAA6owhAA0AAAD3jCEABAAAAPuMIQAGAAAAAY0hAAYAAAD7jCEABgAAAAeNIQAEAAAAC40hAAcAAAAS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AQAAyQEAAMcBAADJAQAAxwEAAMgBAADLAQAAzAEAAMoBAADMAQAAygEAAMsBAADOAQAAzQEAANABAADPAQAA0gEAANEBAADUAQAA0wEAANYBAADVAQAA2AEAANcBAADaAQAA2QEAANwBAADbAQAAjgEAAN8BAADeAQAA4QEAAOABAADjAQAA4gEAAOUBAADkAQAA5wEAAOYBAADpAQAA6AEAAOsBAADqAQAA7QEAAOwBAADvAQAA7gEAAPIBAADzAQAA8QEAAPMBAADxAQAA8gEAAPUBAAD0AQAAlQEAAL8BAAD5AQAA+AEAAPsBAAD6AQAA/QEAAPwBAAD/AQAA/gEAAAECAAAAAgAAAwIAAAICAAAFAgAABAIAAAcCAAAGAgAACQIAAAgCAAALAgAACgIAAA0CAAAMAgAADwIAAA4CAAARAgAAEAIAABMCAAASAgAAFQIAABQCAAAXAgAAFgIAABkCAAAYAgAAGwIAABoCAAAdAgAAHAIAAB8CAAAeAgAAngEAACMCAAAiAgAAJQIAACQCAAAnAgAAJgIAACkCAAAoAgAAKwIAACoCAAAtAgAALAIAAC8CAAAuAgAAMQIAADACAAAzAgAAMgIAAGUsAAA8AgAAOwIAAJoBAABmLAAAfiwAAH8sAABCAgAAQQIAAIABAACJAgAAjAIAAEcCAABGAgAASQIAAEgCAABLAgAASgIAAE0CAABMAgAATwIAAE4CAABvLAAAbSwAAHAsAACBAQAAhgEAAIkBAACKAQAAjwEAAJABAACrpwAAkwEAAKynAACUAQAAjacAAKqnAACXAQAAlgEAAK6nAABiLAAAracAAJwBAABuLAAAnQEAAJ8BAABkLAAApgEAAMWnAACpAQAAsacAAK4BAABEAgAAsQEAALIBAABFAgAAtwEAALKnAACwpwAAmQMAALkDAAC+HwAAcQMAAHADAABzAwAAcgMAAHcDAAB2AwAA/QMAAP4DAAD/AwAA8wMAAKwDAACtAwAArgMAAK8DAADMAwAAzQMAAM4DAACxAwAAsgMAANADAACzAwAAtAMAALUDAAD1AwAAtgMAALcDAAC4AwAA0QMAAPQDAABFAwAAuQMAAL4fAAC6AwAA8AMAALsDAAC1AAAAvAMAAL0DAAC+AwAAvwMAAMADAADWAwAAwQMAAPEDAADCAwAAwwMAAMQDAADFAwAAxgMAANUDAADHAwAAyAMAAMkDAAAmIQAAygMAAMsDAACGAwAAiAMAAIkDAACKAwAAkQMAAJIDAADQAwAAkwMAAJQDAACVAwAA9QMAAJYDAACXAwAAmAMAANEDAAD0AwAARQMAAJkDAAC+HwAAmgMAAPADAACbAwAAtQAAAJwDAACdAwAAngMAAJ8DAACgAwAA1gMAAKEDAADxAwAAowMAAMMDAACjAwAAwgMAAKQDAAClAwAApgMAANUDAACnAwAAqAMAAKkDAAAmIQAAqgMAAKsDAACMAwAAjgMAAI8DAADXAwAAkgMAALIDAACYAwAAuAMAAPQDAACmAwAAxgMAAKADAADAAwAAzwMAANkDAADYAwAA2wMAANoDAADdAwAA3AMAAN8DAADeAwAA4QMAAOADAADjAwAA4gMAAOUDAADkAwAA5wMAAOYDAADpAwAA6AMAAOsDAADqAwAA7QMAAOwDAADvAwAA7gMAAJoDAAC6AwAAoQMAAMEDAAD5AwAAfwMAAJgDAAC4AwAA0QMAAJUDAAC1AwAA+AMAAPcDAADyAwAA+wMAAPoDAAB7AwAAfAMAAH0DAABQBAAAUQQAAFIEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgEAABZBAAAWgQAAFsEAABcBAAAXQQAAF4EAABfBAAAMAQAADEEAAAyBAAAgBwAADMEAAA0BAAAgRwAADUEAAA2BAAANwQAADgEAAA5BAAAOgQAADsEAAA8BAAAPQQAAD4EAACCHAAAPwQAAEAEAABBBAAAgxwAAEIEAACEHAAAhRwAAEMEAABEBAAARQQAAEYEAABHBAAASAQAAEkEAABKBAAAhhwAAEsEAABMBAAATQQAAE4EAABPBAAAEAQAABEEAAASBAAAgBwAABMEAAAUBAAAgRwAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAACCHAAAHwQAACAEAAAhBAAAgxwAACIEAACEHAAAhRwAACMEAAAkBAAAJQQAACYEAAAnBAAAKAQAACkEAAAqBAAAhhwAACsEAAAsBAAALQQAAC4EAAAvBAAAAAQAAAEEAAACBAAAAwQAAAQEAAAFBAAABgQAAAcEAAAIBAAACQQAAAoEAAALBAAADAQAAA0EAAAOBAAADwQAAGEEAABgBAAAYwQAAIccAABiBAAAhxwAAGUEAABkBAAAZwQAAGYEAABpBAAAaAQAAGsEAABqBAAAbQQAAGwEAABvBAAAbgQAAHEEAABwBAAAcwQAAHIEAAB1BAAAdAQAAHcEAAB2BAAAeQQAAHgEAAB7BAAAegQAAH0EAAB8BAAAfwQAAH4EAACBBAAAgAQAAIsEAACKBAAAjQQAAIwEAACPBAAAjgQAAJEEAACQBAAAkwQAAJIEAACVBAAAlAQAAJcEAACWBAAAmQQAAJgEAACbBAAAmgQAAJ0EAACcBAAAnwQAAJ4EAAChBAAAoAQAAKMEAACiBAAApQQAAKQEAACnBAAApgQAAKkEAACoBAAAqwQAAKoEAACtBAAArAQAAK8EAACuBAAAsQQAALAEAACzBAAAsgQAALUEAAC0BAAAtwQAALYEAAC5BAAAuAQAALsEAAC6BAAAvQQAALwEAAC/BAAAvgQAAM8EAADCBAAAwQQAAMQEAADDBAAAxgQAAMUEAADIBAAAxwQAAMoEAADJBAAAzAQAAMsEAADOBAAAzQQAAMAEAADRBAAA0AQAANMEAADSBAAA1QQAANQEAADXBAAA1gQAANkEAADYBAAA2wQAANoEAADdBAAA3AQAAN8EAADeBAAA4QQAAOAEAADjBAAA4gQAAOUEAADkBAAA5wQAAOYEAADpBAAA6AQAAOsEAADqBAAA7QQAAOwEAADvBAAA7gQAAPEEAADwBAAA8wQAAPIEAAD1BAAA9AQAAPcEAAD2BAAA+QQAAPgEAAD7BAAA+gQAAP0EAAD8BAAA/wQAAP4EAAABBQAAAAUAAAMFAAACBQAABQUAAAQFAAAHBQAABgUAAAkFAAAIBQAACwUAAAoFAAANBQAADAUAAA8FAAAOBQAAEQUAABAFAAATBQAAEgUAABUFAAAUBQAAFwUAABYFAAAZBQAAGAUAABsFAAAaBQAAHQUAABwFAAAfBQAAHgUAACEFAAAgBQAAIwUAACIFAAAlBQAAJAUAACcFAAAmBQAAKQUAACgFAAArBQAAKgUAAC0FAAAsBQAALwUAAC4FAABhBQAAYgUAAGMFAABkBQAAZQUAAGYFAABnBQAAaAUAAGkFAABqBQAAawUAAGwFAABtBQAAbgUAAG8FAABwBQAAcQUAAHIFAABzBQAAdAUAAHUFAAB2BQAAdwUAAHgFAAB5BQAAegUAAHsFAAB8BQAAfQUAAH4FAAB/BQAAgAUAAIEFAACCBQAAgwUAAIQFAACFBQAAhgUAADEFAAAyBQAAMwUAADQFAAA1BQAANgUAADcFAAA4BQAAOQUAADoFAAA7BQAAPAUAAD0FAAA+BQAAPwUAAEAFAABBBQAAQgUAAEMFAABEBQAARQUAAEYFAABHBQAASAUAAEkFAABKBQAASwUAAEwFAABNBQAATgUAAE8FAABQBQAAUQUAAFIFAABTBQAAVAUAAFUFAABWBQAAAC0AAAEtAAACLQAAAy0AAAQtAAAFLQAABi0AAActAAAILQAACS0AAAotAAALLQAADC0AAA0tAAAOLQAADy0AABAtAAARLQAAEi0AABMtAAAULQAAFS0AABYtAAAXLQAAGC0AABktAAAaLQAAGy0AABwtAAAdLQAAHi0AAB8tAAAgLQAAIS0AACItAAAjLQAAJC0AACUtAAAnLQAALS0AAJAcAACRHAAAkhwAAJMcAACUHAAAlRwAAJYcAACXHAAAmBwAAJkcAACaHAAAmxwAAJwcAACdHAAAnhwAAJ8cAACgHAAAoRwAAKIcAACjHAAApBwAAKUcAACmHAAApxwAAKgcAACpHAAAqhwAAKscAACsHAAArRwAAK4cAACvHAAAsBwAALEcAACyHAAAsxwAALQcAAC1HAAAthwAALccAAC4HAAAuRwAALocAAC9HAAAvhwAAL8cAABwqwAAcasAAHKrAABzqwAAdKsAAHWrAAB2qwAAd6sAAHirAAB5qwAAeqsAAHurAAB8qwAAfasAAH6rAAB/qwAAgKsAAIGrAACCqwAAg6sAAISrAACFqwAAhqsAAIerAACIqwAAiasAAIqrAACLqwAAjKsAAI2rAACOqwAAj6sAAJCrAACRqwAAkqsAAJOrAACUqwAAlasAAJarAACXqwAAmKsAAJmrAACaqwAAm6sAAJyrAACdqwAAnqsAAJ+rAACgqwAAoasAAKKrAACjqwAApKsAAKWrAACmqwAAp6sAAKirAACpqwAAqqsAAKurAACsqwAArasAAK6rAACvqwAAsKsAALGrAACyqwAAs6sAALSrAAC1qwAAtqsAALerAAC4qwAAuasAALqrAAC7qwAAvKsAAL2rAAC+qwAAv6sAAPgTAAD5EwAA+hMAAPsTAAD8EwAA/RMAAPATAADxEwAA8hMAAPMTAAD0EwAA9RMAABIEAAAyBAAAFAQAADQEAAAeBAAAPgQAACEEAABBBAAAIgQAAEIEAACFHAAAIgQAAEIEAACEHAAAKgQAAEoEAABiBAAAYwQAAEqmAABLpgAA0BAAANEQAADSEAAA0xAAANQQAADVEAAA1hAAANcQAADYEAAA2RAAANoQAADbEAAA3BAAAN0QAADeEAAA3xAAAOAQAADhEAAA4hAAAOMQAADkEAAA5RAAAOYQAADnEAAA6BAAAOkQAADqEAAA6xAAAOwQAADtEAAA7hAAAO8QAADwEAAA8RAAAPIQAADzEAAA9BAAAPUQAAD2EAAA9xAAAPgQAAD5EAAA+hAAAP0QAAD+EAAA/xAAAH2nAABjLAAAxqcAAAEeAAAAHgAAAx4AAAIeAAAFHgAABB4AAAceAAAGHgAACR4AAAgeAAALHgAACh4AAA0eAAAMHgAADx4AAA4eAAARHgAAEB4AABMeAAASHgAAFR4AABQeAAAXHgAAFh4AABkeAAAYHgAAGx4AABoeAAAdHgAAHB4AAB8eAAAeHgAAIR4AACAeAAAjHgAAIh4AACUeAAAkHgAAJx4AACYeAAApHgAAKB4AACseAAAqHgAALR4AACweAAAvHgAALh4AADEeAAAwHgAAMx4AADIeAAA1HgAANB4AADceAAA2HgAAOR4AADgeAAA7HgAAOh4AAD0eAAA8HgAAPx4AAD4eAABBHgAAQB4AAEMeAABCHgAARR4AAEQeAABHHgAARh4AAEkeAABIHgAASx4AAEoeAABNHgAATB4AAE8eAABOHgAAUR4AAFAeAABTHgAAUh4AAFUeAABUHgAAVx4AAFYeAABZHgAAWB4AAFseAABaHgAAXR4AAFweAABfHgAAXh4AAGEeAACbHgAAYB4AAJseAABjHgAAYh4AAGUeAABkHgAAZx4AAGYeAABpHgAAaB4AAGseAABqHgAAbR4AAGweAABvHgAAbh4AAHEeAABwHgAAcx4AAHIeAAB1HgAAdB4AAHceAAB2HgAAeR4AAHgeAAB7HgAAeh4AAH0eAAB8HgAAfx4AAH4eAACBHgAAgB4AAIMeAACCHgAAhR4AAIQeAACHHgAAhh4AAIkeAACIHgAAix4AAIoeAACNHgAAjB4AAI8eAACOHgAAkR4AAJAeAACTHgAAkh4AAJUeAACUHgAAYB4AAGEeAADfAAAAoR4AAKAeAACjHgAAoh4AAKUeAACkHgAApx4AAKYeAACpHgAAqB4AAKseAACqHgAArR4AAKweAACvHgAArh4AALEeAACwHgAAsx4AALIeAAC1HgAAtB4AALceAAC2HgAAuR4AALgeAAC7HgAAuh4AAL0eAAC8HgAAvx4AAL4eAADBHgAAwB4AAMMeAADCHgAAxR4AAMQeAADHHgAAxh4AAMkeAADIHgAAyx4AAMoeAADNHgAAzB4AAM8eAADOHgAA0R4AANAeAADTHgAA0h4AANUeAADUHgAA1x4AANYeAADZHgAA2B4AANseAADaHgAA3R4AANweAADfHgAA3h4AAOEeAADgHgAA4x4AAOIeAADlHgAA5B4AAOceAADmHgAA6R4AAOgeAADrHgAA6h4AAO0eAADsHgAA7x4AAO4eAADxHgAA8B4AAPMeAADyHgAA9R4AAPQeAAD3HgAA9h4AAPkeAAD4HgAA+x4AAPoeAAD9HgAA/B4AAP8eAAD+HgAACB8AAAkfAAAKHwAACx8AAAwfAAANHwAADh8AAA8fAAAAHwAAAR8AAAIfAAADHwAABB8AAAUfAAAGHwAABx8AABgfAAAZHwAAGh8AABsfAAAcHwAAHR8AABAfAAARHwAAEh8AABMfAAAUHwAAFR8AACgfAAApHwAAKh8AACsfAAAsHwAALR8AAC4fAAAvHwAAIB8AACEfAAAiHwAAIx8AACQfAAAlHwAAJh8AACcfAAA4HwAAOR8AADofAAA7HwAAPB8AAD0fAAA+HwAAPx8AADAfAAAxHwAAMh8AADMfAAA0HwAANR8AADYfAAA3HwAASB8AAEkfAABKHwAASx8AAEwfAABNHwAAQB8AAEEfAABCHwAAQx8AAEQfAABFHwAAWR8AAFsfAABdHwAAXx8AAFEfAABTHwAAVR8AAFcfAABoHwAAaR8AAGofAABrHwAAbB8AAG0fAABuHwAAbx8AAGAfAABhHwAAYh8AAGMfAABkHwAAZR8AAGYfAABnHwAAuh8AALsfAADIHwAAyR8AAMofAADLHwAA2h8AANsfAAD4HwAA+R8AAOofAADrHwAA+h8AAPsfAACIHwAAiR8AAIofAACLHwAAjB8AAI0fAACOHwAAjx8AAIAfAACBHwAAgh8AAIMfAACEHwAAhR8AAIYfAACHHwAAmB8AAJkfAACaHwAAmx8AAJwfAACdHwAAnh8AAJ8fAACQHwAAkR8AAJIfAACTHwAAlB8AAJUfAACWHwAAlx8AAKgfAACpHwAAqh8AAKsfAACsHwAArR8AAK4fAACvHwAAoB8AAKEfAACiHwAAox8AAKQfAAClHwAAph8AAKcfAAC4HwAAuR8AALwfAACwHwAAsR8AAHAfAABxHwAAsx8AAEUDAACZAwAAuQMAAMwfAAByHwAAcx8AAHQfAAB1HwAAwx8AANgfAADZHwAA0B8AANEfAAB2HwAAdx8AAOgfAADpHwAA7B8AAOAfAADhHwAAeh8AAHsfAADlHwAA/B8AAHgfAAB5HwAAfB8AAH0fAADzHwAAqQMAAMkDAABLAAAAawAAAMUAAADlAAAATiEAADIhAABwIQAAcSEAAHIhAABzIQAAdCEAAHUhAAB2IQAAdyEAAHghAAB5IQAAeiEAAHshAAB8IQAAfSEAAH4hAAB/IQAAYCEAAGEhAABiIQAAYyEAAGQhAABlIQAAZiEAAGchAABoIQAAaSEAAGohAABrIQAAbCEAAG0hAABuIQAAbyEAAIQhAACDIQAA0CQAANEkAADSJAAA0yQAANQkAADVJAAA1iQAANckAADYJAAA2SQAANokAADbJAAA3CQAAN0kAADeJAAA3yQAAOAkAADhJAAA4iQAAOMkAADkJAAA5SQAAOYkAADnJAAA6CQAAOkkAAC2JAAAtyQAALgkAAC5JAAAuiQAALskAAC8JAAAvSQAAL4kAAC/JAAAwCQAAMEkAADCJAAAwyQAAMQkAADFJAAAxiQAAMckAADIJAAAySQAAMokAADLJAAAzCQAAM0kAADOJAAAzyQAADAsAAAxLAAAMiwAADMsAAA0LAAANSwAADYsAAA3LAAAOCwAADksAAA6LAAAOywAADwsAAA9LAAAPiwAAD8sAABALAAAQSwAAEIsAABDLAAARCwAAEUsAABGLAAARywAAEgsAABJLAAASiwAAEssAABMLAAATSwAAE4sAABPLAAAUCwAAFEsAABSLAAAUywAAFQsAABVLAAAViwAAFcsAABYLAAAWSwAAFosAABbLAAAXCwAAF0sAABeLAAAXywAAAAsAAABLAAAAiwAAAMsAAAELAAABSwAAAYsAAAHLAAACCwAAAksAAAKLAAACywAAAwsAAANLAAADiwAAA8sAAAQLAAAESwAABIsAAATLAAAFCwAABUsAAAWLAAAFywAABgsAAAZLAAAGiwAABssAAAcLAAAHSwAAB4sAAAfLAAAICwAACEsAAAiLAAAIywAACQsAAAlLAAAJiwAACcsAAAoLAAAKSwAACosAAArLAAALCwAAC0sAAAuLAAALywAAGEsAABgLAAAawIAAH0dAAB9AgAAOgIAAD4CAABoLAAAZywAAGosAABpLAAAbCwAAGssAABRAgAAcQIAAFACAABSAgAAcywAAHIsAAB2LAAAdSwAAD8CAABAAgAAgSwAAIAsAACDLAAAgiwAAIUsAACELAAAhywAAIYsAACJLAAAiCwAAIssAACKLAAAjSwAAIwsAACPLAAAjiwAAJEsAACQLAAAkywAAJIsAACVLAAAlCwAAJcsAACWLAAAmSwAAJgsAACbLAAAmiwAAJ0sAACcLAAAnywAAJ4sAAChLAAAoCwAAKMsAACiLAAApSwAAKQsAACnLAAApiwAAKksAACoLAAAqywAAKosAACtLAAArCwAAK8sAACuLAAAsSwAALAsAACzLAAAsiwAALUsAAC0LAAAtywAALYsAAC5LAAAuCwAALssAAC6LAAAvSwAALwsAAC/LAAAviwAAMEsAADALAAAwywAAMIsAADFLAAAxCwAAMcsAADGLAAAySwAAMgsAADLLAAAyiwAAM0sAADMLAAAzywAAM4sAADRLAAA0CwAANMsAADSLAAA1SwAANQsAADXLAAA1iwAANksAADYLAAA2ywAANosAADdLAAA3CwAAN8sAADeLAAA4SwAAOAsAADjLAAA4iwAAOwsAADrLAAA7iwAAO0sAADzLAAA8iwAAKAQAAChEAAAohAAAKMQAACkEAAApRAAAKYQAACnEAAAqBAAAKkQAACqEAAAqxAAAKwQAACtEAAArhAAAK8QAACwEAAAsRAAALIQAACzEAAAtBAAALUQAAC2EAAAtxAAALgQAAC5EAAAuhAAALsQAAC8EAAAvRAAAL4QAAC/EAAAwBAAAMEQAADCEAAAwxAAAMQQAADFEAAAxxAAAM0QAABBpgAAQKYAAEOmAABCpgAARaYAAESmAABHpgAARqYAAEmmAABIpgAAiBwAAEumAACIHAAASqYAAE2mAABMpgAAT6YAAE6mAABRpgAAUKYAAFOmAABSpgAAVaYAAFSmAABXpgAAVqYAAFmmAABYpgAAW6YAAFqmAABdpgAAXKYAAF+mAABepgAAYaYAAGCmAABjpgAAYqYAAGWmAABkpgAAZ6YAAGamAABppgAAaKYAAGumAABqpgAAbaYAAGymAACBpgAAgKYAAIOmAACCpgAAhaYAAISmAACHpgAAhqYAAImmAACIpgAAi6YAAIqmAACNpgAAjKYAAI+mAACOpgAAkaYAAJCmAACTpgAAkqYAAJWmAACUpgAAl6YAAJamAACZpgAAmKYAAJumAACapgAAI6cAACKnAAAlpwAAJKcAACenAAAmpwAAKacAACinAAArpwAAKqcAAC2nAAAspwAAL6cAAC6nAAAzpwAAMqcAADWnAAA0pwAAN6cAADanAAA5pwAAOKcAADunAAA6pwAAPacAADynAAA/pwAAPqcAAEGnAABApwAAQ6cAAEKnAABFpwAARKcAAEenAABGpwAASacAAEinAABLpwAASqcAAE2nAABMpwAAT6cAAE6nAABRpwAAUKcAAFOnAABSpwAAVacAAFSnAABXpwAAVqcAAFmnAABYpwAAW6cAAFqnAABdpwAAXKcAAF+nAABepwAAYacAAGCnAABjpwAAYqcAAGWnAABkpwAAZ6cAAGanAABppwAAaKcAAGunAABqpwAAbacAAGynAABvpwAAbqcAAHqnAAB5pwAAfKcAAHunAAB5HQAAf6cAAH6nAACBpwAAgKcAAIOnAACCpwAAhacAAISnAACHpwAAhqcAAIynAACLpwAAZQIAAJGnAACQpwAAk6cAAJKnAADEpwAAl6cAAJanAACZpwAAmKcAAJunAACapwAAnacAAJynAACfpwAAnqcAAKGnAACgpwAAo6cAAKKnAAClpwAApKcAAKenAACmpwAAqacAAKinAABmAgAAXAIAAGECAABsAgAAagIAAJ4CAACHAgAAnQIAAFOrAAC1pwAAtKcAALenAAC2pwAAuacAALinAAC7pwAAuqcAAL2nAAC8pwAAv6cAAL6nAADBpwAAwKcAAMOnAADCpwAAlKcAAIICAACOHQAAyKcAAMenAADKpwAAyacAANGnAADQpwAA16cAANanAADZpwAA2KcAAPanAAD1pwAAs6cAAKATAAChEwAAohMAAKMTAACkEwAApRMAAKYTAACnEwAAqBMAAKkTAACqEwAAqxMAAKwTAACtEwAArhMAAK8TAACwEwAAsRMAALITAACzEwAAtBMAALUTAAC2EwAAtxMAALgTAAC5EwAAuhMAALsTAAC8EwAAvRMAAL4TAAC/EwAAwBMAAMETAADCEwAAwxMAAMQTAADFEwAAxhMAAMcTAADIEwAAyRMAAMoTAADLEwAAzBMAAM0TAADOEwAAzxMAANATAADREwAA0hMAANMTAADUEwAA1RMAANYTAADXEwAA2BMAANkTAADaEwAA2xMAANwTAADdEwAA3hMAAN8TAADgEwAA4RMAAOITAADjEwAA5BMAAOUTAADmEwAA5xMAAOgTAADpEwAA6hMAAOsTAADsEwAA7RMAAO4TAADvEwAAQf8AAEL/AABD/wAARP8AAEX/AABG/wAAR/8AAEj/AABJ/wAASv8AAEv/AABM/wAATf8AAE7/AABP/wAAUP8AAFH/AABS/wAAU/8AAFT/AABV/wAAVv8AAFf/AABY/wAAWf8AAFr/AAAh/wAAIv8AACP/AAAk/wAAJf8AACb/AAAn/wAAKP8AACn/AAAq/wAAK/8AACz/AAAt/wAALv8AAC//AAAw/wAAMf8AADL/AAAz/wAANP8AADX/AAA2/wAAN/8AADj/AAA5/wAAOv8AACgEAQApBAEAKgQBACsEAQAsBAEALQQBAC4EAQAvBAEAMAQBADEEAQAyBAEAMwQBADQEAQA1BAEANgQBADcEAQA4BAEAOQQBADoEAQA7BAEAPAQBAD0EAQA+BAEAPwQBAEAEAQBBBAEAQgQBAEMEAQBEBAEARQQBAEYEAQBHBAEASAQBAEkEAQBKBAEASwQBAEwEAQBNBAEATgQBAE8EAQAABAEAAQQBAAIEAQADBAEABAQBAAUEAQAGBAEABwQBAAgEAQAJBAEACgQBAAsEAQAMBAEADQQBAA4EAQAPBAEAEAQBABEEAQASBAEAEwQBABQEAQAVBAEAFgQBABcEAQAYBAEAGQQBABoEAQAbBAEAHAQBAB0EAQAeBAEAHwQBACAEAQAhBAEAIgQBACMEAQAkBAEAJQQBACYEAQAnBAEA2AQBANkEAQDaBAEA2wQBANwEAQDdBAEA3gQBAN8EAQDgBAEA4QQBAOIEAQDjBAEA5AQBAOUEAQDmBAEA5wQBAOgEAQDpBAEA6gQBAOsEAQDsBAEA7QQBAO4EAQDvBAEA8AQBAPEEAQDyBAEA8wQBAPQEAQD1BAEA9gQBAPcEAQD4BAEA+QQBAPoEAQD7BAEAsAQBALEEAQCyBAEAswQBALQEAQC1BAEAtgQBALcEAQC4BAEAuQQBALoEAQC7BAEAvAQBAL0EAQC+BAEAvwQBAMAEAQDBBAEAwgQBAMMEAQDEBAEAxQQBAMYEAQDHBAEAyAQBAMkEAQDKBAEAywQBAMwEAQDNBAEAzgQBAM8EAQDQBAEA0QQBANIEAQDTBAEAlwUBAJgFAQCZBQEAmgUBAJsFAQCcBQEAnQUBAJ4FAQCfBQEAoAUBAKEFAQCjBQEApAUBAKUFAQCmBQEApwUBAKgFAQCpBQEAqgUBAKsFAQCsBQEArQUBAK4FAQCvBQEAsAUBALEFAQCzBQEAtAUBALUFAQC2BQEAtwUBALgFAQC5BQEAuwUBALwFAQBwBQEAcQUBAHIFAQBzBQEAdAUBAHUFAQB2BQEAdwUBAHgFAQB5BQEAegUBAHwFAQB9BQEAfgUBAH8FAQCABQEAgQUBAIIFAQCDBQEAhAUBAIUFAQCGBQEAhwUBAIgFAQCJBQEAigUBAIwFAQCNBQEAjgUBAI8FAQCQBQEAkQUBAJIFAQCUBQEAlQUBAMAMAQDBDAEAwgwBAMMMAQDEDAEAxQwBAMYMAQDHDAEAyAwBAMkMAQDKDAEAywwBAMwMAQDNDAEAzgwBAM8MAQDQDAEA0QwBANIMAQDTDAEA1AwBANUMAQDWDAEA1wwBANgMAQDZDAEA2gwBANsMAQDcDAEA3QwBAN4MAQDfDAEA4AwBAOEMAQDiDAEA4wwBAOQMAQDlDAEA5gwBAOcMAQDoDAEA6QwBAOoMAQDrDAEA7AwBAO0MAQDuDAEA7wwBAPAMAQDxDAEA8gwBAIAMAQCBDAEAggwBAIMMAQCEDAEAhQwBAIYMAQCHDAEAiAwBAIkMAQCKDAEAiwwBAIwMAQCNDAEAjgwBAI8MAQCQDAEAkQwBAJIMAQCTDAEAlAwBAJUMAQCWDAEAlwwBAJgMAQCZDAEAmgwBAJsMAQCcDAEAnQwBAJ4MAQCfDAEAoAwBAKEMAQCiDAEAowwBAKQMAQClDAEApgwBAKcMAQCoDAEAqQwBAKoMAQCrDAEArAwBAK0MAQCuDAEArwwBALAMAQCxDAEAsgwBAMAYAQDBGAEAwhgBAMMYAQDEGAEAxRgBAMYYAQDH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AQAADLchAAEAAAB/AQAAELchAAIAAACAAQAAGLchAAEAAACBAQAAHLchAAEAAACCAQAAILchAAEAAACDAQAAJLchAAEAAACEAQAAKLchAAEAAACFAQAALLchAAEAAACGAQAAMLchAAEAAACHAQAANLchAAEAAACIAQAAOLchAAEAAACJAQAAPLchAAEAAACKAQAAQLchAAEAAACLAQAARLchAAEAAACMAQAASLchAAEAAACOAQAATLchAAEAAACPAQAAULchAAEAAACQAQAAVLchAAEAAACRAQAAWLchAAEAAACSAQAAXLchAAEAAACTAQAAYLchAAEAAACUAQAAZLchAAEAAACVAQAAaLchAAEAAACWAQAAbLchAAEAAACXAQAAcLchAAEAAACYAQAAdLchAAEAAACZAQAAeLchAAEAAACaAQAAfLchAAEAAACcAQAAgLchAAEAAACdAQAAhLchAAEAAACeAQAAiLchAAEAAACfAQAAjLchAAEAAACgAQAAkLchAAEAAAChAQAAlLchAAEAAACiAQAAmLchAAEAAACjAQAAnLchAAEAAACkAQAAoLchAAEAAAClAQAApLchAAEAAACmAQAAqLchAAEAAACnAQAArLchAAEAAACoAQAAsLchAAEAAACpAQAAtLchAAEAAACsAQAAuLchAAEAAACtAQAAvLchAAEAAACuAQAAwLchAAEAAACvAQAAxLchAAEAAACwAQAAyLchAAEAAACxAQAAzLchAAEAAACyAQAA0LchAAEAAACzAQAA1LchAAEAAAC0AQAA2LchAAEAAAC1AQAA3LchAAEAAAC2AQAA4LchAAEAAAC3AQAA5LchAAEAAAC4AQAA6LchAAEAAAC5AQAA7LchAAEAAAC8AQAA8LchAAEAAAC9AQAA9LchAAEAAAC/AQAA+LchAAEAAADEAQAA/LchAAIAAADFAQAABLghAAIAAADGAQAADLghAAIAAADHAQAAFLghAAIAAADIAQAAHLghAAIAAADJAQAAJLghAAIAAADKAQAALLghAAIAAADLAQAANLghAAIAAADMAQAAPLghAAIAAADNAQAARLghAAEAAADOAQAASLghAAEAAADPAQAATLghAAEAAADQAQAAULghAAEAAADRAQAAVLghAAEAAADSAQAAWLghAAEAAADTAQAAXLghAAEAAADUAQAAYLghAAEAAADVAQAAZLghAAEAAADWAQAAaLghAAEAAADXAQAAbLghAAEAAADYAQAAcLghAAEAAADZAQAAdLghAAEAAADaAQAAeLghAAEAAADbAQAAfLghAAEAAADcAQAAgLghAAEAAADdAQAAhLghAAEAAADeAQAAiLghAAEAAADfAQAAjLghAAEAAADgAQAAkLghAAEAAADhAQAAlLghAAEAAADiAQAAmLghAAEAAADjAQAAnLghAAEAAADkAQAAoLghAAEAAADlAQAApLghAAEAAADmAQAAqLghAAEAAADnAQAArLghAAEAAADoAQAAsLghAAEAAADpAQAAtLghAAEAAADqAQAAuLghAAEAAADrAQAAvLghAAEAAADsAQAAwLghAAEAAADtAQAAxLghAAEAAADuAQAAyLghAAEAAADvAQAAzLghAAEAAADxAQAA0LghAAIAAADyAQAA2LghAAIAAADzAQAA4LghAAIAAAD0AQAA6LghAAEAAAD1AQAA7LghAAEAAAD2AQAA8LghAAEAAAD3AQAA9LghAAEAAAD4AQAA+LghAAEAAAD5AQAA/LghAAEAAAD6AQAAALkhAAEAAAD7AQAABLkhAAEAAAD8AQAACLkhAAEAAAD9AQAADLkhAAEAAAD+AQAAELkhAAEAAAD/AQAAFLkhAAEAAAAAAgAAGLkhAAEAAAABAgAAHLkhAAEAAAACAgAAILkhAAEAAAADAgAAJLkhAAEAAAAEAgAAKLkhAAEAAAAFAgAALLkhAAEAAAAGAgAAMLkhAAEAAAAHAgAANLkhAAEAAAAIAgAAOLkhAAEAAAAJAgAAPLkhAAEAAAAKAgAAQLkhAAEAAAALAgAARLkhAAEAAAAMAgAASLkhAAEAAAANAgAATLkhAAEAAAAOAgAAULkhAAEAAAAPAgAAVLkhAAEAAAAQAgAAWLkhAAEAAAARAgAAXLkhAAEAAAASAgAAYLkhAAEAAAATAgAAZLkhAAEAAAAUAgAAaLkhAAEAAAAVAgAAbLkhAAEAAAAWAgAAcLkhAAEAAAAXAgAAdLkhAAEAAAAYAgAAeLkhAAEAAAAZAgAAfLkhAAEAAAAaAgAAgLkhAAEAAAAbAgAAhLkhAAEAAAAcAgAAiLkhAAEAAAAdAgAAjLkhAAEAAAAeAgAAkLkhAAEAAAAfAgAAlLkhAAEAAAAgAgAAmLkhAAEAAAAiAgAAnLkhAAEAAAAjAgAAoLkhAAEAAAAkAgAApLkhAAEAAAAlAgAAqLkhAAEAAAAmAgAArLkhAAEAAAAnAgAAsLkhAAEAAAAoAgAAtLkhAAEAAAApAgAAuLkhAAEAAAAqAgAAvLkhAAEAAAArAgAAwLkhAAEAAAAsAgAAxLkhAAEAAAAtAgAAyLkhAAEAAAAuAgAAzLkhAAEAAAAvAgAA0LkhAAEAAAAwAgAA1LkhAAEAAAAxAgAA2LkhAAEAAAAyAgAA3LkhAAEAAAAzAgAA4LkhAAEAAAA6AgAA5LkhAAEAAAA7AgAA6LkhAAEAAAA8AgAA7LkhAAEAAAA9AgAA8LkhAAEAAAA+AgAA9LkhAAEAAAA/AgAA+LkhAAEAAABAAgAA/LkhAAEAAABBAgAAALohAAEAAABCAgAABLohAAEAAABDAgAACLohAAEAAABEAgAADLohAAEAAABFAgAAELohAAEAAABGAgAAFLohAAEAAABHAgAAGLohAAEAAABIAgAAHLohAAEAAABJAgAAILohAAEAAABKAgAAJLohAAEAAABLAgAAKLohAAEAAABMAgAALLohAAEAAABNAgAAMLohAAEAAABOAgAANLohAAEAAABPAgAAOLohAAEAAABQAgAAPLohAAEAAABRAgAAQLohAAEAAABSAgAARLohAAEAAABTAgAASLohAAEAAABUAgAATLohAAEAAABWAgAAULohAAEAAABXAgAAVLohAAEAAABZAgAAWLohAAEAAABbAgAAXLohAAEAAABcAgAAYLohAAEAAABgAgAAZLohAAEAAABhAgAAaLohAAEAAABjAgAAbLohAAEAAABlAgAAcLohAAEAAABmAgAAdLohAAEAAABoAgAAeLohAAEAAABpAgAAfLohAAEAAABqAgAAgLohAAEAAABrAgAAhLohAAEAAABsAgAAiLohAAEAAABvAgAAjLohAAEAAABxAgAAkLohAAEAAAByAgAAlLohAAEAAAB1AgAAmLohAAEAAAB9AgAAnLohAAEAAACAAgAAoLohAAEAAACCAgAApLohAAEAAACDAgAAqLohAAEAAACHAgAArLohAAEAAACIAgAAsLohAAEAAACJAgAAtLohAAEAAACKAgAAuLohAAEAAACLAgAAvLohAAEAAACMAgAAwLohAAEAAACSAgAAxLohAAEAAACdAgAAyLohAAEAAACeAgAAzLohAAEAAABFAwAA0LohAAMAAABwAwAA3LohAAEAAABxAwAA4LohAAEAAAByAwAA5LohAAEAAABzAwAA6LohAAEAAAB2AwAA7LohAAEAAAB3AwAA8LohAAEAAAB7AwAA9LohAAEAAAB8AwAA+LohAAEAAAB9AwAA/LohAAEAAAB/AwAAALshAAEAAACGAwAABLshAAEAAACIAwAACLshAAEAAACJAwAADLshAAEAAACKAwAAELshAAEAAACMAwAAFLshAAEAAACOAwAAGLshAAEAAACPAwAAHLshAAEAAACRAwAAILshAAEAAACSAwAAJLshAAIAAACTAwAALLshAAEAAACUAwAAMLshAAEAAACVAwAANLshAAIAAACWAwAAPLshAAEAAACXAwAAQLshAAEAAACYAwAARLshAAMAAACZAwAAULshAAMAAACaAwAAXLshAAIAAACbAwAAZLshAAEAAACcAwAAaLshAAIAAACdAwAAcLshAAEAAACeAwAAdLshAAEAAACfAwAAeLshAAEAAACgAwAAfLshAAIAAAChAwAAhLshAAIAAACjAwAAjLshAAIAAACkAwAAlLshAAEAAAClAwAAmLshAAEAAACmAwAAnLshAAIAAACnAwAApLshAAEAAACoAwAAqLshAAEAAACpAwAArLshAAIAAACqAwAAtLshAAEAAACrAwAAuLshAAEAAACsAwAAvLshAAEAAACtAwAAwLshAAEAAACuAwAAxLshAAEAAACvAwAAyLshAAEAAACxAwAAzLshAAEAAACyAwAA0LshAAIAAACzAwAA2LshAAEAAAC0AwAA3LshAAEAAAC1AwAA4LshAAIAAAC2AwAA6LshAAEAAAC3AwAA7LshAAEAAAC4AwAA8LshAAMAAAC5AwAA/LshAAMAAAC6AwAACLwhAAIAAAC7AwAAELwhAAEAAAC8AwAAFLwhAAIAAAC9AwAAHLwhAAEAAAC+AwAAILwhAAEAAAC/AwAAJLwhAAEAAADAAwAAKLwhAAIAAADBAwAAMLwhAAIAAADCAwAAOLwhAAIAAADDAwAAQLwhAAIAAADEAwAASLwhAAEAAADFAwAATLwhAAEAAADGAwAAULwhAAIAAADHAwAAWLwhAAEAAADIAwAAXLwhAAEAAADJ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HgAAhMchAAEAAAASHgAAiMchAAEAAAATHgAAjMchAAEAAAAUHgAAkMchAAEAAAAVHgAAlMchAAEAAAAWHgAAmMchAAEAAAAXHgAAnMchAAEAAAAYHgAAoMchAAEAAAAZHgAApMchAAEAAAAaHgAAqMchAAEAAAAbHgAArMchAAEAAAAcHgAAsMchAAEAAAAdHgAAtMchAAEAAAAeHgAAuMchAAEAAAAfHgAAvMchAAEAAAAgHgAAwMchAAEAAAAhHgAAxMchAAEAAAAiHgAAyMchAAEAAAAjHgAAzMchAAEAAAAkHgAA0MchAAEAAAAlHgAA1MchAAEAAAAmHgAA2MchAAEAAAAnHgAA3MchAAEAAAAoHgAA4MchAAEAAAApHgAA5MchAAEAAAAqHgAA6MchAAEAAAArHgAA7MchAAEAAAAsHgAA8MchAAEAAAAtHgAA9MchAAEAAAAuHgAA+MchAAEAAAAvHgAA/MchAAEAAAAwHgAAAMghAAEAAAAxHgAABMghAAEAAAAyHgAACMghAAEAAAAzHgAADMghAAEAAAA0HgAAEMghAAEAAAA1HgAAFMghAAEAAAA2HgAAGMghAAEAAAA3HgAAHMghAAEAAAA4HgAAIMghAAEAAAA5HgAAJMghAAEAAAA6HgAAKMghAAEAAAA7HgAALMghAAEAAAA8HgAAMMghAAEAAAA9HgAANMghAAEAAAA+HgAAOMghAAEAAAA/HgAAPMghAAEAAABAHgAAQMghAAEAAABBHgAARMghAAEAAABCHgAASMghAAEAAABDHgAATMghAAEAAABEHgAAUMghAAEAAABFHgAAVMghAAEAAABGHgAAWMghAAEAAABHHgAAXMghAAEAAABIHgAAYMghAAEAAABJHgAAZMghAAEAAABKHgAAaMghAAEAAABLHgAAbMghAAEAAABMHgAAcMghAAEAAABNHgAAdMghAAEAAABOHgAAeMghAAEAAABPHgAAfMghAAEAAABQHgAAgMghAAEAAABRHgAAhMghAAEAAABSHgAAiMghAAEAAABTHgAAjMghAAEAAABUHgAAkMghAAEAAABVHgAAlMghAAEAAABWHgAAmMghAAEAAABXHgAAnMghAAEAAABYHgAAoMghAAEAAABZHgAApMghAAEAAABaHgAAqMghAAEAAABbHgAArMghAAEAAABcHgAAsMghAAEAAABdHgAAtMghAAEAAABeHgAAuMghAAEAAABfHgAAvMghAAEAAABgHgAAwMghAAIAAABhHgAAyMghAAIAAABiHgAA0MghAAEAAABjHgAA1MghAAEAAABkHgAA2MghAAEAAABlHgAA3MghAAEAAABmHgAA4MghAAEAAABnHgAA5MghAAEAAABoHgAA6MghAAEAAABpHgAA7MghAAEAAABqHgAA8MghAAEAAABrHgAA9MghAAEAAABsHgAA+MghAAEAAABtHgAA/MghAAEAAABuHgAAAMkhAAEAAABvHgAABMkhAAEAAABwHgAACMkhAAEAAABxHgAADMkhAAEAAAByHgAAEMkhAAEAAABzHgAAFMkhAAEAAAB0HgAAGMkhAAEAAAB1HgAAHMkhAAEAAAB2HgAAIMkhAAEAAAB3HgAAJMkhAAEAAAB4HgAAKMkhAAEAAAB5HgAALMkhAAEAAAB6HgAAMMkhAAEAAAB7HgAANMkhAAEAAAB8HgAAOMkhAAEAAAB9HgAAPMkhAAEAAAB+HgAAQMkhAAEAAAB/HgAARMkhAAEAAACAHgAASMkhAAEAAACBHgAATMkhAAEAAACCHgAAUMkhAAEAAACDHgAAVMkhAAEAAACEHgAAWMkhAAEAAACFHgAAXMkhAAEAAACGHgAAYMkhAAEAAACHHgAAZMkhAAEAAACIHgAAaMkhAAEAAACJHgAAbMkhAAEAAACKHgAAcMkhAAEAAACLHgAAdMkhAAEAAACMHgAAeMkhAAEAAACNHgAAfMkhAAEAAACOHgAAgMkhAAEAAACPHgAAhMkhAAEAAACQHgAAiMkhAAEAAACRHgAAjMkhAAEAAACSHgAAkMkhAAEAAACTHgAAlMkhAAEAAACUHgAAmMkhAAEAAACVHgAAnMkhAAEAAACbHgAAoMkhAAIAAACeHgAAqMkhAAEAAACgHgAArMkhAAEAAAChHgAAsMkhAAEAAACiHgAAtMkhAAEAAACjHgAAuMkhAAEAAACkHgAAvMkhAAEAAAClHgAAwMkhAAEAAACmHgAAxMkhAAEAAACnHgAAyMkhAAEAAACoHgAAzMkhAAEAAACpHgAA0MkhAAEAAACqHgAA1MkhAAEAAACrHgAA2MkhAAEAAACsHgAA3MkhAAEAAACtHgAA4MkhAAEAAACuHgAA5MkhAAEAAACvHgAA6MkhAAEAAACwHgAA7MkhAAEAAACxHgAA8MkhAAEAAACyHgAA9MkhAAEAAACzHgAA+MkhAAEAAAC0HgAA/MkhAAEAAAC1HgAAAMohAAEAAAC2HgAABMohAAEAAAC3HgAACMohAAEAAAC4HgAADMohAAEAAAC5HgAAEMohAAEAAAC6HgAAFMohAAEAAAC7HgAAGMohAAEAAAC8HgAAHMohAAEAAAC9HgAAIMohAAEAAAC+HgAAJMohAAEAAAC/HgAAKMohAAEAAADAHgAALMohAAEAAADBHgAAMMohAAEAAADCHgAANMohAAEAAADDHgAAOMohAAEAAADEHgAAPMohAAEAAADFHgAAQMohAAEAAADGHgAARMohAAEAAADHHgAASMohAAEAAADIHgAATMohAAEAAADJHgAAUMohAAEAAADKHgAAVMohAAEAAADLHgAAWMohAAEAAADMHgAAXMohAAEAAADNHgAAYMohAAEAAADOHgAAZMohAAEAAADPHgAAaMohAAEAAADQHgAAbMohAAEAAADRHgAAcMohAAEAAADSHgAAdMohAAEAAADTHgAAeMohAAEAAADUHgAAfMohAAEAAADVHgAAgMohAAEAAADWHgAAhMohAAEAAADXHgAAiMohAAEAAADYHgAAjMohAAEAAADZHgAAkMohAAEAAADaHgAAlMohAAEAAADbHgAAmMohAAEAAADcHgAAnMohAAEAAADdHgAAoMohAAEAAADeHgAApMohAAEAAADfHgAAqMohAAEAAADgHgAArMohAAEAAADhHgAAsMohAAEAAADiHgAAtMohAAEAAADjHgAAuMohAAEAAADkHgAAvMohAAEAAADlHgAAwMohAAEAAADmHgAAxMohAAEAAADnHgAAyMohAAEAAADoHgAAzMohAAEAAADpHgAA0MohAAEAAADqHgAA1MohAAEAAADrHgAA2MohAAEAAADsHgAA3MohAAEAAADtHgAA4MohAAEAAADuHgAA5MohAAEAAADvHgAA6MohAAEAAADwHgAA7MohAAEAAADxHgAA8MohAAEAAADyHgAA9MohAAEAAADzHgAA+MohAAEAAAD0HgAA/MohAAEAAAD1HgAAAMshAAEAAAD2HgAABMshAAEAAAD3HgAACMshAAEAAAD4HgAADMshAAEAAAD5HgAAEMshAAEAAAD6HgAAFMshAAEAAAD7HgAAGMshAAEAAAD8HgAAHMshAAEAAAD9HgAAIMshAAEAAAD+HgAAJMshAAEAAAD/HgAAKMshAAEAAAAAHwAALMshAAEAAAABHwAAMMshAAEAAAACHwAANMshAAEAAAADHwAAOMshAAEAAAAEHwAAPMshAAEAAAAFHwAAQMshAAEAAAAGHwAARMshAAEAAAAHHwAASMshAAEAAAAIHwAATMshAAEAAAAJHwAAUMshAAEAAAAKHwAAVMshAAEAAAALHwAAWMshAAEAAAAMHwAAXMshAAEAAAANHwAAYMshAAEAAAAOHwAAZMshAAEAAAAPHwAAaMshAAEAAAAQHwAAbMshAAEAAAARHwAAcMshAAEAAAASHwAAdMshAAEAAAATHwAAeMshAAEAAAAUHwAAfMshAAEAAAAVHwAAgMshAAEAAAAYHwAAhMshAAEAAAAZHwAAiMshAAEAAAAaHwAAjMshAAEAAAAbHwAAkMshAAEAAAAcHwAAlMshAAEAAAAdHwAAmMshAAEAAAAgHwAAnMshAAEAAAAhHwAAoMshAAEAAAAiHwAApMshAAEAAAAjHwAAqMshAAEAAAAkHwAArMshAAEAAAAlHwAAsMshAAEAAAAmHwAAtMshAAEAAAAnHwAAuMshAAEAAAAoHwAAvMshAAEAAAApHwAAwMshAAEAAAAqHwAAxMshAAEAAAArHwAAyMshAAEAAAAsHwAAzMshAAEAAAAtHwAA0MshAAEAAAAuHwAA1MshAAEAAAAvHwAA2MshAAEAAAAwHwAA3MshAAEAAAAxHwAA4MshAAEAAAAyHwAA5MshAAEAAAAzHwAA6MshAAEAAAA0HwAA7MshAAEAAAA1HwAA8MshAAEAAAA2HwAA9MshAAEAAAA3HwAA+MshAAEAAAA4HwAA/MshAAEAAAA5HwAAAMwhAAEAAAA6HwAABMwhAAEAAAA7HwAACMwhAAEAAAA8HwAADMwhAAEAAAA9HwAAEMwhAAEAAAA+HwAAFMwhAAEAAAA/HwAAGMwhAAEAAABAHwAAHMwhAAEAAABBHwAAIMwhAAEAAABCHwAAJMwhAAEAAABDHwAAKMwhAAEAAABEHwAALMwhAAEAAABFHwAAMMwhAAEAAABIHwAANMwhAAEAAABJHwAAOMwhAAEAAABKHwAAPMwhAAEAAABLHwAAQMwhAAEAAABMHwAARMwhAAEAAABNHwAASMwhAAEAAABRHwAATMwhAAEAAABTHwAAUMwhAAEAAABVHwAAVMwhAAEAAABXHwAAWMwhAAEAAABZHwAAXMwhAAEAAABbHwAAYMwhAAEAAABdHwAAZMwhAAEAAABfHwAAaMwhAAEAAABgHwAAbMwhAAEAAABhHwAAcMwhAAEAAABiHwAAdMwhAAEAAABjHwAAeMwhAAEAAABkHwAAfMwhAAEAAABlHwAAgMwhAAEAAABmHwAAhMwhAAEAAABnHwAAiMwhAAEAAABoHwAAjMwhAAEAAABpHwAAkMwhAAEAAABqHwAAlMwhAAEAAABrHwAAmMwhAAEAAABsHwAAnMwhAAEAAABtHwAAoMwhAAEAAABuHwAApMwhAAEAAABvHwAAqMwhAAEAAABwHwAArMwhAAEAAABxHwAAsMwhAAEAAAByHwAAtMwhAAEAAABzHwAAuMwhAAEAAAB0HwAAvMwhAAEAAAB1HwAAwMwhAAEAAAB2HwAAxMwhAAEAAAB3HwAAyMwhAAEAAAB4HwAAzMwhAAEAAAB5HwAA0MwhAAEAAAB6HwAA1MwhAAEAAAB7HwAA2MwhAAEAAAB8HwAA3MwhAAEAAAB9HwAA4MwhAAEAAACAHwAA5MwhAAEAAACBHwAA6MwhAAEAAACCHwAA7MwhAAEAAACDHwAA8MwhAAEAAACEHwAA9MwhAAEAAACFHwAA+MwhAAEAAACGHwAA/MwhAAEAAACHHwAAAM0hAAEAAACIHwAABM0hAAEAAACJHwAACM0hAAEAAACKHwAADM0hAAEAAACLHwAAEM0hAAEAAACMHwAAFM0hAAEAAACNHwAAGM0hAAEAAACOHwAAHM0hAAEAAACPHwAAIM0hAAEAAACQHwAAJM0hAAEAAACRHwAAKM0hAAEAAACSHwAALM0hAAEAAACTHwAAMM0hAAEAAACUHwAANM0hAAEAAACVHwAAOM0hAAEAAACWHwAAPM0hAAEAAACXHwAAQM0hAAEAAACYHwAARM0hAAEAAACZHwAASM0hAAEAAACaHwAATM0hAAEAAACbHwAAUM0hAAEAAACcHwAAVM0hAAEAAACdHwAAWM0hAAEAAACeHwAAXM0hAAEAAACfHwAAYM0hAAEAAACgHwAAZM0hAAEAAAChHwAAaM0hAAEAAACiHwAAbM0hAAEAAACjHwAAcM0hAAEAAACkHwAAdM0hAAEAAAClHwAAeM0hAAEAAACmHwAAfM0hAAEAAACnHwAAgM0hAAEAAACoHwAAhM0hAAEAAACpHwAAiM0hAAEAAACqHwAAjM0hAAEAAACrHwAAkM0hAAEAAACsHwAAlM0hAAEAAACtHwAAmM0hAAEAAACuHwAAnM0hAAEAAACvHwAAoM0hAAEAAACwHwAApM0hAAEAAACxHwAAqM0hAAEAAACzHwAArM0hAAEAAAC4HwAAsM0hAAEAAAC5HwAAtM0hAAEAAAC6HwAAuM0hAAEAAAC7HwAAvM0hAAEAAAC8HwAAwM0hAAEAAAC+HwAAxM0hAAMAAADDHwAA0M0hAAEAAADIHwAA1M0hAAEAAADJHwAA2M0hAAEAAADKHwAA3M0hAAEAAADLHwAA4M0hAAEAAADMHwAA5M0hAAEAAADQHwAA6M0hAAEAAADRHwAA7M0hAAEAAADYHwAA8M0hAAEAAADZHwAA9M0hAAEAAADaHwAA+M0hAAEAAADbHwAA/M0hAAEAAADgHwAAAM4hAAEAAADhHwAABM4hAAEAAADlHwAACM4hAAEAAADoHwAADM4hAAEAAADpHwAAEM4hAAEAAADqHwAAFM4hAAEAAADrHwAAGM4hAAEAAADsHwAAHM4hAAEAAADzHwAAIM4hAAEAAAD4HwAAJM4hAAEAAAD5HwAAKM4hAAEAAAD6HwAALM4hAAEAAAD7HwAAMM4hAAEAAAD8HwAANM4hAAEAAAAmIQAAOM4hAAIAAAAqIQAAQM4hAAIAAAArIQAASM4hAAIAAAAyIQAAUM4hAAEAAABOIQAAVM4hAAEAAABgIQAAWM4hAAEAAABhIQAAXM4hAAEAAABiIQAAYM4hAAEAAABjIQAAZM4hAAEAAABkIQAAaM4hAAEAAABlIQAAbM4hAAEAAABmIQAAcM4hAAEAAABnIQAAdM4hAAEAAABoIQAAeM4hAAEAAABpIQAAfM4hAAEAAABqIQAAgM4hAAEAAABrIQAAhM4hAAEAAABsIQAAiM4hAAEAAABtIQAAjM4hAAEAAABuIQAAkM4hAAEAAABvIQAAlM4hAAEAAABwIQAAmM4hAAEAAABxIQAAnM4hAAEAAAByIQAAoM4hAAEAAABzIQAApM4hAAEAAAB0IQAAqM4hAAEAAAB1IQAArM4hAAEAAAB2IQAAsM4hAAEAAAB3IQAAtM4hAAEAAAB4IQAAuM4hAAEAAAB5IQAAvM4hAAEAAAB6IQAAwM4hAAEAAAB7IQAAxM4hAAEAAAB8IQAAyM4hAAEAAAB9IQAAzM4hAAEAAAB+IQAA0M4hAAEAAAB/IQAA1M4hAAEAAACDIQAA2M4hAAEAAACEIQAA3M4hAAEAAAC2JAAA4M4hAAEAAAC3JAAA5M4hAAEAAAC4JAAA6M4hAAEAAAC5JAAA7M4hAAEAAAC6JAAA8M4hAAEAAAC7JAAA9M4hAAEAAAC8JAAA+M4hAAEAAAC9JAAA/M4hAAEAAAC+JAAAAM8hAAEAAAC/JAAABM8hAAEAAADAJAAACM8hAAEAAADBJAAADM8hAAEAAADCJAAAEM8hAAEAAADDJAAAFM8hAAEAAADEJAAAGM8hAAEAAADFJAAAHM8hAAEAAADGJAAAIM8hAAEAAADHJAAAJM8hAAEAAADIJAAAKM8hAAEAAADJJAAALM8hAAEAAADKJAAAMM8hAAEAAADLJAAANM8hAAEAAADMJAAAOM8hAAEAAADNJAAAPM8hAAEAAADOJAAAQM8hAAEAAADPJAAARM8hAAEAAADQJAAASM8hAAEAAADRJAAATM8hAAEAAADSJAAAUM8hAAEAAADTJAAAVM8hAAEAAADUJAAAWM8hAAEAAADVJAAAXM8hAAEAAADWJAAAYM8hAAEAAADXJAAAZM8hAAEAAADYJAAAaM8hAAEAAADZJAAAbM8hAAEAAADaJAAAcM8hAAEAAADbJAAAdM8hAAEAAADcJAAAeM8hAAEAAADdJAAAfM8hAAEAAADeJAAAgM8hAAEAAADfJAAAhM8hAAEAAADgJAAAiM8hAAEAAADhJAAAjM8hAAEAAADiJAAAkM8hAAEAAADjJAAAlM8hAAEAAADkJAAAmM8hAAEAAADlJAAAnM8hAAEAAADmJAAAoM8hAAEAAADnJAAApM8hAAEAAADoJAAAqM8hAAEAAADpJAAArM8hAAEAAAAALAAAsM8hAAEAAAABLAAAtM8hAAEAAAACLAAAuM8hAAEAAAADLAAAvM8hAAEAAAAELAAAwM8hAAEAAAAFLAAAxM8hAAEAAAAGLAAAyM8hAAEAAAAHLAAAzM8hAAEAAAAILAAA0M8hAAEAAAAJLAAA1M8hAAEAAAAKLAAA2M8hAAEAAAALLAAA3M8hAAEAAAAMLAAA4M8hAAEAAAANLAAA5M8hAAEAAAAOLAAA6M8hAAEAAAAPLAAA7M8hAAEAAAAQLAAA8M8hAAEAAAARLAAA9M8hAAEAAAASLAAA+M8hAAEAAAATLAAA/M8hAAEAAAAULAAAANAhAAEAAAAVLAAABNAhAAEAAAAWLAAACNAhAAEAAAAXLAAADNAhAAEAAAAYLAAAENAhAAEAAAAZLAAAFNAhAAEAAAAaLAAAGNAhAAEAAAAbLAAAHNAhAAEAAAAcLAAAINAhAAEAAAAdLAAAJNAhAAEAAAAeLAAAKNAhAAEAAAAfLAAALNAhAAEAAAAgLAAAMNAhAAEAAAAhLAAANNAhAAEAAAAiLAAAONAhAAEAAAAjLAAAPNAhAAEAAAAkLAAAQNAhAAEAAAAlLAAARNAhAAEAAAAmLAAASNAhAAEAAAAnLAAATNAhAAEAAAAoLAAAUNAhAAEAAAApLAAAVNAhAAEAAAAqLAAAWNAhAAEAAAArLAAAXNAhAAEAAAAsLAAAYNAhAAEAAAAtLAAAZNAhAAEAAAAuLAAAaNAhAAEAAAAvLAAAbNAhAAEAAAAwLAAAcNAhAAEAAAAxLAAAdNAhAAEAAAAyLAAAeNAhAAEAAAAzLAAAfNAhAAEAAAA0LAAAgNAhAAEAAAA1LAAAhNAhAAEAAAA2LAAAiNAhAAEAAAA3LAAAjNAhAAEAAAA4LAAAkNAhAAEAAAA5LAAAlNAhAAEAAAA6LAAAmNAhAAEAAAA7LAAAnNAhAAEAAAA8LAAAoNAhAAEAAAA9LAAApNAhAAEAAAA+LAAAqNAhAAEAAAA/LAAArNAhAAEAAABALAAAsNAhAAEAAABBLAAAtNAhAAEAAABCLAAAuNAhAAEAAABDLAAAvNAhAAEAAABELAAAwNAhAAEAAABFLAAAxNAhAAEAAABGLAAAyNAhAAEAAABHLAAAzNAhAAEAAABILAAA0NAhAAEAAABJLAAA1NAhAAEAAABKLAAA2NAhAAEAAABLLAAA3NAhAAEAAABMLAAA4NAhAAEAAABNLAAA5NAhAAEAAABOLAAA6NAhAAEAAABPLAAA7NAhAAEAAABQLAAA8NAhAAEAAABRLAAA9NAhAAEAAABSLAAA+NAhAAEAAABTLAAA/NAhAAEAAABULAAAANEhAAEAAABVLAAABNEhAAEAAABWLAAACNEhAAEAAABXLAAADNEhAAEAAABYLAAAENEhAAEAAABZLAAAFNEhAAEAAABaLAAAGNEhAAEAAABbLAAAHNEhAAEAAABcLAAAINEhAAEAAABdLAAAJNEhAAEAAABeLAAAKNEhAAEAAABfLAAALNEhAAEAAABgLAAAMNEhAAEAAABhLAAANNEhAAEAAABiLAAAONEhAAEAAABjLAAAPNEhAAEAAABkLAAAQNEhAAEAAABlLAAARNEhAAEAAABmLAAASNEhAAEAAABnLAAATNEhAAEAAABoLAAAUNEhAAEAAABpLAAAVNEhAAEAAABqLAAAWNEhAAEAAABrLAAAXNEhAAEAAABsLAAAYNEhAAEAAABtLAAAZNEhAAEAAABuLAAAaNEhAAEAAABvLAAAbNEhAAEAAABwLAAAcNEhAAEAAAByLAAAdNEhAAEAAABzLAAAeNEhAAEAAAB1LAAAfNEhAAEAAAB2LAAAgNEhAAEAAAB+LAAAhNEhAAEAAAB/LAAAiNEhAAEAAACALAAAjNEhAAEAAACBLAAAkNEhAAEAAACCLAAAlNEhAAEAAACDLAAAmNEhAAEAAACELAAAnNEhAAEAAACFLAAAoNEhAAEAAACGLAAApNEhAAEAAACHLAAAqNEhAAEAAACILAAArNEhAAEAAACJLAAAsNEhAAEAAACKLAAAtNEhAAEAAACLLAAAuNEhAAEAAACMLAAAvNEhAAEAAACNLAAAwNEhAAEAAACOLAAAxNEhAAEAAACPLAAAyNEhAAEAAACQLAAAzNEhAAEAAACRLAAA0NEhAAEAAACSLAAA1NEhAAEAAACTLAAA2NEhAAEAAACULAAA3NEhAAEAAACVLAAA4NEhAAEAAACWLAAA5NEhAAEAAACXLAAA6NEhAAEAAACYLAAA7NEhAAEAAACZLAAA8NEhAAEAAACaLAAA9NEhAAEAAACbLAAA+NEhAAEAAACcLAAA/NEhAAEAAACdLAAAANIhAAEAAACeLAAABNIhAAEAAACfLAAACNIhAAEAAACgLAAADNIhAAEAAAChLAAAENIhAAEAAACiLAAAFNIhAAEAAACjLAAAGNIhAAEAAACkLAAAHNIhAAEAAAClLAAAINIhAAEAAACmLAAAJNIhAAEAAACnLAAAKNIhAAEAAACoLAAALNIhAAEAAACpLAAAMNIhAAEAAACqLAAANNIhAAEAAACrLAAAONIhAAEAAACsLAAAPNIhAAEAAACtLAAAQNIhAAEAAACuLAAARNIhAAEAAACvLAAASNIhAAEAAACwLAAATNIhAAEAAACxLAAAUNIhAAEAAACyLAAAVNIhAAEAAACzLAAAWNIhAAEAAAC0LAAAXNIhAAEAAAC1LAAAYNIhAAEAAAC2LAAAZNIhAAEAAAC3LAAAaNIhAAEAAAC4LAAAbNIhAAEAAAC5LAAAcNIhAAEAAAC6LAAAdNIhAAEAAAC7LAAAeNIhAAEAAAC8LAAAfNIhAAEAAAC9LAAAgNIhAAEAAAC+LAAAhNIhAAEAAAC/LAAAiNIhAAEAAADALAAAjNIhAAEAAADBLAAAkNIhAAEAAADCLAAAlNIhAAEAAADDLAAAmNIhAAEAAADELAAAnNIhAAEAAADFLAAAoNIhAAEAAADGLAAApNIhAAEAAADHLAAAqNIhAAEAAADILAAArNIhAAEAAADJLAAAsNIhAAEAAADKLAAAtNIhAAEAAADLLAAAuNIhAAEAAADMLAAAvNIhAAEAAADNLAAAwNIhAAEAAADOLAAAxNIhAAEAAADPLAAAyNIhAAEAAADQLAAAzNIhAAEAAADRLAAA0NIhAAEAAADSLAAA1NIhAAEAAADTLAAA2NIhAAEAAADULAAA3NIhAAEAAADVLAAA4NIhAAEAAADWLAAA5NIhAAEAAADXLAAA6NIhAAEAAADYLAAA7NIhAAEAAADZLAAA8NIhAAEAAADaLAAA9NIhAAEAAADbLAAA+NIhAAEAAADcLAAA/NIhAAEAAADdLAAAANMhAAEAAADeLAAABNMhAAEAAADfLAAACNMhAAEAAADgLAAADNMhAAEAAADhLAAAENMhAAEAAADiLAAAFNMhAAEAAADjLAAAGNMhAAEAAADrLAAAHNMhAAEAAADsLAAAINMhAAEAAADtLAAAJNMhAAEAAADuLAAAKNMhAAEAAADyLAAALNMhAAEAAADzLAAAMNMhAAEAAAAALQAANNMhAAEAAAABLQAAONMhAAEAAAACLQAAPNMhAAEAAAADLQAAQNMhAAEAAAAELQAARNMhAAEAAAAFLQAASNMhAAEAAAAGLQAATNMhAAEAAAAHLQAAUNMhAAEAAAAILQAAVNMhAAEAAAAJLQAAWNMhAAEAAAAKLQAAXNMhAAEAAAALLQAAYNMhAAEAAAAMLQAAZNMhAAEAAAANLQAAaNMhAAEAAAAOLQAAbNMhAAEAAAAPLQAAcNMhAAEAAAAQLQAAdNMhAAEAAAARLQAAeNMhAAEAAAASLQAAfNMhAAEAAAATLQAAgNMhAAEAAAAULQAAhNMhAAEAAAAVLQAAiNMhAAEAAAAWLQAAjNMhAAEAAAAXLQAAkNMhAAEAAAAYLQAAlNMhAAEAAAAZLQAAmNMhAAEAAAAaLQAAnNMhAAEAAAAbLQAAoNMhAAEAAAAcLQAApNMhAAEAAAAdLQAAqNMhAAEAAAAeLQAArNMhAAEAAAAfLQAAsNMhAAEAAAAgLQAAtNMhAAEAAAAhLQAAuNMhAAEAAAAiLQAAvNMhAAEAAAAjLQAAwNMhAAEAAAAkLQAAxNMhAAEAAAAlLQAAyNMhAAEAAAAnLQAAzNMhAAEAAAAtLQAA0NMhAAEAAABApgAA1NMhAAEAAABBpgAA2NMhAAEAAABCpgAA3NMhAAEAAABDpgAA4NMhAAEAAABEpgAA5NMhAAEAAABFpgAA6NMhAAEAAABGpgAA7NMhAAEAAABHpgAA8NMhAAEAAABIpgAA9NMhAAEAAABJpgAA+NMhAAEAAABKpgAA/NMhAAIAAABLpgAABNQhAAIAAABMpgAADNQhAAEAAABNpgAAENQhAAEAAABOpgAAFNQhAAEAAABPpgAAGNQhAAEAAABQpgAAHNQhAAEAAABRpgAAINQhAAEAAABSpgAAJNQhAAEAAABTpgAAKNQhAAEAAABUpgAALNQhAAEAAABVpgAAMNQhAAEAAABWpgAANNQhAAEAAABXpgAAONQhAAEAAABYpgAAPNQhAAEAAABZpgAAQNQhAAEAAABapgAARNQhAAEAAABbpgAASNQhAAEAAABcpgAATNQhAAEAAABdpgAAUNQhAAEAAABepgAAVNQhAAEAAABfpgAAWNQhAAEAAABgpgAAXNQhAAEAAABhpgAAYNQhAAEAAABipgAAZNQhAAEAAABjpgAAaNQhAAEAAABkpgAAbNQhAAEAAABlpgAAcNQhAAEAAABmpgAAdNQhAAEAAABnpgAAeNQhAAEAAABopgAAfNQhAAEAAABppgAAgNQhAAEAAABqpgAAhNQhAAEAAABrpgAAiNQhAAEAAABspgAAjNQhAAEAAABtpgAAkNQhAAEAAACApgAAlNQhAAEAAACBpgAAmNQhAAEAAACCpgAAnNQhAAEAAACDpgAAoNQhAAEAAACEpgAApNQhAAEAAACFpgAAqNQhAAEAAACGpgAArNQhAAEAAACHpgAAsNQhAAEAAACIpgAAtNQhAAEAAACJpgAAuNQhAAEAAACKpgAAvNQhAAEAAACLpgAAwNQhAAEAAACMpgAAxNQhAAEAAACNpgAAyNQhAAEAAACOpgAAzNQhAAEAAACPpgAA0NQhAAEAAACQpgAA1NQhAAEAAACRpgAA2NQhAAEAAACSpgAA3NQhAAEAAACTpgAA4NQhAAEAAACUpgAA5NQhAAEAAACVpgAA6NQhAAEAAACWpgAA7NQhAAEAAACXpgAA8NQhAAEAAACYpgAA9NQhAAEAAACZpgAA+NQhAAEAAACapgAA/NQhAAEAAACbpgAAANUhAAEAAAAipwAABNUhAAEAAAAjpwAACNUhAAEAAAAkpwAADNUhAAEAAAAlpwAAENUhAAEAAAAmpwAAFNUhAAEAAAAnpwAAGNUhAAEAAAAopwAAHNUhAAEAAAAppwAAINUhAAEAAAAqpwAAJNUhAAEAAAArpwAAKNUhAAEAAAAspwAALNUhAAEAAAAtpwAAMNUhAAEAAAAupwAANNUhAAEAAAAvpwAAONUhAAEAAAAypwAAPNUhAAEAAAAzpwAAQNUhAAEAAAA0pwAARNUhAAEAAAA1pwAASNUhAAEAAAA2pwAATNUhAAEAAAA3pwAAUNUhAAEAAAA4pwAAVNUhAAEAAAA5pwAAWNUhAAEAAAA6pwAAXNUhAAEAAAA7pwAAYNUhAAEAAAA8pwAAZNUhAAEAAAA9pwAAaNUhAAEAAAA+pwAAbNUhAAEAAAA/pwAAcNUhAAEAAABApwAAdNUhAAEAAABBpwAAeNUhAAEAAABCpwAAfNUhAAEAAABDpwAAgNUhAAEAAABEpwAAhNUhAAEAAABFpwAAiNUhAAEAAABGpwAAjNUhAAEAAABHpwAAkNUhAAEAAABIpwAAlNUhAAEAAABJpwAAmNUhAAEAAABKpwAAnNUhAAEAAABLpwAAoNUhAAEAAABMpwAApNUhAAEAAABNpwAAqNUhAAEAAABOpwAArNUhAAEAAABPpwAAsNUhAAEAAABQpwAAtNUhAAEAAABRpwAAuNUhAAEAAABSpwAAvNUhAAEAAABTpwAAwNUhAAEAAABUpwAAxNUhAAEAAABVpwAAyNUhAAEAAABWpwAAzNUhAAEAAABXpwAA0NUhAAEAAABYpwAA1NUhAAEAAABZpwAA2NUhAAEAAABapwAA3NUhAAEAAABbpwAA4NUhAAEAAABcpwAA5NUhAAEAAABdpwAA6NUhAAEAAABepwAA7NUhAAEAAABfpwAA8NUhAAEAAABgpwAA9NUhAAEAAABhpwAA+NUhAAEAAABipwAA/NUhAAEAAABjpwAAANYhAAEAAABkpwAABNYhAAEAAABlpwAACNYhAAEAAABmpwAADNYhAAEAAABnpwAAENYhAAEAAABopwAAFNYhAAEAAABppwAAGNYhAAEAAABqpwAAHNYhAAEAAABrpwAAINYhAAEAAABspwAAJNYhAAEAAABtpwAAKNYhAAEAAABupwAALNYhAAEAAABvpwAAMNYhAAEAAAB5pwAANNYhAAEAAAB6pwAAONYhAAEAAAB7pwAAPNYhAAEAAAB8pwAAQNYhAAEAAAB9pwAARNYhAAEAAAB+pwAASNYhAAEAAAB/pwAATNYhAAEAAACApwAAUNYhAAEAAACBpwAAVNYhAAEAAACCpwAAWNYhAAEAAACDpwAAXNYhAAEAAACEpwAAYNYhAAEAAACFpwAAZNYhAAEAAACGpwAAaNYhAAEAAACHpwAAbNYhAAEAAACLpwAAcNYhAAEAAACMpwAAdNYhAAEAAACNpwAAeNYhAAEAAACQpwAAfNYhAAEAAACRpwAAgNYhAAEAAACSpwAAhNYhAAEAAACTpwAAiNYhAAEAAACUpwAAjNYhAAEAAACWpwAAkNYhAAEAAACXpwAAlNYhAAEAAACYpwAAmNYhAAEAAACZpwAAnNYhAAEAAACapwAAoNYhAAEAAACbpwAApNYhAAEAAACcpwAAqNYhAAEAAACdpwAArNYhAAEAAACepwAAsNYhAAEAAACfpwAAtNYhAAEAAACgpwAAuNYhAAEAAAChpwAAvNYhAAEAAACipwAAwNYhAAEAAACjpwAAxNYhAAEAAACkpwAAyNYhAAEAAAClpwAAzNYhAAEAAACmpwAA0NYhAAEAAACnpwAA1NYhAAEAAACopwAA2NYhAAEAAACppwAA3NYhAAEAAACqpwAA4NYhAAEAAACrpwAA5NYhAAEAAACspwAA6NYhAAEAAACtpwAA7NYhAAEAAACupwAA8NYhAAEAAACwpwAA9NYhAAEAAACxpwAA+NYhAAEAAACypwAA/NYhAAEAAACzpwAAANchAAEAAAC0pwAABNchAAEAAAC1pwAACNchAAEAAAC2pwAADNchAAEAAAC3pwAAENchAAEAAAC4pwAAFNchAAEAAAC5pwAAGNchAAEAAAC6pwAAHNchAAEAAAC7pwAAINchAAEAAAC8pwAAJNchAAEAAAC9pwAAKNchAAEAAAC+pwAALNchAAEAAAC/pwAAMNchAAEAAADApwAANNchAAEAAADBpwAAONchAAEAAADCpwAAPNchAAEAAADDpwAAQNchAAEAAADEpwAARNchAAEAAADFpwAASNchAAEAAADGpwAATNchAAEAAADHpwAAUNchAAEAAADIpwAAVNchAAEAAADJpwAAWNchAAEAAADKpwAAXNchAAEAAADQpwAAYNchAAEAAADRpwAAZNchAAEAAADWpwAAaNchAAEAAADXpwAAbNchAAEAAADYpwAAcNchAAEAAADZpwAAdNchAAEAAAD1pwAAeNchAAEAAAD2pwAAfNchAAEAAABTqwAAgNchAAEAAABwqwAAhNchAAEAAABxqwAAiNchAAEAAAByqwAAjNchAAEAAABzqwAAkNchAAEAAAB0qwAAlNchAAEAAAB1qwAAmNchAAEAAAB2qwAAnNchAAEAAAB3qwAAoNchAAEAAAB4qwAApNchAAEAAAB5qwAAqNchAAEAAAB6qwAArNchAAEAAAB7qwAAsNchAAEAAAB8qwAAtNchAAEAAAB9qwAAuNchAAEAAAB+qwAAvNchAAEAAAB/qwAAwNchAAEAAACAqwAAxNchAAEAAACBqwAAyNchAAEAAACCqwAAzNchAAEAAACDqwAA0NchAAEAAACEqwAA1NchAAEAAACFqwAA2NchAAEAAACGqwAA3NchAAEAAACHqwAA4NchAAEAAACIqwAA5NchAAEAAACJqwAA6NchAAEAAACKqwAA7NchAAEAAACLqwAA8NchAAEAAACMqwAA9NchAAEAAACNqwAA+NchAAEAAACOqwAA/NchAAEAAACPqwAAANghAAEAAACQqwAABNghAAEAAACRqwAACNghAAEAAACSqwAADNghAAEAAACTqwAAENghAAEAAACUqwAAFNghAAEAAACVqwAAGNghAAEAAACWqwAAHNghAAEAAACXqwAAINghAAEAAACYqwAAJNghAAEAAACZqwAAKNghAAEAAACaqwAALNghAAEAAACbqwAAMNghAAEAAACcqwAANNghAAEAAACdqwAAONghAAEAAACeqwAAPNghAAEAAACfqwAAQNghAAEAAACgqwAARNghAAEAAAChqwAASNghAAEAAACiqwAATNghAAEAAACjqwAAUNghAAEAAACkqwAAVNghAAEAAAClqwAAWNghAAEAAACmqwAAXNghAAEAAACnqwAAYNghAAEAAACoqwAAZNghAAEAAACpqwAAaNghAAEAAACqqwAAbNghAAEAAACrqwAAcNghAAEAAACsqwAAdNghAAEAAACtqwAAeNghAAEAAACuqwAAfNghAAEAAACvqwAAgNghAAEAAACwqwAAhNghAAEAAACxqwAAiNghAAEAAACyqwAAjNghAAEAAACzqwAAkNghAAEAAAC0qwAAlNghAAEAAAC1qwAAmNghAAEAAAC2qwAAnNghAAEAAAC3qwAAoNghAAEAAAC4qwAApNghAAEAAAC5qwAAqNghAAEAAAC6qwAArNghAAEAAAC7qwAAsNghAAEAAAC8qwAAtNghAAEAAAC9qwAAuNghAAEAAAC+qwAAvNghAAEAAAC/qwAAwNghAAEAAAAh/wAAxNghAAEAAAAi/wAAyNghAAEAAAAj/wAAzNghAAEAAAAk/wAA0NghAAEAAAAl/wAA1NghAAEAAAAm/wAA2NghAAEAAAAn/wAA3NghAAEAAAAo/wAA4NghAAEAAAAp/wAA5NghAAEAAAAq/wAA6NghAAEAAAAr/wAA7NghAAEAAAAs/wAA8NghAAEAAAAt/wAA9NghAAEAAAAu/wAA+NghAAEAAAAv/wAA/NghAAEAAAAw/wAAANkhAAEAAAAx/wAABNkhAAEAAAAy/wAACNkhAAEAAAAz/wAADNkhAAEAAAA0/wAAENkhAAEAAAA1/wAAFNkhAAEAAAA2/wAAGNkhAAEAAAA3/wAAHNkhAAEAAAA4/wAAINkhAAEAAAA5/wAAJNkhAAEAAAA6/wAAKNkhAAEAAABB/wAALNkhAAEAAABC/wAAMNkhAAEAAABD/wAANNkhAAEAAABE/wAAONkhAAEAAABF/wAAPNkhAAEAAABG/wAAQNkhAAEAAABH/wAARNkhAAEAAABI/wAASNkhAAEAAABJ/wAATNkhAAEAAABK/wAAUNkhAAEAAABL/wAAVNkhAAEAAABM/wAAWNkhAAEAAABN/wAAXNkhAAEAAABO/wAAYNkhAAEAAABP/wAAZNkhAAEAAABQ/wAAaNkhAAEAAABR/wAAbNkhAAEAAABS/wAAcNkhAAEAAABT/wAAdNkhAAEAAABU/wAAeNkhAAEAAABV/wAAfNkhAAEAAABW/wAAgNkhAAEAAABX/wAAhNkhAAEAAABY/wAAiNkhAAEAAABZ/wAAjNkhAAEAAABa/wAAkNkhAAEAAAAABAEAlNkhAAEAAAABBAEAmNkhAAEAAAACBAEAnNkhAAEAAAADBAEAoNkhAAEAAAAEBAEApNkhAAEAAAAFBAEAqNkhAAEAAAAGBAEArNkhAAEAAAAHBAEAsNkhAAEAAAAIBAEAtNkhAAEAAAAJBAEAuNkhAAEAAAAKBAEAvNkhAAEAAAALBAEAwNkhAAEAAAAMBAEAxNkhAAEAAAANBAEAyNkhAAEAAAAOBAEAzNkhAAEAAAAPBAEA0NkhAAEAAAAQBAEA1NkhAAEAAAARBAEA2NkhAAEAAAASBAEA3NkhAAEAAAATBAEA4NkhAAEAAAAUBAEA5NkhAAEAAAAVBAEA6NkhAAEAAAAWBAEA7NkhAAEAAAAXBAEA8NkhAAEAAAAYBAEA9NkhAAEAAAAZBAEA+NkhAAEAAAAaBAEA/NkhAAEAAAAbBAEAANohAAEAAAAcBAEABNohAAEAAAAdBAEACNohAAEAAAAeBAEADNohAAEAAAAfBAEAENohAAEAAAAgBAEAFNohAAEAAAAhBAEAGNohAAEAAAAiBAEAHNohAAEAAAAjBAEAINohAAEAAAAkBAEAJNohAAEAAAAlBAEAKNohAAEAAAAmBAEALNohAAEAAAAnBAEAMNohAAEAAAAoBAEANNohAAEAAAApBAEAONohAAEAAAAqBAEAPNohAAEAAAArBAEAQNohAAEAAAAsBAEARNohAAEAAAAtBAEASNohAAEAAAAuBAEATNohAAEAAAAvBAEAUNohAAEAAAAwBAEAVNohAAEAAAAxBAEAWNohAAEAAAAyBAEAXNohAAEAAAAzBAEAYNohAAEAAAA0BAEAZNohAAEAAAA1BAEAaNohAAEAAAA2BAEAbNohAAEAAAA3BAEAcNohAAEAAAA4BAEAdNohAAEAAAA5BAEAeNohAAEAAAA6BAEAfNohAAEAAAA7BAEAgNohAAEAAAA8BAEAhNohAAEAAAA9BAEAiNohAAEAAAA+BAEAjNohAAEAAAA/BAEAkNohAAEAAABABAEAlNohAAEAAABBBAEAmNohAAEAAABCBAEAnNohAAEAAABDBAEAoNohAAEAAABEBAEApNohAAEAAABFBAEAqNohAAEAAABGBAEArNohAAEAAABHBAEAsNohAAEAAABIBAEAtNohAAEAAABJBAEAuNohAAEAAABKBAEAvNohAAEAAABLBAEAwNohAAEAAABMBAEAxNohAAEAAABNBAEAyNohAAEAAABOBAEAzNohAAEAAABPBAEA0NohAAEAAACwBAEA1NohAAEAAACxBAEA2NohAAEAAACyBAEA3NohAAEAAACzBAEA4NohAAEAAAC0BAEA5NohAAEAAAC1BAEA6NohAAEAAAC2BAEA7NohAAEAAAC3BAEA8NohAAEAAAC4BAEA9NohAAEAAAC5BAEA+NohAAEAAAC6BAEA/NohAAEAAAC7BAEAANshAAEAAAC8BAEABNshAAEAAAC9BAEACNshAAEAAAC+BAEADNshAAEAAAC/BAEAENshAAEAAADABAEAFNshAAEAAADBBAEAGNshAAEAAADCBAEAHNshAAEAAADDBAEAINshAAEAAADEBAEAJNshAAEAAADFBAEAKNshAAEAAADGBAEALNshAAEAAADHBAEAMNshAAEAAADIBAEANNshAAEAAADJBAEAONshAAEAAADKBAEAPNshAAEAAADLBAEAQNshAAEAAADMBAEARNshAAEAAADNBAEASNshAAEAAADOBAEATNshAAEAAADPBAEAUNshAAEAAADQBAEAVNshAAEAAADRBAEAWNshAAEAAADSBAEAXNshAAEAAADTBAEAYNshAAEAAADYBAEAZNshAAEAAADZBAEAaNshAAEAAADaBAEAbNshAAEAAADbBAEAcNshAAEAAADcBAEAdNshAAEAAADdBAEAeNshAAEAAADeBAEAfNshAAEAAADfBAEAgNshAAEAAADgBAEAhNshAAEAAADhBAEAiNshAAEAAADiBAEAjNshAAEAAADjBAEAkNshAAEAAADkBAEAlNshAAEAAADl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ZCBleHByIG9yIGFsdCwgZ290IGNvbmNhdCBtYXJrZXIAAADdOSAAbAAAABQDAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBhbHQsIGdvdCBhbHQgYnJhbmNoIG1hcmtlcgAAAN05IABsAAAAFwMAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IFVuaWNvZGUgY2xhc3PdOSAAbAAAAOkCAAARAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogZXhwZWN0ZWQgZXhwciBvciBjb25jYXQsIGdvdCBieXRlIGNsYXNzAAAA3TkgAGwAAADsAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgcmVwZXRpdGlvbgAAAN05IABsAAAA7wIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGdyb3Vw3TkgAGwAAADyAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGV4cGVjdGVkIGV4cHIgb3IgY29uY2F0LCBnb3QgYWx0IG1hcmtlcgAAAN05IABsAAAA9QIAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBleHBlY3RlZCBleHByIG9yIGNvbmNhdCwgZ290IGFsdCBicmFuY2ggbWFya2Vy3TkgAGwAAAD4AgAAEQAAAAxhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5mbGFncygpLnVuaWNvZGUoKQAA3TkgAGwAAABZBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZmxhZ3MoKS51bmljb2RlKCndOSAAbAAAAEMEAAAJAAAA3TkgAGwAAADbAgAAHAAAAN05IABsAAAAuAIAABwAAADdOSAAbAAAANECAAAsAAAA3TkgAGwAAADDAgAALAAAAKo6IABoAAAAAAkAADAAAACnISAAZAAAAN0AAAAiAAAApyEgAGQAAAD4AAAAPwAAAKchIABkAAAAuwAAABkAAADPUCAAYwAAALQBAAAtAAAAz1AgAGMAAAC1AQAAKwAAAM9QIABjAAAAuAEAAAkAAACNMiAAagAAAN4IAAAoAAAAjTIgAGoAAADyCAAAFQAAAI0yIABqAAAA4ggAAB4AAACNMiAAagAAAOUIAAA0AAAAjTIgAGoAAADrCAAAIAAAAI0yIABqAAAA6wgAAC0AAACNMiAAagAAAM4IAAAVAAAA3EMgAGYAAAA6BgAANgAAAB5CIABmAAAA8wQAACMAAADcQyAAZgAAAPkLAAAtAAAA3EMgAGYAAAD3CwAAEgAAANxDIABmAAAA6AsAABkAAAAcOCAAZAAAAGgAAAArAAAAGT8gAGYAAAD9AQAAQAAAAEFTQ0lJQXNzaWduZWRBbnkZPyAAZgAAAAYCAAAuAAAAGT8gAGYAAAB3AwAAHAAAABk/IABmAAAAqgMAAAkAAAAZPyAAZgAAAKsDAAAJAAAAGT8gAGYAAACuAwAADwAAABk/IABmAAAAoAMAAA0AAAAZPyAAZgAAAJ0DAAANAAAAHQ4gAE8AAAD8AwAAMwAAADc0MzIxMC8uLWfyQkPlLCsqKSgnJiUkIyIhOCAfHh0c/5SklYigm63d3oZ66MrX4NDczLu3s7Gossjiw5q4rn54v53Cqr2ioZbBjomrsLmnunCvwLycjI97hYCTipJy35f52O7s/ePa5veHtPHp9vTni/Xz++vJxPDWmLbNtX8b1NPS1eTFqZ+DrGlQYmBhUc+RdHOQgpl5a4RtbnxvUmx2jXGBd32ldVxqU0hjXUFPpu2jx77h0cvG2dvO6vie7/////////////////////////////////////////////////////////////////////////////////////8wOUFaYXpBWmF6AH8JCSAgAB9/fzA5IX5heiB+IS86QFtge34JCQoKCwsMDA0NICBBWjA5QVpfX2F6MDlBRmFmMAAAADkAAABgBgAAaQYAAPAGAAD5BgAAwAcAAMkHAABmCQAAbwkAAOYJAADvCQAAZgoAAG8KAADmCgAA7woAAGYLAABvCwAA5gsAAO8LAABmDAAAbwwAAOYMAADvDAAAZg0AAG8NAADmDQAA7w0AAFAOAABZDgAA0A4AANkOAAAgDwAAKQ8AAEAQAABJEAAAkBAAAJkQAADgFwAA6RcAABAYAAAZGAAARhkAAE8ZAADQGQAA2RkAAIAaAACJGgAAkBoAAJkaAABQGwAAWRsAALAbAAC5GwAAQBwAAEkcAABQHAAAWRwAACCmAAAppgAA0KgAANmoAAAAqQAACakAANCpAADZqQAA8KkAAPmpAABQqgAAWaoAAPCrAAD5qwAAEP8AABn/AACgBAEAqQQBADANAQA5DQEAZhABAG8QAQDwEAEA+RABADYRAQA/EQEA0BEBANkRAQDwEgEA+RIBAFAUAQBZFAEA0BQBANkUAQBQFgEAWRYBAMAWAQDJFgEAMBcBADkXAQDgGAEA6RgBAFAZAQBZGQEAUBwBAFkcAQBQHQEAWR0BAKAdAQCpHQEAUB8BAFkfAQBgagEAaWoBAMBqAQDJagEAUGsBAFlrAQDO1wEA/9cBAEDhAQBJ4QEA8OIBAPniAQDw5AEA+eQBAFDpAQBZ6QEA8PsBAPn7AQAJAAAADQAAACAAAAAgAAAAhQAAAIUAAACgAAAAoAAAAIAWAACAFgAAACAAAAogAAAoIAAAKSAAAC8gAAAvIAAAXyAAAF8gAAAAMAAAADAAADAAAAA5AAAAQQAAAEYAAABhAAAAZgAAAEEAAABaAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAEUDAABFAwAAcAMAAHQDAAB2AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACKBAAALwUAADEFAABWBQAAWQUAAFkFAABgBQAAiAUAALAFAAC9BQAAvwUAAL8FAADBBQAAwgUAAMQFAADFBQAAxwUAAMcFAADQBQAA6gUAAO8FAADyBQAAEAYAABoGAAAgBgAAVwYAAFkGAABfBgAAbgYAANMGAADVBgAA3AYAAOEGAADoBgAA7QYAAO8GAAD6BgAA/AYAAP8GAAD/BgAAEAcAAD8HAABNBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAXCAAAGggAACwIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAA1AgAAN8IAADjCAAA6QgAAPAIAAA7CQAAPQkAAEwJAABOCQAAUAkAAFUJAABjCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAxAkAAMcJAADICQAAywkAAMwJAADOCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAPAJAADxCQAA/AkAAPwJAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPgoAAEIKAABHCgAASAoAAEsKAABMCgAAUQoAAFEKAABZCgAAXAoAAF4KAABeCgAAcAoAAHUKAACBCgAAgwoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAADFCgAAxwoAAMkKAADLCgAAzAoAANAKAADQCgAA4AoAAOMKAAD5CgAA/AoAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAEQLAABHCwAASAsAAEsLAABMCwAAVgsAAFcLAABcCwAAXQsAAF8LAABjCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA1wsAANcLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAABEDAAARgwAAEgMAABKDAAATAwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAMQMAADGDAAAyAwAAMoMAADMDAAA1QwAANYMAADdDAAA3gwAAOAMAADj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agEAAGsBAC9rAQBAawEAQ2sBAGNrAQB3awEAfWsBAI9rAQBAbgEAf24BAABvAQBKbwEAT28BAIdvAQCPbwEAn28BAOBvAQDhbwEA428BAONvAQDwbwEA8W8BAABwAQD3hwEAAIgBANWMAQAAjQEACI0BAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAACwAQAisQEAMrEBADKxAQBQsQEAUrEBAFWxAQBVsQEAZLEBAGexAQBwsQEA+7IBAAC8AQBqvAEAcLwBAHy8AQCAvAEAiLwBAJC8AQCZvAEAnrwBAJ68AQAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDA1gEAwtYBANrWAQDc1gEA+tYBAPzWAQAU1wEAFtcBADTXAQA21wEATtcBAFDXAQBu1wEAcNcBAIjXAQCK1wEAqNcBAKrXAQDC1wEAxNcBAMvXAQAA3wEAHt8BACXfAQAq3wEAAOABAAbgAQAI4AEAGOABABvgAQAh4AEAI+ABACTgAQAm4AEAKuABADDgAQBt4AEAj+ABAI/gAQAA4QEALOEBADfhAQA94QEATuEBAE7hAQCQ4gEAreIBAMDiAQDr4gEA0OQBAOvkAQDg5wEA5ucBAOjnAQDr5wEA7ecBAO7nAQDw5wEA/ucBAADoAQDE6AEAAOkBAEPpAQBH6QEAR+kBAEvpAQBL6QEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl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BQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAgAwBALIMAQDADAEA8gwBAKAYAQDfGAEAQG4BAH9uAQAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDA1gEAwtYBANrWAQDc1gEA+tYBAPzWAQAU1wEAFtcBADTXAQA21wEATtcBAFDXAQBu1wEAcNcBAIjXAQCK1wEAqNcBAKrXAQDC1wEAxNcBAMvXAQAA3wEACd8BAAvfAQAe3wEAJd8BACrfAQAw4AEAbeABAADpAQBD6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEAQQAAAFoAAAC1AAAAtQAAAMAAAADWAAAA2AAAAN8AAAAAAQAAAAEAAAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABJAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAfwEAAH8BAACBAQAAggEAAIQBAACEAQAAhgEAAIcBAACJAQAAiwEAAI4BAACRAQAAkwEAAJQBAACWAQAAmAEAAJwBAACdAQAAnwEAAKABAACiAQAAogEAAKQBAACkAQAApgEAAKcBAACpAQAAqQEAAKwBAACsAQAArgEAAK8BAACxAQAAswEAALUBAAC1AQAAtwEAALgBAAC8AQAAvAEAAMQBAADFAQAAxwEAAMgBAADKAQAAywEAAM0BAADNAQAAzwEAAM8BAADRAQAA0QEAANMBAADTAQAA1QEAANUBAADXAQAA1wEAANkBAADZAQAA2wEAANsBAADeAQAA3gEAAOABAADgAQAA4gEAAOIBAADkAQAA5AEAAOYBAADmAQAA6AEAAOgBAADqAQAA6gEAAOwBAADsAQAA7gEAAO4BAADxAQAA8gEAAPQBAAD0AQAA9gEAAPgBAAD6AQAA+gEAAPwBAAD8AQAA/gEAAP4BAAAAAgAAAAIAAAICAAACAgAABAIAAAQCAAAGAgAABgIAAAgCAAAIAgAACgIAAAoCAAAMAgAADAIAAA4CAAAOAgAAEAIAABACAAASAgAAEgIAABQCAAAUAgAAFgIAABYCAAAYAgAAGAIAABoCAAAaAgAAHAIAABwCAAAeAgAAHgIAACACAAAgAgAAIgIAACICAAAkAgAAJAIAACYCAAAmAgAAKAIAACgCAAAqAgAAKgIAACwCAAAsAgAALgIAAC4CAAAwAgAAMAIAADICAAAyAgAAOgIAADsCAAA9AgAAPgIAAEECAABBAgAAQwIAAEYCAABIAgAASAIAAEoCAABKAgAATAIAAEwCAABOAgAATgIAAEUDAABFAwAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADCAwAAwgMAAM8DAADRAwAA1QMAANYDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAADwAwAA8QMAAPQDAAD1AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACHBQAAhwUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAPgTAAD9EwAAgBwAAIgcAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAmh4AAJseAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAgB8AAK8fAACyHwAAtB8AALcfAAC8HwAAwh8AAMQfAADHHwAAzB8AANgfAADbHwAA6B8AAOwfAADyHwAA9B8AAPcfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAAOkBACHpAQBBAAAAWgAAAGEAAAB6AAAAtQAAALUAAADAAAAA1gAAANgAAAD2AAAA+AAAADcBAAA5AQAAjAEAAI4BAACaAQAAnAEAAKkBAACsAQAAuQEAALwBAAC9AQAAvwEAAL8BAADEAQAAIAIAACICAAAzAgAAOgIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAAYQIAAGMCAABjAgAAZQIAAGYCAABoAgAAbAIAAG8CAABvAgAAcQIAAHICAAB1AgAAdQIAAH0CAAB9AgAAgAIAAIACAACCAgAAgwIAAIcCAACMAgAAkgIAAJICAACdAgAAngIAAEUDAABFAwAAcAMAAHMDAAB2AwAAdwMAAHsDAAB9AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAADRAwAA1QMAAPUDAAD3AwAA+wMAAP0DAACBBAAAigQAAC8FAAAxBQAAVgUAAGEFAACHBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD9EAAA/xAAAKATAAD1EwAA+BMAAP0TAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAAB5HQAAeR0AAH0dAAB9HQAAjh0AAI4dAAAAHgAAmx4AAJ4eAACeHgAAoB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAAmIQAAJiEAACohAAArIQAAMiEAADIhAABOIQAATiEAAGAhAAB/IQAAgyEAAIQhAAC2JAAA6SQAAAAsAABwLAAAciwAAHMsAAB1LAAAdiwAAH4sAADjLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAECmAABtpgAAgKYAAJumAAAipwAAL6cAADKnAABvpwAAeacAAIenAACLpwAAjacAAJCnAACUpwAAlqcAAK6nAACwpwAAyqcAANCnAADRpwAA1qcAANmnAAD1pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAIf8AADr/AABB/wAAWv8AAAAEAQBPBAEAsAQBANMEAQDYBAEA+wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQCADAEAsgwBAMAMAQDyDAEAoBgBAN8YAQBAbgEAf24BAADpAQBD6QEAQQAAAFoAAADAAAAA1gAAANgAAADeAAAAAAEAAAABAAACAQAAAgEAAAQBAAAEAQAABgEAAAYBAAAIAQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASgEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMUBAADHAQAAyAEAAMoBAADLAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADyAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANgDAADYAwAA2gMAANoDAADcAwAA3AMAAN4DAADeAwAA4AMAAOADAADiAwAA4gMAAOQDAADkAwAA5gMAAOYDAADoAwAA6AMAAOoDAADqAwAA7AMAAOwDAADuAwAA7gMAAPQDAAD0AwAA9wMAAPcDAAD5AwAA+gMAAP0DAAAvBAAAYAQAAGAEAABiBAAAYgQAAGQEAABkBAAAZgQAAGYEAABoBAAAaAQAAGoEAABqBAAAbAQAAGwEAABuBAAAbgQAAHAEAABwBAAAcgQAAHIEAAB0BAAAdAQAAHYEAAB2BAAAeAQAAHgEAAB6BAAAegQAAHwEAAB8BAAAfgQAAH4EAACABAAAgAQAAIoEAACKBAAAjAQAAIwEAACOBAAAjgQAAJAEAACQBAAAkgQAAJIEAACUBAAAlAQAAJYEAACWBAAAmAQAAJgEAACaBAAAmgQAAJwEAACcBAAAngQAAJ4EAACgBAAAoAQAAKIEAACiBAAApAQAAKQEAACmBAAApgQAAKgEAACoBAAAqgQAAKoEAACsBAAArAQAAK4EAACuBAAAsAQAALAEAACyBAAAsgQAALQEAAC0BAAAtgQAALYEAAC4BAAAuAQAALoEAAC6BAAAvAQAALwEAAC+BAAAvgQAAMAEAADBBAAAwwQAAMMEAADFBAAAxQQAAMcEAADHBAAAyQQAAMkEAADLBAAAywQAAM0EAADNBAAA0AQAANAEAADSBAAA0gQAANQEAADUBAAA1gQAANYEAADYBAAA2AQAANoEAADaBAAA3AQAANwEAADeBAAA3gQAAOAEAADgBAAA4gQAAOIEAADkBAAA5AQAAOYEAADmBAAA6AQAAOgEAADqBAAA6gQAAOwEAADsBAAA7gQAAO4EAADwBAAA8AQAAPIEAADyBAAA9AQAAPQEAAD2BAAA9gQAAPgEAAD4BAAA+gQAAPoEAAD8BAAA/AQAAP4EAAD+BAAAAAUAAAAFAAACBQAAAgUAAAQFAAAEBQAABgUAAAYFAAAIBQAACAUAAAoFAAAKBQAADAUAAAwFAAAOBQAADgUAABAFAAAQBQAAEgUAABIFAAAUBQAAFAUAABYFAAAWBQAAGAUAABgFAAAaBQAAGgUAABwFAAAcBQAAHgUAAB4FAAAgBQAAIAUAACIFAAAiBQAAJAUAACQFAAAmBQAAJgUAACgFAAAoBQAAKgUAACoFAAAsBQAALAUAAC4FAAAuBQAAMQUAAFYFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAACgEwAA9RMAAJAcAAC6HAAAvRwAAL8cAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADpAQAh6QEAYQAAAHoAAAC1AAAAtQAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAANwEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAIwBAACSAQAAkgEAAJUBAACVAQAAmQEAAJoBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAuQEAAL0BAAC9AQAAvwEAAL8BAADEAQAAxAEAAMYBAADHAQAAyQEAAMoBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPEBAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAMwIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAFQCAABWAgAAVwIAAFkCAABZAgAAWwIAAFwCAABgAgAAYQIAAGMCAABjAgAAZQIAAGYCAABoAgAAbAIAAG8CAABvAgAAcQIAAHICAAB1AgAAdQIAAH0CAAB9AgAAgAIAAIACAACCAgAAgwIAAIcCAACMAgAAkgIAAJICAACdAgAAngIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAewMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA+wMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYQUAAIcFAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANenAADXpwAA2acAANmnAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAi6QEAQ+kBAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACaAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxQEAAMYBAADIAQAAyQEAAMsBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPIBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAAzAgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAVAIAAFYCAABXAgAAWQIAAFkCAABbAgAAXAIAAGACAABhAgAAYwIAAGMCAABlAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAtB8AALYfAAC3HwAAvB8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADMHwAAzB8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAD8HwAA/B8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3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JQAAqyUAALYlAAC2JQAAwCUAAMAlAAD7JQAA/iUAAAAmAAAEJgAADiYAAA4mAAARJgAAESYAABQmAAAVJgAAGCYAABgmAAAdJgAAHSYAACAmAAAgJgAAIiYAACMmAAAmJgAAJiYAAComAAAqJgAALiYAAC8mAAA4JgAAOiYAAEAmAABAJgAAQiYAAEImAABIJgAAUyYAAF8mAABgJgAAYyYAAGMmAABlJgAAZiYAAGgmAABoJgAAeyYAAHsmAAB+JgAAfyYAAJImAACXJgAAmSYAAJkmAACbJgAAnCYAAKAmAAChJgAApyYAAKcmAACqJgAAqyYAALAmAACxJgAAvSYAAL4mAADEJgAAxSYAAMgmAADIJgAAziYAAM8mAADRJgAA0SYAANMmAADUJgAA6SYAAOomAADwJgAA9SYAAPcmAAD6JgAA/SYAAP0mAAACJwAAAicAAAUnAAAFJwAACCcAAA0nAAAPJwAADycAABInAAASJwAAFCcAABQnAAAWJwAAFicAAB0nAAAdJwAAIScAACEnAAAoJwAAKCcAADMnAAA0JwAARCcAAEQnAABHJwAARycAAEwnAABMJwAATicAAE4nAABTJwAAVScAAFcnAABXJwAAYycAAGQnAACVJwAAlycAAKEnAAChJwAAsCcAALAnAAC/JwAAvycAADQpAAA1KQAABSsAAAcrAAAbKwAAHCsAAFArAABQKwAAVSsAAFUrAAAwMAAAMDAAAD0wAAA9MAAAlzIAAJcyAACZMgAAmTIAAATwAQAE8AEAz/ABAM/wAQBw8QEAcfEBAH7xAQB/8QEAjvEBAI7xAQCR8QEAmvEBAObxAQD/8QEAAfIBAALyAQAa8gEAGvIBAC/yAQAv8gEAMvIBADryAQBQ8gEAUfIBAADzAQAh8wEAJPMBAJPzAQCW8wEAl/MBAJnzAQCb8wEAnvMBAPDzAQDz8wEA9fMBAPfzAQD99AEA//QBAD31AQBJ9QEATvUBAFD1AQBn9QEAb/UBAHD1AQBz9QEAevUBAIf1AQCH9QEAivUBAI31AQCQ9QEAkPUBAJX1AQCW9QEApPUBAKX1AQCo9QEAqPUBALH1AQCy9QEAvPUBALz1AQDC9QEAxPUBANH1AQDT9QEA3PUBAN71AQDh9QEA4fUBAOP1AQDj9QEA6PUBAOj1AQDv9QEA7/UBAPP1AQDz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CgAAOQoAAD4KAABACgAAWQoAAFwKAABeCgAAXgoAAGYKAABvCgAAcgoAAHQKAAB2CgAAdgoAAIMKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAMAKAADJCgAAyQoAAMsKAADMCgAA0AoAANAKAADgCgAA4QoAAOYKAADxCgAA+QoAAPkKAAACCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAQAsAAEALAABHCwAASAsAAEsLAABMCwAAXAsAAF0LAABfCwAAYQsAAGYLAAB3CwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC/CwAAvwsAAMELAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA5gsAAPoLAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABBDAAARAwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAGYMAABvDAAAdwwAAIAMAACCDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL4MAADADAAAwQwAAMMMAADEDAAAxwwAAMgMAADKDAAAywwAAN0MAADeDAAA4AwAAOEMAADmDAAA7wwAAPEMAADzDAAAAg0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAAA/DQAAQA0AAEYNAABIDQAASg0AAEwNAABODQAATw0AAFQNAABWDQAAWA0AAGENAABmDQAAfw0AAIINAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AANANAADRDQAA2A0AAN4NAADmDQAA7w0AAPINAAD0DQAAAQ4AADAOAAAyDgAAMw4AAD8OAABGDgAATw4AAFsOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AALAOAACyDgAAsw4AAL0OAAC9DgAAwA4AAMQOAADGDgAAxg4AANAOAADZ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LwAA9C8AAPsvAADyLwAA8y8AADAAAAA5AAAAQQAAAFoAAABfAAAAXwAAAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALcAAAC3AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIMEAACHBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACYCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8wwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzg4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAaRMAAHETAACAEwAAjxMAAKATAAD1EwAA+BMAAP0TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAO4WAAD4FgAAABcAABUXAAAfFwAANBcAAEAXAABTFwAAYBcAAGwXAABuFwAAcBcAAHIXAABzFwAAgBcAANMXAADXFwAA1xcAANwXAADdFwAA4BcAAOkXAAALGAAADRgAAA8YAAAZGAAAIBgAAHgYAACAGAAAqhgAALAYAAD1GAAAABkAAB4ZAAAgGQAAKxkAADAZAAA7GQAARhkAAG0ZAABwGQAAdBkAAIAZAACrGQAAsBkAAMkZAADQGQAA2hkAAAAaAAAbGgAAIBoAAF4aAABgGgAAfBoAAH8aAACJGgAAkBoAAJkaAACnGgAApxoAALAaAAC9GgAAvxoAAM4aAAAAGwAATBsAAFAbAABZGwAAaxsAAHMbAACAGwAA8xsAAAAcAAA3HAAAQBwAAEkcAABNHAAAfRwAAIAcAACIHAAAkBwAALocAAC9HAAAvxwAANAcAADSHAAA1BwAAPocAAAAHQAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAD8gAABAIAAAVCAAAFQgAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAADQIAAA3CAAAOEgAADhIAAA5SAAAPAgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABghAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAAAAsAADkLAAA6ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAAAwLQAAZy0AAG8tAABvLQAAfy0AAJYtAACgLQAApi0AAKgtAACuLQAAsC0AALYtAAC4LQAAvi0AAMAtAADGLQAAyC0AAM4tAADQ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AwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAADQBQAA6gUAAO8FAADyBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAADA0AAA4NAAAQ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AAAA/wAAAAEBAAABAQAAAwEAAAMBAAAFAQAABQEAAAcBAAAHAQAACQEAAAkBAAALAQAACwEAAA0BAAANAQAADwEAAA8BAAARAQAAEQEAABMBAAATAQAAFQEAABUBAAAXAQAAFwEAABkBAAAZAQAAGwEAABsBAAAdAQAAHQEAAB8BAAAfAQAAIQEAACEBAAAjAQAAIwEAACUBAAAlAQAAJwEAACcBAAApAQAAKQEAACsBAAArAQAALQEAAC0BAAAvAQAALwEAADEBAAAxAQAAMwEAADMBAAA1AQAANQEAADcBAAA4AQAAOgEAADoBAAA8AQAAPAEAAD4BAAA+AQAAQAEAAEABAABCAQAAQgEAAEQBAABEAQAARgEAAEYBAABIAQAASQEAAEsBAABLAQAATQEAAE0BAABPAQAATwEAAFEBAABRAQAAUwEAAFMBAABVAQAAVQEAAFcBAABXAQAAWQEAAFkBAABbAQAAWwEAAF0BAABdAQAAXwEAAF8BAABhAQAAYQEAAGMBAABjAQAAZQEAAGUBAABnAQAAZwEAAGkBAABpAQAAawEAAGsBAABtAQAAbQEAAG8BAABvAQAAcQEAAHEBAABzAQAAcwEAAHUBAAB1AQAAdwEAAHcBAAB6AQAAegEAAHwBAAB8AQAAfgEAAIABAACDAQAAgwEAAIUBAACFAQAAiAEAAIgBAACMAQAAjQEAAJIBAACSAQAAlQEAAJUBAACZAQAAmwEAAJ4BAACeAQAAoQEAAKEBAACjAQAAowEAAKUBAAClAQAAqAEAAKgBAACqAQAAqwEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALoBAAC9AQAAvwEAAMYBAADGAQAAyQEAAMkBAADMAQAAzAEAAM4BAADOAQAA0AEAANABAADSAQAA0gEAANQBAADUAQAA1gEAANYBAADYAQAA2AEAANoBAADaAQAA3AEAAN0BAADfAQAA3wEAAOEBAADhAQAA4wEAAOMBAADlAQAA5QEAAOcBAADnAQAA6QEAAOkBAADrAQAA6wEAAO0BAADtAQAA7wEAAPABAADzAQAA8wEAAPUBAAD1AQAA+QEAAPkBAAD7AQAA+wEAAP0BAAD9AQAA/wEAAP8BAAABAgAAAQIAAAMCAAADAgAABQIAAAUCAAAHAgAABwIAAAkCAAAJAgAACwIAAAsCAAANAgAADQIAAA8CAAAPAgAAEQIAABECAAATAgAAEwIAABUCAAAVAgAAFwIAABcCAAAZAgAAGQIAABsCAAAbAgAAHQIAAB0CAAAfAgAAHwIAACECAAAhAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAA5AgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAkwIAAJUCAAC4AgAAwAIAAMECAADgAgAA5AIAAEUDAABFAwAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAegMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAADQEAAA+hAAAPwQAAD/EAAA+BMAAP0TAACAHAAAiBwAAAAdAAC/HQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcSwAAHEsAABzLAAAdCwAAHYsAAB9LAAAgSwAAIEsAACDLAAAgywAAIUsAACFLAAAhywAAIcsAACJLAAAiSwAAIssAACLLAAAjSwAAI0sAACPLAAAjywAAJEsAACRLAAAkywAAJMsAACVLAAAlSwAAJcsAACXLAAAmSwAAJksAACbLAAAmywAAJ0sAACdLAAAnywAAJ8sAAChLAAAoSwAAKMsAACjLAAApSwAAKUsAACnLAAApywAAKksAACpLAAAqywAAKssAACtLAAArSwAAK8sAACvLAAAsSwAALEsAACzLAAAsywAALUsAAC1LAAAtywAALcsAAC5LAAAuSwAALssAAC7LAAAvSwAAL0sAAC/LAAAvywAAMEsAADBLAAAwywAAMMsAADFLAAAxSwAAMcsAADHLAAAySwAAMksAADLLAAAyywAAM0sAADNLAAAzywAAM8sAADRLAAA0SwAANMsAADTLAAA1SwAANUsAADXLAAA1ywAANksAADZLAAA2ywAANssAADdLAAA3SwAAN8sAADfLAAA4SwAAOEsAADjLAAA5CwAAOwsAADsLAAA7iwAAO4sAADzLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AAEGmAABBpgAAQ6YAAEOmAABFpgAARaYAAEemAABHpgAASaYAAEmmAABLpgAAS6YAAE2mAABNpgAAT6YAAE+mAABRpgAAUaYAAFOmAABTpgAAVaYAAFWmAABXpgAAV6YAAFmmAABZpgAAW6YAAFumAABdpgAAXaYAAF+mAABfpgAAYaYAAGGmAABjpgAAY6YAAGWmAABlpgAAZ6YAAGemAABppgAAaaYAAGumAABrpgAAbaYAAG2mAACBpgAAgaYAAIOmAACDpgAAhaYAAIWmAACHpgAAh6YAAImmAACJpgAAi6YAAIumAACNpgAAjaYAAI+mAACPpgAAkaYAAJGmAACTpgAAk6YAAJWmAACVpgAAl6YAAJemAACZpgAAmaYAAJumAACdpgAAI6cAACOnAAAlpwAAJacAACenAAAnpwAAKacAACmnAAArpwAAK6cAAC2nAAAtpwAAL6cAADGnAAAzpwAAM6cAADWnAAA1pwAAN6cAADenAAA5pwAAOacAADunAAA7pwAAPacAAD2nAAA/pwAAP6cAAEGnAABBpwAAQ6cAAEOnAABFpwAARacAAEenAABHpwAASacAAEmnAABLpwAAS6cAAE2nAABNpwAAT6cAAE+nAABRpwAAUacAAFOnAABTpwAAVacAAFWnAABXpwAAV6cAAFmnAABZpwAAW6cAAFunAABdpwAAXacAAF+nAABfpwAAYacAAGGnAABjpwAAY6cAAGWnAABlpwAAZ6cAAGenAABppwAAaacAAGunAABrpwAAbacAAG2nAABvpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA8qcAAPSnAAD2pwAA9qcAAPinAAD6pwAAMKsAAFqrAABcqwAAaasAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAgAcBAIAHAQCDBwEAhQcBAIcHAQCwBwEAsgcBALoHAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAa1AEAM9QBAE7UAQBU1AEAVtQBAGfUAQCC1AEAm9QBALbUAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQDP1AEA6tQBAAPVAQAe1QEAN9UBAFLVAQBr1QEAhtUBAJ/VAQC61QEA09UBAO7VAQAH1gEAItYBADvWAQBW1gEAb9YBAIrWAQCl1gEAwtYBANrWAQDc1gEA4dYBAPzWAQAU1wEAFtcBABvXAQA21wEATtcBAFDXAQBV1wEAcNcBAIjXAQCK1wEAj9cBAKrXAQDC1wEAxNcBAMnXAQDL1wEAy9cBAADfAQAJ3wEAC98BAB7fAQAl3wEAKt8BADDgAQBt4AEAIukBAEPpAQArAAAAKwAAADwAAAA+AAAAXgAAAF4AAAB8AAAAfAAAAH4AAAB+AAAArAAAAKwAAACxAAAAsQAAANcAAADXAAAA9wAAAPcAAADQAwAA0gMAANUDAADVAwAA8AMAAPEDAAD0AwAA9gMAAAYGAAAIBgAAFiAAABYgAAAyIAAANCAAAEAgAABAIAAARCAAAEQgAABSIAAAUiAAAGEgAABkIAAAeiAAAH4gAACKIAAAjiAAANAgAADcIAAA4SAAAOEgAADlIAAA5iAAAOsgAADvIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAKCEAACkhAAAsIQAALSEAAC8hAAAxIQAAMyEAADghAAA8IQAASSEAAEshAABLIQAAkCEAAKchAACpIQAAriEAALAhAACxIQAAtiEAALchAAC8IQAA2yEAAN0hAADdIQAA5CEAAOUhAAD0IQAA/yIAAAgjAAALIwAAICMAACEjAAB8IwAAfCMAAJsjAAC1IwAAtyMAALcjAADQIwAA0CMAANwjAADiIwAAoCUAAKElAACuJQAAtyUAALwlAADBJQAAxiUAAMclAADKJQAAyyUAAM8lAADTJQAA4iUAAOIlAADkJQAA5CUAAOclAADsJQAA+CUAAP8lAAAFJgAABiYAAEAmAABAJgAAQiYAAEImAABgJgAAYyYAAG0mAABvJgAAwCcAAP8nAAAAKQAA/yoAADArAABEKwAARysAAEwrAAAp+wAAKfsAAGH+AABm/gAAaP4AAGj+AAAL/wAAC/8AABz/AAAe/wAAPP8AADz/AAA+/wAAPv8AAFz/AABc/wAAXv8AAF7/AADi/wAA4v8AAOn/AADs/wAAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAy9cBAM7XAQD/1wEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ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pwAA9KcAAPinAAD5pwAAXKsAAF+rAABpqwAAaasAAIAHAQCABwEAgwcBAIUHAQCHBwEAsAcBALIHAQC6BwEAMOABAG3gAQBeAAAAXgAAANADAADSAwAA1QMAANUDAADwAwAA8QMAAPQDAAD1AwAAFiAAABYgAAAyIAAANCAAAEAgAABAIAAAYSAAAGQgAAB9IAAAfiAAAI0gAACOIAAA0CAAANwgAADhIAAA4SAAAOUgAADmIAAA6yAAAO8gAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAoIQAAKSEAACwhAAAtIQAALyEAADEhAAAzIQAAOCEAADwhAAA/IQAARSEAAEkhAACVIQAAmSEAAJwhAACfIQAAoSEAAKIhAACkIQAApSEAAKchAACnIQAAqSEAAK0hAACwIQAAsSEAALYhAAC3IQAAvCEAAM0hAADQIQAA0SEAANMhAADTIQAA1SEAANshAADdIQAA3SEAAOQhAADlIQAACCMAAAsjAAC0IwAAtSMAALcjAAC3IwAA0CMAANAjAADiIwAA4iMAAKAlAAChJQAAriUAALYlAAC8JQAAwCUAAMYlAADHJQAAyiUAAMslAADPJQAA0yUAAOIlAADiJQAA5CUAAOQlAADnJQAA7CUAAAUmAAAGJgAAQCYAAEAmAABCJgAAQiYAAGAmAABjJgAAbSYAAG4mAADFJwAAxicAAOYnAADvJwAAgykAAJgpAADYKQAA2ykAAPwpAAD9KQAAYf4AAGH+AABj/gAAY/4AAGj+AABo/gAAPP8AADz/AAA+/wAAPv8AAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMDWAQDC1gEA2tYBANzWAQD61gEA/NYBABTXAQAW1wEANNcBADbXAQBO1wEAUNcBAG7XAQBw1wEAiNcBAIrXAQCo1wEAqtcBAMLXAQDE1wEAy9cBAM7XAQD/1wEAAO4BAAPuAQAF7gEAH+4BACHuAQAi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AQAACAEAAAoBAAAKAQAADAEAAAwBAAAOAQAADgEAABABAAAQAQAAEgEAABIBAAAUAQAAFAEAABYBAAAWAQAAGAEAABgBAAAaAQAAGgEAABwBAAAcAQAAHgEAAB4BAAAgAQAAIAEAACIBAAAiAQAAJAEAACQBAAAmAQAAJgEAACgBAAAoAQAAKgEAACoBAAAsAQAALAEAAC4BAAAuAQAAMAEAADABAAAyAQAAMgEAADQBAAA0AQAANgEAADYBAAA5AQAAOQEAADsBAAA7AQAAPQEAAD0BAAA/AQAAPwEAAEEBAABBAQAAQwEAAEMBAABFAQAARQEAAEcBAABHAQAASgEAAEoBAABMAQAATAEAAE4BAABOAQAAUAEAAFABAABSAQAAUgEAAFQBAABUAQAAVgEAAFYBAABYAQAAWAEAAFoBAABaAQAAXAEAAFwBAABeAQAAXgEAAGABAABgAQAAYgEAAGIBAABkAQAAZAEAAGYBAABmAQAAaAEAAGgBAABqAQAAagEAAGwBAABsAQAAbgEAAG4BAABwAQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAIEBAACCAQAAhAEAAIQBAACGAQAAhwEAAIkBAACLAQAAjgEAAJEBAACTAQAAlAEAAJYBAACYAQAAnAEAAJ0BAACfAQAAoAEAAKIBAACiAQAApAEAAKQBAACmAQAApwEAAKkBAACpAQAArAEAAKwBAACuAQAArwEAALEBAACzAQAAtQEAALUBAAC3AQAAuAEAALwBAAC8AQAAxAEAAMQBAADHAQAAxwEAAMoBAADKAQAAzQEAAM0BAADPAQAAzwEAANEBAADRAQAA0wEAANMBAADVAQAA1QEAANcBAADXAQAA2QEAANkBAADbAQAA2wEAAN4BAADeAQAA4AEAAOABAADiAQAA4gEAAOQBAADkAQAA5gEAAOYBAADoAQAA6AEAAOoBAADqAQAA7AEAAOwBAADuAQAA7gEAAPEBAADxAQAA9AEAAPQBAAD2AQAA+AEAAPoBAAD6AQAA/AEAAPwBAAD+AQAA/gEAAAACAAAAAgAAAgIAAAICAAAEAgAABAIAAAYCAAAGAgAACAIAAAgCAAAKAgAACgIAAAwCAAAMAgAADgIAAA4CAAAQAgAAEAIAABICAAASAgAAFAIAABQCAAAWAgAAFgIAABgCAAAYAgAAGgIAABoCAAAcAgAAHAIAAB4CAAAeAgAAIAIAACACAAAiAgAAIgIAACQCAAAkAgAAJgIAACYCAAAoAgAAKAIAACoCAAAqAgAALAIAACwCAAAuAgAALgIAADACAAAwAgAAMgIAADICAAA6AgAAOwIAAD0CAAA+AgAAQQIAAEECAABDAgAARgIAAEgCAABIAgAASgIAAEoCAABMAgAATAIAAE4CAABOAgAAcAMAAHADAAByAwAAcgMAAHYDAAB2AwAAfwMAAH8DAACGAwAAhgMAAIgDAACKAwAAjAMAAIwDAACOAwAAjwMAAJEDAAChAwAAowMAAKsDAADPAwAAzwMAANIDAADUAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA9AMAAPQDAAD3AwAA9wMAAPkDAAD6AwAA/QMAAC8EAABgBAAAYAQAAGIEAABiBAAAZAQAAGQEAABmBAAAZgQAAGgEAABoBAAAagQAAGoEAABsBAAAbAQAAG4EAABuBAAAcAQAAHAEAAByBAAAcgQAAHQEAAB0BAAAdgQAAHYEAAB4BAAAeAQAAHoEAAB6BAAAfAQAAHwEAAB+BAAAfgQAAIAEAACABAAAigQAAIoEAACMBAAAjAQAAI4EAACOBAAAkAQAAJAEAACSBAAAkgQAAJQEAACUBAAAlgQAAJYEAACYBAAAmAQAAJoEAACaBAAAnAQAAJwEAACeBAAAngQAAKAEAACgBAAAogQAAKIEAACkBAAApAQAAKYEAACmBAAAqAQAAKgEAACqBAAAqgQAAKwEAACsBAAArgQAAK4EAACwBAAAsAQAALIEAACyBAAAtAQAALQEAAC2BAAAtgQAALgEAAC4BAAAugQAALoEAAC8BAAAvAQAAL4EAAC+BAAAwAQAAMEEAADDBAAAwwQAAMUEAADFBAAAxwQAAMcEAADJBAAAyQQAAMsEAADLBAAAzQQAAM0EAADQBAAA0AQAANIEAADSBAAA1AQAANQEAADWBAAA1gQAANgEAADYBAAA2gQAANoEAADcBAAA3AQAAN4EAADeBAAA4AQAAOAEAADiBAAA4gQAAOQEAADkBAAA5gQAAOYEAADoBAAA6AQAAOoEAADqBAAA7AQAAOwEAADuBAAA7gQAAPAEAADwBAAA8gQAAPIEAAD0BAAA9AQAAPYEAAD2BAAA+AQAAPgEAAD6BAAA+gQAAPwEAAD8BAAA/gQAAP4EAAAABQAAAAUAAAIFAAACBQAABAUAAAQFAAAGBQAABgUAAAgFAAAIBQAACgUAAAoFAAAMBQAADAUAAA4FAAAOBQAAEAUAABAFAAASBQAAEgUAABQFAAAUBQAAFgUAABYFAAAYBQAAGAUAABoFAAAaBQAAHAUAABwFAAAeBQAAHgUAACAFAAAgBQAAIgUAACIFAAAkBQAAJAUAACYFAAAmBQAAKAUAACgFAAAqBQAAKgUAACwFAAAsBQAALgUAAC4FAAAxBQAAVgUAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAAKATAAD1EwAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAAC4HwAAux8AAMgfAADLHwAA2B8AANsfAADoHwAA7B8AAPgfAAD7HwAAAiEAAAIhAAAHIQAAByEAAAshAAANIQAAECEAABIhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAwIQAAMyEAAD4hAAA/IQAARSEAAEUhAABgIQAAbyEAAIMhAACDIQAAtiQAAM8kAAAALAAALywAAGAsAABgLAAAYiwAAGQsAABnLAAAZywAAGksAABpLAAAaywAAGssAABtLAAAcCwAAHIsAAByLAAAdSwAAHUsAAB+LAAAgCwAAIIsAACCLAAAhCwAAIQsAACGLAAAhiwAAIgsAACILAAAiiwAAIosAACMLAAAjCwAAI4sAACOLAAAkCwAAJAsAACSLAAAkiwAAJQsAACULAAAliwAAJYsAACYLAAAmCwAAJosAACaLAAAnCwAAJwsAACeLAAAniwAAKAsAACgLAAAoiwAAKIsAACkLAAApCwAAKYsAACmLAAAqCwAAKgsAACqLAAAqiwAAKwsAACsLAAAriwAAK4sAACwLAAAsCwAALIsAACyLAAAtCwAALQsAAC2LAAAtiwAALgsAAC4LAAAuiwAALosAAC8LAAAvCwAAL4sAAC+LAAAwCwAAMAsAADCLAAAwiwAAMQsAADELAAAxiwAAMYsAADILAAAyCwAAMosAADKLAAAzCwAAMwsAADOLAAAziwAANAsAADQLAAA0iwAANIsAADULAAA1CwAANYsAADWLAAA2CwAANgsAADaLAAA2iwAANwsAADcLAAA3iwAAN4sAADgLAAA4CwAAOIsAADiLAAA6ywAAOssAADtLAAA7SwAAPIsAADyLAAAQKYAAECmAABCpgAAQqYAAESmAABEpgAARqYAAEamAABIpgAASKYAAEqmAABKpgAATKYAAEymAABOpgAATqYAAFCmAABQpgAAUqYAAFKmAABUpgAAVKYAAFamAABWpgAAWKYAAFimAABapgAAWqYAAFymAABcpgAAXqYAAF6mAABgpgAAYKYAAGKmAABipgAAZKYAAGSmAABmpgAAZqYAAGimAABopgAAaqYAAGqmAABspgAAbKYAAICmAACApgAAgqYAAIKmAACEpgAAhKYAAIamAACGpgAAiKYAAIimAACKpgAAiqYAAIymAACMpgAAjqYAAI6mAACQpgAAkKYAAJKmAACSpgAAlKYAAJSmAACWpgAAlqYAAJimAACYpgAAmqYAAJqmAAAipwAAIqcAACSnAAAkpwAAJqcAACanAAAopwAAKKcAACqnAAAqpwAALKcAACynAAAupwAALqcAADKnAAAypwAANKcAADSnAAA2pwAANqcAADinAAA4pwAAOqcAADqnAAA8pwAAPKcAAD6nAAA+pwAAQKcAAECnAABCpwAAQqcAAESnAABEpwAARqcAAEanAABIpwAASKcAAEqnAABKpwAATKcAAEynAABOpwAATqcAAFCnAABQpwAAUqcAAFKnAABUpwAAVKcAAFanAABWpwAAWKcAAFinAABapwAAWqcAAFynAABcpwAAXqcAAF6nAABgpwAAYKcAAGKnAABipwAAZKcAAGSnAABmpwAAZqcAAGinAABopwAAaqcAAGqnAABspwAAbKcAAG6nAABupwAAeacAAHmnAAB7pwAAe6cAAH2nAAB+pwAAgKcAAICnAACCpwAAgqcAAISnAACEpwAAhqcAAIanAACLpwAAi6cAAI2nAACNpwAAkKcAAJCnAACSpwAAkqcAAJanAACWpwAAmKcAAJinAACapwAAmqcAAJynAACcpwAAnqcAAJ6nAACgpwAAoKcAAKKnAACipwAApKcAAKSnAACmpwAApqcAAKinAACopwAAqqcAAK6nAACwpwAAtKcAALanAAC2pwAAuKcAALinAAC6pwAAuqcAALynAAC8pwAAvqcAAL6nAADApwAAwKcAAMKnAADCpwAAxKcAAMenAADJpwAAyacAANCnAADQpwAA1qcAANanAADYpwAA2KcAAPWnAAD1pwAAIf8AADr/AAAABAEAJwQBALAEAQDTBAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCADAEAsgwBAKAYAQC/GAEAQG4BAF9uAQAA1AEAGdQBADTUAQBN1AEAaNQBAIHUAQCc1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALXUAQDQ1AEA6dQBAATVAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAONUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAGzVAQCF1QEAoNUBALnVAQDU1QEA7dUBAAjWAQAh1gEAPNYBAFXWAQBw1gEAidYBAKjWAQDA1gEA4tYBAPrWAQAc1wEANNcBAFbXAQBu1wEAkNcBAKjXAQDK1wEAytcBAADpAQAh6QEAMPEBAEnxAQBQ8QEAafEBAHDxAQCJ8QEACxgAAA0YAAAPGAAADxgAAAD+AAAP/gAAAAEOAO8BDgAwAAAAOQAAAEEAAABaAAAAXwAAAF8AAABhAAAAegAAAKoAAACqAAAAtQAAALUAAAC3AAAAtwAAALoAAAC6AAAAwAAAANYAAADYAAAA9gAAAPgAAADBAgAAxgIAANECAADgAgAA5AIAAOwCAADsAgAA7gIAAO4CAAAAAwAAdAMAAHYDAAB3AwAAewMAAH0DAAB/AwAAfwMAAIYDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAD1AwAA9wMAAIEEAACDBAAAhwQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAANAFAADqBQAA7wUAAPIFAAAQBgAAGgYAACAGAABpBgAAbgYAANMGAADVBgAA3AYAAN8GAADoBgAA6gYAAPwGAAD/BgAA/wYAABAHAABKBwAATQcAALEHAADABwAA9QcAAPoHAAD6BwAA/QcAAP0HAAAACAAALQgAAEAIAABbCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAmAgAAOEIAADjCAAAYwkAAGYJAABvCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC8CQAAxAkAAMcJAADICQAAywkAAM4JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA8QkAAPwJAAD8CQAA/gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdQoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADvCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAABvCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANALAADQCwAA1wsAANcLAADmCwAA7wsAAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPMMAAAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABODQAAVA0AAFcNAABfDQAAYw0AAGYNAABvDQAAeg0AAH8NAACBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADKDQAAyg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPMNAAABDgAAOg4AAEAOAABODgAAUA4AAFkOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AAL0OAADADgAAxA4AAMYOAADGDgAAyA4AAM4OAADQDgAA2Q4AANwOAADfDgAAAA8AAAAPAAAYDwAAGQ8AACAPAAApDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAPg8AAEcPAABJDwAAbA8AAHEPAACEDwAAhg8AAJcPAACZDwAAvA8AAMYPAADGDwAAABAAAEkQAABQEAAAnRAAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAABdEwAAXxMAAGkTAABxEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANoZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAvRoAAL8aAADOGgAAABsAAEwbAABQGwAAWRsAAGsbAABzGwAAgBsAAPMbAAAAHAAANxwAAEAcAABJHAAATRwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADQHAAA0hwAANQcAAD6HAAAAB0AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAANwgAADhIAAA4SAAAOUgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAABTAAAAcwAAAhMAAALzAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJkwAACaMAAAnTAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAArpgAAQKYAAG+mAAB0pgAAfaYAAH+mAADxpgAAF6cAAB+nAAAipwAAiKcAAIunAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZ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BwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAAPQ0AAE4NAABODQAAVA0AAFYNAABfDQAAYQ0AAHoNAAB/DQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAAEOAAAwDgAAMg4AADIOAABADgAARg4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAsA4AALIOAACyDgAAvQ4AAL0OAADA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CAAAmAgAAOEIAADjCAAAYwkAAGYJAABvCQAAcQkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC8CQAAxAkAAMcJAADICQAAywkAAM4JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA8QkAAPwJAAD8CQAA/gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdQoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADvCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAABvCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANALAADQCwAA1wsAANcLAADmCwAA7wsAAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPMMAAAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABODQAAVA0AAFcNAABf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AQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADgBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACNAQAAkgEAAJIBAACVAQAAlQEAAJkBAACbAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAKoBAACrAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAugEAAL0BAAC/AQAAxgEAAMYBAADJAQAAyQEAAMwBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPMBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIQIAACECAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADkCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAACTAgAAlQIAALgCAADAAgAAwQIAAOACAADkAgAAcQMAAHEDAABzAwAAcwMAAHcDAAB3AwAAegMAAH0DAACQAwAAkAMAAKwDAADOAwAA0AMAANEDAADVAwAA1wMAANkDAADZAwAA2wMAANsDAADdAwAA3QMAAN8DAADfAwAA4QMAAOEDAADjAwAA4wMAAOUDAADlAwAA5wMAAOcDAADpAwAA6QMAAOsDAADrAwAA7QMAAO0DAADvAwAA8wMAAPUDAAD1AwAA+AMAAPgDAAD7AwAA/AMAADAEAABfBAAAYQQAAGEEAABjBAAAYwQAAGUEAABlBAAAZwQAAGcEAABpBAAAaQQAAGsEAABrBAAAbQQAAG0EAABvBAAAbwQAAHEEAABxBAAAcwQAAHMEAAB1BAAAdQQAAHcEAAB3BAAAeQQAAHkEAAB7BAAAewQAAH0EAAB9BAAAfwQAAH8EAACBBAAAgQQAAIsEAACLBAAAjQQAAI0EAACPBAAAjwQAAJEEAACRBAAAkwQAAJMEAACVBAAAlQQAAJcEAACXBAAAmQQAAJkEAACbBAAAmwQAAJ0EAACdBAAAnwQAAJ8EAAChBAAAoQQAAKMEAACjBAAApQQAAKUEAACnBAAApwQAAKkEAACpBAAAqwQAAKsEAACtBAAArQQAAK8EAACvBAAAsQQAALEEAACzBAAAswQAALUEAAC1BAAAtwQAALcEAAC5BAAAuQQAALsEAAC7BAAAvQQAAL0EAAC/BAAAvwQAAMIEAADCBAAAxAQAAMQEAADGBAAAxgQAAMgEAADIBAAAygQAAMoEAADMBAAAzAQAAM4EAADPBAAA0QQAANEEAADTBAAA0wQAANUEAADVBAAA1wQAANcEAADZBAAA2QQAANsEAADbBAAA3QQAAN0EAADfBAAA3wQAAOEEAADhBAAA4wQAAOMEAADlBAAA5QQAAOcEAADnBAAA6QQAAOkEAADrBAAA6wQAAO0EAADtBAAA7wQAAO8EAADxBAAA8QQAAPMEAADzBAAA9QQAAPUEAAD3BAAA9wQAAPkEAAD5BAAA+wQAAPsEAAD9BAAA/QQAAP8EAAD/BAAAAQUAAAEFAAADBQAAAwUAAAUFAAAFBQAABwUAAAcFAAAJBQAACQUAAAsFAAALBQAADQUAAA0FAAAPBQAADwUAABEFAAARBQAAEwUAABMFAAAVBQAAFQUAABcFAAAXBQAAGQUAABkFAAAbBQAAGwUAAB0FAAAdBQAAHwUAAB8FAAAhBQAAIQUAACMFAAAjBQAAJQUAACUFAAAnBQAAJwUAACkFAAApBQAAKwUAACsFAAAtBQAALQUAAC8FAAAvBQAAYAUAAIgFAAD8EAAA/BAAAPgTAAD9EwAAgBwAAIgcAAAAHQAAvx0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACH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bgEAn7wBAJ+8AQCI2gEAiNoBAIUAAACFAAAAKCAAACkgAAAJAAAACQAAAAsAAAAMAAAAIAAAACAAAACgAAAAoAAAAIAWAACAFgAAACAAAAogAAAvIAAALyAAAF8gAABfIAAAADAAAAAwAABBAAAAWgAAAMAAAADWAAAA2AAAAN4AAAAAAQAAAAEAAAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxQEAAMcBAADIAQAAygEAAMsBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPIBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAAAAHgAAAB4AAAIeAAACHgAABB4AAAQeAAAGHgAABh4AAAgeAAAIHgAACh4AAAoeAAAMHgAADB4AAA4eAAAOHgAAEB4AABAeAAASHgAAEh4AABQeAAAUHgAAFh4AABYeAAAYHgAAGB4AABoeAAAaHgAAHB4AABweAAAeHgAAHh4AACAeAAAgHgAAIh4AACIeAAAkHgAAJB4AACYeAAAmHgAAKB4AACgeAAAqHgAAKh4AACweAAAsHgAALh4AAC4eAAAwHgAAMB4AADIeAAAyHgAANB4AADQeAAA2HgAANh4AADgeAAA4HgAAOh4AADoeAAA8HgAAPB4AAD4eAAA+HgAAQB4AAEAeAABCHgAAQh4AAEQeAABEHgAARh4AAEYeAABIHgAASB4AAEoeAABKHgAATB4AAEweAABOHgAATh4AAFAeAABQHgAAUh4AAFIeAABUHgAAVB4AAFYeAABWHgAAWB4AAFgeAABaHgAAWh4AAFweAABcHgAAXh4AAF4eAABgHgAAYB4AAGIeAABiHgAAZB4AAGQeAABmHgAAZh4AAGgeAABoHgAAah4AAGoeAABsHgAAbB4AAG4eAABuHgAAcB4AAHAeAAByHgAAch4AAHQeAAB0HgAAdh4AAHYeAAB4HgAAeB4AAHoeAAB6HgAAfB4AAHweAAB+HgAAfh4AAIAeAACAHgAAgh4AAIIeAACEHgAAhB4AAIYeAACGHgAAiB4AAIgeAACKHgAAih4AAIweAACMHgAAjh4AAI4eAACQHgAAkB4AAJIeAACSHgAAlB4AAJQeAACeHgAAnh4AAKAeAACgHgAAoh4AAKIeAACkHgAApB4AAKYeAACmHgAAqB4AAKgeAACqHgAAqh4AAKweAACsHgAArh4AAK4eAACwHgAAsB4AALIeAACyHgAAtB4AALQeAAC2HgAAth4AALgeAAC4HgAAuh4AALoeAAC8HgAAvB4AAL4eAAC+HgAAwB4AAMAeAADCHgAAwh4AAMQeAADEHgAAxh4AAMYeAADIHgAAyB4AAMoeAADKHgAAzB4AAMweAADOHgAAzh4AANAeAADQHgAA0h4AANIeAADUHgAA1B4AANYeAADWHgAA2B4AANgeAADaHgAA2h4AANweAADcHgAA3h4AAN4eAADgHgAA4B4AAOIeAADiHgAA5B4AAOQeAADmHgAA5h4AAOgeAADoHgAA6h4AAOoeAADsHgAA7B4AAO4eAADuHgAA8B4AAPAeAADyHgAA8h4AAPQeAAD0HgAA9h4AAPYeAAD4HgAA+B4AAPoeAAD6HgAA/B4AAPweAAD+HgAA/h4AAAgfAAAPHwAAGB8AAB0fAAAoHwAALx8AADgfAAA/HwAASB8AAE0fAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAXx8AAGgfAABvHwAAiB8AAI8fAACYHwAAnx8AAKgfAACvHwAAuB8AALwfAADIHwAAzB8AANgfAADbHwAA6B8AAOwfAAD4HwAA/B8AAAIhAAACIQAAByEAAAchAAALIQAADSEAABAhAAASIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAAMCEAADMhAAA+IQAAPyEAAEUhAABFIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEAIdYBADzWAQBV1gEAcNYBAInWAQCo1gEAwNYBAOLWAQD61gEAHNcBADTXAQBW1wEAbtcBAJDXAQCo1wEAytcBAMrXAQAA6QEAIekBADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAAarIQAFAAAAtCAkAAQAAAAuhyEAAgAAANQgJAABAAAAEqshAAUAAADcICQALQAAAGSHIQAGAAAARCIkADkBAACEfiEABgAAAAwsJAAV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BAAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACYCAAAnwgAAMoIAADhCAAA4wgAAAIJAAA6CQAAOgkAADwJAAA8CQAAQQkAAEgJAABNCQAATQkAAFEJAABXCQAAYgkAAGMJAACBCQAAgQkAALwJAAC8CQAAvgkAAL4JAADBCQAAxAkAAM0JAADNCQAA1wkAANcJAADiCQAA4wkAAP4JAAD+CQAAAQoAAAIKAAA8CgAAPAoAAEEKAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAcAoAAHEKAAB1CgAAdQoAAIEKAACCCgAAvAoAALwKAADBCgAAxQoAAMcKAADICgAAzQoAAM0KAADiCgAA4woAAPoKAAD/CgAAAQsAAAELAAA8CwAAPAsAAD4LAAA/CwAAQQsAAEQLAABNCwAATQsAAFULAABXCwAAYgsAAGMLAACCCwAAggsAAL4LAAC+CwAAwAsAAMALAADNCwAAzQsAANcLAADXCwAAAAwAAAAMAAAEDAAABAwAADwMAAA8DAAAPgwAAEAMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACBDAAAvAwAALwMAAC/DAAAvwwAAMIMAADCDAAAxgwAAMYMAADMDAAAzQwAANUMAADWDAAA4gwAAOMMAAAADQAAAQ0AADsNAAA8DQAAPg0AAD4NAABBDQAARA0AAE0NAABNDQAAVw0AAFcNAABiDQAAYw0AAIENAACBDQAAyg0AAMoNAADPDQAAzw0AANINAADUDQAA1g0AANYNAADfDQAA3w0AADEOAAAxDgAANA4AADoOAABHDgAATg4AALEOAACxDgAAtA4AALwOAADIDgAAzg4AABgPAAAZDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAcQ8AAH4PAACADwAAhA8AAIYPAACHDwAAjQ8AAJcPAACZDwAAvA8AAMYPAADGDwAALRAAADAQAAAy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0QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQCP4AEAj+ABADDhAQA24QEAruIBAK7iAQDs4gEA7+IBAOzkAQDv5AEA0OgBANboAQBE6QEASukBAPvzAQD/8wEAIAAOAH8ADgAAAQ4A7wEOAAARAABfEQAAYKkAAHypAAAArAAAAKwAABysAAAcrAAAOKwAADisAABUrAAAVKwAAHCsAABwrAAAjKwAAIysAACorAAAqKwAAMSsAADErAAA4KwAAOCsAAD8rAAA/KwAABitAAAYrQAANK0AADStAABQrQAAUK0AAGytAABsrQAAiK0AAIitAACkrQAApK0AAMCtAADArQAA3K0AANytAAD4rQAA+K0AABSuAAAUrgAAMK4AADCuAABMrgAATK4AAGiuAABorgAAhK4AAISuAACgrgAAoK4AALyuAAC8rgAA2K4AANiuAAD0rgAA9K4AABCvAAAQrwAALK8AACyvAABIrwAASK8AAGSvAABkrwAAgK8AAICvAACcrwAAnK8AALivAAC4rwAA1K8AANSvAADwrwAA8K8AAAywAAAMsAAAKLAAACiwAABEsAAARLAAAGCwAABgsAAAfLAAAHywAACYsAAAmLAAALSwAAC0sAAA0LAAANCwAADssAAA7LAAAAixAAAIsQAAJLEAACSxAABAsQAAQLEAAFyxAABcsQAAeLEAAHixAACUsQAAlLEAALCxAACwsQAAzLEAAMyxAADosQAA6LEAAASyAAAEsgAAILIAACCyAAA8sgAAPLIAAFiyAABYsgAAdLIAAHSyAACQsgAAkLIAAKyyAACssgAAyLIAAMiyAADksgAA5LIAAACzAAAAswAAHLMAAByzAAA4swAAOLMAAFSzAABUswAAcLMAAHCzAACMswAAjLMAAKizAACoswAAxLMAAMSzAADgswAA4LMAAPyzAAD8swAAGLQAABi0AAA0tAAANLQAAFC0AABQtAAAbLQAAGy0AACItAAAiLQAAKS0AACktAAAwLQAAMC0AADctAAA3LQAAPi0AAD4tAAAFLUAABS1AAAwtQAAMLUAAEy1AABMtQAAaLUAAGi1AACEtQAAhLUAAKC1AACgtQAAvLUAALy1AADYtQAA2LUAAPS1AAD0tQAAELYAABC2AAAstgAALLYAAEi2AABItgAAZLYAAGS2AACAtgAAgLYAAJy2AACctgAAuLYAALi2AADUtgAA1LYAAPC2AADwtgAADLcAAAy3AAAotwAAKLcAAES3AABEtwAAYLcAAGC3AAB8twAAfLcAAJi3AACYtwAAtLcAALS3AADQtwAA0LcAAOy3AADstwAACLgAAAi4AAAkuAAAJLgAAEC4AABAuAAAXLgAAFy4AAB4uAAAeLgAAJS4AACUuAAAsLgAALC4AADMuAAAzLgAAOi4AADouAAABLkAAAS5AAAguQAAILkAADy5AAA8uQAAWLkAAFi5AAB0uQAAdLkAAJC5AACQuQAArLkAAKy5AADIuQAAyLkAAOS5AADkuQAAALoAAAC6AAAcugAAHLoAADi6AAA4ugAAVLoAAFS6AABwugAAcLoAAIy6AACMugAAqLoAAKi6AADEugAAxLoAAOC6AADgugAA/LoAAPy6AAAYuwAAGLsAADS7AAA0uwAAULsAAFC7AABsuwAAbLsAAIi7AACIuwAApLsAAKS7AADAuwAAwLsAANy7AADcuwAA+LsAAPi7AAAUvAAAFLwAADC8AAAwvAAATLwAAEy8AABovAAAaLwAAIS8AACEvAAAoLwAAKC8AAC8vAAAvLwAANi8AADYvAAA9LwAAPS8AAAQvQAAEL0AACy9AAAsvQAASL0AAEi9AABkvQAAZL0AAIC9AACAvQAAnL0AAJy9AAC4vQAAuL0AANS9AADUvQAA8L0AAPC9AAAMvgAADL4AACi+AAAovgAARL4AAES+AABgvgAAYL4AAHy+AAB8vgAAmL4AAJi+AAC0vgAAtL4AANC+AADQvgAA7L4AAOy+AAAIvwAACL8AACS/AAAkvwAAQL8AAEC/AABcvwAAXL8AAHi/AAB4vwAAlL8AAJS/AACwvwAAsL8AAMy/AADMvwAA6L8AAOi/AAAEwAAABMAAACDAAAAgwAAAPMAAADzAAABYwAAAWMAAAHTAAAB0wAAAkMAAAJDAAACswAAArMAAAMjAAADIwAAA5MAAAOTAAAAAwQAAAMEAABzBAAAcwQAAOMEAADjBAABUwQAAVMEAAHDBAABwwQAAjMEAAIzBAACowQAAqMEAAMTBAADEwQAA4MEAAODBAAD8wQAA/MEAABjCAAAYwgAANMIAADTCAABQwgAAUMIAAGzCAABswgAAiMIAAIjCAACkwgAApMIAAMDCAADAwgAA3MIAANzCAAD4wgAA+MIAABTDAAAUwwAAMMMAADDDAABMwwAATMMAAGjDAABowwAAhMMAAITDAACgwwAAoMMAALzDAAC8wwAA2MMAANjDAAD0wwAA9MMAABDEAAAQxAAALMQAACzEAABIxAAASMQAAGTEAABkxAAAgMQAAIDEAACcxAAAnMQAALjEAAC4xAAA1MQAANTEAADwxAAA8MQAAAzFAAAMxQAAKMUAACjFAABExQAARMUAAGDFAABgxQAAfMUAAHzFAACYxQAAmMUAALTFAAC0xQAA0MUAANDFAADsxQAA7MUAAAjGAAAIxgAAJMYAACTGAABAxgAAQMYAAFzGAABcxgAAeMYAAHjGAACUxgAAlMYAALDGAACwxgAAzMYAAMzGAADoxgAA6MYAAATHAAAExwAAIMcAACDHAAA8xwAAPMcAAFjHAABYxwAAdMcAAHTHAACQxwAAkMcAAKzHAACsxwAAyMcAAMjHAADkxwAA5McAAADIAAAAyAAAHMgAABzIAAA4yAAAOMgAAFTIAABUyAAAcMgAAHDIAACMyAAAjMgAAKjIAACoyAAAxMgAAMTIAADgyAAA4MgAAPzIAAD8yAAAGMkAABjJAAA0yQAANMkAAFDJAABQyQAAbMkAAGzJAACIyQAAiMkAAKTJAACkyQAAwMkAAMDJAADcyQAA3MkAAPjJAAD4yQAAFMoAABTKAAAwygAAMMoAAEzKAABMygAAaMoAAGjKAACEygAAhMoAAKDKAACgygAAvMoAALzKAADYygAA2MoAAPTKAAD0ygAAEMsAABDLAAAsywAALMsAAEjLAABIywAAZMsAAGTLAACAywAAgMsAAJzLAACcywAAuMsAALjLAADUywAA1MsAAPDLAADwywAADMwAAAzMAAAozAAAKMwAAETMAABEzAAAYMwAAGDMAAB8zAAAfMwAAJjMAACYzAAAtMwAALTMAADQzAAA0MwAAOzMAADszAAACM0AAAjNAAAkzQAAJM0AAEDNAABAzQAAXM0AAFzNAAB4zQAAeM0AAJTNAACUzQAAsM0AALDNAADMzQAAzM0AAOjNAADozQAABM4AAATOAAAgzgAAIM4AADzOAAA8zgAAWM4AAFjOAAB0zgAAdM4AAJDOAACQzgAArM4AAKzOAADIzgAAyM4AAOTOAADkzgAAAM8AAADPAAAczwAAHM8AADjPAAA4zwAAVM8AAFTPAABwzwAAcM8AAIzPAACMzwAAqM8AAKjPAADEzwAAxM8AAODPAADgzwAA/M8AAPzPAAAY0AAAGNAAADTQAAA00AAAUNAAAFDQAABs0AAAbNAAAIjQAACI0AAApNAAAKTQAADA0AAAwNAAANzQAADc0AAA+NAAAPjQAAAU0QAAFNEAADDRAAAw0QAATNEAAEzRAABo0QAAaNEAAITRAACE0QAAoNEAAKDRAAC80QAAvNEAANjRAADY0QAA9NEAAPTRAAAQ0gAAENIAACzSAAAs0gAASNIAAEjSAABk0gAAZNIAAIDSAACA0gAAnNIAAJzSAAC40gAAuNIAANTSAADU0gAA8NIAAPDSAAAM0wAADNMAACjTAAAo0wAARNMAAETTAABg0wAAYNMAAHzTAAB80wAAmNMAAJjTAAC00wAAtNMAANDTAADQ0wAA7NMAAOzTAAAI1AAACNQAACTUAAAk1AAAQNQAAEDUAABc1AAAXNQAAHjUAAB41AAAlNQAAJTUAACw1AAAsNQAAMzUAADM1AAA6NQAAOjUAAAE1QAABNUAACDVAAAg1QAAPNUAADzVAABY1QAAWNUAAHTVAAB01QAAkNUAAJDVAACs1QAArNUAAMjVAADI1QAA5NUAAOTVAAAA1gAAANYAABzWAAAc1gAAONYAADjWAABU1gAAVNYAAHDWAABw1gAAjNYAAIzWAACo1gAAqNYAAMTWAADE1gAA4NYAAODWAAD81gAA/NYAABjXAAAY1wAANNcAADTXAABQ1wAAUNcAAGzXAABs1wAAiNcAAIjXAAABrAAAG6wAAB2sAAA3rAAAOawAAFOsAABVrAAAb6wAAHGsAACLrAAAjawAAKesAACprAAAw6wAAMWsAADfrAAA4awAAPusAAD9rAAAF60AABmtAAAzrQAANa0AAE+tAABRrQAAa60AAG2tAACHrQAAia0AAKOtAAClrQAAv60AAMGtAADbrQAA3a0AAPetAAD5rQAAE64AABWuAAAvrgAAMa4AAEuuAABNrgAAZ64AAGmuAACDrgAAha4AAJ+uAAChrgAAu64AAL2uAADXrgAA2a4AAPOuAAD1rgAAD68AABGvAAArrwAALa8AAEevAABJrwAAY68AAGWvAAB/rwAAga8AAJuvAACdrwAAt68AALmvAADTrwAA1a8AAO+vAADxrwAAC7AAAA2wAAAnsAAAKbAAAEOwAABFsAAAX7AAAGGwAAB7sAAAfbAAAJewAACZsAAAs7AAALWwAADPsAAA0bAAAOuwAADtsAAAB7EAAAmxAAAjsQAAJbEAAD+xAABBsQAAW7EAAF2xAAB3sQAAebEAAJOxAACVsQAAr7EAALGxAADLsQAAzbEAAOexAADpsQAAA7IAAAWyAAAfsgAAIbIAADuyAAA9sgAAV7IAAFmyAABzsgAAdbIAAI+yAACRsgAAq7IAAK2yAADHsgAAybIAAOOyAADlsgAA/7IAAAGzAAAbswAAHbMAADezAAA5swAAU7MAAFWzAABvswAAcbMAAIuzAACNswAAp7MAAKmzAADDswAAxbMAAN+zAADhswAA+7MAAP2zAAAXtAAAGbQAADO0AAA1tAAAT7QAAFG0AABrtAAAbbQAAIe0AACJtAAAo7QAAKW0AAC/tAAAwbQAANu0AADdtAAA97QAAPm0AAATtQAAFbUAAC+1AAAxtQAAS7UAAE21AABntQAAabUAAIO1AACFtQAAn7UAAKG1AAC7tQAAvbUAANe1AADZtQAA87UAAPW1AAAPtgAAEbYAACu2AAAttgAAR7YAAEm2AABjtgAAZbYAAH+2AACBtgAAm7YAAJ22AAC3tgAAubYAANO2AADVtgAA77YAAPG2AAALtwAADbcAACe3AAAptwAAQ7cAAEW3AABftwAAYbcAAHu3AAB9twAAl7cAAJm3AACztwAAtbcAAM+3AADRtwAA67cAAO23AAAHuAAACbgAACO4AAAluAAAP7gAAEG4AABbuAAAXbgAAHe4AAB5uAAAk7gAAJW4AACvuAAAsbgAAMu4AADNuAAA57gAAOm4AAADuQAABbkAAB+5AAAhuQAAO7kAAD25AABXuQAAWbkAAHO5AAB1uQAAj7kAAJG5AACruQAArbkAAMe5AADJuQAA47kAAOW5AAD/uQAAAboAABu6AAAdugAAN7oAADm6AABTugAAVboAAG+6AABxugAAi7oAAI26AACnugAAqboAAMO6AADFugAA37oAAOG6AAD7ugAA/boAABe7AAAZuwAAM7sAADW7AABPuwAAUbsAAGu7AABtuwAAh7sAAIm7AACjuwAApbsAAL+7AADBuwAA27sAAN27AAD3uwAA+bsAABO8AAAVvAAAL7wAADG8AABLvAAATbwAAGe8AABpvAAAg7wAAIW8AACfvAAAobwAALu8AAC9vAAA17wAANm8AADzvAAA9bwAAA+9AAARvQAAK70AAC29AABHvQAASb0AAGO9AABlvQAAf70AAIG9AACbvQAAnb0AALe9AAC5vQAA070AANW9AADvvQAA8b0AAAu+AAANvgAAJ74AACm+AABDvgAARb4AAF++AABhvgAAe74AAH2+AACXvgAAmb4AALO+AAC1vgAAz74AANG+AADrvgAA7b4AAAe/AAAJvwAAI78AACW/AAA/vwAAQb8AAFu/AABdvwAAd78AAHm/AACTvwAAlb8AAK+/AACxvwAAy78AAM2/AADnvwAA6b8AAAPAAAAFwAAAH8AAACHAAAA7wAAAPcAAAFfAAABZwAAAc8AAAHXAAACPwAAAkcAAAKvAAACtwAAAx8AAAMnAAADjwAAA5cAAAP/AAAABwQAAG8EAAB3BAAA3wQAAOcEAAFPBAABVwQAAb8EAAHHBAACLwQAAjcEAAKfBAACpwQAAw8EAAMXBAADfwQAA4cEAAPvBAAD9wQAAF8IAABnCAAAzwgAANcIAAE/CAABRwgAAa8IAAG3CAACHwgAAicIAAKPCAAClwgAAv8IAAMHCAADbwgAA3cIAAPfCAAD5wgAAE8MAABXDAAAvwwAAMcMAAEvDAABNwwAAZ8MAAGnDAACDwwAAhcMAAJ/DAAChwwAAu8MAAL3DAADXwwAA2cMAAPPDAAD1wwAAD8QAABHEAAArxAAALcQAAEfEAABJxAAAY8QAAGXEAAB/xAAAgcQAAJvEAACdxAAAt8QAALnEAADTxAAA1cQAAO/EAADxxAAAC8UAAA3FAAAnxQAAKcUAAEPFAABFxQAAX8UAAGHFAAB7xQAAfcUAAJfFAACZxQAAs8UAALXFAADPxQAA0cUAAOvFAADtxQAAB8YAAAnGAAAjxgAAJcYAAD/GAABBxgAAW8YAAF3GAAB3xgAAecYAAJPGAACVxgAAr8YAALHGAADLxgAAzcYAAOfGAADpxgAAA8cAAAXHAAAfxwAAIccAADvHAAA9xwAAV8cAAFnHAABzxwAAdccAAI/HAACRxwAAq8cAAK3HAADHxwAAyccAAOPHAADlxwAA/8cAAAHIAAAbyAAAHcgAADfIAAA5yAAAU8gAAFXIAABvyAAAccgAAIvIAACNyAAAp8gAAKnIAADDyAAAxcgAAN/IAADhyAAA+8gAAP3IAAAXyQAAGckAADPJAAA1yQAAT8kAAFHJAABryQAAbckAAIfJAACJyQAAo8kAAKXJAAC/yQAAwckAANvJAADdyQAA98kAAPnJAAATygAAFcoAAC/KAAAxygAAS8oAAE3KAABnygAAacoAAIPKAACFygAAn8oAAKHKAAC7ygAAvcoAANfKAADZygAA88oAAPXKAAAPywAAEcsAACvLAAAtywAAR8sAAEnLAABjywAAZcsAAH/LAACBywAAm8sAAJ3LAAC3ywAAucsAANPLAADVywAA78sAAPHLAAALzAAADcwAACfMAAApzAAAQ8wAAEXMAABfzAAAYcwAAHvMAAB9zAAAl8wAAJnMAACzzAAAtcwAAM/MAADRzAAA68wAAO3MAAAHzQAACc0AACPNAAAlzQAAP80AAEHNAABbzQAAXc0AAHfNAAB5zQAAk80AAJXNAACvzQAAsc0AAMvNAADNzQAA580AAOnNAAADzgAABc4AAB/OAAAhzgAAO84AAD3OAABXzgAAWc4AAHPOAAB1zgAAj84AAJHOAACrzgAArc4AAMfOAADJzgAA484AAOXOAAD/zgAAAc8AABvPAAAdzwAAN88AADnPAABTzwAAVc8AAG/PAABxzwAAi88AAI3PAACnzwAAqc8AAMPPAADFzwAA388AAOHPAAD7zwAA/c8AABfQAAAZ0AAAM9AAADXQAABP0AAAUdAAAGvQAABt0AAAh9AAAInQAACj0AAApdAAAL/QAADB0AAA29AAAN3QAAD30AAA+dAAABPRAAAV0QAAL9EAADHRAABL0QAATdEAAGfRAABp0QAAg9EAAIXRAACf0QAAodEAALvRAAC90QAA19EAANnRAADz0QAA9dEAAA/SAAAR0gAAK9IAAC3SAABH0gAASdIAAGPSAABl0gAAf9IAAIHSAACb0gAAndIAALfSAAC50gAA09IAANXSAADv0gAA8dIAAAvTAAAN0wAAJ9MAACnTAABD0wAARdMAAF/TAABh0wAAe9MAAH3TAACX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7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAAAACAN+mAgAApwIAObcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwBQEwMAryMDAO4WAADwFgAAYCEAAIIhAACFIQAAiCEAAAcwAAAHMAAAITAAACkwAAA4MAAAOjAAAOamAADvpgAAQAEBAHQBAQBBAwEAQQMBAEoDAQBKAwEA0QMBANUDAQAAJAEAbiQBACggAAAoIAAAYQAAAHoAAAC1AAAAtQAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAAOAEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAArwIAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHsDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPwDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGAFAACIBQAA0BAAAPoQAAD9EAAA/xAAAPgTAAD9EwAAgBwAAIgcAAAAHQAAKx0AAGsdAAB3HQAAeR0AAJodAAABHgAAAR4AAAMeAAADHgAABR4AAAUeAAAHHgAABx4AAAkeAAAJHgAACx4AAAseAAANHgAADR4AAA8eAAAPHgAAER4AABEeAAATHgAAEx4AABUeAAAVHgAAFx4AABceAAAZHgAAGR4AABseAAAbHgAAHR4AAB0eAAAfHgAAHx4AACEeAAAhHgAAIx4AACMeAAAlHgAAJR4AACceAAAnHgAAKR4AACkeAAArHgAAKx4AAC0eAAAtHgAALx4AAC8eAAAxHgAAMR4AADMeAAAzHgAANR4AADUeAAA3HgAANx4AADkeAAA5HgAAOx4AADseAAA9HgAAPR4AAD8eAAA/HgAAQR4AAEEeAABDHgAAQx4AAEUeAABFHgAARx4AAEceAABJHgAASR4AAEseAABLHgAATR4AAE0eAABPHgAATx4AAFEeAABRHgAAUx4AAFMeAABVHgAAVR4AAFceAABXHgAAWR4AAFkeAABbHgAAWx4AAF0eAABdHgAAXx4AAF8eAABhHgAAYR4AAGMeAABjHgAAZR4AAGUeAABnHgAAZx4AAGkeAABpHgAAax4AAGseAABtHgAAbR4AAG8eAABvHgAAcR4AAHEeAABzHgAAcx4AAHUeAAB1HgAAdx4AAHceAAB5HgAAeR4AAHseAAB7HgAAfR4AAH0eAAB/HgAAfx4AAIEeAACBHgAAgx4AAIMeAACFHgAAhR4AAIceAACHHgAAiR4AAIkeAACLHgAAix4AAI0eAACNHgAAjx4AAI8eAACRHgAAkR4AAJMeAACTHgAAlR4AAJ0eAACfHgAAnx4AAKEeAAChHgAAox4AAKMeAAClHgAApR4AAKceAACnHgAAqR4AAKkeAACrHgAAqx4AAK0eAACtHgAArx4AAK8eAACxHgAAsR4AALMeAACzHgAAtR4AALUeAAC3HgAAtx4AALkeAAC5HgAAux4AALseAAC9HgAAvR4AAL8eAAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAAKIQAACiEAAA4hAAAPIQAAEyEAABMhAAAvIQAALyEAADQhAAA0IQAAOSEAADkhAAA8IQAAPSEAAEYhAABJIQAATiEAAE4hAACEIQAAhCEAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAeywAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAABxpwAAeKcAAHqnAAB6pwAAfKcAAHynAAB/pwAAf6cAAIGnAACBpwAAg6cAAIOnAACFpwAAhacAAIenAACHpwAAjKcAAIynAACOpwAAjqcAAJGnAACRpwAAk6cAAJWnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAAK+nAACvpwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANOnAADTpwAA1acAANWnAADXpwAA16cAANmnAADZpwAA9qcAAPanAAD6pwAA+qcAADCrAABaqwAAYKsAAGirAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AABB/wAAWv8AACgEAQBPBAEA2AQBAPsEAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAMAMAQDyDAEAwBgBAN8YAQBgbgEAf24BABrUAQAz1AEATtQBAFTUAQBW1AEAZ9QBAILUAQCb1AEAttQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAM/UAQDq1AEAA9UBAB7VAQA31QEAUtUBAGvVAQCG1QEAn9UBALrVAQDT1QEA7tUBAAfWAQAi1gEAO9YBAFbWAQBv1gEAitYBAKXWAQDC1gEA2tYBANzWAQDh1gEA/NYBABTXAQAW1wEAG9cBADbXAQBO1wEAUNcBAFXXAQBw1wEAiNcBAIrXAQCP1wEAqtcBAMLXAQDE1wEAydcBAMvXAQDL1wEAAN8BAAnfAQAL3wEAHt8BACXfAQAq3wEAIukBAEPpAQAAAwAAbwMAAIMEAACJBAAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACYCAAAnwgAAMoIAADhCAAA4wgAAAMJAAA6CQAAPAkAAD4JAABPCQAAUQkAAFcJAABiCQAAYwkAAIEJAACDCQAAvAkAALwJAAC+CQAAxAkAAMcJAADICQAAywkAAM0JAADXCQAA1wkAAOIJAADjCQAA/gkAAP4JAAABCgAAAwoAADwKAAA8CgAAPgoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABwCgAAcQoAAHUKAAB1CgAAgQoAAIMKAAC8CgAAvAoAAL4KAADFCgAAxwoAAMkKAADLCgAAzQoAAOIKAADjCgAA+goAAP8KAAABCwAAAwsAADwLAAA8CwAAPgsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABiCwAAYwsAAIILAACCCwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA1wsAANcLAAAADAAABAwAADwMAAA8DAAAPgwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABiDAAAYwwAAIEMAACDDAAAvAwAALwMAAC+DAAAxAwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAOIMAADjDAAA8wwAAPMMAAAA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CgAAXwoAAGUKAAB3CgAAgAoAAIQKAACECgAAjgoAAI4KAACSCgAAkgoAAKkKAACpCgAAsQoAALEKAAC0CgAAtAoAALoKAAC7CgAAxgoAAMYKAADKCgAAygoAAM4KAADPCgAA0QoAAN8KAADkCgAA5QoAAPIKAAD4CgAAAAsAAAALAAAECwAABAsAAA0LAAAOCwAAEQsAABILAAApCwAAKQsAADELAAAxCwAANAsAADQLAAA6CwAAOwsAAEULAABGCwAASQsAAEoLAABOCwAAVAsAAFgLAABbCwAAXgsAAF4LAABkCwAAZQsAAHgLAACBCwAAhAsAAIQLAACLCwAAjQsAAJELAACRCwAAlgsAAJgLAACbCwAAmwsAAJ0LAACdCwAAoAsAAKILAAClCwAApwsAAKsLAACtCwAAugsAAL0LAADDCwAAxQsAAMkLAADJCwAAzgsAAM8LAADRCwAA1gsAANgLAADlCwAA+wsAAP8LAAANDAAADQwAABEMAAARDAAAKQwAACkMAAA6DAAAOwwAAEUMAABFDAAASQwAAEkMAABODAAAVAwAAFcMAABXDAAAWwwAAFwMAABeDAAAXwwAAGQMAABlDAAAcAwAAHYMAACNDAAAjQwAAJEMAACRDAAAqQwAAKkMAAC0DAAAtAwAALoMAAC7DAAAxQwAAMUMAADJDAAAyQwAAM4MAADUDAAA1wwAANwMAADfDAAA3wwAAOQMAADlDAAA8AwAAPAMAAD0DAAA/wwAAA0NAAANDQAAEQ0AABENAABFDQAARQ0AAEkNAABJDQAAUA0AAFMNAABkDQAAZQ0AAIANAACADQAAhA0AAIQNAACXDQAAmQ0AALINAACyDQAAvA0AALwNAAC+DQAAvw0AAMcNAADJDQAAyw0AAM4NAADVDQAA1Q0AANcNAADXDQAA4A0AAOUNAADwDQAA8Q0AAPUNAAAADgAAOw4AAD4OAABcDgAAgA4AAIMOAACDDgAAhQ4AAIUOAACLDgAAiw4AAKQOAACkDgAApg4AAKYOAAC+DgAAvw4AAMUOAADFDgAAxw4AAMcOAADPDgAAzw4AANoOAADbDgAA4A4AAP8OAABIDwAASA8AAG0PAABwDwAAmA8AAJgPAAC9DwAAvQ8AAM0PAADNDwAA2w8AAP8PAADGEAAAxhAAAMgQAADMEAAAzhAAAM8QAABJEgAASRIAAE4SAABPEgAAVxIAAFcSAABZEgAAWRIAAF4SAABfEgAAiRIAAIkSAACOEgAAjxIAALESAACxEgAAthIAALcSAAC/EgAAvxIAAMESAADBEgAAxhIAAMcSAADXEgAA1xIAABETAAAREwAAFhMAABcTAABbEwAAXBMAAH0TAAB/EwAAmhMAAJ8TAAD2EwAA9xMAAP4TAAD/EwAAnRYAAJ8WAAD5FgAA/xYAABYXAAAeFwAANxcAAD8XAABUFwAAXxcAAG0XAABtFwAAcRcAAHEXAAB0FwAAfxcAAN4XAADfFwAA6hcAAO8XAAD6FwAA/xcAAA4YAAAOGAAAGhgAAB8YAAB5GAAAfxgAAKsYAACvGAAA9hgAAP8YAAAfGQAAHxkAACwZAAAvGQAAPBkAAD8ZAABBGQAAQxkAAG4ZAABvGQAAdRkAAH8ZAACsGQAArxkAAMoZAADPGQAA2xkAAN0ZAAAcGgAAHRoAAF8aAABfGgAAfRoAAH4aAACKGgAAjxoAAJoaAACfGgAArhoAAK8aAADPGgAA/xoAAE0bAABPGwAAfxsAAH8bAAD0GwAA+xsAADgcAAA6HAAAShwAAEwcAACJHAAAjxwAALscAAC8HAAAyBwAAM8cAAD7HAAA/xwAABYfAAAXHwAAHh8AAB8fAABGHwAARx8AAE4fAABPHwAAWB8AAFgfAABaHwAAWh8AAFwfAABcHwAAXh8AAF4fAAB+HwAAfx8AALUfAAC1HwAAxR8AAMUfAADUHwAA1R8AANwfAADcHwAA8B8AAPEfAAD1HwAA9R8AAP8fAAD/HwAACyAAAA8gAAAqIAAALiAAAGAgAABvIAAAciAAAHMgAACPIAAAjyAAAJ0gAACfIAAAwSAAAM8gAADxIAAA/yAAAIwhAACPIQAAJyQAAD8kAABLJAAAXyQAAHQrAAB1KwAAlisAAJYrAAD0LAAA+CwAACYtAAAmLQAAKC0AACwtAAAuLQAALy0AAGgtAABuLQAAcS0AAH4tAACXLQAAny0AAKctAACnLQAAry0AAK8tAAC3LQAAty0AAL8tAAC/LQAAxy0AAMctAADPLQAAzy0AANctAADXLQAA3y0AAN8tAABeLgAAfy4AAJouAACaLgAA9C4AAP8uAADWLwAA7y8AAPwvAAD/LwAAQDAAAEAwAACXMAAAmDAAAAAxAAAE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BwAAygcAAOoHAAAACAAAFQgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAoAgAAMgIAAAECQAAOQkAAD0JAAA9CQAAUAkAAFAJAABYCQAAYQkAAHIJAACACQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAL0JAADOCQAAzgkAANwJAADdCQAA3wkAAOEJAADwCQAA8QkAAPwJAAD8CQAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAABZCgAAXAoAAF4KAABeCgAAcgoAAHQKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAvQoAANAKAADQCgAA4AoAAOEKAAD5CgAA+QoAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAXAsAAF0LAABfCwAAYQsAAHELAABxCwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAADQCwAA0AsAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABYDAAAWgwAAF0MAABdDAAAYAwAAGEMAACADAAAgAwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAvQwAAN0MAADeDAAA4AwAAOEMAADxDAAA8gwAAAQNAAAMDQAADg0AABANAAASDQAAOg0AAD0NAAA9DQAATg0AAE4NAABUDQAAVg0AAF8NAABhDQAAeg0AAH8NAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAAQ4AADAOAAAyDgAAMw4AAEAOAABFDgAAgQ4AAIIOAACEDgAAhA4AAIYOAACKDgAAjA4AAKMOAAClDgAApQ4AAKcOAACwDgAAsg4AALMOAAC9DgAAvQ4AAMAOAADEDgAA3A4AAN8OAAAADwAAAA8AAEAPAABHDwAASQ8AAGwPAACIDwAAjA8AAAAQAAAqEAAAPxAAAD8QAABQEAAAVRAAAFoQAABdEAAAYRAAAGEQAABlEAAAZhAAAG4QAABwEAAAdRAAAIEQAACOEAAAjhAAAAARAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAPEWAAD4FgAAABcAABEXAAAfFwAAMRcAAEAXAABRFwAAYBcAAGwXAABuFwAAcBcAAIAXAACzFwAA3BcAANwXAAAgGAAAQhgAAEQYAAB4GAAAgBgAAIQYAACHGAAAqBgAAKoYAACqGAAAsBgAAPUYAAAAGQAAHhkAAFAZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAAABoAABYaAAAgGgAAVBoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAHccAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAADUhAAA4IQAAMC0AAGctAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAAAGMAAABjAAADwwAAA8MAAAQTAAAJYwAACfMAAAnzAAAKEwAAD6MAAA/zAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/TQAAAE4AABSgAAAWoAAAjKQAANCkAAD3pAAAAKUAAAumAAAQpgAAH6YAACqmAAArpgAAbqYAAG6mAACgpgAA5aYAAI+nAACPpwAA96cAAPenAAD7pwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAKqQAAJakAADCpAABGqQAAYKkAAHypAACEqQAAsqkAAOCpAADkqQAA56kAAO+pAAD6qQAA/qkAAACqAAAoqgAAQKoAAEKqAABEqgAAS6oAAGCqAABvqgAAcaoAAHaqAAB6qgAAeqoAAH6qAACvqgAAsaoAALGqAAC1qgAAtqoAALmqAAC9qgAAwKoAAMCqAADCqgAAwqoAANuqAADcqgAA4KoAAOqqAADyqgAA8qoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAADAqwAA4qsAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAAD5AABt+gAAcPoAANn6AAAd+wAAHfsAAB/7AAAo+wAAKvsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AACx+wAA0/sAAD39AABQ/QAAj/0AAJL9AADH/QAA8P0AAPv9AABw/gAAdP4AAHb+AAD8/gAAZv8AAG//AABx/wAAnf8AAKD/AAC+/wAAwv8AAMf/AADK/wAAz/8AANL/AADX/wAA2v8AANz/AAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAIACAQCcAgEAoAIBANACAQAAAwEAHwMBAC0DAQBAAwEAQgMBAEkDAQBQAwEAdQMBAIADAQCdAwEAoAMBAMMDAQDIAwEAzwMBAFAEAQCdBAEAAAUBACcFAQAwBQEAYwUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAAoBABAKAQATCgEAFQoBABcKAQAZCgEANQoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDkCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAAANAQAjDQEAgA4BAKkOAQCwDgEAsQ4BAAAPAQAcDwEAJw8BACcPAQAwDwEARQ8BAHAPAQCBDwEAsA8BAMQPAQDgDwEA9g8BAAMQAQA3EAEAcRABAHIQAQB1EAEAdRABAIMQAQCvEAEA0BABAOgQAQADEQEAJhEBAEQRAQBEEQEARxEBAEcRAQBQEQEAchEBAHYRAQB2EQEAgxEBALIRAQDBEQEAxBEBANoRAQDaEQEA3BEBANwRAQAAEgEAERIBABMSAQArEgEAPxIBAEASAQCAEgEAhhIBAIgSAQCIEgEAihIBAI0SAQCPEgEAnRIBAJ8SAQCoEgEAsBIBAN4SAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA9EwEAPRMBAFATAQBQEwEAXRMBAGETAQAAFAEANBQBAEcUAQBKFAEAXxQBAGEUAQCAFAEArxQBAMQUAQDFFAEAxxQBAMcUAQCAFQEArhUBANgVAQDbFQEAABYBAC8WAQBEFgEARBYBAIAWAQCqFgEAuBYBALgWAQAAFwEAGhcBAEAXAQBGFwEAABgBACsYAQD/GAEABhkBAAkZAQAJGQEADBkBABMZAQAVGQEAFhkBABgZAQAvGQEAPxkBAD8ZAQBBGQEAQRkBAKAZAQCnGQEAqhkBANAZAQDhGQEA4RkBAOMZAQDjGQEAABoBAAAaAQALGgEAMhoBADoaAQA6GgEAUBoBAFAaAQBcGgEAiRoBAJ0aAQCdGgEAsBoBAPgaAQAAHAEACBwBAAocAQAuHAEAQBwBAEAcAQByHAEAjxwBAAAdAQAGHQEACB0BAAkdAQALHQEAMB0BAEYdAQBGHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCJHQEAmB0BAJgdAQDgHgEA8h4BAAIfAQACHwEABB8BABAfAQASHwEAMx8BALAfAQCwHwEAACABAJkjAQCAJAEAQyUBAJAvAQDwLwEAADABAC80AQBBNAEARjQBAABEAQBGRgEAAGgBADhqAQBAagEAXmoBAHBqAQC+agEA0GoBAO1qAQAAawEAL2sBAGNrAQB3awEAfWsBAI9rAQAAbwEASm8BAFBvAQBQbwEAAHABAPeHAQAAiAEA1YwBAACNAQAIjQEAALABACKxAQAysQEAMrEBAFCxAQBSsQEAVbEBAFWxAQBksQEAZ7EBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQAK3wEACt8BAADhAQAs4QEATuEBAE7hAQCQ4gEAreIBAMDiAQDr4gEA0OQBAOrkAQDg5wEA5ucBAOjnAQDr5wEA7ecBAO7nAQDw5wEA/ucBAADoAQDE6AEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAAAACAN+mAgAApwIAObcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwBQEwMAryMDALIAAACzAAAAuQAAALkAAAC8AAAAvgAAAPQJAAD5CQAAcgsAAHcLAADwCwAA8gsAAHgMAAB+DAAAWA0AAF4NAABwDQAAeA0AACoPAAAzDwAAaRMAAHwTAADwFwAA+RcAANoZAADaGQAAcCAAAHAgAAB0IAAAeSAAAIAgAACJIAAAUCEAAF8hAACJIQAAiSEAAGAkAACbJAAA6iQAAP8kAAB2JwAAkycAAP0sAAD9LAAAkjEAAJUxAAAgMgAAKTIAAEgyAABPMgAAUTIAAF8yAACAMgAAiTIAALEyAAC/MgAAMKgAADWoAAAHAQEAMwEBAHUBAQB4AQEAigEBAIsBAQDhAgEA+wIBACADAQAjAwEAWAgBAF8IAQB5CAEAfwgBAKcIAQCvCAEA+wgBAP8IAQAWCQEAGwkBALwJAQC9CQEAwAkBAM8JAQDSCQEA/wkBAEAKAQBICgEAfQoBAH4KAQCdCgEAnwoBAOsKAQDvCgEAWAsBAF8LAQB4CwEAfwsBAKkLAQCvCwEA+gwBAP8MAQBgDgEAfg4BAB0PAQAmDwEAUQ8BAFQPAQDFDwEAyw8BAFIQAQBlEAEA4REBAPQRAQA6FwEAOxcBAOoYAQDyGAEAWhwBAGwcAQDAHwEA1B8BAFtrAQBhawEAgG4BAJZuAQDA0gEA09IBAODSAQDz0gEAYNMBAHjTAQDH6AEAz+gBAHHsAQCr7AEArewBAK/sAQCx7AEAtOwBAAHtAQAt7QEAL+0BAD3tAQAA8QEADPEBACEAAAAjAAAAJQAAACcAAAAqAAAAKgAAACwAAAAsAAAALgAAAC8AAAA6AAAAOwAAAD8AAABAAAAAXAAAAFwAAAChAAAAoQAAAKcAAACnAAAAtgAAALcAAAC/AAAAvwAAAH4DAAB+AwAAhwMAAIcDAABaBQAAXwUAAIkFAACJBQAAwAUAAMAFAADDBQAAwwUAAMYFAADGBQAA8wUAAPQFAAAJBgAACgYAAAwGAAANBgAAGwYAABsGAAAdBgAAHwYAAGoGAABtBgAA1AYAANQGAAAABwAADQcAAPcHAAD5BwAAMAgAAD4IAABeCAAAXggAAGQJAABlCQAAcAkAAHAJAAD9CQAA/QkAAHYKAAB2CgAA8AoAAPAKAAB3DAAAdwwAAIQMAACEDAAA9A0AAPQNAABPDgAATw4AAFoOAABbDgAABA8AABIPAAAUDwAAFA8AAIUPAACFDwAA0A8AANQPAADZDwAA2g8AAEoQAABPEAAA+xAAAPsQAABgEwAAaBMAAG4WAABuFgAA6xYAAO0WAAA1FwAANhcAANQXAADWFwAA2BcAANoXAAAAGAAABRgAAAcYAAAKGAAARBkAAEUZAAAeGgAAHxoAAKAaAACmGgAAqBoAAK0aAABaGwAAYBsAAH0bAAB+GwAA/BsAAP8bAAA7HAAAPxwAAH4cAAB/HAAAwBwAAMccAADTHAAA0xwAABYgAAAXIAAAICAAACcgAAAwIAAAOCAAADsgAAA+IAAAQSAAAEMgAABHIAAAUSAAAFMgAABTIAAAVSAAAF4gAAD5LAAA/CwAAP4sAAD/LAAAcC0AAHAtAAAALgAAAS4AAAYuAAAILgAACy4AAAsuAAAOLgAAFi4AABguAAAZLgAAGy4AABsuAAAeLgAAHy4AACouAAAuLgAAMC4AADkuAAA8LgAAPy4AAEEuAABBLgAAQy4AAE8uAABSLgAAVC4AAAEwAAADMAAAPTAAAD0wAAD7MAAA+zAAAP6kAAD/pAAADaYAAA+mAABzpgAAc6YAAH6mAAB+pgAA8qYAAPemAAB0qAAAd6gAAM6oAADPqAAA+KgAAPqoAAD8qAAA/KgAAC6pAAAvqQAAX6kAAF+pAADBqQAAzakAAN6pAADfqQAAXKoAAF+qAADeqgAA36oAAPCqAADxqgAA66sAAOurAAAQ/gAAFv4AABn+AAAZ/gAAMP4AADD+AABF/gAARv4AAEn+AABM/gAAUP4AAFL+AABU/gAAV/4AAF/+AABh/gAAaP4AAGj+AABq/gAAa/4AAAH/AAAD/wAABf8AAAf/AAAK/wAACv8AAAz/AAAM/wAADv8AAA//AAAa/wAAG/8AAB//AAAg/wAAPP8AADz/AABh/wAAYf8AAGT/AABl/wAAAAEBAAIBAQCfAwEAnwMBANADAQDQAwEAbwUBAG8FAQBXCAEAVwgBAB8JAQAfCQEAPwkBAD8JAQBQCgEAWAoBAH8KAQB/CgEA8AoBAPYKAQA5CwEAPwsBAJkLAQCcCwEAVQ8BAFkPAQCGDwEAiQ8BAEcQAQBNEAEAuxABALwQAQC+EAEAwRABAEARAQBDEQEAdBEBAHURAQDFEQEAyBEBAM0RAQDNEQEA2xEBANsRAQDdEQEA3xEBADgSAQA9EgEAqRIBAKkSAQBLFAEATxQBAFoUAQBbFAEAXRQBAF0UAQDGFAEAxhQBAMEVAQDXFQEAQRYBAEMWAQBgFgEAbBYBALkWAQC5FgEAPBcBAD4XAQA7GAEAOxgBAEQZAQBGGQEA4hkBAOIZAQA/GgEARhoBAJoaAQCcGgEAnhoBAKIaAQAAGwEACRsBAEEcAQBFHAEAcBwBAHEcAQD3HgEA+B4BAEMfAQBPHwEA/x8BAP8fAQBwJAEAdCQBAPEvAQDyLwEAbmoBAG9qAQD1agEA9WoBADdrAQA7awEARGsBAERrAQCXbgEAmm4BAOJvAQDibwEAn7wBAJ+8AQCH2gEAi9oBAF7pAQBf6QEApgAAAKYAAACpAAAAqQAAAK4AAACuAAAAsAAAALAAAACCBAAAggQAAI0FAACOBQAADgYAAA8GAADeBgAA3gYAAOkGAADpBgAA/QYAAP4GAAD2BwAA9gcAAPoJAAD6CQAAcAsAAHALAADzCwAA+AsAAPoLAAD6CwAAfwwAAH8MAABPDQAATw0AAHkNAAB5DQAAAQ8AAAMPAAATDwAAEw8AABUPAAAXDwAAGg8AAB8PAAA0DwAANA8AADYPAAA2DwAAOA8AADgPAAC+DwAAxQ8AAMcPAADMDwAAzg8AAM8PAADVDwAA2A8AAJ4QAACfEAAAkBMAAJkTAABtFgAAbRYAAEAZAABAGQAA3hkAAP8ZAABhGwAAahsAAHQbAAB8GwAAACEAAAEhAAADIQAABiEAAAghAAAJIQAAFCEAABQhAAAWIQAAFyEAAB4hAAAjIQAAJSEAACUhAAAnIQAAJyEAACkhAAApIQAALiEAAC4hAAA6IQAAOyEAAEohAABKIQAATCEAAE0hAABPIQAATyEAAIohAACLIQAAlSEAAJkhAACcIQAAnyEAAKEhAACiIQAApCEAAKUhAACnIQAArSEAAK8hAADNIQAA0CEAANEhAADTIQAA0yEAANUhAADzIQAAACMAAAcjAAAMIwAAHyMAACIjAAAoIwAAKyMAAHsjAAB9IwAAmiMAALQjAADbIwAA4iMAACYkAABAJAAASiQAAJwkAADpJAAAACUAALYlAAC4JQAAwCUAAMIlAAD3JQAAACYAAG4mAABwJgAAZycAAJQnAAC/JwAAACgAAP8oAAAAKwAALysAAEUrAABGKwAATSsAAHMrAAB2KwAAlSsAAJcrAAD/KwAA5SwAAOosAABQLgAAUS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAABDAAAAQwAAASMAAAEzAAACAwAAAgMAAANjAAADcwAAA+MAAAPzAAAJAxAACRMQAAljEAAJ8xAADAMQAA4zEAAAAyAAAeMgAAKjIAAEcyAABQMgAAUDIAAGAyAAB/MgAAijIAALAyAADAMgAA/zMAAMBNAAD/TQAAkKQAAMakAAAoqAAAK6gAADaoAAA3qAAAOagAADmoAAB3qgAAeaoAAED9AABP/QAAz/0AAM/9AAD9/QAA//0AAOT/AADk/wAA6P8AAOj/AADt/wAA7v8AAPz/AAD9/wAANwEBAD8BAQB5AQEAiQEBAIwBAQCOAQEAkAEBAJwBAQCgAQEAoAEBANABAQD8AQEAdwgBAHgIAQDICgEAyAoBAD8XAQA/FwEA1R8BANwfAQDhHwEA8R8BADxrAQA/awEARWsBAEVrAQCcvAEAnLwBAFDPAQDDzwEAANABAPXQAQAA0QEAJtEBACnRAQBk0QEAatEBAGzRAQCD0QEAhNEBAIzRAQCp0QEArtEBAOrRAQAA0gEAQdIBAEXSAQBF0gEAANMBAFbTAQAA2AEA/9kBADfaAQA62gEAbdoBAHTaAQB22gEAg9oBAIXaAQCG2gEAT+EBAE/hAQCs7AEArOwBAC7tAQAu7QEAAPABACvwAQAw8AEAk/ABAKDwAQCu8AEAsfABAL/wAQDB8AEAz/ABANHwAQD18AEADfEBAK3xAQDm8QEAAvIBABDyAQA78gEAQPIBAEjyAQBQ8gEAUfIBAGDyAQBl8gEAAPMBAPrzAQAA9AEA1/YBANz2AQDs9gEA8PYBAPz2AQAA9wEAdvcBAHv3AQDZ9wEA4PcBAOv3AQDw9wEA8PcBAAD4AQAL+AEAEPgBAEf4AQBQ+AEAWfgBAGD4AQCH+AEAkPgBAK34AQCw+AEAsfgBAAD5AQBT+gEAYPoBAG36AQBw+gEAfPoBAID6AQCI+gEAkPoBAL36AQC/+gEAxfoBAM76AQDb+gEA4PoBAOj6AQDw+gEA+PoBAAD7AQCS+wEAlPsBAMr7AQApIAAAKSAAAADgAAD/+AAAAAAPAP3/DwAAABAA/f8QACEAAAAjAAAAJQAAACoAAAAsAAAALwAAADoAAAA7AAAAPwAAAEAAAABbAAAAXQAAAF8AAABfAAAAewAAAHsAAAB9AAAAfQAAAKEAAAChAAAApwAAAKcAAACrAAAAqwAAALYAAAC3AAAAuwAAALsAAAC/AAAAvwAAAH4DAAB+AwAAhwMAAIcDAABaBQAAXwUAAIkFAACKBQAAvgUAAL4FAADABQAAwAUAAMMFAADDBQAAxgUAAMYFAADzBQAA9AUAAAkGAAAKBgAADAYAAA0GAAAbBgAAGwYAAB0GAAAfBgAAagYAAG0GAADUBgAA1AYAAAAHAAANBwAA9wcAAPkHAAAwCAAAPggAAF4IAABeCAAAZAkAAGUJAABwCQAAcAkAAP0JAAD9CQAAdgoAAHYKAADwCgAA8AoAAHcMAAB3DAAAhAwAAIQMAAD0DQAA9A0AAE8OAABPDgAAWg4AAFsOAAAEDwAAEg8AABQPAAAUDwAAOg8AAD0PAACFDwAAhQ8AANAPAADUDwAA2Q8AANoPAABKEAAATxAAAPsQAAD7EAAAYBMAAGgTAAAAFAAAABQAAG4WAABuFgAAmxYAAJwWAADrFgAA7RYAADUXAAA2FwAA1BcAANYXAADYFwAA2hcAAAAYAAAKGAAARBkAAEUZAAAeGgAAHxoAAKAaAACmGgAAqBoAAK0aAABaGwAAYBsAAH0bAAB+GwAA/BsAAP8bAAA7HAAAPxwAAH4cAAB/HAAAwBwAAMccAADTHAAA0xwAABAgAAAnIAAAMCAAAEMgAABFIAAAUSAAAFMgAABeIAAAfSAAAH4gAACNIAAAjiAAAAgjAAALIwAAKSMAACojAABoJwAAdScAAMUnAADGJwAA5icAAO8nAACDKQAAmCkAANgpAADbKQAA/CkAAP0pAAD5LAAA/CwAAP4sAAD/LAAAcC0AAHAtAAAALgAALi4AADAuAABPLgAAUi4AAF0uAAABMAAAAzAAAAgwAAARMAAAFDAAAB8wAAAwMAAAMDAAAD0wAAA9MAAAoDAAAKAwAAD7MAAA+zAAAP6kAAD/pAAADaYAAA+mAABzpgAAc6YAAH6mAAB+pgAA8qYAAPemAAB0qAAAd6gAAM6oAADPqAAA+KgAAPqoAAD8qAAA/KgAAC6pAAAvqQAAX6kAAF+pAADBqQAAzakAAN6pAADfqQAAXKoAAF+qAADeqgAA36oAAPCqAADxqgAA66sAAOurAAA+/QAAP/0AABD+AAAZ/gAAMP4AAFL+AABU/gAAYf4AAGP+AABj/gAAaP4AAGj+AABq/gAAa/4AAAH/AAAD/wAABf8AAAr/AAAM/wAAD/8AABr/AAAb/wAAH/8AACD/AAA7/wAAPf8AAD//AAA//wAAW/8AAFv/AABd/wAAXf8AAF//AABl/wAAAAEBAAIBAQCfAwEAnwMBANADAQDQAwEAbwUBAG8FAQBXCAEAVwgBAB8JAQAfCQEAPwkBAD8JAQBQCgEAWAoBAH8KAQB/CgEA8AoBAPYKAQA5CwEAPwsBAJkLAQCcCwEArQ4BAK0OAQBVDwEAWQ8BAIYPAQCJDwEARxABAE0QAQC7EAEAvBABAL4QAQDBEAEAQBEBAEMRAQB0EQEAdREBAMURAQDIEQEAzREBAM0RAQDbEQEA2xEBAN0RAQDfEQEAOBIBAD0SAQCpEgEAqRIBAEsUAQBPFAEAWhQBAFsUAQBdFAEAXRQBAMYUAQDGFAEAwRUBANcVAQBBFgEAQxYBAGAWAQBsFgEAuRYBALkWAQA8FwEAPhcBADsYAQA7GAEARBkBAEYZAQDiGQEA4hkBAD8aAQBGGgEAmhoBAJwaAQCeGgEAohoBAAAbAQAJGwEAQRwBAEUcAQBwHAEAcRwBAPceAQD4HgEAQx8BAE8fAQD/HwEA/x8BAHAkAQB0JAEA8S8BAPIvAQBuagEAb2oBAPVqAQD1agEAN2sBADtrAQBEawEARGsBAJduAQCabgEA4m8BAOJvAQCfvAEAn7wBAIfaAQCL2gEAXukBAF/pAQAgAAAAIAAAAKAAAACgAAAAgBYAAIAWAAAAIAAACiAAACggAAApIAAALyAAAC8gAABfIAAAXyAAAAAwAAAAMAAAIAAAACAAAACgAAAAoAAAAIAWAACAFgAAACAAAAogAAAvIAAALyAAAF8gAABfIAAAADAAAAAwAAADCQAAAwkAADsJAAA7CQAAPgkAAEAJAABJCQAATAkAAE4JAABPCQAAggkAAIMJAAC+CQAAwAkAAMcJAADICQAAywkAAMwJAADXCQAA1wkAAAMKAAADCgAAPgoAAEAKAACDCgAAgwoAAL4KAADACgAAyQoAAMkKAADLCgAAzAoAAAILAAADCwAAPgsAAD4LAABACwAAQAsAAEcLAABICwAASwsAAEwLAABXCwAAVwsAAL4LAAC/CwAAwQsAAMILAADGCwAAyAsAAMoLAADMCwAA1wsAANcLAAABDAAAAwwAAEEMAABEDAAAggwAAIMMAAC+DAAAvgwAAMAMAADEDAAAxwwAAMgMAADKDAAAywwAANUMAADWDAAA8wwAAPMMAAACDQAAAw0AAD4NAABADQAARg0AAEgNAABKDQAATA0AAFcNAABXDQAAgg0AAIMNAADPDQAA0Q0AANgNAADfDQAA8g0AAPMNAAA+DwAAPw8AAH8PAAB/DwAAKxAAACwQAAAxEAAAMRAAADgQAAA4EAAAOxAAADwQAABWEAAAVxAAAGIQAABkEAAAZxAAAG0QAACDEAAAhBAAAIcQAACMEAAAjxAAAI8QAACaEAAAnBAAABUXAAAVFwAANBcAADQXAAC2FwAAthcAAL4XAADFFwAAxxcAAMgXAAAjGQAAJhkAACkZAAArGQAAMBkAADEZAAAzGQAAOBkAABkaAAAaGgAAVRoAAFUaAABXGgAAVxoAAGEaAABhGgAAYxoAAGQaAABtGgAAchoAAAQbAAAEGwAANRsAADUbAAA7GwAAOxsAAD0bAABBGwAAQxsAAEQbAACCGwAAghsAAKEbAAChGwAAphsAAKcbAACqGwAAqhsAAOcbAADnGwAA6hsAAOwbAADuGwAA7hsAAPIbAADzGwAAJBwAACscAAA0HAAANRwAAOEcAADhHAAA9xwAAPccAAAuMAAALzAAACOoAAAkqAAAJ6gAACeoAACAqAAAgagAALSoAADDqAAAUqkAAFOpAACDqQAAg6kAALSpAAC1qQAAuqkAALupAAC+qQAAwKkAAC+qAAAwqgAAM6oAADSqAABNqgAATaoAAHuqAAB7qgAAfaoAAH2qAADrqgAA66oAAO6qAADvqgAA9aoAAPWqAADjqwAA5KsAAOarAADnqwAA6asAAOqrAADsqwAA7KsAAAAQAQAAEAEAAhABAAIQAQCCEAEAghABALAQAQCyEAEAtxABALgQAQAsEQEALBEBAEURAQBGEQEAghEBAIIRAQCzEQEAtREBAL8RAQDAEQEAzhEBAM4RAQAsEgEALhIBADISAQAzEgEANRIBADUSAQDgEgEA4hIBAAITAQADEwEAPhMBAD8TAQBBEwEARBMBAEcTAQBIEwEASxMBAE0TAQBXEwEAVxMBAGITAQBjEwEANRQBADcUAQBAFAEAQRQBAEUUAQBFFAEAsBQBALIUAQC5FAEAuRQBALsUAQC+FAEAwRQBAMEUAQCvFQEAsRUBALgVAQC7FQEAvhUBAL4VAQAwFgEAMhYBADsWAQA8FgEAPhYBAD4WAQCsFgEArBYBAK4WAQCvFgEAthYBALYWAQAgFwEAIRcBACYXAQAmFwEALBgBAC4YAQA4GAEAOBgBADAZAQA1GQEANxkBADgZAQA9GQEAPRkBAEAZAQBAGQEAQhkBAEIZAQDRGQEA0xkBANwZAQDfGQEA5BkBAOQZAQA5GgEAORoBAFcaAQBYGgEAlxoBAJcaAQAvHAEALxwBAD4cAQA+HAEAqRwBAKkcAQCxHAEAsRwBALQcAQC0HAEAih0BAI4dAQCTHQEAlB0BAJYdAQCWHQEA9R4BAPYeAQADHwEAAx8BADQfAQA1HwEAPh8BAD8fAQBBHwEAQR8BAFFvAQCHbwEA8G8BAPFvAQBl0QEAZtEBAG3RAQBy0QEAJAAAACQAAAArAAAAKwAAADwAAAA+AAAAXgAAAF4AAABgAAAAYAAAAHwAAAB8AAAAfgAAAH4AAACiAAAApgAAAKgAAACpAAAArAAAAKwAAACuAAAAsQAAALQAAAC0AAAAuAAAALgAAADXAAAA1wAAAPcAAAD3AAAAwgIAAMUCAADSAgAA3wIAAOUCAADrAgAA7QIAAO0CAADvAgAA/wIAAHUDAAB1AwAAhAMAAIUDAAD2AwAA9gMAAIIEAACCBAAAjQUAAI8FAAAGBgAACAYAAAsGAAALBgAADgYAAA8GAADeBgAA3gYAAOkGAADpBgAA/QYAAP4GAAD2BwAA9gcAAP4HAAD/BwAAiAgAAIgIAADyCQAA8wkAAPoJAAD7CQAA8QoAAPEKAABwCwAAcAsAAPMLAAD6CwAAfwwAAH8MAABPDQAATw0AAHkNAAB5DQAAPw4AAD8OAAABDwAAAw8AABMPAAATDwAAFQ8AABcPAAAaDwAAHw8AADQPAAA0DwAANg8AADYPAAA4DwAAOA8AAL4PAADFDwAAxw8AAMwPAADODwAAzw8AANUPAADYDwAAnhAAAJ8QAACQEwAAmRMAAG0WAABtFgAA2xcAANsXAABAGQAAQBkAAN4ZAAD/GQAAYRsAAGobAAB0GwAAfBsAAL0fAAC9HwAAvx8AAMEfAADNHwAAzx8AAN0fAADfHwAA7R8AAO8fAAD9HwAA/h8AAEQgAABEIAAAUiAAAFIgAAB6IAAAfCAAAIogAACMIAAAoCAAAMAgAAAAIQAAASEAAAMhAAAGIQAACCEAAAkhAAAUIQAAFCEAABYhAAAYIQAAHiEAACMhAAAlIQAAJSEAACchAAAnIQAAKSEAACkhAAAuIQAALiEAADohAAA7IQAAQCEAAEQhAABKIQAATSEAAE8hAABPIQAAiiEAAIshAACQIQAAByMAAAwjAAAoIwAAKyMAACYkAABAJAAASiQAAJwkAADpJAAAACUAAGcnAACUJwAAxCcAAMcnAADlJwAA8CcAAIIpAACZKQAA1ykAANwpAAD7KQAA/ikAAHMrAAB2KwAAlSsAAJcrAAD/KwAA5SwAAOosAABQLgAAUS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAABDAAAAQwAAASMAAAEzAAACAwAAAgMAAANjAAADcwAAA+MAAAPzAAAJswAACcMAAAkDEAAJExAACWMQAAnzEAAMAxAADjMQAAADIAAB4yAAAqMgAARzIAAFAyAABQMgAAYDIAAH8yAACKMgAAsDIAAMAyAAD/MwAAwE0AAP9NAACQpAAAxqQAAACnAAAWpwAAIKcAACGnAACJpwAAiqcAACioAAArqAAANqgAADmoAAB3qgAAeaoAAFurAABbqwAAaqsAAGurAAAp+wAAKfsAALL7AADC+wAAQP0AAE/9AADP/QAAz/0AAPz9AAD//QAAYv4AAGL+AABk/gAAZv4AAGn+AABp/gAABP8AAAT/AAAL/wAAC/8AABz/AAAe/wAAPv8AAD7/AABA/wAAQP8AAFz/AABc/wAAXv8AAF7/AADg/wAA5v8AAOj/AADu/wAA/P8AAP3/AAA3AQEAPwEBAHkBAQCJAQEAjAEBAI4BAQCQAQEAnAEBAKABAQCgAQEA0AEBAPwBAQB3CAEAeAgBAMgKAQDICgEAPxcBAD8XAQDVHwEA8R8BADxrAQA/awEARWsBAEVrAQCcvAEAnLwBAFDPAQDDzwEAANABAPXQAQAA0QEAJtEBACnRAQBk0QEAatEBAGzRAQCD0QEAhNEBAIzRAQCp0QEArtEBAOrRAQAA0gEAQdIBAEXSAQBF0gEAANMBAFbTAQDB1gEAwdYBANvWAQDb1gEA+9YBAPvWAQAV1wEAFdcBADXXAQA11wEAT9cBAE/XAQBv1wEAb9cBAInXAQCJ1wEAqdcBAKnXAQDD1wEAw9cBAADYAQD/2QEAN9oBADraAQBt2gEAdNoBAHbaAQCD2gEAhdoBAIbaAQBP4QEAT+EBAP/iAQD/4gEArOwBAKzsAQCw7AEAsOwBAC7tAQAu7QEA8O4BAPHuAQAA8AEAK/ABADDwAQCT8AEAoPABAK7wAQCx8AEAv/ABAMHwAQDP8AEA0fABAPXwAQAN8QEArfEBAObxAQAC8gEAEPIBADvyAQBA8gEASPIBAFDyAQBR8gEAYPIBAGXyAQAA8wEA1/YBANz2AQDs9gEA8PYBAPz2AQAA9wEAdvcBAHv3AQDZ9wEA4PcBAOv3AQDw9wEA8PcBAAD4AQAL+AEAEPgBAEf4AQBQ+AEAWfgBAGD4AQCH+AEAkPgBAK34AQCw+AEAsfgBAAD5AQBT+gEAYPoBAG36AQBw+gEAfPoBAID6AQCI+gEAkPoBAL36AQC/+gEAxfoBAM76AQDb+gEA4PoBAOj6AQDw+gEA+PoBAAD7AQCS+wEAlPsBAMr7AQDFAQAAxQEAAMgBAADIAQAAywEAAMsBAADyAQAA8gEAAIgfAACPHwAAmB8AAJ8fAACoHwAArx8AALwfAAC8HwAAzB8AAMwfAAD8HwAA/B8AAHgDAAB5AwAAgAMAAIMDAACLAwAAiwMAAI0DAACNAwAAogMAAKIDAAAwBQAAMAUAAFcFAABYBQAAiwUAAIwFAACQBQAAkAUAAMgFAADPBQAA6wUAAO4FAAD1BQAA/wUAAA4HAAAOBwAASwcAAEwHAACyBwAAvwcAAPsHAAD8BwAALggAAC8IAAA/CAAAPwgAAFwIAABdCAAAXwgAAF8IAABrCAAAbwgAAI8IAACPCAAAkggAAJcIAACECQAAhAkAAI0JAACOCQAAkQkAAJIJAACpCQAAqQkAALEJAACxCQAAswkAALUJAAC6CQAAuwkAAMUJAADGCQAAyQkAAMoJAADPCQAA1gkAANgJAADbCQAA3gkAAN4JAADkCQAA5QkAAP8JAAAACgAABAoAAAQKAAALCgAADgoAABEKAAASCgAAKQoAACkKAAAxCgAAMQoAADQKAAA0CgAANwoAADcKAAA6CgAAOwoAAD0KAAA9CgAAQwoAAEYKAABJCgAASgoAAE4KAABQCgAAUgoAAFgKAABdCgAAXQoAAF8KAABlCgAAdwoAAIAKAACECgAAhAoAAI4KAACOCgAAkgoAAJIKAACpCgAAqQoAALEKAACxCgAAtAoAALQKAAC6CgAAuwoAAMYKAADGCgAAygoAAMoKAADOCgAAzwoAANEKAADfCgAA5AoAAOUKAADyCgAA+AoAAAALAAAACwAABAsAAAQLAAANCwAADgsAABELAAASCwAAKQsAACkLAAAxCwAAMQsAADQLAAA0CwAAOgsAADsLAABFCwAARgsAAEkLAABKCwAATgsAAFQLAABYCwAAWwsAAF4LAABeCwAAZAsAAGULAAB4CwAAgQsAAIQLAACECwAAiwsAAI0LAACRCwAAkQsAAJYLAACYCwAAmwsAAJsLAACdCwAAnQsAAKALAACiCwAApQsAAKcLAACrCwAArQsAALoLAAC9CwAAwwsAAMULAADJCwAAyQsAAM4LAADPCwAA0QsAANYLAADYCwAA5QsAAPsLAAD/CwAADQwAAA0MAAARDAAAEQwAACkMAAApDAAAOgwAADsMAABFDAAARQwAAEkMAABJDAAATgwAAFQMAABXDAAAVwwAAFsMAABcDAAAXgwAAF8MAABkDAAAZQwAAHAMAAB2DAAAjQwAAI0MAACRDAAAkQwAAKkMAACpDAAAtAwAALQMAAC6DAAAuwwAAMUMAADFDAAAyQwAAMkMAADODAAA1AwAANcMAADcDAAA3wwAAN8MAADkDAAA5QwAAPAMAADwDAAA9AwAAP8MAAANDQAADQ0AABENAAARDQAARQ0AAEUNAABJDQAASQ0AAFANAABTDQAAZA0AAGUNAACADQAAgA0AAIQNAACEDQAAlw0AAJkNAACyDQAAsg0AALwNAAC8DQAAvg0AAL8NAADHDQAAyQ0AAMsNAADODQAA1Q0AANUNAADXDQAA1w0AAOANAADlDQAA8A0AAPENAAD1DQAAAA4AADsOAAA+DgAAXA4AAIAOAACDDgAAgw4AAIUOAACFDgAAiw4AAIsOAACkDgAApA4AAKYOAACmDgAAvg4AAL8OAADFDgAAxQ4AAMcOAADHDgAAzw4AAM8OAADaDgAA2w4AAOAOAAD/DgAASA8AAEgPAABtDwAAcA8AAJgPAACYDwAAvQ8AAL0PAADNDwAAzQ8AANsPAAD/DwAAxhAAAMYQAADIEAAAzBAAAM4QAADPEAAASRIAAEkSAABOEgAATxIAAFcSAABXEgAAWRIAAFkSAABeEgAAXxIAAIkSAACJEgAAjhIAAI8SAACxEgAAsRIAALYSAAC3EgAAvxIAAL8SAADBEgAAwRIAAMYSAADHEgAA1xIAANcSAAAREwAAERMAABYTAAAXEwAAWxMAAFwTAAB9EwAAfxMAAJoTAACfEwAA9hMAAPcTAAD+EwAA/xMAAJ0WAACfFgAA+RYAAP8WAAAWFwAAHhcAADcXAAA/FwAAVBcAAF8XAABtFwAAbRcAAHEXAABxFwAAdBcAAH8XAADeFwAA3xcAAOoXAADvFwAA+hcAAP8XAAAaGAAAHxgAAHkYAAB/GAAAqxgAAK8YAAD2GAAA/xgAAB8ZAAAfGQAALBkAAC8ZAAA8GQAAPxkAAEEZAABDGQAAbhkAAG8ZAAB1GQAAfxkAAKwZAACvGQAAyhkAAM8ZAADbGQAA3RkAABwaAAAdGgAAXxoAAF8aAAB9GgAAfhoAAIoaAACPGgAAmhoAAJ8aAACuGgAArxoAAM8aAAD/GgAATRsAAE8bAAB/GwAAfxsAAPQbAAD7GwAAOBwAADocAABKHAAATBwAAIkcAACPHAAAuxwAALwcAADIHAAAzxwAAPscAAD/HAAAFh8AABcfAAAeHwAAHx8AAEYfAABHHwAATh8AAE8fAABYHwAAWB8AAFofAABaHwAAXB8AAFwfAABeHwAAXh8AAH4fAAB/HwAAtR8AALUfAADFHwAAxR8AANQfAADVHwAA3B8AANwfAADwHwAA8R8AAPUfAAD1HwAA/x8AAP8fAABlIAAAZSAAAHIgAABzIAAAjyAAAI8gAACdIAAAnyAAAMEgAADPIAAA8SAAAP8gAACMIQAAjyEAACckAAA/JAAASyQAAF8kAAB0KwAAdSsAAJYrAACWKwAA9CwAAPgsAAAmLQAAJi0AACgtAAAsLQAALi0AAC8tAABoLQAAbi0AAHEtAAB+LQAAly0AAJ8tAACnLQAApy0AAK8tAACvLQAAty0AALctAAC/LQAAvy0AAMctAADHLQAAzy0AAM8tAADXLQAA1y0AAN8tAADfLQAAXi4AAH8uAACaLgAAmi4AAPQuAAD/LgAA1i8AAO8vAAD8LwAA/y8AAEAwAABAMAAAlzAAAJgwAAAAMQAABDEAADAxAAAwMQAAjzEAAI8xAADkMQAA7zEAAB8yAAAfMgAAjaQAAI+kAADHpAAAz6QAACymAAA/pgAA+KYAAP+mAADLpwAAz6cAANKnAADSpwAA1KcAANSnAADapwAA8acAAC2oAAAvqAAAOqgAAD+oAAB4qAAAf6gAAMaoAADNqAAA2qgAAN+oAABUqQAAXqkAAH2pAAB/qQAAzqkAAM6pAADaqQAA3akAAP+pAAD/qQAAN6oAAD+qAABOqgAAT6oAAFqqAABbqgAAw6oAANqqAAD3qgAAAKsAAAerAAAIqwAAD6sAABCrAAAXqwAAH6sAACerAAAnqwAAL6sAAC+rAABsqwAAb6sAAO6rAADvqwAA+qsAAP+rAACk1wAAr9cAAMfXAADK1wAA/NcAAP/XAABu+gAAb/oAANr6AAD/+gAAB/sAABL7AAAY+wAAHPsAADf7AAA3+wAAPfsAAD37AAA/+wAAP/sAAEL7AABC+wAARfsAAEX7AADD+wAA0vsAAJD9AACR/QAAyP0AAM79AADQ/QAA7/0AABr+AAAf/gAAU/4AAFP+AABn/gAAZ/4AAGz+AABv/gAAdf4AAHX+AAD9/gAA/v4AAAD/AAAA/wAAv/8AAMH/AADI/wAAyf8AAND/AADR/wAA2P8AANn/AADd/wAA3/8AAOf/AADn/wAA7/8AAPj/AAD+/wAA//8AAAwAAQAMAAEAJwABACcAAQA7AAEAOwABAD4AAQA+AAEATgABAE8AAQBeAAEAfwABAPsAAQD/AAEAAwEBAAYBAQA0AQEANgEBAI8BAQCPAQEAnQEBAJ8BAQChAQEAzwEBAP4BAQB/AgEAnQIBAJ8CAQDRAgEA3wIBAPwCAQD/AgEAJAMBACwDAQBLAwEATwMBAHsDAQB/AwEAngMBAJ4DAQDEAwEAxwMBANYDAQD/AwEAngQBAJ8EAQCqBAEArwQBANQEAQDXBAEA/AQBAP8EAQAoBQEALwUBAGQFAQBuBQEAewUBAHsFAQCLBQEAiwUBAJMFAQCTBQEAlgUBAJYFAQCiBQEAogUBALIFAQCyBQEAugUBALoFAQC9BQEA/wUBADcHAQA/BwEAVgcBAF8HAQBoBwEAfwcBAIYHAQCGBwEAsQcBALEHAQC7BwEA/wcBAAYIAQAHCAEACQgBAAkIAQA2CAEANggBADkIAQA7CAEAPQgBAD4IAQBWCAEAVggBAJ8IAQCmCAEAsAgBAN8IAQDzCAEA8wgBAPYIAQD6CAEAHAkBAB4JAQA6CQEAPgkBAEAJAQB/CQEAuAkBALsJAQDQCQEA0QkBAAQKAQAECgEABwoBAAsKAQAUCgEAFAoBABgKAQAYCgEANgoBADcKAQA7CgEAPgoBAEkKAQBPCgEAWQoBAF8KAQCgCgEAvwoBAOcKAQDqCgEA9woBAP8KAQA2CwEAOAsBAFYLAQBXCwEAcwsBAHcLAQCSCwEAmAsBAJ0LAQCoCwEAsAsBAP8LAQBJDAEAfwwBALMMAQC/DAEA8wwBAPkMAQAoDQEALw0BADoNAQBfDgEAfw4BAH8OAQCqDgEAqg4BAK4OAQCvDgEAsg4BAPwOAQAoDwEALw8BAFoPAQBvDwEAig8BAK8PAQDMDwEA3w8BAPcPAQD/DwEAThABAFEQAQB2EAEAfhABAMMQAQDMEAEAzhABAM8QAQDpEAEA7xABAPoQAQD/EAEANREBADURAQBIEQEATxEBAHcRAQB/EQEA4BEBAOARAQD1EQEA/xEBABISAQASEgEAQhIBAH8SAQCHEgEAhxIBAIkSAQCJEgEAjhIBAI4SAQCeEgEAnhIBAKoSAQCvEgEA6xIBAO8SAQD6EgEA/xIBAAQTAQAEEwEADRMBAA4TAQAREwEAEhMBACkTAQApEwEAMRMBADETAQA0EwEANBMBADoTAQA6EwEARRMBAEYTAQBJEwEAShMBAE4TAQBPEwEAURMBAFYTAQBYEwEAXBMBAGQTAQBlEwEAbRMBAG8TAQB1EwEA/xMBAFwUAQBcFAEAYhQBAH8UAQDIFAEAzxQBANoUAQB/FQEAthUBALcVAQDeFQEA/xUBAEUWAQBPFgEAWhYBAF8WAQBtFgEAfxYBALoWAQC/FgEAyhYBAP8WAQAbFwEAHBcBACwXAQAvFwEARxcBAP8XAQA8GAEAnxgBAPMYAQD+GAEABxkBAAgZAQAKGQEACxkBABQZAQAUGQEAFxkBABcZAQA2GQEANhkBADkZAQA6GQEARxkBAE8ZAQBaGQEAnxkBAKgZAQCpGQEA2BkBANkZAQDlGQEA/xkBAEgaAQBPGgEAoxoBAK8aAQD5GgEA/xoBAAobAQD/GwEACRwBAAkcAQA3HAEANxwBAEYcAQBPHAEAbRwBAG8cAQCQHAEAkRwBAKgcAQCoHAEAtxwBAP8cAQAHHQEABx0BAAodAQAKHQEANx0BADkdAQA7HQEAOx0BAD4dAQA+HQEASB0BAE8dAQBaHQEAXx0BAGYdAQBmHQEAaR0BAGkdAQCPHQEAjx0BAJIdAQCSHQEAmR0BAJ8dAQCqHQEA3x4BAPkeAQD/HgEAER8BABEfAQA7HwEAPR8BAFofAQCvHwEAsR8BAL8fAQDyHwEA/h8BAJojAQD/IwEAbyQBAG8kAQB1JAEAfyQBAEQlAQCPLwEA8y8BAP8vAQBWNAEA/0MBAEdGAQD/ZwEAOWoBAD9qAQBfagEAX2oBAGpqAQBtagEAv2oBAL9qAQDKagEAz2oBAO5qAQDvagEA9moBAP9qAQBGawEAT2sBAFprAQBaawEAYmsBAGJrAQB4awEAfGsBAJBrAQA/bgEAm24BAP9uAQBLbwEATm8BAIhvAQCObwEAoG8BAN9vAQDlbwEA728BAPJvAQD/bwEA+IcBAP+HAQDWjAEA/4wBAAmNAQDvrwEA9K8BAPSvAQD8rwEA/K8BAP+vAQD/rwEAI7EBADGxAQAzsQEAT7EBAFOxAQBUsQEAVrEBAGOxAQBosQEAb7EBAPyyAQD/uwEAa7wBAG+8AQB9vAEAf7wBAIm8AQCPvAEAmrwBAJu8AQCkvAEA/84BAC7PAQAvzwEAR88BAE/PAQDEzwEA/88BAPbQAQD/0AEAJ9EBACjRAQDr0QEA/9EBAEbSAQC/0gEA1NIBAN/SAQD00gEA/9IBAFfTAQBf0wEAedMBAP/TAQBV1AEAVdQBAJ3UAQCd1AEAoNQBAKHUAQCj1AEApNQBAKfUAQCo1AEArdQBAK3UAQC61AEAutQBALzUAQC81AEAxNQBAMTUAQAG1QEABtUBAAvVAQAM1QEAFdUBABXVAQAd1QEAHdUBADrVAQA61QEAP9UBAD/VAQBF1QEARdUBAEfVAQBJ1QEAUdUBAFHVAQCm1gEAp9YBAMzXAQDN1wEAjNoBAJraAQCg2gEAoNoBALDaAQD/3gEAH98BACTfAQAr3wEA/98BAAfgAQAH4AEAGeABABrgAQAi4AEAIuABACXgAQAl4AEAK+ABAC/gAQBu4AEAjuABAJDgAQD/4AEALeEBAC/hAQA+4QEAP+EBAErhAQBN4QEAUOEBAI/iAQCv4gEAv+IBAPriAQD+4gEAAOMBAM/kAQD65AEA3+cBAOfnAQDn5wEA7OcBAOznAQDv5wEA7+cBAP/nAQD/5wEAxegBAMboAQDX6AEA/+gBAEzpAQBP6QEAWukBAF3pAQBg6QEAcOwBALXsAQAA7QEAPu0BAP/tAQAE7gEABO4BACDuAQAg7gEAI+4BACPuAQAl7gEAJu4BACjuAQAo7gEAM+4BADPuAQA47gEAOO4BADruAQA67gEAPO4BAEHuAQBD7gEARu4BAEjuAQBI7gEASu4BAEruAQBM7gEATO4BAFDuAQBQ7gEAU+4BAFPuAQBV7gEAVu4BAFjuAQBY7gEAWu4BAFruAQBc7gEAXO4BAF7uAQBe7gEAYO4BAGDuAQBj7gEAY+4BAGXuAQBm7gEAa+4BAGvuAQBz7gEAc+4BAHjuAQB47gEAfe4BAH3uAQB/7gEAf+4BAIruAQCK7gEAnO4BAKDuAQCk7gEApO4BAKruAQCq7gEAvO4BAO/uAQDy7gEA/+8BACzwAQAv8AEAlPABAJ/wAQCv8AEAsPABAMDwAQDA8AEA0PABANDwAQD28AEA//ABAK7xAQDl8QEAA/IBAA/yAQA88gEAP/IBAEnyAQBP8gEAUvIBAF/yAQBm8gEA//IBANj2AQDb9gEA7fYBAO/2AQD99gEA//YBAHf3AQB69wEA2vcBAN/3AQDs9wEA7/cBAPH3AQD/9wEADPgBAA/4AQBI+AEAT/gBAFr4AQBf+AEAiPgBAI/4AQCu+AEAr/gBALL4AQD/+AEAVPoBAF/6AQBu+gEAb/oBAH36AQB/+gEAifoBAI/6AQC++gEAvvoBAMb6AQDN+gEA3PoBAN/6AQDp+gEA7/oBAPn6AQD/+gEAk/sBAJP7AQDL+wEA7/sBAPr7AQD//wEA4KYCAP+mAgA6twIAP7cCAB64AgAfuAIAos4CAK/OAgDh6wIA//cCAB76AgD//wIASxMDAE8TAwCwIwMAAAAOAAIADgAfAA4AgAAOAP8ADgDwAQ4A//8OAP7/DwD//w8A/v8QAP//EABBAAAAWgAAAMAAAADWAAAA2AAAAN4AAAAAAQAAAAEAAAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxAEAAMcBAADHAQAAygEAAMoBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPEBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqnAACcpwAAnKcAAJ6nAACepwAAoKcAAKCnAACipwAAoqcAAKSnAACkpwAApqcAAKanAACopwAAqKcAAKqnAACupwAAsKcAALSnAAC2pwAAtqcAALinAAC4pwAAuqcAALqnAAC8pwAAvKcAAL6nAAC+pwAAwKcAAMCnAADCpwAAwqcAAMSnAADHpwAAyacAAMmnAADQpwAA0KcAANanAADWpwAA2KcAANinAAD1pwAA9acAACH/AAA6/wAAAAQBACcEAQCwBAEA0wQBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAgAwBALIMAQCgGAEAvxgBAEBuAQBfbgEAANQBABnUAQA01AEATdQBAGjUAQCB1AEAnNQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC11AEA0NQBAOnUAQAE1QEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBADjVAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBs1QEAhdUBAKDVAQC51QEA1NUBAO3VAQAI1gEAIdYBADzWAQBV1gEAcNYBAInWAQCo1gEAwNYBAOLWAQD61gEAHNcBADTXAQBW1wEAbtcBAJDXAQCo1wEAytcBAMrXAQAA6QEAIekBAG9+IQAMAAAAFPEkAI8AAACafiEAEQAAAIz1JABMAAAA4H4hABUAAADs9yQABgAAAH1+IQAHAAAAHPgkAAIAAAAVfyEADwAAACz4JAAVAAAAM38hABAAAADU+CQAEwAAAFB/IQAOAAAALHkiAEAAAABwfyEADgAAAGz5JAAFAAAAjn8hABEAAACU+SQACgAAAIR+IQAGAAAA5PkkABUAAAC3fyEAEwAAAIz6JAALAAAAyn8hAAYAAADk+iQAkwIAAOJ/IQANAAAAfA8lAAwAAAD8fyEADgAAANwPJQABAAAADIAhABAAAADkDyUAkgIAAGcmJgAEAAAAdCQlADYBAAB7gCEACwAAACQuJQBAAAAAHoAhAA8AAAAkMCUARwAAAMOAIQAPAAAAXDIlAB8AAACYgCEADwAAAFQzJQBaAQAAgJEmAAYAAAAkPiUAiQAAAAGBIQAQAAAAbEIlAE8AAACyHyYABQAAAOREJQDIAgAAL4AhAAwAAAAkWyUA/gEAANiAIQAMAAAAFGslAEgAAAA8gSEAEQAAAFRtJQC7AAAAWIEhAAwAAAAscyUAuAAAAIGBIQATAAAA7HglAAEAAAC0fiEACwAAAPR4JQADAAAAZIEhAAsAAAAMeSUAvwAAAMSBIQAJAAAABH8lAAgAAADhgSEADwAAAER/JQAHAAAAiIAhAAwAAAB8fyUAtgAAAGyqJgAGAAAALIUlAOgAAABKgCEAEAAAAGyMJQAKAAAAvXohAAoAAAC8jCUAwwIAAFyAIQAQAAAA1KIlAIYCAAAAAAAA//8QAAAAAAB/AAAAAOkBAEvpAQBQ6QEAWekBAF7pAQBf6QEAAAYAAAQGAAAGBgAACwYAAA0GAAAaBgAAHAYAAB4GAAAgBgAAPwYAAEEGAABKBgAAVgYAAG8GAABxBgAA3AYAAN4GAAD/BgAAUAcAAH8HAABwCAAAjggAAJAIAACRCAAAmAgAAOEIAADjCAAA/wgAAFD7AADC+wAA0/sAAD39AABA/QAAj/0AAJL9AADH/QAAz/0AAM/9AADw/QAA//0AAHD+AAB0/gAAdv4AAPz+AABgDgEAfg4BAP0OAQD/DgEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEA8O4BAPHuAQCACQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAAD+CQAA6gIAAOsCAAAFMQAALzEAAKAxAAC/MQAAABoAABsaAAAeGgAAHxoAAEAXAABTFwAAABEBADQRAQA2EQEARxEBAAAAAABAAAAAWwAAAGAAAAB7AAAAqQAAAKsAAAC5AAAAuwAAAL8AAADXAAAA1wAAAPcAAAD3AAAAuQIAAN8CAADlAgAA6QIAAOwCAAD/AgAAdAMAAHQDAAB+AwAAfgMAAIUDAACFAwAAhwMAAIcDAAAFBgAABQYAAAwGAAAMBgAAGwYAABsGAAAfBgAAHwYAAEAGAABABgAA3QYAAN0GAADiCAAA4ggAAGQJAABlCQAAPw4AAD8OAADVDwAA2A8AAPsQAAD7EAAA6xYAAO0WAAA1FwAANhcAAAIYAAADGAAABRgAAAUYAADTHAAA0xwAAOEcAADhHAAA6RwAAOwcAADuHAAA8xwAAPUcAAD3HAAA+hwAAPocAAAAIAAACyAAAA4gAABkIAAAZiAAAHAgAAB0IAAAfiAAAIAgAACOIAAAoCAAAMAgAAAAIQAAJSEAACchAAApIQAALCEAADEhAAAzIQAATSEAAE8hAABfIQAAiSEAAIshAACQIQAAJiQAAEAkAABKJAAAYCQAAP8nAAAAKQAAcysAAHYrAACVKwAAlysAAP8rAAAALgAAXS4AAPAvAAD7LwAAADAAAAQwAAAGMAAABjAAAAgwAAAgMAAAMDAAADcwAAA8MAAAPzAAAJswAACcMAAAoDAAAKAwAAD7MAAA/DAAAJAxAACfMQAAwDEAAOMxAAAgMgAAXzIAAH8yAADPMgAA/zIAAP8yAABYMwAA/zMAAMBNAAD/TQAAAKcAACGnAACIpwAAiqcAADCoAAA5qAAALqkAAC6pAADPqQAAz6kAAFurAABbqwAAaqsAAGurAAA+/QAAP/0AABD+AAAZ/gAAMP4AAFL+AABU/gAAZv4AAGj+AABr/gAA//4AAP/+AAAB/wAAIP8AADv/AABA/wAAW/8AAGX/AABw/wAAcP8AAJ7/AACf/wAA4P8AAOb/AADo/wAA7v8AAPn/AAD9/wAAAAEBAAIBAQAHAQEAMwEBADcBAQA/AQEAkAEBAJwBAQDQAQEA/AEBAOECAQD7AgEAoLwBAKO8AQBQzwEAw88BAADQAQD10AEAANEBACbRAQAp0QEAZtEBAGrRAQB60QEAg9EBAITRAQCM0QEAqdEBAK7RAQDq0QEAwNIBANPSAQDg0gEA89IBAADTAQBW0wEAYNMBAHjTAQAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDL1wEAztcBAP/XAQBx7AEAtOwBAAHtAQA97QEAAPABACvwAQAw8AEAk/ABAKDwAQCu8AEAsfABAL/wAQDB8AEAz/ABANHwAQD18AEAAPEBAK3xAQDm8QEA//EBAAHyAQAC8gEAEPIBADvyAQBA8gEASPIBAFDyAQBR8gEAYPIBAGXyAQAA8wEA1/YBANz2AQDs9gEA8PYBAPz2AQAA9wEAdvcBAHv3AQDZ9wEA4PcBAOv3AQDw9wEA8PcBAAD4AQAL+AEAEPgBAEf4AQBQ+AEAWfgBAGD4AQCH+AEAkPgBAK34AQCw+AEAsfgBAAD5AQBT+gEAYPoBAG36AQBw+gEAfPoBAID6AQCI+gEAkPoBAL36AQC/+gEAxfoBAM76AQDb+gEA4PoBAOj6AQDw+gEA+PoBAAD7AQCS+wEAlPsBAMr7AQDw+wEA+fsBAAEADgABAA4AIAAOAH8ADgDiAwAA7wMAAIAsAADzLAAA+SwAAP8sAAAACAEABQgBAAgIAQAICAEACggBADUIAQA3CAEAOAgBADwIAQA8CAEAPwgBAD8IAQCQLwEA8i8BAAAEAACEBAAAhwQAAC8FAACAHAAAiBwAACsdAAArHQAAeB0AAHgdAADgLQAA/y0AAECmAACfpgAALv4AAC/+AAAw4AEAbeABAI/gAQCP4AEAAAkAAFAJAABVCQAAYwkAAGYJAAB/CQAA4KgAAP+oAAAAGwEACRsBAAAYAQA7GAEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQCcvAEAn7wBAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAP8QAACQHAAAuhwAAL0cAAC/HAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAACwAAF8sAAAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAABMBAAMTAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA8EwEARBMBAEcTAQBIEwEASxMBAE0TAQBQEwEAUBMBAFcTAQBXEwEAXRMBAGMTAQBmEwEAbBMBAHATAQB0EwEAcAMAAHMDAAB1AwAAdwMAAHoDAAB9AwAAfwMAAH8DAACEAwAAhAMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAOEDAADwAwAA/wMAACYdAAAqHQAAXR0AAGEdAABmHQAAah0AAL8dAAC/HQAAAB8AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAxB8AAMYfAADTHwAA1h8AANsfAADdHwAA7x8AAPIfAAD0HwAA9h8AAP4fAAAmIQAAJiEAAGWrAABlqwAAQAEBAI4BAQCgAQEAoAEBAADSAQBF0gEAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAPEKAAD5CgAA/woAAGAdAQBlHQEAZx0BAGgdAQBqHQEAjh0BAJAdAQCRHQEAkx0BAJgdAQCgHQEAqR0BAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB2CgAAgC4AAJkuAACbLgAA8y4AAAAvAADVLwAABTAAAAUwAAAHMAAABzAAACEwAAApMAAAODAAADswAAAANAAAv00AAABOAAD/nwAAAPkAAG36AABw+gAA2foAAOJvAQDjbwEA8G8BAPFvAQAAAAIA36YCAACnAgA5twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIAAPgCAB36AgAAAAMAShMDAFATAwCvIwMAABEAAP8RAAAuMAAALzAAADExAACOMQAAADIAAB4yAABgMgAAfjIAAGCpAAB8qQAAAKwAAKPXAACw1wAAxtcAAMvXAAD71wAAoP8AAL7/AADC/wAAx/8AAMr/AADP/wAA0v8AANf/AADa/wAA3P8AAAANAQAnDQEAMA0BADkNAQAgFwAANBcAAEEwAACWMAAAnTAAAJ8wAAABsAEAH7EBADKxAQAysQEAULEBAFKxAQAA8gEAAPIBAAADAABvAwAAhQQAAIYEAABLBgAAVQYAAHAGAABwBgAAUQkAAFQJAACwGgAAzhoAANAcAADSHAAA1BwAAOAcAADiHAAA6BwAAO0cAADtHAAA9BwAAPQcAAD4HAAA+RwAAMAdAAD/HQAADCAAAA0gAADQIAAA8CAAACowAAAtMAAAmTAAAJowAAAA/gAAD/4AACD+AAAt/gAA/QEBAP0BAQDgAgEA4AIBADsTAQA7EwEAAM8BAC3PAQAwzwEARs8BAGfRAQBp0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAAAEOAO8BDgCAqQAAzakAANCpAADZqQAA3qkAAN+pAACAEAEAwhABAM0QAQDNEAEAgAwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPMMAAChMAAA+jAAAP0wAAD/MAAA8DEAAP8xAADQMgAA/jIAAAAzAABXMwAAZv8AAG//AABx/wAAnf8AAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAACwAQAAsAEAILEBACKxAQBVsQEAVbEBAGSxAQBnsQEAAKkAAC2pAAAvqQAAL6kAAAASAQAREgEAExIBAEESAQCwEgEA6hIBAPASAQD5EgEAQQAAAFoAAABhAAAAegAAAKoAAACqAAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAALgCAADgAgAA5AIAAAAdAAAlHQAALB0AAFwdAABiHQAAZR0AAGsdAAB3HQAAeR0AAL4dAAAAHgAA/x4AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAACohAAArIQAAMiEAADIhAABOIQAATiEAAGAhAACIIQAAYCwAAH8sAAAipwAAh6cAAIunAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZpwAA8qcAAP+nAAAwqwAAWqsAAFyrAABkqwAAZqsAAGmrAAAA+wAABvsAACH/AAA6/wAAQf8AAFr/AACABwEAhQcBAIcHAQCwBwEAsgcBALoHAQAA3wEAHt8BACXfAQAq3wEAABkAAB4ZAAAgGQAAKxkAADAZAAA7GQAAQBkAAEAZAABEGQAATxkAAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAAAAAQALAAEADQABACYAAQAoAAEAOgABADwAAQA9AAEAPwABAE0AAQBQAAEAXQABAIAAAQD6AAEAUBEBAHYRAQAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABPDQAAVA0AAGMNAABmDQAAfw0AAEAIAABbCAAAXggAAF4IAADACgEA5goBAOsKAQD2CgEAAB0BAAYdAQAIHQEACR0BAAsdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBHHQEAUB0BAFkdAQAAFgEARBYBAFAWAQBZFgEAABgAAAEYAAAEGAAABBgAAAYYAAAZGAAAIBgAAHgYAACAGAAAqhgAAGAWAQBsFgEAgBIBAIYSAQCIEgEAiBIBAIoSAQCNEgEAjxIBAJ0SAQCfEgEAqRIBAAAQAACfEAAA4KkAAP6pAABgqgAAf6oAAKAZAQCnGQEAqhkBANcZAQDaGQEA5BkBAMAHAAD6BwAA/QcAAP8HAABQAwEAegMBAHAPAQCJDwEAAQsAAAMLAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA8CwAARAsAAEcLAABICwAASwsAAE0LAABVCwAAVwsAAFwLAABdCwAAXwsAAGMLAABmCwAAdwsAAECoAAB3qAAAgAsBAJELAQCZCwEAnAsBAKkLAQCvCwEAgBEBAN8RAQCBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADKDQAAyg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPQNAADhEQEA9BEBADAPAQBZDwEAAKgAACyoAAAABwAADQcAAA8HAABKBwAATQcAAE8HAABgCAAAaggAAAAXAAAVFwAAHxcAAB8XAABgFwAAbBcAAG4XAABwFwAAchcAAHMXAABQGQAAbRkAAHAZAAB0GQAAgBYBALkWAQDAFgEAyRYBAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAAD6CwAAwB8BAPEfAQD/HwEA/x8BAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAHcMAAB/DAAAgAcAALEHAACAFAEAxxQBANAUAQDZFAEAgA4BAKkOAQCrDgEArQ4BALAOAQCxDgEAAKAAAIykAACQpAAAxqQAAIWJIQAFAAAAZLklAAMAAACoiSEABAAAAGTbIwADAAAAwIkhABUAAAB82yMAAQAAANmJIQAGAAAAfLklADoAAADtiSEACAAAACTdIwAEAAAAFIohAAcAAABE3SMAAgAAACOKIQAIAAAAVN0jAAIAAAA3iiEABQAAAGTdIwACAAAARYohAAkAAAB03SMAAgAAAFuKIQAFAAAAhN0jAAIAAABoiiEABwAAAEy7JQAOAAAAf4ohAAkAAABk3iMABAAAAJCKIQAIAAAAvLslAAMAAACkiiEABgAAAOTeIwADAAAAtIohAAcAAAD83iMAAQAAAMaKIQAIAAAA1LslAAIAAADaiiEABQAAAOS7JQABAAAAAIshABMAAAAs3yMAAwAAABuLIQAGAAAARN8jAAEAAACSiSEAEgAAAEzfIwACAAAA6IohAAYAAADsuyUAAgAAAEKLIQAEAAAAfN8jAAQAAABKiyEACAAAAJzfIwADAAAAZIshAAoAAAC03yMAAQAAAHiLIQAGAAAA/LslAK0AAACCiyEABgAAAGTBJQADAAAAsoshAAkAAAB05CMABAAAAKKLIQAHAAAAfMElAAYAAACSiyEADAAAAKzBJQABAAAA1YshAAgAAAC0wSUACgAAAOiLIQAHAAAAROUjAAEAAADziyEACgAAAATCJQAFAAAAC4whAAsAAACM5SMACAAAACSMIQAFAAAALMIlAAEAAAA2jCEACAAAADTCJQAFAAAASowhABQAAAAM5iMAAQAAAHWMIQAHAAAAFOYjAAEAAACHjCEABwAAABzmIwABAAAAmYwhAAgAAAAk5iMAJAAAAK2MIQAIAAAAXMIlAAoAAADBjCEACgAAAKzCJQAGAAAA+4whAAYAAADc5yMAAQAAAAuNIQAHAAAA3MIlAA8AAAAejSEABQAAAFTDJQAkAAAAL40hAAgAAAB0xCUADgAAANmMIQANAAAA5MQlAAYAAABPjSEACAAAABTFJQAQAAAAXo0hAAMAAACUxSUAFQAAAGWNIQAGAAAAPMYlAA4AAACDjSEADwAAAKzGJQACAAAAlo0hAAcAAAC8xiUAAQAAAKiNIQAGAAAATO0jAAMAAAC4jSEABgAAAGTtIwAJAAAAyI0hAAgAAADExiUABgAAAPmJIQAQAAAANO4jAAIAAABHjiEACQAAAPTGJQAdAAAAZI4hABUAAADk7iMAAgAAAI6OIQAWAAAA9O4jAAIAAAC2jiEACAAAANzHJQADAAAAzI4hAAYAAAD0xyUAAgAAAPGOIQAHAAAABMglAA0AAADijiEACAAAAGzIJQAOAAAAFo8hAAQAAACE8CMAAwAAANaOIQAIAAAA3MglAAIAAAAljyEACgAAAKTwIwAIAAAASo8hABMAAADk8CMAAgAAAGKPIQAFAAAA9PAjAAQAAABvjyEABgAAAOzIJQACAAAAhI8hAAkAAAD8yCUAAgAAAKiPIQADAAAAVPEjAAsAAAC0jyEABQAAAAzJJQAnAAAAwY8hAAYAAAAk8yMAAwAAANGPIQAFAAAARMolAAUAAADfjyEACAAAAGzKJQADAAAA648hAAgAAACEyiUABwAAAAWQIQAEAAAA3PMjAAIAAAANkCEABgAAAOzzIwABAAAAHZAhAAYAAAD08yMAAgAAADGQIQAIAAAAvMolAAEAAABBkCEABwAAABz0IwABAAAAWJAhAAkAAADEyiUABwAAAGWQIQAHAAAA/MolAAIAAAB3kCEACgAAAAzLJQACAAAAj5AhAAcAAACs9CMAAwAAAOqMIQANAAAAHMslAAcAAAC0kCEACwAAAAT1IwABAAAAzpAhAAwAAAAM9SMAAwAAAN6QIQANAAAAJPUjAAIAAAD7kCEAEAAAADT1IwADAAAAD5EhABQAAABM9SMAAQAAAEmRIQAEAAAAVPUjAAMAAABVkSEABAAAAFTLJQACAAAAXZEhAAkAAABkyyUABgAAAHKRIQADAAAArPUjAAMAAACBkSEABwAAAJTLJQAFAAAAlpEhAAcAAAC8yyUAAwAAAKqRIQAJAAAAFPYjAAIAAAC3kSEACwAAACT2IwABAAAA0JEhAAsAAADUyyUAAwAAABCSIQALAAAAdPYjAAQAAAADkiEABAAAAJT2IwACAAAAHpIhAAMAAADsyyUAAgAAACmSIQAFAAAA1PYjAAIAAADwjSEAFgAAAOT2IwAEAAAAS5IhAAUAAAAE9yMAAQAAAFySIQAIAAAADPcjAAEAAAAijiEADQAAABT3IwADAAAAqI4hAAoAAAAs9yMAAgAAAOqRIQARAAAAPPcjAAEAAACVkiEACgAAAPzLJQABAAAAqZIhAAsAAABU9yMAAgAAAL6SIQALAAAAZPcjAAEAAADYkiEAEQAAAGz3IwABAAAA8pIhAAoAAAB09yMAAQAAAAWTIQAKAAAABMwlAAEAAAAUkyEABQAAAAzMJQAOAAAAJpMhAAUAAAAk+CMAAgAAADOTIQAHAAAANPgjAAIAAADgjSEADAAAAET4IwAFAAAAVJMhAAkAAABs+CMAAQAAAGqTIQALAAAAdPgjAAEAAACGkyEACAAAAHzMJQABAAAAsJMhAAoAAACU+CMAAgAAAJ2TIQAPAAAAhMwlAAMAAADokyEABgAAAMT4IwACAAAA+5MhAAUAAADU+CMAAgAAAA2UIQAJAAAA5PgjAAIAAAAilCEACgAAAPT4IwACAAAATJQhAAcAAACczCUAAQAAAFqUIQAHAAAANPkjAAEAAABtlCEABwAAADz5IwACAAAAOpQhAAsAAABM+SMAAwAAAI6UIQAHAAAApMwlAA0AAACglCEABwAAAAzNJQABAAAAtpQhAAwAAADk+SMAAgAAANGUIQAHAAAA9PkjAAEAAADjlCEACQAAAPz5IwACAAAA+ZQhAAwAAAAUzSUAAQAAABSVIQAGAAAAHM0lAAQAAAAnlSEABwAAADzNJQACAAAAMpUhAAgAAABMzSUAAwAAAEeVIQAGAAAAZM0lAAIAAACdjyEACAAAANT6IwAFAAAAW5UhAAgAAAD8+iMAAgAAAGeVIQAFAAAAdM0lAAIAAAB+lSEABQAAAITNJQASAAAAl5UhAAYAAAD0+yMAAgAAAIuVIQAGAAAABPwjAAQAAACrlSEABgAAABTOJQANAAAAy5UhAAYAAAB8ziUAAQAAANuVIQAEAAAA5PwjAAIAAADmlSEABwAAAPT8IwAHAAAAu5UhAAgAAAAs/SMAAwAAAP2VIQAHAAAAhM4lAAIAAAATliEABAAAAHT9IwABAAAAG5YhAAgAAAB8/SMAAgAAAC6WIQADAAAAjP0jAAEAAAA5liEACAAAAJT9IwAIAAAAT5YhAAYAAADU/SMAAgAAAFmWIQALAAAA5P0jAAIAAAB+liEABgAAAJTOJQADAAAAjJYhAAIAAACsziUAAgAAAKGWIQAQAAAAZP4jAAEAAAAnICcAHDggAGQAAAAYAAAAPQAAABw4IABkAAAAFQAAAA0AAABUcnlGcm9tQ2hhckVycm9yQ2xhc3NCeXRlc1JlcGV0aXRpb25taW5tYXhncmVlZHlpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBmb3VuZCBpbiBjaGFyYWN0ZXIgY2xhc3NpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyByYW5nZSwgdGhlIHN0YXJ0IG11c3QgYmUgPD0gdGhlIGVuZGludmFsaWQgcmFuZ2UgYm91bmRhcnksIG11c3QgYmUgYSBsaXRlcmFsdW5jbG9zZWQgY2hhcmFjdGVyIGNsYXNzZGVjaW1hbCBsaXRlcmFsIGVtcHR5ZGVjaW1hbCBsaXRlcmFsIGludmFsaWRoZXhhZGVjaW1hbCBsaXRlcmFsIGVtcHR5aGV4YWRlY2ltYWwgbGl0ZXJhbCBpcyBub3QgYSBVbmljb2RlIHNjYWxhciB2YWx1ZWludmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZSwgcmVhY2hlZCBlbmQgb2YgcGF0dGVybiBwcmVtYXR1cmVseXVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VkYW5nbGluZyBmbGFnIG5lZ2F0aW9uIG9wZXJhdG9yZHVwbGljYXRlIGZsYWdmbGFnIG5lZ2F0aW9uIG9wZXJhdG9yIHJlcGVhdGVkZXhwZWN0ZWQgZmxhZyBidXQgZ290IGVuZCBvZiByZWdleHVucmVjb2duaXplZCBmbGFnZHVwbGljYXRlIGNhcHR1cmUgZ3JvdXAgbmFtZWVtcHR5IGNhcHR1cmUgZ3JvdXAgbmFtZWludmFsaWQgY2FwdHVyZSBncm91cCBjaGFyYWN0ZXJ1bmNsb3NlZCBjYXB0dXJlIGdyb3VwIG5hbWV1bmNsb3NlZCBncm91cHVub3BlbmVkIGdyb3VwaW52YWxpZCByZXBldGl0aW9uIGNvdW50IHJhbmdlLCB0aGUgc3RhcnQgbXVzdCBiZSA8PSB0aGUgZW5kcmVwZXRpdGlvbiBxdWFudGlmaWVyIGV4cGVjdHMgYSB2YWxpZCBkZWNpbWFsdW5jbG9zZWQgY291bnRlZCByZXBldGl0aW9ucmVwZXRpdGlvbiBvcGVyYXRvciBtaXNzaW5nIGV4cHJlc3Npb25zcGVjaWFsIHdvcmQgYm91bmRhcnkgYXNzZXJ0aW9uIGlzIGVpdGhlciB1bmNsb3NlZCBvciBjb250YWlucyBhbiBpbnZhbGlkIGNoYXJhY3RlcnVucmVjb2duaXplZCBzcGVjaWFsIHdvcmQgYm91bmRhcnkgYXNzZXJ0aW9uLCB2YWxpZCBjaG9pY2VzIGFyZTogc3RhcnQsIGVuZCwgc3RhcnQtaGFsZiBvciBlbmQtaGFsZmZvdW5kIGVpdGhlciB0aGUgYmVnaW5uaW5nIG9mIGEgc3BlY2lhbCB3b3JkIGJvdW5kYXJ5IG9yIGEgYm91bmRlZCByZXBldGl0aW9uIG9uIGEgXGIgd2l0aCBhbiBvcGVuaW5nIGJyYWNlLCBidXQgbm8gY2xvc2luZyBicmFjZWludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgY2xhc3NiYWNrcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZGxvb2stYXJvdW5kLCBpbmNsdWRpbmcgbG9vay1haGVhZCBhbmQgbG9vay1iZWhpbmQsIGlzIG5vdCBzdXBwb3J0ZWRVbmljb2RlIG5vdCBhbGxvd2VkIGhlcmVwYXR0ZXJuIGNhbiBtYXRjaCBpbnZhbGlkIFVURi04aW52YWxpZCBsaW5lIHRlcm1pbmF0b3IsIG11c3QgYmUgQVNDSUlVbmljb2RlIHByb3BlcnR5IG5vdCBmb3VuZFVuaWNvZGUgcHJvcGVydHkgdmFsdWUgbm90IGZvdW5kVW5pY29kZS1hd2FyZSBQZXJsIGNsYXNzIG5vdCBmb3VuZCAobWFrZSBzdXJlIHRoZSB1bmljb2RlLXBlcmwgZmVhdHVyZSBpcyBlbmFibGVkKVVuaWNvZGUtYXdhcmUgY2FzZSBpbnNlbnNpdGl2aXR5IG1hdGNoaW5nIGlzIG5vdCBhdmFpbGFibGUgKG1ha2Ugc3VyZSB0aGUgdW5pY29kZS1jYXNlIGZlYXR1cmUgaXMgZW5hYmxlZClTdGFydEVuZFN0YXJ0TEZFbmRMRlN0YXJ0Q1JMRkVuZENSTEZXb3JkQXNjaWlXb3JkQXNjaWlOZWdhdGVXb3JkVW5pY29kZVdvcmRVbmljb2RlTmVnYXRlV29yZFN0YXJ0QXNjaWlXb3JkRW5kQXNjaWlXb3JkU3RhcnRVbmljb2RlV29yZEVuZFVuaWNvZGVXb3JkU3RhcnRIYWxmQXNjaWlXb3JkRW5kSGFsZkFzY2lpV29yZFN0YXJ0SGFsZlVuaWNvZGVXb3JkRW5kSGFsZlVuaWNvZGVDYXB0dXJlaW5kZXghMiAAawAAABYCAAAdAAAAITIgAGsAAAATAgAAHQAAAN05IABsAAAArAEAAC4AAADdOSAAbAAAAKMBAAAuAAAA3TkgAGwAAAC3AQAAJwAAAN05IABsAAAAuAEAABwAAADdOSAAbAAAALwBAAAnAAAA3TkgAGwAAAC9AQAALAAAAN05IABsAAAAzgEAACAAAADdOSAAbAAAAP4BAAAuAAAA3TkgAGwAAAD6AQAALgAAAN05IABsAAAACgIAAC4AAADdOSAAbAAAAAYCAAAuAAAA3TkgAGwAAAAZ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Lg+ChQWbfurNWfE7Uysdyr6lAZ43r8vu10f0L9xVF6GYhDRL+VgJv6xsw4wWqxIwLjBhbnkgdmFsdWVieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2V1bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnR1bml0YSBib29sZWFuYSBzdHJpbmcAAACsRiAAZQAAACQJAAASAAAAb25lIG9mICwgLjAAAAAAAAgAAAAEAAAA7wQAAPAEAADxBAAARU9GIHdoaWxlIHBhcnNpbmcgYSBsaXN0RU9GIHdoaWxlIHBhcnNpbmcgYW4gb2JqZWN0RU9GIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdFT0Ygd2hpbGUgcGFyc2luZyBhIHZhbHVlZXhwZWN0ZWQgYDpgZXhwZWN0ZWQgYCxgIG9yIGBdYGV4cGVjdGVkIGAsYCBvciBgfWBleHBlY3RlZCBpZGVudGV4cGVjdGVkIHZhbHVlZXhwZWN0ZWQgYCJgaW52YWxpZCBlc2NhcGVpbnZhbGlkIG51bWJlcm51bWJlciBvdXQgb2YgcmFuZ2VpbnZhbGlkIHVuaWNvZGUgY29kZSBwb2ludGNvbnRyb2wgY2hhcmFjdGVyIChcdTAwMDAtXHUwMDFGKSBmb3VuZCB3aGlsZSBwYXJzaW5nIGEgc3RyaW5na2V5IG11c3QgYmUgYSBzdHJpbmdpbnZhbGlkIHZhbHVlOiBleHBlY3RlZCBrZXkgdG8gYmUgYSBudW1iZXIgaW4gcXVvdGVzZmxvYXQga2V5IG11c3QgYmUgZmluaXRlIChnb3QgTmFOIG9yICsvLWluZilsb25lIGxlYWRpbmcgc3Vycm9nYXRlIGluIGhleCBlc2NhcGV0cmFpbGluZyBjb21tYXRyYWlsaW5nIGNoYXJhY3RlcnN1bmV4cGVjdGVkIGVuZCBvZiBoZXggZXNjYXBlcmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTnyBAAADAAAAAQAAADzBAAA9AQAAPUEAAAAAAAAAAAAAAEAAAC0AwAAAAAAAAAAAAABAAAArQMAAGdMIABoAAAANQAAAA4AAAAAAAAAAAAAAAEAAADjAwAAv0ggAGMAAABBAAAADgAAAL9IIABjAAAAdgAAACQAAAC/SCAAYwAAAHYAAAAyAAAAqjwgAGQAAAArAAAAKwAAAExheW91dEVycm9yAIA/IABMAAAA4gAAABQAAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseQAAAAAEAAAABAAAAPYEAAAAAAAACAAAAAQAAAD3BAAA+AQAAPkEAAD6BAAA0gMAAAwAAAAEAAAA+wQAAPwEAAD9BAAAAAAAAAgAAAAEAAAA/gQAAP8EAAAABQAAAQUAAAIFAAAQAAAABAAAAAMFAAAEBQAABQUAAPoEAABtXcvWLFDrY3hBpldxG4u5bOBG+5gNGhgyy+2WUJHsy2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAMpKIAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADKSiAAKgAAALcEAAANAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGltZWQgb3V0d3JpdGUgemVyb25vIHN0b3JhZ2Ugc3BhY2VzZWVrIG9uIHVuc2Vla2FibGUgZmlsZXF1b3RhIGV4Y2VlZGVkZmlsZSB0b28gbGFyZ2VyZXNvdXJjZSBidXN5ZXhlY3V0YWJsZSBmaWxlIGJ1c3lkZWFkbG9ja2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZXRvbyBtYW55IGxpbmtzaW52YWxpZCBmaWxlbmFtZWFyZ3VtZW50IGxpc3QgdG9vIGxvbmdvcGVyYXRpb24gaW50ZXJydXB0ZWR1bnN1cHBvcnRlZHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVvdXQgb2YgbWVtb3J5aW4gcHJvZ3Jlc3NvdGhlciBlcnJvcnVuY2F0ZWdvcml6ZWQgZXJyb3IAAAAjNiAARwAAADcDAAAnAAAAIzYgAEcAAAAeAwAAJgAAACM2IABHAAAAHAMAACwAAAAjNiAARwAAACsDAAAnAAAAAQAAAAAAAADTIAAAaAEAACAgICAgICAgICAgICBhdCDDIAAAaAQAAjogANMgAABoAQADIC0gACAgICAgIDx1bmtub3duPsEgAIBgAO+/vQAVRiAAZAAAAGcBAAAwAAAATGF6eUxvY2sgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAAITQgAFEAAACeAQAABQAAAHVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQAANcSIABRAAAAOwEAAAkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAckggAEwAAAAmAAAADQAAAFdvdWxkQmxvY2sAAAAAAAAIAAAABAAAAAYFAAB1bnN1cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UAd0AgAEwAAACKAQAAHQAAAAcFAAAQAAAABAAAAAgFAAAJBQAAT3Njb2RlS2luZEN1c3RvbUFjY2Vzc0Vycm9yANIDAAAMAAAABAAAAAoFAABOb3RGb3VuZFBlcm1pc3Npb25EZW5pZWRDb25uZWN0aW9uUmVmdXNlZENvbm5lY3Rpb25SZXNldEhvc3RVbnJlYWNoYWJsZU5ldHdvcmtVbnJlYWNoYWJsZUNvbm5lY3Rpb25BYm9ydGVkTm90Q29ubmVjdGVkQWRkckluVXNlQWRkck5vdEF2YWlsYWJsZU5ldHdvcmtEb3duQnJva2VuUGlwZUFscmVhZHlFeGlzdHNOb3RBRGlyZWN0b3J5SXNBRGlyZWN0b3J5RGlyZWN0b3J5Tm90RW1wdHlSZWFkT25seUZpbGVzeXN0ZW1GaWxlc3lzdGVtTG9vcFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVJbnZhbGlkSW5wdXRJbnZhbGlkRGF0YVRpbWVkT3V0V3JpdGVaZXJvU3RvcmFnZUZ1bGxOb3RTZWVrYWJsZVF1b3RhRXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9ja0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9vTG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlJblByb2dyZXNzT3RoZXJVbmNhdGVnb3JpemVkIzYgAEcAAAC1AwAALwAAACM2IABHAAAArQMAAC8AAAAjNiAARwAAAKEDAAArAAAAIzYgAEcAAAC5AwAAMQAAAAAAAAAMAAAABAAAAAsFAAAMBQAAAAAAAAwAAAAEAAAADQUAAA4FAADeGSAAIQAAAGUCAAAuAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAAAAAAABAAAAAQAAABeAgAAAAAAAAQAAAAEAAAADwUAAG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1w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Y2Nlc3MgdG8gc3VwZXJJbmRleCBzdXBlciB3aXRoIHByaXZhdGUgbmFtZSBpcyBub3QgYWxsb3dlZCduZXcudGFyZ2V0JyBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgZnVuY3Rpb24gZXhwcmVzc2lvbiwgb3IgY2xhc3MuSW1wb3J0IGlzIG5vdCBhbGxvd2VkIGhlcmVBbiBhcnJvdyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCBoZXJlYGV4cG9ydGAgaXMgbm90IGFsbG93ZWQgaGVyZUEgZ2V0dGVyIG9yIGEgc2V0dGVyIGNhbm5vdCBiZSByZWFkb25seUEgZ2V0dGVyIG9yIGEgc2V0dGVyIGNhbm5vdCBiZSBvcHRpb25hbEEgYGdldGAgYWNjZXNzb3IgY2Fubm90IGhhdmUgcGFyYW1ldGVyc0EgYHNldGAgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlcnRvcCBsZXZlbCBhd2FpdCBpcyBvbmx5IGFsbG93ZWQgaW4gbW9kdWxlTGVnYWN5IGRlY2ltYWwgZXNjYXBlIGlzIG5vdCBwZXJtaXR0ZWQgaW4gc3RyaWN0IG1vZGVMZWdhY3kgb2N0YWwgZXNjYXBlIGlzIG5vdCBwZXJtaXR0ZWQgaW4gc3RyaWN0IG1vZGVJbnZhbGlkIGNoYXJhY3RlciBpbiBpZGVudGlmaWVyYSBiaW5hcnlhbiBvY3RhbGEgZGVjaW1hbGEgaGV4YWRlY2ltYWwAgyEgACMAAABCAQAAGgAAAFNldHRlciBzaG91bGQgaGF2ZSBleGFjdGx5IG9uZSBwYXJhbWV0ZXJSZXN0IHBhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gc2V0dGVyVW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50RXhwZWN0ZWQgdW5pY29kZSBlc2NhcGVVbnRlcm1pbmF0ZWQgcmVnZXhwIGxpdGVyYWxVbnRlcm1pbmF0ZWQgdGVtcGxhdGVJZGVudGlmaWVyIGNhbm5vdCBmb2xsb3cgbnVtYmVySW52YWxpZCBzdHJpbmcgZXNjYXBlSW52YWxpZCB1bmljb2RlIGVzY2FwZUV4cGVjdGVkICssIC0gb3IgZGVjaW1hbCBkaWdpdCBhZnRlciBlTGVnYWN5IGNvbW1lbnRzIGNhbm5vdCBiZSB1c2VkIGluIG1vZHVsZSBjb2RlYGF3YWl0YCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGluIGFuIGFzeW5jIGNvbnRleHQnZXZhbCcgYW5kICdhcmd1bWVudHMnIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmluZGluZyBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlJ2FyZ3VtZW50cycgaXMgb25seSBhbGxvd2VkIGluIGZ1bmN0aW9ucyBhbmQgY2xhc3MgbWV0aG9kc0lsbGVnYWwgJ3VzZSBzdHJpY3QnIGRpcmVjdGl2ZSBpbiBmdW5jdGlvbiB3aXRoIG5vbi1zaW1wbGUgcGFyYW1ldGVyIGxpc3QuJyoqJyBjYW5ub3QgYmUgYXBwbGllZCB0byB1bmFyeS9hd2FpdCBleHByZXNzaW9uLlVuZXhwZWN0ZWQgdG9rZW4gJyMnTGluZUJyZWFrIGNhbm5vdCBmb2xsb3cgJ3Rocm93J1VuZXhwZWN0ZWQgbGluZSBicmVhayBiZXR3ZWVuIGFycm93IGhlYWQgYW5kIGFycm93ICwgIG9yIGNhbm5vdCBpbXBvcnQgYXMgcmVzZXJ2ZWQgd29yZGFzc2lnbm1lbnQgcHJvcGVydHkgaXMgaW52YWxpZCBzeW50YXhFeHBlY3RlZCAnOycsICd9JyBvciA8ZW9mPmF3YWl0KiBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGFzeW5jIGZ1bmN0aW9ucyBwcm9wb3NhbC4gVXNlIFByb21pc2UuYWxsKCkgaW5zdGVhZC5DYW5ub3QgdXNlIGEgcmVzZXJ2ZWQgd29yZCBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eU51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRvcig/PykgcmVxdWlyZXMgcGFyZW5zIHdoZW4gbWl4aW5nIHdpdGggbG9naWNhbCBvcGVyYXRvcnNBIHN3aXRjaCBibG9jayBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWZhdWx0c1RyYWlsaW5nIGNvbW1hIGlzbid0IHBlcm1pdHRlZCBhZnRlciBhIHJlc3QgZWxlbWVudFJlc3QgZWxlbWVudCBtdXN0IGJlIGZpbmFsIGVsZW1lbnRQYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gc3ByZWFkIG9wZXJhdG9yUGFyZW50aGVzaXplZCBleHByZXNzaW9uIGNhbm5vdCBiZSBlbXB0eU5vdCBhIHBhdHRlcm5Ob3QgYW4gZXhwcmVzc2lvbkNhbm5vdCBhc3NpZ24gdG8gdGhpc0ludmFsaWQgYXNzaWdubWVudCB0YXJnZXRFeHBlY3RlZCBpZGVudEV4cGVjdGVkICc7JyBvciBsaW5lIGJyZWFrQW4gYXN5bmMgZnVuY3Rpb24gY2Fubm90IGJlIGdlbmVyYXRvcidpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgYXJlIG5vdCBwZXJtaXR0ZWQgaGVyZSdpbXBvcnQnLCBhbmQgJ2V4cG9ydCcgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZSdpbXBvcnQubWV0YScgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBtb2R1bGUgY29kZS5EZXN0cnVjdHVyaW5nIGJpbmRpbmdzIHJlcXVpcmUgaW5pdGlhbGl6ZXJzV2l0aCBzdGF0ZW1lbnQgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlUmV0dXJuIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCBoZXJlRXhwZWN0ZWQgb25lIHZhcmlhYmxlIGJpbmRpbmdVbmV4cGVjdGVkIGluaXRpYWxpemVyIGluIGZvciBpbi9vZiBsb29wR2VuZXJhdG9yIG9yIGFzeW5jIGZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZEZ1bmN0aW9uIGNhbm5vdCBiZSBsYWJlbGxlZCBpbiBzdHJpY3QgbW9kZSd5aWVsZCcgY2Fubm90IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIgd2l0aGluIGdlbmVyYXRvcmBhd2FpdGAgZXhwcmVzc2lvbnMgY2Fubm90IGJlIHVzZWQgaW4gYSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIuZm9yIGF3YWl0IHN5bnRheCBpcyB2YWxpZCBvbmx5IGZvciBmb3Itb2Ygc3RhdGVtZW50YXdhaXQgaXNuJ3QgYWxsb3dlZCBpbiBub24tYXN5bmMgZnVuY3Rpb25VbnRlcm1pbmF0ZWQgSlNYIGNvbnRlbnRzSlNYIGF0dHJpYnV0ZXMgbXVzdCBvbmx5IGJlIGFzc2lnbmVkIGEgbm9uLWVtcHR5IGV4cHJlc3Npb25KU1ggdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBleHByZXNzaW9uIG9yIGEgcXVvdGVkIEpTWCB0ZXh0RXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yIDw+TGVhZGluZyBkZWNvcmF0b3JzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBjbGFzcyBkZWNsYXJhdGlvblVzaW5nIHRoZSBleHBvcnQga2V5d29yZCBiZXR3ZWVuIGEgZGVjb3JhdG9yIGFuZCBhIGNsYXNzIGlzIG5vdCBhbGxvd2VkLiBQbGVhc2UgdXNlIGBleHBvcnQgQGRlYyBjbGFzc2AgaW5zdGVhZC5BIHJlcXVpcmVkIGVsZW1lbnQgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBlbGVtZW50LlR5cGVzY3JpcHQgcGFyYW1ldGVyIHByb3BlcnR5IG11c3QgYmUgYW4gaWRlbnRpZmllciBvciBhc3NpZ25tZW50IHBhdHRlcm5VbmV4cGVjdGVkIHNwYWNlIGJldHdlZW4gIyBhbmQgaWRlbnRpZmllckNvbnN0cnVjdG9yIGNhbid0IGJlIGFuIGFzeW5jIGZ1bmN0aW9uQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBub24tc3RhdGljIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvcidDbGFzc2VzIGNhbid0IGhhdmUgYSBwcml2YXRlIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InLkNsYXNzIGNvbnN0cnVjdG9yIGNhbid0IGJlIGFuIGFjY2Vzc29yLkEgbWV0aG9kIGNhbm5vdCBiZSByZWFkb25seUEgY29uc3RydWN0b3IgY2Fubm90IGJlIGdlbmVyYXRvckEgY2xhc3MgY2FuIG9ubHkgaGF2ZSBvbmUgY29uc3RydWN0b3JBIGJpbmRpbmcgcGF0dGVybiBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsIGluIGFuIGltcGxlbWVudGF0aW9uIHNpZ25hdHVyZS5TdXBlciBjYWxsIGNhbm5vdCBiZSBvcHRpb25hbENvbnN0cnVjdG9yIGluL2FmdGVyIGFuIG9wdGlvbmFsIGNoYWluaW5nIGlzIG5vdCBhbGxvd2VkLlRhZ2dlZCB0ZW1wbGF0ZSBsaXRlcmFsIGlzIG5vdCBhbGxvd2VkIGluIG9wdGlvbmFsIGNoYWluLlRyYWlsaW5nIGNvbW1hIGlzIGRpc2FsbG93ZWQgaW5zaWRlIGltcG9ydCguLi4pIGFyZ3VtZW50c2BpbXBvcnQoKWAgcmVxdWlyZXMgZXhhY3RseSBvbmUgb3IgdHdvIGFyZ3VtZW50c2V4cG9ydCBkZWZhdWx0IHN0YXRlbWVudHMgcmVxdWlyZWQgZnJvbSAnLi4uJztgLi4uYCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIgaW4gZGVjbGFyYXRpb24gY29udGV4dHNBIG51bWVyaWMgc2VwYXJhdG9yIGlzIG9ubHkgYWxsb3dlZCBiZXR3ZWVuIHR3byBkaWdpdHNBIHN0cmluZyBsaXRlcmFsIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGV4cG9ydGVkIGJpbmRpbmcgd2l0aG91dCBgZnJvbWAuJ2NvbnN0JyBkZWNsYXJhdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZFVua25vd24gcmVndWxhciBleHByZXNzaW9uIGZsYWdzLkV4cGVjdGVkIGFuIGlkZW50aWZpZXJFeHBlY3RlZCBhIHNlbWljb2xvblRyYWlsaW5nIGNvbW1hIGlzIG5vdCBhbGxvd2VkQSByZXN0IHBhcmFtZXRlciBtdXN0IGJlIGxhc3QgaW4gYSBwYXJhbWV0ZXIgbGlzdFBhcmFtZXRlciBjYW5ub3QgaGF2ZSBxdWVzdGlvbiBtYXJrIGFuZCBpbml0aWFsaXplcmBkZWNsYXJlYCBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGNsYXNzIGVsZW1lbnRzIG9mIHRoaXMga2luZGBkZWNsYXJlYCBtb2RpZmllciBub3QgYWxsb3dlZCBmb3IgY29kZSBhbHJlYWR5IGluIGFuIGFtYmllbnQgY29udGV4dGBhc3luY2AgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZUEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplcmpzYy50YXJnZXQgc2hvdWxkIGJlIGVzNSBvciB1cHBlciB0byB1c2UgZ2V0dGVyIC8gc2V0dGVyTGVnYWN5IG9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYXZhaWxhYmxlIHdoZW4gdGFyZ2V0aW5nIEVDTUFTY3JpcHQgNSBhbmQgaGlnaGVyVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbkFuIGluZGV4IHNpZ25hdHVyZSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcGFyYW1ldGVyVHlwZSBwYXJhbWV0ZXIgbGlzdCBjYW5ub3QgYmUgZW1wdHlJbnZhbGlkIHVzZSBvZiAnYXJndW1lbnRzJyBpbiBzdHJpY3QgbW9kZSdkZWxldGUnIGNhbm5vdCBiZSBjYWxsZWQgb24gYW4gaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZUEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50VGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgYGZvci4uLm9mYCBzdGF0ZW1lbnQgbWF5IG5vdCBiZSBgYXN5bmNgSnVtcCB0YXJnZXQgY2Fubm90IGNyb3NzIGZ1bmN0aW9uIGJvdW5kYXJ5RXhwcmVzc2lvbiBleHBlY3RlZHR5cGUgZXhwZWN0ZWREdXBsaWNhdGUgbGFiZWxBICdjb250aW51ZScgc3RhdGVtZW50IGNhbiBvbmx5IGp1bXAgdG8gYSBsYWJlbCBvZiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudEEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkganVtcCB0byBhIGxhYmVsIG9mIGFuIGVuY2xvc2luZyBzdGF0ZW1lbnRWYXJpYWJsZSBkZWNsYXJhdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eWxpdGVyYWwgaW4gYW4gaW1wb3J0IHR5cGUgc2hvdWxkIGJlIHN0cmluZyBsaXRlcmFsQW4gb2JqZWN0IG1lbWJlciBjYW5ub3QgYmUgZGVjbGFyZWQgb3B0aW9uYWxDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gZW51bXNBIGNvbW1hIGV4cHJlc3Npb24gaXMgbm90IGFsbG93ZWQgaW4gYSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lYGV4dGVuZHNgIGNsYXVzZSBhbHJlYWR5IHNlZW4uJ2V4dGVuZHMnIGNsYXVzZSBtdXN0IHByZWNlZGUgJ2ltcGxlbWVudHMnIGNsYXVzZS5DbGFzc2VzIGNhbiBvbmx5IGV4dGVuZCBhIHNpbmdsZSBjbGFzc2BpbXBsZW1lbnRzYCBjbGF1c2UgYWxyZWFkeSBzZWVuQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHNNb2RpZmllcnMgY2Fubm90IGFwcGVhciBoZXJlTWVyZ2UgY29uZmxpY3QgbWFya2VyIGVuY291bnRlcmVkLlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb25DYXRjaCBjbGF1c2UgdmFyaWFibGUgY2Fubm90IGhhdmUgYSB0eXBlIGFubm90YXRpb25gYWJzdHJhY3RgIG1vZGlmaWVyIGNhbiBvbmx5IGFwcGVhciBvbiBhIGNsYXNzIG9yIG1ldGhvZCBkZWNsYXJhdGlvbkFic3RyYWN0IG1ldGhvZHMgY2FuIG9ubHkgYXBwZWFyIHdpdGhpbiBhbiBhYnN0cmFjdCBjbGFzcy5BYnN0cmFjdCBtZXRob2QgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24uQWJzdHJhY3QgcHJvcGVydHkgY2Fubm90IGhhdmUgYW4gaW5pdGlhbGl6ZXIuVGhlICd0eXBlJyBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCBvbiBhIG5hbWVkIGltcG9ydCB3aGVuICdpbXBvcnQgdHlwZScgaXMgdXNlZCBvbiBpdHMgaW1wb3J0IHN0YXRlbWVudC5UaGUgJ3R5cGUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgbmFtZWQgZXhwb3J0IHdoZW4gJ2V4cG9ydCB0eXBlJyBpcyB1c2VkIG9uIGl0cyBleHBvcnQgc3RhdGVtZW50LkEgcGFyYW1ldGVyIHByb3BlcnR5IGlzIG9ubHkgYWxsb3dlZCBpbiBhIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uQSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZXIgaXMgb25seSBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25UaGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBleHByZXNzaW9uIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5UaGUgJ3dpdGgnIHN0YXRlbWVudCBpcyBub3Qgc3VwcG9ydGVkLiBBbGwgc3ltYm9scyBpbiBhICd3aXRoJyBibG9jayB3aWxsIGhhdmUgdHlwZSAnYW55Jy5JbnZhbGlkIGNsYXNzIG5hbWVpbnRlcmZhY2UgbmFtZSBpcyBpbnZhbGlkQW4gZW51bSBtZW1iZXIgY2Fubm90IGhhdmUgYSBudW1lcmljIG5hbWVUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSAnZm9yLi4ub2YnIHN0YXRlbWVudCBjYW5ub3QgdXNlIGEgdHlwZSBhbm5vdGF0aW9uVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgJ2Zvci4uLmluJyBzdGF0ZW1lbnQgY2Fubm90IGJlIGEgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuQW4gaW50ZXJmYWNlIGNhbiBvbmx5IGV4dGVuZCBhbiBpZGVudGlmaWVyL3F1YWxpZmllZC1uYW1lIHdpdGggb3B0aW9uYWwgdHlwZSBhcmd1bWVudHMuVGhlIG9wZXJhbmQgb2YgYSBkZWxldGUgb3BlcmF0b3IgbXVzdCBiZSBhIHByb3BlcnR5IHJlZmVyZW5jZS5UaGlzIG1lbWJlciBjYW5ub3QgaGF2ZSBhbiAnb3ZlcnJpZGUnIG1vZGlmaWVyIGJlY2F1c2UgaXRzIGNvbnRhaW5pbmcgY2xhc3MgZG9lcyBub3QgZXh0ZW5kIGFub3RoZXIgY2xhc3MuRGVjb3JhdG9ycyBtYXkgbm90IGFwcGVhciBhZnRlciBgZXhwb3J0YCBvciBgZXhwb3J0IGRlZmF1bHRgIGlmIHRoZXkgYWxzbyBhcHBlYXIgYmVmb3JlIGBleHBvcnRgLkFuIGFjY2Vzc2liaWxpdHkgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgd2l0aCBhIHByaXZhdGUgaWRlbnRpZmllci5UeXBlIGFubm90YXRpb25zIG11c3QgY29tZSBiZWZvcmUgZGVmYXVsdCBhc3NpZ25tZW50c1RoaXMgc3ludGF4IGlzIHJlc2VydmVkIGluIGZpbGVzIHdpdGggdGhlIC5tdHMgb3IgLmN0cyBleHRlbnNpb24uIFVzZSBhbiBgYXNgIGV4cHJlc3Npb24gaW5zdGVhZC5UaGlzIHN5bnRheCBpcyByZXNlcnZlZCBpbiBmaWxlcyB3aXRoIHRoZSAubXRzIG9yIC5jdHMgZXh0ZW5zaW9uLiBBZGQgYSB0cmFpbGluZyBjb21tYSwgYXMgaW4gYDxULD4oKSA9PiAuLi5gLlR5cGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZW1wdHkuVGhpcyBpcyB0aGUgZXhwcmVzc2lvbiBwYXJ0IG9mIGFuIGV4cHJlc3Npb24gc3RhdGVtZW50cHJldmlvdXMgZGVmYXVsdCBjYXNlIGlzIGRlY2xhcmVkIGF0IGhlcmUAAAC0RCAAJwAAAE4CAAAeAAAAtEQgACcAAAD3CAAAIAAAALREIAAnAAAAPAkAACYAAAC0RCAAJwAAAHsFAAAlAAAAtEQgACcAAAB8BQAANQAAADIgaGV4IGNoYXJhY3RlcnO0RCAAJwAAAO0GAAA5AAAAtEQgACcAAAD+AgAAJgAAALREIAAnAAAAZwMAACoAAAA0IGhleCBjaGFyYWN0ZXJzMS02IGhleCBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSAwIHRvIDEwRkZGRi4xLTYgaGV4IGNoYXJhY3RlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAALREIAAnAAAAOgUAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAJcdcMgAABpBAAAYHsnPid9YGAmZ3Q7YGB7J30nfWBgJnJicmFjZTtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALwUAADAFAAAvBQAALwUAADAFAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAvBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAxBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAuBQAALgUAAC4FAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAADIFAAAyBQAAMgUAAGx0YWxwaGFudXBpendqbGVzdWIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAAMwUAADMFAAAzBQAANAUAADUFAAA2BQAANwUAADgFAAA5BQAANQUAADoFAAA7BQAAPAUAAD0FAAA+BQAAPwUAAEAFAABBBQAAQgUAAEMFAABDBQAAQwUAAEMFAABDBQAAQwUAAEMFAABDBQAAQwUAAEQFAABFBQAARgUAAEcFAABIBQAASQUAAEoFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAADcFAAA3BQAANwUAAEsFAAA3BQAATAUAAE0FAAA3BQAATgUAAE8FAABQBQAAUQUAAFIFAABTBQAAVAUAAFUFAAA3BQAAVgUAADcFAABXBQAAWAUAAFkFAABaBQAAWwUAAFwFAAA3BQAAXQUAAF4FAABfBQAAYAUAAGEFAABiBQAANwUAAGMFAAA3BQAAZAUAAGUFAABmBQAAZwUAADMFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAGgFAABoBQAAaAUAAAAAAAABAAAAAQAAAGkFAACwKCAAKgAAAEYAAAAjAAAAsCggACoAAABcAAAAGgAAALAoIAAqAAAAWgAAABoAAACwKCAAKgAAADoAAAAkAAAAsCggACoAAABSAAAAIwAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFVzaW5nIGlzIG5vdCBhIHZhbGlkIGRlY2xhcmF0aW9uIGZvciBgZGVjbGFyZWAga2V5d29yZHARIAAvAAAAPwAAABwAAAC7HiAAUAAAABoIAAAJAAAAZmFpbGVkIHRvIHBhcnNlIG51bWJlciBhcyBjaGFyAAC0RCAAJwAAAF0FAAAOAAAAZmFpbGVkIHRvIHBhcnNlIHN0cmluZyBhcyBudW1iZXK0RCAAJwAAAFsFAAAvAAAAbWVzc2FnZRJlbmNvZGVfdXRmODogbmVlZCDAEyBieXRlcyB0byBlbmNvZGUgVSvDIAAAaQQAFSBidXQgYnVmZmVyIGhhcyBqdXN0IMAAAAA7OSAAKQAAAAsBAAArAAAAOzkgACkAAAA5AQAADQAAADxzdHJpbmcgbGl0ZXJhbD48bnVtYmVyIGxpdGVyYWw+PGJpZ2ludCBsaXRlcmFsPjxyZWdleHAgbGl0ZXJhbD48dGVtcGxhdGUgbGl0ZXJhbD48dGVtcGxhdGUgaGVhZCBgLi4uJHsgPjx0ZW1wbGF0ZSBtaWRkbGUgLi4uJHsgPjx0ZW1wbGF0ZSB0YWlsIGAgPjxqc3ggbmFtZT48anN4IHRleHQ+PGlkZW50aWZpZXI+PGVycm9yPnN0cnVjdCBUc1N5bnRheAAAAG8FAAAQAAAACAAAAHAFAABxBQAABAAAAAQAAAByBQAAAAAAAAEAAAABAAAAcwUAAAAAAAABAAAAAQAAAFQBAAAAAAAAAQAAAAEAAAB0BQAAAAAAAAQAAAAEAAAAogEAAHUFAAAYAAAACAAAALQBAAB2BQAADAAAAAQAAAAVAgAAdwUAAAQAAAAEAAAAtQEAAAAAAAAEAAAABAAAABYCAAB4BQAABAAAAAQAAABvAQAAeQUAAAQAAAAEAAAAJgEAAHoFAAAEAAAABAAAAPwBAAB7BQAAIAAAAAgAAACzAQAAfAUAAAwAAAAEAAAAfQUAAH4FAAAYAAAABAAAAH8FAACABQAAIAAAAAgAAACBBQAAggUAAAwAAAAEAAAAOAIAAIMFAAAMAAAABAAAAIQFAACFBQAABAAAAAQAAADmAQAAanN4IHRhZyBzdGFydGpzeCB0YWcgZW5kc3RyaW5nIGxpdGVyYWxudW1lcmljIGxpdGVyYWxiaWdpbnQgbGl0ZXJhbHJlZ2V4cCBsaXRlcmFsdGVtcGxhdGUgdG9rZW5ubyBzdWJzdGl0dXRpb24gdGVtcGxhdGUgbGl0ZXJhbHRlbXBsYXRlIGhlYWR0ZW1wbGF0ZSBtaWRkbGV0ZW1wbGF0ZSB0YWlsanN4IG5hbWVqc3ggdGV4dGluc3RhbmNlT2Z0eXBlT2Y8bGV4aW5nIGVycm9yPjxlb2Y+UGFyc2VGbG9hdEVycm9yAACGBQAABAAAAAQAAABsAQAAV29yZFRlbXBsYXRlSnN4VGV4dACHBQAADAAAAAQAAACIBQAAiQUAAAQAAAAEAAAAigUAAEVvZkRlY2xOb3RBbGxvd2VkVXNpbmdEZWNsTm90QWxsb3dlZFVzaW5nRGVjbE5vdEFsbG93ZWRGb3JGb3JJbkxvb3BVc2luZ0RlY2xOb3RFbmFibGVkSW52YWxpZE5hbWVJblVzaW5nRGVjbEluaXRSZXF1aXJlZEZvclVzaW5nRGVjbFByaXZhdGVOYW1lSW5JbnRlcmZhY2VJbnZhbGlkU3VwZXJDYWxsSW52YWxpZFN1cGVySW52YWxpZFN1cGVyUHJpdmF0ZU5hbWVJbnZhbGlkTmV3VGFyZ2V0SW52YWxpZEltcG9ydEFycm93Tm90QWxsb3dlZEV4cG9ydE5vdEFsbG93ZWRHZXR0ZXJTZXR0ZXJDYW5ub3RCZVJlYWRvbmx5R2V0dGVyU2V0dGVyQ2Fubm90QmVPcHRpb25hbEdldHRlclBhcmFtU2V0dGVyUGFyYW1Ub3BMZXZlbEF3YWl0SW5TY3JpcHRMZWdhY3lEZWNpbWFsTGVnYWN5T2N0YWxJbnZhbGlkSWRlbnRDaGFyRXhwZWN0ZWREaWdpdHJhZGl4U2V0dGVyUGFyYW1SZXF1aXJlZFJlc3RQYXRJblNldHRlclVudGVybWluYXRlZEJsb2NrQ29tbWVudFVudGVybWluYXRlZFN0ckxpdEV4cGVjdGVkVW5pY29kZUVzY2FwZUVzY2FwZUluUmVzZXJ2ZWRXb3Jkd29yZFVudGVybWluYXRlZFJlZ0V4cFVudGVybWluYXRlZFRwbElkZW50QWZ0ZXJOdW1VbmV4cGVjdGVkQ2hhckludmFsaWRTdHJFc2NhcGVJbnZhbGlkVW5pY29kZUVzY2FwZUJhZENoYXJhY3RlckVzY2FwZVNlcXVlbmNlZXhwZWN0ZWROdW1MaXRUZXJtaW5hdGVkV2l0aEV4cExlZ2FjeUNvbW1lbnRJbk1vZHVsZUludmFsaWRJZGVudEluU3RyaWN0SW52YWxpZElkZW50SW5Bc3luY0V2YWxBbmRBcmd1bWVudHNJblN0cmljdEFyZ3VtZW50c0luQ2xhc3NGaWVsZElsbGVnYWxMYW5ndWFnZU1vZGVEaXJlY3RpdmVVbmFyeUluRXhwbGVmdF9zcGFuSGFzaExpbmVCcmVha0luVGhyb3dMaW5lQnJlYWtCZWZvcmVBcnJvd1VuZXhwZWN0ZWRnb3RVbmV4cGVjdGVkVG9rZW5XaXRoU3VnZ2VzdGlvbnNjYW5kaWRhdGVfbGlzdFJlc2VydmVkV29yZEluSW1wb3J0QXNzaWduUHJvcGVydHlFeHBlY3RlZEV4cGVjdGVkU2VtaUZvckV4cHJTdG10QXdhaXRTdGFyUmVzZXJ2ZWRXb3JkSW5PYmpTaG9ydGhhbmRPclBhdE51bGxpc2hDb2FsZXNjaW5nV2l0aExvZ2ljYWxPcE11bHRpcGxlRGVmYXVsdHByZXZpb3VzQ29tbWFBZnRlclJlc3RFbGVtZW50Tm9uTGFzdFJlc3RQYXJhbVNwcmVhZEluUGFyZW5FeHByRW1wdHlQYXJlbkV4cHJJbnZhbGlkUGF0SW52YWxpZEV4cHJOb3RTaW1wbGVBc3NpZ25JbnZhbGlkQXNzaWduVGFyZ2V0RXhwZWN0ZWRJZGVudEV4cGVjdGVkU2VtaUR1cGxpY2F0ZUxhYmVsQXN5bmNHZW5lcmF0b3JOb25Ub3BMZXZlbEltcG9ydEV4cG9ydEltcG9ydEV4cG9ydEluU2NyaXB0SW1wb3J0TWV0YUluU2NyaXB0UGF0VmFyV2l0aG91dEluaXRXaXRoSW5TdHJpY3RSZXR1cm5Ob3RBbGxvd2VkVG9vTWFueVZhckluRm9ySW5IZWFkVmFySW5pdGlhbGl6ZXJJbkZvckluSGVhZExhYmVsbGVkR2VuZXJhdG9yT3JBc3luY0xhYmVsbGVkRnVuY3Rpb25JblN0cmljdFlpZWxkUGFyYW1JbkdlbkF3YWl0UGFyYW1JbkFzeW5jQXdhaXRGb3JTdG10QXdhaXRJbkZ1bmN0aW9uVW50ZXJtaW5hdGVkSlNYQ29udGVudHNFbXB0eUpTWEF0dHJJbnZhbGlkSlNYVmFsdWVKU1hFeHBlY3RlZENsb3NpbmdUYWdGb3JMdEd0SlNYRXhwZWN0ZWRDbG9zaW5nVGFnSW52YWxpZExlYWRpbmdEZWNvcmF0b3JEZWNvcmF0b3JPbkV4cG9ydFRzUmVxdWlyZWRBZnRlck9wdGlvbmFsVHNJbnZhbGlkUGFyYW1Qcm9wUGF0U3BhY2VCZXR3ZWVuSGFzaEFuZElkZW50QXN5bmNDb25zdHJ1Y3RvclByb3BlcnR5TmFtZWRDb25zdHJ1Y3RvclByaXZhdGVDb25zdHJ1Y3RvclByaXZhdGVOYW1lTW9kaWZpZXJDb25zdHJ1Y3RvckFjY2Vzc29yUmVhZE9ubHlNZXRob2RHZW5lcmF0b3JDb25zdHJ1Y3RvckR1cGxpY2F0ZUNvbnN0cnVjdG9yVHNCaW5kaW5nUGF0Q2Fubm90QmVPcHRpb25hbFN1cGVyQ2FsbE9wdGlvbmFsT3B0Q2hhaW5DYW5ub3RGb2xsb3dDb25zdHJ1Y3RvckNhbGxUYWdnZWRUcGxJbk9wdENoYWluVHJhaWxpbmdDb21tYUluc2lkZUltcG9ydEltcG9ydFJlcXVpcmVzT25lT3JUd29BcmdzRXhwb3J0RGVmYXVsdFdpdGhPdXRGcm9tRXhwb3J0RXhwZWN0RnJvbURvdHNXaXRob3V0SWRlbnRpZmllck51bWVyaWNTZXBhcmF0b3JJc0FsbG93ZWRPbmx5QmV0d2VlblR3b0RpZ2l0c0ltcG9ydEJpbmRpbmdJc1N0cmluZ0V4cG9ydEJpbmRpbmdJc1N0cmluZ0NvbnN0RGVjbGFyYXRpb25zUmVxdWlyZUluaXRpYWxpemF0aW9uRHVwbGljYXRlZFJlZ0V4cEZsYWdzVW5rbm93blJlZ0V4cEZsYWdzVFMxMDAzVFMxMDA1VFMxMDA5VFMxMDE0VFMxMDE1VFMxMDI5VFMxMDMwVFMxMDMxVFMxMDM4VFMxMDQyVFMxMDQ3VFMxMDQ4VFMxMDU2VFMxMDg1VFMxMDg5VFMxMDkyVFMxMDk2VFMxMDk4VFMxMTAwVFMxMTAyVFMxMTA1VFMxMTA2VFMxMTA3VFMxMTA5VFMxMTEwVFMxMTE0VFMxMTE1VFMxMTE2VFMxMTIzVFMxMTQxVFMxMTYyVFMxMTY0VFMxMTcxVFMxMTcyVFMxMTczVFMxMTc0VFMxMTc1VFMxMTgzVFMxMTg0VFMxMTg1VFMxMDkzVFMxMTk2VFMxMjQyVFMxMjQzVFMxMjQ0VFMxMjQ1VFMxMjY3VFMxMjczVFMxMjc0VFMxMjc3VFMyMjA2VFMyMjA3VFMyMzY5VFMyMzcxVFMyNDA2VFMyNDEwVFMyNDE0VFMyNDI3VFMyNDUyVFMyNDgzVFMyNDkxVFMyNDk5VFMyNzAzVFM0MTEyVFM4MDM4VFMxODAxMFRTVHlwZUFubm90YXRpb25BZnRlckFzc2lnblRzTm9uTnVsbEFzc2VydGlvbk5vdEFsbG93ZWRXaXRoTGFiZWxpbm5lcm5vdGVSZXNlcnZlZFR5cGVBc3NlcnRpb25SZXNlcnZlZEFycm93VHlwZVBhcmFtRW1wdHlUeXBlQXJndW1lbnRMaXN0iwUAAAwAAAAEAAAAjAUAAAAAAAAEAAAABAAAAI0FAAAAAAAAAQAAAAEAAACOBQAAjwUAADAAAAAIAAAAkAUAAJEFAAAEAAAABAAAAJIFAAAAAAAABAAAAAQAAACTBQAAAAAAAAQAAAAEAAAAVwIAAJQFAAAMAAAABAAAAJUFAAAAAAAABAAAAAQAAACWBQAAlwUAACAAAAAIAAAABgIAAAAAAAAEAAAABAAAAJgFAAAAAAAABAAAAAQAAACZBQAAmgUAAAwAAAAEAAAAmwUAAJwFAAAEAAAABAAAAJ0FAABQYXJzZUludEVycm9yT2tFcnJhc3NlcnRpb24gZmFpbGVkOiBpbmRpY2VzLmNhcGFjaXR5KCkgLSBpbmRpY2VzLmxlbigpID49IGVudHJpZXMubGVuKCkAbTsgAGQAAABUAAAABQAAAG07IABkAAAAOwAAACMAAABtOyAAZAAAAFYAAABEAAAAbTsgAGQAAAAzAAAADwAAAA89IAArAAAA0QEAADYAAAD1QiAAMgAAAPsAAAABAAAAX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY29yYXRlZF9kZXNjcmlwdG9yX2FycmF5X2xpa2VfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fYXJyYXlfbGlrZV90b19hcnJheV9hcnJheV93aXRoX2hvbGVzQHN3Yy9oZWxwZXJzL18vX2FycmF5X3dpdGhfaG9sZXNfYXJyYXlfd2l0aG91dF9ob2xlc0Bzd2MvaGVscGVycy9fL19hcnJheV93aXRob3V0X2hvbGVzX2Fzc2VydF90aGlzX2luaXRpYWxpemVkQHN3Yy9oZWxwZXJzL18vX2Fzc2VydF90aGlzX2luaXRpYWxpemVkX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19nZW5lcmF0b3JfYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlQHN3Yy9oZWxwZXJzL18vX2FzeW5jX2dlbmVyYXRvcl9kZWxlZ2F0ZV9hc3luY19pdGVyYXRvckBzd2MvaGVscGVycy9fL19hc3luY19pdGVyYXRvcl9hc3luY190b19nZW5lcmF0b3JAc3djL2hlbHBlcnMvXy9fYXN5bmNfdG9fZ2VuZXJhdG9yX2F3YWl0X2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL19hd2FpdF9hc3luY19nZW5lcmF0b3JfYXdhaXRfdmFsdWVAc3djL2hlbHBlcnMvXy9fYXdhaXRfdmFsdWVfY2FsbF9zdXBlckBzd2MvaGVscGVycy9fL19jYWxsX3N1cGVyX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbkBzd2MvaGVscGVycy9fL19jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25fY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9kZXN0cnVjdHVyZUBzd2MvaGVscGVycy9fL19jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3Jfc2V0X2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlX2NsYXNzX2NhbGxfY2hlY2tAc3djL2hlbHBlcnMvXy9fY2xhc3NfY2FsbF9jaGVja19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yQHN3Yy9oZWxwZXJzL18vX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcl9jbGFzc19uYW1lX3Rkel9lcnJvckBzd2MvaGVscGVycy9fL19jbGFzc19uYW1lX3Rkel9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2dldF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0X2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZUBzd2MvaGVscGVycy9fL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2VfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXlfY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF9zZXRfY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3NfcHJpdmF0ZV9maWVsZF91cGRhdGVfY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2dldF9jbGFzc19wcml2YXRlX21ldGhvZF9pbml0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX2luaXRfY2xhc3NfcHJpdmF0ZV9tZXRob2Rfc2V0QHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfbWV0aG9kX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX2dldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9zcGVjX3NldF9jbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfdXBkYXRlX2NvbnN0cnVjdEBzd2MvaGVscGVycy9fL19jb25zdHJ1Y3RfY3JlYXRlX2NsYXNzQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9jbGFzc19kZWNvcmF0ZUBzd2MvaGVscGVycy9fL19kZWNvcmF0ZV9kZWZhdWx0c0Bzd2MvaGVscGVycy9fL19kZWZhdWx0c19kZWZpbmVfZW51bWVyYWJsZV9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX2RlZmluZV9lbnVtZXJhYmxlX3Byb3BlcnRpZXNfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2RlZmluZV9wcm9wZXJ0eV9leHBvcnRfc3RhckBzd2MvaGVscGVycy9fL19leHBvcnRfc3Rhcl9leHRlbmRzQHN3Yy9oZWxwZXJzL18vX2V4dGVuZHNfZ2V0QHN3Yy9oZWxwZXJzL18vX2dldF9nZXRfcHJvdG90eXBlX29mQHN3Yy9oZWxwZXJzL18vX2dldF9wcm90b3R5cGVfb2ZfaW5oZXJpdHNAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfaW5oZXJpdHNfbG9vc2VAc3djL2hlbHBlcnMvXy9faW5oZXJpdHNfbG9vc2VfaW5pdGlhbGl6ZXJfZGVmaW5lX3Byb3BlcnR5QHN3Yy9oZWxwZXJzL18vX2luaXRpYWxpemVyX2RlZmluZV9wcm9wZXJ0eV9pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlckBzd2MvaGVscGVycy9fL19pbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcl9pbnN0YW5jZW9mQHN3Yy9oZWxwZXJzL18vX2luc3RhbmNlb2ZfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZF9pc19uYXRpdmVfZnVuY3Rpb25Ac3djL2hlbHBlcnMvXy9faXNfbmF0aXZlX2Z1bmN0aW9uX2l0ZXJhYmxlX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0QHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlQHN3Yy9oZWxwZXJzL18vX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlX2pzeEBzd2MvaGVscGVycy9fL19qc3hfbmV3X2Fycm93X2NoZWNrQHN3Yy9oZWxwZXJzL18vX25ld19hcnJvd19jaGVja19ub25faXRlcmFibGVfcmVzdEBzd2MvaGVscGVycy9fL19ub25faXRlcmFibGVfcmVzdF9ub25faXRlcmFibGVfc3ByZWFkQHN3Yy9oZWxwZXJzL18vX25vbl9pdGVyYWJsZV9zcHJlYWRfb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlAc3djL2hlbHBlcnMvXy9fb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlfb2JqZWN0X3NwcmVhZEBzd2MvaGVscGVycy9fL19vYmplY3Rfc3ByZWFkX29iamVjdF9zcHJlYWRfcHJvcHNAc3djL2hlbHBlcnMvXy9fb2JqZWN0X3NwcmVhZF9wcm9wc19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzQHN3Yy9oZWxwZXJzL18vX29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNfb2JqZWN0X3dpdGhvdXRfcHJvcGVydGllc19sb29zZUBzd2MvaGVscGVycy9fL19vYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3NlX292ZXJsb2FkX3lpZWxkQHN3Yy9oZWxwZXJzL18vX292ZXJsb2FkX3lpZWxkX3Bvc3NpYmxlX2NvbnN0cnVjdG9yX3JldHVybkBzd2MvaGVscGVycy9fL19wb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5fcmVhZF9vbmx5X2Vycm9yQHN3Yy9oZWxwZXJzL18vX3JlYWRfb25seV9lcnJvcl9zZXRAc3djL2hlbHBlcnMvXy9fc2V0X3NldF9wcm90b3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fc2V0X3Byb3RvdHlwZV9vZl9za2lwX2ZpcnN0X2dlbmVyYXRvcl9uZXh0QHN3Yy9oZWxwZXJzL18vX3NraXBfZmlyc3RfZ2VuZXJhdG9yX25leHRfc2xpY2VkX3RvX2FycmF5QHN3Yy9oZWxwZXJzL18vX3NsaWNlZF90b19hcnJheV9zbGljZWRfdG9fYXJyYXlfbG9vc2VAc3djL2hlbHBlcnMvXy9fc2xpY2VkX3RvX2FycmF5X2xvb3NlX3N1cGVyX3Byb3BfYmFzZUBzd2MvaGVscGVycy9fL19zdXBlcl9wcm9wX2Jhc2VfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VAc3djL2hlbHBlcnMvXy9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2VfdGhyb3dAc3djL2hlbHBlcnMvXy9fdGhyb3dfdG9fYXJyYXlAc3djL2hlbHBlcnMvXy9fdG9fYXJyYXlfdG9fY29uc3VtYWJsZV9hcnJheUBzd2MvaGVscGVycy9fL190b19jb25zdW1hYmxlX2FycmF5X3RvX3ByaW1pdGl2ZUBzd2MvaGVscGVycy9fL190b19wcmltaXRpdmVfdG9fcHJvcGVydHlfa2V5QHN3Yy9oZWxwZXJzL18vX3RvX3Byb3BlcnR5X2tleV91cGRhdGVAc3djL2hlbHBlcnMvXy9fdXBkYXRlX3R5cGVfb2ZAc3djL2hlbHBlcnMvXy9fdHlwZV9vZl91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheUBzd2MvaGVscGVycy9fL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheV93cmFwX2FzeW5jX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL193cmFwX2FzeW5jX2dlbmVyYXRvcl93cmFwX25hdGl2ZV9zdXBlckBzd2MvaGVscGVycy9fL193cmFwX25hdGl2ZV9zdXBlcl93cmFwX3JlZ19leHBAc3djL2hlbHBlcnMvXy9fd3JhcF9yZWdfZXhwX3dyaXRlX29ubHlfZXJyb3JAc3djL2hlbHBlcnMvXy9fd3JpdGVfb25seV9lcnJvcl9jbGFzc19wcml2YXRlX2ZpZWxkX2Rlc3RydWN0dXJlQHN3Yy9oZWxwZXJzL18vX2NsYXNzX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVfY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVAc3djL2hlbHBlcnMvXy9fY2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVfY2xhc3Nfc3RhdGljX3ByaXZhdGVfbWV0aG9kX2dldEBzd2MvaGVscGVycy9fL19jbGFzc19zdGF0aWNfcHJpdmF0ZV9tZXRob2RfZ2V0X2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2FjY2Vzc0Bzd2MvaGVscGVycy9fL19jbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3NfaXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0QHN3Yy9oZWxwZXJzL18vX2lzX25hdGl2ZV9yZWZsZWN0X2NvbnN0cnVjdF9jcmVhdGVfc3VwZXJAc3djL2hlbHBlcnMvXy9fY3JlYXRlX3N1cGVyX2NyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NlQHN3Yy9oZWxwZXJzL18vX2NyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NlX3RzX2RlY29yYXRlQHN3Yy9oZWxwZXJzL18vX3RzX2RlY29yYXRlX3RzX2dlbmVyYXRvckBzd2MvaGVscGVycy9fL190c19nZW5lcmF0b3JfdHNfbWV0YWRhdGFAc3djL2hlbHBlcnMvXy9fdHNfbWV0YWRhdGFfdHNfcGFyYW1Ac3djL2hlbHBlcnMvXy9fdHNfcGFyYW1fdHNfdmFsdWVzQHN3Yy9oZWxwZXJzL18vX3RzX3ZhbHVlc190c19hZGRfZGlzcG9zYWJsZV9yZXNvdXJjZUBzd2MvaGVscGVycy9fL190c19hZGRfZGlzcG9zYWJsZV9yZXNvdXJjZV90c19kaXNwb3NlX3Jlc291cmNlc0Bzd2MvaGVscGVycy9fL190c19kaXNwb3NlX3Jlc291cmNlc190c19yZXdyaXRlX3JlbGF0aXZlX2ltcG9ydF9leHRlbnNpb25Ac3djL2hlbHBlcnMvXy9fdHNfcmV3cml0ZV9yZWxhdGl2ZV9pbXBvcnRfZXh0ZW5zaW9uX2FwcGx5X2RlY3NfMjIwM19yQHN3Yy9oZWxwZXJzL18vX2FwcGx5X2RlY3NfMjIwM19yX2FwcGx5X2RlY3NfMjMxMUBzd2MvaGVscGVycy9fL19hcHBseV9kZWNzXzIzMTFfaWRlbnRpdHlAc3djL2hlbHBlcnMvXy9faWRlbnRpdHlfZGlzcG9zZUBzd2MvaGVscGVycy9fL19kaXNwb3NlX3VzaW5nQHN3Yy9oZWxwZXJzL18vX3VzaW5nX3VzaW5nX2N0eEBzd2MvaGVscGVycy9fL191c2luZ19jdHhhcHBseV9kZWNvcmF0ZWRfZGVzY3JpcHRvcmFycmF5X2xpa2VfdG9fYXJyYXlhcnJheV93aXRoX2hvbGVzYXJyYXlfd2l0aG91dF9ob2xlc2Fzc2VydF90aGlzX2luaXRpYWxpemVkYXN5bmNfZ2VuZXJhdG9yYXN5bmNfZ2VuZXJhdG9yX2RlbGVnYXRlYXN5bmNfaXRlcmF0b3Jhc3luY190b19nZW5lcmF0b3Jhd2FpdF9hc3luY19nZW5lcmF0b3Jhd2FpdF92YWx1ZWNhbGxfc3VwZXJjaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb25jbGFzc19hcHBseV9kZXNjcmlwdG9yX2Rlc3RydWN0dXJlY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXRjbGFzc19hcHBseV9kZXNjcmlwdG9yX3NldGNsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfdXBkYXRlY2xhc3NfY2FsbF9jaGVja2NsYXNzX2NoZWNrX3ByaXZhdGVfc3RhdGljX2ZpZWxkX2Rlc2NyaXB0b3JjbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3JjbGFzc19uYW1lX3Rkel9lcnJvcmNsYXNzX3ByaXZhdGVfZmllbGRfZ2V0Y2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0Y2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXljbGFzc19wcml2YXRlX2ZpZWxkX3NldGNsYXNzX3ByaXZhdGVfZmllbGRfdXBkYXRlY2xhc3NfcHJpdmF0ZV9tZXRob2RfZ2V0Y2xhc3NfcHJpdmF0ZV9tZXRob2RfaW5pdGNsYXNzX3ByaXZhdGVfbWV0aG9kX3NldGNsYXNzX3N0YXRpY19wcml2YXRlX2ZpZWxkX3NwZWNfZ2V0Y2xhc3Nfc3RhdGljX3ByaXZhdGVfZmllbGRfc3BlY19zZXRjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF91cGRhdGVjb25zdHJ1Y3RjcmVhdGVfY2xhc3NkZWNvcmF0ZWRlZmF1bHRzZGVmaW5lX2VudW1lcmFibGVfcHJvcGVydGllc2RlZmluZV9wcm9wZXJ0eWV4cG9ydF9zdGFyZ2V0X3Byb3RvdHlwZV9vZmluaGVyaXRzaW5oZXJpdHNfbG9vc2Vpbml0aWFsaXplcl9kZWZpbmVfcHJvcGVydHlpbml0aWFsaXplcl93YXJuaW5nX2hlbHBlcmludGVyb3BfcmVxdWlyZV9kZWZhdWx0aW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkaXNfbmF0aXZlX2Z1bmN0aW9uaXRlcmFibGVfdG9fYXJyYXlpdGVyYWJsZV90b19hcnJheV9saW1pdGl0ZXJhYmxlX3RvX2FycmF5X2xpbWl0X2xvb3NlanN4bmV3X2Fycm93X2NoZWNrbm9uX2l0ZXJhYmxlX3Jlc3Rub25faXRlcmFibGVfc3ByZWFkb2JqZWN0X2Rlc3RydWN0dXJpbmdfZW1wdHlvYmplY3Rfc3ByZWFkb2JqZWN0X3NwcmVhZF9wcm9wc29iamVjdF93aXRob3V0X3Byb3BlcnRpZXNvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzX2xvb3Nlb3ZlcmxvYWRfeWllbGRwb3NzaWJsZV9jb25zdHJ1Y3Rvcl9yZXR1cm5yZWFkX29ubHlfZXJyb3JzZXRfcHJvdG90eXBlX29mc2tpcF9maXJzdF9nZW5lcmF0b3JfbmV4dHNsaWNlZF90b19hcnJheXNsaWNlZF90b19hcnJheV9sb29zZXN1cGVyX3Byb3BfYmFzZXRhZ2dlZF90ZW1wbGF0ZV9saXRlcmFsdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2V0b19hcnJheXRvX2NvbnN1bWFibGVfYXJyYXl0b19wcmltaXRpdmV0b19wcm9wZXJ0eV9rZXl1cGRhdGV0eXBlX29mdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXl3cmFwX2FzeW5jX2dlbmVyYXRvcndyYXBfbmF0aXZlX3N1cGVyd3JhcF9yZWdfZXhwd3JpdGVfb25seV9lcnJvcmNsYXNzX3ByaXZhdGVfZmllbGRfZGVzdHJ1Y3R1cmVjbGFzc19zdGF0aWNfcHJpdmF0ZV9maWVsZF9kZXN0cnVjdHVyZWNsYXNzX3N0YXRpY19wcml2YXRlX21ldGhvZF9nZXRjbGFzc19jaGVja19wcml2YXRlX3N0YXRpY19hY2Nlc3Npc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3RjcmVhdGVfc3VwZXJjcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZXRzX2RlY29yYXRldHNfZ2VuZXJhdG9ydHNfbWV0YWRhdGF0c19wYXJhbXRzX3ZhbHVlc3RzX2FkZF9kaXNwb3NhYmxlX3Jlc291cmNldHNfZGlzcG9zZV9yZXNvdXJjZXN0c19yZXdyaXRlX3JlbGF0aXZlX2ltcG9ydF9leHRlbnNpb25hcHBseV9kZWNzXzIyMDNfcmFwcGx5X2RlY3NfMjMxMWlkZW50aXR5ZGlzcG9zZXVzaW5nX2N0eGFyZ3VtZW50cwBtOyAAZAAAAKICAAAsAAAAbTsgAGQAAAB6AgAAIgAAAG07IABkAAAAWAEAADgAAABtOyAAZAAAAMgBAAA0AAAAJRggAB4AAAANAAAAFAAAAJ4FAABNYXJrZXIgcHJvdmlkZWQgdG8gcmVzb2x2ZXIgc2hvdWxkIG5vdCBiZSB0aGUgcm9vdCBtYXJrANxEIAAzAAAAhwAAAAUAAABpbmRleCBub3QgZm91bmQAbTsgAGQAAABLAAAACgAAAE51bWJlckZ1bmN0aW9uQmlnSW50AAAAAAgAAAAEAAAA/AAAAFRzUXVhbGlmaWVkTmFtZXNwYW5sZWZ0cmlnaHRvBQAAEAAAAAgAAABwBQAAnwUAAAQAAAAEAAAAoAUAAAAAAAABAAAAAQAAAKEFAAAAAAAAAQAAAAEAAABUAQAAAAAAAAEAAAABAAAAogUAAAAAAAAEAAAABAAAAGIBAABrZXlraW5kaXNfc3RhdGljYWNjZXNzaWJpbGl0eWlzX2Fic3RyYWN0aXNfb3B0aW9uYWxpc19vdmVycmlkZQAAs5EmAAQAAAAgkiYAAwAAAAW3JgAIAAAAI5ImAAQAAAAnkiYACQAAADCSJgANAAAAPZImAAsAAABIkiYACwAAAFOSJgALAAAAUHJpdmF0ZU1ldGhvZEpTWFNwcmVhZENoaWxkZXhwcgAAAAAABAAAAAQAAAB3AgAAUmVzdFBhdGRvdDNfdG9rZW5hcmd0eXBlX2FubnUFAAAYAAAACAAAALQBAABGbkRlY2xpZGVudFN0ck51bUNvbXB1dGVkAAAAdgUAAAwAAAAEAAAAKQMAAKMFAAAEAAAABAAAAOECAAAAAAAABAAAAAQAAAAqAwAAVHNDYWxsU2lnbmF0dXJlRGVjbHBhcmFtc3R5cGVfcGFyYW1zVHNJbnRlcmZhY2VEZWNsVGhpc1VuYXJ5VXBkYXRlQmluTWVtYmVyU3VwZXJQcm9wQ29uZENhbGxOZXdTZXFMaXRUcGxUYWdnZWRUcGxBcnJvd1lpZWxkTWV0YVByb3BBd2FpdFBhcmVuSlNYTWVtYmVySlNYTmFtZXNwYWNlZE5hbWVKU1hFbXB0eUpTWEVsZW1lbnRKU1hGcmFnbWVudFRzVHlwZUFzc2VydGlvblRzQ29uc3RBc3NlcnRpb25Uc05vbk51bGxUc0FzVHNJbnN0YW50aWF0aW9uVHNTYXRpc2ZpZXNQcml2YXRlTmFtZU9wdENoYWluSlNYQ2xvc2luZ0VsZW1lbnRuYW1lU3RhdGljQmxvY2tib2R5VHNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsRGVidWdnZXJTdG10TmFtZWREZWZhdWx0TmFtZXNwYWNlSlNYQXR0cnZhbHVlAACkBQAABAAAAAQAAACpAgAAVmFyRGVjbGFyYXRvcmluaXRkZWZpbml0ZVByaXZhdGVQdWJsaWNSZWdleGV4cGZsYWdzAKUFAAAEAAAABAAAAJwCAABjb21wdXRlZG9wdGlvbmFss5EmAAQAAACotyYACAAAACCSJgADAAAALJUmAAgAAAA0lSYACAAAAOySJgAIAAAAVHNQcm9wZXJ0eVNpZ25hdHVyZVdpdGhTdG10b2JqVXNpbmdEZWNsaXNfYXdhaXRkZWNsc0ltcG9ydERlZmF1bHRTcGVjaWZpZXJsb2NhbAB6BQAABAAAAAQAAAD8AQAARXhwb3J0QWxsc3JjdHlwZV9vbmx5AAAAAAAAAAQAAAAEAAAAWwEAAKYFAAAgAAAACAAAAOACAAB8BQAADAAAAAQAAACnBQAAfgUAABgAAAAEAAAAqAUAAGN0eHSzkSYABAAAACSWJgAEAAAAIJImAAMAAABjkyYABgAAAI2UJgAEAAAAMJImAA0AAABIkiYACwAAAENvbnN0cnVjdG9ySlNYTWVtYmVyRXhwcnJhd0tleVZhbHVlQ2xhc3NEZWNsTmFtZWRFeHBvcnRzcGVjaWZpZXJzQ29tcHV0ZWRQcm9wTmFtZURlY29yYXRvckpTWE9wZW5pbmdFbGVtZW50YXR0cnNzZWxmX2Nsb3Npbmd0eXBlX2FyZ3NUc0dldHRlclNpZ25hdHVyZVRzU2V0dGVyU2lnbmF0dXJlVHNNZXRob2RTaWduYXR1cmVUc0luZGV4U2lnbmF0dXJlRXhwclN0bXRLZXlWYWx1ZVBhdFByb3BWYXJEZWNsRXhwb3J0RGVmYXVsdERlY2xkZWNsTWV0aG9kR2V0dGVyU2V0dGVyU3ByZWFkRWxlbWVudEJvb2xBc3NpZ25QYXRQcm9wRW1wdHlTdG10UmV0dXJuU3RtdAAAqQUAACAAAAAIAAAAqgUAAIIFAAAMAAAABAAAADwDAABkZWNvcmF0b3JzAACzkSYABAAAACCSJgADAAAA0ZQmAAUAAADskiYACAAAACeSJgAJAAAAwJcmAAoAAAAwkiYADQAAAD2SJgALAAAAU5ImAAsAAAD5lCYACAAAAEF1dG9BY2Nlc3NvckltcG9ydFN0YXJBc1NwZWNpZmllclRoaXNFeHByRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVySlNYVGV4dEpTWEV4cHJDb250YWluZXJJZlN0bXR0ZXN0Y29uc2FsdEFycmF5TGl0ZWxlbXNFeHBvcnREZWZhdWx0U3BlY2lmaWVyZXhwb3J0ZWRvcGVuaW5nY2hpbGRyZW5jbG9zaW5nU3dpdGNoU3RtdGRpc2NyaW1pbmFudGNhc2VzVHNLZXl3b3JkVHlwZVRzVGhpc1R5cGVUc0ZuT3JDb25zdHJ1Y3RvclR5cGVUc1R5cGVSZWZUc1R5cGVRdWVyeVRzVHlwZUxpdFRzQXJyYXlUeXBlVHNUdXBsZVR5cGVUc09wdGlvbmFsVHlwZVRzUmVzdFR5cGVUc1VuaW9uT3JJbnRlcnNlY3Rpb25UeXBlVHNDb25kaXRpb25hbFR5cGVUc0luZmVyVHlwZVRzUGFyZW50aGVzaXplZFR5cGVUc1R5cGVPcGVyYXRvclRzSW5kZXhlZEFjY2Vzc1R5cGVUc01hcHBlZFR5cGVUc0xpdFR5cGVUc1R5cGVQcmVkaWNhdGVUc0ltcG9ydFR5cGVFeHBvcnROYW1lZFNwZWNpZmllcm9yaWdpc190eXBlX29ubHlPYmplY3RMaXRwcm9wc0pTWE9wZW5pbmdGcmFnbWVudAAAANxEIAAzAAAA5QYAADIAAACDBQAADAAAAAQAAACrBQAAhQUAAAQAAAAEAAAACwMAAGlzX2dlbmVyYXRvcmlzX2FzeW5jcmV0dXJuX3R5cGUAY5MmAAYAAADAlyYACgAAALORJgAEAAAAJJYmAAQAAACNlCYABAAAAGiaJgAMAAAAdJomAAgAAABpkyYACwAAAHyaJgALAAAAcGFyYW1MYWJlbGVkU3RtdGxhYmVsSW1wb3J0TmFtZWRTcGVjaWZpZXJpbXBvcnRlZAAAALORJgAEAAAAIJImAAMAAAAslSYACAAAADSVJgAIAAAAY5MmAAYAAADskiYACAAAAGmTJgALAAAAQnJlYWtTdG10Q29udGludWVTdG10VGhyb3dTdG10VHNGblR5cGVUc0NvbnN0cnVjdG9yVHlwZUpTWENsb3NpbmdGcmFnbWVudFVuYXJ5RXhwcm9wRm9yU3RtdFVwZGF0ZUV4cHJwcmVmaXhGb3JJblN0bXRCaW5FeHByRm9yT2ZTdG10VHJ5U3RtdGJsb2NraGFuZGxlcmZpbmFsaXplclNwcmVhZFByb3BUc0FueUtleXdvcmRUc1Vua25vd25LZXl3b3JkVHNOdW1iZXJLZXl3b3JkVHNPYmplY3RLZXl3b3JkVHNCb29sZWFuS2V5d29yZFRzQmlnSW50S2V5d29yZFRzU3RyaW5nS2V5d29yZFRzU3ltYm9sS2V5d29yZFRzVm9pZEtleXdvcmRUc1VuZGVmaW5lZEtleXdvcmRUc051bGxLZXl3b3JkVHNOZXZlcktleXdvcmRUc0ludHJpbnNpY0tleXdvcmRXaGlsZVN0bXREb1doaWxlU3RtdEZuRXhwclN3aXRjaENhc2VleHByX25hbWVNZW1iZXJFeHBycHJvcFRzRW50aXR5TmFtZUltcG9ydFRzSW1wb3J0Q2FsbE9wdGlvbnN0eXBlX25hbWVDYXRjaENsYXVzZXBhcmFtX25hbWVDbGFzc0V4cHJQYXRBc3NpZ25FeHByU3VwZXJQcm9wRXhwcgAAhgUAAAQAAAAEAAAApgIAAHF1YWxpZmllcmF0dHJpYnV0ZXNUc1R1cGxlRWxlbWVudHR5TmV3RXhwcmNhbGxlZWFyZ3NTZXFFeHByZXhwcnNtZW1iZXJzZWxlbV90eXBlQ29uZEV4cHJlbGVtX3R5cGVzQ2FsbEV4cHIAAIcFAAAMAAAABAAAAKwFAACtBQAABAAAAAQAAACuBQAAs5EmAAQAAAAkliYABAAAAGOTJgAGAAAAjZQmAAQAAAB0miYACAAAAGiaJgAMAAAAaZMmAAsAAAB8miYACwAAAEFycm93RXhwclRzVW5pb25UeXBlVHNJbnRlcnNlY3Rpb25UeXBlY2hlY2tfdHlwZWV4dGVuZHNfdHlwZXRydWVfdHlwZWZhbHNlX3R5cGV0eXBlX3BhcmFtQXdhaXRFeHBycXVhc2lzVHNUeXBlQW5uAAAAiwUAAAwAAAAEAAAArwUAAAAAAAAEAAAABAAAALAFAABzdXBlcl9jbGFzc3N1cGVyX3R5cGVfcGFyYW1zs5EmAAQAAAAkliYABAAAAMCXJgAKAAAAjZQmAAQAAAC8niYACwAAAD2SJgALAAAAaZMmAAsAAADHniYAEQAAAFi/JgAKAAAAWWllbGRFeHByZGVsZWdhdGV0eXBlc01ldGFQcm9wRXhwcnRhZ3RwbFN1cGVyAAAAAAAAAAEAAAABAAAAsQUAALIFAAAwAAAACAAAALMFAAC0BQAABAAAAAQAAAC1BQAAAAAAAAQAAAAEAAAAtgUAAG5hbWVfdHlwZQAAALORJgAEAAAAqLcmAAgAAAB3niYACgAAAJCfJgAJAAAANJUmAAgAAADskiYACAAAAGxpdAAAAAAABAAAAAQAAABWAwAAcGhhc2VUcGxFbGVtZW50dGFpbGNvb2tlZG9ial90eXBlaW5kZXhfdHlwZVBhcmVuRXhwclRydWVQbHVzTWludXNFeHByT3JTcHJlYWRzcHJlYWRUc0V4cHJXaXRoVHlwZUFyZ3NUc1R5cGVBbGlhc0RlY2xpZFRzRW51bURlY2xpc19jb25zdFRzVHBsTGl0VHlwZUJsb2NrU3RtdAAAAJQFAAAMAAAABAAAALcFAAAAAAAABAAAAAQAAAC4BQAAs5EmAAQAAABUoCYAAgAAAPm2JgAHAAAAaZMmAAsAAAAYtyYABwAAAI2UJgAEAAAAU2ltcGxlVHNJbnRlcmZhY2VCb2R5VHNFbnVtTWVtYmVyT3B0Q2FsbFRzTW9kdWxlQmxvY2tUc05hbWVzcGFjZURlY2xTaG9ydGhhbmRPcHRDaGFpbkV4cHJiYXNlAAAAlwUAACAAAAAIAAAABgIAAAAAAAAEAAAABAAAALkFAACzkSYABAAAAPm2JgAHAAAAQ7kmAAYAAAA0uSYACQAAAFSgJgACAAAAjZQmAAQAAABUc01vZHVsZURlY2xKU1hFbXB0eUV4cHJNb2R1bGVEZWNsU3RtdEJsb2NrRW1wdHlEZWJ1Z2dlcldpdGhSZXR1cm5MYWJlbGVkQnJlYWtDb250aW51ZUlmU3dpdGNoVGhyb3dUcnlXaGlsZURvV2hpbGVGb3JGb3JJbkZvck9mRGVjbEdldHRlclByb3BBcnJheVBhdAAAAAAAAAAEAAAABAAAALoFAACzkSYABAAAAMCXJgAKAAAAMJImAA0AAABTkiYACwAAAKi3JgAIAAAA0JomAAUAAABUc1BhcmFtUHJvcEV4cG9ydERlY2wAAACzkSYABAAAACSWJgAEAAAAIJImAAMAAADRlCYABQAAAOySJgAIAAAAJ5ImAAkAAADAlyYACgAAADCSJgANAAAASJImAAsAAABTkiYACwAAAKi3JgAIAAAA+ZQmAAgAAABQcml2YXRlUHJvcHN5bU9iamVjdFBhdFNldHRlclByb3B0aGlzX3BhcmFtAJoFAAAMAAAABAAAAJsFAACcBQAABAAAAAQAAAC7BQAAs5EmAAQAAACXliYACgAAANWVJgADAAAA2JUmAAkAAACytiYABAAAAOCfJgAFAAAASW1wb3J0RGVjbENsYXNzTWV0aG9kQXNzaWduUGF0SWRlbnROYW1lRXZhbHVhdGlvblNvdXJjZURlZmVyTWV0aG9kUHJvcAAAoSMgACwAAADGAAAAQAAAAFRzRXhwb3J0QXNzaWdubWVudFRzTmFtZXNwYWNlRXhwb3J0RGVjbFRzQXNFeHByVHNJbXBvcnRFcXVhbHNEZWNsaXNfZXhwb3J0bW9kdWxlX3JlZlRzRXh0ZXJuYWxNb2R1bGVSZWZzdG10c1RzTm9uTnVsbEV4cHJUc1NhdGlzZmllc0V4cHJQcm90ZWN0ZWRQYXJhbXBhdEV4cG9ydE5hbWVkRXhwb3J0RGVmYXVsdEV4cHJUc0ltcG9ydEVxdWFsc1RzTmFtZXNwYWNlRXhwb3J0VHNUeXBlUGFyYW1EZWNsS2V5VmFsdWVQcm9wQ2xhc3NQcm9waXNfaW5pc19vdXRjb25zdHJhaW50AAAAs5EmAAQAAAB+lCYABAAAAJykJgAFAAAAoaQmAAYAAABgoCYACAAAAKekJgAKAAAAJLYmAAcAAABUc1R5cGVQYXJhbW5zQXNzaWduUHJvcFRzVHlwZVBhcmFtSW5zdGFudGlhdGlvbgCzkSYABAAAACCSJgADAAAA0ZQmAAUAAADskiYACAAAACeSJgAJAAAAwJcmAAoAAAAwkiYADQAAAD2SJgALAAAASJImAAsAAABTkiYACwAAAKi3JgAIAAAA+bYmAAcAAAD5lCYACAAAAEJpbmRpbmdJZGVudIQwIAA2AAAAaAQAAEUAAAC8BQAAKAAAAAgAAAAoAgAAhDAgADYAAABbBQAAQAAAAEVTTS1zdHlsZSBtb2R1bGUgZGVjbGFyYXRpb25zIGFyZSBub3QgcGVybWl0dGVkIGluIGEgbmFtZXNwYWNlLkltcG9ydCBkZWNsYXJhdGlvbnMgaW4gYSBuYW1lc3BhY2UgY2Fubm90IHJlZmVyZW5jZSBhIG1vZHVsZS5JbXBvcnQgYXNzaWdubWVudCBjYW5ub3QgYmUgdXNlZCB3aGVuIHRhcmdldGluZyBFQ01BU2NyaXB0IG1vZHVsZXMuIENvbnNpZGVyIHVzaW5nIGBpbXBvcnQgKiBhcyBucyBmcm9tICJtb2QiYCwgYGltcG9ydCB7YX0gZnJvbSAibW9kImAsIGBpbXBvcnQgZCBmcm9tICJtb2QiYCwgb3IgYW5vdGhlciBtb2R1bGUgZm9ybWF0IGluc3RlYWQuRXhwb3J0IGFzc2lnbm1lbnQgY2Fubm90IGJlIHVzZWQgd2hlbiB0YXJnZXRpbmcgRUNNQVNjcmlwdCBtb2R1bGVzLiBDb25zaWRlciB1c2luZyBgZXhwb3J0IGRlZmF1bHRgIG9yIGFub3RoZXIgbW9kdWxlIGZvcm1hdCBpbnN0ZWFkLgAAvQUAAAQAAAAEAAAAJgEAAJBLIAAgAAAACQoAADwAAABfY3JlYXRlUmVxdWlyZWV4cG9ydHNjcmVhdGVSZXF1aXJlX19yZXF1aXJlTmFOSW5maW5pdHlpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBkZXN0cnVjdHVyaW5nIHBhdHRlcm4gaW5zaWRlIFRzUGFyYW1ldGVyUHJvcGVydHmEMCAANgAAAAoBAAAhAAAA2C8gADQAAADhAAAAGgAAANgvIAA0AAAAtwAAABIAAACEMCAANgAAAO8EAAANAAAAhDAgADYAAACABQAAHQAAAIQwIAA2AAAA8gUAAFEAAACEMCAANgAAAP8FAABWAAAAhDAgADYAAAD0BgAAGgAAAIQwIAA2AAAA8gYAABoAAABub3QgaW1wbGVtZW50ZWQAkEsgACAAAAD7CQAAPgAAAJBLIAAgAAAA6AkAACYAAABfYXdhaXQAAKARIAA3AAAAQQAAACwAAACEMCAANgAAAPUBAAAsAAAAbmFtZXNwYWNlIGJsb2NrIHN0YWNrIHNob3VsZCBjb250YWluIGN1cnJlbnQgYmxvY2sAAD9LIAA1AAAAAwIAAA4AAAAqBQAADAAAAAQAAAArBQAALAUAALMDAAAAAAAAAAAAAAEAAAAtBQAAT25seSBhbWJpZW50IG1vZHVsZXMgY2FuIHVzZSBxdW90ZWQgbmFtZXMuAACEMCAANgAAAMgHAAAOAAAAQ2xhc3NGblZhclVzaW5nVHNJbnRlcmZhY2VUc1R5cGVBbGlhc1RzRW51bVRzTW9kdWxlAAAAAAAMAAAABAAAAMIFAADDBQAAX19wcm90b19fY29uc3RydWN0b3Igc2hvdWxkIGhhdmUgYSBib2R5AFohIAAoAAAADgAAACAAAAAqBQAADAAAAAQAAAArBQAALAUAALMDAAAAAAAAAAAAAAEAAAAtBQAAU3ltYm9sAACrKSAAIwAAAHoCAAAUAAAAqykgACMAAACiAgAAPAAAAKspIAAjAAAAkQIAAD4AAAAAAAAAAAAAAAEAAAC0AwAAqSogAE8AAAAJAgAANwAAAMUFAAAsAAAABAAAAMYFAADHBQAAyAUAAMkFAADKBQAAywUAAJcDAACwAwAADAAAAAQAAAAXBQAAzAUAALMDAAAYQCAAXgAAADEGAAADAAAAHA8gAFoAAAAnAQAAAgAAAL0+IABbAAAA8AAAAE0AAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAAL0+IABbAAAAAwQAAAkAAAC9PiAAWwAAABMFAAAkAAAASjogAF8AAABYAgAAMAAAAC0lIABiAAAATAgAADMAAAB1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALSUgAGIAAAA/CAAAQAAAAHU4AADnICAASAAAALEAAAAWAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgAAADnICAASAAAAJoAAAAKAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3JjLmxlbigpID09IGRzdC5sZW4oKb0+IABbAAAAVAcAAAUAAABBECAAYQAAADgAAAAbAAAAbGluZWNvbHVtbm9mZnNldHVybG1hcHZlcnNpb25maWxlc291cmNlc3NvdXJjZVJvb3Rzb3VyY2VzQ29udGVudHNlY3Rpb25zbmFtZXNzY29wZXNyYW5nZU1hcHBpbmdzbWFwcGluZ3NpZ25vcmVMaXN0eF9mYWNlYm9va19vZmZzZXRzeF9tZXRyb19tb2R1bGVfcGF0aHN4X2ZhY2Vib29rX3NvdXJjZXNkZWJ1Z19pZGRlYnVnSWQAAAAtJSAAYgAAAH8CAAAqAAAAIlwiXFxcYlxmXG5cclx0AKgLIABgAAAAoAEAAC4AAABKOiAAXwAAABYCAAAvAAAAVjUgAGIAAACOCgAAAQAAABhAIABeAAAA9wAAAB8AAAAYQCAAXgAAAE8BAAAjAAAAzQUAABQAAAAEAAAAzgUAAAAAAAAIAAAABAAAAM8FAABDYW5ub3Qgc2V0IHNvdXJjZXMgZm9yIHRvbWJzdG9uZSBzb3VyY2UgaWQAAIwoIAAjAAAAgwAAAAkAAACMKCAAIwAAAIcAAAAdAAAASjogAF8AAAChAAAAJAAAAL0+IABbAAAA0AQAACMAAAAtJSAAYgAAAA0GAAASAAAAaHR0cDpodHRwczphc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDEAvT4gAFsAAAC2AgAACQAAAEo6IABfAAAAxgAAACcAAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvaW52YWxpZCB1dGY4vycgACMAAABmAAAAIQAAAGludmFsaWQgYnl0Zb8nIAAjAAAAIwAAABIAAABOdWxsUHRyRXJyb3JJbmNsdWRlZEV4Y2x1ZGVkVW5ib3VuZGVkAAAALSUgAGIAAAAKAgAAKgAAAE1pc2FsaWduRXJyb3IAAAABAAAALi5sZWZ0b3ZlciBjdXIvc2hpZnQgaW4gdmxxIGRlY29kZXZscSBkZWNvZGUgZGlkIG5vdCBwcm9kdWNlIGFueSB2YWx1ZXN2bHEgZGVjb2RlIGNhdXNlZCBhbiBvdmVyZmxvd2VuY291bnRlcmVkIGluY29t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EyAAIwAAABQBAABBAAAAdGhyb3djb25zdHJ1Y3RvcnB1YmxpY3Byb3RlY3RlZHByaXZhdGUjLnRoaXNrZXlvZnVuaXF1ZWlub3V0O3N1cGVyPC90cnlmaW5hbGx5d2hpbGVyZXF1aXJlPD5kbwE/LjwvPmZvcjxpbnZhbGlkPm9mYnJlYWtjb250aW51ZWlmZWxzZWluZmVybmV3LnRhcmdldGltcG9ydC5tZXRhaW50ZXJmYWNlYW55dW5rbm93bm51bWJlcm9iamVjdGJvb2xlYW5iaWdpbnRzdHJpbmdzeW1ib2x2b2lkdW5kZWZpbmVkbmV2ZXJpbnRyaW5zaWNgANgRIAApAAAAFQIAACIAAAAkewAA2BEgACkAAAAYAgAAIQAAACstAADsSyAAIgAAAHAIAAAiAAAA7EsgACIAAABzCAAAIQAAAA0KCgDsSyAAIgAAAKMIAAAyAAAA7EsgACIAAACcCAAAMAAAAG5hbWVzcGFjZW1vZHVsZWdsb2JhbHlpZWxkAABjFyAAKwAAAMoBAABAAAAAPCAoanN4IHRhZyBzdGFydCkoIG9yIGBUcmllZCB0byBwYXJzZSBhbiBhcmd1bWVudCBvZiB5aWVsZAAAVBMgACkAAACBAwAALgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVjFyAAKwAAAPMBAAAiAAAA9wUAAAgAAAAEAAAA+AUAAPkFAAD6BQAA+wUAAPwFAAD9BQAA/gUAAP8FAAAABgAAAQYAAAIGAAADBgAABAYAAAUGAABVbnN1cHBvcnRlZCBzeW50YXhmYWlsZWQgdG8gd3JpdGUgc291cmNlIG1hcHNvdXJjZSBtYXAgd2FzIG5vdCB1dGY4CVmTAABwESAALwAAAEsPAAA3AAAAG1ACA0FuIGV4cHJlc3Npb24gc2hvdWxkIGZvbGxvdyAnLi4uJ3VmYWlsVHJpZWQgdG8gcGFyc2UgdGhlIGNvbmRpdGlvbiBmb3IgYW4gaWYgc3RhdGVtZW50aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogTW9kdWxlIGlzIGhhbmRsZWQgYWJvdmUAEEUgACgAAABIAQAAMgAAAGlkZW50aWZpZXIsIHN0cmluZyBsaXRlcmFsLCBudW1lcmljIGxpdGVyYWwgb3IgWyBmb3IgdGhlIGNvbXB1dGVkIGtleWlkZW50aWZpZXJgbW9kdWxlYCBrZXl3b3JkIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBgbmFtZXNwYWNlYCBpbnN0ZWFkLlVuc3VwcG9ydGVkU3ludGF4aW5zdGFuY2VvZlR5cGVTY3JpcHQgZW51bSBpcyBub3Qgc3VwcG9ydGVkIGluIHN0cmlwLW9ubHkgbW9kZVR5cGVTY3JpcHQgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVGhlIGFuZ2xlLWJyYWNrZXQgc3ludGF4IGZvciB0eXBlIGFzc2VydGlvbnMsIGA8VD5leHByYCwgaXMgbm90IHN1cHBvcnRlZCBpbiB0eXBlIHN0cmlwIG1vZGUuIEluc3RlYWQsIHVzZSB0aGUgJ2FzJyBzeW50YXg6IGBleHByIGFzIFRgLlR5cGVTY3JpcHQgcGFyYW1ldGVyIHByb3BlcnR5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RyaXAtb25seSBtb2RlVHlwZVNjcmlwdCBleHBvcnQgYXNzaWdubWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHN0cmlwLW9ubHkgbW9kZVR5cGVTY3JpcHQgaW1wb3J0IGVxdWFscyBkZWNsYXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHN0cmlwLW9ubHkgbW9kZQAAAIAxIAA1AAAAfwEAACMAAABTeW50YXggZXJyb3JJbnZhbGlkU3ludGF4AAAAyEsgACMAAACYAQAAFQAAAMhLIAAjAAAAawEAACUAAADISyAAIwAAAHoBAAAlAAAAyEsgACMAAAB+AQAAJQAAAMhLIAAjAAAAfwEAACUAAADISyAAIwAAAIMBAAAlAAAAyEsgACMAAACEAQAAJQAAAMhLIAAjAAAAhQEAACUAAADISyAAIwAAAIsBAAAlAAAAyEsgACMAAACNAQAAJQAAAMhLIAAjAAAAjgEAACUAAADISyAAIwAAAI8BAAAlAAAAyEsgACMAAAAEAgAAMAAAAGdlbmVyYXRlZCBjb2RlIHdhcyBub3QgdXRmLThtaWQgPiBsZW4AAAAAAAAABAAAAAQAAAAG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YWRpbmcAAMgfIABdAAAAPgAAAAkAAAD/////BAsPExcbHyMnLTE0ODxAAkUAAAAAAEkATQAFBQUFBQUFBQUFBQUGBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVFUWFwFBQUFBQUFBQUFBQUFBQUFBQUFBQUJAAAAAAAAAAAAAAAAAAAAAAFgKGRobHArdHZ6foKGio6SlpqeBTKiAAAAAKQFBaYFBQUFBQVDBawAAAAAAAAAAAAAAACtAAAABbG1uQUFBQUFBQUFBQUFUgUFvQAAAAAAAAAAAAAAAAAAAAC/p8EAAAAAxAAAAAAAAAAAAAAA0NIAAADI2d3hy+UAAOkAAAAAAAAAAAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF6wUFBQUFBQWq7gUFBQUFBQUFBQXxBQUFBQUFBQUFBQUFBewF9AAAAAAFrgAABQUFBQUFBQUF7wUFBQUFBQXyAAAAAAAACA0RFRkdISUqLzE2Oj5CAkcAAAAAAEsATwAFBQUFBQUFBQUFBQUGBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVFWWl4FBQUFBQUFBQUFBQUFBQUFBQUFBQUJAAAAAAAAAAAAAAAAAAAAAAFiKGZqbnIrdHh8gISIjJCUmJygBTKiAAAAAKQFBakFBQUFBQVDBawAAAAAAAAAAAAAAACvAAAABbO3uwUFBQUFBQUFBQUFUgUFvQAAAAAAAAAAAAAAAAAAAAC/p8EAAAAAxwAAAAAAAADKwsXN0NQA1gDI29/jy+cAAOkAAAAAAM4AAAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF6wUFBQUFBQWq7gUFBQUFBQUFBQXxBQUFBQUFBQUFBQUFBewF9AAAAAAFrgAABQUFBQUFBQUF7wUFBQUFBQXyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAE//9/////f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEoAT//3////9///////////////////////////////////////////////////////////////////////8PAP//f/j//////w/////////////////////////////////D/wMAH1AAAAAAAAAAAAAAAAAAAAAA37xA1///+////////////7//////////////////////////////////w/8DAB9QAAD//////////////////9+8wNf///v///////////+///////////////////////8D/P///////////////////////////v///38C//////8BAAAAAAAAAAD///+HBwD/////////////////////+/z///////////////////////////7///9/Av//////Af7/////v7YA////hwcAAAAAAP//////BwAAAMD+//////////////8vAGDAAJwAAP3///8AAADg/////////////z8AAgAA/P///wcwBAAA/wf////////////D////////////////75///f+fAAD/////////5////////////////wMA////////PyT//z8EEAEAAP///wH/B////34AAP//////AwAAAAAAAPD///////8jAAAB/wMA/v/hn/n///3FIwBAALADAAMQ//////8/AAD///8P/wf///9+gP////////////v////////////////////P//7/75/5///9xfOfeYCwz/8DUOCH+f///W0DAAAAXgAAHADgv/v///3tIwAAAQADAAAC4J/5///97SMAAACwAwACAOjHPdYYx/8DAAABAAAAAADuh/n///1t04c5Al7A/z8A7r/7///97fO/OwEAz/8A/u6f+f///e3znzngsM//AgDsxz3WGMf/w8c9gQDA/wAA4N/9///9/yMAAAAnAwAAAOHf/f///e8jAAAAYAMABgDw3/3/////JwBAcIADAAD84P9//P//+y9/AAAAAAAAAP/f/f///f/z3z1gJ8//AADv3/3///3v8989YGDP/w4A/9/9///////fffCAz/8A/O7/f/z///svf4Rf/8D/DAD+//////8NAH8AAAAAAAAA1vf//6//DSBfAADwAAAAAAEAAAAAAAAA//7///8fAAAAHwAAAAAAAAAAAAAAAAAA/v///////wf/f/8DAAAAANb3//+v//8/X3//8wAAAAABAAAD/wOgwv/+////H/7/3////v///x9AAAAAAAAAAP//////BwCAAAA/PGLA4f8DQAAA/////78g///////3////////////////////////////////////////////////////PwAA///////////8////////AAAAAAD/D////////////wP///////////8//////78g///////3//////////////////////////////////////////////////9/AP//PwD/AAAAv////////QcAAAAAAAAAAP///////////z1/Pf//////Pf////89fz3/f/////////89//////////8HAAAAAP//AAD/////////////Pz////////////89fz3//////z3/////PX89/3//////////Pf//////////5wD+AwD//wAA/////////////z8//v////////////////////////////////////////////////////////////////////////////////////////////////////////////8DAAAAAAAAAAAAAAAA/////////////////5////7//wf////////////H/wH//wOA//8DAP//AwD/3wEA////////DwAAAIAQAAAAAP////////////////+f///+//8H////////////x/8B//8/gP//HwD//w8A/98NAP////////////+PMP8DAAAAAAAA//////////////8B//////8F//////////8/AP///38AAAAAAAD///8/HwD//////w////8DAAAAAAAAALj/A///////////////Af//////B///////////PwD///9//w//D8D/////Px8A//////8P////A/8HAAAAAP//fwD///////8fAAAAAAAAAAAAgAAAAAAAAAAAAAAA4P//////DwDgHwAAAAAAAPj///8BwAD8/////z8AAAD///8P/////////3////+f/wP/A4AA/7//fwAAAAAAAP///////////x//AwD4DwD//////////////////w8A/////w8AAAAA4AD8////P/8H///////nAAAAAADebwT///////////////////////////////8AAAAAAAAAAP////////8A/+P//////z//B///////5wAA9/////8H////////////////////////////////////////////////////////////////////////////////////BwAAAAAAAAAAAAAAAAAAAoAAAP8fAAAAAAAAAAAAAAAAhPwvP1D9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAAAMAAAAAAAgAEAEAAAAAKAAAD/HwAAAAAAAP8f4v8BAIT8Lz9Q/f/z4EMAAP//////AQAAAAAAAAAAAAAAAAAA/////////////////////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39/AAAAAP////////////////////////////////////8f+A8A/////78g/////////4AAgP//fwB/f39/f39/f//////gAAAA/gM+H/7///////////9/+P7/////////////9+D///////7/////////////fwAA/////wAAAAAAAP//4AAAAP7/Ph/+////////////f/7+///////////////g///////+/////////////38AAP////8AAAAAAAD/////////////////////////HwAAAAAAAAAA//////8/////////////////////////////////////////////////////////////////////////////////////AP8f//8ADAAA//////9/AID///8//////////////wAAAACA//z////////////////5/////////z/rHwAA/P//H////w8AAP////////C///////////////////8DAAAAgP/8////////////////+f////////8/6x8AAPz/u/f//wcAAAD///////8PAPz//////w8AAAAAAAAA/GgA/P//PwD//38AAAD///8f8P//////BwAAgAAA3/8AfP//////EAAA////////DwD//////////z8A/wP////o//////8//////w8A////H///////////AYD/A////3///////wEAAPcPAAD//3/E////////Yj4FAAA4/wccAH5+fgB/f///////9/8D//////////////////8HAAAA////////fwD/P/8D//9//P//////////BwAAOP//fAB+fn4Af3////////f/A////////////////////zf/A/////////////////8//////////////////wMAAAAAfwD4oP/9f1/b/////////////////wMAAAD4////////////////////////P/////////////////8DAAAAAH8A+OD//X9f2/////////////////8DAAAA+P//////AAAAAAAAAAAAAAAAAADf/////////////////////x8AAAAA/v//B/7//wfA/////////////3/8/PwcAAAAAP//AAD//xgAAOAAAAAA3/////////////////////8fAAD/A/7//4f+//8H4P////////////9//Pz8HAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAD///8f////////AQAAAAAA/////wDg////B/////8/AP///z//////D/8+AAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAQAAAP////8A4P///wf//////wf///8//////w//PgAAAAAA/////////////////////////z8AAP////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAP////////////////////////8//wP/////D/////8P//////8A////////DwD/9//3t//7//sb////////DwA//f////+/kf//PwD//38A////fwAAAAAAAAAA//83AP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAAQDv/v//PwAAAAAA////H////x8AAAAA//7//x8AAAD///////8/AP//PwD//wcA//8DAAAAAAAAAAAAAAAAAG/w7/7//z+HAAAAAP///x////8fAAAAAP/+//9/AAAA////////PwD//z8A//8HAP//AwAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP////8PAAAAAPz//z+A//8/AAAAAAAAAAAAAAAAAAAA////////////AQAAAAAAAP///////wcA////////BwD//////wD/A/////8/vv//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wMDABwAAAAAAAAA////H4AA//8/AAAAAAD//wMAAAAAAP//HwAAAP//fwAAAAAAAAAAAAAAAAAAAAAA//////8bAwAcAAAAAAAA8P///x+AAP////8BAAAA//8/AAAAAAD//x8AAAD//38A+P///////wAAAAAAAAAmAPj//////wAAAAD///8BAAD4////fwAAAJAA/////0cA+P//////BwAeAAAUAAAAAP//////////fwAAAMD/P4D/////////BwQA////Af8D////////3//wAP////9PAP//////////H97/FwAAAAD///v//w8AgAEAAAAAAAAAf73/v/8B//////9/AAAAAOCf+f///e0jAAAB4AMAAAD/S/////+/AAAACgAAAAAA///7/////8ADAAAAAAAAAH+9/7//Af////////8H/wPvn/n///3t+585geDPHx8A/0v/////v/+l9w8ABgAAAP///////x8AgAcAgAMAAAD///////8AALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAADwAAAAD///////////8H/8MDAAAA//////////+/AP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8//wEAAD8AAAAA////////AAAQAAAAAAAAAP//////BwABAAAAAAAAAAD///8HAAAAAH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////EQD/AwAAAAD/////////Af8D//8PAAAA////5/8P/wN/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////w8AAAAAAAAAAAAAAAAAAP//////////AAAAgH/yb////wCAAgAAAAAAAAAAAAAA//z/////AQAKAAAA/////////wcAAAAAAAAAAAAAAAD///////////8DAIB/8m////+/+Q8A/wMAAAAAAAAAAP/8///////8GwAAAAH4/////wcEAAAB8P//////AwAgAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAAAD/////////f4AA////////////IwAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAP8D//3///9/AAABAAAAAAD8////AAAAAAAAAAAAAAAAAAB/+/////8BAEAAAAC//f///wMAAQAAAAAAAAAAAAAAAP/9/////3//AQD/AwAA/P////z///5/AAAAAAAAAAAAf/v/////f7T/AP8Dv/3///9/+wH/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8HAPT//f///w8AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//fwD///3/////xwcA/wcAAAAAAAAAAAAAAQAAAAAAAAAAAP////////////////9/AAD///////////////////////////////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wEA////////AAB+AAAA//////////////////////////////////////////////////////////////////////////8HAAQAAAAnAPAA////////////////////////////////AAD//z8A//////////////////////////////////////////////////////////////////////////////8D//////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8B////fwAA////////////fwAA////PwAA////////AAAPAAAA+P//4P//AAAAAAAAAAAAAAAAAAD/////////Af///3//A////////////3//A////z8fAP///////38ADwD/A/j//+D//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////x//AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////wcBAAAAAAAAAPj/AAAAAAAAAAALAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAD///////////+H/////////4D//wAAAAAAAAAAGwADAP//////////////////////////////////PwAAAACA/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO9v/////////////////////////////////////////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////P///fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////wf/H/8B/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODjB/jnDwAAADwAAAAAAAAAAAAA/////////////////wf/H/8B/2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3/gBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/b/9/AAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8D/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//9w8AAAAAAAD//////////////////////////z/////9///3////9///3////9///3////9//////f////3///fP////////////////f/j//////x8gABAAAPj+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////////////wAAAAAAAAAA/////////z8AAAAAAAAAAAAAAAAAAAAAAAD//////x+APwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH////nbB/////////8/AAAAgAAAAAAAAAAAAAAAAAAA//////8f/z//QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AAD//////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////fwAA/////////wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8H////////////////////////////////HwAAAAAAAAD//////////w8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////x8AfwAAAAAA////////////D/8DAAAAAAAAAAAAAAAAAAAAAAAAAADv////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAD///////////////////////////////////////////////////////////////////////////////8BAP//////P////////////////////////////////////////////////////////////////////////////////////////////wf///////////////////////////////////////////////////////8DAP////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAA//////////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAwQFBgcICQoLDA0CAgICAgICDgICAgICAgIOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVVVVRUAUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEAAAAAAAAAAAAAEEEQVVVVVVVXVVVVVVVVVVVVUVVVAABAVPXdVVVVVVVVVVUVAAAAAABVVVVV/F1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQUAFAAUBFBVVVVVVVVVFVFVVVVVVVVVAAAAAAAAQFVVVVVVVVVVVdVXVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVVVVRUAAFVVUVVVVVVVBRAAAAEBUFVVVVVVVVVVVVUBVVVVVVX/////f1VVVVAVAABVVVVVVVVVVVVVBQAAAAAAAAAAAAAAAABAVVVVVVVVVVVVVVVVVUVUAQBUUQEAVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVUQBVFVRVRVVVQVVVVVVVVVFQVVVVVVVVVVVVVVVVVVVVEEVFFBRVVVVVVVVVVBRVVVBVVVVVVVVVVVVVVVVVVVUARBUUVVVVVUFVVVVVVUFAFFVVVVVVVVVVVVVVVVVVQQBVFVRVQFVVQVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVRVRVVVFVFVVVVVVVVVVVVVVUVFVVVVVVVVVVVVVVVVUEVAUEUFVBVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVRREBQRQVUFVVQVVVVVVVVVVUFVVVVVVVVVVVVVVVVUVRAFUVUFVFVVVBVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVFFQVEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAQFVVFQBAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQAAVFVVAEBVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVEVFVVVVVVVVVVVVVVVVVAQAAQAAEVQEAAAEAAAAAAAAAAFRVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBBABBQVVVVVVVVVAFVFVVVQFUVVVFQVVRVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVVVVVVUFUFVVVVVVVQVUVVVVVVVVBVVVVVVVVVUFVVVVf//99//911931tXXVRAAUFVFAQAAVVdRVVVVVVVVVVVVVRUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVRVRVUBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVxUUVVVVVVVVVVVVVVVVVVVFAEBEAQBUFQAAFFVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAUAAAAFVVVVVVAFVVVVVVVVVVVVVVVQAAUAVUVVVVVVVVVVUVAABVVVVQVVVVVVVVVQVQAFBVVVVVVVVVVVVVVVVVRVARAFVVVVVVVVVVVVVVVVVVAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAABABUUVVUUFVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAFVVFQBVVVVVVVUFQFVVVVVVVVVVVVVVVQAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAFRVVVVVVVVVVVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/VfXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX1VVVVVVV9VVVVVVVWqqlVVVVX///9VVVVVVVVVVVVV1VVVparVVVVVXVX1VVVVVX1VX1V1VVdVVVVVdVX1XXVdVV31VVVVVVVVVVdVVVVVVVVVVXfV31VVVVVVVVVVVVVVVVVVVf1VVVVVVVVXVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVV11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVBVVVVVVVVVVVVVVVVVVVX9////////////////X1XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVWqqqqqqqqqqqqqqqqqqgoAqqqqaqmqqqqqqqqqqqqqqqqqqqqqqqqqqmqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWpqqqqqqqqqqqqqqmqqqqqqqqqqqqqqqqoqqqqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVlaqqqqqqqqqqqqqqaqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqlaqqqqqqqqqqqqqqqqqalVVVVVVVVVVVVVVVVVfVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUAAAFBVVVVVVVVVBVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVUVFFVVVVVVVVUFVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVAAAAAFBVRRVVVVVVVVVVVVUFAFBVVVVVVRUAABBVVVWqqqqqqqqqVkBVVVVVVVVVVVVVVRUFUFBUVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVQFAQUFVVRVVVVRVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVUEFFQFUVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFFVVVVVqqqqqqqqqqqqVVVVAAAAAABAFQAAAAAAAAAAAAAAAFVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQwAAPCqqlpVAAAAAKqqqqqqqqqqaqqqqqpqqlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRWpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpWVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVVapqVVUAAFRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBUBVAUFVAFVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVUBUFVVVVVVVVVVVVVVVVVVFVRVVVVVVVVVVVVVVVVVVVVVVVUFAFVVVVVVVVVVVVVVVVVVVVVVBQAAVFVVVVVVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVQAAAEBVVVVVVVVVVVVVFFRVFVBVVVVVVVVVVVVVVRVAQVVFVVVVVVVVVVVVVVVVVVVVQFVVVVVVVVVVFQABAFRVVVVVVVVVVVVVVVVVVRVVVVVQVVVVVVVVVVVVVVVVBQBABFUBFFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVAAVUVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVFQBAVVVVVVVQVVVVVVVVVVVVVVVVVRVEVFVVUVUVVVVVBQBUAFRVVVVVVVVVVVVVVVVVVVVVFABEEVAFQFVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAVEVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVUUAEQRBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQVQVRBUVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVFQBAEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVEAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVURBRAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAABBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRUAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAFVVRVVVVVVVVVAQBAVVVVVVVVVVVVFQAUQFUVVVUBQAFVVVVVVVVVVVVVAAAAAEBQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQREVVVVVVVVVVVVVVVVVVVVVVVVAEAAEFVVVVVVVVVVVVVVVVVVVVVVVVVVBQAAAAAABQAEQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFARRAAAFVVVVVVVVVVVVVVVVVVVVVVVVARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVRVVUBVVVVVVVVVVVVVVVUFQFVAVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVAAAAUFVVVVVVVVVVVVVVVVVVVVVVBQAAUAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVFVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1VdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVFUBVVVVVVVVVVVVVVVVVVVVVVVVVqlRVVaBqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqpaVVVVVVVVVVVVlaqqqqqqqqpqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqmqaaqqqqqqqqqqalVVVWVVVVVVVVVVallVVVWqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVVVVVVVVQQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAAAAAUAAAAAAAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQFQAQAAAABAAQBVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqalVVqqqqqqpqVVUAAAAAAAAAAAAAAAAAQBUAAAAAAAAAAAAAAABUVVFVVVVUVVVVVRUAAQAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVAEAAAAAAFAAQBEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVFVQVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVVVVVVVVVVVVVVVVVVVVV1/f9/VVVVVVVVVVVVVVVVVVVVVVVV9f///////25VVVWqqrqqqqqq6vq/v1WqqlZVX1VVVapaVVVVVVVV//////////9XVVX9/9////////////////////////f//////1VVVf////////////9/1f9VVVX/////V1f//////////////////////3/3/////////////////////////////////////////////////////////////9f///////////////////9fVVXVf////////1VVVVV1VVVVVVVVfVVVVVdVVVVVVVVVVVVVVVVVVVVVVVVVVdX///////////////////////////9VVVVVVVVVVVVVVVX//////////////////////19VV3/9V/9VVdVXVf//V1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf///1VXVVVVVVVV//////////////9////f/////////////////////////////////////////////////////////////1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9X//9/9f////////////////9/V/3////X//9/1f//V1WqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqWlVVVVVVVVVVWZZVYaqlWapVVVVVVZVVVVVVVVVVlVVVAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAFVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQCWalpaaqoFQKZZlWVVVVVVVVVVVQAAAABVVlVVqVZVVVVVVVVVVVVWVVVVVVVVVVUAAAAAAAAAAFRVVVWVWVlVVWVVVWlVVVVVVVVVVVVVVaqqqmqqqqpVqqpaVVVVWVWqqqpVVVVVZVVVWlVVVVWlZVZVVVWVVVVVVVVVppaalllZZamWqqpmVapVWllVWlZlVVVVaqqlpVpVVVWlqlpVVVlZVVVZVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVlVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqVaqqqqqqqqqqqlZVVaqqqqqlWlVVmqpaVaWlVVpapZalWlVVVaVaVZVVVVV9VWlZpVWvVWZVVVVVqqpVVWZV////VVVVmppqmlVVVdVVVaWq1VVVpV1V9VVVVVW9Va+quqqrqqqaVbqq+q66rlVd9VVVVVVVVVVXVVVVVVlVVVV31d9VVVVVVVVVpaqqqqqqqqr9VVVVVVVVV1VV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVV1VVVVVVVVVVVVVVVVetWlVVVVVVVVVVVaqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqMwAAwKqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUWaqqqlaqqqqqqqqqWqqqqqqqqqqqqqqqqqqqWlWqqqqqqqqquv7/v6qqqqpWVVVVVVVVVVVVVVVVVfX///////8AAQICAgIDAgIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICKywCAgICLS4CAgIvMDEyMwICAgICAjQCAjU2NwI4OTo7PD0+Pzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlAAgJBQgICQ0RFRkdIAkk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlKAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICOTk5OUsCAgICAkxNTk8CAgJQAlFSAgICAgICAgICAgICAlNUAgJVAlYCAldYWVpbXF1eX2BhYmMCZGVmZwJoAmlqa2xtAm5vcHECcnMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUCAgICAgICAgICAgICAgICAgJ2dwICAngCAgJ5ejk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OXt8fQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+OTl/OTmAAgICAgICAgICAgICAgICAgICAoECAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAgICg4SFAoYCAgICAgICAgICAgICh4gCAgICAgICAgICiYp3AgKLAgICjAKNAo4CAgKPkAICAgICAgICAgICAgKRkgKTlAKVlpeYmZqbnAKdAgKen6ChAgICAgICAgICAjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OaIdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKMCAgICpKUCBAIFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAgIeAgICAgICAh8gISIjAiQlJicoKQIqAgICAqanqKmqq6wurTmur7CxsrMCAgICAgK0AgI1NjcCODk6Ozw9PrU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlLAgICAgK2TU63iYp3AgKLAgICjAKNAo4CAgKPkAICAgICAgICAgICAgKRkri5lAKVlpeYmZqbnAKdAgKen6ChAgICAgICAgICAgAAAAAEAAAABAAAACsAAAAwMTIzNDU2Nzg5YWJjZGVmShQgAFsAAAC7AAAADQAAAEoUIABbAAAAswAAABUAAABKFCAAWwAAALYAAAANAAAAShQgAFsAAAC3AAAADQAAALADAAAMAAAABAAAABsGAAAYBQAAswMAAGYzIABPAAAArAEAABkAAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAaR8gAF4AAABrAAAADQAAAP//////////mBInAAAAAAAAAAAAAAAAAGcrIABtAAAAGgAAACsAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHlgRyAAUAAAAC4DAAAJAAAAcmVlbnRyYW50IGluaXQAANBMIABgAAAAegIAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZExhenkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZNBMIABgAAAACAMAABkAAADNOCAAbQAAACUAAAAuAAAAzTggAG0AAAAoAAAAKQAAAPBJIAB5AAAAZwAAACUAAADwSSAAeQAAACIAAAAVAAAAzTggAG0AAAA+AAAAGgAAAB0GAAAeBgAAHwYAACAGAAAiBgAABAAAAAQAAAAjBgAAJAYAAAgAAAANAAAADwAAABBRIQBxTCEAGFEhAAAAAIAAAAAAAAAAAAYAAAAGAAAACAAAAAcAAACYxiAAbKomAJ7GIACmxiAAUMYgAF7GIABsxiAAgsYgAA4AAAAOAAAAFgAAABYAAABeBiEAYAYhAGIGIQBkBiEAZgYhAGgGIQBqBiEAbAYhAG4GIQBwBiEAcgYhAHQGIQB2BiEAeAYhAHoGIQB8BiEAfgYhAMAWIQDQFiEA4BYhAPAWIQDwFiEAABchABAXIQAgFyEAMBchAEAXIQBQFyEAYBchAHAXIQCAFyEAkBchAKAXIQCwFyEAwBchANAXIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA8hAEAPIQBQDyEAYA8hAHAPIQCADyEAkA8hAKAPIQCwDyEAwA8hANAPIQDgDyEA8A8hAAAQIQAQECEAIBAhADAQIQBAECEAUBAhAGAQIQBwECEAgBAhAJAQIQCgECEAoBAhALAQIQDAECEA0BAhAOAQIQDwECEAABEhABARIQAgESEAMBEhAEARIQBQESEAUBEhAGARIQBwESEAgBEhAJARIQCgESEAoBEhALARIQDAESEA0BEhAOARIQDwESEAABIhABASIQAgEiEAMBIhAEASIQBAEiEAUBIhAGASIQBwEiEAgBIhAJASIQCgEiEAsBIhAMASIQDQEiEA4BIhAPASIQAAEyEAEBMhACATIQAwEyEAQBMhAFATIQBQEyEAYBMhAHATIQCAEyEAkBMhAKATIQCwEyEAsBMhAMATIQDQEyEA4BMhAPATIQAAFCEA8BEhABAUIQAgFCEAMBQhAEAUIQBQFCEAYBQhAHAUIQCAFCEAkBQhAKAUIQCwFCEAwBQhANAUIQDgFCEA8BQhAAAVIQAQFSEAIBUhADAVIQBAFSEAUBUhAGAVIQBwFSEAgBUhAJAVIQCgFSEAsBUhAMAVIQDQFSEA4BUhAPAVIQAAFiEAEBYhACAWIQAwFiEAQBYhAFAWIQBgFiEAcBYhAIAWIQCQFiEAoBYhALAWIQAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAI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DiEAcA4hAIAOIQCQDiEAoA4hALAOIQDADiEA0A4hAOAOIQDwDiEAAA8hABAPIQAgDyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAGIQCQBiEAoAYhALAGIQDABiEA0AYhAOAGIQDwBiEAAAchABAHIQAgByEAMAchAEAHIQBQByEAYAchAHAHIQCAByEAkAchAKAHIQCwByEAwAchANAHIQDgByEA8AchAPAHIQAACCEAEAghACAIIQAwCCEAQAghAFAIIQBgCCEAcAghAIAIIQCQCCEAoAghAKAIIQCwCCEAwAghANAIIQDgCCEA8AghAPAIIQAACSEAEAkhACAJIQAwCSEAQAkhAFAJIQBgCSEAcAkhAIAJIQCQCSEAkAkhAKAJIQCwCSEAwAkhANAJIQDgCSEA8AkhAAAKIQAQCiEAIAohADAKIQBACiEAUAohAGAKIQBwCiEAgAohAJAKIQCgCiEAoAohALAKIQDACiEA0AohAOAKIQDwCiEAAAshAAALIQAQCyEAIAshADALIQBACyEAUAshAEAJIQBgCyEAcAshAIALIQCQCyEAoAshALALIQDACyEA0AshAOALIQDwCyEAAAwhABAMIQAgDCEAMAwhAEAMIQBQDCEAYAwhAHAMIQCADCEAkAwhAKAMIQCwDCEAwAwhANAMIQDgDCEA8AwhAAANIQAQDSEAIA0hADANIQBADSEAUA0hAGANIQBwDSEAgA0hAJANIQCgDSEAsA0hAMANIQDQDSEA4A0hAPANIQAADiEACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH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AAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAlbYmAJzGJgCexiYAoMYmAKLGJgCkxiYApsYmAKnGJgCsxiYAsMYmALLGJgC0xiYAtsYmALnGJgC8xiYAv8YmAAYAAAAKAAAACQAAAAkAAAACAAAABQAAAAkAAAAFAAAABgAAAAYAAAACAAAAAwAAAAgAAAAHAAAABwAAAAkAAAAGAAAACAAAAAcAAAADAAAABgAAAAYAAAAGAAAABAAAAAkAAAAGAAAABwAAAAUAAAAIAAAABQAAAAkAAAAEAAAABgAAAAIAAAAOAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAANAAAACwAAAA4AAAAPAAAADgAAAA4AAAAOAAAAIAAAAA0AAAAPAAAADQAAAAgAAAAI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", "base64"); var wasmModule = new WebAssembly.Module(bytes); var wasmInstance = new WebAssembly.Instance(wasmModule, imports); wasm = wasmInstance.exports; diff --git a/deps/amaro/dist/package.json b/deps/amaro/dist/package.json index 99a1362b1c6682..bf2f6c48412160 100644 --- a/deps/amaro/dist/package.json +++ b/deps/amaro/dist/package.json @@ -4,7 +4,7 @@ "강동윤 " ], "description": "wasm module for swc", - "version": "1.15.18", + "version": "1.15.30", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/deps/amaro/package.json b/deps/amaro/package.json index d8d5c9f497b90d..fd8d0d9e9ae9ff 100644 --- a/deps/amaro/package.json +++ b/deps/amaro/package.json @@ -1,6 +1,6 @@ { "name": "amaro", - "version": "1.1.8", + "version": "1.1.9", "description": "Node.js TypeScript wrapper", "license": "MIT", "type": "commonjs", diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md index dfc1dddd7b6a32..16553bd776ffa4 100644 --- a/deps/corepack/CHANGELOG.md +++ b/deps/corepack/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.34.7](https://github.com/nodejs/corepack/compare/v0.34.6...v0.34.7) (2026-04-17) + + +### Bug Fixes + +* update package manager versions ([#790](https://github.com/nodejs/corepack/issues/790)) ([e8961d6](https://github.com/nodejs/corepack/commit/e8961d6bdc14b8141fbda008febdd3649022862c)) + ## [0.34.6](https://github.com/nodejs/corepack/compare/v0.34.5...v0.34.6) (2026-01-23) diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs index 2d570f7b70233c..232645cab47b0c 100644 --- a/deps/corepack/dist/lib/corepack.cjs +++ b/deps/corepack/dist/lib/corepack.cjs @@ -1750,7 +1750,7 @@ var require_cmp = __commonJS({ var require_comparator = __commonJS({ ".yarn/cache/semver-npm-7.7.3-9cf7b3b46c-4afe5c9865.zip/node_modules/semver/classes/comparator.js"(exports2, module2) { "use strict"; - var ANY = Symbol("SemVer ANY"); + var ANY = /* @__PURE__ */ Symbol("SemVer ANY"); var Comparator = class _Comparator { static get ANY() { return ANY; @@ -3119,11 +3119,11 @@ var require_proxy_from_env = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/errors.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/errors.js var require_errors = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/errors.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/errors.js"(exports2, module2) { "use strict"; - var kUndiciError = Symbol.for("undici.error.UND_ERR"); + var kUndiciError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR"); var UndiciError = class extends Error { constructor(message) { super(message); @@ -3135,7 +3135,7 @@ var require_errors = __commonJS({ } [kUndiciError] = true; }; - var kConnectTimeoutError = Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"); + var kConnectTimeoutError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"); var ConnectTimeoutError = class extends UndiciError { constructor(message) { super(message); @@ -3148,7 +3148,7 @@ var require_errors = __commonJS({ } [kConnectTimeoutError] = true; }; - var kHeadersTimeoutError = Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"); + var kHeadersTimeoutError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"); var HeadersTimeoutError = class extends UndiciError { constructor(message) { super(message); @@ -3161,7 +3161,7 @@ var require_errors = __commonJS({ } [kHeadersTimeoutError] = true; }; - var kHeadersOverflowError = Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"); + var kHeadersOverflowError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"); var HeadersOverflowError = class extends UndiciError { constructor(message) { super(message); @@ -3174,7 +3174,7 @@ var require_errors = __commonJS({ } [kHeadersOverflowError] = true; }; - var kBodyTimeoutError = Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"); + var kBodyTimeoutError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"); var BodyTimeoutError = class extends UndiciError { constructor(message) { super(message); @@ -3187,7 +3187,7 @@ var require_errors = __commonJS({ } [kBodyTimeoutError] = true; }; - var kResponseStatusCodeError = Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"); + var kResponseStatusCodeError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"); var ResponseStatusCodeError = class extends UndiciError { constructor(message, statusCode, headers, body) { super(message); @@ -3204,7 +3204,7 @@ var require_errors = __commonJS({ } [kResponseStatusCodeError] = true; }; - var kInvalidArgumentError = Symbol.for("undici.error.UND_ERR_INVALID_ARG"); + var kInvalidArgumentError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_INVALID_ARG"); var InvalidArgumentError = class extends UndiciError { constructor(message) { super(message); @@ -3217,7 +3217,7 @@ var require_errors = __commonJS({ } [kInvalidArgumentError] = true; }; - var kInvalidReturnValueError = Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"); + var kInvalidReturnValueError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"); var InvalidReturnValueError = class extends UndiciError { constructor(message) { super(message); @@ -3230,7 +3230,7 @@ var require_errors = __commonJS({ } [kInvalidReturnValueError] = true; }; - var kAbortError = Symbol.for("undici.error.UND_ERR_ABORT"); + var kAbortError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_ABORT"); var AbortError = class extends UndiciError { constructor(message) { super(message); @@ -3243,7 +3243,7 @@ var require_errors = __commonJS({ } [kAbortError] = true; }; - var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED"); + var kRequestAbortedError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_ABORTED"); var RequestAbortedError = class extends AbortError { constructor(message) { super(message); @@ -3256,7 +3256,7 @@ var require_errors = __commonJS({ } [kRequestAbortedError] = true; }; - var kInformationalError = Symbol.for("undici.error.UND_ERR_INFO"); + var kInformationalError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_INFO"); var InformationalError = class extends UndiciError { constructor(message) { super(message); @@ -3269,7 +3269,7 @@ var require_errors = __commonJS({ } [kInformationalError] = true; }; - var kRequestContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"); + var kRequestContentLengthMismatchError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"); var RequestContentLengthMismatchError = class extends UndiciError { constructor(message) { super(message); @@ -3282,7 +3282,7 @@ var require_errors = __commonJS({ } [kRequestContentLengthMismatchError] = true; }; - var kResponseContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"); + var kResponseContentLengthMismatchError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"); var ResponseContentLengthMismatchError = class extends UndiciError { constructor(message) { super(message); @@ -3295,7 +3295,7 @@ var require_errors = __commonJS({ } [kResponseContentLengthMismatchError] = true; }; - var kClientDestroyedError = Symbol.for("undici.error.UND_ERR_DESTROYED"); + var kClientDestroyedError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_DESTROYED"); var ClientDestroyedError = class extends UndiciError { constructor(message) { super(message); @@ -3308,7 +3308,7 @@ var require_errors = __commonJS({ } [kClientDestroyedError] = true; }; - var kClientClosedError = Symbol.for("undici.error.UND_ERR_CLOSED"); + var kClientClosedError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_CLOSED"); var ClientClosedError = class extends UndiciError { constructor(message) { super(message); @@ -3321,7 +3321,7 @@ var require_errors = __commonJS({ } [kClientClosedError] = true; }; - var kSocketError = Symbol.for("undici.error.UND_ERR_SOCKET"); + var kSocketError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_SOCKET"); var SocketError = class extends UndiciError { constructor(message, socket) { super(message); @@ -3335,7 +3335,7 @@ var require_errors = __commonJS({ } [kSocketError] = true; }; - var kNotSupportedError = Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"); + var kNotSupportedError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"); var NotSupportedError = class extends UndiciError { constructor(message) { super(message); @@ -3348,7 +3348,7 @@ var require_errors = __commonJS({ } [kNotSupportedError] = true; }; - var kBalancedPoolMissingUpstreamError = Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"); + var kBalancedPoolMissingUpstreamError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"); var BalancedPoolMissingUpstreamError = class extends UndiciError { constructor(message) { super(message); @@ -3361,7 +3361,7 @@ var require_errors = __commonJS({ } [kBalancedPoolMissingUpstreamError] = true; }; - var kHTTPParserError = Symbol.for("undici.error.UND_ERR_HTTP_PARSER"); + var kHTTPParserError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_HTTP_PARSER"); var HTTPParserError = class extends Error { constructor(message, code2, data) { super(message); @@ -3374,7 +3374,7 @@ var require_errors = __commonJS({ } [kHTTPParserError] = true; }; - var kResponseExceededMaxSizeError = Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"); + var kResponseExceededMaxSizeError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"); var ResponseExceededMaxSizeError = class extends UndiciError { constructor(message) { super(message); @@ -3387,7 +3387,7 @@ var require_errors = __commonJS({ } [kResponseExceededMaxSizeError] = true; }; - var kRequestRetryError = Symbol.for("undici.error.UND_ERR_REQ_RETRY"); + var kRequestRetryError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_REQ_RETRY"); var RequestRetryError = class extends UndiciError { constructor(message, code2, { headers, data }) { super(message); @@ -3403,7 +3403,7 @@ var require_errors = __commonJS({ } [kRequestRetryError] = true; }; - var kResponseError = Symbol.for("undici.error.UND_ERR_RESPONSE"); + var kResponseError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_RESPONSE"); var ResponseError = class extends UndiciError { constructor(message, code2, { headers, data }) { super(message); @@ -3419,7 +3419,7 @@ var require_errors = __commonJS({ } [kResponseError] = true; }; - var kSecureProxyConnectionError = Symbol.for("undici.error.UND_ERR_PRX_TLS"); + var kSecureProxyConnectionError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_PRX_TLS"); var SecureProxyConnectionError = class extends UndiciError { constructor(cause, message, options) { super(message, { cause, ...options ?? {} }); @@ -3433,6 +3433,21 @@ var require_errors = __commonJS({ } [kSecureProxyConnectionError] = true; }; + var kMessageSizeExceededError = /* @__PURE__ */ Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"); + var MessageSizeExceededError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "MessageSizeExceededError"; + this.message = message || "Max decompressed message size exceeded"; + this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kMessageSizeExceededError] === true; + } + get [kMessageSizeExceededError]() { + return true; + } + }; module2.exports = { AbortError, HTTPParserError, @@ -3456,87 +3471,88 @@ var require_errors = __commonJS({ ResponseExceededMaxSizeError, RequestRetryError, ResponseError, - SecureProxyConnectionError + SecureProxyConnectionError, + MessageSizeExceededError }; } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/symbols.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/symbols.js var require_symbols = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/symbols.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/symbols.js"(exports2, module2) { module2.exports = { - kClose: Symbol("close"), - kDestroy: Symbol("destroy"), - kDispatch: Symbol("dispatch"), - kUrl: Symbol("url"), - kWriting: Symbol("writing"), - kResuming: Symbol("resuming"), - kQueue: Symbol("queue"), - kConnect: Symbol("connect"), - kConnecting: Symbol("connecting"), - kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), - kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), - kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), - kKeepAliveTimeoutValue: Symbol("keep alive timeout"), - kKeepAlive: Symbol("keep alive"), - kHeadersTimeout: Symbol("headers timeout"), - kBodyTimeout: Symbol("body timeout"), - kServerName: Symbol("server name"), - kLocalAddress: Symbol("local address"), - kHost: Symbol("host"), - kNoRef: Symbol("no ref"), - kBodyUsed: Symbol("used"), - kBody: Symbol("abstracted request body"), - kRunning: Symbol("running"), - kBlocking: Symbol("blocking"), - kPending: Symbol("pending"), - kSize: Symbol("size"), - kBusy: Symbol("busy"), - kQueued: Symbol("queued"), - kFree: Symbol("free"), - kConnected: Symbol("connected"), - kClosed: Symbol("closed"), - kNeedDrain: Symbol("need drain"), - kReset: Symbol("reset"), - kDestroyed: Symbol.for("nodejs.stream.destroyed"), - kResume: Symbol("resume"), - kOnError: Symbol("on error"), - kMaxHeadersSize: Symbol("max headers size"), - kRunningIdx: Symbol("running index"), - kPendingIdx: Symbol("pending index"), - kError: Symbol("error"), - kClients: Symbol("clients"), - kClient: Symbol("client"), - kParser: Symbol("parser"), - kOnDestroyed: Symbol("destroy callbacks"), - kPipelining: Symbol("pipelining"), - kSocket: Symbol("socket"), - kHostHeader: Symbol("host header"), - kConnector: Symbol("connector"), - kStrictContentLength: Symbol("strict content length"), - kMaxRedirections: Symbol("maxRedirections"), - kMaxRequests: Symbol("maxRequestsPerClient"), - kProxy: Symbol("proxy agent options"), - kCounter: Symbol("socket request counter"), - kInterceptors: Symbol("dispatch interceptors"), - kMaxResponseSize: Symbol("max response size"), - kHTTP2Session: Symbol("http2Session"), - kHTTP2SessionState: Symbol("http2Session state"), - kRetryHandlerDefaultRetry: Symbol("retry agent default retry"), - kConstruct: Symbol("constructable"), - kListeners: Symbol("listeners"), - kHTTPContext: Symbol("http context"), - kMaxConcurrentStreams: Symbol("max concurrent streams"), - kNoProxyAgent: Symbol("no proxy agent"), - kHttpProxyAgent: Symbol("http proxy agent"), - kHttpsProxyAgent: Symbol("https proxy agent") + kClose: /* @__PURE__ */ Symbol("close"), + kDestroy: /* @__PURE__ */ Symbol("destroy"), + kDispatch: /* @__PURE__ */ Symbol("dispatch"), + kUrl: /* @__PURE__ */ Symbol("url"), + kWriting: /* @__PURE__ */ Symbol("writing"), + kResuming: /* @__PURE__ */ Symbol("resuming"), + kQueue: /* @__PURE__ */ Symbol("queue"), + kConnect: /* @__PURE__ */ Symbol("connect"), + kConnecting: /* @__PURE__ */ Symbol("connecting"), + kKeepAliveDefaultTimeout: /* @__PURE__ */ Symbol("default keep alive timeout"), + kKeepAliveMaxTimeout: /* @__PURE__ */ Symbol("max keep alive timeout"), + kKeepAliveTimeoutThreshold: /* @__PURE__ */ Symbol("keep alive timeout threshold"), + kKeepAliveTimeoutValue: /* @__PURE__ */ Symbol("keep alive timeout"), + kKeepAlive: /* @__PURE__ */ Symbol("keep alive"), + kHeadersTimeout: /* @__PURE__ */ Symbol("headers timeout"), + kBodyTimeout: /* @__PURE__ */ Symbol("body timeout"), + kServerName: /* @__PURE__ */ Symbol("server name"), + kLocalAddress: /* @__PURE__ */ Symbol("local address"), + kHost: /* @__PURE__ */ Symbol("host"), + kNoRef: /* @__PURE__ */ Symbol("no ref"), + kBodyUsed: /* @__PURE__ */ Symbol("used"), + kBody: /* @__PURE__ */ Symbol("abstracted request body"), + kRunning: /* @__PURE__ */ Symbol("running"), + kBlocking: /* @__PURE__ */ Symbol("blocking"), + kPending: /* @__PURE__ */ Symbol("pending"), + kSize: /* @__PURE__ */ Symbol("size"), + kBusy: /* @__PURE__ */ Symbol("busy"), + kQueued: /* @__PURE__ */ Symbol("queued"), + kFree: /* @__PURE__ */ Symbol("free"), + kConnected: /* @__PURE__ */ Symbol("connected"), + kClosed: /* @__PURE__ */ Symbol("closed"), + kNeedDrain: /* @__PURE__ */ Symbol("need drain"), + kReset: /* @__PURE__ */ Symbol("reset"), + kDestroyed: /* @__PURE__ */ Symbol.for("nodejs.stream.destroyed"), + kResume: /* @__PURE__ */ Symbol("resume"), + kOnError: /* @__PURE__ */ Symbol("on error"), + kMaxHeadersSize: /* @__PURE__ */ Symbol("max headers size"), + kRunningIdx: /* @__PURE__ */ Symbol("running index"), + kPendingIdx: /* @__PURE__ */ Symbol("pending index"), + kError: /* @__PURE__ */ Symbol("error"), + kClients: /* @__PURE__ */ Symbol("clients"), + kClient: /* @__PURE__ */ Symbol("client"), + kParser: /* @__PURE__ */ Symbol("parser"), + kOnDestroyed: /* @__PURE__ */ Symbol("destroy callbacks"), + kPipelining: /* @__PURE__ */ Symbol("pipelining"), + kSocket: /* @__PURE__ */ Symbol("socket"), + kHostHeader: /* @__PURE__ */ Symbol("host header"), + kConnector: /* @__PURE__ */ Symbol("connector"), + kStrictContentLength: /* @__PURE__ */ Symbol("strict content length"), + kMaxRedirections: /* @__PURE__ */ Symbol("maxRedirections"), + kMaxRequests: /* @__PURE__ */ Symbol("maxRequestsPerClient"), + kProxy: /* @__PURE__ */ Symbol("proxy agent options"), + kCounter: /* @__PURE__ */ Symbol("socket request counter"), + kInterceptors: /* @__PURE__ */ Symbol("dispatch interceptors"), + kMaxResponseSize: /* @__PURE__ */ Symbol("max response size"), + kHTTP2Session: /* @__PURE__ */ Symbol("http2Session"), + kHTTP2SessionState: /* @__PURE__ */ Symbol("http2Session state"), + kRetryHandlerDefaultRetry: /* @__PURE__ */ Symbol("retry agent default retry"), + kConstruct: /* @__PURE__ */ Symbol("constructable"), + kListeners: /* @__PURE__ */ Symbol("listeners"), + kHTTPContext: /* @__PURE__ */ Symbol("http context"), + kMaxConcurrentStreams: /* @__PURE__ */ Symbol("max concurrent streams"), + kNoProxyAgent: /* @__PURE__ */ Symbol("no proxy agent"), + kHttpProxyAgent: /* @__PURE__ */ Symbol("http proxy agent"), + kHttpsProxyAgent: /* @__PURE__ */ Symbol("https proxy agent") }; } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/constants.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/constants.js var require_constants2 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/constants.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/constants.js"(exports2, module2) { "use strict"; var headerNameLowerCasedRecord = {}; var wellknownHeaderNames = [ @@ -3649,9 +3665,9 @@ var require_constants2 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/tree.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/tree.js var require_tree = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/tree.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/tree.js"(exports2, module2) { "use strict"; var { wellknownHeaderNames, @@ -3789,9 +3805,9 @@ var require_tree = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/util.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/util.js var require_util = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/util.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/util.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols(); @@ -4295,21 +4311,21 @@ var require_util = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/readable.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/readable.js var require_readable = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/readable.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/readable.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { Readable: Readable2 } = require("node:stream"); var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors(); var util = require_util(); var { ReadableStreamFrom } = require_util(); - var kConsume = Symbol("kConsume"); - var kReading = Symbol("kReading"); - var kBody = Symbol("kBody"); - var kAbort = Symbol("kAbort"); - var kContentType = Symbol("kContentType"); - var kContentLength = Symbol("kContentLength"); + var kConsume = /* @__PURE__ */ Symbol("kConsume"); + var kReading = /* @__PURE__ */ Symbol("kReading"); + var kBody = /* @__PURE__ */ Symbol("kBody"); + var kAbort = /* @__PURE__ */ Symbol("kAbort"); + var kContentType = /* @__PURE__ */ Symbol("kContentType"); + var kContentLength = /* @__PURE__ */ Symbol("kContentLength"); var noop3 = () => { }; var BodyReadable = class extends Readable2 { @@ -4588,9 +4604,9 @@ var require_readable = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/util.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/util.js var require_util2 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/util.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/util.js"(exports2, module2) { var assert5 = require("node:assert"); var { ResponseStatusCodeError @@ -4649,9 +4665,9 @@ var require_util2 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-request.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-request.js var require_api_request = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-request.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-request.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { Readable: Readable2 } = require_readable(); @@ -4835,13 +4851,13 @@ var require_api_request = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/abort-signal.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/abort-signal.js var require_abort_signal = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) { var { addAbortListener } = require_util(); var { RequestAbortedError } = require_errors(); - var kListener = Symbol("kListener"); - var kSignal = Symbol("kSignal"); + var kListener = /* @__PURE__ */ Symbol("kListener"); + var kSignal = /* @__PURE__ */ Symbol("kSignal"); function abort(self2) { if (self2.abort) { self2.abort(self2[kSignal]?.reason); @@ -4886,9 +4902,9 @@ var require_abort_signal = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-stream.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-stream.js var require_api_stream = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-stream.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-stream.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { finished, PassThrough } = require("node:stream"); @@ -5059,9 +5075,9 @@ var require_api_stream = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-pipeline.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-pipeline.js var require_api_pipeline = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) { "use strict"; var { Readable: Readable2, @@ -5077,7 +5093,7 @@ var require_api_pipeline = __commonJS({ var { AsyncResource } = require("node:async_hooks"); var { addSignal, removeSignal } = require_abort_signal(); var assert5 = require("node:assert"); - var kResume = Symbol("resume"); + var kResume = /* @__PURE__ */ Symbol("resume"); var PipelineRequest = class extends Readable2 { constructor() { super({ autoDestroy: true }); @@ -5259,9 +5275,9 @@ var require_api_pipeline = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-upgrade.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-upgrade.js var require_api_upgrade = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) { "use strict"; var { InvalidArgumentError, SocketError } = require_errors(); var { AsyncResource } = require("node:async_hooks"); @@ -5351,9 +5367,9 @@ var require_api_upgrade = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-connect.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-connect.js var require_api_connect = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/api-connect.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/api-connect.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { AsyncResource } = require("node:async_hooks"); @@ -5441,9 +5457,9 @@ var require_api_connect = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/index.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/index.js var require_api = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/api/index.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/api/index.js"(exports2, module2) { "use strict"; module2.exports.request = require_api_request(); module2.exports.stream = require_api_stream(); @@ -5453,9 +5469,9 @@ var require_api = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/dispatcher.js var require_dispatcher = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) { "use strict"; var EventEmitter2 = require("node:events"); var Dispatcher = class extends EventEmitter2 { @@ -5508,9 +5524,9 @@ var require_dispatcher = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js var require_dispatcher_base = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) { "use strict"; var Dispatcher = require_dispatcher(); var { @@ -5519,16 +5535,23 @@ var require_dispatcher_base = __commonJS({ InvalidArgumentError } = require_errors(); var { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require_symbols(); - var kOnDestroyed = Symbol("onDestroyed"); - var kOnClosed = Symbol("onClosed"); - var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var kOnDestroyed = /* @__PURE__ */ Symbol("onDestroyed"); + var kOnClosed = /* @__PURE__ */ Symbol("onClosed"); + var kInterceptedDispatch = /* @__PURE__ */ Symbol("Intercepted Dispatch"); + var kWebSocketOptions = /* @__PURE__ */ Symbol("webSocketOptions"); var DispatcherBase = class extends Dispatcher { - constructor() { + constructor(opts) { super(); this[kDestroyed] = false; this[kOnDestroyed] = null; this[kClosed] = false; this[kOnClosed] = []; + this[kWebSocketOptions] = opts?.webSocket ?? {}; + } + get webSocketOptions() { + return { + maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 + }; } get destroyed() { return this[kDestroyed]; @@ -5669,9 +5692,9 @@ var require_dispatcher_base = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/fixed-queue.js var require_fixed_queue = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports2, module2) { "use strict"; var kSize = 2048; var kMask = kSize - 1; @@ -5726,11 +5749,11 @@ var require_fixed_queue = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-stats.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool-stats.js var require_pool_stats = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) { var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); - var kPool = Symbol("pool"); + var kPool = /* @__PURE__ */ Symbol("pool"); var PoolStats = class { constructor(pool) { this[kPool] = pool; @@ -5758,29 +5781,29 @@ var require_pool_stats = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-base.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool-base.js var require_pool_base = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) { "use strict"; var DispatcherBase = require_dispatcher_base(); var FixedQueue = require_fixed_queue(); var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); var PoolStats = require_pool_stats(); - var kClients = Symbol("clients"); - var kNeedDrain = Symbol("needDrain"); - var kQueue = Symbol("queue"); - var kClosedResolve = Symbol("closed resolve"); - var kOnDrain = Symbol("onDrain"); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kGetDispatcher = Symbol("get dispatcher"); - var kAddClient = Symbol("add client"); - var kRemoveClient = Symbol("remove client"); - var kStats = Symbol("stats"); + var kClients = /* @__PURE__ */ Symbol("clients"); + var kNeedDrain = /* @__PURE__ */ Symbol("needDrain"); + var kQueue = /* @__PURE__ */ Symbol("queue"); + var kClosedResolve = /* @__PURE__ */ Symbol("closed resolve"); + var kOnDrain = /* @__PURE__ */ Symbol("onDrain"); + var kOnConnect = /* @__PURE__ */ Symbol("onConnect"); + var kOnDisconnect = /* @__PURE__ */ Symbol("onDisconnect"); + var kOnConnectionError = /* @__PURE__ */ Symbol("onConnectionError"); + var kGetDispatcher = /* @__PURE__ */ Symbol("get dispatcher"); + var kAddClient = /* @__PURE__ */ Symbol("add client"); + var kRemoveClient = /* @__PURE__ */ Symbol("remove client"); + var kStats = /* @__PURE__ */ Symbol("stats"); var PoolBase = class extends DispatcherBase { - constructor() { - super(); + constructor(opts) { + super(opts); this[kQueue] = new FixedQueue(); this[kClients] = []; this[kQueued] = 0; @@ -5913,9 +5936,9 @@ var require_pool_base = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/diagnostics.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/diagnostics.js var require_diagnostics = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/diagnostics.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/diagnostics.js"(exports2, module2) { "use strict"; var diagnosticsChannel = require("node:diagnostics_channel"); var util = require("node:util"); @@ -6098,9 +6121,9 @@ var require_diagnostics = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/request.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/request.js var require_request = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/request.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/request.js"(exports2, module2) { "use strict"; var { InvalidArgumentError, @@ -6124,7 +6147,7 @@ var require_request = __commonJS({ var { channels } = require_diagnostics(); var { headerNameLowerCasedRecord } = require_constants2(); var invalidPathRegex = /[^\u0021-\u00ff]/; - var kHandler = Symbol("handler"); + var kHandler = /* @__PURE__ */ Symbol("handler"); var Request = class { constructor(origin, { path: path16, @@ -6157,6 +6180,9 @@ var require_request = __commonJS({ if (upgrade && typeof upgrade !== "string") { throw new InvalidArgumentError("upgrade must be a string"); } + if (upgrade && !isValidHeaderValue(upgrade)) { + throw new InvalidArgumentError("invalid upgrade header"); + } if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { throw new InvalidArgumentError("invalid headersTimeout"); } @@ -6389,12 +6415,18 @@ var require_request = __commonJS({ } else { val = `${val}`; } - if (request.host === null && headerName === "host") { + if (headerName === "host") { + if (request.host !== null) { + throw new InvalidArgumentError("duplicate host header"); + } if (typeof val !== "string") { throw new InvalidArgumentError("invalid host header"); } request.host = val; - } else if (request.contentLength === null && headerName === "content-length") { + } else if (headerName === "content-length") { + if (request.contentLength !== null) { + throw new InvalidArgumentError("duplicate content-length header"); + } request.contentLength = parseInt(val, 10); if (!Number.isFinite(request.contentLength)) { throw new InvalidArgumentError("invalid content-length header"); @@ -6422,15 +6454,15 @@ var require_request = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/util/timers.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/util/timers.js var require_timers = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/util/timers.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/util/timers.js"(exports2, module2) { "use strict"; var fastNow = 0; var RESOLUTION_MS = 1e3; var TICK_MS = (RESOLUTION_MS >> 1) - 1; var fastNowTimeout; - var kFastTimer = Symbol("kFastTimer"); + var kFastTimer = /* @__PURE__ */ Symbol("kFastTimer"); var fastTimers = []; var NOT_IN_LIST = -2; var TO_BE_CLEARED = -1; @@ -6653,9 +6685,9 @@ var require_timers = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/connect.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/connect.js var require_connect = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/core/connect.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/core/connect.js"(exports2, module2) { "use strict"; var net = require("node:net"); var assert5 = require("node:assert"); @@ -6833,9 +6865,9 @@ var require_connect = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/utils.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/utils.js var require_utils = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/utils.js"(exports2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/utils.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.enumToMap = void 0; @@ -6853,9 +6885,9 @@ var require_utils = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/constants.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/constants.js var require_constants3 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/constants.js"(exports2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/constants.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0; @@ -7174,27 +7206,27 @@ var require_constants3 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js var require_llhttp_wasm = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) { "use strict"; var { Buffer: Buffer3 } = require("node:buffer"); module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64"); } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js var require_llhttp_simd_wasm = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) { "use strict"; var { Buffer: Buffer3 } = require("node:buffer"); module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64"); } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/constants.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/constants.js var require_constants4 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/constants.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/constants.js"(exports2, module2) { "use strict"; var corsSafeListedMethods = ( /** @type {const} */ @@ -7410,11 +7442,11 @@ var require_constants4 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/global.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/global.js var require_global = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/global.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/global.js"(exports2, module2) { "use strict"; - var globalOrigin = Symbol.for("undici.globalOrigin.1"); + var globalOrigin = /* @__PURE__ */ Symbol.for("undici.globalOrigin.1"); function getGlobalOrigin() { return globalThis[globalOrigin]; } @@ -7446,9 +7478,9 @@ var require_global = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/data-url.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/data-url.js var require_data_url = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var encoder = new TextEncoder(); @@ -7798,9 +7830,9 @@ var require_data_url = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/webidl.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/webidl.js var require_webidl = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) { "use strict"; var { types, inspect } = require("node:util"); var { markAsUncloneable } = require("node:worker_threads"); @@ -8217,9 +8249,9 @@ var require_webidl = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/util.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/util.js var require_util3 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/util.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/util.js"(exports2, module2) { "use strict"; var { Transform } = require("node:stream"); var zlib = require("node:zlib"); @@ -9087,23 +9119,23 @@ var require_util3 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/symbols.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/symbols.js var require_symbols2 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports2, module2) { "use strict"; module2.exports = { - kUrl: Symbol("url"), - kHeaders: Symbol("headers"), - kSignal: Symbol("signal"), - kState: Symbol("state"), - kDispatcher: Symbol("dispatcher") + kUrl: /* @__PURE__ */ Symbol("url"), + kHeaders: /* @__PURE__ */ Symbol("headers"), + kSignal: /* @__PURE__ */ Symbol("signal"), + kState: /* @__PURE__ */ Symbol("state"), + kDispatcher: /* @__PURE__ */ Symbol("dispatcher") }; } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/file.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/file.js var require_file = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/file.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/file.js"(exports2, module2) { "use strict"; var { Blob: Blob2, File } = require("node:buffer"); var { kState } = require_symbols2(); @@ -9164,9 +9196,9 @@ var require_file = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/formdata.js var require_formdata = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports2, module2) { "use strict"; var { isBlobLike, iteratorMixin } = require_util3(); var { kState } = require_symbols2(); @@ -9311,9 +9343,9 @@ var require_formdata = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/formdata-parser.js var require_formdata_parser = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) { "use strict"; var { isUSVString, bufferToLowerCasedHeaderName } = require_util(); var { utf8DecodeBytes } = require_util3(); @@ -9562,9 +9594,9 @@ var require_formdata_parser = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/body.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/body.js var require_body = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/web/fetch/body.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/web/fetch/body.js"(exports2, module2) { "use strict"; var util = require_util(); var { @@ -9876,9 +9908,9 @@ Content-Type: ${value.type || "application/octet-stream"}\r } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h1.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client-h1.js var require_client_h1 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var util = require_util(); @@ -10896,9 +10928,9 @@ ${len.toString(16)}\r } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h2.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client-h2.js var require_client_h2 = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var { pipeline } = require("node:stream"); @@ -10928,7 +10960,7 @@ var require_client_h2 = __commonJS({ kSize, kHTTPContext } = require_symbols(); - var kOpenStreams = Symbol("open streams"); + var kOpenStreams = /* @__PURE__ */ Symbol("open streams"); var extractBody; var h2ExperimentalWarned = false; var http2; @@ -11437,9 +11469,9 @@ var require_client_h2 = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/handler/redirect-handler.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/handler/redirect-handler.js var require_redirect_handler = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) { "use strict"; var util = require_util(); var { kBodyUsed } = require_symbols(); @@ -11447,7 +11479,7 @@ var require_redirect_handler = __commonJS({ var { InvalidArgumentError } = require_errors(); var EE3 = require("node:events"); var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - var kBody = Symbol("body"); + var kBody = /* @__PURE__ */ Symbol("body"); var BodyAsyncIterable = class { constructor(body) { this[kBody] = body; @@ -11596,9 +11628,9 @@ var require_redirect_handler = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js var require_redirect_interceptor = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports2, module2) { "use strict"; var RedirectHandler = require_redirect_handler(); function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { @@ -11618,9 +11650,9 @@ var require_redirect_interceptor = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client.js var require_client = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) { "use strict"; var assert5 = require("node:assert"); var net = require("node:net"); @@ -11680,7 +11712,7 @@ var require_client = __commonJS({ var connectH1 = require_client_h1(); var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; - var kClosedResolve = Symbol("kClosedResolve"); + var kClosedResolve = /* @__PURE__ */ Symbol("kClosedResolve"); var noop3 = () => { }; function getPipelining(client) { @@ -11720,9 +11752,10 @@ var require_client = __commonJS({ autoSelectFamilyAttemptTimeout, // h2 maxConcurrentStreams, - allowH2 + allowH2, + webSocket } = {}) { - super(); + super({ webSocket }); if (keepAlive !== void 0) { throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); } @@ -12118,9 +12151,9 @@ var require_client = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool.js var require_pool = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/pool.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/pool.js"(exports2, module2) { "use strict"; var { PoolBase, @@ -12136,9 +12169,9 @@ var require_pool = __commonJS({ var util = require_util(); var { kUrl, kInterceptors } = require_symbols(); var buildConnector = require_connect(); - var kOptions = Symbol("options"); - var kConnections = Symbol("connections"); - var kFactory = Symbol("factory"); + var kOptions = /* @__PURE__ */ Symbol("options"); + var kConnections = /* @__PURE__ */ Symbol("connections"); + var kFactory = /* @__PURE__ */ Symbol("factory"); function defaultFactory(origin, opts) { return new Client(origin, opts); } @@ -12156,7 +12189,6 @@ var require_pool = __commonJS({ allowH2, ...options } = {}) { - super(); if (connections != null && (!Number.isFinite(connections) || connections < 0)) { throw new InvalidArgumentError("invalid connections"); } @@ -12177,6 +12209,7 @@ var require_pool = __commonJS({ ...connect }); } + super(options); this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; this[kConnections] = connections || null; this[kUrl] = util.parseOrigin(origin); @@ -12209,9 +12242,9 @@ var require_pool = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/agent.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/agent.js var require_agent = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) { "use strict"; var { InvalidArgumentError } = require_errors(); var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); @@ -12220,19 +12253,18 @@ var require_agent = __commonJS({ var Client = require_client(); var util = require_util(); var createRedirectInterceptor = require_redirect_interceptor(); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kMaxRedirections = Symbol("maxRedirections"); - var kOnDrain = Symbol("onDrain"); - var kFactory = Symbol("factory"); - var kOptions = Symbol("options"); + var kOnConnect = /* @__PURE__ */ Symbol("onConnect"); + var kOnDisconnect = /* @__PURE__ */ Symbol("onDisconnect"); + var kOnConnectionError = /* @__PURE__ */ Symbol("onConnectionError"); + var kMaxRedirections = /* @__PURE__ */ Symbol("maxRedirections"); + var kOnDrain = /* @__PURE__ */ Symbol("onDrain"); + var kFactory = /* @__PURE__ */ Symbol("factory"); + var kOptions = /* @__PURE__ */ Symbol("options"); function defaultFactory(origin, opts) { return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); } var Agent = class extends DispatcherBase { constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); if (typeof factory !== "function") { throw new InvalidArgumentError("factory must be a function."); } @@ -12242,6 +12274,7 @@ var require_agent = __commonJS({ if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { throw new InvalidArgumentError("maxRedirections must be a positive number"); } + super(options); if (connect && typeof connect !== "function") { connect = { ...connect }; } @@ -12306,9 +12339,9 @@ var require_agent = __commonJS({ } }); -// .yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js +// .yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/proxy-agent.js var require_proxy_agent = __commonJS({ - ".yarn/cache/undici-npm-6.22.0-4664dd0314-47903c489d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) { + ".yarn/cache/undici-npm-6.25.0-6002e70879-2597cc6689.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) { "use strict"; var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); var { URL: URL2 } = require("node:url"); @@ -12318,13 +12351,13 @@ var require_proxy_agent = __commonJS({ var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors(); var buildConnector = require_connect(); var Client = require_client(); - var kAgent = Symbol("proxy agent"); - var kClient = Symbol("proxy client"); - var kProxyHeaders = Symbol("proxy headers"); - var kRequestTls = Symbol("request tls settings"); - var kProxyTls = Symbol("proxy tls settings"); - var kConnectEndpoint = Symbol("connect endpoint function"); - var kTunnelProxy = Symbol("tunnel proxy"); + var kAgent = /* @__PURE__ */ Symbol("proxy agent"); + var kClient = /* @__PURE__ */ Symbol("proxy client"); + var kProxyHeaders = /* @__PURE__ */ Symbol("proxy headers"); + var kRequestTls = /* @__PURE__ */ Symbol("request tls settings"); + var kProxyTls = /* @__PURE__ */ Symbol("proxy tls settings"); + var kConnectEndpoint = /* @__PURE__ */ Symbol("connect endpoint function"); + var kTunnelProxy = /* @__PURE__ */ Symbol("tunnel proxy"); function defaultProtocolPort(protocol) { return protocol === "https:" ? 443 : 80; } @@ -12544,37 +12577,37 @@ var init_esm = __esm({ isReadable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws s.pipe !== import_node_stream.default.Writable.prototype.pipe; isWritable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.write === "function" && typeof s.end === "function"; - EOF = Symbol("EOF"); - MAYBE_EMIT_END = Symbol("maybeEmitEnd"); - EMITTED_END = Symbol("emittedEnd"); - EMITTING_END = Symbol("emittingEnd"); - EMITTED_ERROR = Symbol("emittedError"); - CLOSED = Symbol("closed"); - READ = Symbol("read"); - FLUSH = Symbol("flush"); - FLUSHCHUNK = Symbol("flushChunk"); - ENCODING = Symbol("encoding"); - DECODER = Symbol("decoder"); - FLOWING = Symbol("flowing"); - PAUSED = Symbol("paused"); - RESUME = Symbol("resume"); - BUFFER = Symbol("buffer"); - PIPES = Symbol("pipes"); - BUFFERLENGTH = Symbol("bufferLength"); - BUFFERPUSH = Symbol("bufferPush"); - BUFFERSHIFT = Symbol("bufferShift"); - OBJECTMODE = Symbol("objectMode"); - DESTROYED = Symbol("destroyed"); - ERROR = Symbol("error"); - EMITDATA = Symbol("emitData"); - EMITEND = Symbol("emitEnd"); - EMITEND2 = Symbol("emitEnd2"); - ASYNC = Symbol("async"); - ABORT = Symbol("abort"); - ABORTED = Symbol("aborted"); - SIGNAL = Symbol("signal"); - DATALISTENERS = Symbol("dataListeners"); - DISCARDED = Symbol("discarded"); + EOF = /* @__PURE__ */ Symbol("EOF"); + MAYBE_EMIT_END = /* @__PURE__ */ Symbol("maybeEmitEnd"); + EMITTED_END = /* @__PURE__ */ Symbol("emittedEnd"); + EMITTING_END = /* @__PURE__ */ Symbol("emittingEnd"); + EMITTED_ERROR = /* @__PURE__ */ Symbol("emittedError"); + CLOSED = /* @__PURE__ */ Symbol("closed"); + READ = /* @__PURE__ */ Symbol("read"); + FLUSH = /* @__PURE__ */ Symbol("flush"); + FLUSHCHUNK = /* @__PURE__ */ Symbol("flushChunk"); + ENCODING = /* @__PURE__ */ Symbol("encoding"); + DECODER = /* @__PURE__ */ Symbol("decoder"); + FLOWING = /* @__PURE__ */ Symbol("flowing"); + PAUSED = /* @__PURE__ */ Symbol("paused"); + RESUME = /* @__PURE__ */ Symbol("resume"); + BUFFER = /* @__PURE__ */ Symbol("buffer"); + PIPES = /* @__PURE__ */ Symbol("pipes"); + BUFFERLENGTH = /* @__PURE__ */ Symbol("bufferLength"); + BUFFERPUSH = /* @__PURE__ */ Symbol("bufferPush"); + BUFFERSHIFT = /* @__PURE__ */ Symbol("bufferShift"); + OBJECTMODE = /* @__PURE__ */ Symbol("objectMode"); + DESTROYED = /* @__PURE__ */ Symbol("destroyed"); + ERROR = /* @__PURE__ */ Symbol("error"); + EMITDATA = /* @__PURE__ */ Symbol("emitData"); + EMITEND = /* @__PURE__ */ Symbol("emitEnd"); + EMITEND2 = /* @__PURE__ */ Symbol("emitEnd2"); + ASYNC = /* @__PURE__ */ Symbol("async"); + ABORT = /* @__PURE__ */ Symbol("abort"); + ABORTED = /* @__PURE__ */ Symbol("aborted"); + SIGNAL = /* @__PURE__ */ Symbol("signal"); + DATALISTENERS = /* @__PURE__ */ Symbol("dataListeners"); + DISCARDED = /* @__PURE__ */ Symbol("discarded"); defer = (fn2) => Promise.resolve().then(fn2); nodefer = (fn2) => fn2(); isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish"; @@ -13420,34 +13453,34 @@ var init_esm2 = __esm({ import_fs2 = __toESM(require("fs"), 1); init_esm(); writev = import_fs2.default.writev; - _autoClose = Symbol("_autoClose"); - _close = Symbol("_close"); - _ended = Symbol("_ended"); - _fd = Symbol("_fd"); - _finished = Symbol("_finished"); - _flags = Symbol("_flags"); - _flush = Symbol("_flush"); - _handleChunk = Symbol("_handleChunk"); - _makeBuf = Symbol("_makeBuf"); - _mode = Symbol("_mode"); - _needDrain = Symbol("_needDrain"); - _onerror = Symbol("_onerror"); - _onopen = Symbol("_onopen"); - _onread = Symbol("_onread"); - _onwrite = Symbol("_onwrite"); - _open = Symbol("_open"); - _path = Symbol("_path"); - _pos = Symbol("_pos"); - _queue = Symbol("_queue"); - _read = Symbol("_read"); - _readSize = Symbol("_readSize"); - _reading = Symbol("_reading"); - _remain = Symbol("_remain"); - _size = Symbol("_size"); - _write = Symbol("_write"); - _writing = Symbol("_writing"); - _defaultFlag = Symbol("_defaultFlag"); - _errored = Symbol("_errored"); + _autoClose = /* @__PURE__ */ Symbol("_autoClose"); + _close = /* @__PURE__ */ Symbol("_close"); + _ended = /* @__PURE__ */ Symbol("_ended"); + _fd = /* @__PURE__ */ Symbol("_fd"); + _finished = /* @__PURE__ */ Symbol("_finished"); + _flags = /* @__PURE__ */ Symbol("_flags"); + _flush = /* @__PURE__ */ Symbol("_flush"); + _handleChunk = /* @__PURE__ */ Symbol("_handleChunk"); + _makeBuf = /* @__PURE__ */ Symbol("_makeBuf"); + _mode = /* @__PURE__ */ Symbol("_mode"); + _needDrain = /* @__PURE__ */ Symbol("_needDrain"); + _onerror = /* @__PURE__ */ Symbol("_onerror"); + _onopen = /* @__PURE__ */ Symbol("_onopen"); + _onread = /* @__PURE__ */ Symbol("_onread"); + _onwrite = /* @__PURE__ */ Symbol("_onwrite"); + _open = /* @__PURE__ */ Symbol("_open"); + _path = /* @__PURE__ */ Symbol("_path"); + _pos = /* @__PURE__ */ Symbol("_pos"); + _queue = /* @__PURE__ */ Symbol("_queue"); + _read = /* @__PURE__ */ Symbol("_read"); + _readSize = /* @__PURE__ */ Symbol("_readSize"); + _reading = /* @__PURE__ */ Symbol("_reading"); + _remain = /* @__PURE__ */ Symbol("_remain"); + _size = /* @__PURE__ */ Symbol("_size"); + _write = /* @__PURE__ */ Symbol("_write"); + _writing = /* @__PURE__ */ Symbol("_writing"); + _defaultFlag = /* @__PURE__ */ Symbol("_defaultFlag"); + _errored = /* @__PURE__ */ Symbol("_errored"); ReadStream = class extends Minipass { [_errored] = false; [_fd]; @@ -13800,10 +13833,10 @@ var init_esm2 = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/options.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/options.js var argmap, isSyncFile, isAsyncFile, isSyncNoFile, isAsyncNoFile, dealiasKey, dealias; var init_options = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/options.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/options.js"() { argmap = /* @__PURE__ */ new Map([ ["C", "cwd"], ["f", "file"], @@ -13853,10 +13886,10 @@ var init_options = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/make-command.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/make-command.js var makeCommand; var init_make_command = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/make-command.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/make-command.js"() { init_options(); makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => { return Object.assign((opt_ = [], entries, cb) => { @@ -13868,11 +13901,7 @@ var init_make_command = __esm({ cb = entries; entries = void 0; } - if (!entries) { - entries = []; - } else { - entries = Array.from(entries); - } + entries = !entries ? [] : Array.from(entries); const opt = dealias(opt_); validate?.(opt, entries); if (isSyncFile(opt)) { @@ -13882,8 +13911,7 @@ var init_make_command = __esm({ return syncFile(opt, entries); } else if (isAsyncFile(opt)) { const p = asyncFile(opt, entries); - const c = cb ? cb : void 0; - return c ? p.then(() => c(), c) : p; + return cb ? p.then(() => cb(), cb) : p; } else if (isSyncNoFile(opt)) { if (typeof cb === "function") { throw new TypeError("callback not supported for sync tar functions"); @@ -13894,9 +13922,8 @@ var init_make_command = __esm({ throw new TypeError("callback only supported with file option"); } return asyncNoFile(opt, entries); - } else { - throw new Error("impossible options??"); } + throw new Error("impossible options??"); }, { syncFile, asyncFile, @@ -14042,7 +14069,7 @@ var init_esm3 = __esm({ import_buffer.Buffer.concat = makeNoOp ? noop : OriginalBufferConcat; } : (_) => { }; - _superWrite = Symbol("_superWrite"); + _superWrite = /* @__PURE__ */ Symbol("_superWrite"); ZlibError = class extends Error { code; errno; @@ -14059,7 +14086,7 @@ var init_esm3 = __esm({ return "ZlibError"; } }; - _flushFlag = Symbol("flushFlag"); + _flushFlag = /* @__PURE__ */ Symbol("flushFlag"); ZlibBase = class extends Minipass { #sawError = false; #ended = false; @@ -14307,10 +14334,10 @@ var init_esm3 = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/large-numbers.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/large-numbers.js var encode, encodePositive, encodeNegative, parse, twos, pos, onesComp, twosComp; var init_large_numbers = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/large-numbers.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/large-numbers.js"() { encode = (num, buf) => { if (!Number.isSafeInteger(num)) { throw Error("cannot encode number outside of javascript safe integer range"); @@ -14393,10 +14420,10 @@ var init_large_numbers = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/types.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/types.js var isCode, name, code; var init_types = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/types.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/types.js"() { isCode = (c) => name.has(c); name = /* @__PURE__ */ new Map([ ["0", "File"], @@ -14441,10 +14468,10 @@ var init_types = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/header.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/header.js var import_node_path, Header, splitPrefix, decString, decDate, numToDate, decNumber, nanUndef, decSmallNumber, MAXNUM, encNumber, encSmallNumber, octalString, padOctal, encDate, NULLS, encString; var init_header = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/header.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/header.js"() { import_node_path = require("node:path"); init_large_numbers(); init_types(); @@ -14561,7 +14588,7 @@ var init_header = __esm({ this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax; this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax; this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax; - buf[off + 156] = this.#type.charCodeAt(0); + buf[off + 156] = Number(this.#type.codePointAt(0)); this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax; buf.write("ustar\x0000", off + 257, 8); this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax; @@ -14652,10 +14679,10 @@ var init_header = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pax.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/pax.js var import_node_path2, Pax, merge, parseKV, parseKVLine; var init_pax = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pax.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/pax.js"() { import_node_path2 = require("node:path"); init_header(); Pax = class _Pax { @@ -14775,19 +14802,19 @@ var init_pax = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-windows-path.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/normalize-windows-path.js var platform, normalizeWindowsPath; var init_normalize_windows_path = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-windows-path.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/normalize-windows-path.js"() { platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform; - normalizeWindowsPath = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/"); + normalizeWindowsPath = platform !== "win32" ? (p) => p : (p) => p && p.replaceAll(/\\/g, "/"); } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/read-entry.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/read-entry.js var ReadEntry; var init_read_entry = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/read-entry.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/read-entry.js"() { init_esm(); init_normalize_windows_path(); ReadEntry = class extends Minipass { @@ -14908,10 +14935,10 @@ var init_read_entry = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/warn-method.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/warn-method.js var warnMethod; var init_warn_method = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/warn-method.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/warn-method.js"() { warnMethod = (self2, code2, message, data = {}) => { if (self2.file) { data.file = self2.file; @@ -14936,10 +14963,10 @@ var init_warn_method = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/parse.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/parse.js var import_events3, maxMetaEntrySize, gzipHeader, zstdHeader, ZIP_HEADER_LEN, STATE, WRITEENTRY, READENTRY, NEXTENTRY, PROCESSENTRY, EX, GEX, META, EMITMETA, BUFFER2, QUEUE, ENDED, EMITTEDEND, EMIT, UNZIP, CONSUMECHUNK, CONSUMECHUNKSUB, CONSUMEBODY, CONSUMEMETA, CONSUMEHEADER, CONSUMING, BUFFERCONCAT, MAYBEEND, WRITING, ABORTED2, DONE, SAW_VALID_ENTRY, SAW_NULL_BLOCK, SAW_EOF, CLOSESTREAM, noop2, Parser; var init_parse = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/parse.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/parse.js"() { import_events3 = require("events"); init_esm3(); init_header(); @@ -14950,36 +14977,36 @@ var init_parse = __esm({ gzipHeader = Buffer.from([31, 139]); zstdHeader = Buffer.from([40, 181, 47, 253]); ZIP_HEADER_LEN = Math.max(gzipHeader.length, zstdHeader.length); - STATE = Symbol("state"); - WRITEENTRY = Symbol("writeEntry"); - READENTRY = Symbol("readEntry"); - NEXTENTRY = Symbol("nextEntry"); - PROCESSENTRY = Symbol("processEntry"); - EX = Symbol("extendedHeader"); - GEX = Symbol("globalExtendedHeader"); - META = Symbol("meta"); - EMITMETA = Symbol("emitMeta"); - BUFFER2 = Symbol("buffer"); - QUEUE = Symbol("queue"); - ENDED = Symbol("ended"); - EMITTEDEND = Symbol("emittedEnd"); - EMIT = Symbol("emit"); - UNZIP = Symbol("unzip"); - CONSUMECHUNK = Symbol("consumeChunk"); - CONSUMECHUNKSUB = Symbol("consumeChunkSub"); - CONSUMEBODY = Symbol("consumeBody"); - CONSUMEMETA = Symbol("consumeMeta"); - CONSUMEHEADER = Symbol("consumeHeader"); - CONSUMING = Symbol("consuming"); - BUFFERCONCAT = Symbol("bufferConcat"); - MAYBEEND = Symbol("maybeEnd"); - WRITING = Symbol("writing"); - ABORTED2 = Symbol("aborted"); - DONE = Symbol("onDone"); - SAW_VALID_ENTRY = Symbol("sawValidEntry"); - SAW_NULL_BLOCK = Symbol("sawNullBlock"); - SAW_EOF = Symbol("sawEOF"); - CLOSESTREAM = Symbol("closeStream"); + STATE = /* @__PURE__ */ Symbol("state"); + WRITEENTRY = /* @__PURE__ */ Symbol("writeEntry"); + READENTRY = /* @__PURE__ */ Symbol("readEntry"); + NEXTENTRY = /* @__PURE__ */ Symbol("nextEntry"); + PROCESSENTRY = /* @__PURE__ */ Symbol("processEntry"); + EX = /* @__PURE__ */ Symbol("extendedHeader"); + GEX = /* @__PURE__ */ Symbol("globalExtendedHeader"); + META = /* @__PURE__ */ Symbol("meta"); + EMITMETA = /* @__PURE__ */ Symbol("emitMeta"); + BUFFER2 = /* @__PURE__ */ Symbol("buffer"); + QUEUE = /* @__PURE__ */ Symbol("queue"); + ENDED = /* @__PURE__ */ Symbol("ended"); + EMITTEDEND = /* @__PURE__ */ Symbol("emittedEnd"); + EMIT = /* @__PURE__ */ Symbol("emit"); + UNZIP = /* @__PURE__ */ Symbol("unzip"); + CONSUMECHUNK = /* @__PURE__ */ Symbol("consumeChunk"); + CONSUMECHUNKSUB = /* @__PURE__ */ Symbol("consumeChunkSub"); + CONSUMEBODY = /* @__PURE__ */ Symbol("consumeBody"); + CONSUMEMETA = /* @__PURE__ */ Symbol("consumeMeta"); + CONSUMEHEADER = /* @__PURE__ */ Symbol("consumeHeader"); + CONSUMING = /* @__PURE__ */ Symbol("consuming"); + BUFFERCONCAT = /* @__PURE__ */ Symbol("bufferConcat"); + MAYBEEND = /* @__PURE__ */ Symbol("maybeEnd"); + WRITING = /* @__PURE__ */ Symbol("writing"); + ABORTED2 = /* @__PURE__ */ Symbol("aborted"); + DONE = /* @__PURE__ */ Symbol("onDone"); + SAW_VALID_ENTRY = /* @__PURE__ */ Symbol("sawValidEntry"); + SAW_NULL_BLOCK = /* @__PURE__ */ Symbol("sawNullBlock"); + SAW_EOF = /* @__PURE__ */ Symbol("sawEOF"); + CLOSESTREAM = /* @__PURE__ */ Symbol("closeStream"); noop2 = () => true; Parser = class extends import_events3.EventEmitter { file; @@ -15154,7 +15181,7 @@ var init_parse = __esm({ [NEXTENTRY]() { do { } while (this[PROCESSENTRY](this[QUEUE].shift())); - if (!this[QUEUE].length) { + if (this[QUEUE].length === 0) { const re = this[READENTRY]; const drainNow = !re || re.flowing || re.size === re.remain; if (drainNow) { @@ -15190,7 +15217,7 @@ var init_parse = __esm({ return ret; } [EMIT](ev, data, extra) { - if (!this[QUEUE].length && !this[READENTRY]) { + if (this[QUEUE].length === 0 && !this[READENTRY]) { this.emit(ev, data, extra); } else { this[QUEUE].push([ev, data, extra]); @@ -15314,8 +15341,8 @@ var init_parse = __esm({ this[CONSUMECHUNK](chunk); } this[WRITING] = false; - const ret = this[QUEUE].length ? false : this[READENTRY] ? this[READENTRY].flowing : true; - if (!ret && !this[QUEUE].length) { + const ret = this[QUEUE].length > 0 ? false : this[READENTRY] ? this[READENTRY].flowing : true; + if (!ret && this[QUEUE].length === 0) { this[READENTRY]?.once("drain", () => this.emit("drain")); } cb?.(); @@ -15390,14 +15417,7 @@ var init_parse = __esm({ } } if (position < length) { - if (this[BUFFER2]) { - this[BUFFER2] = Buffer.concat([ - chunk.subarray(position), - this[BUFFER2] - ]); - } else { - this[BUFFER2] = chunk.subarray(position); - } + this[BUFFER2] = this[BUFFER2] ? Buffer.concat([chunk.subarray(position), this[BUFFER2]]) : chunk.subarray(position); } } end(chunk, encoding, cb) { @@ -15435,10 +15455,10 @@ var init_parse = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js var stripTrailingSlashes; var init_strip_trailing_slashes = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js"() { stripTrailingSlashes = (str) => { let i = str.length - 1; let slashesStart = -1; @@ -15451,7 +15471,7 @@ var init_strip_trailing_slashes = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/list.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/list.js var list_exports = {}; __export(list_exports, { filesFilter: () => filesFilter, @@ -15459,7 +15479,7 @@ __export(list_exports, { }); var import_node_fs, import_path2, onReadEntryFunction, filesFilter, listFileSync, listFile, list; var init_list = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/list.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/list.js"() { init_esm2(); import_node_fs = __toESM(require("node:fs"), 1); import_path2 = require("path"); @@ -15483,11 +15503,7 @@ var init_list = __esm({ ret = false; else { const m = map.get(file); - if (m !== void 0) { - ret = m; - } else { - ret = mapHas((0, import_path2.dirname)(file), root); - } + ret = m !== void 0 ? m : mapHas((0, import_path2.dirname)(file), root); } map.set(file, ret); return ret; @@ -15522,7 +15538,7 @@ var init_list = __esm({ if (typeof fd === "number") { try { import_node_fs.default.closeSync(fd); - } catch (er) { + } catch { } } } @@ -15558,19 +15574,20 @@ var init_list = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/get-write-flag.js -var import_fs3, platform2, isWindows, O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP, fMapEnabled, fMapLimit, fMapFlag, getWriteFlag; +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/get-write-flag.js +var import_fs3, platform2, isWindows, O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP, fMapEnabled, fMapLimit, fMapFlag, noFollowFlag, getWriteFlag; var init_get_write_flag = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/get-write-flag.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/get-write-flag.js"() { import_fs3 = __toESM(require("fs"), 1); platform2 = process.env.__FAKE_PLATFORM__ || process.platform; isWindows = platform2 === "win32"; - ({ O_CREAT, O_TRUNC, O_WRONLY } = import_fs3.default.constants); + ({ O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = import_fs3.default.constants); UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || import_fs3.default.constants.UV_FS_O_FILEMAP || 0; fMapEnabled = isWindows && !!UV_FS_O_FILEMAP; fMapLimit = 512 * 1024; fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY; - getWriteFlag = !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w"; + noFollowFlag = !isWindows && typeof O_NOFOLLOW === "number" ? O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY : null; + getWriteFlag = noFollowFlag !== null ? () => noFollowFlag : !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w"; } }); @@ -15657,10 +15674,10 @@ var init_esm4 = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/cwd-error.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/cwd-error.js var CwdError; var init_cwd_error = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/cwd-error.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/cwd-error.js"() { CwdError = class extends Error { path; code; @@ -15677,10 +15694,10 @@ var init_cwd_error = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/symlink-error.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/symlink-error.js var SymlinkError; var init_symlink_error = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/symlink-error.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/symlink-error.js"() { SymlinkError = class extends Error { path; symlink; @@ -15698,10 +15715,10 @@ var init_symlink_error = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mkdir.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/mkdir.js var import_node_fs3, import_promises, import_node_path4, checkCwd, mkdir, mkdir_, onmkdir, checkCwdSync, mkdirSync2; var init_mkdir = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mkdir.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/mkdir.js"() { init_esm4(); import_node_fs3 = __toESM(require("node:fs"), 1); import_promises = __toESM(require("node:fs/promises"), 1); @@ -15719,9 +15736,9 @@ var init_mkdir = __esm({ }; mkdir = (dir, opt, cb) => { dir = normalizeWindowsPath(dir); - const umask = opt.umask ?? 18; + const umask2 = opt.umask ?? 18; const mode = opt.mode | 448; - const needChmod = (mode & umask) !== 0; + const needChmod = (mode & umask2) !== 0; const uid = opt.uid; const gid = opt.gid; const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid); @@ -15756,7 +15773,7 @@ var init_mkdir = __esm({ mkdir_(cwd, parts, mode, unlink, cwd, void 0, done); }; mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => { - if (!parts.length) { + if (parts.length === 0) { return cb(null, created); } const p = parts.shift(); @@ -15791,7 +15808,7 @@ var init_mkdir = __esm({ }; checkCwdSync = (dir) => { let ok = false; - let code2 = void 0; + let code2; try { ok = import_node_fs3.default.statSync(dir).isDirectory(); } catch (er) { @@ -15804,9 +15821,9 @@ var init_mkdir = __esm({ }; mkdirSync2 = (dir, opt) => { dir = normalizeWindowsPath(dir); - const umask = opt.umask ?? 18; + const umask2 = opt.umask ?? 18; const mode = opt.mode | 448; - const needChmod = (mode & umask) !== 0; + const needChmod = (mode & umask2) !== 0; const uid = opt.uid; const gid = opt.gid; const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid); @@ -15830,13 +15847,13 @@ var init_mkdir = __esm({ } const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir)); const parts = sub.split("/"); - let created = void 0; + let created; for (let p = parts.shift(), part = cwd; p && (part += "/" + p); p = parts.shift()) { part = normalizeWindowsPath(import_node_path4.default.resolve(part)); try { import_node_fs3.default.mkdirSync(part, mode); created = created || part; - } catch (er) { + } catch { const st = import_node_fs3.default.lstatSync(part); if (st.isDirectory()) { continue; @@ -15855,10 +15872,10 @@ var init_mkdir = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-absolute-path.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/strip-absolute-path.js var import_node_path5, isAbsolute, parse3, stripAbsolutePath; var init_strip_absolute_path = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/strip-absolute-path.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/strip-absolute-path.js"() { import_node_path5 = require("node:path"); ({ isAbsolute, parse: parse3 } = import_node_path5.win32); stripAbsolutePath = (path16) => { @@ -15875,12 +15892,12 @@ var init_strip_absolute_path = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/winchars.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/winchars.js var raw, win, toWin, toRaw, encode2, decode; var init_winchars = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/winchars.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/winchars.js"() { raw = ["|", "<", ">", "?", ":"]; - win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0))); + win = raw.map((char) => String.fromCodePoint(61440 + Number(char.codePointAt(0)))); toWin = new Map(raw.map((char, i) => [char, win[i]])); toRaw = new Map(win.map((char, i) => [char, raw[i]])); encode2 = (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s); @@ -15888,10 +15905,10 @@ var init_winchars = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-unicode.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/normalize-unicode.js var normalizeCache, MAX, cache, normalizeUnicode; var init_normalize_unicode = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/normalize-unicode.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/normalize-unicode.js"() { normalizeCache = /* @__PURE__ */ Object.create(null); MAX = 1e4; cache = /* @__PURE__ */ new Set(); @@ -15917,10 +15934,10 @@ var init_normalize_unicode = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/path-reservations.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/path-reservations.js var import_node_path6, platform3, isWindows2, getDirs, PathReservations; var init_path_reservations = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/path-reservations.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/path-reservations.js"() { import_node_path6 = require("node:path"); init_normalize_unicode(); init_strip_trailing_slashes(); @@ -15928,7 +15945,7 @@ var init_path_reservations = __esm({ isWindows2 = platform3 === "win32"; getDirs = (path16) => { const dirs = path16.split("/").slice(0, -1).reduce((set, path17) => { - const s = set[set.length - 1]; + const s = set.at(-1); if (s !== void 0) { path17 = (0, import_node_path6.join)(s, path17); } @@ -15965,7 +15982,7 @@ var init_path_reservations = __esm({ if (!q) { this.#queues.set(dir, [/* @__PURE__ */ new Set([fn2])]); } else { - const l = q[q.length - 1]; + const l = q.at(-1); if (l instanceof Set) { l.add(fn2); } else { @@ -16057,10 +16074,18 @@ var init_path_reservations = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/unpack.js -var import_node_assert, import_node_crypto, import_node_fs4, import_node_path7, ONENTRY, CHECKFS, CHECKFS2, ISREUSABLE, MAKEFS, FILE, DIRECTORY, LINK, SYMLINK, HARDLINK, UNSUPPORTED, CHECKPATH, STRIPABSOLUTEPATH, MKDIR, ONERROR, PENDING, PEND, UNPEND, ENDED2, MAYBECLOSE, SKIP, DOCHOWN, UID, GID, CHECKED_CWD, platform4, isWindows3, DEFAULT_MAX_DEPTH, unlinkFile, unlinkFileSync, uint32, Unpack, callSync, UnpackSync; +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/process-umask.js +var umask; +var init_process_umask = __esm({ + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/process-umask.js"() { + umask = () => process.umask(); + } +}); + +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/unpack.js +var import_node_assert, import_node_crypto, import_node_fs4, import_node_path7, ONENTRY, CHECKFS, CHECKFS2, ISREUSABLE, MAKEFS, FILE, DIRECTORY, LINK, SYMLINK, HARDLINK, ENSURE_NO_SYMLINK, UNSUPPORTED, CHECKPATH, STRIPABSOLUTEPATH, MKDIR, ONERROR, PENDING, PEND, UNPEND, ENDED2, MAYBECLOSE, SKIP, DOCHOWN, UID, GID, CHECKED_CWD, platform4, isWindows3, DEFAULT_MAX_DEPTH, unlinkFile, unlinkFileSync, uint32, Unpack, callSync, UnpackSync; var init_unpack = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/unpack.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/unpack.js"() { init_esm2(); import_node_assert = __toESM(require("node:assert"), 1); import_node_crypto = require("node:crypto"); @@ -16073,31 +16098,34 @@ var init_unpack = __esm({ init_strip_absolute_path(); init_winchars(); init_path_reservations(); - ONENTRY = Symbol("onEntry"); - CHECKFS = Symbol("checkFs"); - CHECKFS2 = Symbol("checkFs2"); - ISREUSABLE = Symbol("isReusable"); - MAKEFS = Symbol("makeFs"); - FILE = Symbol("file"); - DIRECTORY = Symbol("directory"); - LINK = Symbol("link"); - SYMLINK = Symbol("symlink"); - HARDLINK = Symbol("hardlink"); - UNSUPPORTED = Symbol("unsupported"); - CHECKPATH = Symbol("checkPath"); - STRIPABSOLUTEPATH = Symbol("stripAbsolutePath"); - MKDIR = Symbol("mkdir"); - ONERROR = Symbol("onError"); - PENDING = Symbol("pending"); - PEND = Symbol("pend"); - UNPEND = Symbol("unpend"); - ENDED2 = Symbol("ended"); - MAYBECLOSE = Symbol("maybeClose"); - SKIP = Symbol("skip"); - DOCHOWN = Symbol("doChown"); - UID = Symbol("uid"); - GID = Symbol("gid"); - CHECKED_CWD = Symbol("checkedCwd"); + init_symlink_error(); + init_process_umask(); + ONENTRY = /* @__PURE__ */ Symbol("onEntry"); + CHECKFS = /* @__PURE__ */ Symbol("checkFs"); + CHECKFS2 = /* @__PURE__ */ Symbol("checkFs2"); + ISREUSABLE = /* @__PURE__ */ Symbol("isReusable"); + MAKEFS = /* @__PURE__ */ Symbol("makeFs"); + FILE = /* @__PURE__ */ Symbol("file"); + DIRECTORY = /* @__PURE__ */ Symbol("directory"); + LINK = /* @__PURE__ */ Symbol("link"); + SYMLINK = /* @__PURE__ */ Symbol("symlink"); + HARDLINK = /* @__PURE__ */ Symbol("hardlink"); + ENSURE_NO_SYMLINK = /* @__PURE__ */ Symbol("ensureNoSymlink"); + UNSUPPORTED = /* @__PURE__ */ Symbol("unsupported"); + CHECKPATH = /* @__PURE__ */ Symbol("checkPath"); + STRIPABSOLUTEPATH = /* @__PURE__ */ Symbol("stripAbsolutePath"); + MKDIR = /* @__PURE__ */ Symbol("mkdir"); + ONERROR = /* @__PURE__ */ Symbol("onError"); + PENDING = /* @__PURE__ */ Symbol("pending"); + PEND = /* @__PURE__ */ Symbol("pend"); + UNPEND = /* @__PURE__ */ Symbol("unpend"); + ENDED2 = /* @__PURE__ */ Symbol("ended"); + MAYBECLOSE = /* @__PURE__ */ Symbol("maybeClose"); + SKIP = /* @__PURE__ */ Symbol("skip"); + DOCHOWN = /* @__PURE__ */ Symbol("doChown"); + UID = /* @__PURE__ */ Symbol("uid"); + GID = /* @__PURE__ */ Symbol("gid"); + CHECKED_CWD = /* @__PURE__ */ Symbol("checkedCwd"); platform4 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform; isWindows3 = platform4 === "win32"; DEFAULT_MAX_DEPTH = 1024; @@ -16174,11 +16202,7 @@ var init_unpack = __esm({ this.gid = void 0; this.setOwner = false; } - if (opt.preserveOwner === void 0 && typeof opt.uid !== "number") { - this.preserveOwner = !!(process.getuid && process.getuid() === 0); - } else { - this.preserveOwner = !!opt.preserveOwner; - } + this.preserveOwner = opt.preserveOwner === void 0 && typeof opt.uid !== "number" ? !!(process.getuid && process.getuid() === 0) : !!opt.preserveOwner; this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() : void 0; this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? process.getgid() : void 0; this.maxDepth = typeof opt.maxDepth === "number" ? opt.maxDepth : DEFAULT_MAX_DEPTH; @@ -16191,7 +16215,7 @@ var init_unpack = __esm({ this.unlink = !!opt.unlink; this.cwd = normalizeWindowsPath(import_node_path7.default.resolve(opt.cwd || process.cwd())); this.strip = Number(opt.strip) || 0; - this.processUmask = !this.chmod ? 0 : typeof opt.processUmask === "number" ? opt.processUmask : process.umask(); + this.processUmask = !this.chmod ? 0 : typeof opt.processUmask === "number" ? opt.processUmask : umask(); this.umask = typeof opt.umask === "number" ? opt.umask : this.processUmask; this.dmode = opt.dmode || 511 & ~this.umask; this.fmode = opt.fmode || 438 & ~this.umask; @@ -16217,30 +16241,30 @@ var init_unpack = __esm({ // return true if the field was successfully sanitized [STRIPABSOLUTEPATH](entry, field) { const p = entry[field]; + const { type } = entry; if (!p || this.preservePaths) return true; - const parts = p.split("/"); + const [root, stripped] = stripAbsolutePath(p); + const parts = stripped.replaceAll(/\\/g, "/").split("/"); if (parts.includes("..") || /* c8 ignore next */ isWindows3 && /^[a-z]:\.\.$/i.test(parts[0] ?? "")) { - if (field === "path") { + if (field === "path" || type === "Link") { this.warn("TAR_ENTRY_ERROR", `${field} contains '..'`, { entry, [field]: p }); return false; - } else { - const entryDir = import_node_path7.default.posix.dirname(entry.path); - const resolved = import_node_path7.default.posix.normalize(import_node_path7.default.posix.join(entryDir, p)); - if (resolved.startsWith("../") || resolved === "..") { - this.warn("TAR_ENTRY_ERROR", `${field} escapes extraction directory`, { - entry, - [field]: p - }); - return false; - } + } + const entryDir = import_node_path7.default.posix.dirname(entry.path); + const resolved = import_node_path7.default.posix.normalize(import_node_path7.default.posix.join(entryDir, parts.join("/"))); + if (resolved.startsWith("../") || resolved === "..") { + this.warn("TAR_ENTRY_ERROR", `${field} escapes extraction directory`, { + entry, + [field]: p + }); + return false; } } - const [root, stripped] = stripAbsolutePath(p); if (root) { entry[field] = String(stripped); this.warn("TAR_ENTRY_INFO", `stripping ${root} from absolute ${field}`, { @@ -16250,6 +16274,7 @@ var init_unpack = __esm({ } return true; } + // no IO, just string checking for absolute indicators [CHECKPATH](entry) { const p = normalizeWindowsPath(entry.path); const parts = p.split("/"); @@ -16280,11 +16305,7 @@ var init_unpack = __esm({ if (!this[STRIPABSOLUTEPATH](entry, "path") || !this[STRIPABSOLUTEPATH](entry, "linkpath")) { return false; } - if (import_node_path7.default.isAbsolute(entry.path)) { - entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(entry.path)); - } else { - entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, entry.path)); - } + entry.absolute = import_node_path7.default.isAbsolute(entry.path) ? normalizeWindowsPath(import_node_path7.default.resolve(entry.path)) : normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, entry.path)); if (!this.preservePaths && typeof entry.absolute === "string" && entry.absolute.indexOf(this.cwd + "/") !== 0 && entry.absolute !== this.cwd) { this.warn("TAR_ENTRY_ERROR", "path escaped extraction target", { entry, @@ -16464,11 +16485,33 @@ var init_unpack = __esm({ entry.resume(); } [SYMLINK](entry, done) { - this[LINK](entry, String(entry.linkpath), "symlink", done); + const parts = normalizeWindowsPath(import_node_path7.default.relative(this.cwd, import_node_path7.default.resolve(import_node_path7.default.dirname(String(entry.absolute)), String(entry.linkpath)))).split("/"); + this[ENSURE_NO_SYMLINK](entry, this.cwd, parts, () => this[LINK](entry, String(entry.linkpath), "symlink", done), (er) => { + this[ONERROR](er, entry); + done(); + }); } [HARDLINK](entry, done) { const linkpath = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, String(entry.linkpath))); - this[LINK](entry, linkpath, "link", done); + const parts = normalizeWindowsPath(String(entry.linkpath)).split("/"); + this[ENSURE_NO_SYMLINK](entry, this.cwd, parts, () => this[LINK](entry, linkpath, "link", done), (er) => { + this[ONERROR](er, entry); + done(); + }); + } + [ENSURE_NO_SYMLINK](entry, cwd, parts, done, onError) { + const p = parts.shift(); + if (this.preservePaths || p === void 0) + return done(); + const t = import_node_path7.default.resolve(cwd, p); + import_node_fs4.default.lstat(t, (er, st) => { + if (er) + return done(); + if (st?.isSymbolicLink()) { + return onError(new SymlinkError(t, import_node_path7.default.resolve(t, parts.join("/")))); + } + this[ENSURE_NO_SYMLINK](entry, t, parts, done, onError); + }); } [PEND]() { this[PENDING]++; @@ -16689,7 +16732,7 @@ var init_unpack = __esm({ } catch (futimeser) { try { import_node_fs4.default.utimesSync(String(entry.absolute), atime, mtime); - } catch (utimeser) { + } catch { er = futimeser; } } @@ -16702,7 +16745,7 @@ var init_unpack = __esm({ } catch (fchowner) { try { import_node_fs4.default.chownSync(String(entry.absolute), Number(uid), Number(gid)); - } catch (chowner) { + } catch { er = er || fchowner; } } @@ -16721,13 +16764,13 @@ var init_unpack = __esm({ if (entry.mtime && !this.noMtime) { try { import_node_fs4.default.utimesSync(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime); - } catch (er2) { + } catch { } } if (this[DOCHOWN](entry)) { try { import_node_fs4.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry))); - } catch (er2) { + } catch { } } done(); @@ -16750,10 +16793,25 @@ var init_unpack = __esm({ return er; } } + [ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) { + if (this.preservePaths || parts.length === 0) + return done(); + let t = cwd; + for (const p of parts) { + t = import_node_path7.default.resolve(t, p); + const [er, st] = callSync(() => import_node_fs4.default.lstatSync(t)); + if (er) + return done(); + if (st.isSymbolicLink()) { + return onError(new SymlinkError(t, import_node_path7.default.resolve(cwd, parts.join("/")))); + } + } + done(); + } [LINK](entry, linkpath, link, done) { - const ls = `${link}Sync`; + const linkSync = `${link}Sync`; try { - import_node_fs4.default[ls](linkpath, String(entry.absolute)); + import_node_fs4.default[linkSync](linkpath, String(entry.absolute)); done(); entry.resume(); } catch (er) { @@ -16764,14 +16822,14 @@ var init_unpack = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/extract.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/extract.js var extract_exports = {}; __export(extract_exports, { extract: () => extract }); var import_node_fs5, extractFileSync, extractFile, extract; var init_extract = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/extract.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/extract.js"() { init_esm2(); import_node_fs5 = __toESM(require("node:fs"), 1); init_list(); @@ -17814,8 +17872,8 @@ var require_graceful_fs = __commonJS({ var gracefulQueue; var previousSymbol; if (typeof Symbol === "function" && typeof Symbol.for === "function") { - gracefulQueue = Symbol.for("graceful-fs.queue"); - previousSymbol = Symbol.for("graceful-fs.previous"); + gracefulQueue = /* @__PURE__ */ Symbol.for("graceful-fs.queue"); + previousSymbol = /* @__PURE__ */ Symbol.for("graceful-fs.previous"); } else { gracefulQueue = "___graceful-fs.queue"; previousSymbol = "___graceful-fs.previous"; @@ -18517,10 +18575,10 @@ ${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mode-fix.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/mode-fix.js var modeFix; var init_mode_fix = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/mode-fix.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/mode-fix.js"() { modeFix = (mode, isDir, portable) => { mode &= 4095; if (portable) { @@ -18542,10 +18600,10 @@ var init_mode_fix = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/write-entry.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/write-entry.js var import_fs11, import_path9, prefixPath, maxReadSize, PROCESS, FILE2, DIRECTORY2, SYMLINK2, HARDLINK2, HEADER, READ2, LSTAT, ONLSTAT, ONREAD, ONREADLINK, OPENFILE, ONOPENFILE, CLOSE, MODE, AWAITDRAIN, ONDRAIN, PREFIX, WriteEntry, WriteEntrySync, WriteEntryTar, getType; var init_write_entry = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/write-entry.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/write-entry.js"() { import_fs11 = __toESM(require("fs"), 1); init_esm(); import_path9 = __toESM(require("path"), 1); @@ -18566,24 +18624,24 @@ var init_write_entry = __esm({ return stripTrailingSlashes(prefix) + "/" + path16; }; maxReadSize = 16 * 1024 * 1024; - PROCESS = Symbol("process"); - FILE2 = Symbol("file"); - DIRECTORY2 = Symbol("directory"); - SYMLINK2 = Symbol("symlink"); - HARDLINK2 = Symbol("hardlink"); - HEADER = Symbol("header"); - READ2 = Symbol("read"); - LSTAT = Symbol("lstat"); - ONLSTAT = Symbol("onlstat"); - ONREAD = Symbol("onread"); - ONREADLINK = Symbol("onreadlink"); - OPENFILE = Symbol("openfile"); - ONOPENFILE = Symbol("onopenfile"); - CLOSE = Symbol("close"); - MODE = Symbol("mode"); - AWAITDRAIN = Symbol("awaitDrain"); - ONDRAIN = Symbol("ondrain"); - PREFIX = Symbol("prefix"); + PROCESS = /* @__PURE__ */ Symbol("process"); + FILE2 = /* @__PURE__ */ Symbol("file"); + DIRECTORY2 = /* @__PURE__ */ Symbol("directory"); + SYMLINK2 = /* @__PURE__ */ Symbol("symlink"); + HARDLINK2 = /* @__PURE__ */ Symbol("hardlink"); + HEADER = /* @__PURE__ */ Symbol("header"); + READ2 = /* @__PURE__ */ Symbol("read"); + LSTAT = /* @__PURE__ */ Symbol("lstat"); + ONLSTAT = /* @__PURE__ */ Symbol("onlstat"); + ONREAD = /* @__PURE__ */ Symbol("onread"); + ONREADLINK = /* @__PURE__ */ Symbol("onreadlink"); + OPENFILE = /* @__PURE__ */ Symbol("openfile"); + ONOPENFILE = /* @__PURE__ */ Symbol("onopenfile"); + CLOSE = /* @__PURE__ */ Symbol("close"); + MODE = /* @__PURE__ */ Symbol("mode"); + AWAITDRAIN = /* @__PURE__ */ Symbol("awaitDrain"); + ONDRAIN = /* @__PURE__ */ Symbol("ondrain"); + PREFIX = /* @__PURE__ */ Symbol("prefix"); WriteEntry = class extends Minipass { path; portable; @@ -18645,8 +18703,8 @@ var init_write_entry = __esm({ } this.win32 = !!opt.win32 || process.platform === "win32"; if (this.win32) { - this.path = decode(this.path.replace(/\\/g, "/")); - p = p.replace(/\\/g, "/"); + this.path = decode(this.path.replaceAll(/\\/g, "/")); + p = p.replaceAll(/\\/g, "/"); } this.absolute = normalizeWindowsPath(opt.absolute || import_path9.default.resolve(this.cwd, p)); if (this.path === "") { @@ -18956,7 +19014,7 @@ var init_write_entry = __esm({ try { this[CLOSE](() => { }); - } catch (er) { + } catch { } } } @@ -19129,7 +19187,10 @@ var init_write_entry = __esm({ } if (cb) this.once("finish", cb); - chunk ? super.end(chunk, cb) : super.end(cb); + if (chunk) + super.end(chunk, cb); + else + super.end(cb); return this; } }; @@ -19511,10 +19572,10 @@ var init_esm5 = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pack.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/pack.js var import_fs12, import_path10, PackJob, EOF2, ONSTAT, ENDED3, QUEUE2, CURRENT, PROCESS2, PROCESSING, PROCESSJOB, JOBS, JOBDONE, ADDFSENTRY, ADDTARENTRY, STAT, READDIR, ONREADDIR, PIPE, ENTRY, ENTRYOPT, WRITEENTRYCLASS, WRITE, ONDRAIN2, Pack, PackSync; var init_pack = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/pack.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/pack.js"() { import_fs12 = __toESM(require("fs"), 1); init_write_entry(); init_esm(); @@ -19539,26 +19600,26 @@ var init_pack = __esm({ } }; EOF2 = Buffer.alloc(1024); - ONSTAT = Symbol("onStat"); - ENDED3 = Symbol("ended"); - QUEUE2 = Symbol("queue"); - CURRENT = Symbol("current"); - PROCESS2 = Symbol("process"); - PROCESSING = Symbol("processing"); - PROCESSJOB = Symbol("processJob"); - JOBS = Symbol("jobs"); - JOBDONE = Symbol("jobDone"); - ADDFSENTRY = Symbol("addFSEntry"); - ADDTARENTRY = Symbol("addTarEntry"); - STAT = Symbol("stat"); - READDIR = Symbol("readdir"); - ONREADDIR = Symbol("onreaddir"); - PIPE = Symbol("pipe"); - ENTRY = Symbol("entry"); - ENTRYOPT = Symbol("entryOpt"); - WRITEENTRYCLASS = Symbol("writeEntryClass"); - WRITE = Symbol("write"); - ONDRAIN2 = Symbol("ondrain"); + ONSTAT = /* @__PURE__ */ Symbol("onStat"); + ENDED3 = /* @__PURE__ */ Symbol("ended"); + QUEUE2 = /* @__PURE__ */ Symbol("queue"); + CURRENT = /* @__PURE__ */ Symbol("current"); + PROCESS2 = /* @__PURE__ */ Symbol("process"); + PROCESSING = /* @__PURE__ */ Symbol("processing"); + PROCESSJOB = /* @__PURE__ */ Symbol("processJob"); + JOBS = /* @__PURE__ */ Symbol("jobs"); + JOBDONE = /* @__PURE__ */ Symbol("jobDone"); + ADDFSENTRY = /* @__PURE__ */ Symbol("addFSEntry"); + ADDTARENTRY = /* @__PURE__ */ Symbol("addTarEntry"); + STAT = /* @__PURE__ */ Symbol("stat"); + READDIR = /* @__PURE__ */ Symbol("readdir"); + ONREADDIR = /* @__PURE__ */ Symbol("onreaddir"); + PIPE = /* @__PURE__ */ Symbol("pipe"); + ENTRY = /* @__PURE__ */ Symbol("entry"); + ENTRYOPT = /* @__PURE__ */ Symbol("entryOpt"); + WRITEENTRYCLASS = /* @__PURE__ */ Symbol("writeEntryClass"); + WRITE = /* @__PURE__ */ Symbol("write"); + ONDRAIN2 = /* @__PURE__ */ Symbol("ondrain"); Pack = class extends Minipass { sync = false; opt; @@ -19769,7 +19830,7 @@ var init_pack = __esm({ } } this[PROCESSING] = false; - if (this[ENDED3] && !this[QUEUE2].length && this[JOBS] === 0) { + if (this[ENDED3] && this[QUEUE2].length === 0 && this[JOBS] === 0) { if (this.zip) { this.zip.end(EOF2); } else { @@ -19945,14 +20006,14 @@ var init_pack = __esm({ } }); -// .yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/create.js +// .yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/create.js var create_exports = {}; __export(create_exports, { create: () => create }); var import_node_path8, createFileSync, createFile, addFilesSync, addFilesAsync, createSync, createAsync, create; var init_create = __esm({ - ".yarn/cache/tar-npm-7.5.6-955ec951c2-08af380703.zip/node_modules/tar/dist/esm/create.js"() { + ".yarn/cache/tar-npm-7.5.13-3c09e37d51-5c65b80847.zip/node_modules/tar/dist/esm/create.js"() { init_esm2(); import_node_path8 = __toESM(require("node:path"), 1); init_list(); @@ -19977,7 +20038,7 @@ var init_create = __esm({ stream.on("close", res); p.on("error", rej); }); - addFilesAsync(p, files); + addFilesAsync(p, files).catch((er) => p.emit("error", er)); return promise; }; addFilesSync = (p, files) => { @@ -19996,8 +20057,7 @@ var init_create = __esm({ p.end(); }; addFilesAsync = async (p, files) => { - for (let i = 0; i < files.length; i++) { - const file = String(files[i]); + for (const file of files) { if (file.charAt(0) === "@") { await list({ file: import_node_path8.default.resolve(String(p.cwd), file.slice(1)), @@ -20019,7 +20079,7 @@ var init_create = __esm({ }; createAsync = (opt, files) => { const p = new Pack(opt); - addFilesAsync(p, files); + addFilesAsync(p, files).catch((er) => p.emit("error", er)); return p; }; create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => { @@ -20189,7 +20249,7 @@ function formatMarkdownish(text, { format, paragraphs }) { } // .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/utils.mjs -var isOptionSymbol = Symbol(`clipanion/isOption`); +var isOptionSymbol = /* @__PURE__ */ Symbol(`clipanion/isOption`); function makeCommandOption(spec) { return { ...spec, [isOptionSymbol]: true }; } @@ -20785,7 +20845,7 @@ var reducers = { return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` }; } }; -var NoLimits = Symbol(); +var NoLimits = /* @__PURE__ */ Symbol(); var CommandBuilder = class { constructor(cliIndex, cliOpts) { this.allOptionNames = []; @@ -21089,7 +21149,7 @@ var HelpCommand = class _HelpCommand extends Command { }; // .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Cli.mjs -var errorCommandSymbol = Symbol(`clipanion/errorCommand`); +var errorCommandSymbol = /* @__PURE__ */ Symbol(`clipanion/errorCommand`); var Cli = class _Cli { constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) { this.registrations = /* @__PURE__ */ new Map(); @@ -21703,7 +21763,7 @@ function String2(descriptor, ...args) { } // package.json -var version = "0.34.6"; +var version = "0.34.7"; // sources/Engine.ts var import_fs6 = __toESM(require("fs")); @@ -21717,7 +21777,7 @@ var import_valid4 = __toESM(require_valid2()); var config_default = { definitions: { npm: { - default: "11.8.0+sha1.d1bc924deb3b4d412055b1755098a70bf8a4713b", + default: "11.12.1+sha1.432da55a9f0ca53c982740fabe2b081a38019fb1", fetchLatestFrom: { type: "npm", package: "npm" @@ -21754,7 +21814,7 @@ var config_default = { } }, pnpm: { - default: "10.28.1+sha1.20817ab95fb7f61154ba5ff3bcb61f27defb6142", + default: "10.33.0+sha1.46a0bef28aad690765997ab6da6d5475bdd4148e", fetchLatestFrom: { type: "npm", package: "pnpm" @@ -21835,7 +21895,7 @@ var config_default = { package: "yarn" }, transparent: { - default: "4.12.0+sha224.877304a94a6946ab1d58a358df5ff8af2f7c9d86ea506f05f5c9df05", + default: "4.14.1+sha224.88b7a7244bbd9040380c417f7eb556d85c67640b651f113cb4c72113", commands: [ [ "yarn", @@ -22811,6 +22871,7 @@ var Engine = class { constructor(config = config_default) { this.config = config; } + config; getPackageManagerFor(binaryName) { for (const packageManager of SupportedPackageManagerSet) { for (const rangeDefinition of Object.values(this.config.definitions[packageManager].ranges)) { diff --git a/deps/corepack/package.json b/deps/corepack/package.json index ab39b1d2dd8e20..d800198cb7df0f 100644 --- a/deps/corepack/package.json +++ b/deps/corepack/package.json @@ -1,6 +1,6 @@ { "name": "corepack", - "version": "0.34.6", + "version": "0.34.7", "homepage": "https://github.com/nodejs/corepack#readme", "bugs": { "url": "https://github.com/nodejs/corepack/issues" @@ -29,15 +29,15 @@ "better-sqlite3": "^11.7.2", "clipanion": "patch:clipanion@npm%3A3.2.1#~/.yarn/patches/clipanion-npm-3.2.1-fc9187f56c.patch", "debug": "^4.1.1", - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "eslint": "^9.22.0", "proxy-from-env": "^1.1.0", "semver": "^7.6.3", "supports-color": "^10.0.0", - "tar": "^7.5.4", + "tar": "^7.5.11", "tsx": "^4.16.2", "typescript": "^5.7.3", - "undici": "^6.21.2", + "undici": "^6.24.0", "v8-compile-cache": "^2.3.0", "vitest": "^3.0.5", "which": "^5.0.0" diff --git a/deps/googletest/include/gtest/gtest.h b/deps/googletest/include/gtest/gtest.h index 4218adebde20d8..f4a91ee44d0aeb 100644 --- a/deps/googletest/include/gtest/gtest.h +++ b/deps/googletest/include/gtest/gtest.h @@ -137,6 +137,10 @@ GTEST_DECLARE_int32_(repeat); // only torn down once, for the last. GTEST_DECLARE_bool_(recreate_environments_when_repeating); +// Together these flags determine which tests are run if the test is sharded. +GTEST_DECLARE_int32_(shard_index); +GTEST_DECLARE_int32_(total_shards); + // This flag controls whether Google Test includes Google Test internal // stack frames in failure stack traces. GTEST_DECLARE_bool_(show_internal_stack_frames); diff --git a/deps/googletest/src/gtest-internal-inl.h b/deps/googletest/src/gtest-internal-inl.h index 6a39b93be132e2..2ebfcd39ef5645 100644 --- a/deps/googletest/src/gtest-internal-inl.h +++ b/deps/googletest/src/gtest-internal-inl.h @@ -246,15 +246,12 @@ GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars); // be created, prints an error and exits. void WriteToShardStatusFileIfNeeded(); -// Checks whether sharding is enabled by examining the relevant -// environment variable values. If the variables are present, -// but inconsistent (e.g., shard_index >= total_shards), prints -// an error and exits. If in_subprocess_for_death_test, sharding is +// Checks whether sharding is enabled by examining the relevant flag values. +// If the flags are set, but inconsistent (e.g., shard_index >= total_shards), +// prints an error and exits. If in_subprocess_for_death_test, sharding is // disabled because it must only be applied to the original test // process. Otherwise, we could filter out death tests we intended to execute. -GTEST_API_ bool ShouldShard(const char* total_shards_str, - const char* shard_index_str, - bool in_subprocess_for_death_test); +GTEST_API_ bool ShouldShard(bool in_subprocess_for_death_test); // Parses the environment variable var as a 32-bit integer. If it is unset, // returns default_val. If it is not a 32-bit integer, prints an error and diff --git a/deps/googletest/src/gtest.cc b/deps/googletest/src/gtest.cc index 8a3801807e7dfa..ac90786a091b51 100644 --- a/deps/googletest/src/gtest.cc +++ b/deps/googletest/src/gtest.cc @@ -407,6 +407,18 @@ GTEST_DEFINE_bool_( "if exceptions are enabled or exit the program with a non-zero code " "otherwise. For use with an external test framework."); +GTEST_DEFINE_int32_( + shard_index, + testing::internal::Int32FromEnvOrDie(testing::kTestShardIndex, -1), + "The zero-based index of the shard to run. A value of -1 " + "(the default) indicates that sharding is disabled."); + +GTEST_DEFINE_int32_( + total_shards, + testing::internal::Int32FromEnvOrDie(testing::kTestTotalShards, -1), + "The total number of shards to use when running tests in parallel. " + "A value of -1 (the default) indicates that sharding is disabled."); + #if GTEST_USE_OWN_FLAGFILE_FLAG_ GTEST_DEFINE_string_( flagfile, testing::internal::StringFromGTestEnv("flagfile", ""), @@ -3475,11 +3487,11 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart( filter); } - if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { - const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); - ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %s.\n", + if (internal::ShouldShard(false)) { + const int32_t shard_index = GTEST_FLAG_GET(shard_index); + ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %d.\n", static_cast(shard_index) + 1, - internal::posix::GetEnv(kTestTotalShards)); + GTEST_FLAG_GET(total_shards)); } if (GTEST_FLAG_GET(shuffle)) { @@ -5983,8 +5995,7 @@ bool UnitTestImpl::RunAllTests() { #endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_) #endif // GTEST_HAS_DEATH_TEST - const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, - in_subprocess_for_death_test); + const bool should_shard = ShouldShard(in_subprocess_for_death_test); // Compares the full test names with the filter to decide which // tests to run. @@ -6196,45 +6207,44 @@ void WriteToShardStatusFileIfNeeded() { } #endif // GTEST_HAS_FILE_SYSTEM -// Checks whether sharding is enabled by examining the relevant -// environment variable values. If the variables are present, -// but inconsistent (i.e., shard_index >= total_shards), prints -// an error and exits. If in_subprocess_for_death_test, sharding is -// disabled because it must only be applied to the original test -// process. Otherwise, we could filter out death tests we intended to execute. -bool ShouldShard(const char* total_shards_env, const char* shard_index_env, - bool in_subprocess_for_death_test) { +// Checks whether sharding is enabled by examining the relevant command line +// arguments. If the arguments are present, but inconsistent +// (i.e., shard_index >= total_shards), prints an error and exits. +// If in_subprocess_for_death_test, sharding is disabled because it must only +// be applied to the original test process. Otherwise, we could filter out death +// tests we intended to execute. +bool ShouldShard(bool in_subprocess_for_death_test) { if (in_subprocess_for_death_test) { return false; } - const int32_t total_shards = Int32FromEnvOrDie(total_shards_env, -1); - const int32_t shard_index = Int32FromEnvOrDie(shard_index_env, -1); + const int32_t total_shards = GTEST_FLAG_GET(total_shards); + const int32_t shard_index = GTEST_FLAG_GET(shard_index); if (total_shards == -1 && shard_index == -1) { return false; } else if (total_shards == -1 && shard_index != -1) { - const Message msg = Message() << "Invalid environment variables: you have " - << kTestShardIndex << " = " << shard_index - << ", but have left " << kTestTotalShards - << " unset.\n"; + const Message msg = Message() + << "Invalid sharding: you have " << kTestShardIndex + << " = " << shard_index << ", but have left " + << kTestTotalShards << " unset.\n"; ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str()); fflush(stdout); exit(EXIT_FAILURE); } else if (total_shards != -1 && shard_index == -1) { const Message msg = Message() - << "Invalid environment variables: you have " - << kTestTotalShards << " = " << total_shards - << ", but have left " << kTestShardIndex << " unset.\n"; + << "Invalid sharding: you have " << kTestTotalShards + << " = " << total_shards << ", but have left " + << kTestShardIndex << " unset.\n"; ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str()); fflush(stdout); exit(EXIT_FAILURE); } else if (shard_index < 0 || shard_index >= total_shards) { const Message msg = - Message() << "Invalid environment variables: we require 0 <= " - << kTestShardIndex << " < " << kTestTotalShards - << ", but you have " << kTestShardIndex << "=" << shard_index - << ", " << kTestTotalShards << "=" << total_shards << ".\n"; + Message() << "Invalid sharding: we require 0 <= " << kTestShardIndex + << " < " << kTestTotalShards << ", but you have " + << kTestShardIndex << "=" << shard_index << ", " + << kTestTotalShards << "=" << total_shards << ".\n"; ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str()); fflush(stdout); exit(EXIT_FAILURE); @@ -6277,11 +6287,10 @@ bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { // . Returns the number of tests that should run. int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL - ? Int32FromEnvOrDie(kTestTotalShards, -1) + ? GTEST_FLAG_GET(total_shards) : -1; - const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL - ? Int32FromEnvOrDie(kTestShardIndex, -1) - : -1; + const int32_t shard_index = + shard_tests == HONOR_SHARDING_PROTOCOL ? GTEST_FLAG_GET(shard_index) : -1; const PositiveAndNegativeUnitTestFilter gtest_flag_filter( GTEST_FLAG_GET(filter)); @@ -6810,6 +6819,8 @@ static bool ParseGoogleTestFlag(const char* const arg) { GTEST_INTERNAL_PARSE_FLAG(print_utf8); GTEST_INTERNAL_PARSE_FLAG(random_seed); GTEST_INTERNAL_PARSE_FLAG(repeat); + GTEST_INTERNAL_PARSE_FLAG(shard_index); + GTEST_INTERNAL_PARSE_FLAG(total_shards); GTEST_INTERNAL_PARSE_FLAG(recreate_environments_when_repeating); GTEST_INTERNAL_PARSE_FLAG(shuffle); GTEST_INTERNAL_PARSE_FLAG(stack_trace_depth); diff --git a/deps/icu-small/source/data/in/icudt78l.dat.bz2 b/deps/icu-small/source/data/in/icudt78l.dat.bz2 index 21ca4cef1c2acd..100dcc6f6776a9 100644 Binary files a/deps/icu-small/source/data/in/icudt78l.dat.bz2 and b/deps/icu-small/source/data/in/icudt78l.dat.bz2 differ diff --git a/deps/libffi/ChangeLog.old b/deps/libffi/ChangeLog.old new file mode 100644 index 00000000000000..8de1ca75f1b921 --- /dev/null +++ b/deps/libffi/ChangeLog.old @@ -0,0 +1,7407 @@ +Libffi change logs used to be maintained in separate ChangeLog files. +These days we generate them directly from the git commit messages. +The old ChangeLog files are saved here in order to maintain the historical +record. + +============================================================================= +From the old ChangeLog.libffi-3.1 file... + +2014-03-16 Josh Triplett + + * ChangeLog: Archive to ChangeLog.libffi-3.1 and delete. Future + changelogs will come from git, with autogenerated snapshots shipped in + distributed tarballs. + +2014-03-16 Josh Triplett + + Add support for stdcall, thiscall, and fastcall on non-Windows + x86-32. + + Linux supports the stdcall calling convention, either via + functions explicitly declared with the stdcall attribute, or via + code compiled with -mrtd which effectively makes stdcall the + default. + + This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on + non-Windows x86-32 platforms, as non-default calling conventions. + + * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32. + * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and + FFI_FASTCALL on non-Windows x86-32. Increase trampoline size to + accomodate these calling conventions, and unify some ifdeffery. + * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and + FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery. + * src/x86/win32.S: Support compiling on non-Windows x86-32 + platforms. On those platforms, avoid redefining the SYSV symbols + already provided by src/x86/sysv.S. + * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows. + #define __stdcall if needed. + * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows. + #define __fastcall if needed. + * testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows. + * testsuite/libffi.call/fastthis2_win32.c: Ditto. + * testsuite/libffi.call/fastthis3_win32.c: Ditto. + * testsuite/libffi.call/many2_win32.c: Ditto. + * testsuite/libffi.call/many_win32.c: Ditto. + * testsuite/libffi.call/strlen2_win32.c: Ditto. + * testsuite/libffi.call/strlen_win32.c: Ditto. + * testsuite/libffi.call/struct1_win32.c: Ditto. + * testsuite/libffi.call/struct2_win32.c: Ditto. + +2014-03-16 Josh Triplett + + * prep_cif.c: Remove unnecessary ifdef for X86_WIN32. + ffi_prep_cif_core had a special case for X86_WIN32, checking for + FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI + range before returning FFI_BAD_ABI. However, on X86_WIN32, + FFI_THISCALL already falls in that range, making the special case + unnecessary. Remove it. + +2014-03-16 Josh Triplett + + * testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/closure_thiscall.c: Remove fragile stack + pointer checks. These files included inline assembly to save the + stack pointer before and after the call, and compare the values. + However, compilers can and do leave the stack in different states + for these two pieces of inline assembly, such as by saving a + temporary value on the stack across the call; observed with gcc + -Os, and verified as spurious through careful inspection of + disassembly. + +2014-03-16 Josh Triplett + + * testsuite/libffi.call/many.c: Avoid spurious failure due to + excess floating-point precision. + * testsuite/libffi.call/many_win32.c: Ditto. + +2014-03-16 Josh Triplett + + * libtool-ldflags: Re-add. + +2014-03-16 Josh Triplett + + * Makefile.in, aclocal.m4, compile, config.guess, config.sub, + configure, depcomp, include/Makefile.in, install-sh, + libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, + m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, + man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete + autogenerated files from version control. + * .gitignore: Add autogenerated files. + * autogen.sh: New script to generate the autogenerated files. + * README: Document requirement to run autogen.sh when building + directly from version control. + * .travis.yml: Run autogen.sh + +2014-03-14 Anthony Green + + * configure, Makefile.in: Rebuilt. + +2014-03-10 Mike Hommey + + * configure.ac: Allow building for mipsel with Android NDK r8. + * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single + quotes. + +2014-03-10 Landry Breuil + + * configure.ac: Ensure the linker supports @unwind sections in libffi. + +2014-03-01 Anthony Green + + * Makefile.am (EXTRA_DIST): Replace old scripts with + generate-darwin-source-and-headers.py. + * Makefile.in: Rebuilt. + +2014-02-28 Anthony Green + + * Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for + --enable-debug builds. + * Makefile.in: Rebuilt. + +2014-02-28 Makoto Kato + + * src/closures.c: Fix build failure when using clang for Android. + +2014-02-28 Marcin Wojdyr + + * libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead + of -L${libdir}. + +2014-02-28 Paulo Pizarro + + * src/bfin/sysv.S: Calling functions in shared libraries requires + considering the GOT. + +2014-02-28 Josh Triplett + + * src/x86/ffi64.c (classify_argument): Handle case where + FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE. + +2014-02-28 Anthony Green + + * ltmain.sh: Generate with libtool-2.4.2.418. + * m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto. + * configure: Rebuilt. + +2014-02-28 Dominik Vogt + + * configure.ac (AC_ARG_ENABLE struct): Fix typo in help + message. + (AC_ARG_ENABLE raw_api): Ditto. + * configure, fficonfig.h.in: Rebuilt. + +2014-02-28 Will Newton + + * src/arm/sysv.S: Initialize IP register with FP. + +2014-02-28 Yufeng Zhang + + * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the + main CFA reg; update cfi_rel_offset. + +2014-02-15 Marcus Comstedt + + * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove + assumption on contents of r11 in closure. + +2014-02-09 Heiher + + * src/mips/n32.S: Fix call floating point va function. + +2014-01-21 Zachary Waldowski + + * src/aarch64/ffi.c: Fix missing semicolons on assertions under + debug mode. + +2013-12-30 Zachary Waldowski + + * .gitignore: Exclude darwin_* generated source and build_* trees. + * src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang + previous prototype warnings. + * src/arm/ffi.c: Prevent NULL dereference, fix short type warning + * src/dlmalloc.c: Fix warnings from set_segment_flags return type, + and the native use of size_t for malloc on platforms + * src/arm/sysv.S: Use unified syntax. Clang clean-ups for + ARM_FUNC_START. + * generate-osx-source-and-headers.py: Remove. + * build-ios.sh: Remove. + * libffi.xcodeproj/project.pbxproj: Rebuild targets. Include + x86_64+aarch64 pieces in library. Export headers properly. + * src/x86/ffi64.c: More Clang warning clean-ups. + * src/closures.c (open_temp_exec_file_dir): Use size_t. + * src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result. + * src/aarch64/sysv.S: Use CNAME for global symbols. Only use + .size for ELF targets. + * src/aarch64/ffi.c: Clean up for double == long double. Clean up + from Clang warnings. Use Clang cache invalidation builtin. Use + size_t in place of unsigned in many places. Accommodate for + differences in Apple AArch64 ABI. + +2013-12-02 Daniel Rodríguez Troitiño + + * generate-darwin-source-and-headers.py: Clean up, modernize, + merged version of previous scripts. + +2013-11-21 Anthony Green + + * configure, Makefile.in, include/Makefile.in, include/ffi.h.in, + man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt. + +2013-11-21 Alan Modra + + * Makefile.am (EXTRA_DIST): Add new src/powerpc files. + (nodist_libffi_la_SOURCES ): Likewise. + * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc. + * include/ffi.h.in (ffi_prep_types): Declare. + * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types. + * src/types.c (FFI_NONCONST_TYPEDEF): Define and use for + HAVE_LONG_DOUBLE_VARIANT. + * src/powerpc/ffi_powerpc.h: New file. + * src/powerpc/ffi.c: Split into.. + * src/powerpc/ffi_sysv.c: ..new file, and.. + * src/powerpc/ffi_linux64.c: ..new file, rewriting parts. + * src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI + selection as bits controlling features. + * src/powerpc/linux64.S: For consistency, use POWERPC64 rather + than __powerpc64__. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. Move .note.FNU-stack + inside guard. + * src/powerpc/sysv.S: Likewise. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * Makefile.in: Regenerate. + +2013-11-20 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use + NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their + 32-bit versions for 64-bit code. + * src/powerpc/linux64_closure.S: Don't use the return value area + as a parameter save area on ELFv2. + +2013-11-18 Iain Sandoe + + * src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding. + * src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase + labels. + +2013-11-18 Anthony Green + + * src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of + function. + * src/arm/ffi.c (ffi_closure_inner): Moderize function declaration + to appease compiler. + Thanks for Gregory P. Smith . + +2013-11-18 Anthony Green + + * README (tested): Mention PowerPC ELFv2. + +2013-11-16 Alan Modra + + * src/powerpc/ppc_closure.S: Move errant #endif to where it belongs. + Don't bl .Luint128. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF + test to select parameter save sizing for ELFv2 vs. ELFv1. + * src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG, + FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define. + (FFI_TRAMPOLINE_SIZE): Define variant for ELFv2. + * src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define. + (discover_homogeneous_aggregate): New function. + (ffi_prep_args64): Adjust start of param save area for ELFv2. + Handle homogenous floating point struct parms. + (ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2. + Handle ELFv2 return values. Set FLAG_ARG_NEEDS_PSAVE. Handle + homogenous floating point structs. + (ffi_call): Increase size of smst_buffer for ELFv2. Handle ELFv2. + (flush_icache): Compile for ELFv2. + (ffi_prep_closure_loc): Set up ELFv2 trampoline. + (ffi_closure_helper_LINUX64): Don't return all structs directly + to caller. Handle homogenous floating point structs. Handle + ELFv2 struct return values. + * src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for + ELFv2. Adjust toc save location. Call function pointer using + r12. Handle FLAG_RETURNS_SMST. Don't predict branches. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2 + for ELFv2. Define ELFv2 versions of STACKFRAME, PARMSAVE, and + RETVAL. Handle possibly missing parameter save area. Handle + ELFv2 return values. + (.note.GNU-stack): Move inside outer #ifdef. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08 + change. Do not consume an int arg when returning a small struct + for FFI_SYSV ABI. + (ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST. + Properly copy bounce buffer to destination. + * src/powerpc/sysv.S: Revert 2013-02-08 change. + * src/powerpc/ppc_closure.S: Remove stray '+'. + +2013-11-16 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters + according to __STRUCT_PARM_ALIGN__. + (ffi_prep_cif_machdep_core): Likewise. + (ffi_closure_helper_LINUX64): Likewise. + +2013-11-16 Alan Modra + + * src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28. + (.note.GNU-stack): Move inside outer #ifdef. + * src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE, + RETVAL): Define and use throughout. + (ffi_closure_LINUX64): Save fprs before buying stack. + (.note.GNU-stack): Move inside outer #ifdef. + +2013-11-16 Alan Modra + + * src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define. + (FFI_EXTRA_CIF_FIELDS): Define. + * src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the + ABI, not to both fpr and param save area. + (ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep. + Keep initial flags. Formatting. Remove dead FFI_LINUX_SOFT_FLOAT + code. + (ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions. + (ffi_closure_helper_LINUX64): Pass floating point as per ABI, + not to both fpr and parameter save areas. + + * libffi/testsuite/libffi.call/cls_double_va.c (main): Correct + function cast and don't call ffi_prep_cif. + * libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise. + +2013-11-15 Andrew Haley + + * doc/libffi.texi (Closure Example): Fix the sample code. + * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. + +2013-11-15 Andrew Haley + + * testsuite/libffi.call/va_struct1.c (main): Fix broken test. + * testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise + * testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise. + * testsuite/libffi.call/va_1.c (main): Likewise. + +2013-11-14 David Schneider + + * src/arm/ffi.c: Fix register allocation for mixed float and + doubles. + * testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase + for many mixed float and double arguments. + +2013-11-13 Alan Modra + + * doc/libffi.texi (Simple Example): Correct example code. + * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt. + +2013-11-13 Anthony Green + + * include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler + based build. (Thanks to tmr111116 on github) + +2013-11-09 Anthony Green + + * m4/libtool.m4: Refresh. + * configure, Makefile.in: Rebuilt. + * README: Add more notes about next release. + +2013-11-09 Shigeharu TAKENO + + * m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize + UltraSPARC-IIi as ultrasparc3. + +2013-11-06 Mark Kettenis + + * src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to + 16-bytes. + +2013-11-06 Konstantin Belousov + + * src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler + source as not requiring executable stack. + +2013-11-02 Anthony Green + + * doc/libffi.texi (The Basics): Clarify return value buffer size + requirements. Also, NULL result buffer pointers are no longer + supported. + * doc/libffi.info: Rebuilt. + +2013-11-02 Mischa Jonker + + * Makefile.am (nodist_libffi_la_SOURCES): Fix build error. + * Makefile.in: Rebuilt. + +2013-11-02 David Schneider + + * src/arm/ffi.c: more robust argument handling for closures on arm hardfloat + * testsuite/libffi.call/many_mixed.c: New file. + * testsuite/libffi.call/cls_many_mixed_args.c: More tests. + +2013-11-02 Vitaly Budovski + + * src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32. + +2013-10-23 Mark H Weaver + + * src/mips/ffi.c: Fix handling of uint32_t arguments on the + MIPS N32 ABI. + +2013-10-13 Sandra Loosemore + + * README: Add Nios II to table of supported platforms. + * Makefile.am (EXTRA_DIST): Add nios2 files. + (nodist_libffi_la_SOURCES): Likewise. + * Makefile.in: Regenerated. + * configure.ac (nios2*-linux*): New host. + (NIOS2): Add AM_CONDITIONAL. + * configure: Regenerated. + * src/nios2/ffi.c: New. + * src/nios2/ffitarget.h: New. + * src/nios2/sysv.S: New. + * src/prep_cif.c (initialize_aggregate): Handle extra structure + alignment via FFI_AGGREGATE_ALIGNMENT. + (ffi_prep_cif_core): Conditionalize structure return for NIOS2. + +2013-10-10 Sandra Loosemore + + * testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn): + Fix uninitialized variable. + +2013-10-11 Marcus Shawcroft + + * testsuite/libffi.call/many.c (many): Replace * with +. + +2013-10-08 Ondřej Bílka + + * src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c, + src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c, + src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c, + src/microblaze/sysv.S, src/powerpc/darwin_closure.S, + src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c, + src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix + spelling errors. + +2013-10-08 Anthony Green + + * aclocal.m4, compile, config.guess, config.sub, depcomp, + install-sh, mdate-sh, missing, texinfo.tex: Update from upstream. + * configure.ac: Update version to 3.0.14-rc0. + * Makefile.in, configure, Makefile.in, include/Makefile.in, + man/Makefile.in, testsuite/Makefile.in: Rebuilt. + * README: Mention M88K and VAX. + +2013-07-15 Miod Vallat + + * Makefile.am, + configure.ac, + src/m88k/ffi.c, + src/m88k/ffitarget.h, + src/m88k/obsd.S, + src/vax/elfbsd.S, + src/vax/ffi.c, + src/vax/ffitarget.h: Add m88k and vax support. + +2013-06-24 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration + before statements. + (ffi_prep_args64): Support little-endian. + (ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise. + +2013-06-12 Mischa Jonker + + * configure.ac: Add support for ARC. + * Makefile.am: Likewise. + * README: Add ARC details. + * src/arc/arcompact.S: New. + * src/arc/ffi.c: Likewise. + * src/arc/ffitarget.h: Likewise. + +2013-03-28 David Schneider + + * src/arm/ffi.c: Fix support for ARM hard-float calling convention. + * src/arm/sysv.S: call different methods for SYSV and VFP ABIs. + * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with + mixed arguments, many doubles. + * testsuite/libffi.call/many_double.c: testcase for calling a function using + more than 8 doubles. + * testcase/libffi.call/many.c: use absolute value to check result against an + epsilon + +2013-03-17 Anthony Green + + * README: Update for 3.0.13. + * configure.ac: Ditto. + * configure: Rebuilt. + * doc/*: Update version. + +2013-03-17 Dave Korn + + * src/closures.c (is_emutramp_enabled + [!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside + enclosing #if scope. + +2013-03-17 Anthony Green + + * configure.ac: Only modify toolexecdir in certain cases. + * configure: Rebuilt. + +2013-03-16 Gilles Talis + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use + fparg_count,etc on __NO_FPRS__ targets. + +2013-03-16 Alan Hourihane + + * src/m68k/sysv.S (epilogue): Don't use extb instruction on + m680000 machines. + +2013-03-16 Alex Gaynor + + * src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack. + +2013-03-13 Markos Chandras + + * configure.ac: Add support for Imagination Technologies Meta. + * Makefile.am: Likewise. + * README: Add Imagination Technologies Meta details. + * src/metag/ffi.c: New. + * src/metag/ffitarget.h: Likewise. + * src/metag/sysv.S: Likewise. + +2013-02-24 Andreas Schwab + + * doc/libffi.texi (Structures): Fix missing category argument of + @deftp. + +2013-02-11 Anthony Green + + * configure.ac: Update release number to 3.0.12. + * configure: Rebuilt. + * README: Update release info. + +2013-02-10 Anthony Green + + * README: Add Moxie. + * src/moxie/ffi.c: Created. + * src/moxie/eabi.S: Created. + * src/moxie/ffitarget.h: Created. + * Makefile.am (nodist_libffi_la_SOURCES): Add Moxie. + * Makefile.in: Rebuilt. + * configure.ac: Add Moxie. + * configure: Rebuilt. + * testsuite/libffi.call/huge_struct.c: Disable format string + warnings for moxie*-*-elf tests. + +2013-02-10 Anthony Green + + * Makefile.am (LTLDFLAGS): Fix reference. + * Makefile.in: Rebuilt. + +2013-02-10 Anthony Green + + * README: Update supported platforms. Update test results link. + +2013-02-09 Anthony Green + + * testsuite/libffi.call/negint.c: Remove forced -O2. + * testsuite/libffi.call/many2.c (foo): Remove GCCism. + * testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition. + + * src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong + closure return type fix developed by Martin v. Löwis for cpython + fork. + +2013-02-08 Andreas Tobler + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct + support. + * src/powerpc/sysv.S: Ditto. + +2013-02-08 Anthony Green + + * testsuite/libffi.call/cls_longdouble.c: Remove xfail for + arm*-*-*. + +2013-02-08 Anthony Green + + * src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC. + +2013-02-08 Matthias Klose + + * man/ffi_prep_cif.3: Clean up for debian linter. + +2013-02-08 Peter Bergner + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed + on the stack. + +2013-02-08 Anthony Green + + * Makefile.am (EXTRA_DIST): Add missing files. + * testsuite/Makefile.am (EXTRA_DIST): Ditto. + * Makefile.in: Rebuilt. + +2013-02-08 Anthony Green + + * configure.ac: Move sparc asm config checks to within functions + for compatibility with sun tools. + * configure: Rebuilt. + * src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9 + systems. + * src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache + flusher. + +2013-02-08 Nathan Rossi + + * src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of + small big-endian structures. + (ffi_prep_args): Ditto. + +2013-02-07 Anthony Green + + * src/sparc/v8.S (ffi_call_v8): Fix typo from last patch + (effectively hiding ffi_call_v8). + +2013-02-07 Anthony Green + + * configure.ac: Update bug reporting address. + * configure.in: Rebuild. + + * src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for + Sun compiler. + * src/sparc/ffi.c (ffi_call): Remove warning. + Call ffi_flush_icache for non-GCC builds. + (ffi_prep_closure_loc): Use ffi_flush_icache. + + * Makefile.am (EXTRA_DIST): Add libtool-ldflags. + * Makefile.in: Rebuilt. + * libtool-ldflags: New file. + +2013-02-07 Daniel Schepler + + * configure.ac: Correctly identify x32 systems as 64-bit. + * m4/libtool.m4: Remove libtool expr error. + * aclocal.m4, configure: Rebuilt. + +2013-02-07 Anthony Green + + * configure.ac: Fix GCC usage test. + * configure: Rebuilt. + * README: Mention LLVM/GCC x86_64 issue. + * testsuite/Makefile.in: Rebuilt. + +2013-02-07 Anthony Green + + * testsuite/libffi.call/cls_double_va.c (main): Replace // style + comments with /* */ for xlc compiler. + * testsuite/libffi.call/stret_large.c (main): Ditto. + * testsuite/libffi.call/stret_large2.c (main): Ditto. + * testsuite/libffi.call/nested_struct1.c (main): Ditto. + * testsuite/libffi.call/huge_struct.c (main): Ditto. + * testsuite/libffi.call/float_va.c (main): Ditto. + * testsuite/libffi.call/cls_struct_va1.c (main): Ditto. + * testsuite/libffi.call/cls_pointer_stack.c (main): Ditto. + * testsuite/libffi.call/cls_pointer.c (main): Ditto. + * testsuite/libffi.call/cls_longdouble_va.c (main): Ditto. + +2013-02-06 Anthony Green + + * man/ffi_prep_cif.3: Clean up for debian lintian checker. + +2013-02-06 Anthony Green + + * Makefile.am (pkgconfigdir): Add missing pkgconfig install bits. + * Makefile.in: Rebuild. + +2013-02-02 Mark H Weaver + + * src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed + via general purpose registers. + +2013-01-21 Nathan Rossi + + * README: Add MicroBlaze details. + * Makefile.am: Add MicroBlaze support. + * configure.ac: Likewise. + * src/microblaze/ffi.c: New. + * src/microblaze/ffitarget.h: Likewise. + * src/microblaze/sysv.S: Likewise. + +2013-01-21 Nathan Rossi + * testsuite/libffi.call/return_uc.c: Fixed issue. + +2013-01-21 Chris Zankel + + * README: Add Xtensa support. + * Makefile.am: Likewise. + * configure.ac: Likewise. + * Makefile.in Regenerate. + * configure: Likewise. + * src/prep_cif.c: Handle Xtensa. + * src/xtensa: New directory. + * src/xtensa/ffi.c: New file. + * src/xtensa/ffitarget.h: Ditto. + * src/xtensa/sysv.S: Ditto. + +2013-01-11 Anthony Green + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style + comments with /* */ for xlc compiler. + * src/powerpc/aix.S (ffi_call_AIX): Ditto. + * testsuite/libffi.call/ffitest.h (allocate_mmap): Delete + deprecated inline function. + * testsuite/libffi.special/ffitestcxx.h: Ditto. + * README: Add update for AIX support. + +2013-01-11 Anthony Green + + * configure.ac: Robustify pc relative reloc check. + * m4/ax_cc_maxopt.m4: Don't -malign-double. This is an ABI + changing option for 32-bit x86. + * aclocal.m4, configure: Rebuilt. + * README: Update supported target list. + +2013-01-10 Anthony Green + + * README (tested): Add Compiler column to table. + +2013-01-10 Anthony Green + + * src/x86/ffi64.c (struct register_args): Make sse array and array + of unions for sunpro compiler compatibility. + +2013-01-10 Anthony Green + + * configure.ac: Test target platform size_t size. Handle both 32 + and 64-bit builds for x86_64-* and i?86-* targets (allowing for + CFLAG option to change default settings). + * configure, aclocal.m4: Rebuilt. + +2013-01-10 Anthony Green + + * testsuite/libffi.special/special.exp: Only run exception + handling tests when using GNU compiler. + + * m4/ax_compiler_vendor.m4: New file. + * configure.ac: Test for compiler vendor and don't use + AX_CFLAGS_WARN_ALL with the sun compiler. + * aclocal.m4, configure: Rebuilt. + +2013-01-10 Anthony Green + + * include/ffi_common.h: Don't use GCCisms to define types when + building with the SUNPRO compiler. + +2013-01-10 Anthony Green + + * configure.ac: Put local.exp in the right place. + * configure: Rebuilt. + + * src/x86/ffi.c: Update comment about regparm function attributes. + * src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires + that all function arguments be passed on the stack (no regparm + support). + +2013-01-08 Anthony Green + + * configure.ac: Generate local.exp. This sets CC_FOR_TARGET + when we are using the vendor compiler. + * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to + ../local.exp. + * configure, testsuite/Makefile.in: Rebuilt. + + * testsuite/libffi.call/call.exp: Run tests with different + options, depending on whether or not we are using gcc or the + vendor compiler. + * testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on + whether or not we are building/testing with gcc. + +2013-01-08 Anthony Green + + * configure.ac: Switch x86 solaris target to X86 by default. + * configure: Rebuilt. + +2013-01-08 Anthony Green + + * configure.ac: Fix test for read-only eh_frame. + * configure: Rebuilt. + +2013-01-08 Anthony Green + + * src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info + when building with the GNU toolchain. + * testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor + compiler. + +2013-01-07 Thorsten Glaser + + * testsuite/libffi.call/cls_uchar_va.c, + testsuite/libffi.call/cls_ushort_va.c, + testsuite/libffi.call/va_1.c: Testsuite fixes. + +2013-01-07 Thorsten Glaser + + * src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define. + (ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls. + * src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto. + +2013-01-04 Anthony Green + + * Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions + and -Wall. This is set in the configure script after testing for + GCC. + * Makefile.in: Rebuilt. + +2013-01-02 rofl0r + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc + when long double == double. + +2013-01-02 Reini Urban + + * Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS + (required for shared libs on cygwin/mingw). + * Makefile.in: Rebuilt. + +2012-10-31 Alan Modra + + * src/powerpc/linux64_closure.S: Add new ABI support. + * src/powerpc/linux64.S: Likewise. + +2012-10-30 Magnus Granberg + Pavel Labushev + + * configure.ac: New options pax_emutramp + * configure, fficonfig.h.in: Regenerated + * src/closures.c: New function emutramp_enabled_check() and + checks. + +2012-10-30 Frederick Cheung + + * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain + lion) and future version. + * configure: Rebuild. + +2012-10-30 James Greenhalgh + Marcus Shawcroft + + * README: Add details of aarch64 port. + * src/aarch64/ffi.c: New. + * src/aarch64/ffitarget.h: Likewise. + * src/aarch64/sysv.S: Likewise. + * Makefile.am: Support aarch64. + * configure.ac: Support aarch64. + * Makefile.in, configure: Rebuilt. + +2012-10-30 James Greenhalgh + Marcus Shawcroft + + * testsuite/lib/libffi.exp: Add support for aarch64. + * testsuite/libffi.call/cls_struct_va1.c: New. + * testsuite/libffi.call/cls_uchar_va.c: Likewise. + * testsuite/libffi.call/cls_uint_va.c: Likewise. + * testsuite/libffi.call/cls_ulong_va.c: Likewise. + * testsuite/libffi.call/cls_ushort_va.c: Likewise. + * testsuite/libffi.call/nested_struct11.c: Likewise. + * testsuite/libffi.call/uninitialized.c: Likewise. + * testsuite/libffi.call/va_1.c: Likewise. + * testsuite/libffi.call/va_struct1.c: Likewise. + * testsuite/libffi.call/va_struct2.c: Likewise. + * testsuite/libffi.call/va_struct3.c: Likewise. + +2012-10-12 Walter Lee + + * Makefile.am: Add TILE-Gx/TILEPro support. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * configure: Likewise. + * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro. + * src/tile: New directory. + * src/tile/ffi.c: New file. + * src/tile/ffitarget.h: Ditto. + * src/tile/tile.S: Ditto. + +2012-10-12 Matthias Klose + + * generate-osx-source-and-headers.py: Normalize whitespace. + +2012-09-14 David Edelsohn + + * configure: Regenerated. + +2012-08-26 Andrew Pinski + + PR libffi/53014 + * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with + soft-float. + +2012-08-08 Uros Bizjak + + * src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + +2012-07-18 H.J. Lu + + PR libffi/53982 + PR libffi/53973 + * src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32. + (FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32. + +2012-05-16 H.J. Lu + + * configure: Regenerated. + +2012-05-05 Nicolas Lelong + + * libffi.xcodeproj/project.pbxproj: Fixes. + * README: Update for iOS builds. + +2012-04-23 Alexandre Keunecke I. de Mendonca + + * configure.ac: Add Blackfin/sysv support + * Makefile.am: Add Blackfin/sysv support + * src/bfin/ffi.c: Add Blackfin/sysv support + * src/bfin/ffitarget.h: Add Blackfin/sysv support + +2012-04-11 Anthony Green + + * Makefile.am (EXTRA_DIST): Add new script. + * Makefile.in: Rebuilt. + +2012-04-11 Zachary Waldowski + + * generate-ios-source-and-headers.py, + libffi.xcodeproj/project.pbxproj: Support a Mac static library via + Xcode. Set iOS compatibility to 4.0. Move iOS trampoline + generation into an Xcode "run script" phase. Include both as + Xcode build scripts. Don't always regenerate config files. + +2012-04-10 Anthony Green + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon. + +2012-04-06 Anthony Green + + * Makefile.am (EXTRA_DIST): Add new iOS/xcode files. + * Makefile.in: Rebuilt. + +2012-04-06 Mike Lewis + + * generate-ios-source-and-headers.py: New file. + * libffi.xcodeproj/project.pbxproj: New file. + * README: Update instructions on building iOS binary. + * build-ios.sh: Delete. + +2012-04-06 Anthony Green + + * src/x86/ffi64.c (UINT128): Define differently for Intel and GNU + compilers, then use it. + +2012-04-06 H.J. Lu + + * m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32. + +2012-04-06 Anthony Green + + * testsuite/Makefile.am (EXTRA_DIST): Add missing test cases. + * testsuite/Makefile.in: Rebuilt. + +2012-04-05 Zachary Waldowski + + * include/ffi.h.in: Add missing trampoline table fields. + * src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references + in CNAME. + * src/x86/ffi.c: Wrap Windows specific code in ifdefs. + +2012-04-02 Peter Bergner + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp. + Silence casting pointer to integer of different size warning. + Delete goto to previously deleted label. + (ffi_call): Silence possibly undefined warning. + (ffi_closure_helper_SYSV): Declare variable type. + +2012-04-02 Peter Rosin + + * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return + value in the Intel version as is already done for the AT&T version. + (ffi_closure_SYSV): Likewise. + (ffi_closure_raw_SYSV): Likewise. + (ffi_closure_STDCALL): Likewise. + +2012-03-29 Peter Rosin + + * src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame + generation, fix the ENDP label and remove the surplus third arg + from the 'lea' insn. + +2012-03-29 Peter Rosin + + * src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label + visible outside the PROC, so that ffi_closure_raw_THISCALL can see + it. Also instruct the assembler to add a frame to the function. + +2012-03-23 Peter Rosin + + * Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING. + * Makefile.in: Rebuilt. + * include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations + to all data exports, when compiling libffi clients using MSVC. + +2012-03-29 Peter Rosin + + * src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and + make it the default for MSVC. + (FFI_TYPE_MS_STRUCT): New structure return convention. + * src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure + return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT + instead of an ordinary FFI_TYPE_STRUCT. + (ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. + (ffi_call): Likewise. + (ffi_prep_incoming_args_SYSV): Likewise. + (ffi_raw_call): Likewise. + (ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV. + * src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT, + return a pointer to the result structure in eax and don't pop + that pointer from the stack, the caller takes care of it. + (ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT. + (ffi_closure_raw_SYSV): Likewise. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline + assembly version with Intel syntax. + * testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise. + +2012-03-23 Peter Rosin + + * testsuite/libffi.call/ffitest.h: Provide abstration of + __attribute__((fastcall)) in the form of a __FASTCALL__ + define. Define it to __fastcall for MSVC. + * testsuite/libffi.call/fastthis1_win32.c: Use the above. + * testsuite/libffi.call/fastthis2_win32.c: Likewise. + * testsuite/libffi.call/fastthis3_win32.c: Likewise. + * testsuite/libffi.call/strlen2_win32.c: Likewise. + * testsuite/libffi.call/struct1_win32.c: Likewise. + * testsuite/libffi.call/struct2_win32.c: Likewise. + +2012-03-22 Peter Rosin + + * src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual + frame on function entry, MASM adds one automatically. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing + bits in the MSVC headers. + +2012-03-22 Peter Rosin + + * testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style + with no declarations after statements. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5_1_byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6_1_byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7_1_byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble_split.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_dbls_struct.c: Likewise. + * testsuite/libffi.call/cls_pointer_stack.c: Likewise. + * testsuite/libffi.call/err_bad_typedef.c: Likewise. + * testsuite/libffi.call/huge_struct.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct10.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/nested_struct4.c: Likewise. + * testsuite/libffi.call/nested_struct5.c: Likewise. + * testsuite/libffi.call/nested_struct6.c: Likewise. + * testsuite/libffi.call/nested_struct7.c: Likewise. + * testsuite/libffi.call/nested_struct8.c: Likewise. + * testsuite/libffi.call/nested_struct9.c: Likewise. + * testsuite/libffi.call/stret_large.c: Likewise. + * testsuite/libffi.call/stret_large2.c: Likewise. + * testsuite/libffi.call/stret_medium.c: Likewise. + * testsuite/libffi.call/stret_medium2.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + * testsuite/libffi.call/struct1_win32.c: Likewise. + * testsuite/libffi.call/struct2.c: Likewise. + * testsuite/libffi.call/struct2_win32.c: Likewise. + * testsuite/libffi.call/struct3.c: Likewise. + * testsuite/libffi.call/struct4.c: Likewise. + * testsuite/libffi.call/struct5.c: Likewise. + * testsuite/libffi.call/struct6.c: Likewise. + * testsuite/libffi.call/struct7.c: Likewise. + * testsuite/libffi.call/struct8.c: Likewise. + * testsuite/libffi.call/struct9.c: Likewise. + * testsuite/libffi.call/testclosure.c: Likewise. + +2012-03-21 Peter Rosin + + * testsuite/libffi.call/float_va.c (float_va_fn): Use %f when + printing doubles (%lf is for long doubles). + (main): Likewise. + +2012-03-21 Peter Rosin + + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] + (set_ld_library_path_env_vars): Add the library search dir to PATH + (and save PATH for later). + (restore_ld_library_path_env_vars): Restore PATH. + +2012-03-21 Peter Rosin + + * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*] + (set_ld_library_path_env_vars): Add the library search dir to PATH + (and save PATH for later). + (restore_ld_library_path_env_vars): Restore PATH. + +2012-03-20 Peter Rosin + + * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. + * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label + visible outside the PROC, so that ffi_closure_THISCALL can see it. + +2012-03-20 Peter Rosin + + * testsuite/libffi.call/strlen2_win32.c (main): Remove bug. + * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label + visible outside the PROC, so that ffi_closure_THISCALL can see it. + +2012-03-19 Alan Hourihane + + * src/m68k/ffi.c: Add MINT support. + * src/m68k/sysv.S: Ditto. + +2012-03-06 Chung-Lin Tang + + * src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to + ffi_call_VFP(). + (ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of + ffi_closure_VFP. + * src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code. + +2012-03-19 chennam + + * src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure + support. + +2012-03-13 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto. + +2012-03-09 David Edelsohn + + * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 + change to return value of ffi_closure_helper_DARWIN and load type + from return type. + +2012-03-03 H.J. Lu + + * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned + long. + (ffi_prep_closure_loc): Cast to 64bit address in trampoline. + (ffi_closure_unix64_inner): Cast return pointer to unsigned long + first. + + * src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32. + (ffi_arg): Set to unsigned long long for x32. + (ffi_sarg): Set to long long for x32. + +2012-03-03 H.J. Lu + + * src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI. + +2012-03-03 Andoni Morales Alastruey + + * configure.ac: Add -no-undefined for both 32- and 64-bit x86 + windows-like hosts. + * configure: Rebuilt. + +2012-02-27 Mikael Pettersson + + PR libffi/52223 + * Makefile.am (FLAGS_TO_PASS): Define. + * Makefile.in: Regenerate. + +2012-02-23 Anthony Green + + * src/*/ffitarget.h: Ensure that users never include ffitarget.h + directly. + +2012-02-23 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_closure_raw_THISCALL): New + prototype. + (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for + thiscall-convention. + (ffi_raw_call): Use ffi_prep_args_raw. + * src/x86/win32.S (ffi_closure_raw_THISCALL): Add + implementation for stub. + +2012-02-10 Kai Tietz + + * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64 + windows target. + * configure: Regenerated. + +2012-02-08 Kai Tietz + + * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32 + also FFI_THISCALL. + * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype. + (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code. + (ffi_prep_closure_loc): Add FFI_THISCALL support. + * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size. + * src/x86/win32.S (ffi_closure_THISCALL): New closure code + for thiscall-calling convention. + * testsuite/libffi.call/closure_thiscall.c: New test. + +2012-01-28 Kai Tietz + + * src/libffi/src/x86/ffi.c (ffi_call_win32): Add new + argument to prototype for specify calling-convention. + (ffi_call): Add support for stdcall/thiscall convention. + (ffi_prep_args): Likewise. + (ffi_raw_call): Likewise. + * src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and + FFI_FASTCALL. + * src/x86/win32.S (_ffi_call_win32): Add support for + fastcall/thiscall calling-convention calls. + * testsuite/libffi.call/fastthis1_win32.c: New test. + * testsuite/libffi.call/fastthis2_win32.c: New test. + * testsuite/libffi.call/fastthis3_win32.c: New test. + * testsuite/libffi.call/strlen2_win32.c: New test. + * testsuite/libffi.call/many2_win32.c: New test. + * testsuite/libffi.call/struct1_win32.c: New test. + * testsuite/libffi.call/struct2_win32.c: New test. + +2012-01-23 Uros Bizjak + + * src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI. + +2012-01-23 Anthony Green + Chris Young + + * configure.ac: Add Amiga support. + * configure: Rebuilt. + +2012-01-23 Dmitry Nadezhin + + * include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions. + +2012-01-23 Andreas Schwab + + * src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain + mc68000. Test for __HAVE_68881__ in addition to __MC68881__. + +2012-01-19 Jakub Jelinek + + PR rtl-optimization/48496 + * src/ia64/ffi.c (ffi_call): Fix up aliasing violations. + +2012-01-09 Rainer Orth + + * configure.ac (i?86-*-*): Set TARGET to X86_64. + * configure: Regenerate. + +2011-12-07 Andrew Pinski + + PR libffi/50051 + * src/mips/n32.S: Add ".set mips4". + +2011-11-21 Andreas Tobler + + * configure: Regenerate. + +2011-11-12 David Gilbert + + * doc/libffi.texi, include/ffi.h.in, include/ffi_common.h, + man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3, + man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h, + src/cris/ffi.c, src/prep_cif.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/float_va.c: Many changes to support variadic + function calls. + +2011-11-12 Kyle Moffett + + * src/powerpc/ffi.c, src/powerpc/ffitarget.h, + src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for + softfloat powerpc variants. + +2011-11-12 Petr Salinger + + * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support. + * configure: Rebuilt. + +2011-11-12 Timothy Wall + + * src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max + alignment of 4 for wince on ARM. + +2011-11-12 Kyle Moffett + Anthony Green + + * src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string + instructions (not available on some cores, like the PPC440). + +2011-11-12 Kimura Wataru + + * m4/ax_enable_builddir: Change from string comparison to numeric + comparison for wc output. + * configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS + X 10.7. + * configure: Rebuilt. + +2011-11-12 Anthony Green + + * Makefile.am (AM_CCASFLAGS): Add -g option to build assembly + files with debug info. + * Makefile.in: Rebuilt. + +2011-11-12 Jasper Lievisse Adriaanse + + * README: Update list of supported OpenBSD systems. + +2011-11-12 Anthony Green + + * libtool-version: Update. + * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if + FFI_DEBUG. + (libffi_la_SOURCES): Remove src/debug.c + (EXTRA_DIST): Add src/debug.c + * Makefile.in: Rebuilt. + * README: Update for 3.0.11. + +2011-11-10 Richard Henderson + + * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check. + * configure, aclocal.m4: Rebuild. + +2011-09-04 Iain Sandoe + + PR libffi/49594 + * src/powerpc/darwin_closure.S (stubs): Make the stub binding + helper reference track the architecture pointer size. + +2011-08-25 Andrew Haley + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly + instructions. + * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead. + +2011-07-11 Andrew Haley + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache. + +2011-06-29 Rainer Orth + + * testsuite/libffi.call/cls_double_va.c: Move PR number to comment. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + +2011-06-29 Rainer Orth + + PR libffi/46660 + * testsuite/libffi.call/cls_double_va.c: xfail dg-output on + mips-sgi-irix6*. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + +2011-06-14 Rainer Orth + + * testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8, + PRId8 instead of %hhu, %hhd. + * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8, + PRIu8): Define. + [__sgi__] (PRId8, PRIu8): Define. + +2011-04-29 Rainer Orth + + * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): + Define. + Use them to handle ELF vs. ECOFF differences. + [__osf__] (_GLOBAL__F_ffi_call_osf): Define. + +2011-03-30 Timothy Wall + + * src/powerpc/darwin.S: Fix unknown FDE encoding. + * src/powerpc/darwin_closure.S: ditto. + +2011-02-25 Anthony Green + + * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more + 32-bit ABIs. + +2011-02-15 Anthony Green + + * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math. + * configure: Rebuilt. + +2011-02-13 Ralf Wildenhues + + * configure: Regenerate. + +2011-02-13 Anthony Green + + * include/ffi_common.h (UNLIKELY, LIKELY): Define. + * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition. + * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition. + + * src/prep_cif.c (initialize_aggregate): Convert assertion into + FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0. + + * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + * src/arm/ffi.c (ffi_prep_closure_loc): Ditto. + * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto. + * src/mips/ffi.c (ffi_prep_closure_loc): Ditto. + * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto. + * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto. + +2011-02-11 Anthony Green + + * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, + just return FFI_BAD_ABI when things are wrong. + +2012-02-11 Eric Botcazou + + * src/sparc/v9.S (STACKFRAME): Bump to 176. + +2011-02-09 Stuart Shelton + + http://bugs.gentoo.org/show_bug.cgi?id=286911 + * src/mips/ffitarget.h: Clean up error messages. + * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to + ffi_raw*. + * include/ffi.h.in: Add pragma for SGI compiler. + +2011-02-09 Anthony Green + + * configure.ac: Add powerpc64-*-darwin* support. + +2011-02-09 Anthony Green + + * README: Mention Interix. + +2011-02-09 Jonathan Callen + + * configure.ac: Add Interix to win32/cygwin/mingw case. + * configure: Ditto. + * src/closures.c: Treat Interix like Cygwin, instead of as a + generic win32. + +2011-02-09 Anthony Green + + * testsuite/libffi.call/err_bad_typedef.c: Remove xfail. + * testsuite/libffi.call/err_bad_abi.c: Remove xfail. + * src/x86/ffi64.c (UNLIKELY, LIKELY): Define. + (ffi_prep_closure_loc): Check for bad ABI. + * src/prep_cif.c (UNLIKELY, LIKELY): Define. + (initialize_aggregate): Check for bad types. + +2011-02-09 Landon Fuller + + * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh, + src/arm/trampoline.S. + (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S. + * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define. + * src/arm/ffi.c (ffi_trampoline_table) + (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry) + (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) + (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables) + (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free): + Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS). + (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case + separately. + * src/arm/sysv.S: Handle Apple iOS host. + * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case. + * build-ios.sh: New file. + * fficonfig.h.in, configure, Makefile.in: Rebuilt. + * README: Mention ARM iOS. + +2011-02-08 Oren Held + + * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid + redefinition of mallinfo on HP-UX. + +2011-02-08 Ginn Chen + + * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio + aggregate return ABI. Flush cache. + (ffi_prep_closure_loc): Flush cache. + +2011-02-11 Anthony Green + + From Tom Honermann : + * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on + AIX. Declare .ffi_prep_args. Insert nops after branch + instructions so that the AIX linker can insert TOC reload + instructions. + * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN. + +2011-02-08 Ed + + * src/powerpc/asm.h: Fix grammar nit in comment. + +2011-02-08 Uli Link + + * include/ffi.h.in (FFI_64_BIT_MAX): Define and use. + +2011-02-09 Rainer Orth + + PR libffi/46661 + * testsuite/libffi.call/cls_pointer.c (main): Cast void * to + uintptr_t first. + * testsuite/libffi.call/cls_pointer_stack.c (main): Likewise. + +2011-02-08 Rafael Avila de Espindola + + * configure.ac: Fix x86 test for pc related relocs. + * configure: Rebuilt. + +2011-02-07 Joel Sherrill + + * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing. + Handle case when CPU variant does not have long double support. + * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire, + and cores with soft floating point. + +2011-02-07 Joel Sherrill + + * configure.ac: Add mips*-*-rtems* support. + * configure: Regenerate. + * src/mips/ffitarget.h: Ensure needed constants are available + for targets which do not have sgidefs.h. + +2011-01-26 Dave Korn + + PR target/40125 + * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs. + * configure: Regenerate. + +2010-12-18 Iain Sandoe + + PR libffi/29152 + PR libffi/42378 + * src/powerpc/darwin_closure.S: Provide Darwin64 implementation, + update comments. + * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New, + (FFI_TRAMPOLINE_SIZE): Update for Darwin64. + * src/powerpc/darwin.S: Provide Darwin64 implementation, + update comments. + * src/powerpc/ffi_darwin.c: Likewise. + +2010-12-06 Rainer Orth + + * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double + backslashes. + (libffi_cv_as_string_pseudo_op): Likewise. + * configure: Regenerate. + +2010-12-03 Chung-Lin Tang + + * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive. + (ffi_closure_VFP): Same. + (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp' + directive. + +2010-12-01 Rainer Orth + + * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define. + (PRIuPTR): Define. + +2010-11-29 Richard Henderson + Rainer Orth + + * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define. + (.eh_frame): Use FDE_ENCODING. + (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE. + +2010-11-22 Jacek Caban + + * configure.ac: Check for symbol underscores on mingw-w64. + * configure: Rebuilt. + * src/x86/win64.S: Correctly access extern symbols in respect to + underscores. + +2010-11-15 Rainer Orth + + * testsuite/lib/libffi-dg.exp: Rename ... + * testsuite/lib/libffi.exp: ... to this. + * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp. + * libffi/testsuite/libffi.special/special.exp: Likewise. + +2010-10-28 Chung-Lin Tang + + * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling + code, new parameter, and return value. Update comments. + (ffi_prep_cif_machdep): Add case for VFP struct return values. Add + call to layout_vfp_args(). + (ffi_call_SYSV): Update declaration. + (ffi_call_VFP): New declaration. + (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP() + when ABI is FFI_VFP. + (ffi_closure_VFP): New declaration. + (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to + ffi_prep_incoming_args_SYSV(). + (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument + case handling. + (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline + construction under VFP hard-float. + (rec_vfp_type_p): New function. + (vfp_type_p): Same. + (place_vfp_arg): Same. + (layout_vfp_args): Same. + * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI + based on __ARM_PCS_VFP. + (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific + fields. + (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code. + (FFI_TYPE_STRUCT_VFP_DOUBLE): Same. + * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to + direct call. Move function pointer load upwards. + (ffi_call_VFP): New function. + (ffi_closure_VFP): Same. + + * testsuite/lib/libffi-dg.exp (check-flags): New function. + (dg-skip-if): New function. + * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-* + and compiler options include -mfloat-abi=hard. + * testsuite/libffi.call/cls_longdouble_va.c: Same. + +2010-10-01 Jakub Jelinek + + PR libffi/45677 + * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is + a multiple of 8. + * testsuite/libffi.call/many2.c: New test. + +2010-08-20 Mark Wielaard + + * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r + returns NULL. + +2010-08-09 Andreas Tobler + + * configure.ac: Add target powerpc64-*-freebsd*. + * configure: Regenerate. + * testsuite/libffi.call/cls_align_longdouble_split.c: Pass + -mlong-double-128 only to linux targets. + * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise. + * testsuite/libffi.call/cls_longdouble.c: Likewise. + * testsuite/libffi.call/huge_struct.c: Likewise. + +2010-08-05 Dan Witte + + * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the + debug CRT when --enable-debug is given. + * configure.ac: Define it. + * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately. + +2010-08-04 Dan Witte + + * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64 + platforms. + * src/x86/ffi.c: Remove redundant ifdef checks. + * src/prep_cif.c: Push stack space computation into src/x86/ffi.c + for X86_ANY so return value space doesn't get added twice. + +2010-08-03 Neil Rashbrooke + + * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy. + +2010-07-22 Dan Witte + + * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI. + * src/prep_cif.c: Fix ABI assertion. + * src/cris/ffi.c: Ditto. + +2010-07-10 Evan Phoenix + + * src/closures.c (selinux_enabled_check): Fix strncmp usage bug. + +2010-07-07 Dan Horák + + * include/ffi.h.in: Protect #define with #ifndef. + * src/powerpc/ffitarget.h: Ditto. + * src/s390/ffitarget.h: Ditto. + * src/sparc/ffitarget.h: Ditto. + +2010-07-07 Neil Roberts + + * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to + 16-bytes. + +2010-07-02 Jakub Jelinek + + * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes. + * Makefile.in: Regenerated. + +2010-05-19 Rainer Orth + + * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as + output, too. + (libffi_cv_as_ascii_pseudo_op): Check for .ascii. + (libffi_cv_as_string_pseudo_op): Check for .string. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error. + +2010-05-11 Dan Witte + + * doc/libffi.tex: Document previous change. + +2010-05-11 Makoto Kato + + * src/x86/ffi.c (ffi_call): Don't copy structs passed by value. + +2010-05-05 Michael Kohler + + * src/dlmalloc.c (dlfree): Fix spelling. + * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto. + * configure.ac: Ditto. + * configure: Rebuilt. + +2010-04-13 Dan Witte + + * msvcc.sh: Build with -W3 instead of -Wall. + * src/powerpc/ffi_darwin.c: Remove build warnings. + * src/x86/ffi.c: Ditto. + * src/x86/ffitarget.h: Ditto. + +2010-04-12 Dan Witte + Walter Meinl + + * configure.ac: Add OS/2 support. + * configure: Rebuilt. + * src/closures.c: Ditto. + * src/dlmalloc.c: Ditto. + * src/x86/win32.S: Ditto. + +2010-04-07 Jakub Jelinek + + * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable. + +2010-04-02 Ralf Wildenhues + + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2010-03-30 Dan Witte + + * msvcc.sh: Disable build warnings. + * README (tested): Clarify windows build procedure. + +2010-03-15 Rainer Orth + + * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * libffi/src/x86/unix64.S (.eh_frame) + [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type. + +2010-03-14 Matthias Klose + + * src/x86/ffi64.c: Fix typo in comment. + * src/x86/ffi.c: Use /* ... */ comment style. + +2010-02-24 Rainer Orth + + * doc/libffi.texi (The Closure API): Fix typo. + * doc/libffi.info: Remove. + +2010-02-15 Matthias Klose + + * src/arm/sysv.S (__ARM_ARCH__): Define for processor + __ARM_ARCH_7EM__. + +2010-01-15 Anthony Green + + * README: Add notes on building with Microsoft Visual C++. + +2010-01-15 Daniel Witte + + * msvcc.sh: New file. + + * src/x86/win32.S: Port assembly routines to MSVC and #ifdef. + * src/x86/ffi.c: Tweak function declaration and remove excess + parens. + * include/ffi.h.in: Add __declspec(align(8)) to typedef struct + ffi_closure. + + * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new + function ffi_call_win32 on X86_WIN32. + * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32. + (ffi_call_STDCALL): Remove. + + * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code + to ffi_prep_cif_machdep for x86. + * src/x86/ffi.c (ffi_prep_cif_machdep): To here. + +2010-01-15 Oliver Kiddle + + * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for + Sun Studio compiler compatibility. + +2010-01-12 Conrad Irwin + + * doc/libffi.texi: Add closure example. + +2010-01-07 Rainer Orth + + PR libffi/40701 + * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL, + PRIuLL, PRId64, PRIu64, PRIuPTR): Define. + * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on + alpha*-dec-osf*. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/return_ll1.c: Likewise. + * testsuite/libffi.call/stret_medium2.c: Likewise. + * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast + MAP_FAILED to char *. + +2010-01-06 Rainer Orth + + * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__. + +2009-12-31 Anthony Green + + * README: Update for libffi 3.0.9. + +2009-12-27 Matthias Klose + + * configure.ac (HAVE_LONG_DOUBLE): Define for mips when + appropriate. + * configure: Rebuilt. + +2009-12-26 Anthony Green + + * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for + avr32*-*-*. + * testsuite/libffi.call/cls_double_va.c: Ditto. + +2009-12-26 Andreas Tobler + + * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h + and inttypes.h. + * testsuite/libffi.special/unwindtest.cc: Ditto. + +2009-12-26 Andreas Tobler + + * configure.ac: Add amd64-*-openbsd*. + * configure: Rebuilt. + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link + openbsd programs with -lpthread. + +2009-12-26 Anthony Green + + * testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for + mips*-*-* and arm*-*-*. + * testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*. + +2009-12-31 Kay Tietz + + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix + definitions. + +2009-12-31 Carlo Bramini + + * configure.ac (AM_LTLDFLAGS): Define for windows hosts. + * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS. + * configure: Rebuilt. + * Makefile.in: Rebuilt. + +2009-12-31 Anthony Green + Blake Chaffin. + + * testsuite/libffi.call/huge_struct.c: New test case from Blake + Chaffin @ Apple. + +2009-12-28 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to + local variables. + (aix_adjust_aggregate_sizes): New function. + (ffi_prep_cif_machdep): Call it. + +2009-12-26 Andreas Tobler + + * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets. + * configure: Regenerate. + * fficonfig.h.in: Likewise. + * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for + Solaris/x86. + +2009-12-26 Andreas Schwab + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count + when a float arguments is passed in memory. + (ffi_closure_helper_SYSV): Mark general registers as used up when + a 64bit or soft-float long double argument is passed in memory. + +2009-12-25 Matthias Klose + + * man/ffi_call.3: Fix #include in examples. + * doc/libffi.texi: Add dircategory. + +2009-12-25 Frank Everdij + + * include/ffi.h.in: Placed '__GNUC__' ifdef around + '__attribute__((aligned(8)))' in ffi_closure, fixes compile for + IRIX MIPSPro c99. + * include/ffi_common.h: Added '__sgi' define to non + '__attribute__((__mode__()))' integer typedefs. + * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32, + ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check. + (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added + FFI_LONGDOUBLE support and alignment(N32 only). + * src/mips/ffitarget.h: Corrected '#include ' for IRIX and + fixed non '__attribute__((__mode__()))' integer typedefs. + * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame' + since they are Linux/GNU Assembler specific. + +2009-12-25 Bradley Smith + + * configure.ac, Makefile.am, src/avr32/ffi.c, + src/avr32/ffitarget.h, + src/avr32/sysv.S: Add AVR32 port. + * configure, Makefile.in: Rebuilt. + +2009-12-21 Andreas Tobler + + * configure.ac: Make i?86 build on FreeBSD and OpenBSD. + * configure: Regenerate. + +2009-12-15 John David Anglin + + * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX. + +2009-12-13 John David Anglin + + * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE + type on HP-UX. + +2012-02-13 Kai Tietz + + PR libffi/52221 + * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall + support for X86_WIN32. + (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement. + +2009-12-11 Eric Botcazou + + * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long + double' arguments. + +2009-12-11 Eric Botcazou + + * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. + +2009-12-10 Rainer Orth + + PR libffi/40700 + * src/closures.c [X86_64 && __sun__ && __svr4__] + (FFI_MMAP_EXEC_WRIT): Define. + +2009-12-08 David Daney + + * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-* + * testsuite/libffi.call/cls_align_longdouble_split2.c: Same. + * testsuite/libffi.call/stret_large.c: Same. + * testsuite/libffi.call/cls_align_longdouble_split.c: Same. + * testsuite/libffi.call/stret_large2.c: Same. + * testsuite/libffi.call/stret_medium2.c: Same. + +2009-12-07 David Edelsohn + + * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump + typo. + +2009-12-05 David Edelsohn + + * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64 + code. + * src/powerpc/aix_closure.S: Same. + +2009-12-05 Ralf Wildenhues + + * Makefile.in: Regenerate. + * configure: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2009-12-04 David Edelsohn + + * src/powerpc/aix_closure.S: Reorganize 64-bit code to match + linux64_closure.S. + +2009-12-04 Uros Bizjak + + PR libffi/41908 + * src/x86/ffi64.c (classify_argument): Update from + gcc/config/i386/i386.c. + (ffi_closure_unix64_inner): Do not use the address of two consecutive + SSE registers directly. + * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail + for x86_64 linux targets. + +2009-12-04 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment + pfr for long double split between fpr13 and stack. + +2009-12-03 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and + fparg_count twice for long double. + +2009-12-03 David Edelsohn + + PR libffi/42243 + * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses. + +2009-12-03 Uros Bizjak + + * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string. + Remove xfails for x86 linux targets. + +2009-12-02 David Edelsohn + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64 + case. + +2009-12-01 David Edelsohn + + * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard + register usage. Call ffi_prep_args directly. Add long double + return value support. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment + applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo. + Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases. + (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit + mode. + (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp + into case. + * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment. + Allocate result area between params and FPRs. + +2009-11-30 David Edelsohn + + PR target/35484 + * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and + AIX64. + * src/powerpc/aix.S: Implement AIX64 version. + * src/powerpc/aix_closure.S: Implement AIX64 version. + (ffi_closure_ASM): Use extsb, lha and displament addresses. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64 + support. + (ffi_prep_cif_machdep): Same. + (ffi_call): Same. + (ffi_closure_helper_DARWIN): Same. + +2009-11-02 Andreas Tobler + + PR libffi/41908 + * testsuite/libffi.call/testclosure.c: New test. + +2009-09-28 Kai Tietz + + * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu + assembly version use of ___chkstk. + +2009-09-23 Matthias Klose + + PR libffi/40242, PR libffi/41443 + * src/arm/sysv.S (__ARM_ARCH__): Define for processors + __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__, + __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__. + Change the conditionals to __SOFTFP__ || __ARM_EABI__ + for -mfloat-abi=softfp to work. + +2009-09-17 Loren J. Rittle + + PR testsuite/32843 (strikes again) + * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to + enable proper extension on char and short. + +2009-09-15 David Daney + + * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special + handling for FFI_TYPE_POINTER. + * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT, + FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT, + FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT, + FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines. + (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations. + (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float. + * src/mips/n32.S (ffi_call_N32): Add handling for soft-float + structure and pointer returns. + (ffi_closure_N32): Add handling for pointer returns. + * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags, + calc_n32_return_struct_flags): Handle soft-float. + (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling. + (ffi_call_N32): Declare proper argument types. + (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle + soft-float. + +2009-08-24 Ralf Wildenhues + + * configure.ac (AC_PREREQ): Bump to 2.64. + +2009-08-22 Ralf Wildenhues + + * Makefile.am (install-html, install-pdf): Remove. + * Makefile.in: Regenerate. + + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * include/Makefile.in: Regenerate. + * man/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2011-08-22 Jasper Lievisse Adriaanse + + * configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support. + * configure: Rebuilt. + +2009-07-30 Ralf Wildenhues + + * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. + +2009-07-24 Dave Korn + + PR libffi/40807 + * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending + return types for X86_WIN32. + * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types. + (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV, + _ffi_closure_STDCALL): Likewise. + + * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin. + (dlmmap, dlmunmap): Also use these functions on Cygwin. + +2009-07-11 Richard Sandiford + + PR testsuite/40699 + PR testsuite/40707 + PR testsuite/40709 + * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and + 2009-06-30 commits. + +2009-07-01 Richard Sandiford + + * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path + to "" before adding paths. (This reinstates an assignment that + was removed by my 2009-06-30 commit, but changes the initial + value from "." to "".) + +2009-07-01 H.J. Lu + + PR testsuite/40601 + * testsuite/lib/libffi-dg.exp (libffi-init): Properly set + gccdir. Adjust ld_library_path for gcc only if gccdir isn't + empty. + +2009-06-30 Richard Sandiford + + * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "." + to ld_library_path. Use add_path. Add just find_libgcc_s + to ld_library_path, not every libgcc multilib directory. + +2009-06-16 Wim Lewis + + * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are + supposed to be callee-saved. + * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of + return buffer for odd-size structs. + +2009-06-16 Andreas Tobler + + PR libffi/40444 + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add + allow_stack_execute for Darwin. + +2009-06-16 Andrew Haley + + * configure.ac (TARGETDIR): Add missing blank lines. + * configure: Regenerate. + +2009-06-16 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. + +2009-06-15 Andrew Haley + + * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere. + * testsuite/libffi.call/err_bad_abi.c: Likewise. + +2009-06-12 Andrew Haley + + * Makefile.am: Remove info_TEXINFOS. + +2009-06-12 Andrew Haley + + * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + testsuite/libffi.special/unwindtest.cc: include stdint.h. + +2009-06-11 Timothy Wall + + * Makefile.am, + configure.ac, + include/ffi.h.in, + include/ffi_common.h, + src/closures.c, + src/dlmalloc.c, + src/x86/ffi.c, + src/x86/ffitarget.h, + src/x86/win64.S (new), + README: Added win64 support (mingw or MSVC) + * Makefile.in, + include/Makefile.in, + man/Makefile.in, + testsuite/Makefile.in, + configure, + aclocal.m4: Regenerated + * ltcf-c.sh: properly escape cygwin/w32 path + * man/ffi_call.3: Clarify size requirements for return value. + * src/x86/ffi64.c: Fix filename in comment. + * src/x86/win32.S: Remove unused extern. + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/err_bad_abi.c, + testsuite/libffi.call/err_bad_typedef.c, + testsuite/libffi.call/float2.c, + testsuite/libffi.call/huge_struct.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/return_ldl.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead + of checking for MMAP. Use intptr_t instead of long casts. + +2009-06-11 Kaz Kojima + + * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*. + * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*. + * testsuite/libffi.call/err_bad_typedef.c: Likewise. + +2009-06-09 Andrew Haley + + * src/x86/freebsd.S: Add missing file. + +2009-06-08 Andrew Haley + + Import from libffi 3.0.8: + + * doc/libffi.texi: New file. + * doc/libffi.info: Likewise. + * doc/stamp-vti: Likewise. + * man/Makefile.am: New file. + * man/ffi_call.3: New file. + + * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S, + src/dlmalloc.c. + (nodist_libffi_la_SOURCES): Add X86_FREEBSD. + + * configure.ac: Bump version to 3.0.8. + parisc*-*-linux*: Add. + i386-*-freebsd* | i386-*-openbsd*: Add. + powerpc-*-beos*: Add. + AM_CONDITIONAL X86_FREEBSD: Add. + AC_CONFIG_FILES: Add man/Makefile. + + * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void). + +2009-06-08 Andrew Haley + + * README: Import from libffi 3.0.8. + +2009-06-08 Andrew Haley + + * testsuite/libffi.call/err_bad_abi.c: Add xfails. + * testsuite/libffi.call/cls_longdouble_va.c: Add xfails. + * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*. + * testsuite/libffi.call/err_bad_typedef.c: Add xfails. + + * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args. + * testsuite/libffi.call/stret_medium.c: Likewise. + * testsuite/libffi.call/stret_large2.c: Likewise. + * testsuite/libffi.call/stret_large.c: Likewise. + +2008-12-26 Timothy Wall + + * testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected + failures on x86_64 cygwin/mingw. + +2008-12-22 Timothy Wall + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_loc_fn0.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: use portable cast from + pointer to integer (intptr_t). + * testsuite/libffi.call/cls_longdouble.c: disable for win64. + +2008-07-24 Anthony Green + + * testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/err_bad_abi.c: Clean up failures from + compiler warnings. + +2008-03-04 Anthony Green + Blake Chaffin + hos@tamanegi.org + + * testsuite/libffi.call/cls_align_longdouble_split2.c + testsuite/libffi.call/cls_align_longdouble_split.c + testsuite/libffi.call/cls_dbls_struct.c + testsuite/libffi.call/cls_double_va.c + testsuite/libffi.call/cls_longdouble.c + testsuite/libffi.call/cls_longdouble_va.c + testsuite/libffi.call/cls_pointer.c + testsuite/libffi.call/cls_pointer_stack.c + testsuite/libffi.call/err_bad_abi.c + testsuite/libffi.call/err_bad_typedef.c + testsuite/libffi.call/stret_large2.c + testsuite/libffi.call/stret_large.c + testsuite/libffi.call/stret_medium2.c + testsuite/libffi.call/stret_medium.c: New tests from Apple. + +2009-06-05 Andrew Haley + + * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from + libffi. + +2009-06-04 Andrew Haley + + * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out + stdcall changes. + +2008-02-26 Anthony Green + Thomas Heller + + * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C + comment. + +2008-02-03 Timothy Wall + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return + offset based on code pointer, not data pointer. + +2008-01-31 Timothy Wall + + * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall + closures. + * src/x86/ffitarget.h: Increase size of trampoline for stdcall + closures. + * src/x86/win32.S: Add assembly for stdcall closure. + * src/x86/ffi.c: Initialize stdcall closure trampoline. + +2009-06-04 Andrew Haley + + * include/ffi.h.in: Change void (*)() to void (*)(void). + * src/x86/ffi.c: Likewise. + +2009-06-04 Andrew Haley + + * src/powerpc/ppc_closure.S: Insert licence header. + * src/powerpc/linux64_closure.S: Likewise. + * src/m68k/sysv.S: Likewise. + + * src/sh64/ffi.c: Change void (*)() to void (*)(void). + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/m32r/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/x86/ffi64.c: Likewise. + * src/alpha/ffi.c: Likewise. + * src/alpha/osf.S: Likewise. + * src/frv/ffi.c: Likewise. + * src/s390/ffi.c: Likewise. + * src/pa/ffi.c: Likewise. + * src/pa/hpux32.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/ia64/ffi.c: Likewise. + * src/sparc/ffi.c: Likewise. + * src/mips/ffi.c: Likewise. + * src/sh/ffi.c: Likewise. + +2008-02-15 David Daney + + * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): + Define (conditionally), and use it to include cachectl.h. + (ffi_prep_closure_loc): Fix cache flushing. + * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. + +2009-06-04 Andrew Haley + + include/ffi.h.in, + src/arm/ffitarget.h, + src/arm/ffi.c, + src/arm/sysv.S, + src/powerpc/ffitarget.h, + src/closures.c, + src/sh64/ffitarget.h, + src/sh64/ffi.c, + src/sh64/sysv.S, + src/types.c, + src/x86/ffi64.c, + src/x86/ffitarget.h, + src/x86/win32.S, + src/x86/darwin.S, + src/x86/ffi.c, + src/x86/sysv.S, + src/x86/unix64.S, + src/alpha/ffitarget.h, + src/alpha/ffi.c, + src/alpha/osf.S, + src/m68k/ffitarget.h, + src/frv/ffitarget.h, + src/frv/ffi.c, + src/s390/ffitarget.h, + src/s390/sysv.S, + src/cris/ffitarget.h, + src/pa/linux.S, + src/pa/ffitarget.h, + src/pa/ffi.c, + src/raw_api.c, + src/ia64/ffitarget.h, + src/ia64/unix.S, + src/ia64/ffi.c, + src/ia64/ia64_flags.h, + src/java_raw_api.c, + src/debug.c, + src/sparc/v9.S, + src/sparc/ffitarget.h, + src/sparc/ffi.c, + src/sparc/v8.S, + src/mips/ffitarget.h, + src/mips/n32.S, + src/mips/o32.S, + src/mips/ffi.c, + src/prep_cif.c, + src/sh/ffitarget.h, + src/sh/ffi.c, + src/sh/sysv.S: Update license text. + +2009-05-22 Dave Korn + + * src/x86/win32.S (_ffi_closure_STDCALL): New function. + (.eh_frame): Add FDE for it. + +2009-05-22 Dave Korn + + * configure.ac: Also check if assembler supports pc-relative + relocs on X86_WIN32 targets. + * configure: Regenerate. + * src/x86/win32.S (ffi_prep_args): Declare extern, not global. + (_ffi_call_SYSV): Add missing function type symbol .def and + add EH markup labels. + (_ffi_call_STDCALL): Likewise. + (_ffi_closure_SYSV): Likewise. + (_ffi_closure_raw_SYSV): Likewise. + (.eh_frame): Add hand-crafted EH data. + +2009-04-09 Jakub Jelinek + + * testsuite/lib/libffi-dg.exp: Change copyright header to refer to + version 3 of the GNU General Public License and to point readers + at the COPYING3 file and the FSF's license web page. + * testsuite/libffi.call/call.exp: Likewise. + * testsuite/libffi.special/special.exp: Likewise. + +2009-03-01 Ralf Wildenhues + + * configure: Regenerate. + +2008-12-18 Rainer Orth + + PR libffi/26048 + * configure.ac (HAVE_AS_X86_PCREL): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate + RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET, + RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler. + (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. + * src/x86/unix64.S (.Lstore_table): Move to .text section. + (.Lload_table): Likewise. + (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL. + +2008-12-18 Ralf Wildenhues + + * configure: Regenerate. + +2008-11-21 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for + signed/unsigned int8/16 return values. + * src/sparc/v8.S (ffi_call_v8): Likewise. + (ffi_closure_v8): Likewise. + +2008-09-26 Peter O'Gorman + Steve Ellcey + + * configure: Regenerate for new libtool. + * Makefile.in: Ditto. + * include/Makefile.in: Ditto. + * aclocal.m4: Ditto. + +2008-08-25 Andreas Tobler + + * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and + FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. + Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. + Adjust copyright notice. + * src/powerpc/ffi.c: Add two new flags to indicate if we have one + register or two register to use for FFI_SYSV structs. + (ffi_prep_cif_machdep): Pass the right register flag introduced above. + (ffi_closure_helper_SYSV): Fix the return type for + FFI_SYSV_TYPE_SMALL_STRUCT. Comment. + Adjust copyright notice. + +2008-07-16 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned + int. + +2008-06-17 Ralf Wildenhues + + * configure: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2008-06-07 Joseph Myers + + * configure.ac (parisc*-*-linux*, powerpc-*-sysv*, + powerpc-*-beos*): Remove. + * configure: Regenerate. + +2008-05-09 Julian Brown + + * Makefile.am (LTLDFLAGS): New. + (libffi_la_LDFLAGS): Use above. + * Makefile.in: Regenerate. + +2008-04-18 Paolo Bonzini + + PR bootstrap/35457 + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2008-03-26 Kaz Kojima + + * src/sh/sysv.S: Add .note.GNU-stack on Linux. + * src/sh64/sysv.S: Likewise. + +2008-03-26 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2008-03-26 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/arm/sysv.S: Likewise. + +2008-03-16 Ralf Wildenhues + + * aclocal.m4: Regenerate. + * configure: Likewise. + * Makefile.in: Likewise. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + +2008-02-12 Bjoern Koenig + Andreas Tobler + + * configure.ac: Add amd64-*-freebsd* target. + * configure: Regenerate. + +2008-01-30 H.J. Lu + + PR libffi/34612 + * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when + returning struct. + + * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" + tests. + +2008-01-24 David Edelsohn + + * configure: Regenerate. + +2008-01-06 Andreas Tobler + + * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko. + +2008-01-05 Andreas Tobler + + PR testsuite/32843 + * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for + signed/unsigned int8/16 for X86_DARWIN. + Updated copyright info. + Handle one and two byte structs with special cif->flags. + * src/x86/ffitarget.h: Add special types for one and two byte structs. + Updated copyright info. + * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like + sysv.S + Remove code to pop args from the stack after call. + Special-case signed/unsigned for int8/16, one and two byte structs. + (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, + FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, + FFI_TYPE_SINT32. + Updated copyright info. + +2007-12-08 David Daney + + * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with + SUBU, add with ADDU and use smaller code sequences. + +2007-12-07 David Daney + + * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return + type. + +2007-12-06 David Daney + + * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already + defined. + (ffi_java_raw): New typedef. + (ffi_java_raw_call, ffi_java_ptrarray_to_raw, + ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to + ffi_java_raw. + (ffi_java_raw_closure) : Same. + (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change + parameter types. + * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with + FFI_SIZEOF_JAVA_RAW. + (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw. + Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use + sizeof(ffi_java_raw) for alignment calculations. + (ffi_java_ptrarray_to_raw): Same. + (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER + if FFI_SIZEOF_JAVA_RAW == 4. + (ffi_java_raw_to_rvalue): Same. + (ffi_java_raw_call): Change type of raw to ffi_java_raw. + (ffi_java_translate_args): Same. + (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change + parameter types. + * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI. + +2007-12-06 David Daney + + * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on + pointer values. + +2007-12-01 Andreas Tobler + + PR libffi/31937 + * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT. + Add local FFI_TYPE_UINT128 to handle soft-float long-double-128. + * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and + set the NUM_FPR_ARG_REGISTERS according to. + Add support for potential soft-float support under hard-float + architecture. + (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of + FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according + to the FFI_LINUX_SOFT_FLOAT ABI. + (ffi_prep_cif_machdep): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * src/powerpc/ppc_closure.S: Make sure not to store float/double + on archs where __NO_FPRS__ is true. + Add FFI_TYPE_UINT128 support. + * src/powerpc/sysv.S: Add support for soft-float long-double-128. + Adjust copyright notice. + +2007-11-25 Andreas Tobler + + * src/closures.c: Move defintion of MAYBE_UNUSED from here to ... + * include/ffi_common.h: ... here. + Update copyright. + +2007-11-17 Andreas Tobler + + * src/powerpc/sysv.S: Load correct cr to compare if we have long double. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/ffi.c: Add a comment to show which part goes into cr6. + * testsuite/libffi.call/return_ldl.c: New test. + +2007-09-04 + + * src/arm/sysv.S (UNWIND): New. + (Whole file): Conditionally compile unwinder directives. + * src/arm/sysv.S: Add unwinder directives. + + * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. + Only treat r0 as a struct address if we're actually returning a + struct by address. + Only copy the bytes that are actually within a struct. + (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes + is returned in r0, not passed by address. + (ffi_call): Allocate a word-sized temporary for the case where + a composite is returned in r0. + (ffi_prep_incoming_args_SYSV): Align as necessary. + +2007-08-05 Steven Newbury + + * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of + directly using the sys_cacheflush syscall. + +2007-07-27 Andrew Haley + + * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. + +2007-09-03 Maciej W. Rozycki + + * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure: Likewise. + +2007-08-24 David Daney + + * testsuite/libffi.call/return_sl.c: New test. + +2007-08-10 David Daney + + * testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.special/unwindtest_ffi_call.cc, + testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*. + +2007-08-10 David Daney + + PR libffi/28313 + * configure.ac: Don't treat mips64 as a special case. + * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S. + * configure: Regenerate + * Makefile.in: Ditto. + * fficonfig.h.in: Ditto. + * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent. + (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros. + (FFI_DEFAULT_ABI): Set for n64 case. + (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases. + * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE. + (ffi_closure_N32): New function. + (.eh_frame): New section + * src/mips/o32.S: Clean up comments. + (ffi_closure_O32): Pass ffi_closure parameter in $12. + * src/mips/ffi.c: Use FFI_MIPS_N32 instead of + _MIPS_SIM == _ABIN32 throughout. + (FFI_MIPS_STOP_HERE): New, use in place of + ffi_stop_here. + (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite + to support n32/n64 ABIs. + (calc_n32_struct_flags): Rewrite. + (calc_n32_return_struct_flags): Remove unused variable. Reverse + position of flag bits. + (ffi_prep_cif_machdep): Rewrite n32 portion. + (ffi_call): Enable for n64. Add special handling for small structure + return values. + (ffi_prep_closure_loc): Add n32 and n64 support. + (ffi_closure_mips_inner_O32): Add cast to silence warning. + (copy_struct_N32, ffi_closure_mips_inner_N32): New functions. + +2007-08-08 David Daney + + * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition. + * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type + specifiers. + * testsuite/libffi.call/nested_struct1.c (main): Ditto. + * testsuite/libffi.call/cls_sint.c (main): Ditto. + * testsuite/libffi.call/nested_struct9.c (main): Ditto. + * testsuite/libffi.call/cls_20byte1.c (main): Ditto. + * testsuite/libffi.call/cls_9byte1.c (main): Ditto. + * testsuite/libffi.call/closure_fn1.c (main): Ditto. + * testsuite/libffi.call/closure_fn3.c (main): Ditto. + * testsuite/libffi.call/return_dbl2.c (main): Ditto. + * testsuite/libffi.call/cls_sshort.c (main): Ditto. + * testsuite/libffi.call/return_fl3.c (main): Ditto. + * testsuite/libffi.call/closure_fn5.c (main): Ditto. + * testsuite/libffi.call/nested_struct.c (main): Ditto. + * testsuite/libffi.call/nested_struct10.c (main): Ditto. + * testsuite/libffi.call/return_ll1.c (main): Ditto. + * testsuite/libffi.call/cls_8byte.c (main): Ditto. + * testsuite/libffi.call/cls_align_uint32.c (main): Ditto. + * testsuite/libffi.call/cls_align_sint16.c (main): Ditto. + * testsuite/libffi.call/cls_20byte.c (main): Ditto. + * testsuite/libffi.call/nested_struct2.c (main): Ditto. + * testsuite/libffi.call/cls_24byte.c (main): Ditto. + * testsuite/libffi.call/nested_struct6.c (main): Ditto. + * testsuite/libffi.call/cls_uint.c (main): Ditto. + * testsuite/libffi.call/cls_12byte.c (main): Ditto. + * testsuite/libffi.call/cls_16byte.c (main): Ditto. + * testsuite/libffi.call/closure_fn0.c (main): Ditto. + * testsuite/libffi.call/cls_9byte2.c (main): Ditto. + * testsuite/libffi.call/closure_fn2.c (main): Ditto. + * testsuite/libffi.call/return_dbl1.c (main): Ditto. + * testsuite/libffi.call/closure_fn4.c (main): Ditto. + * testsuite/libffi.call/closure_fn6.c (main): Ditto. + * testsuite/libffi.call/cls_align_sint32.c (main): Ditto. + +2007-08-07 Andrew Haley + + * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous + checkin. + +2007-08-06 Andrew Haley + + PR testsuite/32843 + * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8, + FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32, + FFI_TYPE_SINT32. + +2007-08-02 David Daney + + * testsuite/libffi.call/return_ul.c (main): Define return type as + ffi_arg. Use proper printf conversion specifier. + +2007-07-30 Andrew Haley + + PR testsuite/32843 + * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for + signed/unsigned int8/16. + * src/x86/sysv.S (ffi_call_SYSV): Rewrite to: + Use a jump table. + Remove code to pop args from the stack after call. + Special-case signed/unsigned int8/16. + * testsuite/libffi.call/return_sc.c (main): Revert. + +2007-07-26 Richard Guenther + + PR testsuite/32843 + * testsuite/libffi.call/return_sc.c (main): Verify call + result as signed char, not ffi_arg. + +2007-07-16 Rainer Orth + + * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64. + * configure: Regenerate. + +2007-07-11 David Daney + + * src/mips/ffi.c: Don't include sys/cachectl.h. + (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of + cacheflush(). + +2007-05-18 Aurelien Jarno + + * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted + from (ffi_prep_closure): ... this. + (FFI_INIT_TRAMPOLINE): Adjust. + +2005-12-31 Phil Blundell + + * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, + ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. + * src/arm/sysv.S(ffi_closure_SYSV): Likewise. + * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_CLOSURES): Enable closure support. + +2007-07-03 Andrew Haley + + * testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.special/unwindtest_ffi_call.cc, + testsuite/libffi.special/unwindtest.cc: Enable for ARM. + +2007-07-05 H.J. Lu + + * aclocal.m4: Regenerated. + +2007-06-02 Paolo Bonzini + + * configure: Regenerate. + +2007-05-23 Steve Ellcey + + * Makefile.in: Regenerate. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2007-05-10 Roman Zippel + + * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV, + ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support. + * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise. + * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_CLOSURES): Enable closure support. + +2007-05-10 Roman Zippel + + * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test. + * configure: Regenerate. + * fficonfig.h.in: Regenerate. + * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC, + CFI_OFFSET,CFI_DEF_CFA): New macros. + (ffi_call_SYSV): Add callframe annotation. + +2007-05-10 Roman Zippel + + * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix + numerous test suite failures. + * src/m68k/sysv.S (ffi_call_SYSV): Likewise. + +2007-04-11 Paolo Bonzini + + * Makefile.am (EXTRA_DIST): Bring up to date. + * Makefile.in: Regenerate. + * src/frv/eabi.S: Remove RCS keyword. + +2007-04-06 Richard Henderson + + * configure.ac: Tidy target case. + (HAVE_LONG_DOUBLE): Allow the target to override. + * configure: Regenerate. + * include/ffi.h.in: Don't define ffi_type_foo if + LIBFFI_HIDE_BASIC_TYPES is defined. + (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define + to ffi_type_double. + * types.c (LIBFFI_HIDE_BASIC_TYPES): Define. + (FFI_TYPEDEF, ffi_type_void): Mark the data const. + (ffi_type_longdouble): Special case for Alpha. Don't define + if long double == double. + + * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value. + (ffi_prep_cif_machdep): Handle it as the 128-bit type. + (ffi_call, ffi_closure_osf_inner): Likewise. + (ffi_closure_osf_inner): Likewise. Mark hidden. + (ffi_call_osf, ffi_closure_osf): Mark hidden. + * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition. + * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden. + (load_table): Handle 128-bit long double. + + * testsuite/libffi.call/float4.c: Add -mieee for alpha. + +2007-04-06 Tom Tromey + + PR libffi/31491: + * README: Fixed bug in example. + +2007-04-03 Jakub Jelinek + + * src/closures.c: Include sys/statfs.h. + (_GNU_SOURCE): Define on Linux. + (FFI_MMAP_EXEC_SELINUX): Define. + (selinux_enabled): New variable. + (selinux_enabled_check): New function. + (is_selinux_enabled): Define. + (dlmmap): Use it. + +2007-03-24 Uros Bizjak + + * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static. + Use 'volatile float sum' to create sum of floats to avoid false + negative due to excess precision on ix86 targets. + (main): Ditto. + +2007-03-08 Alexandre Oliva + + * src/powerpc/ffi.c (flush_icache): Fix left-over from previous + patch. + (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones. + +2007-03-07 Alexandre Oliva + + * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. + (ffi_prep_closure_loc): New. + (ffi_prep_raw_closure_loc): New. + (ffi_prep_java_raw_closure_loc): New. + * src/closures.c: New file. + * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment): + Replace sflags with exec_offset. + [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset, + sub_segment_exec_offset): New macros. + (get_segment_flags, set_segment_flags, check_segment_merge): New + macros. + (is_mmapped_segment, is_extern_segment): Use get_segment_flags. + (add_segment, sys_alloc, create_mspace, create_mspace_with_base, + destroy_mspace): Use new macros. + (sys_alloc): Silence warning. + * Makefile.am (libffi_la_SOURCES): Add src/closures.c. + * Makefile.in: Rebuilt. + * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in + terms of ffi_prep_closure_loc. + * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted + from... + (ffi_prep_raw_closure): ... this. Re-implement in terms of the + renamed version. + * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and + adjusted from... + (ffi_prep_java_raw_closure): ... this. Re-implement in terms of + the renamed version. + * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from + (ffi_prep_closure): ... this. + * src/pa/ffi.c: Likewise. + * src/cris/ffi.c: Likewise. Adjust. + * src/frv/ffi.c: Likewise. + * src/ia64/ffi.c: Likewise. + * src/mips/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/s390/ffi.c: Likewise. + * src/sh/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/sparc/ffi.c: Likewise. + * src/x86/ffi64.c: Likewise. + * src/x86/ffi.c: Likewise. + (FFI_INIT_TRAMPOLINE): Adjust. + (ffi_prep_raw_closure_loc): Renamed and adjusted from... + (ffi_prep_raw_closure): ... this. + * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from + (ffi_prep_closure): ... this. + (flush_icache): Adjust. + +2007-03-07 Alexandre Oliva + + * src/dlmalloc.c: New file, imported version 2.8.3 of Doug + Lea's malloc. + +2007-03-01 Brooks Moses + + * Makefile.am: Add dummy install-pdf target. + * Makefile.in: Regenerate + +2007-02-13 Andreas Krebbel + + * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep, + ffi_closure_helper_SYSV): Add long double handling. + +2007-02-02 Jakub Jelinek + + * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2 + immediately after bctrl instruction. + +2007-01-18 Alexandre Oliva + + * Makefile.am (all-recursive, install-recursive, + mostlyclean-recursive, clean-recursive, distclean-recursive, + maintainer-clean-recursive): Add missing targets. + * Makefile.in: Rebuilt. + +2006-12-14 Andreas Tobler + + * configure.ac: Add TARGET for x86_64-*-darwin*. + * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources + for X86_DARWIN. + * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. + * src/x86/darwin64.S: New file for x86_64-*-darwin* support. + * configure: Regenerate. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for + ffi_call only. + +2006-12-13 Andreas Tobler + + * aclocal.m4: Regenerate with aclocal -I .. as written in the + Makefile.am. + +2006-10-31 Geoffrey Keating + + * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New. + (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for + Darwin. + * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL. + * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL. + +2006-10-10 Paolo Bonzini + Sandro Tolaini + + * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and + conditional. + * configure: Regenerated. + * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case. + (EXTRA_DIST): Add src/x86/darwin.S. + * Makefile.in: Regenerated. + * include/Makefile.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + + * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like + X86_WIN32, and additionally align stack to 16 bytes. + * src/x86/darwin.S: New, based on sysv.S. + * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs. + +2006-09-12 David Daney + + PR libffi/23935 + * include/Makefile.am: Install both ffi.h and ffitarget.h in + $(libdir)/gcc/$(target_alias)/$(gcc_version)/include. + * aclocal.m4: Regenerated for automake 1.9.6. + * Makefile.in: Regenerated. + * include/Makefile.in: Regenerated. + * testsuite/Makefile.in: Regenerated. + +2006-08-17 Andreas Tobler + + * include/ffi_common.h (struct): Revert accidental commit. + +2006-08-15 Andreas Tobler + + * include/ffi_common.h: Remove lint directives. + * include/ffi.h.in: Likewise. + +2006-07-25 Torsten Schoenfeld + + * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly + for 32-bit architectures. + * testsuite/libffi.call/return_ul.c: New test case. + +2006-07-19 David Daney + + * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips, + xfail remains for mips64. + +2006-05-23 Carlos O'Donell + + * Makefile.am: Add install-html target. Add install-html to .PHONY + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2006-05-18 John David Anglin + + * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from + stack slot. + +2006-04-22 Andreas Tobler + + * README: Remove notice about 'Crazy Comments'. + * src/debug.c: Remove lint directives. Cleanup white spaces. + * src/java_raw_api.c: Likewise. + * src/prep_cif.c: Likewise. + * src/raw_api.c: Likewise. + * src/ffitest.c: Delete. No longer needed, all test cases migrated + to the testsuite. + * src/arm/ffi.c: Remove lint directives. + * src/m32r/ffi.c: Likewise. + * src/pa/ffi.c: Likewise. + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + * src/sh/ffi.c: Likewise. + * src/sh64/ffi.c: Likewise. + * src/x86/ffi.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + +2006-04-13 Andreas Tobler + + * src/pa/hpux32.S: Correct unwind offset calculation for + ffi_closure_pa32. + * src/pa/linux.S: Likewise. + +2006-04-12 James E Wilson + + PR libgcj/26483 + * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros. + (hfa_type_load): Call stf_spill. + (hfa_type_store): Call ldf_fill. + (ffi_call): Adjust calls to above routines. Add local temps for + macro result. + +2006-04-10 Matthias Klose + + * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib + directory names containing underscores. + +2006-04-07 James E Wilson + + * testsuite/libffi.call/float4.c: New testcase. + +2006-04-05 John David Anglin + Andreas Tobler + + * Makefile.am: Add PA_HPUX port. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure.ac: Add PA_HPUX rules. + * configure: Regenerate. + * src/pa/ffitarget.h: Rename linux target to PA_LINUX. + Add PA_HPUX and PA64_HPUX. + Rename FFI_LINUX ABI to FFI_PA32 ABI. + (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets. + (FFI_TYPE_SMALL_STRUCT2): Define. + (FFI_TYPE_SMALL_STRUCT4): Likewise. + (FFI_TYPE_SMALL_STRUCT8): Likewise. + (FFI_TYPE_SMALL_STRUCT3): Redefine. + (FFI_TYPE_SMALL_STRUCT5): Likewise. + (FFI_TYPE_SMALL_STRUCT6): Likewise. + (FFI_TYPE_SMALL_STRUCT7): Likewise. + * src/pa/ffi.c (ROUND_DOWN): Delete. + (fldw, fstw, fldd, fstd): Use '__asm__'. + (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2, + FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8. + (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment. + Simplify incrementing of stack slot variable. Change type of local + 'n' to unsigned int. + (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long + double on PA_HPUX. + (ffi_prep_cif_machdep): Likewise. + (ffi_call): Likewise. + (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change + return type to ffi_status. Simplify incrementing of stack slot + variable. Only copy floating point argument registers when PA_LINUX + is true. Reformat debug statement. + Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and + FFI_TYPE_SMALL_STRUCT8. + (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to + declaration. + (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX. + Add nops to cache flush. Add trampoline for PA_HPUX. + * src/pa/hpux32.S: New file. + * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename + ffi_prep_args_LINUX to ffi_prep_args_pa32. + Localize labels. Add support for 2, 4 and 8-byte small structs. Handle + unaligned destinations in 3, 5, 6 and 7-byte small structs. Order + argument type checks so that common argument types appear first. + (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename + ffi_closure_inner_LINUX to ffi_closure_inner_pa32. + +2006-03-24 Alan Modra + + * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default + for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of + FFI_TYPE_LONGDOUBLE. + (ffi_prep_args64): Assert using IBM extended double. + (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. + Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. + (ffi_call): Handle FFI_LINUX. + (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs + gpr3 return pointer as for struct return. Handle FFI_LINUX + FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" + unnecessarily. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 + for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. + Don't use r6 as pointer to results, instead use sp offset. Don't + make a special call to load lr with case table address, instead + use offset from previous call. + * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. + * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double + return. + +2006-03-15 Kaz Kojima + + * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments + passed with FP registers correctly. + (ffi_closure_helper_SYSV): Likewise. + * src/sh64/sysv.S: Likewise. + +2006-03-01 Andreas Tobler + + * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif, + args and userdata unused. + (closure_test_fn1): Mark cif and userdata unused. + (main): Remove unused res. + +2006-02-28 Andreas Tobler + + * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for + -O2, -O3, -Os and the warning flags -W -Wall. + * testsuite/libffi.special/special.exp: Likewise. + * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark + unused parameter unused for gcc or else do nothing. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif + and userdata unused. + * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise. + * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise. + * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise. + * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise. + * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise. + * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise. + * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise. + * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise. + * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise. + * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise. + * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise. + * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise. + * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise. + * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise. + * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise. + * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise. + * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise. + * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise. + * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise. + * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise. + * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise. + * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise. + * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise. + * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast + void* to avoid compiler warning. + (main): Likewise. + (cls_struct_align_gn): Mark cif and userdata unused. + * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn): + Likewise. + * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise. + * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise. + * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif + and data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and + data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif + and data unused. + (main): Cast res_call to silence gcc. + * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and + userdata unused. + (cls_ret_schar_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and + userdata unused. + (cls_ret_sint_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and + userdata unused. + (cls_ret_sshort_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and + userdata unused. + (cls_ret_uchar_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and + userdata unused. + (cls_ret_uint_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif + and userdata unused. + * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and + userdata unused. + (cls_ret_ushort_fn): Cast printf parameter to silence gcc. + * testsuite/libffi.call/float.c (floating): Remove unused parameter e. + * testsuite/libffi.call/float1.c (main): Remove unused variable i. + Cleanup white spaces. + * testsuite/libffi.call/negint.c (checking): Remove unused variable i. + * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark + cif and userdata unused. + * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn): + Likewise. + * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise. + * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf + formatters to silence gcc. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct4.c: Mention related PR. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct6.c: Mention related PR. + (B_gn): Mark cif and userdata unused. + * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata + unused. + * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise. + * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise. + * testsuite/libffi.call/problem1.c (stub): Likewise. + * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence + gcc. + * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned + in the last commit for this test case in the test case itself. + * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as + unused. + * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise. + * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise. + * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise. + * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise. + * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise. + * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise. + +2006-02-22 Kaz Kojima + + * src/sh/sysv.S: Fix register numbers in the FDE for + ffi_closure_SYSV. + +2006-02-20 Andreas Tobler + + * testsuite/libffi.call/return_fl2.c (return_fl): Remove static + declaration to avoid a false negative on ix86. See PR323. + +2006-02-18 Kaz Kojima + + * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable + and cast integer to void * if needed. Update the pointer to + the FP register saved area correctly. + +2006-02-17 Andreas Tobler + + * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630 + is fixed. + * testsuite/libffi.call/nested_struct4.c: Likewise. + +2006-02-16 Andreas Tobler + + * testsuite/libffi.call/return_dbl.c: New test case. + * testsuite/libffi.call/return_dbl1.c: Likewise. + * testsuite/libffi.call/return_dbl2.c: Likewise. + * testsuite/libffi.call/return_fl.c: Likewise. + * testsuite/libffi.call/return_fl1.c: Likewise. + * testsuite/libffi.call/return_fl2.c: Likewise. + * testsuite/libffi.call/return_fl3.c: Likewise. + * testsuite/libffi.call/closure_fn6.c: Likewise. + + * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong + definition. + * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition + here to be used by other test cases too. + + * testsuite/libffi.call/nested_struct10.c: New test case. + * testsuite/libffi.call/nested_struct9.c: Likewise. + * testsuite/libffi.call/nested_struct8.c: Likewise. + * testsuite/libffi.call/nested_struct7.c: Likewise. + * testsuite/libffi.call/nested_struct6.c: Likewise. + * testsuite/libffi.call/nested_struct5.c: Likewise. + * testsuite/libffi.call/nested_struct4.c: Likewise. + +2006-01-21 Andreas Tobler + + * configure.ac: Enable libffi for sparc64-*-freebsd*. + * configure: Rebuilt. + +2006-01-18 Jakub Jelinek + + * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3, + instead do the shifting inline. + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5 + shift count unconditionally. Simplify load sequences for 1, 2, 3, 4 + and 8 byte structs, for the remaining struct sizes don't call + __lshrdi3, instead do the shifting inline. + +2005-12-07 Thiemo Seufer + + * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add + missing parentheses. + * src/mips/o32.S (ffi_call_O32): Code formatting. Define + and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations. + (ffi_closure_O32): Likewise, but with newly defined A3_OFF2, + A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2, + V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2, + FA_0_0_OFF2. + * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix + endianness bugs. + (ffi_prep_closure): Improve trampoline instruction scheduling. + (ffi_closure_mips_inner_O32): Fix endianness bugs. + +2005-12-03 Alan Modra + + * src/powerpc/ffi.c: Formatting. + (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions. + (ffi_prep_args64): Likewise. + +2005-09-30 Geoffrey Keating + + * testsuite/lib/libffi-dg.exp (libffi_target_compile): For + darwin, use -shared-libgcc not -lgcc_s, and explain why. + +2005-09-26 Tom Tromey + + * testsuite/libffi.call/float1.c (value_type): New typedef. + (CANARY): New define. + (main): Check for result buffer overflow. + * src/powerpc/linux64.S: Handle linux64 long double returns. + * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant. + (ffi_prep_cif_machdep): Handle linux64 long double returns. + +2005-08-25 Alan Modra + + PR target/23404 + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack + homed fp args. + (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. + +2005-08-11 Jakub Jelinek + + * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. + (AH_BOTTOM): Add FFI_HIDDEN definition. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + * src/powerpc/ffi.c (hidden): Remove. + (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64, + ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64, + .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden. + * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove, + add FFI_HIDDEN to its prototype. + (ffi_closure_SYSV_inner): New. + * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. + * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New. + +2005-08-10 Alfred M. Szmidt + + PR libffi/21819: + * configure: Rebuilt. + * configure.ac: Handle i*86-*-gnu*. + +2005-08-09 Jakub Jelinek + + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use + DW_CFA_offset_extended_sf rather than + DW_CFA_GNU_negative_offset_extended. + * src/powerpc/sysv.S (ffi_call_SYSV): Likewise. + +2005-07-22 SUGIOKA Toshinobu + + * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly + on sh3. + (ffi_closure_SYSV): Change the stack layout for sh3 struct argument. + * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is + partially on register. + (ffi_closure_helper_SYSV): Likewise. + (ffi_prep_cif_machdep): Don't set too many cif->flags. + +2005-07-20 Kaz Kojima + + * src/sh/ffi.c (ffi_call): Handle small structures correctly. + Remove empty line. + * src/sh64/ffi.c (simple_type): Remove. + (return_type): Handle small structures correctly. + (ffi_prep_args): Likewise. + (ffi_call): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return. + Emit position independent code if PIC and remove wrong datalabel + prefixes from EH data. + +2005-07-19 Andreas Tobler + + * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD. + * Makefile.in: Regenerate. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * configure.ac: Add POWERPC_FREEBSD rules. + * configure: Regenerate. + * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules. + (FFI_SYSV_TYPE_SMALL_STRUCT): Define. + * src/powerpc/ffi.c: Add flags to handle small structure returns + in ffi_call_SYSV. + (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI. + Aka FFI_SYSV. + (ffi_closure_helper_SYSV): Likewise. + * src/powerpc/ppc_closure.S: Add return types for small structures. + * src/powerpc/sysv.S: Add bits to handle small structures for + final SYSV 4 ABI. + +2005-07-10 Andreas Tobler + + * testsuite/libffi.call/cls_5_1_byte.c: New test file. + * testsuite/libffi.call/cls_6_1_byte.c: Likewise. + * testsuite/libffi.call/cls_7_1_byte.c: Likewise. + +2005-07-05 Randolph Chung + + * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1 + as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte + structures. Kill compilation warnings. + (ffi_closure_inner_LINUX): Print return values as hex in debug + message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3. + Properly handle 5-7 byte structure returns. + * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1) + (FFI_TYPE_SMALL_STRUCT2): Remove. + (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5) + (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define. + * src/pa/linux.S: Mark source file as using PA1.1 assembly. + (checksmst1, checksmst2): Remove. + (checksmst3): Optimize handling of 3-byte struct returns. + (checksmst567): Properly handle 5-7 byte struct returns. + +2005-06-15 Rainer Orth + + PR libgcj/21943 + * src/mips/n32.S: Enforce PIC code. + * src/mips/o32.S: Likewise. + +2005-06-15 Rainer Orth + + * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64. + * configure: Regenerate. + +2005-06-01 Alan Modra + + * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET + to call ffi_closure_helper_SYSV. Append @local instead. + * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV. + +2005-05-17 Kelley Cook + + * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS. + Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF. + * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config. + * aclocal.m4, configure, fficonfig.h.in, Makefile.in, + include/Makefile.in, testsuite/Makefile.in: Regenerate. + +2005-05-09 Mike Stump + + * configure: Regenerate. + +2005-05-08 Richard Henderson + + PR libffi/21285 + * src/alpha/osf.S: Update unwind into to match code. + +2005-05-04 Andreas Degert + Richard Henderson + + * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in + bit 11 of flags. + (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64. + (ffi_prep_closure): Set carry bit if sse-used flag set. + * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument. + Only load sse registers if ssecount non-zero. + (ffi_closure_unix64): Only save sse registers if carry set on entry. + +2005-04-29 Ralf Corsepius + + * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*, + powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*. + * configure: Regenerate. + +2005-04-20 Hans-Peter Nilsson + + * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use, + have Tcl8.3-compatible intermediate variable. + +2005-04-18 Simon Posnjak + Hans-Peter Nilsson + + * Makefile.am: Add CRIS support. + * configure.ac: Likewise. + * Makefile.in, configure, testsuite/Makefile.in, + include/Makefile.in: Regenerate. + * src/cris: New directory. + * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files. + * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__. + + * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with + \r?\n in output tests. + +2005-04-12 Mike Stump + + * configure: Regenerate. + +2005-03-30 Hans Boehm + + * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI. + +2005-03-30 Steve Ellcey + + * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute. + (ffi_sarg) Ditto. + * src/ia64/unix.S (ffi_closure_unix): Extend gp + to 64 bits in ILP32 mode. + Load 64 bits even for short data. + +2005-03-23 Mike Stump + + * src/powerpc/darwin.S: Update for -m64 multilib. + * src/powerpc/darwin_closure.S: Likewise. + +2005-03-21 Zack Weinberg + + * configure.ac: Do not invoke TL_AC_GCC_VERSION. + Do not set tool_include_dir. + * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in: + Regenerate. + * include/Makefile.am: Set gcc_version and toollibffidir. + * include/Makefile.in: Regenerate. + +2005-02-22 Andrew Haley + + * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to + odd-numbered register pairs for 64-bit integer types. + +2005-02-23 Andreas Tobler + + PR libffi/20104 + * testsuite/libffi.call/return_ll1.c: New test case. + +2005-02-11 Janis Johnson + + * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options. + * testsuite/libffi.call/float.c: Ditto. + * testsuite/libffi.call/float2.c: Ditto. + * testsuite/libffi.call/float3.c: Ditto. + +2005-02-08 Andreas Tobler + + * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv. + +2005-01-12 Eric Botcazou + + * testsuite/libffi.special/special.exp (cxx_options): Add + -shared-libgcc. + +2004-12-31 Richard Henderson + + * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove. + (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and + offset parameters with a type parameter; deduce size and structure + alignment. Update all users. + +2004-12-31 Richard Henderson + + * src/types.c (FFI_TYPE_POINTER): Define with sizeof. + (FFI_TYPE_LONGDOUBLE): Fix for ia64. + * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move + into ffi_prep_closure. + * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite + from scratch. + +2004-12-27 Richard Henderson + + * src/x86/unix64.S: Fix typo in unwind info. + +2004-12-25 Richard Henderson + + * src/x86/ffi64.c (struct register_args): Rename from stackLayout. + (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS. + (merge_classes): Check for it. + (SSE_CLASS_P): New. + (classify_argument): Pass byte_offset by value; perform all updates + inside struct case. + (examine_argument): Add classes argument; handle + X86_64_COMPLEX_X87_CLASS. + (ffi_prep_args): Merge into ... + (ffi_call): ... here. Share stack frame with ffi_call_unix64. + (ffi_prep_cif_machdep): Setup cif->flags for proper structure return. + (ffi_fill_return_value): Remove. + (ffi_prep_closure): Remove dead assert. + (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner. + Rewrite to use struct register_args instead of va_list. Create + flags for handling structure returns. + * src/x86/unix64.S: Remove dead strings. + (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share + stack frame with ffi_call. Handle structure returns properly. + (float2sse, floatfloat2sse, double2sse): Remove. + (sse2float, sse2double, sse2floatfloat): Remove. + (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite + to handle structure returns properly. + +2004-12-08 David Edelsohn + + * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and + PICFLAG. + * Makefile.in: Regenerated. + +2004-12-02 Richard Sandiford + + * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. + * configure, aclocal.m4, Makefile.in: Regenerate. + * include/Makefile.in, testsuite/Makefile.in: Regenerate. + +2004-11-29 Kelley Cook + + * configure: Regenerate for libtool change. + +2004-11-25 Kelley Cook + + * configure: Regenerate for libtool reversion. + +2004-11-24 Kelley Cook + + * configure: Regenerate for libtool change. + +2004-11-23 John David Anglin + + * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp. + +2004-11-23 Richard Sandiford + + * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead + of jal. Use an absolute encoding for the frame information. + +2004-11-23 Kelley Cook + + * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS. + * acinclude.m4: Delete logic for sincludes. + * aclocal.m4, Makefile.in, configure: Regenerate. + * include/Makefile: Likewise. + * testsuite/Makefile: Likewise. + +2004-11-22 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers + on a 8-byte boundary. + * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments. + +2004-10-27 Richard Earnshaw + + * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return + long long values. Round stack allocation to a multiple of 8 bytes + for ATPCS compatibility. + * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register + names. Handle returning long long types. Add Thumb and interworking + support. Improve soft-float code. + +2004-10-27 Richard Earnshaw + + * testsuite/lib/libffi-db.exp (load_gcc_lib): New function. + (libffi_exit): New function. + (libffi_init): Build the testglue wrapper if needed. + +2004-10-25 Eric Botcazou + + PR other/18138 + * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc. + +2004-10-25 Kazuhiro Inaoka + + * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0. + +2004-10-20 Kaz Kojima + + * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data. + * testsuite/libffi.call/float3.c: New test case. + +2004-10-18 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for + the function returning a structure pointed with R2. + * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to + the structure return value if T bit set. Emit position + independent code and EH data if PIC. + +2004-10-13 Kazuhiro Inaoka + + * Makefile.am: Add m32r support. + * configure.ac: Likewise. + * Makefile.in: Regenerate. + * confiugre: Regenerate. + * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF + (uint64, sint64, double, longdouble) + * src/m32r: New directory. + * src/m32r/ffi.c: New file. + * src/m32r/sysv.S: Likewise. + * src/m32r/ffitarget.h: Likewise. + +2004-10-02 Kaz Kojima + + * testsuite/libffi.call/negint.c: New test case. + +2004-09-14 H.J. Lu + + PR libgcj/17465 + * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path. + Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH, + LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and + DYLD_LIBRARY_PATH. + +2004-09-05 Andreas Tobler + + * testsuite/libffi.call/many_win32.c: Remove whitespaces. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup + whitespaces. + * testsuite/libffi.call/return_sc.c: Likewise. + * testsuite/libffi.call/return_uc.c: Likewise. + +2004-09-05 Andreas Tobler + + * src/powerpc/darwin.S: Fix comments and identation. + * src/powerpc/darwin_closure.S: Likewise. + +2004-09-02 Andreas Tobler + + * src/powerpc/ffi_darwin.c: Add flag for longdouble return values. + (ffi_prep_args): Handle longdouble arguments. + (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for + longdouble. + (ffi_closure_helper_DARWIN): Add closure handling for longdouble. + * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble + values. + * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. + * src/types.c: Defined longdouble size and alignment for darwin. + +2004-09-02 Andreas Tobler + + * src/powerpc/aix.S: Remove whitespaces. + * src/powerpc/aix_closure.S: Likewise. + * src/powerpc/asm.h: Likewise. + * src/powerpc/ffi.c: Likewise. + * src/powerpc/ffitarget.h: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + +2004-08-30 Anthony Green + + * Makefile.am: Add frv support. + * Makefile.in, testsuite/Makefile.in: Rebuilt. + * configure.ac: Read configure.host. + * configure.in: Read configure.host. + * configure.host: New file. frv-elf needs libgloss. + * include/ffi.h.in: Force ffi_closure to have a nice big (8) + alignment. This is needed to frv and shouldn't harm the others. + * include/ffi_common.h (ALIGN_DOWN): New macro. + * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files. + +2004-08-24 David Daney + + * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint64.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_multi_schar.c: Likewise. + * testsuite/libffi.call/cls_multi_sshort.c: Likewise. + * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_uchar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushort.c: Likewise. + * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise and set return value + to zero. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + +2004-08-23 David Daney + + PR libgcj/13141 + * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI. + * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation. + (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point + parameters and return types. + (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI. + (ffi_prep_closure): Ditto. + (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix + alignment calculations. + * src/mips/o32.S (ffi_closure_O32): Don't use floating point + instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant. + +2004-08-14 Casey Marshall + + * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to + contain `FFI_TYPE_UINT64' as return type for any 64-bit + integer (O32 ABI only). + (ffi_prep_closure): new function. + (ffi_closure_mips_inner_O32): new function. + * src/mips/ffitarget.h: Define `FFI_CLOSURES' and + `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32. + * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return + 64 bit integers correctly. + (ffi_closure_O32): new function. + Added DWARF-2 unwind info for both functions. + +2004-08-10 Andrew Haley + + * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments. + +2004-08-01 Robert Millan + + * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu. + * configure: Regenerate. + +2004-07-30 Maciej W. Rozycki + + * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for + and mmap() explicitly instead of relying on preset autoconf cache + variables. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2004-07-11 Ulrich Weigand + + * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation. + (ffi_check_float_struct): Remove unused prototype. + +2004-06-30 Geoffrey Keating + + * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment + character on Darwin, use '\n\t' instead. + +2004-06-26 Matthias Klose + + * libtool-version: Fix typo in revision/age. + +2004-06-17 Matthias Klose + + * libtool-version: New. + * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname. + * Makefile.in: Regenerate. + +2004-06-15 Paolo Bonzini + + * Makefile.am: Remove useless multilib rules. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate with automake 1.8.5. + * configure.ac: Remove useless multilib configury. + * configure: Regenerate. + +2004-06-15 Paolo Bonzini + + * .cvsignore: New file. + +2004-06-10 Jakub Jelinek + + * src/ia64/unix.S (ffi_call_unix): Insert group barrier break + fp_done. + (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever + changed from 8. + +2004-06-06 Sean McNeil + + * configure.ac: Add x86_64-*-freebsd* support. + * configure: Regenerate. + +2004-04-26 Joe Buck + + Bug 15093 + * configure.ac: Test for existence of mmap and sys/mman.h before + checking blacklist. Fix suggested by Jim Wilson. + * configure: Regenerate. + +2004-04-26 Matt Austern + + * src/powerpc/darwin.S: Go through a non-lazy pointer for initial + FDE location. + * src/powerpc/darwin_closure.S: Likewise. + +2004-04-24 Andreas Tobler + + * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization + error. Reported by Thomas Heller . + * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise. + * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise. + +2004-03-20 Matthias Klose + + * src/pa/linux.S: Fix typo. + +2004-03-19 Matthias Klose + + * Makefile.am: Update. + * Makefile.in: Regenerate. + * src/pa/ffi.h.in: Remove. + * src/pa/ffitarget.h: New file. + +2004-02-10 Randolph Chung + + * Makefile.am: Add PA support. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * configure.ac: Add PA target. + * configure: Regenerate. + * src/pa/ffi.c: New file. + * src/pa/ffi.h.in: Add PA support. + * src/pa/linux.S: New file. + * prep_cif.c: Add PA support. + +2004-03-16 Hosaka Yuji + + * src/types.c: Fix alignment size of X86_WIN32 case int64 and + double. + * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type + with ecif->cif->flags. + (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type + with cif->flags. + (ffi_prep_cif_machdep): Add X86_WIN32 struct case. + (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32. + * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b, + sc_retstruct2b): Add for 1 or 2-bytes struct case. + +2004-03-15 Kelley Cook + + * configure.in: Rename file to ... + * configure.ac: ... this. + * fficonfig.h.in: Regenerate. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * testsuite/Makefile.in: Regenerate. + +2004-03-12 Matt Austern + + * src/powerpc/darwin.S: Fix EH information so it corresponds to + changes in EH format resulting from addition of linkonce support. + * src/powerpc/darwin_closure.S: Likewise. + +2004-03-11 Andreas Tobler + Paolo Bonzini + + * Makefile.am (AUTOMAKE_OPTIONS): Set them. + Remove VPATH. Remove rules for object files. Remove multilib support. + (AM_CCASFLAGS): Add. + * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER. + (AC_PREREQ): Bump version to 2.59. + (AC_INIT): Fill with version info and bug address. + (ORIGINAL_LD_FOR_MULTILIBS): Remove. + (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE. + De-precious CC so that the right flags are passed down to multilibs. + (AC_MSG_ERROR): Replace obsolete macro AC_ERROR. + (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES. + (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS. + * configure: Rebuilt. + * aclocal.m4: Likewise. + * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise. + * fficonfig.h.in: Likewise. + +2004-03-11 Andreas Schwab + + * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point + arguments from fp registers only for the first 8 parameter slots. + Don't convert a float parameter when passed in memory. + +2004-03-09 Hans-Peter Nilsson + + * configure: Regenerate for config/accross.m4 correction. + +2004-02-25 Matt Kraai + + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change + ecif->cif->bytes to bytes. + (ffi_prep_cif_machdep): Add braces around nested if statement. + +2004-02-09 Alan Modra + + * src/types.c (pointer): POWERPC64 has 8 byte pointers. + + * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling. + (ffi_closure_helper_LINUX64): Fix typo. + * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128 + for powerpc64-*-*. + * testsuite/libffi.call/float.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + +2004-02-08 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_cif_machdep ): Correct + long double function return and long double arg handling. + (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var. + Use "end_pfr" instead of "nf". Correct long double handling. + Localise "temp". + * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double + return value. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate + space for long double return value. Adjust stack frame and offsets. + Load f2 long double return. + +2004-02-07 Alan Modra + + * src/types.c: Use 16 byte long double for POWERPC64. + +2004-01-25 Eric Botcazou + + * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array + when the structure return address is passed in %o0. + (ffi_V9_return_struct): Rename into ffi_v9_layout_struct. + (ffi_v9_layout_struct): Align the field following a nested structure + on a word boundary. Use memmove instead of memcpy. + (ffi_call): Update call to ffi_V9_return_struct. + (ffi_prep_closure): Define 'ctx' only for V8. + (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8 + and ffi_closure_sparc_inner_v9. + (ffi_closure_sparc_inner_v8): Return long doubles by reference. + Always skip the structure return address. For structures and long + doubles, copy the argument directly. + (ffi_closure_sparc_inner_v9): Skip the structure return address only + if required. Shift the maximum floating-point slot accordingly. For + big structures, copy the argument directly; otherwise, left-justify the + argument and call ffi_v9_layout_struct to lay out the structure on + the stack. + * src/sparc/v8.S: Undef STACKFRAME before defining it. + (ffi_closure_v8): Pass the structure return address. Update call to + ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling. + Skip the 'unimp' insn when returning long doubles and structures. + * src/sparc/v9.S: Undef STACKFRAME before defining it. + (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit + FFI_TYPE_INT handling. Load structures both in integers and + floating-point registers on return. + * README: Update status of the SPARC port. + +2004-01-24 Andreas Tobler + + * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value + as of type ffi_arg. + * testsuite/libffi.call/struct3.c (main): Fix CHECK. + +2004-01-22 Ulrich Weigand + + * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result + value as of type ffi_arg, not unsigned int. + +2004-01-21 Michael Ritzert + + * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead + of the LHS. + +2004-01-12 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for + Solaris. + +2004-01-08 Rainer Orth + + * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED + to void *. + +2003-12-10 Richard Henderson + + * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to + size_t instead of int. + +2003-12-04 Hosaka Yuji + + * testsuite/libffi.call/many_win32.c: Include . + * testsuite/libffi.call/many_win32.c (main): Replace variable + int i with unsigned long ul. + + * testsuite/libffi.call/cls_align_uint64.c: New test case. + * testsuite/libffi.call/cls_align_sint64.c: Likewise. + * testsuite/libffi.call/cls_align_uint32.c: Likewise. + * testsuite/libffi.call/cls_align_sint32.c: Likewise. + * testsuite/libffi.call/cls_align_uint16.c: Likewise. + * testsuite/libffi.call/cls_align_sint16.c: Likewise. + * testsuite/libffi.call/cls_align_float.c: Likewise. + * testsuite/libffi.call/cls_align_double.c: Likewise. + * testsuite/libffi.call/cls_align_longdouble.c: Likewise. + * testsuite/libffi.call/cls_align_pointer.c: Likewise. + +2003-12-02 Hosaka Yuji + + PR other/13221 + * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): + Align arguments to 32 bits. + +2003-12-01 Andreas Tobler + + PR other/13221 + * testsuite/libffi.call/cls_multi_sshort.c: New test case. + * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_uchar.c: Likewise. + * testsuite/libffi.call/cls_multi_schar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise. + * testsuite/libffi.call/cls_multi_ushort.c: Likewise. + + * testsuite/libffi.special/unwindtest.cc: Cosmetics. + +2003-11-26 Kaveh R. Ghazi + + * testsuite/libffi.call/ffitest.h: Include . + * testsuite/libffi.special/ffitestcxx.h: Likewise. + +2003-11-22 Andreas Tobler + + * Makefile.in: Rebuilt. + * configure: Likewise. + * testsuite/libffi.special/unwindtest.cc: Convert the mmap to + the right type. + +2003-11-21 Andreas Jaeger + Andreas Tobler + + * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST. + * configure.in: Call AC_FUNC_MMAP_BLACKLIST. + * Makefile.in: Rebuilt. + * aclocal.m4: Likewise. + * configure: Likewise. + * fficonfig.h.in: Likewise. + * testsuite/lib/libffi-dg.exp: Add include dir. + * testsuite/libffi.call/ffitest.h: Add MMAP definitions. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality + for ffi_closure if available. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + +2003-11-20 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional. + +2003-11-19 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin. + Add -lgcc_s to additional flags. + +2003-11-12 Andreas Tobler + + * configure.in, include/Makefile.am: PR libgcj/11147, install + the ffitarget.h header file in a gcc versioned and target + dependent place. + * configure: Regenerated. + * Makefile.in, include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + +2003-11-09 Andreas Tobler + + * testsuite/libffi.call/closure_fn0.c: Print result and check + with dg-output to make debugging easier. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_9byte2.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + + * testsuite/libffi.special/unwindtest.cc: Make ffi_closure + static. + +2003-11-08 Andreas Tobler + + * testsuite/libffi.call/cls_9byte2.c: New test case. + * testsuite/libffi.call/cls_9byte1.c: Likewise. + * testsuite/libffi.call/cls_64byte.c: Likewise. + * testsuite/libffi.call/cls_20byte1.c: Likewise. + * testsuite/libffi.call/cls_19byte.c: Likewise. + * testsuite/libffi.call/cls_18byte.c: Likewise. + * testsuite/libffi.call/closure_fn4.c: Likewise. + * testsuite/libffi.call/closure_fn5.c: Likewise. + * testsuite/libffi.call/cls_schar.c: Likewise. + * testsuite/libffi.call/cls_sint.c: Likewise. + * testsuite/libffi.call/cls_sshort.c: Likewise. + * testsuite/libffi.call/nested_struct2.c: Likewise. + * testsuite/libffi.call/nested_struct3.c: Likewise. + +2003-11-08 Andreas Tobler + + * testsuite/libffi.call/cls_double.c: Do a check on the result. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/return_sc.c: Cleanup whitespaces. + +2003-11-06 Andreas Tobler + + * src/prep_cif.c (ffi_prep_cif): Move the validity check after + the initialization. + +2003-10-23 Andreas Tobler + + * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace + FFI_ASSERT(FALSE) with FFI_ASSERT(0). + +2003-10-22 David Daney + + * src/mips/ffitarget.h: Replace undefined UINT32 and friends with + __attribute__((__mode__(__SI__))) and friends. + +2003-10-22 Andreas Schwab + + * src/ia64/ffi.c: Replace FALSE/TRUE with false/true. + +2003-10-21 Andreas Tobler + + * configure.in: AC_LINK_FILES(ffitarget.h). + * configure: Regenerate. + * Makefile.in: Likewise. + * include/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + * fficonfig.h.in: Likewise. + +2003-10-21 Paolo Bonzini + Richard Henderson + + Avoid that ffi.h includes fficonfig.h. + + * Makefile.am (EXTRA_DIST): Include ffitarget.h files + (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. + (TARGET_SRC_MIPS_SGI): Removed. + (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX. + (MIPS_SGI): Removed. + (CLEANFILES): Removed. + (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New + targets. + * acconfig.h: Removed. + * configure.in: Compute sizeofs only for double and long double. + Use them to define and subst HAVE_LONG_DOUBLE. Include comments + into AC_DEFINE instead of using acconfig.h. Create + include/ffitarget.h instead of include/fficonfig.h. Rename + MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree. + AC_DEFINE EH_FRAME_FLAGS. + * include/Makefile.am (DISTCLEANFILES): New automake macro. + (hack_DATA): Add ffitarget.h. + * include/ffi.h.in: Remove all system specific definitions. + Declare raw API even if it is not installed, why bother? + Use limits.h instead of SIZEOF_* to define ffi_type_*. Do + not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include + ffitarget.h instead of fficonfig.h. Remove ALIGN macro. + (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead. + * include/ffi_common.h (bool): Do not define. + (ffi_assert): Accept failed assertion. + (ffi_type_test): Return void and accept file/line. + (FFI_ASSERT): Pass stringized failed assertion. + (FFI_ASSERT_AT): New macro. + (FFI_ASSERT_VALID_TYPE): New macro. + (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32, + UINT64, SINT64): Define here with gcc's __attribute__ macro + instead of in ffi.h + (FLOAT32, ALIGN): Define here instead of in ffi.h + * include/ffi-mips.h: Removed. Its content moved to + src/mips/ffitarget.h after separating assembly and C sections. + * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c + src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c, + src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S, + src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c: + SIZEOF_ARG -> FFI_SIZEOF_ARG. + * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+). + * src/debug.c (ffi_assert): Accept stringized failed assertion. + (ffi_type_test): Rewritten. + * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call + FFI_ASSERT_VALID_TYPE. + * src/alpha/ffitarget.h, src/arm/ffitarget.h, + src/ia64/ffitarget.h, src/m68k/ffitarget.h, + src/mips/ffitarget.h, src/powerpc/ffitarget.h, + src/s390/ffitarget.h, src/sh/ffitarget.h, + src/sh64/ffitarget.h, src/sparc/ffitarget.h, + src/x86/ffitarget.h: New files. + * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S, + src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S, + src/powerpc/aix.S, src/powerpc/darwin.S, + src/powerpc/ffi_darwin.c, src/powerpc/linux64.S, + src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S, + src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S, + src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S, + src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S: + include fficonfig.h + +2003-10-20 Rainer Orth + + * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external + _MIPS_SIM_NABI32, _MIPS_SIM_ABI32. + +2003-10-19 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again. + Used when FFI_DEBUG = 1. + +2003-10-14 Alan Modra + + * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size + and align. + +2003-10-06 Rainer Orth + + * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs, + FFI_MIPS_O32 for O32 ABI. + +2003-10-01 Andreas Tobler + + * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for + SPARC64. Cleanup whitespaces. + +2003-09-19 Andreas Tobler + + * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm, + strongarm, xscale. Cleanup whitespaces. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces. + +2003-09-18 David Edelsohn + + * src/powerpc/aix.S: Cleanup whitespaces. + * src/powerpc/aix_closure.S: Likewise. + +2003-09-18 Andreas Tobler + + * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting. + * src/powerpc/darwin_closure.S: Likewise. + * src/powerpc/ffi_darwin.c: Likewise. + +2003-09-18 Andreas Tobler + David Edelsohn + + * src/types.c (double): Add AIX and Darwin to the right TYPEDEF. + * src/powerpc/aix_closure.S: Remove the pointer to the outgoing + parameter stack. + * src/powerpc/darwin_closure.S: Likewise. + * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures + according to the Darwin/AIX ABI. + (ffi_prep_cif_machdep): Likewise. + (ffi_closure_helper_DARWIN): Likewise. + Remove the outgoing parameter stack logic. Simplify the evaluation + of the different CASE types. + (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch + statement in the trampoline code. + +2003-09-18 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_args): Take account into the alignement + for the register size. + (ffi_closure_helper_SYSV): Handle the structure return value + address correctly. + (ffi_closure_helper_SYSV): Return the appropriate type when + the registers are used for the structure return value. + * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for + the 64-bit return value. Update copyright years. + +2003-09-17 Rainer Orth + + * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in + srcdir for ffi_mips.h. + +2003-09-12 Alan Modra + + * src/prep_cif.c (initialize_aggregate): Include tail padding in + structure size. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct + placement of float result. + * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct + cast of "resp" for big-endian 64 bit machines. + +2003-09-11 Alan Modra + + * src/types.c (double, longdouble): Merge identical SH and ARM + typedefs, and add POWERPC64. + * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for + struct split over gpr and rest. + (ffi_prep_cif_machdep): Correct intarg_count for structures. + * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets. + +2003-09-09 Andreas Tobler + + * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct + passing correctly. + +2003-09-09 Alan Modra + + * configure: Regenerate. + +2003-09-04 Andreas Tobler + + * Makefile.am: Remove build rules for ffitest. + * Makefile.in: Rebuilt. + +2003-09-04 Andreas Tobler + + * src/java_raw_api.c: Include to fix compiler warning + about implicit declaration of abort(). + +2003-09-04 Andreas Tobler + + * Makefile.am: Add dejagnu test framework. Fixes PR other/11411. + * Makefile.in: Rebuilt. + * configure.in: Add dejagnu test framework. + * configure: Rebuilt. + + * testsuite/Makefile.am: New file. + * testsuite/Makefile.in: Built + * testsuite/lib/libffi-dg.exp: New file. + * testsuite/config/default.exp: Likewise. + * testsuite/libffi.call/call.exp: Likewise. + * testsuite/libffi.call/ffitest.h: Likewise. + * testsuite/libffi.call/closure_fn0.c: Likewise. + * testsuite/libffi.call/closure_fn1.c: Likewise. + * testsuite/libffi.call/closure_fn2.c: Likewise. + * testsuite/libffi.call/closure_fn3.c: Likewise. + * testsuite/libffi.call/cls_1_1byte.c: Likewise. + * testsuite/libffi.call/cls_3_1byte.c: Likewise. + * testsuite/libffi.call/cls_4_1byte.c: Likewise. + * testsuite/libffi.call/cls_2byte.c: Likewise. + * testsuite/libffi.call/cls_3byte1.c: Likewise. + * testsuite/libffi.call/cls_3byte2.c: Likewise. + * testsuite/libffi.call/cls_4byte.c: Likewise. + * testsuite/libffi.call/cls_5byte.c: Likewise. + * testsuite/libffi.call/cls_6byte.c: Likewise. + * testsuite/libffi.call/cls_7byte.c: Likewise. + * testsuite/libffi.call/cls_8byte.c: Likewise. + * testsuite/libffi.call/cls_12byte.c: Likewise. + * testsuite/libffi.call/cls_16byte.c: Likewise. + * testsuite/libffi.call/cls_20byte.c: Likewise. + * testsuite/libffi.call/cls_24byte.c: Likewise. + * testsuite/libffi.call/cls_double.c: Likewise. + * testsuite/libffi.call/cls_float.c: Likewise. + * testsuite/libffi.call/cls_uchar.c: Likewise. + * testsuite/libffi.call/cls_uint.c: Likewise. + * testsuite/libffi.call/cls_ulonglong.c: Likewise. + * testsuite/libffi.call/cls_ushort.c: Likewise. + * testsuite/libffi.call/float.c: Likewise. + * testsuite/libffi.call/float1.c: Likewise. + * testsuite/libffi.call/float2.c: Likewise. + * testsuite/libffi.call/many.c: Likewise. + * testsuite/libffi.call/many_win32.c: Likewise. + * testsuite/libffi.call/nested_struct.c: Likewise. + * testsuite/libffi.call/nested_struct1.c: Likewise. + * testsuite/libffi.call/pyobjc-tc.c: Likewise. + * testsuite/libffi.call/problem1.c: Likewise. + * testsuite/libffi.call/promotion.c: Likewise. + * testsuite/libffi.call/return_ll.c: Likewise. + * testsuite/libffi.call/return_sc.c: Likewise. + * testsuite/libffi.call/return_uc.c: Likewise. + * testsuite/libffi.call/strlen.c: Likewise. + * testsuite/libffi.call/strlen_win32.c: Likewise. + * testsuite/libffi.call/struct1.c: Likewise. + * testsuite/libffi.call/struct2.c: Likewise. + * testsuite/libffi.call/struct3.c: Likewise. + * testsuite/libffi.call/struct4.c: Likewise. + * testsuite/libffi.call/struct5.c: Likewise. + * testsuite/libffi.call/struct6.c: Likewise. + * testsuite/libffi.call/struct7.c: Likewise. + * testsuite/libffi.call/struct8.c: Likewise. + * testsuite/libffi.call/struct9.c: Likewise. + * testsuite/libffi.special/special.exp: New file. + * testsuite/libffi.special/ffitestcxx.h: Likewise. + * testsuite/libffi.special/unwindtest.cc: Likewise. + + +2003-08-13 Kaz Kojima + + * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update + copyright years. + +2003-08-02 Alan Modra + + * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc + structure passing. + (ffi_closure_helper_LINUX64): Likewise. + * src/powerpc/linux64.S: Remove code writing to parm save area. + * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return + address in lr from ffi_closure_helper_LINUX64 call to calculate + table address. Optimize function tail. + +2003-07-28 Andreas Tobler + + * src/sparc/ffi.c: Handle all floating point registers. + * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410. + +2003-07-11 Gerald Pfeifer + + * README: Note that libffi is not part of GCC. Update the project + URL and status. + +2003-06-19 Franz Sirl + + * src/powerpc/ppc_closure.S: Include ffi.h. + +2003-06-13 Rainer Orth + + * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives. + Use C style comments. + +2003-06-13 Kaz Kojima + + * Makefile.am: Add SHmedia support. Fix a typo of SH support. + * Makefile.in: Regenerate. + * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target. + * configure: Regenerate. + * include/ffi.h.in: Add SHmedia support. + * src/sh64/ffi.c: New file. + * src/sh64/sysv.S: New file. + +2003-05-16 Jakub Jelinek + + * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section + should be read-only. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + * include/ffi.h.in (EH_FRAME_FLAGS): Define. + * src/alpha/osf.S: Use EH_FRAME_FLAGS. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. Include ffi.h. + * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding + if -fpic/-fPIC/-mrelocatable. + * src/powerpc/powerpc_closure.S: Likewise. + * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include + #write in .eh_frame flags. + * src/sparc/v9.S: Likewise. + * src/x86/unix64.S: Use EH_FRAME_FLAGS. + * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC. + * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h. + +2003-05-07 Jeff Sturm + + Fixes PR bootstrap/10656 + * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler + support for .register pseudo-op. + * src/sparc/v8.S: Use it. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + +2003-04-18 Jakub Jelinek + + * include/ffi.h.in (POWERPC64): Define if 64-bit. + (enum ffi_abi): Add FFI_LINUX64 on POWERPC. + Make it the default on POWERPC64. + (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64. + * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*. + * configure: Rebuilt. + * src/powerpc/ffi.c (hidden): Define. + (ffi_prep_args_SYSV): Renamed from + ffi_prep_args. Cast pointers to unsigned long to shut up warnings. + (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64, + ASM_NEEDS_REGISTERS64): New. + (ffi_prep_args64): New function. + (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI. + (ffi_call): Likewise. + (ffi_prep_closure): Likewise. + (flush_icache): Surround by #ifndef POWERPC64. + (ffi_dblfl): New union type. + (ffi_closure_helper_SYSV): Use it to avoid aliasing problems. + (ffi_closure_helper_LINUX64): New function. + * src/powerpc/ppc_closure.S: Surround whole file by #ifndef + __powerpc64__. + * src/powerpc/sysv.S: Likewise. + (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV. + * src/powerpc/linux64.S: New file. + * src/powerpc/linux64_closure.S: New file. + * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and + src/powerpc/linux64_closure.S. + (TARGET_SRC_POWERPC): Likewise. + + * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2, + closure_test_fn3): Fix result printing on big-endian 64-bit + machines. + (main): Print tst2_arg instead of uninitialized tst2_result. + + * src/ffitest.c (main): Hide what closure pointer really points to + from the compiler. + +2003-04-16 Richard Earnshaw + + * configure.in (arm-*-netbsdelf*): Add configuration. + (configure): Regenerated. + +2003-04-04 Loren J. Rittle + + * include/Makefile.in: Regenerate. + +2003-03-21 Zdenek Dvorak + + * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32 + bit mode. + * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): + Receive closure pointer through parameter, read args using + __builtin_dwarf_cfa. + (FFI_INIT_TRAMPOLINE): Send closure reference through eax. + +2003-03-12 Andreas Schwab + + * configure.in: Avoid trailing /. in toolexeclibdir. + * configure: Rebuilt. + +2003-03-03 Andreas Tobler + + * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries. + +2003-02-06 Andreas Tobler + + * libffi/src/powerpc/darwin_closure.S: + Fix alignement bug, allocate 8 bytes for the result. + * libffi/src/powerpc/aix_closure.S: + Likewise. + * libffi/src/powerpc/ffi_darwin.c: + Update stackframe description for aix/darwin_closure.S. + +2003-02-06 Jakub Jelinek + + * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility + attribute. + +2003-01-31 Christian Cornelssen , + Andreas Schwab + + * configure.in: Adjust command to source config-ml.in to account + for changes to the libffi_basedir definition. + (libffi_basedir): Remove ${srcdir} from value and include trailing + slash if nonempty. + + * configure: Regenerate. + +2003-01-29 Franz Sirl + + * src/powerpc/ppc_closure.S: Recode to fit shared libs. + +2003-01-28 Andrew Haley + + * include/ffi.h.in: Enable FFI_CLOSURES for x86_64. + * src/x86/ffi64.c (ffi_prep_closure): New. + (ffi_closure_UNIX64_inner): New. + * src/x86/unix64.S (ffi_closure_UNIX64): New. + +2003-01-27 Alexandre Oliva + + * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. + Remove USE_LIBDIR conditional. + * Makefile.am (toolexecdir, toolexeclibdir): Don't override. + * Makefile.in, configure: Rebuilt. + +2003-01027 David Edelsohn + + * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo. + * Makefile.in: Regenerate. + +2003-01-22 Andrew Haley + + * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to + unwind info. + +2003-01-21 Andreas Tobler + + * src/powerpc/darwin.S: Add unwind info. + * src/powerpc/darwin_closure.S: Likewise. + +2003-01-14 Andrew Haley + + * src/x86/ffi64.c (ffi_prep_args): Check for void retval. + (ffi_prep_cif_machdep): Likewise. + * src/x86/unix64.S: Add unwind info. + +2003-01-14 Andreas Jaeger + + * src/ffitest.c (main): Only use ffi_closures if those are + supported. + +2003-01-13 Andreas Tobler + + * libffi/src/ffitest.c + add closure testcases + +2003-01-13 Kevin B. Hendricks + + * libffi/src/powerpc/ffi.c + fix alignment bug for float (4 byte aligned iso 8 byte) + +2003-01-09 Geoffrey Keating + + * src/powerpc/ffi_darwin.c: Remove RCS version string. + * src/powerpc/darwin.S: Remove RCS version string. + +2003-01-03 Jeff Sturm + + * include/ffi.h.in: Add closure defines for SPARC, SPARC64. + * src/ffitest.c (main): Use static storage for closure. + * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New. + * src/sparc/v8.S (ffi_closure_v8): New. + * src/sparc/v9.S (ffi_closure_v9): New. + +2002-11-10 Ranjit Mathew + + * include/ffi.h.in: Added FFI_STDCALL ffi_type + enumeration for X86_WIN32. + * src/x86/win32.S: Added ffi_call_STDCALL function + definition. + * src/x86/ffi.c (ffi_call/ffi_raw_call): Added + switch cases for recognising FFI_STDCALL and + calling ffi_call_STDCALL if target is X86_WIN32. + * src/ffitest.c (my_stdcall_strlen/stdcall_many): + stdcall versions of the "my_strlen" and "many" + test functions (for X86_WIN32). + Added test cases to test stdcall invocation using + these functions. + +2002-12-02 Kaz Kojima + + * src/sh/sysv.S: Add DWARF2 unwind info. + +2002-11-27 Ulrich Weigand + + * src/s390/sysv.S (.eh_frame section): Make section read-only. + +2002-11-26 Jim Wilson + + * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64. + +2002-11-23 H.J. Lu + + * acinclude.m4: Add dummy AM_PROG_LIBTOOL. + Include ../config/accross.m4. + * aclocal.m4; Rebuild. + * configure: Likewise. + +2002-11-15 Ulrich Weigand + + * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding. + +2002-11-11 DJ Delorie + + * configure.in: Look for common files in the right place. + +2002-10-08 Ulrich Weigand + + * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret + raw data as _Jv_word values, not ffi_raw. + (ffi_java_ptrarray_to_raw): Likewise. + (ffi_java_rvalue_to_raw): New function. + (ffi_java_raw_call): Call it. + (ffi_java_raw_to_rvalue): New function. + (ffi_java_translate_args): Call it. + * src/ffitest.c (closure_test_fn): Interpret return value + as ffi_arg, not int. + * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing + FFI_TYPE_POINTER case. + (ffi_closure_helper_SYSV): Likewise. Also, assume return + values extended to word size. + +2002-10-02 Andreas Jaeger + + * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output. + +2002-10-01 Bo Thorsen + + * include/ffi.h.in: Fix i386 win32 compilation. + +2002-09-30 Ulrich Weigand + + * configure.in: Add s390x-*-linux-* target. + * configure: Regenerate. + * include/ffi.h.in: Define S390X for s390x targets. + (FFI_CLOSURES): Define for s390/s390x. + (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_NATIVE_RAW_API): Likewise. + * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390. + * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x. + * src/s390/ffi.c: Major rework of existing code. Add support for + s390x targets. Add closure support. + * src/s390/sysv.S: Likewise. + +2002-09-29 Richard Earnshaw + + * src/arm/sysv.S: Fix typo. + +2002-09-28 Richard Earnshaw + + * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor + has defined __USER_LABEL_PREFIX__, then use it in CNAME. + (ffi_call_SYSV): Handle soft-float. + +2002-09-27 Bo Thorsen + + * include/ffi.h.in: Fix multilib x86-64 support. + +2002-09-22 Kaveh R. Ghazi + + * Makefile.am (all-multi): Fix multilib parallel build. + +2002-07-19 Kaz Kojima + + * configure.in (sh[34]*-*-linux*): Add brackets. + * configure: Regenerate. + +2002-07-18 Kaz Kojima + + * Makefile.am: Add SH support. + * Makefile.in: Regenerate. + * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target. + * configure: Regenerate. + * include/ffi.h.in: Add SH support. + * src/sh/ffi.c: New file. + * src/sh/sysv.S: New file. + * src/types.c: Add SH support. + +2002-07-16 Bo Thorsen + + * src/x86/ffi64.c: New file that adds x86-64 support. + * src/x86/unix64.S: New file that handles argument setup for + x86-64. + * src/x86/sysv.S: Don't use this on x86-64. + * src/x86/ffi.c: Don't use this on x86-64. + Remove unused vars. + * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation + for x86-64. + * src/ffitest.c (struct6): New test that tests a special case in + the x86-64 ABI. + (struct7): Likewise. + (struct8): Likewise. + (struct9): Likewise. + (closure_test_fn): Silence warning about this when it's not used. + (main): Add the new tests. + (main): Fix a couple of wrong casts and silence some compiler warnings. + * include/ffi.h.in: Add x86-64 ABI definition. + * fficonfig.h.in: Regenerate. + * Makefile.am: Add x86-64 support. + * configure.in: Likewise. + * Makefile.in: Regenerate. + * configure: Likewise. + +2002-06-24 Bo Thorsen + + * src/types.c: Merge settings for similar architectures. + Add x86-64 sizes and alignments. + +2002-06-23 Bo Thorsen + + * src/arm/ffi.c (ffi_prep_args): Remove unused vars. + * src/sparc/ffi.c (ffi_prep_args_v8): Likewise. + * src/mips/ffi.c (ffi_prep_args): Likewise. + * src/m68k/ffi.c (ffi_prep_args): Likewise. + +2002-07-18 H.J. Lu (hjl@gnu.org) + + * Makefile.am (TARGET_SRC_MIPS_LINUX): New. + (libffi_la_SOURCES): Support MIPS_LINUX. + (libffi_convenience_la_SOURCES): Likewise. + * Makefile.in: Regenerated. + + * configure.in (mips64*-*): Skip. + (mips*-*-linux*): New. + * configure: Regenerated. + + * src/mips/ffi.c: Include . + +2002-06-06 Ulrich Weigand + + * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info. + +2002-05-27 Roger Sayle + + * src/x86/ffi.c (ffi_prep_args): Remove reference to avn. + +2002-05-27 Bo Thorsen + + * src/x86/ffi.c (ffi_prep_args): Remove unused variable and + fix formatting. + +2002-05-13 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at + beginning of function (for older apple cc). + +2002-05-08 Alexandre Oliva + + * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at + script entry, and set LD to it when configuring multilibs. + * configure: Rebuilt. + +2002-05-05 Jason Thorpe + + * configure.in (sparc64-*-netbsd*): Add target. + (sparc-*-netbsdelf*): Likewise. + * configure: Regenerate. + +2002-04-28 David S. Miller + + * configure.in, configure: Fix SPARC test in previous change. + +2002-04-29 Gerhard Tonn + + * Makefile.am: Add Linux for S/390 support. + * Makefile.in: Regenerate. + * configure.in: Add Linux for S/390 support. + * configure: Regenerate. + * include/ffi.h.in: Add Linux for S/390 support. + * src/s390/ffi.c: New file from libffi CVS tree. + * src/s390/sysv.S: New file from libffi CVS tree. + +2002-04-28 Jakub Jelinek + + * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working + %r_disp32(). + * src/sparc/v8.S: Use it. + * src/sparc/v9.S: Likewise. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + +2002-04-08 Hans Boehm + + * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE + correctly. + * src/ia64/unix.S: Add unwind information. Fix comments. + Save sp in a way that's compatible with unwind info. + (ffi_call_unix): Correctly restore sp in all cases. + * src/ia64/ffi.c: Add, fix comments. + +2002-04-08 Jakub Jelinek + + * src/sparc/v8.S: Make .eh_frame dependent on target word size. + +2002-04-06 Jason Thorpe + + * configure.in (alpha*-*-netbsd*): Add target. + * configure: Regenerate. + +2002-04-04 Jeff Sturm + + * src/sparc/v8.S: Add unwind info. + * src/sparc/v9.S: Likewise. + +2002-03-30 Krister Walfridsson + + * configure.in: Enable i*86-*-netbsdelf*. + * configure: Rebuilt. + +2002-03-29 David Billinghurst + + PR other/2620 + * src/mips/n32.s: Delete + * src/mips/o32.s: Delete + +2002-03-21 Loren J. Rittle + + * configure.in: Enable alpha*-*-freebsd*. + * configure: Rebuilt. + +2002-03-17 Bryce McKinlay + + * Makefile.am: libfficonvenience -> libffi_convenience. + * Makefile.in: Rebuilt. + + * Makefile.am: Define ffitest_OBJECTS. + * Makefile.in: Rebuilt. + +2002-03-07 Andreas Tobler + David Edelsohn + + * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files. + (TARGET_SRC_POWERPC_AIX): Add aix_closure.S. + (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S. + * Makefile.in: Regenerate. + * include/ffi.h.in: Add AIX and Darwin closure definitions. + * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function. + (flush_icache, flush_range): New functions. + (ffi_closure_helper_DARWIN): New function. + * src/powerpc/aix_closure.S: New file. + * src/powerpc/darwin_closure.S: New file. + +2002-02-24 Jeff Sturm + + * include/ffi.h.in: Add typedef for ffi_arg. + * src/ffitest.c (main): Declare rint with ffi_arg. + +2002-02-21 Andreas Tobler + + * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate + number of GPRs for floating-point arguments. + +2002-01-31 Anthony Green + + * configure: Rebuilt. + * configure.in: Replace CHECK_SIZEOF and endian tests with + cross-compiler friendly macros. + * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New + macros. + +2002-01-18 David Edelsohn + + * src/powerpc/darwin.S (_ffi_call_AIX): New. + * src/powerpc/aix.S (ffi_call_DARWIN): New. + +2002-01-17 David Edelsohn + + * Makefile.am (EXTRA_DIST): Add Darwin and AIX files. + (TARGET_SRC_POWERPC_AIX): New. + (POWERPC_AIX): New stanza. + * Makefile.in: Regenerate. + * configure.in: Add AIX case. + * configure: Regenerate. + * include/ffi.h.in (ffi_abi): Add FFI_AIX. + * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame + size. Fix "long double" support. + (ffi_call): Add FFI_AIX case. + * src/powerpc/aix.S: New. + +2001-10-09 John Hornkvist + + Implement Darwin PowerPC ABI. + * configure.in: Handle powerpc-*-darwin*. + * Makefile.am: Set source files for POWERPC_DARWIN. + * configure: Rebuilt. + * Makefile.in: Rebuilt. + * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for + POWERPC_DARWIN. + * src/powerpc/darwin.S: New file. + * src/powerpc/ffi_darwin.c: New file. + +2001-10-07 Joseph S. Myers + + * src/x86/ffi.c: Fix spelling error of "separate" as "seperate". + +2001-07-16 Rainer Orth + + * src/x86/sysv.S: Avoid gas-only .balign directive. + Use C style comments. + +2001-07-16 Rainer Orth + + * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic. + Fixes PR bootstrap/3563. + +2001-06-26 Rainer Orth + + * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF. + +2001-06-25 Rainer Orth + + * configure.in: Recognize sparc*-sun-* host. + * configure: Regenerate. + +2001-06-06 Andrew Haley + + * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF. + +2001-06-03 Andrew Haley + + * src/alpha/osf.S: Add unwind info. + * src/powerpc/sysv.S: Add unwind info. + * src/powerpc/ppc_closure.S: Likewise. + +2000-05-31 Jeff Sturm + + * configure.in: Fix AC_ARG_ENABLE usage. + * configure: Rebuilt. + +2001-05-06 Bryce McKinlay + + * configure.in: Remove warning about beta code. + * configure: Rebuilt. + +2001-04-25 Hans Boehm + + * src/ia64/unix.S: Restore stack pointer when returning from + ffi_closure_UNIX. + * src/ia64/ffi.c: Fix typo in comment. + +2001-04-18 Jim Wilson + + * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2 + to eliminate RAW DV. + +2001-04-12 Bryce McKinlay + + * Makefile.am: Make a libtool convenience library. + * Makefile.in: Rebuilt. + +2001-03-29 Bryce McKinlay + + * configure.in: Use different syntax for subdirectory creation. + * configure: Rebuilt. + +2001-03-27 Jon Beniston + + * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW). + * configure: Rebuilt. + * Makefile.am: Added X86_WIN32 target support. + * Makefile.in: Rebuilt. + + * include/ffi.h.in: Added X86_WIN32 target support. + + * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets. + * src/types.c: Added X86_WIN32 target support. + + * src/x86/win32.S: New file. Based on sysv.S, but with EH + stuff removed and made to work with CygWin's gas. + +2001-03-26 Bryce McKinlay + + * configure.in: Make target subdirectory in build dir. + * Makefile.am: Override suffix based rules to specify correct output + subdirectory. + * Makefile.in: Rebuilt. + * configure: Rebuilt. + +2001-03-23 Kevin B Hendricks + + * src/powerpc/ppc_closure.S: New file. + * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug + involving long long and register pairs. + (ffi_prep_closure): New function. + (flush_icache): Likewise. + (ffi_closure_helper_SYSV): Likewise. + * include/ffi.h.in (FFI_CLOSURES): Define on PPC. + (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_NATIVE_RAW_API): Likewise. + * Makefile.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S. + (TARGET_SRC_POWERPC): Likewise. + +2001-03-19 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (ffitest_LDFLAGS): New macro. + +2001-03-02 Nick Clifton + + * include/ffi.h.in: Remove RCS ident string. + * include/ffi_mips.h: Remove RCS ident string. + * src/debug.c: Remove RCS ident string. + * src/ffitest.c: Remove RCS ident string. + * src/prep_cif.c: Remove RCS ident string. + * src/types.c: Remove RCS ident string. + * src/alpha/ffi.c: Remove RCS ident string. + * src/alpha/osf.S: Remove RCS ident string. + * src/arm/ffi.c: Remove RCS ident string. + * src/arm/sysv.S: Remove RCS ident string. + * src/mips/ffi.c: Remove RCS ident string. + * src/mips/n32.S: Remove RCS ident string. + * src/mips/o32.S: Remove RCS ident string. + * src/sparc/ffi.c: Remove RCS ident string. + * src/sparc/v8.S: Remove RCS ident string. + * src/sparc/v9.S: Remove RCS ident string. + * src/x86/ffi.c: Remove RCS ident string. + * src/x86/sysv.S: Remove RCS ident string. + +2001-02-08 Joseph S. Myers + + * include/ffi.h.in: Change sourceware.cygnus.com references to + gcc.gnu.org. + +2000-12-09 Richard Henderson + + * src/alpha/ffi.c (ffi_call): Simplify struct return test. + (ffi_closure_osf_inner): Index rather than increment avalue + and arg_types. Give ffi_closure_osf the raw return value type. + * src/alpha/osf.S (ffi_closure_osf): Handle return value type + promotion. + +2000-12-07 Richard Henderson + + * src/raw_api.c (ffi_translate_args): Fix typo. + (ffi_prep_closure): Likewise. + + * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and + FFI_TRAMPOLINE_SIZE. + * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal + cif->bytes for new ffi_call_osf implementation. + (ffi_prep_args): Absorb into ... + (ffi_call): ... here. Do all stack allocation here and + avoid a callback function. + (ffi_prep_closure, ffi_closure_osf_inner): New. + * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback. + (ffi_closure_osf): New. + +2000-09-10 Alexandre Oliva + + * config.guess, config.sub, install-sh: Removed. + * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise. + * Makefile.in: Rebuilt. + + * acinclude.m4: Include libtool macros from the top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-22 Alexandre Oliva + + * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set. + * configure: Rebuilt. + +2000-05-11 Scott Bambrough + + * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to + memory correctly. Use conditional instructions, not branches where + possible. + +2000-05-04 Tom Tromey + + * configure: Rebuilt. + * configure.in: Match `arm*-*-linux-*'. + From Chris Dornan . + +2000-04-28 Jakub Jelinek + + * Makefile.am (SUBDIRS): Define. + (AM_MAKEFLAGS): Likewise. + (Multilib support.): Add section. + * Makefile.in: Rebuilt. + * ltconfig (extra_compiler_flags, extra_compiler_flags_value): + New variables. Set for gcc using -print-multi-lib. Export them + to libtool. + (sparc64-*-linux-gnu*): Use libsuff 64 for search paths. + * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options + for -shared links. + (extra_compiler_flags_value, extra_compiler_flags): Check these + for extra compiler options which need to be passed down in + compiler_flags. + +2000-04-16 Anthony Green + + * configure: Rebuilt. + * configure.in: Change i*86-pc-linux* to i*86-*-linux*. + +2000-04-14 Jakub Jelinek + + * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds. + Set SPARC FFI_DEFAULT_ABI based on SPARC64 define. + * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args. + Replace all void * sizeofs with sizeof(int). + Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is + different than DOUBLE. + Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere). + (ffi_prep_args_v9): New function. + (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8. + (ffi_V9_return_struct): New function. + (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from + 32bit code (not yet cross-arch calls). + * src/sparc/v8.S: Add struct return delay nop. + Handle long long. + * src/sparc/v9.S: New file. + * src/prep_cif.c (ffi_prep_cif): Return structure pointer + is used on sparc64 only for structures larger than 32 bytes. + Pass by reference for structures is done for structure arguments + larger than 16 bytes. + * src/ffitest.c (main): Use 64bit rint on sparc64. + Run long long tests on sparc. + * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and + sparc64. + (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits + on sparc64. + * configure.in (sparc-*-linux*): New supported target. + (sparc64-*-linux*): Likewise. + * configure: Rebuilt. + * Makefile.am: Add v9.S to SPARC files. + * Makefile.in: Likewise. + (LINK): Surround $(CCLD) into double quotes, so that multilib + compiles work correctly. + +2000-04-04 Alexandre Petit-Bianco + + * configure: Rebuilt. + * configure.in: (i*86-*-solaris*): New libffi target. Patch + proposed by Bryce McKinlay. + +2000-03-20 Tom Tromey + + * Makefile.in: Hand edit for java_raw_api.lo. + +2000-03-08 Bryce McKinlay + + * config.guess, config.sub: Update from the gcc tree. + Fix for PR libgcj/168. + +2000-03-03 Tom Tromey + + * Makefile.in: Fixed ia64 by hand. + + * configure: Rebuilt. + * configure.in (--enable-multilib): New option. + (libffi_basedir): New subst. + (AC_OUTPUT): Added multilib code. + +2000-03-02 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as + directory name. + +2000-02-25 Hans Boehm + + * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New + files. + * src/raw_api.c (ffi_translate_args): Fixed typo in argument + list. + (ffi_prep_raw_closure): Use ffi_translate_args, not + ffi_closure_translate. + * src/java_raw_api.c: New file. + * src/ffitest.c (closure_test_fn): New function. + (main): Define `rint' as long long on IA64. Added new test when + FFI_CLOSURES is defined. + * include/ffi.h.in (ALIGN): Use size_t, not unsigned. + (ffi_abi): Recognize IA64. + (ffi_raw): Added `flt' field. + Added "Java raw API" code. + * configure.in: Recognize ia64. + * Makefile.am (TARGET_SRC_IA64): New macro. + (libffi_la_common_SOURCES): Added java_raw_api.c. + (libffi_la_SOURCES): Define in IA64 case. + +2000-01-04 Tom Tromey + + * Makefile.in: Rebuilt with newer automake. + +1999-12-31 Tom Tromey + + * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src. + +1999-09-01 Tom Tromey + + * include/ffi.h.in: Removed PACKAGE and VERSION defines and + undefs. + * fficonfig.h.in: Rebuilt. + * configure: Rebuilt. + * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE. + Use AM_PROG_LIBTOOL (automake 1.4 compatibility). + * acconfig.h: Don't #undef PACKAGE or VERSION. + +1999-08-09 Anthony Green + + * include/ffi.h.in: Try to work around messy header problem + with PACKAGE and VERSION. + + * configure: Rebuilt. + * configure.in: Change version to 2.00-beta. + + * fficonfig.h.in: Rebuilt. + * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define. + + * src/x86/ffi.c (ffi_raw_call): Rename. + +1999-08-02 Kresten Krab Thorup + + * src/x86/ffi.c (ffi_closure_SYSV): New function. + (ffi_prep_incoming_args_SYSV): Ditto. + (ffi_prep_closure): Ditto. + (ffi_closure_raw_SYSV): Ditto. + (ffi_prep_raw_closure): More ditto. + (ffi_call_raw): Final ditto. + + * include/ffi.h.in: Add definitions for closure and raw API. + + * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for + FFI_TYPE_UINT64. + + * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c + + * src/raw_api.c: New file. + + * include/ffi.h.in (ffi_raw): New type. + (UINT_ARG, SINT_ARG): New defines. + (ffi_closure, ffi_raw_closure): New types. + (ffi_prep_closure, ffi_prep_raw_closure): New declarations. + + * configure.in: Add check for endianness and sizeof void*. + + * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument, + instead of directly. + + * configure: Rebuilt. + +Thu Jul 8 14:28:42 1999 Anthony Green + + * configure.in: Add x86 and powerpc BeOS configurations. + From Makoto Kato . + +1999-05-09 Anthony Green + + * configure.in: Add warning about this being beta code. + Remove src/Makefile.am from the picture. + * configure: Rebuilt. + + * Makefile.am: Move logic from src/Makefile.am. Add changes + to support libffi as a target library. + * Makefile.in: Rebuilt. + + * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh: + Upgraded to new autoconf, automake, libtool. + + * README: Tweaks. + + * LICENSE: Update copyright date. + + * src/Makefile.am, src/Makefile.in: Removed. + +1998-11-29 Anthony Green + + * include/ChangeLog: Removed. + * src/ChangeLog: Removed. + * src/mips/ChangeLog: Removed. + * src/sparc/ChangeLog: Remboved. + * src/x86/ChangeLog: Removed. + + * ChangeLog.v1: Created. + +============================================================================= +From the old ChangeLog.libffi file.... + +2011-02-08 Andreas Tobler + + * testsuite/lib/libffi.exp: Tweak for stand-alone mode. + +2009-12-25 Samuli Suominen + + * configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64. + * configure: Rebuilt. + * fficonfig.h.in: Rebuilt. + +2009-06-16 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs. + * testsuite/libffi.call/float2.c: Fix dg-excess-errors. + * testsuite/libffi.call/ffitest.h, + testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define. + +2009-06-12 Andrew Haley + + * testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_medium2.c: Fix printf format + specifiers. + testsuite/libffi.special/unwindtest.cc: include stdint.h. + +2009-06-11 Timothy Wall + + * Makefile.am, + configure.ac, + include/ffi.h.in, + include/ffi_common.h, + src/closures.c, + src/dlmalloc.c, + src/x86/ffi.c, + src/x86/ffitarget.h, + src/x86/win64.S (new), + README: Added win64 support (mingw or MSVC) + * Makefile.in, + include/Makefile.in, + man/Makefile.in, + testsuite/Makefile.in, + configure, + aclocal.m4: Regenerated + * ltcf-c.sh: properly escape cygwin/w32 path + * man/ffi_call.3: Clarify size requirements for return value. + * src/x86/ffi64.c: Fix filename in comment. + * src/x86/win32.S: Remove unused extern. + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/err_bad_abi.c, + testsuite/libffi.call/err_bad_typedef.c, + testsuite/libffi.call/float2.c, + testsuite/libffi.call/huge_struct.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/return_ldl.c, + testsuite/libffi.call/return_ll1.c, + testsuite/libffi.call/stret_large.c, + testsuite/libffi.call/stret_large2.c, + testsuite/libffi.call/stret_medium.c, + testsuite/libffi.call/stret_medium2.c, + testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead + of checking for MMAP. Use intptr_t instead of long casts. + +2009-06-04 Andrew Haley + + * src/powerpc/ffitarget.h: Fix misapplied merge from gcc. + +2009-06-04 Andrew Haley + + * src/mips/o32.S, + src/mips/n32.S: Fix licence formatting. + +2009-06-04 Andrew Haley + + * src/x86/darwin.S: Fix licence formatting. + src/x86/win32.S: Likewise. + src/sh64/sysv.S: Likewise. + src/sh/sysv.S: Likewise. + +2009-06-04 Andrew Haley + + * src/sh64/ffi.c: Remove lint directives. Was missing from merge + of Andreas Tobler's patch from 2006-04-22. + +2009-06-04 Andrew Haley + + * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of + 2007-03-07. + +2008-12-26 Timothy Wall + + * testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_align_longdouble_split.c, + testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected + failures on x86_64 cygwin/mingw. + +2008-12-22 Timothy Wall + + * testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/closure_loc_fn0.c, + testsuite/libffi.call/closure_stdcall.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c: use portable cast from + pointer to integer (intptr_t). + * testsuite/libffi.call/cls_longdouble.c: disable for win64. + +2008-12-19 Anthony Green + + * configure.ac: Bump version to 3.0.8. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-11-11 Anthony Green + + * configure.ac: Bump version to 3.0.7. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-08-25 Andreas Tobler + + * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and + FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum. + Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT. + Adjust copyright notice. + * src/powerpc/ffi.c: Add two new flags to indicate if we have one + register or two register to use for FFI_SYSV structs. + (ffi_prep_cif_machdep): Pass the right register flag introduced above. + (ffi_closure_helper_SYSV): Fix the return type for + FFI_SYSV_TYPE_SMALL_STRUCT. Comment. + Adjust copyright notice. + +2008-07-24 Anthony Green + + * testsuite/libffi.call/cls_dbls_struct.c, + testsuite/libffi.call/cls_double_va.c, + testsuite/libffi.call/cls_longdouble.c, + testsuite/libffi.call/cls_longdouble_va.c, + testsuite/libffi.call/cls_pointer.c, + testsuite/libffi.call/cls_pointer_stack.c, + testsuite/libffi.call/err_bad_abi.c: Clean up failures from + compiler warnings. + +2008-07-17 Anthony Green + + * configure.ac: Bump version to 3.0.6. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. Add documentation. + * README: Update for new release. + +2008-07-16 Kaz Kojima + + * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned + int. + +2008-07-16 Kaz Kojima + + * src/sh/sysv.S: Add .note.GNU-stack on Linux. + * src/sh64/sysv.S: Likewise. + +2008-04-03 Anthony Green + + * libffi.pc.in (Libs): Add -L${libdir}. + * configure.ac: Bump version to 3.0.5. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-04-03 Anthony Green + Xerces Ranby + + * include/ffi.h.in: Wrap definition of target architecture to + protect from double definitions. + +2008-03-22 Moriyoshi Koizumi + + * src/x86/ffi.c (ffi_prep_closure_loc): Fix for bug revealed in + closure_loc_fn0.c. + * testsuite/libffi.call/closure_loc_fn0.c (closure_loc_test_fn0): + New test. + +2008-03-04 Anthony Green + Blake Chaffin + hos@tamanegi.org + + * testsuite/libffi.call/cls_align_longdouble_split2.c + testsuite/libffi.call/cls_align_longdouble_split.c + testsuite/libffi.call/cls_dbls_struct.c + testsuite/libffi.call/cls_double_va.c + testsuite/libffi.call/cls_longdouble.c + testsuite/libffi.call/cls_longdouble_va.c + testsuite/libffi.call/cls_pointer.c + testsuite/libffi.call/cls_pointer_stack.c + testsuite/libffi.call/err_bad_abi.c + testsuite/libffi.call/err_bad_typedef.c + testsuite/libffi.call/huge_struct.c + testsuite/libffi.call/stret_large2.c + testsuite/libffi.call/stret_large.c + testsuite/libffi.call/stret_medium2.c + testsuite/libffi.call/stret_medium.c: New tests from Apple. + +2008-02-26 Jakub Jelinek + Anthony Green + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +2008-02-26 Anthony Green + Thomas Heller + + * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C + comment. + +2008-02-26 Anthony Green + Thomas Heller + + * include/ffi.h.in: Change void (*)() to void (*)(void). + +2008-02-26 Anthony Green + Thomas Heller + + * src/alpha/ffi.c: Change void (*)() to void (*)(void). + src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c, + src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c, + src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S, + src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c, + src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c, + src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S, + src/x86/ffi64.c: Ditto. + +2008-02-24 Anthony Green + + * configure.ac: Accept openbsd*, not just openbsd. + Bump version to 3.0.4. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-22 Anthony Green + + * README: Clean up list of tested platforms. + +2008-02-22 Anthony Green + + * configure.ac: Bump version to 3.0.3. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. Clean up test docs. + +2008-02-22 Bjoern Koenig + Andreas Tobler + + * configure.ac: Add amd64-*-freebsd* target. + * configure: Regenerate. + +2008-02-22 Thomas Heller + + * configure.ac: Add x86 OpenBSD support. + * configure: Rebuilt. + +2008-02-21 Thomas Heller + + * README: Change "make test" to "make check". + +2008-02-21 Anthony Green + + * configure.ac: Bump version to 3.0.2. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-21 Björn König + + * src/x86/freebsd.S: New file. + * configure.ac: Add x86 FreeBSD support. + * Makefile.am: Ditto. + +2008-02-15 Anthony Green + + * configure.ac: Bump version to 3.0.1. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * libtool-version: Increment revision. + * README: Update for new release. + +2008-02-15 David Daney + + * src/mips/ffi.c: Remove extra '>' from include directive. + (ffi_prep_closure_loc): Use clear_location instead of tramp. + +2008-02-15 Anthony Green + + * configure.ac: Bump version to 3.0.0. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-15 David Daney + + * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE): + Define (conditionally), and use it to include cachectl.h. + (ffi_prep_closure_loc): Fix cache flushing. + * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define. + +2008-02-15 Anthony Green + + * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3: + Update dates and remove all references to ffi_prep_closure. + * configure.ac: Bump version to 2.99.9. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-15 Anthony Green + + * man/ffi_prep_closure.3: Delete. + * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3. + (man_MANS): Ditto. + * man/Makefile.in: Rebuilt. + * configure.ac: Bump version to 2.99.8. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + +2008-02-14 Anthony Green + + * configure.ac: Bump version to 2.99.7. + * configure, doc/stamp-vti, doc/version.texi: Rebuilt. + * include/ffi.h.in LICENSE src/debug.c src/closures.c + src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h + src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c + src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S + src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c + src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c + src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S + src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h + src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c + src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S + src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h + src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h + src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S + src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h + src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S + src/arm/ffitarget.h src/prep_cif.c: Update license text. + +2008-02-14 Anthony Green + + * README: Update tested platforms. + * configure.ac: Bump version to 2.99.6. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * configure.ac: Bump version to 2.99.5. + * configure: Rebuilt. + * Makefile.am (EXTRA_DIST): Add darwin64.S + * Makefile.in: Rebuilt. + * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree. + * LICENSE: Update WARRANTY. + +2008-02-14 Anthony Green + + * libffi.pc.in (libdir): Fix libdir definition. + * configure.ac: Bump version to 2.99.4. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * README: Update. + * libffi.info: New file. + * doc/stamp-vti: New file. + * configure.ac: Bump version to 2.99.3. + * configure: Rebuilt. + +2008-02-14 Anthony Green + + * Makefile.am (SUBDIRS): Add man dir. + * Makefile.in: Rebuilt. + * configure.ac: Create Makefile. + * configure: Rebuilt. + * man/ffi_call.3 man/ffi_prep_cif.3 man/ffi_prep_closure.3 + man/Makefile.am man/Makefile.in: New files. + +2008-02-14 Tom Tromey + + * aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt. + * mdate-sh, texinfo.tex: New files. + * Makefile.am (info_TEXINFOS): New variable. + * doc/libffi.texi: New file. + * doc/version.texi: Likewise. + +2008-02-14 Anthony Green + + * Makefile.am (AM_CFLAGS): Don't compile with -D$(TARGET). + (lib_LTLIBRARIES): Define. + (toolexeclib_LIBRARIES): Undefine. + * Makefile.in: Rebuilt. + * configure.ac: Reset version to 2.99.1. + * configure.in: Rebuilt. + +2008-02-14 Anthony Green + + * libffi.pc.in: Use @PACKAGE_NAME@ and @PACKAGE_VERSION@. + * configure.ac: Reset version to 2.99.1. + * configure.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi. + * Makefile.in: Rebuilt. + * LICENSE: Update copyright notice. + +2008-02-14 Anthony Green + + * include/Makefile.am (nodist_includes_HEADERS): Define. Don't + distribute ffitarget.h or ffi.h from the build include dir. + * Makefile.in: Rebuilt. + +2008-02-14 Anthony Green + + * include/Makefile.am (includesdir): Install headers under libdir. + (pkgconfigdir): Define. Install libffi.pc. + * include/Makefile.in: Rebuilt. + * libffi.pc.in: Create. + * libtool-version: Increment CURRENT + * configure.ac: Add libffi.pc.in + * configure: Rebuilt. + +2008-02-03 Anthony Green + + * include/Makefile.am (includesdir): Fix header install with + DESTDIR. + * include/Makefile.in: Rebuilt. + +2008-02-03 Timothy Wall + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return + offset based on code pointer, not data pointer. + +2008-02-01 Anthony Green + + * include/Makefile.am: Fix header installs. + * Makefile.am: Ditto. + * include/Makefile.in: Rebuilt. + * Makefile.in: Ditto. + +2008-02-01 Anthony Green + + * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL, + FFI_INIT_TRAMPOLINE): Revert my broken changes to twall's last + patch. + +2008-01-31 Anthony Green + + * Makefile.am (EXTRA_DIST): Add missing files. + * testsuite/Makefile.am: Ditto. + * Makefile.in, testsuite/Makefile.in: Rebuilt. + +2008-01-31 Timothy Wall + + * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall + closures. + * src/x86/ffitarget.h: Increase size of trampoline for stdcall + closures. + * src/x86/win32.S: Add assembly for stdcall closure. + * src/x86/ffi.c: Initialize stdcall closure trampoline. + +2008-01-30 H.J. Lu + + PR libffi/34612 + * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when + returning struct. + + * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer" + tests. + +2008-01-30 Anthony Green + + * Makefile.am, include/Makefile.am: Move headers to + libffi_la_SOURCES for new automake. + * Makefile.in, include/Makefile.in: Rebuilt. + + * testsuite/lib/wrapper.exp: Copied from gcc tree to allow for + execution outside of gcc tree. + * testsuite/lib/target-libpath.exp: Ditto. + + * testsuite/lib/libffi-dg.exp: Many changes to allow for execution + outside of gcc tree. + + +============================================================================= +From the old ChangeLog.libgcj file.... + +2004-01-14 Kelley Cook + + * configure.in: Add in AC_PREREQ(2.13) + +2003-02-20 Alexandre Oliva + + * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to + config.status. + * configure: Rebuilt. + +2002-01-27 Alexandre Oliva + + * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. + Remove USE_LIBDIR conditional. + * Makefile.am (toolexecdir, toolexeclibdir): Don't override. + * Makefile.in, configure: Rebuilt. + +Mon Aug 9 18:33:38 1999 Rainer Orth + + * include/Makefile.in: Rebuilt. + * Makefile.in: Rebuilt + * Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native + builds. + Use USE_LIBDIR. + + * configure: Rebuilt. + * configure.in (USE_LIBDIR): Define for native builds. + Use lowercase in configure --help explanations. + +1999-08-08 Anthony Green + + * include/ffi.h.in (FFI_FN): Remove `...'. + +1999-08-08 Anthony Green + + * Makefile.in: Rebuilt. + * Makefile.am (AM_CFLAGS): Compile with -fexceptions. + + * src/x86/sysv.S: Add exception handling metadata. + + +============================================================================= + +The libffi version 1 ChangeLog archive. + +Version 1 of libffi had per-directory ChangeLogs. Current and future +versions have a single ChangeLog file in the root directory. The +version 1 ChangeLogs have all been concatenated into this file for +future reference only. + +--- libffi ---------------------------------------------------------------- + +Mon Oct 5 02:17:50 1998 Anthony Green + + * configure.in: Boosted rev. + * configure, Makefile.in, aclocal.m4: Rebuilt. + * README: Boosted rev and updated release notes. + +Mon Oct 5 01:03:03 1998 Anthony Green + + * configure.in: Boosted rev. + * configure, Makefile.in, aclocal.m4: Rebuilt. + * README: Boosted rev and updated release notes. + +1998-07-25 Andreas Schwab + + * m68k/ffi.c (ffi_prep_cif_machdep): Use bitmask for cif->flags. + Correctly handle small structures. + (ffi_prep_args): Also handle small structures. + (ffi_call): Pass size of return type to ffi_call_SYSV. + * m68k/sysv.S: Adjust for above changes. Correctly align small + structures in the return value. + + * types.c (uint64, sint64) [M68K]: Change alignment to 4. + +Fri Apr 17 17:26:58 1998 Anthony Green + + * configure.in: Boosted rev. + * configure,Makefile.in,aclocal.m4: Rebuilt. + * README: Boosted rev and added release notes. + +Sun Feb 22 00:50:41 1998 Geoff Keating + + * configure.in: Add PowerPC config bits. + +1998-02-14 Andreas Schwab + + * configure.in: Add m68k config bits. Change AC_CANONICAL_SYSTEM + to AC_CANONICAL_HOST, this is not a compiler. Use $host instead + of $target. Remove AC_CHECK_SIZEOF(char), we already know the + result. Fix argument of AC_ARG_ENABLE. + * configure, fficonfig.h.in: Rebuilt. + +Tue Feb 10 20:53:40 1998 Richard Henderson + + * configure.in: Add Alpha config bits. + +Tue May 13 13:39:20 1997 Anthony Green + + * README: Updated dates and reworded Irix comments. + + * configure.in: Removed AC_PROG_RANLIB. + + * Makefile.in, aclocal.m4, config.guess, config.sub, configure, + ltmain.sh, */Makefile.in: libtoolized again and rebuilt with + automake and autoconf. + +Sat May 10 18:44:50 1997 Tom Tromey + + * configure, aclocal.m4: Rebuilt. + * configure.in: Don't compute EXTRADIST; now handled in + src/Makefile.in. Removed macros implied by AM_INIT_AUTOMAKE. + Don't run AM_MAINTAINER_MODE. + +Thu May 8 14:34:05 1997 Anthony Green + + * missing, ltmain.sh, ltconfig.sh: Created. These are new files + required by automake and libtool. + + * README: Boosted rev to 1.14. Added notes. + + * acconfig.h: Moved PACKAGE and VERSION for new automake. + + * configure.in: Changes for libtool. + + * Makefile.am (check): make test now make check. Uses libtool now. + + * Makefile.in, configure.in, aclocal.h, fficonfig.h.in: Rebuilt. + +Thu May 1 16:27:07 1997 Anthony Green + + * missing: Added file required by new automake. + +Tue Nov 26 14:10:42 1996 Anthony Green + + * acconfig.h: Added USING_PURIFY flag. This is defined when + --enable-purify-safety was used at configure time. + + * configure.in (allsources): Added --enable-purify-safety switch. + (VERSION): Boosted rev to 1.13. + * configure: Rebuilt. + +Fri Nov 22 06:46:12 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.12. + Removed special CFLAGS hack for gcc. + * configure: Rebuilt. + + * README: Boosted rev to 1.12. Added notes. + + * Many files: Cygnus Support changed to Cygnus Solutions. + +Wed Oct 30 11:15:25 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.11. + * configure: Rebuilt. + + * README: Boosted rev to 1.11. Added notes about GNU make. + +Tue Oct 29 12:25:12 1996 Anthony Green + + * configure.in: Fixed -Wall trick. + (VERSION): Boosted rev. + * configure: Rebuilt + + * acconfig.h: Needed for --enable-debug configure switch. + + * README: Boosted rev to 1.09. Added more notes on building + libffi, and LCLint. + + * configure.in: Added --enable-debug switch. Boosted rev to + 1.09. + * configure: Rebuilt + +Tue Oct 15 13:11:28 1996 Anthony Green + + * configure.in (VERSION): Boosted rev to 1.08 + * configure: Rebuilt. + + * README: Added n32 bug fix notes. + + * Makefile.am: Added "make lint" production. + * Makefile.in: Rebuilt. + +Mon Oct 14 10:54:46 1996 Anthony Green + + * README: Added web page reference. + + * configure.in, README: Boosted rev to 1.05 + * configure: Rebuilt. + + * README: Fixed n32 sample code. + +Fri Oct 11 17:09:28 1996 Anthony Green + + * README: Added sparc notes. + + * configure.in, README: Boosted rev to 1.04. + * configure: Rebuilt. + +Thu Oct 10 10:31:03 1996 Anthony Green + + * configure.in, README: Boosted rev to 1.03. + * configure: Rebuilt. + + * README: Added struct notes. + + * Makefile.am (EXTRA_DIST): Added LICENSE to distribution. + * Makefile.in: Rebuilt. + + * README: Removed Linux section. No special notes now + because aggregates arg/return types work. + +Wed Oct 9 16:16:42 1996 Anthony Green + + * README, configure.in (VERSION): Boosted rev to 1.02 + * configure: Rebuilt. + +Tue Oct 8 11:56:33 1996 Anthony Green + + * README (NOTE): Added n32 notes. + + * Makefile.am: Added test production. + * Makefile: Rebuilt + + * README: spell checked! + + * configure.in (VERSION): Boosted rev to 1.01 + * configure: Rebuilt. + +Mon Oct 7 15:50:22 1996 Anthony Green + + * configure.in: Added nasty bit to support SGI tools. + * configure: Rebuilt. + + * README: Added SGI notes. Added note about automake bug. + +Mon Oct 7 11:00:28 1996 Anthony Green + + * README: Rewrote intro, and fixed examples. + +Fri Oct 4 10:19:55 1996 Anthony Green + + * configure.in: -D$TARGET is no longer used as a compiler switch. + It is now inserted into ffi.h at configure time. + * configure: Rebuilt. + + * FFI_ABI and FFI_STATUS are now ffi_abi and ffi_status. + +Thu Oct 3 13:47:34 1996 Anthony Green + + * README, LICENSE: Created. Wrote some docs. + + * configure.in: Don't barf on i586-unknown-linuxaout. + Added EXTRADIST code for "make dist". + * configure: Rebuilt. + + * */Makefile.in: Rebuilt with patched automake. + +Tue Oct 1 17:12:25 1996 Anthony Green + + * Makefile.am, aclocal.m4, config.guess, config.sub, + configure.in, fficonfig.h.in, install-sh, mkinstalldirs, + stamp-h.in: Created + * Makefile.in, configure: Generated + +--- libffi/include -------------------------------------------------------- + +Tue Feb 24 13:09:36 1998 Anthony Green + + * ffi_mips.h: Updated FFI_TYPE_STRUCT_* values based on + ffi.h.in changes. This is a work-around for SGI's "simple" + assembler. + +Sun Feb 22 00:51:55 1998 Geoff Keating + + * ffi.h.in: PowerPC support. + +1998-02-14 Andreas Schwab + + * ffi.h.in: Add m68k support. + (FFI_TYPE_LONGDOUBLE): Make it a separate value. + +Tue Feb 10 20:55:16 1998 Richard Henderson + + * ffi.h.in (SIZEOF_ARG): Use a pointer type by default. + + * ffi.h.in: Alpha support. + +Fri Nov 22 06:48:45 1996 Anthony Green + + * ffi.h.in, ffi_common.h: Cygnus Support -> Cygnus Solutions. + +Wed Nov 20 22:31:01 1996 Anthony Green + + * ffi.h.in: Added ffi_type_void definition. + +Tue Oct 29 12:22:40 1996 Anthony Green + + * Makefile.am (hack_DATA): Always install ffi_mips.h. + + * ffi.h.in: Removed FFI_DEBUG. It's now in the correct + place (acconfig.h). + Added #include for size_t definition. + +Tue Oct 15 17:23:35 1996 Anthony Green + + * ffi.h.in, ffi_common.h, ffi_mips.h: More clean up. + Commented out #define of FFI_DEBUG. + +Tue Oct 15 13:01:06 1996 Anthony Green + + * ffi_common.h: Added bool definition. + + * ffi.h.in, ffi_common.h: Clean up based on LCLint output. + Added funny /*@...@*/ comments to annotate source. + +Mon Oct 14 12:29:23 1996 Anthony Green + + * ffi.h.in: Interface changes based on feedback from Jim + Blandy. + +Fri Oct 11 16:49:35 1996 Anthony Green + + * ffi.h.in: Small change for sparc support. + +Thu Oct 10 14:53:37 1996 Anthony Green + + * ffi_mips.h: Added FFI_TYPE_STRUCT_* definitions for + special structure return types. + +Wed Oct 9 13:55:57 1996 Anthony Green + + * ffi.h.in: Added SIZEOF_ARG definition for X86 + +Tue Oct 8 11:40:36 1996 Anthony Green + + * ffi.h.in (FFI_FN): Added macro for eliminating compiler warnings. + Use it to case your function pointers to the proper type. + + * ffi_mips.h (SIZEOF_ARG): Added magic to fix type promotion bug. + + * Makefile.am (EXTRA_DIST): Added ffi_mips.h to EXTRA_DIST. + * Makefile: Rebuilt. + + * ffi_mips.h: Created. Moved all common mips definitions here. + +Mon Oct 7 10:58:12 1996 Anthony Green + + * ffi.h.in: The SGI assember is very picky about parens. Redefined + some macros to avoid problems. + + * ffi.h.in: Added FFI_DEFAULT_ABI definitions. Also added + externs for pointer, and 64bit integral ffi_types. + +Fri Oct 4 09:51:37 1996 Anthony Green + + * ffi.h.in: Added FFI_ABI member to ffi_cif and changed + function prototypes accordingly. + Added #define @TARGET@. Now programs including ffi.h don't + have to specify this themselves. + +Thu Oct 3 15:36:44 1996 Anthony Green + + * ffi.h.in: Changed ffi_prep_cif's values from void* to void** + + * Makefile.am (EXTRA_DIST): Added EXTRA_DIST for "make dist" + to work. + * Makefile.in: Regenerated. + +Wed Oct 2 10:16:59 1996 Anthony Green + + * Makefile.am: Created + * Makefile.in: Generated + + * ffi_common.h: Added rcsid comment + +Tue Oct 1 17:13:51 1996 Anthony Green + + * ffi.h.in, ffi_common.h: Created + +--- libffi/src ------------------------------------------------------------ + +Mon Oct 5 02:17:50 1998 Anthony Green + + * arm/ffi.c, arm/sysv.S: Created. + + * Makefile.am: Added arm files. + * Makefile.in: Rebuilt. + +Mon Oct 5 01:41:38 1998 Anthony Green + + * Makefile.am (libffi_la_LDFLAGS): Incremented revision. + +Sun Oct 4 16:27:17 1998 Anthony Green + + * alpha/osf.S (ffi_call_osf): Patch for DU assembler. + + * ffitest.c (main): long long and long double return values work + for x86. + +Fri Apr 17 11:50:58 1998 Anthony Green + + * Makefile.in: Rebuilt. + + * ffitest.c (main): Floating point tests not executed for systems + with broken lond double (SunOS 4 w/ GCC). + + * types.c: Fixed x86 alignment info for long long types. + +Thu Apr 16 07:15:28 1998 Anthony Green + + * ffitest.c: Added more notes about GCC bugs under Irix 6. + +Wed Apr 15 08:42:22 1998 Anthony Green + + * ffitest.c (struct5): New test function. + (main): New test with struct5. + +Thu Mar 5 10:48:11 1998 Anthony Green + + * prep_cif.c (initialize_aggregate): Fix assertion for + nested structures. + +Tue Feb 24 16:33:41 1998 Anthony Green + + * prep_cif.c (ffi_prep_cif): Added long double support for sparc. + +Sun Feb 22 00:52:18 1998 Geoff Keating + + * powerpc/asm.h: New file. + * powerpc/ffi.c: New file. + * powerpc/sysv.S: New file. + * Makefile.am: PowerPC port. + * ffitest.c (main): Allow all tests to run even in presence of gcc + bug on PowerPC. + +1998-02-17 Anthony Green + + * mips/ffi.c: Fixed comment typo. + + * x86/ffi.c (ffi_prep_cif_machdep), x86/sysv.S (retfloat): + Fixed x86 long double return handling. + + * types.c: Fixed x86 long double alignment info. + +1998-02-14 Andreas Schwab + + * types.c: Add m68k support. + + * ffitest.c (floating): Add long double parameter. + (return_ll, ldblit): New functions to test long long and long + double return value. + (main): Fix type error in assignment of ts[1-4]_type.elements. + Add tests for long long and long double arguments and return + values. + + * prep_cif.c (ffi_prep_cif) [M68K]: Don't allocate argument for + struct value pointer. + + * m68k/ffi.c, m68k/sysv.S: New files. + * Makefile.am: Add bits for m68k port. Add kludge to work around + automake deficiency. + (test): Don't require "." in $PATH. + * Makefile.in: Rebuilt. + +Wed Feb 11 07:36:50 1998 Anthony Green + + * Makefile.in: Rebuilt. + +Tue Feb 10 20:56:00 1998 Richard Henderson + + * alpha/ffi.c, alpha/osf.S: New files. + * Makefile.am: Alpha port. + +Tue Nov 18 14:12:07 1997 Anthony Green + + * mips/ffi.c (ffi_prep_cif_machdep): Initialize rstruct_flag + for n32. + +Tue Jun 3 17:18:20 1997 Anthony Green + + * ffitest.c (main): Added hack to get structure tests working + correctly. + +Sat May 10 19:06:42 1997 Tom Tromey + + * Makefile.in: Rebuilt. + * Makefile.am (EXTRA_DIST): Explicitly list all distributable + files in subdirs. + (VERSION, CC): Removed. + +Thu May 8 17:19:01 1997 Anthony Green + + * Makefile.am: Many changes for new automake and libtool. + * Makefile.in: Rebuilt. + +Fri Nov 22 06:57:56 1996 Anthony Green + + * ffitest.c (main): Fixed test case for non mips machines. + +Wed Nov 20 22:31:59 1996 Anthony Green + + * types.c: Added ffi_type_void declaration. + +Tue Oct 29 13:07:19 1996 Anthony Green + + * ffitest.c (main): Fixed character constants. + (main): Emit warning for structure test 3 failure on Sun. + + * Makefile.am (VPATH): Fixed VPATH def'n so automake won't + strip it out. + Moved distdir hack from libffi to automake. + (ffitest): Added missing -c for $(COMPILE) (change in automake). + * Makefile.in: Rebuilt. + +Tue Oct 15 13:08:20 1996 Anthony Green + + * Makefile.am: Added "make lint" production. + * Makefile.in: Rebuilt. + + * prep_cif.c (STACK_ARG_SIZE): Improved STACK_ARG_SIZE macro. + Clean up based on LCLint output. Added funny /*@...@*/ comments to + annotate source. + + * ffitest.c, debug.c: Cleaned up code. + +Mon Oct 14 12:26:56 1996 Anthony Green + + * ffitest.c: Changes based on interface changes. + + * prep_cif.c (ffi_prep_cif): Cleaned up interface based on + feedback from Jim Blandy. + +Fri Oct 11 15:53:18 1996 Anthony Green + + * ffitest.c: Reordered tests while porting to sparc. + Made changes to handle lame structure passing for sparc. + Removed calls to fflush(). + + * prep_cif.c (ffi_prep_cif): Added special case for sparc + aggregate type arguments. + +Thu Oct 10 09:56:51 1996 Anthony Green + + * ffitest.c (main): Added structure passing/returning tests. + + * prep_cif.c (ffi_prep_cif): Perform proper initialization + of structure return types if needed. + (initialize_aggregate): Bug fix + +Wed Oct 9 16:04:20 1996 Anthony Green + + * types.c: Added special definitions for x86 (double doesn't + need double word alignment). + + * ffitest.c: Added many tests + +Tue Oct 8 09:19:22 1996 Anthony Green + + * prep_cif.c (ffi_prep_cif): Fixed assertion. + + * debug.c (ffi_assert): Must return a non void now. + + * Makefile.am: Added test production. + * Makefile: Rebuilt. + + * ffitest.c (main): Created. + + * types.c: Created. Stripped common code out of */ffi.c. + + * prep_cif.c: Added missing stdlib.h include. + + * debug.c (ffi_type_test): Used "a" to eliminate compiler + warnings in non-debug builds. Included ffi_common.h. + +Mon Oct 7 15:36:42 1996 Anthony Green + + * Makefile.am: Added a rule for .s -> .o + This is required by the SGI compiler. + * Makefile: Rebuilt. + +Fri Oct 4 09:51:08 1996 Anthony Green + + * prep_cif.c (initialize_aggregate): Moved abi specification + to ffi_prep_cif(). + +Thu Oct 3 15:37:37 1996 Anthony Green + + * prep_cif.c (ffi_prep_cif): Changed values from void* to void**. + (initialize_aggregate): Fixed aggregate type initialization. + + * Makefile.am (EXTRA_DIST): Added support code for "make dist". + * Makefile.in: Regenerated. + +Wed Oct 2 11:41:57 1996 Anthony Green + + * debug.c, prep_cif: Created. + + * Makefile.am: Added debug.o and prep_cif.o to OBJ. + * Makefile.in: Regenerated. + + * Makefile.am (INCLUDES): Added missing -I../include + * Makefile.in: Regenerated. + +Tue Oct 1 17:11:51 1996 Anthony Green + + * error.c, Makefile.am: Created. + * Makefile.in: Generated. + +--- libffi/src/x86 -------------------------------------------------------- + +Sun Oct 4 16:27:17 1998 Anthony Green + + * sysv.S (retlongdouble): Fixed long long return value support. + * ffi.c (ffi_prep_cif_machdep): Ditto. + +Wed May 13 04:30:33 1998 Anthony Green + + * ffi.c (ffi_prep_cif_machdep): Fixed long double return value + support. + +Wed Apr 15 08:43:20 1998 Anthony Green + + * ffi.c (ffi_prep_args): small struct support was missing. + +Thu May 8 16:53:58 1997 Anthony Green + + * objects.mak: Removed. + +Mon Dec 2 15:12:58 1996 Tom Tromey + + * sysv.S: Use .balign, for a.out Linux boxes. + +Tue Oct 15 13:06:50 1996 Anthony Green + + * ffi.c: Clean up based on LCLint output. + Added funny /*@...@*/ comments to annotate source. + +Fri Oct 11 16:43:38 1996 Anthony Green + + * ffi.c (ffi_call): Added assertion for bad ABIs. + +Wed Oct 9 13:57:27 1996 Anthony Green + + * sysv.S (retdouble): Fixed double return problems. + + * ffi.c (ffi_call): Corrected fn arg definition. + (ffi_prep_cif_machdep): Fixed double return problems + +Tue Oct 8 12:12:49 1996 Anthony Green + + * ffi.c: Moved ffi_type definitions to types.c. + (ffi_prep_args): Fixed type promotion bug. + +Mon Oct 7 15:53:06 1996 Anthony Green + + * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' + +Fri Oct 4 09:54:53 1996 Anthony Green + + * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped + remaining args. + +Wed Oct 2 10:07:05 1996 Anthony Green + + * ffi.c, sysv.S, objects.mak: Created. + (ffi_prep_cif): cif->rvalue no longer initialized to NULL. + (ffi_prep_cif_machdep): Moved machine independent cif processing + to src/prep_cif.c. Introduced ffi_prep_cif_machdep(). + +--- libffi/src/mips ------------------------------------------------------- + +Tue Feb 17 17:18:07 1998 Anthony Green + + * o32.S: Fixed typo in comment. + + * ffi.c (ffi_prep_cif_machdep): Fixed argument processing. + +Thu May 8 16:53:58 1997 Anthony Green + + * o32.s, n32.s: Wrappers for SGI tool support. + + * objects.mak: Removed. + +Tue Oct 29 14:37:45 1996 Anthony Green + + * ffi.c (ffi_prep_args): Changed int z to size_t z. + +Tue Oct 15 13:17:25 1996 Anthony Green + + * n32.S: Fixed bad stack munging. + + * ffi.c: Moved prototypes for ffi_call_?32() to here from + ffi_mips.h because extended_cif is not defined in ffi_mips.h. + +Mon Oct 14 12:42:02 1996 Anthony Green + + * ffi.c: Interface changes based on feedback from Jim Blandy. + +Thu Oct 10 11:22:16 1996 Anthony Green + + * n32.S, ffi.c: Lots of changes to support passing and + returning structures with the n32 calling convention. + + * n32.S: Fixed fn pointer bug. + + * ffi.c (ffi_prep_cif_machdep): Fix for o32 structure + return values. + (ffi_prep_args): Fixed n32 structure passing when structures + partially fit in registers. + +Wed Oct 9 13:49:25 1996 Anthony Green + + * objects.mak: Added n32.o. + + * n32.S: Created. + + * ffi.c (ffi_prep_args): Added magic to support proper + n32 processing. + +Tue Oct 8 10:37:35 1996 Anthony Green + + * ffi.c: Moved ffi_type definitions to types.c. + (ffi_prep_args): Fixed type promotion bug. + + * o32.S: This code is only built for o32 compiles. + A lot of the #define cruft has moved to ffi_mips.h. + + * ffi.c (ffi_prep_cif_machdep): Fixed arg flags. Second arg + is only processed if the first is either a float or double. + +Mon Oct 7 15:33:59 1996 Anthony Green + + * o32.S: Modified to compile under each of o32, n32 and n64. + + * ffi.c (FFI_*_TYPEDEF): Removed redundant ';' + +Fri Oct 4 09:53:25 1996 Anthony Green + + * ffi.c (ffi_call): Removed FFI_ABI arg, and swapped + remaining args. + +Wed Oct 2 17:41:22 1996 Anthony Green + + * o32.S: Removed crufty definitions. + +Wed Oct 2 12:53:42 1996 Anthony Green + + * ffi.c (ffi_prep_cif): cif->rvalue no longer initialized to NULL. + (ffi_prep_cif_machdep): Moved all machine independent cif processing + to src/prep_cif.c. Introduced ffi_prep_cif_machdep. Return types + of FFI_TYPE_STRUCT are no different than FFI_TYPE_INT. + +Tue Oct 1 17:11:02 1996 Anthony Green + + * ffi.c, o32.S, object.mak: Created + +--- libffi/src/sparc ------------------------------------------------------ + +Tue Feb 24 16:33:18 1998 Anthony Green + + * ffi.c (ffi_prep_args): Added long double support. + +Thu May 8 16:53:58 1997 Anthony Green + + * objects.mak: Removed. + +Thu May 1 16:07:56 1997 Anthony Green + + * v8.S: Fixed minor portability problem reported by + Russ McManus . + +Tue Nov 26 14:12:43 1996 Anthony Green + + * v8.S: Used STACKFRAME define elsewhere. + + * ffi.c (ffi_prep_args): Zero out space when USING_PURIFY + is set. + (ffi_prep_cif_machdep): Allocate the correct stack frame + space for functions with < 6 args. + +Tue Oct 29 15:08:55 1996 Anthony Green + + * ffi.c (ffi_prep_args): int z is now size_t z. + +Mon Oct 14 13:31:24 1996 Anthony Green + + * v8.S (ffi_call_V8): Gordon rewrites this again. It looks + great now. + + * ffi.c (ffi_call): The comment about hijacked registers + is no longer valid after gordoni hacked v8.S. + + * v8.S (ffi_call_V8): Rewrote with gordoni. Much simpler. + + * v8.S, ffi.c: ffi_call() had changed to accept more than + two args, so v8.S had to change (because it hijacks incoming + arg registers). + + * ffi.c: Interface changes based on feedback from Jim Blandy. + +Thu Oct 10 17:48:16 1996 Anthony Green + + * ffi.c, v8.S, objects.mak: Created. + + diff --git a/deps/libffi/LICENSE b/deps/libffi/LICENSE new file mode 100644 index 00000000000000..12b4970e0ddcb4 --- /dev/null +++ b/deps/libffi/LICENSE @@ -0,0 +1,21 @@ +libffi - Copyright (c) 1996-2025 Anthony Green, Red Hat, Inc and others. +See source files for details. + +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. diff --git a/deps/libffi/LICENSE-BUILDTOOLS b/deps/libffi/LICENSE-BUILDTOOLS new file mode 100644 index 00000000000000..d1d626e0085903 --- /dev/null +++ b/deps/libffi/LICENSE-BUILDTOOLS @@ -0,0 +1,353 @@ +The libffi source distribution contains certain code that is not part +of libffi, and is only used as tooling to assist with the building and +testing of libffi. This includes the msvcc.sh script used to wrap the +Microsoft compiler with GNU compatible command-line options, +make_sunver.pl, and the libffi test code distributed in the +testsuite/libffi.bhaible directory. This code is distributed with +libffi for the purpose of convenience only, and libffi is in no way +derived from this code. + +msvcc.sh an testsuite/libffi.bhaible are both distributed under the +terms of the GNU GPL version 2, as below. + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/deps/libffi/Makefile.am b/deps/libffi/Makefile.am new file mode 100644 index 00000000000000..c3bcf00b327955 --- /dev/null +++ b/deps/libffi/Makefile.am @@ -0,0 +1,162 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS = foreign subdir-objects + +ACLOCAL_AMFLAGS = -I m4 + +# Alias required by AX_ENABLE_BUILDDIR / config-ml +.PHONY: all-configured +all-configured: all + +SUBDIRS = include testsuite man +if BUILD_DOCS +## This hack is needed because it doesn't seem possible to make a +## conditional info_TEXINFOS in Automake. At least Automake 1.14 +## either gives errors -- if this attempted in the most +## straightforward way -- or simply unconditionally tries to build the +## info file. +SUBDIRS += doc +endif + +EXTRA_DIST = LICENSE ChangeLog.old \ + m4/libtool.m4 m4/lt~obsolete.m4 \ + m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4 \ + m4/ltversion.m4 src/debug.c msvcc.sh \ + generate-darwin-source-and-headers.py \ + libffi.xcodeproj/project.pbxproj \ + src/powerpc/t-aix \ + libtool-ldflags libtool-version configure.host README.md \ + libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl + +# local.exp is generated by configure +DISTCLEANFILES = local.exp + +# Subdir rules rely on $(FLAGS_TO_PASS) +FLAGS_TO_PASS = $(AM_MAKEFLAGS) + +MAKEOVERRIDES= + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libffi.pc + +toolexeclib_LTLIBRARIES = libffi.la +noinst_LTLIBRARIES = libffi_convenience.la + +libffi_la_SOURCES = src/prep_cif.c src/types.c \ + src/raw_api.c src/java_raw_api.c src/closures.c \ + src/tramp.c + +if FFI_DEBUG +libffi_la_SOURCES += src/debug.c +endif + +noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \ + src/alpha/ffitarget.h src/alpha/internal.h \ + src/arc/ffitarget.h src/arm/ffitarget.h src/arm/internal.h \ + src/avr32/ffitarget.h src/bfin/ffitarget.h \ + src/cris/ffitarget.h src/csky/ffitarget.h src/frv/ffitarget.h \ + src/ia64/ffitarget.h src/ia64/ia64_flags.h \ + src/m32r/ffitarget.h src/m68k/ffitarget.h \ + src/m88k/ffitarget.h src/metag/ffitarget.h \ + src/microblaze/ffitarget.h src/mips/ffitarget.h \ + src/moxie/ffitarget.h \ + src/or1k/ffitarget.h src/pa/ffitarget.h \ + src/powerpc/ffitarget.h src/powerpc/asm.h \ + src/powerpc/ffi_powerpc.h src/powerpc/internal.h \ + src/riscv/ffitarget.h \ + src/s390/ffitarget.h src/s390/internal.h src/sh/ffitarget.h \ + src/sh64/ffitarget.h src/sparc/ffitarget.h \ + src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \ + src/wasm/ffitarget.h \ + src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h \ + src/x86/asmnames.h src/xtensa/ffitarget.h src/dlmalloc.c \ + src/kvx/ffitarget.h src/kvx/asm.h \ + src/loongarch64/ffitarget.h + +EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ + src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \ + src/arc/ffi.c src/arc/arcompact.S src/arm/ffi.c \ + src/arm/sysv.S src/arm/ffi.c src/arm/sysv_msvc_arm32.S \ + src/avr32/ffi.c src/avr32/sysv.S src/bfin/ffi.c \ + src/bfin/sysv.S src/cris/ffi.c src/cris/sysv.S src/frv/ffi.c \ + src/csky/ffi.c src/csky/sysv.S src/frv/eabi.S src/ia64/ffi.c \ + src/ia64/unix.S src/m32r/ffi.c src/m32r/sysv.S src/m68k/ffi.c \ + src/m68k/sysv.S src/m88k/ffi.c src/m88k/obsd.S \ + src/metag/ffi.c src/metag/sysv.S src/microblaze/ffi.c \ + src/microblaze/sysv.S src/mips/ffi.c src/mips/o32.S \ + src/mips/n32.S src/moxie/ffi.c src/moxie/eabi.S \ + src/or1k/ffi.c \ + src/or1k/sysv.S src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \ + src/pa/hpux64.S src/powerpc/ffi.c src/powerpc/ffi_sysv.c \ + src/powerpc/ffi_linux64.c src/powerpc/sysv.S \ + src/powerpc/linux64.S src/powerpc/linux64_closure.S \ + src/powerpc/ppc_closure.S src/powerpc/aix.S \ + src/powerpc/darwin.S src/powerpc/aix_closure.S \ + src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ + src/riscv/ffi.c src/riscv/sysv.S src/s390/ffi.c \ + src/s390/sysv.S src/sh/ffi.c src/sh/sysv.S src/sh64/ffi.c \ + src/sh64/sysv.S src/sparc/ffi.c src/sparc/ffi64.c \ + src/sparc/v8.S src/sparc/v9.S src/tile/ffi.c src/tile/tile.S \ + src/vax/ffi.c src/vax/elfbsd.S src/x86/ffi.c src/x86/sysv.S \ + src/wasm/ffi.c \ + src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \ + src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \ + src/xtensa/ffi.c src/xtensa/sysv.S src/kvx/ffi.c \ + src/kvx/sysv.S src/loongarch64/ffi.c src/loongarch64/sysv.S + +TARGET_OBJ = @TARGET_OBJ@ +libffi_la_LIBADD = $(TARGET_OBJ) + +libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) +EXTRA_libffi_convenience_la_SOURCES = $(EXTRA_libffi_la_SOURCES) +libffi_convenience_la_LIBADD = $(libffi_la_LIBADD) +libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES) +nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS)) + +AM_CFLAGS = +if FFI_DEBUG +# Build debug. Define FFI_DEBUG on the commandline so that, when building with +# MSVC, it can link against the debug CRT. +AM_CFLAGS += -DFFI_DEBUG +endif + +if LIBFFI_BUILD_VERSIONED_SHLIB +if LIBFFI_BUILD_VERSIONED_SHLIB_GNU +libffi_version_script = -Wl,--version-script,libffi.map +libffi_version_dep = libffi.map +endif +if LIBFFI_BUILD_VERSIONED_SHLIB_SUN +libffi_version_script = -Wl,-M,libffi.map-sun +libffi_version_dep = libffi.map-sun +libffi.map-sun : libffi.map $(top_srcdir)/make_sunver.pl \ + $(libffi_la_OBJECTS) $(libffi_la_LIBADD) + perl $(top_srcdir)/make_sunver.pl libffi.map \ + `echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \ + sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \ + > $@ || (rm -f $@ ; exit 1) +endif +else +libffi_version_script = +libffi_version_dep = +endif +libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version` + +libffi.map: $(top_srcdir)/libffi.map.in + $(COMPILE) -D$(TARGET) -DGENERATE_LIBFFI_MAP \ + -E -x assembler-with-cpp -o $@ $(top_srcdir)/libffi.map.in + +libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS) +libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) + +AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src +AM_CCASFLAGS = '$(AM_CPPFLAGS)' + +dist-hook: + d=`(cd $(distdir); pwd)`; (cd doc; make pdf; cp *.pdf $$d/doc) + if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog + s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md + +# target overrides +-include $(tmake_file) diff --git a/deps/libffi/README.md b/deps/libffi/README.md new file mode 100644 index 00000000000000..f093c324f66b38 --- /dev/null +++ b/deps/libffi/README.md @@ -0,0 +1,567 @@ +Status +====== + +libffi-3.5.2 was released on August 2, 2025. + + +What is libffi? +=============== + +Compilers for high level languages generate code that follow certain +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the "calling +convention". The "calling convention" is essentially a set of +assumptions made by the compiler about where function arguments will +be found on entry to a function. A "calling convention" also specifies +where the return value for a function is found. + +Some programs may not know at the time of compilation what arguments +are to be passed to a function. For instance, an interpreter may be +told at run-time about the number and types of arguments used to call +a given function. Libffi can be used in such programs to provide a +bridge from the interpreter program to compiled code. + +The libffi library provides a portable, high level programming +interface to various calling conventions. This allows a programmer to +call any function specified by a call interface description at run +time. + +FFI stands for Foreign Function Interface. A foreign function +interface is the popular name for the interface that allows code +written in one language to call code written in another language. The +libffi library really only provides the lowest, machine dependent +layer of a fully featured foreign function interface. A layer must +exist above libffi that handles type conversions for values passed +between the two languages. + + +Supported Platforms +=================== + +Libffi has been ported to many different platforms. + +At the time of release, the following basic configurations have been +tested: + +| Architecture | Operating System | Compiler | +| --------------- | ---------------- | ----------------------- | +| AArch64 (ARM64) | iOS | Clang | +| AArch64 | Linux | GCC | +| AArch64 | Windows | MSVC | +| Alpha | Linux | GCC | +| Alpha | Tru64 | GCC | +| ARC | Linux | GCC | +| ARC32 | Linux | GCC | +| ARC64 | Linux | GCC | +| ARM | Linux | GCC | +| ARM | iOS | GCC | +| ARM | Windows | MSVC | +| AVR32 | Linux | GCC | +| Blackfin | uClinux | GCC | +| CSKY | Linux | GCC | +| HPPA | HPUX | GCC | +| HPPA64 | HPUX | GCC | +| KVX | Linux | GCC | +| IA-64 | Linux | GCC | +| LoongArch64 | Linux | GCC | +| M68K | FreeMiNT | GCC | +| M68K | Linux | GCC | +| M68K | RTEMS | GCC | +| M88K | OpenBSD/mvme88k | GCC | +| Meta | Linux | GCC | +| MicroBlaze | Linux | GCC | +| MIPS | IRIX | GCC | +| MIPS | Linux | GCC | +| MIPS | RTEMS | GCC | +| MIPS64 | Linux | GCC | +| Moxie | Bare metal | GCC | +| OpenRISC | Linux | GCC | +| PowerPC 32-bit | AIX | GCC | +| PowerPC 32-bit | AIX | IBM XL C | +| PowerPC 64-bit | AIX | IBM XL C | +| PowerPC | AMIGA | GCC | +| PowerPC | Linux | GCC | +| PowerPC | Mac OSX | GCC | +| PowerPC | FreeBSD | GCC | +| PowerPC 64-bit | FreeBSD | GCC | +| PowerPC 64-bit | Linux ELFv1 | GCC | +| PowerPC 64-bit | Linux ELFv2 | GCC | +| RISC-V 32-bit | Linux | GCC | +| RISC-V 64-bit | Linux | GCC | +| S390 | Linux | GCC | +| S390X | Linux | GCC | +| SH3 | Linux | GCC | +| SH4 | Linux | GCC | +| SH5/SH64 | Linux | GCC | +| SPARC | Linux | GCC | +| SPARC | Solaris | GCC | +| SPARC | Solaris | Oracle Solaris Studio C | +| SPARC64 | Linux | GCC | +| SPARC64 | FreeBSD | GCC | +| SPARC64 | Solaris | Oracle Solaris Studio C | +| TILE-Gx/TILEPro | Linux | GCC | +| VAX | OpenBSD/vax | GCC | +| WASM32 | Emscripten | EMCC | +| WASM64 | Emscripten | EMCC | +| X86 | FreeBSD | GCC | +| X86 | GNU HURD | GCC | +| X86 | Interix | GCC | +| X86 | kFreeBSD | GCC | +| X86 | Linux | GCC | +| X86 | OpenBSD | GCC | +| X86 | OS/2 | GCC | +| X86 | Solaris | GCC | +| X86 | Solaris | Oracle Solaris Studio C | +| X86 | Windows/Cygwin | GCC | +| X86 | Windows/MinGW | GCC | +| X86-64 | DragonFly BSD | GCC | +| X86-64 | FreeBSD | GCC | +| X86-64 | Linux | GCC | +| X86-64 | Linux/x32 | GCC | +| X86-64 | OpenBSD | GCC | +| X86-64 | Solaris | Oracle Solaris Studio C | +| X86-64 | Windows/Cygwin | GCC | +| X86-64 | Windows/MinGW | GCC | +| X86-64 | Mac OSX | GCC | +| Xtensa | Linux | GCC | + +Please send additional platform test results to +libffi-discuss@sourceware.org. + +Installing libffi +================= + +First you must configure the distribution for your particular +system. Go to the directory you wish to build libffi in and run the +"configure" program found in the root directory of the libffi source +distribution. Note that building libffi requires a C99 compatible +compiler. + +If you're building libffi directly from git hosted sources, configure +won't exist yet; run ./autogen.sh first. This will require that you +install autoconf, automake, libtool and texinfo. + +You may want to tell configure where to install the libffi library and +header files. To do that, use the ``--prefix`` configure switch. Libffi +will install under /usr/local by default. + +If you want to enable extra run-time debugging checks use the the +``--enable-debug`` configure switch. This is useful when your program dies +mysteriously while using libffi. + +Another useful configure switch is ``--enable-purify-safety``. Using this +will add some extra code which will suppress certain warnings when you +are using Purify with libffi. Only use this switch when using +Purify, as it will slow down the library. + +If you don't want to build documentation, use the ``--disable-docs`` +configure switch. + +It's also possible to build libffi on Windows platforms with +Microsoft's Visual C++ compiler. In this case, use the msvcc.sh +wrapper script during configuration like so: + + path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP" CXXCPP="cl -nologo -EP" CPPFLAGS="-DFFI_BUILDING_DLL" + +For 64-bit Windows builds, use ``CC="path/to/msvcc.sh -m64"`` and +``CXX="path/to/msvcc.sh -m64"``. You may also need to specify +``--build`` appropriately. + +It is also possible to build libffi on Windows platforms with the LLVM +project's clang-cl compiler, like below: + + path/to/configure CC="path/to/msvcc.sh -clang-cl" CXX="path/to/msvcc.sh -clang-cl" LD=link CPP="clang-cl -EP" + +When building with MSVC under a MingW environment, you may need to +remove the line in configure that sets 'fix_srcfile_path' to a 'cygpath' +command. ('cygpath' is not present in MingW, and is not required when +using MingW-style paths.) + +To build static library for ARM64 with MSVC using visual studio solution, msvc_build folder have + aarch64/Ffi_staticLib.sln + required header files in aarch64/aarch64_include/ + + +SPARC Solaris builds require the use of the GNU assembler and linker. +Point ``AS`` and ``LD`` environment variables at those tool prior to +configuration. + +For iOS builds, the ``libffi.xcodeproj`` Xcode project is available. + +Configure has many other options. Use ``configure --help`` to see them all. + +Once configure has finished, type "make". Note that you must be using +GNU make. You can ftp GNU make from ftp.gnu.org:/pub/gnu/make . + +To ensure that libffi is working as advertised, type "make check". +This will require that you have DejaGNU installed. + +To install the library and header files, type ``make install``. + + +History +======= + +See the git log for details at http://github.com/libffi/libffi. + + 3.5.2 Aug-2-2025 + Add wasm64 support. + Add DragonFly BSD support. + Ensure trampoline file descriptors are closed on exec. + + 3.5.1 Jun-10-2025 + Fix symbol versioning error. + + 3.5.0 Jun-8-2025 + Add FFI_VERSION_STRING and FFI_VERSION_NUMBER macros, as well + as ffi_get_version() and ffi_get_version_number() functions. + Add ffi_get_default_abi() and ffi_get_closure_size() functions. + Fix closures on powerpc64-linux when statically linking. + Mark the PA stack as non-executable. + + 3.4.8 Apr-9-2025 + Add static trampoline support for powerpc-linux (32-bit SYSV BE), + powerpc64-linux (64-bit ELFv1 BE) and + powerpc64le-linux (64-bit ELFv2 LE) + Various x86-64 bug fixes (x32 ABI and improper memory access for + small argument calls). + Fix to enable pointer authentication for aarch64. + + 3.4.7 Feb-8-2025 + Add static trampoline support for Linux on s390x. + Fix BTI support for ARM64. + Support pointer authentication for ARM64. + Fix ASAN compatibility. + Fix x86-64 calls with 6 GP registers and some SSE registers. + Miscellaneous fixes for ARC and Darwin ARM64. + Fix OpenRISC or1k and Solaris 10 builds. + Remove nios2 port. + + 3.4.6 Feb-18-2024 + Fix long double regression on mips64 and alpha. + + 3.4.5 Feb-15-2024 + Add support for wasm32. + Add support for aarch64 branch target identification (bti). + Add support for ARCv3: ARC32 & ARC64. + Add support for HPPA64, and many HPPA fixes. + Add support for Haikuos on PowerPC. + Fixes for AIX, loongson, MIPS, power, sparc64, and x86 Darwin. + + 3.4.4 Oct-23-2022 + Important aarch64 fixes, including support for linux builds + with Link Time Optimization (-flto). + Fix x86 stdcall stack alignment. + Fix x86 Windows msvc assembler compatibility. + Fix moxie and or1k small structure args. + + 3.4.3 Sep-19-2022 + All struct args are passed by value, regardless of size, as per ABIs. + Enable static trampolines for Cygwin. + Add support for Loongson's LoongArch64 architecture. + Fix x32 static trampolines. + Fix 32-bit x86 stdcall stack corruption. + Fix ILP32 aarch64 support. + + 3.4.2 Jun-28-2021 + Add static trampoline support for Linux on x86_64 and ARM64. + Add support for Alibaba's CSKY architecture. + Add support for Kalray's KVX architecture. + Add support for Intel Control-flow Enforcement Technology (CET). + Add support for ARM Pointer Authentication (PA). + Fix 32-bit PPC regression. + Fix MIPS soft-float problem. + Enable tmpdir override with the $LIBFFI_TMPDIR environment variable. + Enable compatibility with MSVC runtime stack checking. + Reject float and small integer argument in ffi_prep_cif_var(). + Callers must promote these types themselves. + + 3.3 Nov-23-2019 + Add RISC-V support. + New API in support of GO closures. + Add IEEE754 binary128 long double support for 64-bit Power + Default to Microsoft's 64 bit long double ABI with Visual C++. + GNU compiler uses 80 bits (128 in memory) FFI_GNUW64 ABI. + Add Windows on ARM64 (WOA) support. + Add Windows 32-bit ARM support. + Raw java (gcj) API deprecated. + Add pre-built PDF documentation to source distribution. + Many new test cases and bug fixes. + + 3.2.1 Nov-12-2014 + Build fix for non-iOS AArch64 targets. + + 3.2 Nov-11-2014 + Add C99 Complex Type support (currently only supported on + s390). + Add support for PASCAL and REGISTER calling conventions on x86 + Windows/Linux. + Add OpenRISC and Cygwin-64 support. + Bug fixes. + + 3.1 May-19-2014 + Add AArch64 (ARM64) iOS support. + Add Nios II support. + Add m88k and DEC VAX support. + Add support for stdcall, thiscall, and fastcall on non-Windows + 32-bit x86 targets such as Linux. + Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi + fixes. + Make the testsuite more robust: eliminate several spurious + failures, and respect the $CC and $CXX environment variables. + Archive off the manually maintained ChangeLog in favor of git + log. + + 3.0.13 Mar-17-2013 + Add Meta support. + Add missing Moxie bits. + Fix stack alignment bug on 32-bit x86. + Build fix for m68000 targets. + Build fix for soft-float Power targets. + Fix the install dir location for some platforms when building + with GCC (OS X, Solaris). + Fix Cygwin regression. + + 3.0.12 Feb-11-2013 + Add Moxie support. + Add AArch64 support. + Add Blackfin support. + Add TILE-Gx/TILEPro support. + Add MicroBlaze support. + Add Xtensa support. + Add support for PaX enabled kernels with MPROTECT. + Add support for native vendor compilers on + Solaris and AIX. + Work around LLVM/GCC interoperability issue on x86_64. + + 3.0.11 Apr-11-2012 + Lots of build fixes. + Add support for variadic functions (ffi_prep_cif_var). + Add Linux/x32 support. + Add thiscall, fastcall and MSVC cdecl support on Windows. + Add Amiga and newer MacOS support. + Add m68k FreeMiNT support. + Integration with iOS' xcode build tools. + Fix Octeon and MC68881 support. + Fix code pessimizations. + + 3.0.10 Aug-23-2011 + Add support for Apple's iOS. + Add support for ARM VFP ABI. + Add RTEMS support for MIPS and M68K. + Fix instruction cache clearing problems on + ARM and SPARC. + Fix the N64 build on mips-sgi-irix6.5. + Enable builds with Microsoft's compiler. + Enable x86 builds with Oracle's Solaris compiler. + Fix support for calling code compiled with Oracle's Sparc + Solaris compiler. + Testsuite fixes for Tru64 Unix. + Additional platform support. + + 3.0.9 Dec-31-2009 + Add AVR32 and win64 ports. Add ARM softfp support. + Many fixes for AIX, Solaris, HP-UX, *BSD. + Several PowerPC and x86-64 bug fixes. + Build DLL for windows. + + 3.0.8 Dec-19-2008 + Add *BSD, BeOS, and PA-Linux support. + + 3.0.7 Nov-11-2008 + Fix for ppc FreeBSD. + (thanks to Andreas Tobler) + + 3.0.6 Jul-17-2008 + Fix for closures on sh. + Mark the sh/sh64 stack as non-executable. + (both thanks to Kaz Kojima) + + 3.0.5 Apr-3-2008 + Fix libffi.pc file. + Fix #define ARM for IcedTea users. + Fix x86 closure bug. + + 3.0.4 Feb-24-2008 + Fix x86 OpenBSD configury. + + 3.0.3 Feb-22-2008 + Enable x86 OpenBSD thanks to Thomas Heller, and + x86-64 FreeBSD thanks to Björn König and Andreas Tobler. + Clean up test instruction in README. + + 3.0.2 Feb-21-2008 + Improved x86 FreeBSD support. + Thanks to Björn König. + + 3.0.1 Feb-15-2008 + Fix instruction cache flushing bug on MIPS. + Thanks to David Daney. + + 3.0.0 Feb-15-2008 + Many changes, mostly thanks to the GCC project. + Cygnus Solutions is now Red Hat. + + [10 years go by...] + + 1.20 Oct-5-1998 + Raffaele Sena produces ARM port. + + 1.19 Oct-5-1998 + Fixed x86 long double and long long return support. + m68k bug fixes from Andreas Schwab. + Patch for DU assembler compatibility for the Alpha from Richard + Henderson. + + 1.18 Apr-17-1998 + Bug fixes and MIPS configuration changes. + + 1.17 Feb-24-1998 + Bug fixes and m68k port from Andreas Schwab. PowerPC port from + Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. + + 1.16 Feb-11-1998 + Richard Henderson produces Alpha port. + + 1.15 Dec-4-1997 + Fixed an n32 ABI bug. New libtool, auto* support. + + 1.14 May-13-97 + libtool is now used to generate shared and static libraries. + Fixed a minor portability problem reported by Russ McManus + . + + 1.13 Dec-2-1996 + Added --enable-purify-safety to keep Purify from complaining + about certain low level code. + Sparc fix for calling functions with < 6 args. + Linux x86 a.out fix. + + 1.12 Nov-22-1996 + Added missing ffi_type_void, needed for supporting void return + types. Fixed test case for non MIPS machines. Cygnus Support + is now Cygnus Solutions. + + 1.11 Oct-30-1996 + Added notes about GNU make. + + 1.10 Oct-29-1996 + Added configuration fix for non GNU compilers. + + 1.09 Oct-29-1996 + Added --enable-debug configure switch. Clean-ups based on LCLint + feedback. ffi_mips.h is always installed. Many configuration + fixes. Fixed ffitest.c for sparc builds. + + 1.08 Oct-15-1996 + Fixed n32 problem. Many clean-ups. + + 1.07 Oct-14-1996 + Gordon Irlam rewrites v8.S again. Bug fixes. + + 1.06 Oct-14-1996 + Gordon Irlam improved the sparc port. + + 1.05 Oct-14-1996 + Interface changes based on feedback. + + 1.04 Oct-11-1996 + Sparc port complete (modulo struct passing bug). + + 1.03 Oct-10-1996 + Passing struct args, and returning struct values works for + all architectures/calling conventions. Expanded tests. + + 1.02 Oct-9-1996 + Added SGI n32 support. Fixed bugs in both o32 and Linux support. + Added "make test". + + 1.01 Oct-8-1996 + Fixed float passing bug in mips version. Restructured some + of the code. Builds cleanly with SGI tools. + + 1.00 Oct-7-1996 + First release. No public announcement. + +Authors & Credits +================= + +libffi was originally written by Anthony Green . + +The developers of the GNU Compiler Collection project have made +innumerable valuable contributions. See the ChangeLog file for +details. + +Some of the ideas behind libffi were inspired by Gianni Mariani's free +gencall library for Silicon Graphics machines. + +The closure mechanism was designed and implemented by Kresten Krab +Thorup. + +Major processor architecture ports were contributed by the following +developers: + + aarch64 Marcus Shawcroft, James Greenhalgh + alpha Richard Henderson + arc Hackers at Synopsis + arm Raffaele Sena + avr32 Bradley Smith + blackfin Alexandre Keunecke I. de Mendonca + cris Simon Posnjak, Hans-Peter Nilsson + csky Ma Jun, Zhang Wenmeng + frv Anthony Green + ia64 Hans Boehm + kvx Yann Sionneau + loongarch64 Cheng Lulu, Xi Ruoyao, Xu Hao, + Zhang Wenlong, Pan Xuefeng + m32r Kazuhiro Inaoka + m68k Andreas Schwab + m88k Miod Vallat + metag Hackers at Imagination Technologies + microblaze Nathan Rossi + mips Anthony Green, Casey Marshall + mips64 David Daney + moxie Anthony Green + nios ii Sandra Loosemore + openrisc Sebastian Macke + pa Randolph Chung, Dave Anglin, Andreas Tobler + pa64 Dave Anglin + powerpc Geoffrey Keating, Andreas Tobler, + David Edelsohn, John Hornkvist + powerpc64 Jakub Jelinek + riscv Michael Knyszek, Andrew Waterman, Stef O'Rear + s390 Gerhard Tonn, Ulrich Weigand + sh Kaz Kojima + sh64 Kaz Kojima + sparc Anthony Green, Gordon Irlam + tile-gx/tilepro Walter Lee + vax Miod Vallat + wasm32 Hood Chatham, Brion Vibber, Kleis Auke Wolthuizen + x86 Anthony Green, Jon Beniston + x86-64 Bo Thorsen + xtensa Chris Zankel + +Jesper Skov and Andrew Haley both did more than their fair share of +stepping through the code and tracking down bugs. + +Thanks also to Tom Tromey for bug fixes, documentation and +configuration help. + +Thanks to Jim Blandy, who provided some useful feedback on the libffi +interface. + +Andreas Tobler has done a tremendous amount of work on the testsuite. + +Alex Oliva solved the executable page problem for SElinux. + +The list above is almost certainly incomplete and inaccurate. I'm +happy to make corrections or additions upon request. + +If you have a problem, or have found a bug, please file an issue on +our issue tracker at https://github.com/libffi/libffi/issues. + +The author can be reached at green@moxielogic.com. + +To subscribe/unsubscribe to our mailing lists, visit: +https://sourceware.org/mailman/listinfo/libffi-announce +https://sourceware.org/mailman/listinfo/libffi-discuss diff --git a/deps/libffi/acinclude.m4 b/deps/libffi/acinclude.m4 new file mode 100644 index 00000000000000..9624bbed0bdf8f --- /dev/null +++ b/deps/libffi/acinclude.m4 @@ -0,0 +1,383 @@ +# mmap(2) blacklisting. Some platforms provide the mmap library routine +# but don't support all of the features we need from it. +AC_DEFUN([AC_FUNC_MMAP_BLACKLIST], +[ +AC_CHECK_HEADER([sys/mman.h], + [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no]) +AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no]) +if test "$libffi_header_sys_mman_h" != yes \ + || test "$libffi_func_mmap" != yes; then + ac_cv_func_mmap_file=no + ac_cv_func_mmap_dev_zero=no + ac_cv_func_mmap_anon=no +else + AC_CACHE_CHECK([whether read-only mmap of a plain file works], + ac_cv_func_mmap_file, + [# Add a system to this blacklist if + # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a + # memory area containing the same data that you'd get if you applied + # read() to the same fd. The only system known to have a problem here + # is VMS, where text files have record structure. + case "$host_os" in + vms* | ultrix*) + ac_cv_func_mmap_file=no ;; + *) + ac_cv_func_mmap_file=yes;; + esac]) + AC_CACHE_CHECK([whether mmap from /dev/zero works], + ac_cv_func_mmap_dev_zero, + [# Add a system to this blacklist if it has mmap() but /dev/zero + # does not exist, or if mmapping /dev/zero does not give anonymous + # zeroed pages with both the following properties: + # 1. If you map N consecutive pages in with one call, and then + # unmap any subset of those pages, the pages that were not + # explicitly unmapped remain accessible. + # 2. If you map two adjacent blocks of memory and then unmap them + # both at once, they must both go away. + # Systems known to be in this category are Windows (all variants), + # VMS, and Darwin. + case "$host_os" in + vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) + ac_cv_func_mmap_dev_zero=no ;; + *) + ac_cv_func_mmap_dev_zero=yes;; + esac]) + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. + AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, + [AC_COMPILE_IFELSE( +[AC_LANG_PROGRAM([[#include +#include +#include + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +]], +[[int n = MAP_ANONYMOUS;]])], + ac_cv_decl_map_anon=yes, + ac_cv_decl_map_anon=no)]) + + if test $ac_cv_decl_map_anon = no; then + ac_cv_func_mmap_anon=no + else + AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works], + ac_cv_func_mmap_anon, + [# Add a system to this blacklist if it has mmap() and MAP_ANON or + # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + # doesn't give anonymous zeroed pages with the same properties listed + # above for use of /dev/zero. + # Systems known to be in this category are Windows, VMS, and SCO Unix. + case "$host_os" in + vms* | cygwin* | pe | mingw* | sco* | udk* ) + ac_cv_func_mmap_anon=no ;; + *) + ac_cv_func_mmap_anon=yes;; + esac]) + fi +fi + +if test $ac_cv_func_mmap_file = yes; then + AC_DEFINE(HAVE_MMAP_FILE, 1, + [Define if read-only mmap of a plain file works.]) +fi +if test $ac_cv_func_mmap_dev_zero = yes; then + AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1, + [Define if mmap of /dev/zero works.]) +fi +if test $ac_cv_func_mmap_anon = yes; then + AC_DEFINE(HAVE_MMAP_ANON, 1, + [Define if mmap with MAP_ANON(YMOUS) works.]) +fi +]) + +dnl ---------------------------------------------------------------------- +dnl This whole bit snagged from libstdc++-v3, via libatomic. + +dnl +dnl LIBFFI_ENABLE +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) +dnl (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) +dnl +dnl See docs/html/17_intro/configury.html#enable for documentation. +dnl +m4_define([LIBFFI_ENABLE],[dnl +m4_define([_g_switch],[--enable-$1])dnl +m4_define([_g_help],[AS_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl + AC_ARG_ENABLE($1,_g_help, + m4_bmatch([$5], + [^permit ], + [[ + case "$enableval" in + m4_bpatsubst([$5],[permit ])) ;; + *) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;; + dnl Idea for future: generate a URL pointing to + dnl "onlinedocs/configopts.html#whatever" + esac + ]], + [^$], + [[ + case "$enableval" in + yes|no) ;; + *) AC_MSG_ERROR(Argument to enable/disable $1 must be yes or no) ;; + esac + ]], + [[$5]]), + [enable_]m4_bpatsubst([$1],-,_)[=][$2]) +m4_undefine([_g_switch])dnl +m4_undefine([_g_help])dnl +]) + +dnl +dnl If GNU ld is in use, check to see if tricky linker opts can be used. If +dnl the native linker is in use, all variables will be defined to something +dnl safe (like an empty string). +dnl +dnl Defines: +dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible +dnl OPT_LDFLAGS='-Wl,-O1' if possible +dnl LD (as a side effect of testing) +dnl Sets: +dnl with_gnu_ld +dnl libat_ld_is_gold (possibly) +dnl libat_gnu_ld_version (possibly) +dnl +dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will +dnl set libat_gnu_ld_version to 12345. Zeros cause problems. +dnl +AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ + # If we're not using GNU ld, then there's no point in even trying these + # tests. Check for that first. We should have already tested for gld + # by now (in libtool), but require it now just to be safe... + test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' + test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' + AC_REQUIRE([LT_PATH_LD]) + AC_REQUIRE([AC_PROG_AWK]) + + # The name set by libtool depends on the version of libtool. Shame on us + # for depending on an impl detail, but c'est la vie. Older versions used + # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on + # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually + # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't + # set (hence we're using an older libtool), then set it. + if test x${with_gnu_ld+set} != xset; then + if test x${ac_cv_prog_gnu_ld+set} != xset; then + # We got through "ac_require(ac_prog_ld)" and still not set? Huh? + with_gnu_ld=no + else + with_gnu_ld=$ac_cv_prog_gnu_ld + fi + fi + + # Start by getting the version number. I think the libtool test already + # does some of this, but throws away the result. + libat_ld_is_gold=no + if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then + libat_ld_is_gold=yes + fi + libat_ld_is_lld=no + if $LD --version 2>/dev/null | grep 'LLD '> /dev/null 2>&1; then + libat_ld_is_lld=yes + fi + libat_ld_is_mold=no + if $LD --version 2>/dev/null | grep 'mold '> /dev/null 2>&1; then + libat_ld_is_mold=yes + fi + changequote(,) + ldver=`$LD --version 2>/dev/null | + sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` + changequote([,]) + libat_gnu_ld_version=`echo $ldver | \ + $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` + + # Set --gc-sections. + if test "$with_gnu_ld" = "notbroken"; then + # GNU ld it is! Joy and bunny rabbits! + + # All these tests are for C++; save the language and the compiler flags. + # Need to do this so that g++ won't try to link in libstdc++ + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS='-x c++ -Wl,--gc-sections' + + # Check for -Wl,--gc-sections + # XXX This test is broken at the moment, as symbols required for linking + # are now in libsupc++ (not built yet). In addition, this test has + # cored on solaris in the past. In addition, --gc-sections doesn't + # really work at the moment (keeps on discarding used sections, first + # .eh_frame and now some of the glibc sections for iconv). + # Bzzzzt. Thanks for playing, maybe next time. + AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + int main(void) + { + try { throw 1; } + catch (...) { }; + return 0; + } + ]])],[ac_sectionLDflags=yes],[ac_sectionLDflags=no],[ac_sectionLDflags=yes]) + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + else + # this is the suspicious part + CFLAGS='' + fi + if test "$ac_sectionLDflags" = "yes"; then + SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" + fi + AC_MSG_RESULT($ac_sectionLDflags) + fi + + # Set linker optimization flags. + if test x"$with_gnu_ld" = x"yes"; then + OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" + fi + + AC_SUBST(SECTION_LDFLAGS) + AC_SUBST(OPT_LDFLAGS) +]) + + +dnl +dnl Add version tags to symbols in shared library (or not), additionally +dnl marking other symbols as private/local (or not). +dnl +dnl --enable-symvers=style adds a version script to the linker call when +dnl creating the shared library. The choice of version script is +dnl controlled by 'style'. +dnl --disable-symvers does not. +dnl + Usage: LIBFFI_ENABLE_SYMVERS[(DEFAULT)] +dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to +dnl choose a default style based on linker characteristics. Passing +dnl 'no' disables versioning. +dnl +AC_DEFUN([LIBFFI_ENABLE_SYMVERS], [ + +LIBFFI_ENABLE(symvers,yes,[=STYLE], + [enables symbol versioning of the shared library], + [permit yes|no|gnu*|sun]) + +# If we never went through the LIBFFI_CHECK_LINKER_FEATURES macro, then we +# don't know enough about $LD to do tricks... +AC_REQUIRE([LIBFFI_CHECK_LINKER_FEATURES]) + +# Turn a 'yes' into a suitable default. +if test x$enable_symvers = xyes ; then + # FIXME The following test is too strict, in theory. + if test $enable_shared = no || test "x$LD" = x; then + enable_symvers=no + else + if test $with_gnu_ld = yes ; then + enable_symvers=gnu + else + case ${target_os} in + # Sun symbol versioning exists since Solaris 2.5. + solaris2.[[5-9]]* | solaris2.1[[0-9]]*) + enable_symvers=sun ;; + *) + enable_symvers=no ;; + esac + fi + fi +fi + +# Check if 'sun' was requested on non-Solaris 2 platforms. +if test x$enable_symvers = xsun ; then + case ${target_os} in + solaris2*) + # All fine. + ;; + *) + # Unlikely to work. + AC_MSG_WARN([=== You have requested Sun symbol versioning, but]) + AC_MSG_WARN([=== you are not targetting Solaris 2.]) + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + ;; + esac +fi + +# Check to see if libgcc_s exists, indicating that shared libgcc is possible. +if test $enable_symvers != no; then + AC_MSG_CHECKING([for shared libgcc]) + ac_save_CFLAGS="$CFLAGS" + CFLAGS=' -lgcc_s' + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[libat_shared_libgcc=yes],[libat_shared_libgcc=no]) + CFLAGS="$ac_save_CFLAGS" + if test $libat_shared_libgcc = no; then + cat > conftest.c <&1 >/dev/null \ + | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'` +changequote([,])dnl + rm -f conftest.c conftest.so + if test x${libat_libgcc_s_suffix+set} = xset; then + CFLAGS=" -lgcc_s$libat_libgcc_s_suffix" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[libat_shared_libgcc=yes],[]) + CFLAGS="$ac_save_CFLAGS" + fi + fi + AC_MSG_RESULT($libat_shared_libgcc) +fi + +# For GNU ld, we need at least this version. The format is described in +# LIBFFI_CHECK_LINKER_FEATURES above. +libat_min_gnu_ld_version=21400 +# XXXXXXXXXXX libat_gnu_ld_version=21390 + +# Check to see if unspecified "yes" value can win, given results above. +# Change "yes" into either "no" or a style name. +if test $enable_symvers != no && test $libat_shared_libgcc = yes; then + if test $with_gnu_ld = yes; then + if test $libat_gnu_ld_version -ge $libat_min_gnu_ld_version ; then + enable_symvers=gnu + elif test $libat_ld_is_gold = yes ; then + enable_symvers=gnu + elif test $libat_ld_is_lld = yes ; then + enable_symvers=gnu + elif test $libat_ld_is_mold = yes ; then + enable_symvers=gnu + else + # The right tools, the right setup, but too old. Fallbacks? + AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for) + AC_MSG_WARN(=== full symbol versioning support in this release of GCC.) + AC_MSG_WARN(=== You would need to upgrade your binutils to version) + AC_MSG_WARN(=== $libat_min_gnu_ld_version or later and rebuild GCC.) + if test $libat_gnu_ld_version -ge 21200 ; then + # Globbing fix is present, proper block support is not. + dnl AC_MSG_WARN([=== Dude, you are soooo close. Maybe we can fake it.]) + dnl enable_symvers=??? + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + else + # 2.11 or older. + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + fi + fi + elif test $enable_symvers = sun; then + : All interesting versions of Sun ld support sun style symbol versioning. + else + # just fail for now + AC_MSG_WARN([=== You have requested some kind of symbol versioning, but]) + AC_MSG_WARN([=== either you are not using a supported linker, or you are]) + AC_MSG_WARN([=== not building a shared libgcc_s (which is required).]) + AC_MSG_WARN([=== Symbol versioning will be disabled.]) + enable_symvers=no + fi +fi +if test $enable_symvers = gnu; then + AC_DEFINE(LIBFFI_GNU_SYMBOL_VERSIONING, 1, + [Define to 1 if GNU symbol versioning is used for libatomic.]) +fi + +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB, test $enable_symvers != no) +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_GNU, test $enable_symvers = gnu) +AM_CONDITIONAL(LIBFFI_BUILD_VERSIONED_SHLIB_SUN, test $enable_symvers = sun) +AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers) +]) diff --git a/deps/libffi/autogen.sh b/deps/libffi/autogen.sh new file mode 100755 index 00000000000000..fb014a33ea3bf4 --- /dev/null +++ b/deps/libffi/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec autoreconf -v -i diff --git a/deps/libffi/config.guess b/deps/libffi/config.guess new file mode 100644 index 00000000000000..f6d217a49f8f4a --- /dev/null +++ b/deps/libffi/config.guess @@ -0,0 +1,1812 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/deps/libffi/config.sub b/deps/libffi/config.sub new file mode 100755 index 00000000000000..2c5120f1ddae7f --- /dev/null +++ b/deps/libffi/config.sub @@ -0,0 +1,1973 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2024 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) + ;; + uclinux-uclibc*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + ios*-simulator* | tvos*-simulator* | watchos*-simulator*) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/deps/libffi/configure.ac b/deps/libffi/configure.ac new file mode 100644 index 00000000000000..dcfc7b242d02b3 --- /dev/null +++ b/deps/libffi/configure.ac @@ -0,0 +1,461 @@ +dnl Process this with autoconf to create configure + +AC_PREREQ([2.68]) + +AC_INIT([libffi],[3.5.2],[http://github.com/libffi/libffi/issues]) +AC_CONFIG_HEADERS([fficonfig.h]) + +FFI_VERSION_STRING="3.5.2" +FFI_VERSION_NUMBER=30502 +AC_SUBST(FFI_VERSION_STRING) +AC_SUBST(FFI_VERSION_NUMBER) + +AC_CANONICAL_TARGET +target_alias=${target_alias-$host_alias} + +case "${host}" in + frv*-elf) + LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/ + ;; +esac + +AX_ENABLE_BUILDDIR + +AM_INIT_AUTOMAKE + +# The same as in boehm-gc and libstdc++. Have to borrow it from there. +# We must force CC to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS ourselves. +# Also save and restore CFLAGS, since AC_PROG_CC will come up with +# defaults of its own if none are provided. + +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +m4_define([_AC_ARG_VAR_PRECIOUS],[]) +save_CFLAGS=$CFLAGS +AC_PROG_CC +AC_PROG_CXX +CFLAGS=$save_CFLAGS +m4_undefine([_AC_ARG_VAR_PRECIOUS]) +m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) + +AC_SUBST(CFLAGS) + +AM_PROG_AS +AM_PROG_CC_C_O +AC_PROG_EGREP +LT_INIT +AC_CONFIG_MACRO_DIR([m4]) + +AC_CHECK_TOOLS([READELF], [readelf greadelf]) + +# Test for 64-bit build. +AC_CHECK_SIZEOF([size_t]) + +AX_COMPILER_VENDOR +AX_CC_MAXOPT +# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro +# compiler. +if test "$ax_cv_c_compiler_vendor" != "sun"; then + AX_CFLAGS_WARN_ALL +fi + +if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -fexceptions" +fi + +cat > local.exp < conftest.s + if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then + libffi_cv_as_x86_pcrel=yes + fi + ]) + if test "x$libffi_cv_as_x86_pcrel" = xyes; then + AC_DEFINE(HAVE_AS_X86_PCREL, 1, + [Define if your assembler supports PC relative relocs.]) + fi + ;; + + S390) + AC_CACHE_CHECK([compiler uses zarch features], + libffi_cv_as_s390_zarch, [ + libffi_cv_as_s390_zarch=no + echo 'void foo(void) { bar(); bar(); }' > conftest.c + if $CC $CFLAGS -S conftest.c > /dev/null 2>&1; then + if $GREP -q brasl conftest.s; then + libffi_cv_as_s390_zarch=yes + fi + fi + ]) + if test "x$libffi_cv_as_s390_zarch" = xyes; then + AC_DEFINE(HAVE_AS_S390_ZARCH, 1, + [Define if the compiler uses zarch features.]) + fi + ;; + wasm64) + if test -z "$WASM64_MEMORY64"; then + WASM64_MEMORY64=1 + fi + CFLAGS="$CFLAGS -sMEMORY64=$WASM64_MEMORY64" + ;; +esac + +AC_CACHE_CHECK([whether compiler supports pointer authentication], + libffi_cv_as_ptrauth, [ + libffi_cv_as_ptrauth=unknown + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +#ifdef __clang__ +# if __has_feature(ptrauth_calls) +# define HAVE_ARM64E_PTRAUTH 1 +# endif +#endif + +#ifndef HAVE_ARM64E_PTRAUTH +# error Pointer authentication not supported +#endif + ]])],[libffi_cv_as_ptrauth=yes],[libffi_cv_as_ptrauth=no]) +]) +if test "x$libffi_cv_as_ptrauth" = xyes; then + AC_DEFINE(HAVE_ARM64E_PTRAUTH, 1, + [Define if your compiler supports pointer authentication.]) +fi + +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC; +# if EMUTRAMP is active too ffi could try mapping without PROT_EXEC, +# but the kernel needs to recognize the trampoline generated by ffi. +# Otherwise fallback to double mmap trick. +AC_ARG_ENABLE(pax_emutramp, + [ --enable-pax_emutramp enable pax emulated trampolines (experimental)], + if test "$enable_pax_emutramp" = "yes"; then + AC_MSG_WARN([EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce.]) + elif test "$enable_pax_emutramp" = "experimental"; then + AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, + [Define this if you want to enable pax emulated trampolines (experimental)]) + fi) + +LT_SYS_SYMBOL_USCORE +if test "x$sys_symbol_underscore" = xyes; then + AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.]) +fi + +FFI_EXEC_TRAMPOLINE_TABLE=0 +case "$target" in + *arm*-apple-* | aarch64-apple-*) + FFI_EXEC_TRAMPOLINE_TABLE=1 + AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1, + [Cannot use PROT_EXEC on this target, so, we revert to + alternative means]) + ;; + *-apple-* | *-*-dragonfly* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*) + AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1, + [Cannot use malloc on this target, so, we revert to + alternative means]) + ;; +esac +AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) +AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) + +if test x$TARGET = xX86_64; then + AC_CACHE_CHECK([toolchain supports unwind section type], + libffi_cv_as_x86_64_unwind_section_type, [ + cat > conftest1.s << EOF +.text +.globl foo +foo: +jmp bar +.section .eh_frame,"a",@unwind +bar: +EOF + + cat > conftest2.c << EOF +extern void foo(); +int main(){foo();} +EOF + + libffi_cv_as_x86_64_unwind_section_type=no + # we ensure that we can compile _and_ link an assembly file containing an @unwind section + # since the compiler can support it and not the linker (ie old binutils) + if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \ + $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then + libffi_cv_as_x86_64_unwind_section_type=yes + fi + ]) + if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then + AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1, + [Define if your assembler supports unwind section type.]) + fi +fi + +if test "x$GCC" = "xyes"; then + AX_CHECK_COMPILE_FLAG(-fno-lto, libffi_cv_no_lto=-fno-lto) + + AC_CACHE_CHECK([whether .eh_frame section should be read-only], + libffi_cv_ro_eh_frame, [ + libffi_cv_ro_eh_frame=yes + echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c + if $CC $CFLAGS -c -fpic -fexceptions $libffi_cv_no_lto -o conftest.o conftest.c > /dev/null 2>&1; then + if $READELF -WS conftest.o 2>/dev/null | $GREP -q -n 'eh_frame .* WA'; then + libffi_cv_ro_eh_frame=no + fi + fi + rm -f conftest.* + ]) + if test "x$libffi_cv_ro_eh_frame" = xyes; then + AC_DEFINE(HAVE_RO_EH_FRAME, 1, + [Define if .eh_frame sections should be read-only.]) + AC_DEFINE(EH_FRAME_FLAGS, "a", + [Define to the flags needed for the .section .eh_frame directive. ]) + else + AC_DEFINE(EH_FRAME_FLAGS, "aw", + [Define to the flags needed for the .section .eh_frame directive. ]) + fi + + AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], + libffi_cv_hidden_visibility_attribute, [ + echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c + libffi_cv_hidden_visibility_attribute=no + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then + if $EGREP '(\.hidden|\.private_extern).*foo|foo.*,hidden' conftest.s >/dev/null; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then + AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, + [Define if __attribute__((visibility("hidden"))) is supported.]) + fi +fi + +AC_ARG_ENABLE(docs, + AS_HELP_STRING([--disable-docs],[Disable building of docs (default: no)]), + [enable_docs=no], + [enable_docs=yes]) +AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes]) + +AH_BOTTOM([ +#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +#ifdef LIBFFI_ASM +#ifdef __APPLE__ +#define FFI_HIDDEN(name) .private_extern name +#else +#define FFI_HIDDEN(name) .hidden name +#endif +#else +#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) +#endif +#else +#ifdef LIBFFI_ASM +#define FFI_HIDDEN(name) +#else +#define FFI_HIDDEN +#endif +#endif +]) + +AC_SUBST(TARGET) +AC_SUBST(TARGETDIR) + +changequote(<,>) +TARGET_OBJ= +for i in $SOURCES; do + TARGET_OBJ="${TARGET_OBJ} src/${TARGETDIR}/"`echo $i | sed 's/[cS]$/lo/'` +done +changequote([,]) +AC_SUBST(TARGET_OBJ) + +AC_SUBST(SHELL) + +AC_ARG_ENABLE(debug, +[ --enable-debug debugging mode], + if test "$enable_debug" = "yes"; then + AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.]) + fi) +AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") + +AC_ARG_ENABLE(structs, +[ --disable-structs omit code for struct support], + if test "$enable_structs" = "no"; then + AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.]) + fi) +AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes") + +AC_ARG_ENABLE(raw-api, +[ --disable-raw-api make the raw api unavailable], + if test "$enable_raw_api" = "no"; then + AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.]) + fi) + +AC_ARG_ENABLE(exec-static-tramp, +[ --disable-exec-static-tramp disable use of static exec trampolines (enabled by default)]) + +if test "$enable_exec_static_tramp" != no; then +case "$target" in + *-cygwin* | *-msys*) + # Only define static trampolines if we are using the cygwin runtime. + # Will this need to be changed for mingw? + if test "x$GCC" = "xyes"; then + AC_DEFINE(FFI_EXEC_STATIC_TRAMP, 1, + [Define this if you want statically defined trampolines]) + fi + ;; + *arm*-*-linux-* | aarch64*-*-linux-* | i*86-*-linux-* | x86_64-*-linux-* \ + | loongarch*-*-linux-* | s390x*-linux-* | powerpc*-linux-*) + AC_DEFINE(FFI_EXEC_STATIC_TRAMP, 1, + [Define this if you want statically defined trampolines]) + ;; +esac +fi + +AC_ARG_ENABLE(purify-safety, +[ --enable-purify-safety purify-safe mode], + if test "$enable_purify_safety" = "yes"; then + AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.]) + fi) + +AC_ARG_ENABLE(multi-os-directory, +[ --disable-multi-os-directory + disable use of gcc --print-multi-os-directory to change the library installation directory]) + +# These variables are only ever used when we cross-build to X86_WIN32. +# And we only support this with GCC, so... +if test "x$GCC" = "xyes"; then + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='${exec_prefix}'/'$(target_alias)' + toolexeclibdir='${toolexecdir}'/lib + else + toolexecdir='${libdir}'/gcc-lib/'$(target_alias)' + toolexeclibdir='${libdir}' + fi + if test x"$enable_multi_os_directory" != x"no"; then + multi_os_directory=`$CC $CFLAGS -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + fi + AC_SUBST(toolexecdir) +else + toolexeclibdir='${libdir}' +fi +AC_SUBST(toolexeclibdir) + +# Conditionalize the makefile for this target machine. +tmake_file_= +for f in ${tmake_file}; do + if test -f ${srcdir}/src/$TARGETDIR/$f; then + tmake_file_="${tmake_file_} \$(srcdir)/src/$TARGETDIR/$f" + fi +done +tmake_file="${tmake_file_}" +AC_SUBST(tmake_file) + +# Check linker support. +LIBFFI_ENABLE_SYMVERS + +AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) +AC_CONFIG_COMMANDS(src, [ +test -d src || mkdir src +test -d src/$TARGETDIR || mkdir src/$TARGETDIR +], [TARGETDIR="$TARGETDIR"]) + +AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc) + +AC_OUTPUT + +# Copy this file instead of using AC_CONFIG_LINK in order to support +# compiling with MSVC, which won't understand cygwin style symlinks. +cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h diff --git a/deps/libffi/configure.host b/deps/libffi/configure.host new file mode 100644 index 00000000000000..4e10c3edb773a1 --- /dev/null +++ b/deps/libffi/configure.host @@ -0,0 +1,337 @@ +# configure.host +# +# This shell script handles all host based configuration for libffi. +# + +# THIS TABLE IS SORTED. KEEP IT THAT WAY. +# Most of the time we can define all the variables all at once... +case "${host}" in + aarch64*-*-cygwin* | aarch64*-*-msys* | aarch64*-*-mingw* | aarch64*-*-win* ) + TARGET=ARM_WIN64; TARGETDIR=aarch64 + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 + fi + ;; + + aarch64*-*-*) + TARGET=AARCH64; TARGETDIR=aarch64 + SOURCES="ffi.c sysv.S" + ;; + + alpha*-*-*) + TARGET=ALPHA; TARGETDIR=alpha; + # Support 128-bit long double, changeable via command-line switch. + HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)' + SOURCES="ffi.c osf.S" + ;; + + arc*-*-*) + TARGET=ARC; TARGETDIR=arc + SOURCES="ffi.c arcompact.S" + ;; + + arm*-*-cygwin* | arm*-*-msys* | arm*-*-mingw* | arm*-*-win* ) + TARGET=ARM_WIN32; TARGETDIR=arm + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 + fi + ;; + + arm*-*-*) + TARGET=ARM; TARGETDIR=arm + SOURCES="ffi.c sysv.S" + ;; + + avr32*-*-*) + TARGET=AVR32; TARGETDIR=avr32 + SOURCES="ffi.c sysv.S" + ;; + + bfin*) + TARGET=BFIN; TARGETDIR=bfin + SOURCES="ffi.c sysv.S" + ;; + + cris-*-*) + TARGET=LIBFFI_CRIS; TARGETDIR=cris + SOURCES="ffi.c sysv.S" + ;; + + csky-*-*) + TARGET=CSKY; TARGETDIR=csky + SOURCES="ffi.c sysv.S" + ;; + + frv-*-*) + TARGET=FRV; TARGETDIR=frv + SOURCES="ffi.c eabi.S" + ;; + + hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*) + TARGET=PA_LINUX; TARGETDIR=pa + SOURCES="ffi.c linux.S" + ;; + hppa*64-*-hpux*) + TARGET=PA64_HPUX; TARGETDIR=pa + SOURCES="ffi64.c hpux64.S" + ;; + hppa*-*-hpux*) + TARGET=PA_HPUX; TARGETDIR=pa + SOURCES="ffi.c hpux32.S" + ;; + + i?86-*-freebsd* | i?86-*-openbsd*) + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; + + i?86-*-cygwin* | i?86-*-msys* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \ + | x86_64-*-cygwin* | x86_64-*-msys* | x86_64-*-mingw* | x86_64-*-win* ) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + TARGET=X86_WIN32 + else + TARGET=X86_WIN64 + fi + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 + fi + # All mingw/cygwin/win32 builds require -no-undefined for sharedlib. + # We must also check with_cross_host to decide if this is a native + # or cross-build and select where to install dlls appropriately. + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"'; + else + AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"'; + fi + ;; + + i?86-*-darwin* | x86_64-*-darwin* | i?86-*-ios | x86_64-*-ios) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + TARGET=X86_DARWIN + else + TARGET=X86_64 + fi + ;; + + i?86-*-* | x86_64-*-* | amd64-*) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + echo 'int foo (void) { return __x86_64__; }' > conftest.c + if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then + TARGET_X32=yes + TARGET=X86_64 + else + TARGET=X86; + fi + rm -f conftest.* + else + TARGET=X86_64; + fi + ;; + + ia64*-*-*) + TARGET=IA64; TARGETDIR=ia64 + SOURCES="ffi.c unix.S" + ;; + + kvx-*-*) + TARGET=KVX; TARGETDIR=kvx + SOURCES="ffi.c sysv.S" + ;; + + loongarch64-*-*) + TARGET=LOONGARCH64; TARGETDIR=loongarch64 + SOURCES="ffi.c sysv.S" + ;; + + m32r*-*-*) + TARGET=M32R; TARGETDIR=m32r + SOURCES="ffi.c sysv.S" + ;; + + m68k-*-*) + TARGET=M68K; TARGETDIR=m68k + SOURCES="ffi.c sysv.S" + ;; + + m88k-*-*) + TARGET=M88K; TARGETDIR=m88k + SOURCES="ffi.c obsd.S" + ;; + + microblaze*-*-*) + TARGET=MICROBLAZE; TARGETDIR=microblaze + SOURCES="ffi.c sysv.S" + ;; + + moxie-*-*) + TARGET=MOXIE; TARGETDIR=moxie + SOURCES="ffi.c eabi.S" + ;; + + metag-*-*) + TARGET=METAG; TARGETDIR=metag + SOURCES="ffi.c sysv.S" + ;; + + mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*) + TARGET=MIPS; TARGETDIR=mips + ;; + mips*-*linux* | mips*-*-openbsd* | mips*-*-freebsd*) + # Support 128-bit long double for NewABI. + HAVE_LONG_DOUBLE='defined(__mips64)' + TARGET=MIPS; TARGETDIR=mips + ;; + + or1k*-*-*) + TARGET=OR1K; TARGETDIR=or1k + SOURCES="ffi.c sysv.S" + ;; + + powerpc*-*-linux* | powerpc-*-sysv*) + TARGET=POWERPC; TARGETDIR=powerpc + HAVE_LONG_DOUBLE_VARIANT=1 + ;; + powerpc-*-amigaos*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-eabi*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-beos* | powerpc-*-haiku*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc-*-darwin* | powerpc64-*-darwin*) + TARGET=POWERPC_DARWIN; TARGETDIR=powerpc + ;; + powerpc-*-aix* | rs6000-*-aix*) + TARGET=POWERPC_AIX; TARGETDIR=powerpc + # Create AIX-style "FAT" libraries. + tmake_file="t-aix" + ;; + powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc + HAVE_LONG_DOUBLE_VARIANT=1 + ;; + powerpcspe-*-freebsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc + CFLAGS="$CFLAGS -D__NO_FPRS__" + ;; + powerpc64-*-freebsd* | powerpc64le-*-freebsd*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + powerpc*-*-rtems*) + TARGET=POWERPC; TARGETDIR=powerpc + ;; + + riscv*-*) + TARGET=RISCV; TARGETDIR=riscv + SOURCES="ffi.c sysv.S" + ;; + + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + SOURCES="ffi.c sysv.S" + ;; + + sh-*-* | sh[34]*-*-*) + TARGET=SH; TARGETDIR=sh + SOURCES="ffi.c sysv.S" + ;; + sh64-*-* | sh5*-*-*) + TARGET=SH64; TARGETDIR=sh64 + SOURCES="ffi.c sysv.S" + ;; + + sparc*-*-*) + TARGET=SPARC; TARGETDIR=sparc + SOURCES="ffi.c ffi64.c v8.S v9.S" + ;; + + tile*-*) + TARGET=TILE; TARGETDIR=tile + SOURCES="ffi.c tile.S" + ;; + + vax-*-*) + TARGET=VAX; TARGETDIR=vax + SOURCES="ffi.c elfbsd.S" + ;; + + wasm32-*-*) + TARGET=wasm32; TARGETDIR=wasm + SOURCES="ffi.c" + ;; + + wasm64-*-*) + TARGET=wasm64; TARGETDIR=wasm + SOURCES="ffi.c" + ;; + + xtensa*-*) + TARGET=XTENSA; TARGETDIR=xtensa + SOURCES="ffi.c sysv.S" + ;; +esac + +# ... but some of the cases above share configury. +case "${TARGET}" in + ARM_WIN32) + if test "$MSVC" = 1; then + SOURCES="ffi.c sysv_msvc_arm32.S" + else + SOURCES="ffi.c sysv.S" + fi + ;; + ARM_WIN64) + if test "$MSVC" = 1; then + SOURCES="ffi.c win64_armasm.S" + else + SOURCES="ffi.c sysv.S" + fi + ;; + MIPS) + SOURCES="ffi.c o32.S n32.S" + ;; + POWERPC) + SOURCES="ffi.c ffi_sysv.c ffi_linux64.c sysv.S ppc_closure.S" + SOURCES="${SOURCES} linux64.S linux64_closure.S" + ;; + POWERPC_AIX) + SOURCES="ffi_darwin.c aix.S aix_closure.S" + ;; + POWERPC_DARWIN) + SOURCES="ffi_darwin.c darwin.S darwin_closure.S" + ;; + POWERPC_FREEBSD) + SOURCES="ffi.c ffi_sysv.c sysv.S ppc_closure.S" + ;; + X86 | X86_DARWIN | X86_FREEBSD | X86_WIN32) + if test "$MSVC" = 1; then + SOURCES="ffi.c sysv_intel.S" + else + SOURCES="ffi.c sysv.S" + fi + ;; + X86_64) + if test x"$TARGET_X32" = xyes; then + SOURCES="ffi64.c unix64.S" + else + SOURCES="ffi64.c unix64.S ffiw64.c win64.S" + fi + ;; + X86_WIN64) + if test "$MSVC" = 1; then + SOURCES="ffiw64.c win64_intel.S" + else + SOURCES="ffiw64.c win64.S" + fi + ;; +esac + +# If we failed to configure SOURCES, we can't do anything. +if test -z "${SOURCES}"; then + UNSUPPORTED=1 +fi diff --git a/deps/libffi/doc/Makefile.am b/deps/libffi/doc/Makefile.am new file mode 100644 index 00000000000000..43b650aea7a2dc --- /dev/null +++ b/deps/libffi/doc/Makefile.am @@ -0,0 +1,3 @@ +## Process this with automake to create Makefile.in + +info_TEXINFOS = libffi.texi diff --git a/deps/libffi/doc/libffi.texi b/deps/libffi/doc/libffi.texi new file mode 100644 index 00000000000000..165c2fb1f873ec --- /dev/null +++ b/deps/libffi/doc/libffi.texi @@ -0,0 +1,1069 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename libffi.info +@include version.texi +@settitle libffi: the portable foreign function interface library +@setchapternewpage off +@c %**end of header + +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@copying + +This manual is for libffi, a portable foreign function interface +library. + +Copyright @copyright{} 2008--2025 Anthony Green and Red Hat, Inc. + +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. + +@end copying + +@dircategory Development +@direntry +* libffi: (libffi). Portable foreign function interface library. +@end direntry + +@titlepage +@title libffi: a foreign function interface library +@subtitle For Version @value{VERSION} of libffi +@author Anthony Green +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + + +@ifnottex +@node Top +@top libffi + +@insertcopying + +@menu +* Introduction:: What is libffi? +* Using libffi:: How to use libffi. +* Memory Usage:: Where memory for closures comes from. +* Missing Features:: Things libffi can't do. +* Index:: Index. +@end menu + +@end ifnottex + + +@node Introduction +@chapter What is libffi? + +Compilers for high level languages generate code that follow certain +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the @dfn{calling +convention}. The calling convention is a set of assumptions made by +the compiler about where function arguments will be found on entry to +a function. A calling convention also specifies where the return +value for a function is found. The calling convention is also +sometimes called the @dfn{ABI} or @dfn{Application Binary Interface}. +@cindex calling convention +@cindex ABI +@cindex Application Binary Interface + +Some programs may not know at the time of compilation what arguments +are to be passed to a function. For instance, an interpreter may be +told at run-time about the number and types of arguments used to call +a given function. @code{libffi} can be used in such programs to +provide a bridge from the interpreter program to compiled code. + +The @code{libffi} library provides a portable, high level programming +interface to various calling conventions. This allows a programmer to +call any function specified by a call interface description at run +time. + +@acronym{FFI} stands for Foreign Function Interface. A foreign +function interface is the popular name for the interface that allows +code written in one language to call code written in another language. +The @code{libffi} library really only provides the lowest, machine +dependent layer of a fully featured foreign function interface. A +layer must exist above @code{libffi} that handles type conversions for +values passed between the two languages. +@cindex FFI +@cindex Foreign Function Interface + + +@node Using libffi +@chapter Using libffi + +@menu +* The Basics:: The basic libffi API. +* Simple Example:: A simple example. +* Types:: libffi type descriptions. +* Multiple ABIs:: Different passing styles on one platform. +* The Closure API:: Writing a generic function. +* Closure Example:: A closure example. +* Thread Safety:: Thread safety. +@end menu + + +@node The Basics +@section The Basics + +@code{libffi} assumes that you have a pointer to the function you wish +to call and that you know the number and types of arguments to pass +it, as well as the return type of the function. + +The first thing you must do is create an @code{ffi_cif} object that +matches the signature of the function you wish to call. This is a +separate step because it is common to make multiple calls using a +single @code{ffi_cif}. The @dfn{cif} in @code{ffi_cif} stands for +Call InterFace. To prepare a call interface object, use the function +@code{ffi_prep_cif}. +@cindex cif + +@findex ffi_prep_cif +@defun ffi_status ffi_prep_cif (ffi_cif *@var{cif}, ffi_abi @var{abi}, unsigned int @var{nargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes}) +This initializes @var{cif} according to the given parameters. + +@var{abi} is the ABI to use; normally @code{FFI_DEFAULT_ABI} is what +you want. @ref{Multiple ABIs} for more information. + +@var{nargs} is the number of arguments that this function accepts. + +@var{rtype} is a pointer to an @code{ffi_type} structure that +describes the return type of the function. @xref{Types}. + +@var{argtypes} is a vector of @code{ffi_type} pointers. +@var{argtypes} must have @var{nargs} elements. If @var{nargs} is 0, +this argument is ignored. + +@code{ffi_prep_cif} returns a @code{libffi} status code, of type +@code{ffi_status}. This will be either @code{FFI_OK} if everything +worked properly; @code{FFI_BAD_TYPEDEF} if one of the @code{ffi_type} +objects is incorrect; or @code{FFI_BAD_ABI} if the @var{abi} parameter +is invalid. +@end defun + +If the function being called is variadic (varargs) then +@code{ffi_prep_cif_var} must be used instead of @code{ffi_prep_cif}. + +@findex ffi_prep_cif_var +@defun ffi_status ffi_prep_cif_var (ffi_cif *@var{cif}, ffi_abi @var{abi}, unsigned int @var{nfixedargs}, unsigned int @var{ntotalargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes}) +This initializes @var{cif} according to the given parameters for +a call to a variadic function. In general its operation is the +same as for @code{ffi_prep_cif} except that: + +@var{nfixedargs} is the number of fixed arguments, prior to any +variadic arguments. It must be greater than zero. + +@var{ntotalargs} the total number of arguments, including variadic +and fixed arguments. @var{argtypes} must have this many elements. + +@code{ffi_prep_cif_var} will return @code{FFI_BAD_ARGTYPE} if any of +the variable argument types are @code{ffi_type_float} (promote to +@code{ffi_type_double} first), or any integer type small than an int +(promote to an int-sized type first). + +Note that, different cif's must be prepped for calls to the same +function when different numbers of arguments are passed. + +Also note that a call to @code{ffi_prep_cif_var} with +@var{nfixedargs}=@var{nototalargs} is NOT equivalent to a call to +@code{ffi_prep_cif}. + +@end defun + +Note that the resulting @code{ffi_cif} holds pointers to all the +@code{ffi_type} objects that were used during initialization. You +must ensure that these type objects have a lifetime at least as long +as that of the @code{ffi_cif}. + +To call a function using an initialized @code{ffi_cif}, use the +@code{ffi_call} function: + +@findex ffi_call +@defun void ffi_call (ffi_cif *@var{cif}, void *@var{fn}, void *@var{rvalue}, void **@var{avalues}) +This calls the function @var{fn} according to the description given in +@var{cif}. @var{cif} must have already been prepared using +@code{ffi_prep_cif}. + +@var{rvalue} is a pointer to a chunk of memory that will hold the +result of the function call. This must be large enough to hold the +result, no smaller than the system register size (generally 32 or 64 +bits), and must be suitably aligned; it is the caller's responsibility +to ensure this. If @var{cif} declares that the function returns +@code{void} (using @code{ffi_type_void}), then @var{rvalue} is +ignored. + +In most situations, @code{libffi} will handle promotion according to +the ABI. However, for historical reasons, there is a special case +with return values that must be handled by your code. In particular, +for integral (not @code{struct}) types that are narrower than the +system register size, the return value will be widened by +@code{libffi}. @code{libffi} provides a type, @code{ffi_arg}, that +can be used as the return type. For example, if the CIF was defined +with a return type of @code{char}, @code{libffi} will try to store a +full @code{ffi_arg} into the return value. + +@var{avalues} is a vector of @code{void *} pointers that point to the +memory locations holding the argument values for a call. If @var{cif} +declares that the function has no arguments (i.e., @var{nargs} was 0), +then @var{avalues} is ignored. + +Note that while the return value must be register-sized, arguments +should exactly match their declared type. For example, if an argument +is a @code{short}, then the entry in @var{avalues} should point to an +object declared as @code{short}; but if the return type is +@code{short}, then @var{rvalue} should point to an object declared as +a larger type -- usually @code{ffi_arg}. +@end defun + +@findex ffi_get_version +@defun {const char *} ffi_get_version (void) +Returns the library version as a string. This string is also +available at build time as the macro @code{FFI_VERSION_STRING}. +@end defun + +@findex ffi_get_version_number +@defun {unsigned long} ffi_get_version_number (void) +Returns the library version as an unsigned long value where +version ``x.y.z'' is represented as the number x*10000+y*100+z. +This number is also available at build time as the macro +@code{FFI_VERSION_NUMBER}. +@end defun + +@findex ffi_get_default_abi +@defun {unsigned int} ffi_get_default_abi (void) +Return the value of @code{FFI_DEFAULT_ABI}. +@end defun + +@findex ffi_get_closure_size +@defun {size_t} ffi_get_closure_size (void) +Return @code{sizeof(ffi_closure)}. +@end defun + +@node Simple Example +@section Simple Example + +Here is a trivial example that calls @code{puts} a few times. + +@example +#include +#include + +int main() +@{ + ffi_cif cif; + ffi_type *args[1]; + void *values[1]; + char *s; + ffi_arg rc; + + /* Initialize the argument info vectors */ + args[0] = &ffi_type_pointer; + values[0] = &s; + + /* Initialize the cif */ + if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, args) == FFI_OK) + @{ + s = "Hello World!"; + ffi_call(&cif, (void(*)())puts, &rc, values); + /* rc now holds the result of the call to puts */ + + /* values holds a pointer to the function's arg, so to + call puts() again all we need to do is change the + value of s */ + s = "This is cool!"; + ffi_call(&cif, (void(*)())puts, &rc, values); + @} + + return 0; +@} +@end example + + +@node Types +@section Types + +@menu +* Primitive Types:: Built-in types. +* Structures:: Structure types. +* Size and Alignment:: Size and alignment of types. +* Arrays Unions Enums:: Arrays, unions, and enumerations. +* Type Example:: Structure type example. +* Complex:: Complex types. +* Complex Type Example:: Complex type example. +@end menu + +@node Primitive Types +@subsection Primitive Types + +@code{Libffi} provides a number of built-in type descriptors that can +be used to describe argument and return types: + +@table @code +@item ffi_type_void +@tindex ffi_type_void +The type @code{void}. This cannot be used for argument types, only +for return values. + +@item ffi_type_uint8 +@tindex ffi_type_uint8 +An unsigned, 8-bit integer type. + +@item ffi_type_sint8 +@tindex ffi_type_sint8 +A signed, 8-bit integer type. + +@item ffi_type_uint16 +@tindex ffi_type_uint16 +An unsigned, 16-bit integer type. + +@item ffi_type_sint16 +@tindex ffi_type_sint16 +A signed, 16-bit integer type. + +@item ffi_type_uint32 +@tindex ffi_type_uint32 +An unsigned, 32-bit integer type. + +@item ffi_type_sint32 +@tindex ffi_type_sint32 +A signed, 32-bit integer type. + +@item ffi_type_uint64 +@tindex ffi_type_uint64 +An unsigned, 64-bit integer type. + +@item ffi_type_sint64 +@tindex ffi_type_sint64 +A signed, 64-bit integer type. + +@item ffi_type_float +@tindex ffi_type_float +The C @code{float} type. + +@item ffi_type_double +@tindex ffi_type_double +The C @code{double} type. + +@item ffi_type_uchar +@tindex ffi_type_uchar +The C @code{unsigned char} type. + +@item ffi_type_schar +@tindex ffi_type_schar +The C @code{signed char} type. (Note that there is not an exact +equivalent to the C @code{char} type in @code{libffi}; ordinarily you +should either use @code{ffi_type_schar} or @code{ffi_type_uchar} +depending on whether @code{char} is signed.) + +@item ffi_type_ushort +@tindex ffi_type_ushort +The C @code{unsigned short} type. + +@item ffi_type_sshort +@tindex ffi_type_sshort +The C @code{short} type. + +@item ffi_type_uint +@tindex ffi_type_uint +The C @code{unsigned int} type. + +@item ffi_type_sint +@tindex ffi_type_sint +The C @code{int} type. + +@item ffi_type_ulong +@tindex ffi_type_ulong +The C @code{unsigned long} type. + +@item ffi_type_slong +@tindex ffi_type_slong +The C @code{long} type. + +@item ffi_type_longdouble +@tindex ffi_type_longdouble +On platforms that have a C @code{long double} type, this is defined. +On other platforms, it is not. + +@item ffi_type_pointer +@tindex ffi_type_pointer +A generic @code{void *} pointer. You should use this for all +pointers, regardless of their real type. + +@item ffi_type_complex_float +@tindex ffi_type_complex_float +The C @code{_Complex float} type. + +@item ffi_type_complex_double +@tindex ffi_type_complex_double +The C @code{_Complex double} type. + +@item ffi_type_complex_longdouble +@tindex ffi_type_complex_longdouble +The C @code{_Complex long double} type. +On platforms that have a C @code{long double} type, this is defined. +On other platforms, it is not. +@end table + +Each of these is of type @code{ffi_type}, so you must take the address +when passing to @code{ffi_prep_cif}. + + +@node Structures +@subsection Structures + +@code{libffi} is perfectly happy passing structures back and forth. +You must first describe the structure to @code{libffi} by creating a +new @code{ffi_type} object for it. + +@tindex ffi_type +@deftp {Data type} ffi_type +The @code{ffi_type} has the following members: +@table @code +@item size_t size +This is set by @code{libffi}; you should initialize it to zero. + +@item unsigned short alignment +This is set by @code{libffi}; you should initialize it to zero. + +@item unsigned short type +For a structure, this should be set to @code{FFI_TYPE_STRUCT}. + +@item ffi_type **elements +This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} +objects. There is one element per field of the struct. + +Note that @code{libffi} has no special support for bit-fields. You +must manage these manually. +@end table +@end deftp + +The @code{size} and @code{alignment} fields will be filled in by +@code{ffi_prep_cif} or @code{ffi_prep_cif_var}, as needed. + +@node Size and Alignment +@subsection Size and Alignment + +@code{libffi} will set the @code{size} and @code{alignment} fields of +an @code{ffi_type} object for you. It does so using its knowledge of +the ABI. + +You might expect that you can simply read these fields for a type that +has been laid out by @code{libffi}. However, there are some caveats. + +@itemize @bullet +@item +The size or alignment of some of the built-in types may vary depending +on the chosen ABI. + +@item +The size and alignment of a new structure type will not be set by +@code{libffi} until it has been passed to @code{ffi_prep_cif} or +@code{ffi_get_struct_offsets}. + +@item +A structure type cannot be shared across ABIs. Instead each ABI needs +its own copy of the structure type. +@end itemize + +So, before examining these fields, it is safest to pass the +@code{ffi_type} object to @code{ffi_prep_cif} or +@code{ffi_get_struct_offsets} first. This function will do all the +needed setup. + +@example +ffi_type *desired_type; +ffi_abi desired_abi; +@dots{} +ffi_cif cif; +if (ffi_prep_cif (&cif, desired_abi, 0, desired_type, NULL) == FFI_OK) + @{ + size_t size = desired_type->size; + unsigned short alignment = desired_type->alignment; + @} +@end example + +@code{libffi} also provides a way to get the offsets of the members of +a structure. + +@findex ffi_get_struct_offsets +@defun ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets) +Compute the offset of each element of the given structure type. +@var{abi} is the ABI to use; this is needed because in some cases the +layout depends on the ABI. + +@var{offsets} is an out parameter. The caller is responsible for +providing enough space for all the results to be written -- one +element per element type in @var{struct_type}. If @var{offsets} is +@code{NULL}, then the type will be laid out but not otherwise +modified. This can be useful for accessing the type's size or layout, +as mentioned above. + +This function returns @code{FFI_OK} on success; @code{FFI_BAD_ABI} if +@var{abi} is invalid; or @code{FFI_BAD_TYPEDEF} if @var{struct_type} +is invalid in some way. Note that only @code{FFI_STRUCT} types are +valid here. +@end defun + +@node Arrays Unions Enums +@subsection Arrays, Unions, and Enumerations + +@subsubsection Arrays + +@code{libffi} does not have direct support for arrays or unions. +However, they can be emulated using structures. + +To emulate an array, simply create an @code{ffi_type} using +@code{FFI_TYPE_STRUCT} with as many members as there are elements in +the array. + +@example +ffi_type array_type; +ffi_type **elements +int i; + +elements = malloc ((n + 1) * sizeof (ffi_type *)); +for (i = 0; i < n; ++i) + elements[i] = array_element_type; +elements[n] = NULL; + +array_type.size = array_type.alignment = 0; +array_type.type = FFI_TYPE_STRUCT; +array_type.elements = elements; +@end example + +Note that arrays cannot be passed or returned by value in C -- +structure types created like this should only be used to refer to +members of real @code{FFI_TYPE_STRUCT} objects. + +However, a phony array type like this will not cause any errors from +@code{libffi} if you use it as an argument or return type. This may +be confusing. + +@subsubsection Unions + +A union can also be emulated using @code{FFI_TYPE_STRUCT}. In this +case, however, you must make sure that the size and alignment match +the real requirements of the union. + +One simple way to do this is to ensue that each element type is laid +out. Then, give the new structure type a single element; the size of +the largest element; and the largest alignment seen as well. + +This example uses the @code{ffi_prep_cif} trick to ensure that each +element type is laid out. + +@example +ffi_abi desired_abi; +ffi_type union_type; +ffi_type **union_elements; + +int i; +ffi_type element_types[2]; + +element_types[1] = NULL; + +union_type.size = union_type.alignment = 0; +union_type.type = FFI_TYPE_STRUCT; +union_type.elements = element_types; + +for (i = 0; union_elements[i]; ++i) + @{ + ffi_cif cif; + if (ffi_prep_cif (&cif, desired_abi, 0, union_elements[i], NULL) == FFI_OK) + @{ + if (union_elements[i]->size > union_type.size) + @{ + union_type.size = union_elements[i]; + size = union_elements[i]->size; + @} + if (union_elements[i]->alignment > union_type.alignment) + union_type.alignment = union_elements[i]->alignment; + @} + @} +@end example + +@subsubsection Enumerations + +@code{libffi} does not have any special support for C @code{enum}s. +Although any given @code{enum} is implemented using a specific +underlying integral type, exactly which type will be used cannot be +determined by @code{libffi} -- it may depend on the values in the +enumeration or on compiler flags such as @option{-fshort-enums}. +@xref{Structures unions enumerations and bit-fields implementation, , , gcc}, +for more information about how GCC handles enumerations. + +@node Type Example +@subsection Type Example + +The following example initializes a @code{ffi_type} object +representing the @code{tm} struct from Linux's @file{time.h}. + +Here is how the struct is defined: + +@example +struct tm @{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + /* Those are for future use. */ + long int __tm_gmtoff__; + __const char *__tm_zone__; +@}; +@end example + +Here is the corresponding code to describe this struct to +@code{libffi}: + +@example + @{ + ffi_type tm_type; + ffi_type *tm_type_elements[12]; + int i; + + tm_type.size = tm_type.alignment = 0; + tm_type.type = FFI_TYPE_STRUCT; + tm_type.elements = tm_type_elements; + + for (i = 0; i < 9; i++) + tm_type_elements[i] = &ffi_type_sint; + + tm_type_elements[9] = &ffi_type_slong; + tm_type_elements[10] = &ffi_type_pointer; + tm_type_elements[11] = NULL; + + /* tm_type can now be used to represent tm argument types and + return types for ffi_prep_cif() */ + @} +@end example + +@node Complex +@subsection Complex Types + +@code{libffi} supports the complex types defined by the C99 +standard (@code{_Complex float}, @code{_Complex double} and +@code{_Complex long double} with the built-in type descriptors +@code{ffi_type_complex_float}, @code{ffi_type_complex_double} and +@code{ffi_type_complex_longdouble}. + +Custom complex types like @code{_Complex int} can also be used. +An @code{ffi_type} object has to be defined to describe the +complex type to @code{libffi}. + +@tindex ffi_type +@deftp {Data type} ffi_type +@table @code +@item size_t size +This must be manually set to the size of the complex type. + +@item unsigned short alignment +This must be manually set to the alignment of the complex type. + +@item unsigned short type +For a complex type, this must be set to @code{FFI_TYPE_COMPLEX}. + +@item ffi_type **elements + +This is a @samp{NULL}-terminated array of pointers to +@code{ffi_type} objects. The first element is set to the +@code{ffi_type} of the complex's base type. The second element +must be set to @code{NULL}. +@end table +@end deftp + +The section @ref{Complex Type Example} shows a way to determine +the @code{size} and @code{alignment} members in a platform +independent way. + +For platforms that have no complex support in @code{libffi} yet, +the functions @code{ffi_prep_cif} and @code{ffi_prep_args} abort +the program if they encounter a complex type. + +@node Complex Type Example +@subsection Complex Type Example + +This example demonstrates how to use complex types: + +@example +#include +#include +#include + +void complex_fn(_Complex float cf, + _Complex double cd, + _Complex long double cld) +@{ + printf("cf=%f+%fi\ncd=%f+%fi\ncld=%f+%fi\n", + (float)creal (cf), (float)cimag (cf), + (float)creal (cd), (float)cimag (cd), + (float)creal (cld), (float)cimag (cld)); +@} + +int main() +@{ + ffi_cif cif; + ffi_type *args[3]; + void *values[3]; + _Complex float cf; + _Complex double cd; + _Complex long double cld; + + /* Initialize the argument info vectors */ + args[0] = &ffi_type_complex_float; + args[1] = &ffi_type_complex_double; + args[2] = &ffi_type_complex_longdouble; + values[0] = &cf; + values[1] = &cd; + values[2] = &cld; + + /* Initialize the cif */ + if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_void, args) == FFI_OK) + @{ + cf = 1.0 + 20.0 * I; + cd = 300.0 + 4000.0 * I; + cld = 50000.0 + 600000.0 * I; + /* Call the function */ + ffi_call(&cif, (void (*)(void))complex_fn, 0, values); + @} + + return 0; +@} +@end example + +This is an example for defining a custom complex type descriptor +for compilers that support them: + +@example +/* + * This macro can be used to define new complex type descriptors + * in a platform independent way. + * + * name: Name of the new descriptor is ffi_type_complex_. + * type: The C base type of the complex type. + */ +#define FFI_COMPLEX_TYPEDEF(name, type, ffitype) \ + static ffi_type *ffi_elements_complex_##name [2] = @{ \ + (ffi_type *)(&ffitype), NULL \ + @}; \ + struct struct_align_complex_##name @{ \ + char c; \ + _Complex type x; \ + @}; \ + ffi_type ffi_type_complex_##name = @{ \ + sizeof(_Complex type), \ + offsetof(struct struct_align_complex_##name, x), \ + FFI_TYPE_COMPLEX, \ + (ffi_type **)ffi_elements_complex_##name \ + @} + +/* Define new complex type descriptors using the macro: */ +/* ffi_type_complex_sint */ +FFI_COMPLEX_TYPEDEF(sint, int, ffi_type_sint); +/* ffi_type_complex_uchar */ +FFI_COMPLEX_TYPEDEF(uchar, unsigned char, ffi_type_uint8); +@end example + +The new type descriptors can then be used like one of the built-in +type descriptors in the previous example. + +@node Multiple ABIs +@section Multiple ABIs + +A given platform may provide multiple different ABIs at once. For +instance, the x86 platform has both @samp{stdcall} and @samp{fastcall} +functions. + +@code{libffi} provides some support for this. However, this is +necessarily platform-specific. + +@c FIXME: document the platforms + +@node The Closure API +@section The Closure API + +@code{libffi} also provides a way to write a generic function -- a +function that can accept and decode any combination of arguments. +This can be useful when writing an interpreter, or to provide wrappers +for arbitrary functions. + +This facility is called the @dfn{closure API}. Closures are not +supported on all platforms; you can check the @code{FFI_CLOSURES} +define to determine whether they are supported on the current +platform. +@cindex closures +@cindex closure API +@findex FFI_CLOSURES + +Because closures work by assembling a tiny function at runtime, they +require special allocation on platforms that have a non-executable +heap. Memory management for closures is handled by a pair of +functions: + +@findex ffi_closure_alloc +@defun void *ffi_closure_alloc (size_t @var{size}, void **@var{code}) +Allocate a chunk of memory holding @var{size} bytes. This returns a +pointer to the writable address, and sets *@var{code} to the +corresponding executable address. + +@var{size} should be sufficient to hold a @code{ffi_closure} object. +@end defun + +@findex ffi_closure_free +@defun void ffi_closure_free (void *@var{writable}) +Free memory allocated using @code{ffi_closure_alloc}. The argument is +the writable address that was returned. +@end defun + +Once you have allocated the memory for a closure, you must construct a +@code{ffi_cif} describing the function call. Finally you can prepare +the closure function: + +@findex ffi_prep_closure_loc +@defun ffi_status ffi_prep_closure_loc (ffi_closure *@var{closure}, ffi_cif *@var{cif}, void (*@var{fun}) (ffi_cif *@var{cif}, void *@var{ret}, void **@var{args}, void *@var{user_data}), void *@var{user_data}, void *@var{codeloc}) +Prepare a closure function. The arguments to +@code{ffi_prep_closure_loc} are: + +@table @var +@item closure +The address of a @code{ffi_closure} object; this is the writable +address returned by @code{ffi_closure_alloc}. + +@item cif +The @code{ffi_cif} describing the function parameters. Note that this +object, and the types to which it refers, must be kept alive until the +closure itself is freed. + +@item user_data +An arbitrary datum that is passed, uninterpreted, to your closure +function. + +@item codeloc +The executable address returned by @code{ffi_closure_alloc}. + +@item fun +The function which will be called when the closure is invoked. It is +called with the arguments: + +@table @var +@item cif +The @code{ffi_cif} passed to @code{ffi_prep_closure_loc}. + +@item ret +A pointer to the memory used for the function's return value. + +If the function is declared as returning @code{void}, then this value +is garbage and should not be used. + +Otherwise, @var{fun} must fill the object to which this points, +following the same special promotion behavior as @code{ffi_call}. +That is, in most cases, @var{ret} points to an object of exactly the +size of the type specified when @var{cif} was constructed. However, +integral types narrower than the system register size are widened. In +these cases your program may assume that @var{ret} points to an +@code{ffi_arg} object. + +@item args +A vector of pointers to memory holding the arguments to the function. + +@item user_data +The same @var{user_data} that was passed to +@code{ffi_prep_closure_loc}. +@end table +@end table + +@code{ffi_prep_closure_loc} will return @code{FFI_OK} if everything +went ok, and one of the other @code{ffi_status} values on error. + +After calling @code{ffi_prep_closure_loc}, you can cast @var{codeloc} +to the appropriate pointer-to-function type. +@end defun + +You may see old code referring to @code{ffi_prep_closure}. This +function is deprecated, as it cannot handle the need for separate +writable and executable addresses. + +@node Closure Example +@section Closure Example + +A trivial example that creates a new @code{puts} by binding +@code{fputs} with @code{stdout}. + +@example +#include +#include + +/* Acts like puts with the file given at time of enclosure. */ +void puts_binding(ffi_cif *cif, void *ret, void* args[], + void *stream) +@{ + *(ffi_arg *)ret = fputs(*(char **)args[0], (FILE *)stream); +@} + +typedef int (*puts_t)(char *); + +int main() +@{ + ffi_cif cif; + ffi_type *args[1]; + ffi_closure *closure; + + void *bound_puts; + int rc; + + /* Allocate closure and bound_puts */ + closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts); + + if (closure) + @{ + /* Initialize the argument info vectors */ + args[0] = &ffi_type_pointer; + + /* Initialize the cif */ + if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_sint, args) == FFI_OK) + @{ + /* Initialize the closure, setting stream to stdout */ + if (ffi_prep_closure_loc(closure, &cif, puts_binding, + stdout, bound_puts) == FFI_OK) + @{ + rc = ((puts_t)bound_puts)("Hello World!"); + /* rc now holds the result of the call to fputs */ + @} + @} + @} + + /* Deallocate both closure, and bound_puts */ + ffi_closure_free(closure); + + return 0; +@} + +@end example + +@node Thread Safety +@section Thread Safety + +@code{libffi} is not completely thread-safe. However, many parts are, +and if you follow some simple rules, you can use it safely in a +multi-threaded program. + +@itemize @bullet +@item +@code{ffi_prep_cif} may modify the @code{ffi_type} objects passed to +it. It is best to ensure that only a single thread prepares a given +@code{ffi_cif} at a time. + +@item +On some platforms, @code{ffi_prep_cif} may modify the size and +alignment of some types, depending on the chosen ABI. On these +platforms, if you switch between ABIs, you must ensure that there is +only one call to @code{ffi_prep_cif} at a time. + +Currently the only affected platform is PowerPC and the only affected +type is @code{long double}. +@end itemize + +@node Memory Usage +@chapter Memory Usage + +Note that memory allocated by @code{ffi_closure_alloc} and freed by +@code{ffi_closure_free} does not come from the same general pool of +memory that @code{malloc} and @code{free} use. To accomodate security +settings, @code{libffi} may aquire memory, for example, by mapping +temporary files into multiple places in the address space (once to +write out the closure, a second to execute it). The search follows +this list, using the first that works: + +@itemize @bullet + +@item +A anonymous mapping (i.e. not file-backed) + +@item +@code{memfd_create()}, if the kernel supports it. + +@item +A file created in the directory referenced by the environment variable +@code{LIBFFI_TMPDIR}. + +@item +Likewise for the environment variable @code{TMPDIR}. + +@item +A file created in @code{/tmp}. + +@item +A file created in @code{/var/tmp}. + +@item +A file created in @code{/dev/shm}. + +@item +A file created in the user's home directory (@code{$HOME}). + +@item +A file created in any directory listed in @code{/etc/mtab}. + +@item +A file created in any directory listed in @code{/proc/mounts}. + +@end itemize + +If security settings prohibit using any of these for closures, +@code{ffi_closure_alloc} will fail. + +@node Missing Features +@chapter Missing Features + +@code{libffi} is missing a few features. We welcome patches to add +support for these. + +@itemize @bullet +@item +Variadic closures. + +@item +There is no support for bit fields in structures. + +@item +The ``raw'' API is undocumented. +@c anything else? + +@item +The Go API is undocumented. +@end itemize + +@node Index +@unnumbered Index + +@printindex cp + +@bye diff --git a/deps/libffi/doc/version.texi b/deps/libffi/doc/version.texi new file mode 100644 index 00000000000000..fc180c12dd52e8 --- /dev/null +++ b/deps/libffi/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 2 August 2025 +@set UPDATED-MONTH August 2025 +@set EDITION 3.5.2 +@set VERSION 3.5.2 diff --git a/deps/libffi/generate-configure-headers.py b/deps/libffi/generate-configure-headers.py new file mode 100644 index 00000000000000..17df60ceb6e0c1 --- /dev/null +++ b/deps/libffi/generate-configure-headers.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 + +import os +import sys +import subprocess +import argparse +from pathlib import Path + +def get_host_os(os_name): + """Map GYP OS names to configure host OS.""" + mapping = { + 'linux': 'linux-gnu', + 'mac': 'darwin', + 'win': 'mingw', + 'freebsd': 'freebsd', + } + return mapping.get(os_name, os_name) + +def get_host_arch(os_name, arch): + """Map GYP architecture to configure host architecture.""" + arch_mapping = { + 'x64': 'x86_64', + 'x86': 'i686', + 'arm': 'arm', + 'arm64': 'aarch64', + } + arch_name = arch_mapping.get(arch, arch) + os_name_mapped = get_host_os(os_name) + return f"{arch_name}-pc-{os_name_mapped}" + +def run_command(cmd): + """Run a command and return success status.""" + try: + subprocess.run(cmd, check=True) + return True + except subprocess.CalledProcessError as e: + print(f"Error running command: {' '.join(cmd)}", file=sys.stderr) + print(f"Error: {e}", file=sys.stderr) + return False + +def generate_headers(output_dir, target_arch, os_name, libffi_dir): + """Generate libffi headers using configure script.""" + os.makedirs(output_dir, exist_ok=True) + + # Change to libffi directory + original_dir = os.getcwd() + try: + os.chdir(libffi_dir) + + # Create a temporary build directory + build_dir = os.path.join(output_dir, 'build') + os.makedirs(build_dir, exist_ok=True) + + host_triplet = get_host_arch(os_name, target_arch) + + # Run configure script + configure_path = os.path.join(libffi_dir, 'configure') + configure_cmd = [ + configure_path, + f'--host={host_triplet}', + f'--prefix={build_dir}', + '--disable-shared', + '--enable-static', + ] + + print(f"Running configure with: {' '.join(configure_cmd)}") + + if not run_command(configure_cmd): + return False + + # Copy generated headers to output directory + header_files = ['fficonfig.h', 'ffitarget.h', 'include/ffi.h'] + + for header in header_files: + src_path = os.path.join(libffi_dir, header) + dst_path = os.path.join(output_dir, os.path.basename(header)) + + if os.path.exists(src_path): + with open(src_path, 'r') as src: + with open(dst_path, 'w') as dst: + dst.write(src.read()) + print(f"Generated: {dst_path}") + else: + print(f"Warning: {src_path} not found", file=sys.stderr) + + return True + + finally: + os.chdir(original_dir) + +def main(): + parser = argparse.ArgumentParser(description='Generate libffi headers') + parser.add_argument('--output-dir', required=True, help='Output directory for generated headers') + parser.add_argument('--target-arch', required=True, help='Target architecture (x86, x64, arm, arm64)') + parser.add_argument('--os', required=True, help='Target OS (linux, mac, win, freebsd)') + + args = parser.parse_args() + + # Get the libffi directory (parent of this script) + libffi_dir = os.path.dirname(os.path.abspath(__file__)) + + if generate_headers(args.output_dir, args.target_arch, args.os, libffi_dir): + print("Headers generated successfully") + sys.exit(0) + else: + print("Failed to generate headers", file=sys.stderr) + sys.exit(1) + +if __name__ == '__main__': + main() diff --git a/deps/libffi/generate-darwin-source-and-headers.py b/deps/libffi/generate-darwin-source-and-headers.py new file mode 100755 index 00000000000000..f6e9152846aa9e --- /dev/null +++ b/deps/libffi/generate-darwin-source-and-headers.py @@ -0,0 +1,285 @@ +#!/usr/bin/env python +import subprocess +import os +import errno +import collections +import glob +import argparse + + +class Platform(object): + pass + + +class x86_64_platform(Platform): + arch = 'x86_64' + + prefix = "#ifdef __x86_64__\n\n" + suffix = "\n\n#endif" + src_dir = 'x86' + src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] + + +class arm64_platform(Platform): + arch = 'arm64' + + prefix = "#ifdef __arm64__\n\n" + suffix = "\n\n#endif" + src_dir = 'aarch64' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +class armv7_platform(Platform): + arch = 'armv7' + + prefix = "#ifdef __arm__\n\n" + suffix = "\n\n#endif" + src_dir = 'arm' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +class ios_simulator_x86_64_platform(x86_64_platform): + target = 'x86_64-apple-ios-simulator' + directory = 'darwin_ios' + sdk = 'iphonesimulator' + version_min = '-miphoneos-version-min=7.0' + + +class ios_simulator_arm64_platform(arm64_platform): + target = 'arm64-apple-ios-simulator' + directory = 'darwin_ios' + sdk = 'iphonesimulator' + version_min = '-miphoneos-version-min=7.0' + + +class ios_device_armv7_platform(armv7_platform): + target = 'armv7-apple-ios' + directory = 'darwin_ios' + sdk = 'iphoneos' + version_min = '-miphoneos-version-min=7.0' + + +class ios_device_arm64_platform(arm64_platform): + target = 'arm64-apple-ios' + directory = 'darwin_ios' + sdk = 'iphoneos' + version_min = '-miphoneos-version-min=7.0' + + +class desktop_x86_64_platform(x86_64_platform): + target = 'x86_64-apple-macos' + directory = 'darwin_osx' + sdk = 'macosx' + version_min = '-mmacosx-version-min=10.6' + + +class desktop_arm64_platform(arm64_platform): + target = 'arm64-apple-macos' + directory = 'darwin_osx' + sdk = 'macosx' + version_min = '-mmacosx-version-min=11.0' + + +class tvos_simulator_x86_64_platform(x86_64_platform): + target = 'x86_64-apple-tvos-simulator' + directory = 'darwin_tvos' + sdk = 'appletvsimulator' + version_min = '-mtvos-version-min=9.0' + + +class tvos_simulator_arm64_platform(arm64_platform): + target = 'arm64-apple-tvos-simulator' + directory = 'darwin_tvos' + sdk = 'appletvsimulator' + version_min = '-mtvos-version-min=9.0' + + +class tvos_device_arm64_platform(arm64_platform): + target = 'arm64-apple-tvos' + directory = 'darwin_tvos' + sdk = 'appletvos' + version_min = '-mtvos-version-min=9.0' + + +class watchos_simulator_x86_64_platform(x86_64_platform): + target = 'x86_64-apple-watchos-simulator' + directory = 'darwin_watchos' + sdk = 'watchsimulator' + version_min = '-mwatchos-version-min=4.0' + + +class watchos_simulator_arm64_platform(arm64_platform): + target = 'arm64-apple-watchos-simulator' + directory = 'darwin_watchos' + sdk = 'watchsimulator' + version_min = '-mwatchos-version-min=4.0' + + +class watchos_device_armv7k_platform(armv7_platform): + target = 'armv7k-apple-watchos' + directory = 'darwin_watchos' + sdk = 'watchos' + arch = 'armv7k' + version_min = '-mwatchos-version-min=4.0' + + +class watchos_device_arm64_32_platform(arm64_platform): + target = 'arm64_32-apple-watchos' + directory = 'darwin_watchos' + sdk = 'watchos' + arch = 'arm64_32' + version_min = '-mwatchos-version-min=4.0' + + +def mkdir_p(path): + try: + os.makedirs(path) + except OSError as exc: # Python >2.5 + if exc.errno != errno.EEXIST: + raise + + +def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''): + mkdir_p(dst_dir) + out_filename = filename + + if file_suffix: + if filename in ['internal64.h', 'asmnames.h', 'internal.h']: + out_filename = filename + else: + split_name = os.path.splitext(filename) + out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1]) + + with open(os.path.join(src_dir, filename)) as in_file: + with open(os.path.join(dst_dir, out_filename), 'w') as out_file: + if prefix: + out_file.write(prefix) + + out_file.write(in_file.read()) + + if suffix: + out_file.write(suffix) + + +def list_files(src_dir, pattern=None, filelist=None): + if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern)) + for file in filelist: + yield os.path.basename(file) + + +def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None): + for filename in list_files(src_dir, pattern=pattern, filelist=filelist): + move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix) + + +def copy_src_platform_files(platform): + src_dir = os.path.join('src', platform.src_dir) + dst_dir = os.path.join(platform.directory, 'src', platform.src_dir) + copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix) + + +def build_target(platform, platform_headers): + def xcrun_cmd(cmd): + return 'xcrun -sdk %s %s -target %s' % (platform.sdk, cmd, platform.target) + + tag='%s-%s' % (platform.sdk, platform.arch) + build_dir = 'build_%s' % tag + mkdir_p(build_dir) + env = dict(CC=xcrun_cmd('clang'), + LD=xcrun_cmd('ld'), + CFLAGS='%s' % (platform.version_min)) + working_dir = os.getcwd() + try: + os.chdir(build_dir) + subprocess.check_call( + [ + "../configure", + f"--host={platform.target}", + ] + ( + [] if platform.sdk == "macosx" else [f"--build={os.uname().machine}-apple-darwin"] + ), + env=env + ) + finally: + os.chdir(working_dir) + + for src_dir in [build_dir, os.path.join(build_dir, 'include')]: + copy_files(src_dir, + os.path.join(platform.directory, 'include'), + pattern='*.h', + file_suffix=platform.arch, + prefix=platform.prefix, + suffix=platform.suffix) + + for filename in list_files(src_dir, pattern='*.h'): + platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix)) + + +def generate_source_and_headers( + generate_osx=True, + generate_ios=True, + generate_tvos=True, + generate_watchos=True, +): + copy_files('src', 'darwin_common/src', pattern='*.c') + copy_files('include', 'darwin_common/include', pattern='*.h') + + if generate_ios: + copy_src_platform_files(ios_simulator_x86_64_platform) + copy_src_platform_files(ios_simulator_arm64_platform) + copy_src_platform_files(ios_device_armv7_platform) + copy_src_platform_files(ios_device_arm64_platform) + if generate_osx: + copy_src_platform_files(desktop_x86_64_platform) + copy_src_platform_files(desktop_arm64_platform) + if generate_tvos: + copy_src_platform_files(tvos_simulator_x86_64_platform) + copy_src_platform_files(tvos_simulator_arm64_platform) + copy_src_platform_files(tvos_device_arm64_platform) + if generate_watchos: + copy_src_platform_files(watchos_simulator_x86_64_platform) + copy_src_platform_files(watchos_simulator_arm64_platform) + copy_src_platform_files(watchos_device_armv7k_platform) + copy_src_platform_files(watchos_device_arm64_32_platform) + + platform_headers = collections.defaultdict(set) + + if generate_ios: + build_target(ios_simulator_x86_64_platform, platform_headers) + build_target(ios_simulator_arm64_platform, platform_headers) + build_target(ios_device_armv7_platform, platform_headers) + build_target(ios_device_arm64_platform, platform_headers) + if generate_osx: + build_target(desktop_x86_64_platform, platform_headers) + build_target(desktop_arm64_platform, platform_headers) + if generate_tvos: + build_target(tvos_simulator_x86_64_platform, platform_headers) + build_target(tvos_simulator_arm64_platform, platform_headers) + build_target(tvos_device_arm64_platform, platform_headers) + if generate_watchos: + build_target(watchos_simulator_x86_64_platform, platform_headers) + build_target(watchos_simulator_arm64_platform, platform_headers) + build_target(watchos_device_armv7k_platform, platform_headers) + build_target(watchos_device_arm64_32_platform, platform_headers) + + mkdir_p('darwin_common/include') + for header_name, tag_tuples in platform_headers.items(): + basename, suffix = os.path.splitext(header_name) + with open(os.path.join('darwin_common/include', header_name), 'w') as header: + for tag_tuple in tag_tuples: + header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2])) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--only-ios', action='store_true', default=False) + parser.add_argument('--only-osx', action='store_true', default=False) + parser.add_argument('--only-tvos', action='store_true', default=False) + parser.add_argument('--only-watchos', action='store_true', default=False) + args = parser.parse_args() + + generate_source_and_headers( + generate_osx=not args.only_ios and not args.only_tvos and not args.only_watchos, + generate_ios=not args.only_osx and not args.only_tvos and not args.only_watchos, + generate_tvos=not args.only_ios and not args.only_osx and not args.only_watchos, + generate_watchos=not args.only_ios and not args.only_osx and not args.only_tvos, + ) diff --git a/deps/libffi/generate-headers.py b/deps/libffi/generate-headers.py new file mode 100644 index 00000000000000..30a460bb27869c --- /dev/null +++ b/deps/libffi/generate-headers.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 + +import argparse +import os +import platform +import sys +from pathlib import Path + + +LIBFFI_VERSION = '3.5.2' +LIBFFI_VERSION_NUMBER = '30502' + +TARGETS = { + ('freebsd', 'arm'): ('ARM', 'arm'), + ('freebsd', 'arm64'): ('AARCH64', 'aarch64'), + ('freebsd', 'x64'): ('X86_64', 'x86'), + ('linux', 'arm'): ('ARM', 'arm'), + ('linux', 'arm64'): ('AARCH64', 'aarch64'), + ('linux', 'x64'): ('X86_64', 'x86'), + ('mac', 'arm64'): ('AARCH64', 'aarch64'), + ('mac', 'x64'): ('X86_64', 'x86'), + ('win', 'arm'): ('ARM_WIN32', 'arm'), + ('win', 'arm64'): ('ARM_WIN64', 'aarch64'), + ('win', 'x64'): ('X86_WIN64', 'x86'), +} + + +def get_target(os_name, target_arch): + try: + return TARGETS[(os_name, target_arch)] + except KeyError as exc: + supported = ', '.join( + f'{os_name}/{arch}' for os_name, arch in sorted(TARGETS)) + raise ValueError( + f'Unsupported libffi target {os_name}/{target_arch}. ' + f'Supported targets: {supported}.') from exc + + +def has_long_double(os_name, target_arch): + if os_name == 'win': + return '0' + + if os_name == 'mac' and target_arch == 'arm64': + return '0' + + if target_arch == 'arm': + return '0' + + return '1' + + +def uses_exec_trampoline_table(os_name, target_arch): + return os_name == 'mac' and target_arch in ('arm', 'arm64') + + +def render_ffi_header(base_dir, os_name, target_arch, target): + template = (base_dir / 'include' / 'ffi.h.in').read_text(encoding='utf-8') + replacements = { + '@FFI_EXEC_TRAMPOLINE_TABLE@': + '1' if uses_exec_trampoline_table(os_name, target_arch) else '0', + '@FFI_VERSION_NUMBER@': LIBFFI_VERSION_NUMBER, + '@FFI_VERSION_STRING@': LIBFFI_VERSION, + '@HAVE_LONG_DOUBLE@': has_long_double(os_name, target_arch), + '@TARGET@': target, + '@VERSION@': LIBFFI_VERSION, + } + + for source, replacement in replacements.items(): + template = template.replace(source, replacement) + + return template + + +def render_fficonfig(os_name, target_arch): + lines = [ + '/* Auto-generated by generate-headers.py. */', + '#ifndef LIBFFI_FFICONFIG_H_', + '#define LIBFFI_FFICONFIG_H_', + '', + '#define HAVE_ALLOCA 1', + '#define HAVE_MEMCPY 1', + '#define HAVE_MEMORY_H 1', + '#define HAVE_STDINT_H 1', + '#define HAVE_STRING_H 1', + '#define STDC_HEADERS 1', + ] + + if os_name != 'win': + lines.extend([ + '#define HAVE_AS_CFI_PSEUDO_OP 1', + '#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1', + '#define HAVE_MKOSTEMP 1', + '#define HAVE_RO_EH_FRAME 1', + '#define EH_FRAME_FLAGS "a"', + ]) + + if target_arch in ('x64', 'x86') and os_name != 'win': + lines.append('#define HAVE_AS_X86_PCREL 1') + + if uses_exec_trampoline_table(os_name, target_arch): + lines.append('#define FFI_EXEC_TRAMPOLINE_TABLE 1') + elif os_name in ('freebsd', 'mac'): + lines.append('#define FFI_MMAP_EXEC_WRIT 1') + + if os_name == 'linux': + lines.extend([ + '#define HAVE_DLFCN_H 1', + '#define HAVE_MMAP 1', + '#define HAVE_MMAP_ANON 1', + '#define HAVE_MMAP_FILE 1', + '#define HAVE_SYS_MMAN_H 1', + '#define HAVE_UNISTD_H 1', + ]) + elif os_name in ('freebsd', 'mac'): + lines.extend([ + '#define HAVE_DLFCN_H 1', + '#define HAVE_MMAP 1', + '#define HAVE_MMAP_ANON 1', + '#define HAVE_MMAP_DEV_ZERO 1', + '#define HAVE_MMAP_FILE 1', + '#define HAVE_SYS_MMAN_H 1', + '#define HAVE_UNISTD_H 1', + ]) + + if os_name == 'mac' and target_arch == 'arm64': + lines.extend([ + '#if defined(__arm64e__)', + '#define HAVE_ARM64E_PTRAUTH 1', + '#endif', + ]) + + lines.extend([ + '', + '#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE', + '#ifdef LIBFFI_ASM', + '#ifdef __APPLE__', + '#define FFI_HIDDEN(name) .private_extern name', + '#else', + '#define FFI_HIDDEN(name) .hidden name', + '#endif', + '#else', + '#define FFI_HIDDEN __attribute__ ((visibility ("hidden")))', + '#endif', + '#else', + '#ifdef LIBFFI_ASM', + '#define FFI_HIDDEN(name)', + '#else', + '#define FFI_HIDDEN', + '#endif', + '#endif', + '', + '#endif /* LIBFFI_FFICONFIG_H_ */', + '', + ]) + + return '\n'.join(lines) + + +def generate_headers(output_dir, target_arch, os_name): + base_dir = Path(__file__).resolve().parent + output_dir = Path(str(output_dir).strip().strip('"')) + output_dir.mkdir(parents=True, exist_ok=True) + + target, target_dir = get_target(os_name, target_arch) + ffitarget_src = base_dir / 'src' / target_dir / 'ffitarget.h' + if not ffitarget_src.exists(): + raise FileNotFoundError(f'Missing libffi target header: {ffitarget_src}') + + (output_dir / 'ffi.h').write_text( + render_ffi_header(base_dir, os_name, target_arch, target), + encoding='utf-8') + (output_dir / 'fficonfig.h').write_text( + render_fficonfig(os_name, target_arch), + encoding='utf-8') + (output_dir / 'ffitarget.h').write_text( + ffitarget_src.read_text(encoding='utf-8'), + encoding='utf-8') + + +def detect_os_name(): + if sys.platform.startswith('win'): + return 'win' + if sys.platform == 'darwin': + return 'mac' + if sys.platform.startswith('linux'): + return 'linux' + if sys.platform.startswith('freebsd'): + return 'freebsd' + raise ValueError(f'Unsupported host platform {sys.platform!r}') + + +def detect_target_arch(): + candidates = [ + os.environ.get('TARGET_ARCH'), + os.environ.get('npm_config_arch'), + os.environ.get('VSCMD_ARG_TGT_ARCH'), + os.environ.get('Platform'), + os.environ.get('PROCESSOR_ARCHITECTURE'), + platform.machine(), + ] + + aliases = { + 'amd64': 'x64', + 'x86_64': 'x64', + 'x64': 'x64', + 'win32': 'x64', + 'i386': 'x86', + 'i686': 'x86', + 'x86': 'x86', + 'arm64': 'arm64', + 'aarch64': 'arm64', + 'arm': 'arm', + } + + for candidate in candidates: + if not candidate: + continue + normalized = aliases.get(candidate.lower()) + if normalized is not None: + return normalized + + raise ValueError('Unable to determine target architecture for libffi headers') + + +def main(argv=None): + parser = argparse.ArgumentParser(description='Generate libffi headers') + parser.add_argument('--output-dir', required=True) + parser.add_argument('--target-arch') + parser.add_argument('--os') + args = parser.parse_args(argv) + + try: + generate_headers(args.output_dir, + args.target_arch or detect_target_arch(), + args.os or detect_os_name()) + except Exception as exc: # pylint: disable=broad-except + print(exc, file=sys.stderr) + return 1 + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/deps/libffi/include/Makefile.am b/deps/libffi/include/Makefile.am new file mode 100644 index 00000000000000..5f0d4066f4a97a --- /dev/null +++ b/deps/libffi/include/Makefile.am @@ -0,0 +1,9 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS=foreign + +DISTCLEANFILES=ffitarget.h +noinst_HEADERS=ffi_common.h ffi_cfi.h tramp.h +EXTRA_DIST=ffi.h.in + +nodist_include_HEADERS = ffi.h ffitarget.h diff --git a/deps/libffi/include/ffi.h.in b/deps/libffi/include/ffi.h.in new file mode 100644 index 00000000000000..6ce7ac55ec780c --- /dev/null +++ b/deps/libffi/include/ffi.h.in @@ -0,0 +1,536 @@ +/* -----------------------------------------------------------------*-C-*- + libffi @VERSION@ + - Copyright (c) 2011, 2014, 2019, 2021, 2022, 2024, 2025 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + 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. + + ----------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------- + Most of the API is documented in doc/libffi.texi. + + The raw API is designed to bypass some of the argument packing and + unpacking on architectures for which it can be avoided. Routines + are provided to emulate the raw API if the underlying platform + doesn't allow faster implementation. + + More details on the raw API can be found in: + + http://gcc.gnu.org/ml/java/1999-q3/msg00138.html + + and + + http://gcc.gnu.org/ml/java/1999-q3/msg00174.html + -------------------------------------------------------------------- */ + +#ifndef LIBFFI_H +#define LIBFFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Specify which architecture libffi is configured for. */ +#ifndef @TARGET@ +#define @TARGET@ +#endif + +/* ---- System configuration information --------------------------------- */ + +/* If these change, update src/mips/ffitarget.h. */ +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_INT 1 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#if @HAVE_LONG_DOUBLE@ +#define FFI_TYPE_LONGDOUBLE 4 +#else +#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +#endif +#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_UINT32 9 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_UINT64 11 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_STRUCT 13 +#define FFI_TYPE_POINTER 14 +#define FFI_TYPE_COMPLEX 15 + +/* This should always refer to the last type code (for sanity checks). */ +#define FFI_TYPE_LAST FFI_TYPE_COMPLEX + +#include + +#ifndef LIBFFI_ASM + +#if defined(_MSC_VER) && !defined(__clang__) +#define __attribute__(X) +#endif + +#include +#include + +/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). + But we can find it either under the correct ANSI name, or under GNU + C's internal name. */ + +#define FFI_64_BIT_MAX 9223372036854775807 + +#ifdef LONG_LONG_MAX +# define FFI_LONG_LONG_MAX LONG_LONG_MAX +#else +# ifdef LLONG_MAX +# define FFI_LONG_LONG_MAX LLONG_MAX +# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif /* _AIX52 or newer */ +# else +# ifdef __GNUC__ +# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ +# endif +# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ +# ifndef __PPC64__ +# if defined (__IBMC__) || defined (__IBMCPP__) +# define FFI_LONG_LONG_MAX LONGLONG_MAX +# endif +# endif /* __PPC64__ */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif +# endif +#endif + +/* The closure code assumes that this works on pointers, i.e. a size_t + can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +/* Need minimal decorations for DLLs to work on Windows. GCC has + autoimport and autoexport. Always mark externally visible symbols + as dllimport for MSVC clients, even if it means an extra indirection + when using the static version of the library. + Besides, as a workaround, they can define FFI_BUILDING if they + *know* they are going to link with the static library. */ +#if defined _MSC_VER && !defined(FFI_STATIC_BUILD) +# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ +# define FFI_API __declspec(dllexport) +# else /* Importing libffi.DLL */ +# define FFI_API __declspec(dllimport) +# endif +#else +# define FFI_API +#endif + +/* The externally visible type declarations also need the MSVC DLL + decorations, or they will not be exported from the object file. */ +#if defined LIBFFI_HIDE_BASIC_TYPES +# define FFI_EXTERN FFI_API +#else +# define FFI_EXTERN extern FFI_API +#endif + +#ifndef LIBFFI_HIDE_BASIC_TYPES +#if SCHAR_MAX == 127 +# define ffi_type_uchar ffi_type_uint8 +# define ffi_type_schar ffi_type_sint8 +#else + #error "char size not supported" +#endif + +#if SHRT_MAX == 32767 +# define ffi_type_ushort ffi_type_uint16 +# define ffi_type_sshort ffi_type_sint16 +#elif SHRT_MAX == 2147483647 +# define ffi_type_ushort ffi_type_uint32 +# define ffi_type_sshort ffi_type_sint32 +#else + #error "short size not supported" +#endif + +#if INT_MAX == 32767 +# define ffi_type_uint ffi_type_uint16 +# define ffi_type_sint ffi_type_sint16 +#elif INT_MAX == 2147483647 +# define ffi_type_uint ffi_type_uint32 +# define ffi_type_sint ffi_type_sint32 +#elif INT_MAX == 9223372036854775807 +# define ffi_type_uint ffi_type_uint64 +# define ffi_type_sint ffi_type_sint64 +#else + #error "int size not supported" +#endif + +#if LONG_MAX == 2147483647 +# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX + #error "no 64-bit data type supported" +# endif +#elif LONG_MAX != FFI_64_BIT_MAX + #error "long size not supported" +#endif + +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == FFI_64_BIT_MAX +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif + +/* These are defined in types.c. */ +FFI_EXTERN ffi_type ffi_type_void; +FFI_EXTERN ffi_type ffi_type_uint8; +FFI_EXTERN ffi_type ffi_type_sint8; +FFI_EXTERN ffi_type ffi_type_uint16; +FFI_EXTERN ffi_type ffi_type_sint16; +FFI_EXTERN ffi_type ffi_type_uint32; +FFI_EXTERN ffi_type ffi_type_sint32; +FFI_EXTERN ffi_type ffi_type_uint64; +FFI_EXTERN ffi_type ffi_type_sint64; +FFI_EXTERN ffi_type ffi_type_float; +FFI_EXTERN ffi_type ffi_type_double; +FFI_EXTERN ffi_type ffi_type_pointer; +FFI_EXTERN ffi_type ffi_type_longdouble; + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_EXTERN ffi_type ffi_type_complex_float; +FFI_EXTERN ffi_type ffi_type_complex_double; +FFI_EXTERN ffi_type ffi_type_complex_longdouble; +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ + +typedef enum { + FFI_OK = 0, + FFI_BAD_TYPEDEF, + FFI_BAD_ABI, + FFI_BAD_ARGTYPE +} ffi_status; + +typedef struct { + ffi_abi abi; + unsigned nargs; + ffi_type **arg_types; + ffi_type *rtype; + unsigned bytes; + unsigned flags; +#ifdef FFI_EXTRA_CIF_FIELDS + FFI_EXTRA_CIF_FIELDS; +#endif +} ffi_cif; + +/* ---- Definitions for the raw API -------------------------------------- */ + +#ifndef FFI_SIZEOF_ARG +# if LONG_MAX == 2147483647 +# define FFI_SIZEOF_ARG 4 +# elif LONG_MAX == FFI_64_BIT_MAX +# define FFI_SIZEOF_ARG 8 +# endif +#endif + +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + +typedef union { + ffi_sarg sint; + ffi_arg uint; + float flt; + char data[FFI_SIZEOF_ARG]; + void* ptr; +} ffi_raw; + +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + +FFI_API +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); + +FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +FFI_API size_t ffi_raw_size (ffi_cif *cif); + +/* This is analogous to the raw API, except it uses Java parameter + packing, even on 64-bit machines. I.e. on 64-bit machines longs + and doubles are followed by an empty 64-bit word. */ + +#if !FFI_NATIVE_RAW_API +FFI_API +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue) __attribute__((deprecated)); +#endif + +FFI_API +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated)); +FFI_API +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated)); +FFI_API +size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated)); + +/* ---- Version API ------------------------------------------------------ */ + +#define FFI_VERSION_STRING "@FFI_VERSION_STRING@" +#define FFI_VERSION_NUMBER @FFI_VERSION_NUMBER@ + +#ifndef LIBFFI_ASM +/* Return a version string. */ +FFI_API const char *ffi_get_version (void); + +/* Return the version as an unsigned long value: (x * 10000 + y * 100 + z) */ +FFI_API unsigned long ffi_get_version_number (void); +#endif + +/* ---- Internals API ---------------------------------------------------- */ + +FFI_API unsigned int ffi_get_default_abi (void); +FFI_API size_t ffi_get_closure_size (void); + +/* ---- Definitions for closures ----------------------------------------- */ + +#if FFI_CLOSURES + +#ifdef _MSC_VER +__declspec(align(8)) +#endif +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + union { + char tramp[FFI_TRAMPOLINE_SIZE]; + void *ftramp; + }; +#endif + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; +#if defined(_MSC_VER) && defined(_M_IX86) + void *padding; +#endif +} ffi_closure +#ifdef __GNUC__ + __attribute__((aligned (8))) +#endif + ; + +#ifndef __GNUC__ +# ifdef __sgi +# pragma pack 0 +# endif +#endif + +FFI_API void *ffi_closure_alloc (size_t size, void **code); +FFI_API void ffi_closure_free (void *); + +FFI_API ffi_status +ffi_prep_closure (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) + __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) +#elif defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((deprecated)) +#endif + ; + +FFI_API ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc); + +#ifdef __sgi +# pragma pack 8 +#endif +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_raw*,void*); + void *user_data; + +} ffi_raw_closure; + +typedef struct { +#if @FFI_EXEC_TRAMPOLINE_TABLE@ + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + +FFI_API ffi_status +ffi_prep_raw_closure (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +#if !FFI_NATIVE_RAW_API +FFI_API ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data) __attribute__((deprecated)); + +FFI_API ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc) __attribute__((deprecated)); +#endif + +#endif /* FFI_CLOSURES */ + +#ifdef FFI_GO_CLOSURES + +typedef struct { + void *tramp; + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); +} ffi_go_closure; + +FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*)); + +FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); + +#endif /* FFI_GO_CLOSURES */ + +/* ---- Public interface definition -------------------------------------- */ + +FFI_API +ffi_status ffi_prep_cif(ffi_cif *cif, + ffi_abi abi, + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + size_t *offsets); + +/* Convert between closure and function pointers. */ +#if defined(PA_LINUX) || defined(PA_HPUX) +#define FFI_FN(f) ((void (*)(void))((unsigned int)(f) | 2)) +#define FFI_CL(f) ((void *)((unsigned int)(f) & ~3)) +#else +#define FFI_FN(f) ((void (*)(void))f) +#define FFI_CL(f) ((void *)(f)) +#endif + +/* ---- Definitions shared with assembly code ---------------------------- */ + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/libffi/include/ffi_cfi.h b/deps/libffi/include/ffi_cfi.h new file mode 100644 index 00000000000000..8565663244c0f8 --- /dev/null +++ b/deps/libffi/include/ffi_cfi.h @@ -0,0 +1,78 @@ +/* ----------------------------------------------------------------------- + ffi_cfi.h - Copyright (c) 2014 Red Hat, Inc. + + Conditionally assemble cfi directives. Only necessary for building libffi. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef FFI_CFI_H +#define FFI_CFI_H + +#ifdef HAVE_AS_CFI_PSEUDO_OP + +# define cfi_startproc .cfi_startproc +# define cfi_endproc .cfi_endproc +# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off +# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg +# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off +# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off +# define cfi_offset(reg, off) .cfi_offset reg, off +# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off +# define cfi_register(r1, r2) .cfi_register r1, r2 +# define cfi_return_column(reg) .cfi_return_column reg +# define cfi_restore(reg) .cfi_restore reg +# define cfi_same_value(reg) .cfi_same_value reg +# define cfi_undefined(reg) .cfi_undefined reg +# define cfi_remember_state .cfi_remember_state +# define cfi_restore_state .cfi_restore_state +# define cfi_window_save .cfi_window_save +# define cfi_personality(enc, exp) .cfi_personality enc, exp +# define cfi_lsda(enc, exp) .cfi_lsda enc, exp +# define cfi_escape(...) .cfi_escape __VA_ARGS__ +# define cfi_window_save .cfi_window_save + +#else + +# define cfi_startproc +# define cfi_endproc +# define cfi_def_cfa(reg, off) +# define cfi_def_cfa_register(reg) +# define cfi_def_cfa_offset(off) +# define cfi_adjust_cfa_offset(off) +# define cfi_offset(reg, off) +# define cfi_rel_offset(reg, off) +# define cfi_register(r1, r2) +# define cfi_return_column(reg) +# define cfi_restore(reg) +# define cfi_same_value(reg) +# define cfi_undefined(reg) +# define cfi_remember_state +# define cfi_restore_state +# define cfi_window_save +# define cfi_personality(enc, exp) +# define cfi_lsda(enc, exp) +# define cfi_escape(...) +# define cfi_window_save + +#endif /* HAVE_AS_CFI_PSEUDO_OP */ +#endif /* FFI_CFI_H */ diff --git a/deps/libffi/include/ffi_common.h b/deps/libffi/include/ffi_common.h new file mode 100644 index 00000000000000..e4ed2287e580a5 --- /dev/null +++ b/deps/libffi/include/ffi_common.h @@ -0,0 +1,201 @@ +/* ----------------------------------------------------------------------- + ffi_common.h - Copyright (C) 2011, 2012, 2013 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc + Copyright (c) 1996 Red Hat, Inc. + + Common internal definitions and macros. Only necessary for building + libffi. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef FFI_COMMON_H +#define FFI_COMMON_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Do not move this. Some versions of AIX are very picky about where + this is positioned. */ +#ifdef __GNUC__ +# if HAVE_ALLOCA_H +# include +# else + /* mingw64 defines this already in malloc.h. */ +# ifndef alloca +# define alloca __builtin_alloca +# endif +# endif +# define MAYBE_UNUSED __attribute__((__unused__)) +# define NORETURN __attribute__((__noreturn__)) +#else +# define MAYBE_UNUSED +# define NORETURN +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX +# pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +# ifdef _MSC_VER +# define alloca _alloca +# else +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +/* Check for the existence of memcpy. */ +#if STDC_HEADERS +# include +#else +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(FFI_DEBUG) +#include +#endif + +#ifndef __SANITIZE_ADDRESS__ +# ifdef __clang__ +# if __has_feature(address_sanitizer) +# define FFI_ASAN +# endif +# endif +#endif +#ifdef __SANITIZE_ADDRESS__ +#define FFI_ASAN +#endif + +#ifdef FFI_ASAN +#define FFI_ASAN_NO_SANITIZE __attribute__((no_sanitize_address)) +#else +#define FFI_ASAN_NO_SANITIZE +#endif + +#ifdef FFI_DEBUG +NORETURN void ffi_assert(const char *expr, const char *file, int line); +void ffi_stop_here(void); +void ffi_type_test(ffi_type *a, const char *file, int line); + +#define FFI_ASSERT(x) ((x) ? (void)0 : ffi_assert(#x, __FILE__,__LINE__)) +#define FFI_ASSERT_AT(x, f, l) ((x) ? 0 : ffi_assert(#x, (f), (l))) +#define FFI_ASSERT_VALID_TYPE(x) ffi_type_test (x, __FILE__, __LINE__) +#else +#define FFI_ASSERT(x) +#define FFI_ASSERT_AT(x, f, l) +#define FFI_ASSERT_VALID_TYPE(x) +#endif + +/* v cast to size_t and aligned up to a multiple of a */ +#define FFI_ALIGN(v, a) (((((size_t) (v))-1) | ((a)-1))+1) +/* v cast to size_t and aligned down to a multiple of a */ +#define FFI_ALIGN_DOWN(v, a) (((size_t) (v)) & -a) + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif); +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, unsigned int ntotalargs); + + +#if HAVE_LONG_DOUBLE_VARIANT +/* Used to adjust size/alignment of ffi types. */ +void ffi_prep_types (ffi_abi abi); +#endif + +/* Used internally, but overridden by some architectures */ +ffi_status ffi_prep_cif_core(ffi_cif *cif, + ffi_abi abi, + unsigned int isvariadic, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +/* Translate a data pointer to a code pointer. Needed for closures on + some targets. */ +void *ffi_data_to_code_pointer (void *data) FFI_HIDDEN; + +/* The arch code calls this to determine if a given closure has a + static trampoline. */ +int ffi_tramp_is_present (void *closure) FFI_HIDDEN; + +/* Return a file descriptor of a temporary zero-sized file in a + writable and executable filesystem. */ +int open_temp_exec_file(void) FFI_HIDDEN; + +/* Extended cif, used in callback from assembly routine */ +typedef struct +{ + ffi_cif *cif; + void *rvalue; + void **avalue; +} extended_cif; + +/* Terse sized type definitions. */ +#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C) +typedef unsigned char UINT8; +typedef signed char SINT8; +typedef unsigned short UINT16; +typedef signed short SINT16; +typedef unsigned int UINT32; +typedef signed int SINT32; +# ifdef _MSC_VER +typedef unsigned __int64 UINT64; +typedef signed __int64 SINT64; +# else +# include +typedef uint64_t UINT64; +typedef int64_t SINT64; +# endif +#else +typedef unsigned int UINT8 __attribute__((__mode__(__QI__))); +typedef signed int SINT8 __attribute__((__mode__(__QI__))); +typedef unsigned int UINT16 __attribute__((__mode__(__HI__))); +typedef signed int SINT16 __attribute__((__mode__(__HI__))); +typedef unsigned int UINT32 __attribute__((__mode__(__SI__))); +typedef signed int SINT32 __attribute__((__mode__(__SI__))); +typedef unsigned int UINT64 __attribute__((__mode__(__DI__))); +typedef signed int SINT64 __attribute__((__mode__(__DI__))); +#endif + +typedef float FLOAT32; + +#ifndef __GNUC__ +#define __builtin_expect(x, expected_value) (x) +#endif +#define LIKELY(x) __builtin_expect(!!(x),1) +#define UNLIKELY(x) __builtin_expect((x)!=0,0) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/libffi/include/tramp.h b/deps/libffi/include/tramp.h new file mode 100644 index 00000000000000..e14e463e83a6e0 --- /dev/null +++ b/deps/libffi/include/tramp.h @@ -0,0 +1,45 @@ +/* ----------------------------------------------------------------------- + ffi_tramp.h - Copyright (C) 2021 Microsoft, Inc. + + Static trampoline definitions. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef FFI_TRAMP_H +#define FFI_TRAMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +int ffi_tramp_is_supported(void); +void *ffi_tramp_alloc (int flags); +void ffi_tramp_set_parms (void *tramp, void *data, void *code); +void *ffi_tramp_get_addr (void *tramp); +void ffi_tramp_free (void *tramp); + +#ifdef __cplusplus +} +#endif + +#endif /* FFI_TRAMP_H */ diff --git a/deps/libffi/libffi.gyp b/deps/libffi/libffi.gyp new file mode 100644 index 00000000000000..cc83695f45b6ab --- /dev/null +++ b/deps/libffi/libffi.gyp @@ -0,0 +1,232 @@ +{ + 'variables': { + 'libffi_sources': [ + 'src/closures.c', + 'src/debug.c', + 'src/java_raw_api.c', + 'src/prep_cif.c', + 'src/raw_api.c', + 'src/tramp.c', + 'src/types.c', + ], + 'libffi_defines%': [], + 'libffi_arch_sources%': [], + }, + 'conditions': [ + ['OS == "win"', { + 'conditions': [ + ['target_arch == "x64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/x86/ffiw64.c', + ], + }, + }], + ['target_arch == "arm"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/arm/ffi.c', + 'src/arm/sysv_msvc_arm32.S', + ], + }, + }], + ['target_arch == "arm64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/aarch64/ffi.c', + ], + }, + }], + ], + }], + ['OS == "linux" or OS == "freebsd"', { + 'conditions': [ + ['target_arch == "x64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/x86/ffiw64.c', + 'src/x86/ffi64.c', + 'src/x86/unix64.S', + 'src/x86/win64.S', + ], + }, + }], + ['target_arch == "arm"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/arm/ffi.c', + 'src/arm/sysv.S', + ], + }, + }], + ['target_arch == "arm64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/aarch64/ffi.c', + 'src/aarch64/sysv.S', + ], + }, + }], + ], + }], + ['OS == "mac"', { + 'conditions': [ + ['target_arch == "x64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/x86/ffiw64.c', + 'src/x86/ffi64.c', + 'src/x86/unix64.S', + 'src/x86/win64.S', + ], + }, + }], + ['target_arch == "arm64"', { + 'variables': { + 'libffi_arch_sources': [ + 'src/aarch64/ffi.c', + 'src/aarch64/sysv.S', + ], + }, + }], + ], + }], + ], + 'targets': [ + { + 'target_name': 'libffi', + 'type': 'static_library', + 'hard_dependency': 1, + 'cflags': ['-fvisibility=hidden'], + 'xcode_settings': { + 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', + }, + 'defines': [ + 'FFI_STATIC_BUILD', + '<@(libffi_defines)', + ], + 'include_dirs': [ + 'include', + '<(SHARED_INTERMEDIATE_DIR)/libffi', + ], + 'sources': [ + '<@(libffi_sources)', + '<@(libffi_arch_sources)', + ], + 'actions': [ + { + 'action_name': 'generate_libffi_headers', + 'inputs': [ + 'generate-headers.py', + 'include/ffi.h.in', + 'src/aarch64/ffitarget.h', + 'src/arm/ffitarget.h', + 'src/x86/ffitarget.h', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/libffi/ffi.h', + '<(SHARED_INTERMEDIATE_DIR)/libffi/fficonfig.h', + '<(SHARED_INTERMEDIATE_DIR)/libffi/ffitarget.h', + ], + 'action': [ + '<(python)', + 'generate-headers.py', + '--output-dir', + '<(SHARED_INTERMEDIATE_DIR)/libffi', + '--target-arch', + '<(target_arch)', + '--os', + '<(OS)', + ], + }, + ], + 'conditions': [ + ['OS == "win" and target_arch == "x64"', { + 'actions': [ + { + 'action_name': 'preprocess_win64_intel_asm', + 'process_outputs_as_sources': 1, + 'inputs': [ + 'preprocess_asm.py', + 'include/ffi_cfi.h', + 'src/x86/asmnames.h', + 'src/x86/win64_intel.S', + '<(SHARED_INTERMEDIATE_DIR)/libffi/ffi.h', + '<(SHARED_INTERMEDIATE_DIR)/libffi/fficonfig.h', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/win64_intel.asm', + ], + 'action': [ + '<(python)', + 'preprocess_asm.py', + '--input', + 'src/x86/win64_intel.S', + '--output', + '<@(_outputs)', + '--include-dir', + 'include', + '--include-dir', + 'src/x86', + '--include-dir', + '<(SHARED_INTERMEDIATE_DIR)/libffi', + '--define', + 'FFI_STATIC_BUILD', + ], + }, + ], + }], + ['OS == "win" and target_arch == "arm64"', { + # Link the prebuilt object file directly + 'libraries': [ + '<(INTERMEDIATE_DIR)/win64_armasm.obj', + ], + 'actions': [ + { + 'action_name': 'assemble_win64_arm_asm', + # Don't use process_outputs_as_sources - we link the .obj directly + 'inputs': [ + 'preprocess_asm.py', + 'include/ffi_cfi.h', + 'src/aarch64/internal.h', + 'src/aarch64/win64_armasm.S', + '<(SHARED_INTERMEDIATE_DIR)/libffi/ffi.h', + '<(SHARED_INTERMEDIATE_DIR)/libffi/fficonfig.h', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/win64_armasm.obj', + ], + 'action': [ + '<(python)', + 'preprocess_asm.py', + '--input', + 'src/aarch64/win64_armasm.S', + '--output', + '<(INTERMEDIATE_DIR)/win64_armasm.asm', + '--include-dir', + 'include', + '--include-dir', + 'src/aarch64', + '--include-dir', + '<(SHARED_INTERMEDIATE_DIR)/libffi', + '--define', + 'FFI_STATIC_BUILD', + '--assemble', + '<@(_outputs)', + ], + }, + ], + }], + ], + 'direct_dependent_settings': { + 'include_dirs': [ + 'include', + '<(SHARED_INTERMEDIATE_DIR)/libffi', + ], + 'defines': [ + 'FFI_STATIC_BUILD', + ], + }, + }, + ], +} diff --git a/deps/libffi/libffi.map.in b/deps/libffi/libffi.map.in new file mode 100644 index 00000000000000..cc135ba8e2915c --- /dev/null +++ b/deps/libffi/libffi.map.in @@ -0,0 +1,93 @@ +#define LIBFFI_ASM +#define LIBFFI_H +#include +#include + +/* These version numbers correspond to the libtool-version abi numbers, + not to the libffi release numbers. */ + +LIBFFI_BASE_8.0 { + global: + /* Exported data variables. */ + ffi_type_void; + ffi_type_uint8; + ffi_type_sint8; + ffi_type_uint16; + ffi_type_sint16; + ffi_type_uint32; + ffi_type_sint32; + ffi_type_uint64; + ffi_type_sint64; + ffi_type_float; + ffi_type_double; + ffi_type_longdouble; + ffi_type_pointer; + + ffi_call; + ffi_prep_cif; + ffi_prep_cif_var; + + ffi_raw_call; + ffi_ptrarray_to_raw; + ffi_raw_to_ptrarray; + ffi_raw_size; + +#if !FFI_NATIVE_RAW_API + ffi_java_raw_call; +#endif + + ffi_java_ptrarray_to_raw; + ffi_java_raw_to_ptrarray; + ffi_java_raw_size; + + ffi_get_struct_offsets; + local: + *; +}; + +/* ---------------------------------------------------------------------- + Symbols **added in libffi 3.5.0**. + Give them a fresh namespace so that package managers notice when + code requires a newer libffi than 3.4.x. + -------------------------------------------------------------------- */ +LIBFFI_BASE_8.1 { + global: + ffi_get_version; + ffi_get_version_number; + ffi_get_default_abi; + ffi_get_closure_size; +} LIBFFI_BASE_8.0; + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +LIBFFI_COMPLEX_8.0 { + global: + /* Exported data variables. */ + ffi_type_complex_float; + ffi_type_complex_double; + ffi_type_complex_longdouble; +} LIBFFI_BASE_8.0; +#endif + +#if FFI_CLOSURES +LIBFFI_CLOSURE_8.0 { + global: + ffi_closure_alloc; + ffi_closure_free; + ffi_prep_closure; + ffi_prep_closure_loc; + ffi_prep_raw_closure; + ffi_prep_raw_closure_loc; +#if !FFI_NATIVE_RAW_API + ffi_prep_java_raw_closure; + ffi_prep_java_raw_closure_loc; +#endif +} LIBFFI_BASE_8.0; +#endif + +#if FFI_GO_CLOSURES +LIBFFI_GO_CLOSURE_8.0 { + global: + ffi_call_go; + ffi_prep_go_closure; +} LIBFFI_CLOSURE_8.0; +#endif diff --git a/deps/libffi/libffi.pc.in b/deps/libffi/libffi.pc.in new file mode 100644 index 00000000000000..6fad83b4951c86 --- /dev/null +++ b/deps/libffi/libffi.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +toolexeclibdir=@toolexeclibdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: Library supporting Foreign Function Interfaces +Version: @PACKAGE_VERSION@ +Libs: -L${toolexeclibdir} -lffi +Cflags: -I${includedir} diff --git a/deps/libffi/libtool-ldflags b/deps/libffi/libtool-ldflags new file mode 100755 index 00000000000000..e32e37bf10dd5a --- /dev/null +++ b/deps/libffi/libtool-ldflags @@ -0,0 +1,106 @@ +#! /bin/sh + +# Script to translate LDFLAGS into a form suitable for use with libtool. + +# Copyright (C) 2005 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + +# Contributed by CodeSourcery, LLC. + +# This script is designed to be used from a Makefile that uses libtool +# to build libraries as follows: +# +# LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS)) +# +# Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line. + +# The output of the script. This string is built up as we process the +# arguments. +result= +prev_arg= + +for arg +do + case $arg in + -f*|--*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will + # think these options are linker options, and prefix them + # with "-Wl,". Then, the compiler driver will ignore the + # options. So, we prefix these options with -Xcompiler to + # make clear to libtool that they are in fact compiler + # options. + case $prev_arg in + -Xpreprocessor|-Xcompiler|-Xlinker) + # This option is already prefixed; don't prefix it again. + ;; + *) + result="$result -Xcompiler" + ;; + esac + ;; + *) + # We do not want to add -Xcompiler to other options because + # that would prevent libtool itself from recognizing them. + ;; + esac + prev_arg=$arg + + # If $(LDFLAGS) is (say): + # a "b'c d" e + # then the user expects that: + # $(LD) $(LDFLAGS) + # will pass three arguments to $(LD): + # 1) a + # 2) b'c d + # 3) e + # We must ensure, therefore, that the arguments are appropriately + # quoted so that using: + # libtool --mode=link ... $(LTLDFLAGS) + # will result in the same number of arguments being passed to + # libtool. In other words, when this script was invoked, the shell + # removed one level of quoting, present in $(LDFLAGS); we have to put + # it back. + + # Quote any embedded single quotes. + case $arg in + *"'"*) + # The following command creates the script: + # 1s,^X,,;s|'|'"'"'|g + # which removes a leading X, and then quotes and embedded single + # quotes. + sed_script="1s,^X,,;s|'|'\"'\"'|g" + # Add a leading "X" so that if $arg starts with a dash, + # the echo command will not try to interpret the argument + # as a command-line option. + arg="X$arg" + # Generate the quoted string. + quoted_arg=`echo "$arg" | sed -e "$sed_script"` + ;; + *) + quoted_arg=$arg + ;; + esac + # Surround the entire argument with single quotes. + quoted_arg="'"$quoted_arg"'" + + # Add it to the string. + result="$result $quoted_arg" +done + +# Output the string we have built up. +echo "$result" diff --git a/deps/libffi/libtool-version b/deps/libffi/libtool-version new file mode 100644 index 00000000000000..37c2bc9035edb6 --- /dev/null +++ b/deps/libffi/libtool-version @@ -0,0 +1,29 @@ +# This file is used to maintain libtool version info for libffi. See +# the libtool manual to understand the meaning of the fields. This is +# a separate file so that version updates don't involve re-running +# automake. +# +# Here are a set of rules to help you update your library version +# information: +# +# 1. Start with version information of `0:0:0' for each libtool library. +# +# 2. Update the version information only immediately before a public +# release of your software. More frequent updates are unnecessary, +# and only guarantee that the current interface number gets larger +# faster. +# +# 3. If the library source code has changed at all since the last +# update, then increment revision (`c:r:a' becomes `c:r+1:a'). +# +# 4. If any interfaces have been added, removed, or changed since the +# last update, increment current, and set revision to 0. +# +# 5. If any interfaces have been added since the last public release, +# then increment age. +# +# 6. If any interfaces have been removed since the last public +# release, then set age to 0. +# +# CURRENT:REVISION:AGE +10:0:2 diff --git a/deps/libffi/m4/asmcfi.m4 b/deps/libffi/m4/asmcfi.m4 new file mode 100644 index 00000000000000..6be634b4455293 --- /dev/null +++ b/deps/libffi/m4/asmcfi.m4 @@ -0,0 +1,30 @@ +dnl ------------------------------------------------------------------ +dnl Check whether the assembler understands .cfi_* pseudo-ops. +dnl ------------------------------------------------------------------ +AC_DEFUN([GCC_AS_CFI_PSEUDO_OP], +[ + AC_CACHE_CHECK([assembler .cfi pseudo-op support], + [gcc_cv_as_cfi_pseudo_op], + [ AC_LANG_PUSH([C]) + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[ + #ifdef _MSC_VER + Nope. + #endif + int foo (void) + { + __asm__ (".cfi_remember_state\n\t" + ".cfi_restore_state\n\t"); + return 0; + } + ]])], + [gcc_cv_as_cfi_pseudo_op=yes], + [gcc_cv_as_cfi_pseudo_op=no]) + AC_LANG_POP([C]) + ]) + + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then + AC_DEFINE([HAVE_AS_CFI_PSEUDO_OP], [1], + [Define if your assembler supports .cfi_* directives.]) + fi +]) diff --git a/deps/libffi/m4/ax_append_flag.m4 b/deps/libffi/m4/ax_append_flag.m4 new file mode 100644 index 00000000000000..dd6d8b61406c32 --- /dev/null +++ b/deps/libffi/m4/ax_append_flag.m4 @@ -0,0 +1,50 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 8 + +AC_DEFUN([AX_APPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + AS_VAR_APPEND(FLAGS,[" $1"]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/deps/libffi/m4/ax_cc_maxopt.m4 b/deps/libffi/m4/ax_cc_maxopt.m4 new file mode 100644 index 00000000000000..2f447afbbf7658 --- /dev/null +++ b/deps/libffi/m4/ax_cc_maxopt.m4 @@ -0,0 +1,198 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CC_MAXOPT +# +# DESCRIPTION +# +# Try to turn on "good" C optimization flags for various compilers and +# architectures, for some definition of "good". (In our case, good for +# FFTW and hopefully for other scientific codes. Modify as needed.) +# +# The user can override the flags by setting the CFLAGS environment +# variable. The user can also specify --enable-portable-binary in order to +# disable any optimization flags that might result in a binary that only +# runs on the host architecture. +# +# Note also that the flags assume that ANSI C aliasing rules are followed +# by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point +# computations can be re-ordered as needed. +# +# Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR, +# AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 22 + +AC_DEFUN([AX_CC_MAXOPT], +[ +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AX_COMPILER_VENDOR]) +AC_REQUIRE([AC_CANONICAL_HOST]) + +AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], + acx_maxopt_portable=$enableval, acx_maxopt_portable=no) + +# Try to determine "good" native compiler flags if none specified via CFLAGS +if test "x$ac_test_CFLAGS" = "x"; then + case $ax_cv_c_compiler_vendor in + dec) CFLAGS="$CFLAGS -newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" + if test "x$acx_maxopt_portable" = xno; then + CFLAGS="$CFLAGS -arch host" + fi;; + + sun) CFLAGS="$CFLAGS -native -fast -xO5 -dalign" + if test "x$acx_maxopt_portable" = xyes; then + CFLAGS="$CFLAGS -xarch=generic" + fi;; + + hp) CFLAGS="$CFLAGS +Oall +Optrs_ansi +DSnative" + if test "x$acx_maxopt_portable" = xyes; then + CFLAGS="$CFLAGS +DAportable" + fi;; + + ibm) if test "x$acx_maxopt_portable" = xno; then + xlc_opt="-qarch=auto -qtune=auto" + else + xlc_opt="-qtune=auto" + fi + AX_CHECK_COMPILE_FLAG($xlc_opt, + CFLAGS="$CFLAGS -O3 -qansialias -w $xlc_opt", + [CFLAGS="$CFLAGS -O3 -qansialias -w" + echo "******************************************************" + echo "* You seem to have the IBM C compiler. It is *" + echo "* recommended for best performance that you use: *" + echo "* *" + echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" + echo "* ^^^ ^^^ *" + echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" + echo "* CPU you have. (Set the CFLAGS environment var. *" + echo "* and re-run configure.) For more info, man cc. *" + echo "******************************************************"]) + ;; + + intel) CFLAGS="$CFLAGS -O3 -ansi_alias" + if test "x$acx_maxopt_portable" = xno; then + icc_archflag=unknown + icc_flags="" + case $host_cpu in + i686*|x86_64*) + # icc accepts gcc assembly syntax, so these should work: + AX_GCC_X86_CPUID(0) + AX_GCC_X86_CPUID(1) + case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG + *:756e6547:6c65746e:49656e69) # Intel + case $ax_cv_gcc_x86_cpuid_1 in + *0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) icc_flags="-xK" ;; + *0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) icc_flags="-xSSE2 -xB -xK" ;; + *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) icc_flags="-xSSE3 -xP -xO -xB -xK" ;; + *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) icc_flags="-xSSSE3 -xT -xB -xK" ;; + *1?6[[7d]]?:*:*:*) icc_flags="-xSSE4.1 -xS -xT -xB -xK" ;; + *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) icc_flags="-xSSE4.2 -xS -xT -xB -xK" ;; + *2?6[[ad]]?:*:*:*) icc_flags="-xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *3?6[[ae]]?:*:*:*) icc_flags="-xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) icc_flags="-xCORE-AVX2 -xCORE-AVX-I -xAVX -SSE4.2 -xS -xT -xB -xK" ;; + *000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) icc_flags="-xSSE3 -xP -xO -xN -xW -xK" ;; + *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) icc_flags="-xSSE2 -xN -xW -xK" ;; + esac ;; + esac ;; + esac + if test "x$icc_flags" != x; then + for flag in $icc_flags; do + AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break]) + done + fi + AC_MSG_CHECKING([for icc architecture flag]) + AC_MSG_RESULT($icc_archflag) + if test "x$icc_archflag" != xunknown; then + CFLAGS="$CFLAGS $icc_archflag" + fi + fi + ;; + + nvhpc) + # default optimization flags for nvhpc + CFLAGS="$CFLAGS -O3" + ;; + + gnu) + # default optimization flags for gcc on all systems + CFLAGS="$CFLAGS -O3 -fomit-frame-pointer" + + # -malign-double for x86 systems + # LIBFFI_LOCAL: don't do this. + # The testsuite doesn't use these flags and we'll get test failures. + # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") + + # -fstrict-aliasing for gcc-2.95+ + AX_CHECK_COMPILE_FLAG(-fstrict-aliasing, + CFLAGS="$CFLAGS -fstrict-aliasing") + + # note that we enable "unsafe" fp optimization with other compilers, too + AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math") + + AX_GCC_ARCHFLAG($acx_maxopt_portable) + ;; + + microsoft) + # default optimization flags for MSVC opt builds + CFLAGS="$CFLAGS -O2" + ;; + esac + + if test -z "$CFLAGS"; then + echo "" + echo "********************************************************" + echo "* WARNING: Don't know the best CFLAGS for this system *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" + echo "********************************************************" + echo "" + CFLAGS="$CFLAGS -O3" + fi + + AX_CHECK_COMPILE_FLAG($CFLAGS, [], [ + echo "" + echo "********************************************************" + echo "* WARNING: The guessed CFLAGS don't seem to work with *" + echo "* your compiler. *" + echo "* Use ./configure CFLAGS=... to specify your own flags *" + echo "********************************************************" + echo "" + ]) + +fi +]) diff --git a/deps/libffi/m4/ax_cflags_warn_all.m4 b/deps/libffi/m4/ax_cflags_warn_all.m4 new file mode 100644 index 00000000000000..9235a18c7a8315 --- /dev/null +++ b/deps/libffi/m4/ax_cflags_warn_all.m4 @@ -0,0 +1,158 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] +# AX_CXXFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] +# AX_FCFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] +# +# DESCRIPTION +# +# Specify compiler options that enable most reasonable warnings. For the +# GNU Compiler Collection (GCC), for example, it will be "-Wall". The +# result is added to shellvar, one of CFLAGS, CXXFLAGS or FCFLAGS if the +# first parameter is not specified. +# +# Each of these macros accepts the following optional arguments: +# +# - $1 - shellvar +# shell variable to use (CFLAGS, CXXFLAGS or FCFLAGS if not +# specified, depending on macro) +# +# - $2 - default +# value to use for flags if compiler vendor cannot be determined (by +# default, "") +# +# - $3 - action-if-found +# action to take if the compiler vendor has been successfully +# determined (by default, add the appropriate compiler flags to +# shellvar) +# +# - $4 - action-if-not-found +# action to take if the compiler vendor has not been determined or +# is unknown (by default, add the default flags, or "" if not +# specified, to shellvar) +# +# These macros use AX_COMPILER_VENDOR to determine which flags should be +# returned for a given compiler. Not all compilers currently have flags +# defined for them; patches are welcome. If need be, compiler flags may +# be made language-dependent: use a construct like the following: +# +# [vendor_name], [m4_if(_AC_LANG_PREFIX,[C], VAR="--relevant-c-flags",dnl +# m4_if(_AC_LANG_PREFIX,[CXX], VAR="--relevant-c++-flags",dnl +# m4_if(_AC_LANG_PREFIX,[FC], VAR="--relevant-fortran-flags",dnl +# VAR="$2"; FOUND="no")))], +# +# Note: These macros also depend on AX_PREPEND_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2010 Rhys Ulerich +# Copyright (c) 2018 John Zaitseff +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 25 + +AC_DEFUN([AX_FLAGS_WARN_ALL], [ + AX_REQUIRE_DEFINED([AX_PREPEND_FLAG])dnl + AC_REQUIRE([AX_COMPILER_VENDOR])dnl + + AS_VAR_PUSHDEF([FLAGS], [m4_default($1,_AC_LANG_PREFIX[]FLAGS)])dnl + AS_VAR_PUSHDEF([VAR], [ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl + AS_VAR_PUSHDEF([FOUND], [ac_save_[]_AC_LANG_ABBREV[]flags_warn_all_found])dnl + + AC_CACHE_CHECK([FLAGS for most reasonable warnings], VAR, [ + VAR="" + FOUND="yes" + dnl Cases are listed in the order found in ax_compiler_vendor.m4 + AS_CASE("$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor", + [intel], [VAR="-w2"], + [ibm], [VAR="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"], + [pathscale], [], + [clang], [VAR="-Wall"], + [cray], [VAR="-h msglevel 2"], + [fujitsu], [], + [sdcc], [], + [sx], [VAR="-pvctl[,]fullmsg"], + [portland], [], + [gnu], [VAR="-Wall"], + [sun], [VAR="-v"], + [hp], [VAR="+w1"], + [dec], [VAR="-verbose -w0 -warnprotos"], + [borland], [], + [comeau], [], + [kai], [], + [lcc], [], + [sgi], [VAR="-fullwarn"], + [microsoft], [], + [metrowerks], [], + [watcom], [], + [tcc], [], + [unknown], [ + VAR="$2" + FOUND="no" + ], + [ + AC_MSG_WARN([Unknown compiler vendor returned by [AX_COMPILER_VENDOR]]) + VAR="$2" + FOUND="no" + ] + ) + + AS_IF([test "x$FOUND" = "xyes"], [dnl + m4_default($3, [AS_IF([test "x$VAR" != "x"], [AX_PREPEND_FLAG([$VAR], [FLAGS])])]) + ], [dnl + m4_default($4, [m4_ifval($2, [AX_PREPEND_FLAG([$VAR], [FLAGS])], [true])]) + ])dnl + ])dnl + + AS_VAR_POPDEF([FOUND])dnl + AS_VAR_POPDEF([VAR])dnl + AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_FLAGS_WARN_ALL + +AC_DEFUN([AX_CFLAGS_WARN_ALL], [dnl + AC_LANG_PUSH([C]) + AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) + AC_LANG_POP([C]) +])dnl + +AC_DEFUN([AX_CXXFLAGS_WARN_ALL], [dnl + AC_LANG_PUSH([C++]) + AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) + AC_LANG_POP([C++]) +])dnl + +AC_DEFUN([AX_FCFLAGS_WARN_ALL], [dnl + AC_LANG_PUSH([Fortran]) + AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) + AC_LANG_POP([Fortran]) +])dnl diff --git a/deps/libffi/m4/ax_check_compile_flag.m4 b/deps/libffi/m4/ax_check_compile_flag.m4 new file mode 100644 index 00000000000000..54191c55353ee5 --- /dev/null +++ b/deps/libffi/m4/ax_check_compile_flag.m4 @@ -0,0 +1,63 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 11 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether the _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + if test x"m4_case(_AC_LANG, + [C], [$GCC], + [C++], [$GXX], + [Fortran], [$GFC], + [Fortran 77], [$G77], + [Objective C], [$GOBJC], + [Objective C++], [$GOBJCXX], + [no])" = xyes ; then + add_gnu_werror="-Werror" + fi + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1 $add_gnu_werror" + AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/deps/libffi/m4/ax_compiler_vendor.m4 b/deps/libffi/m4/ax_compiler_vendor.m4 new file mode 100644 index 00000000000000..039f99d2bd3851 --- /dev/null +++ b/deps/libffi/m4/ax_compiler_vendor.m4 @@ -0,0 +1,119 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPILER_VENDOR +# +# DESCRIPTION +# +# Determine the vendor of the C, C++ or Fortran compiler. The vendor is +# returned in the cache variable $ax_cv_c_compiler_vendor for C, +# $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for +# (modern) Fortran. The value is one of "intel", "ibm", "pathscale", +# "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "nvhpc" (NVIDIA HPC +# Compiler), "portland" (PGI), "gnu" (GCC), "sun" (Oracle Developer +# Studio), "hp", "dec", "borland", "comeau", "kai", "lcc", "sgi", +# "microsoft", "metrowerks", "watcom", "tcc" (Tiny CC) or "unknown" (if +# the compiler cannot be determined). +# +# To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT +# with an appropriate preprocessor-enabled extension. For example: +# +# AC_LANG_PUSH([Fortran]) +# AC_PROG_FC +# AC_FC_PP_SRCEXT([F]) +# AX_COMPILER_VENDOR +# AC_LANG_POP([Fortran]) +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# Copyright (c) 2018-19 John Zaitseff +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 32 + +AC_DEFUN([AX_COMPILER_VENDOR], [dnl + AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl + dnl If you modify this list of vendors, please add similar support + dnl to ax_compiler_version.m4 if at all possible. + dnl + dnl Note: Do NOT check for GCC first since some other compilers + dnl define __GNUC__ to remain compatible with it. Compilers that + dnl are very slow to start (such as Intel) are listed first. + + vendors=" + intel: __ICC,__ECC,__INTEL_COMPILER + ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ + pathscale: __PATHCC__,__PATHSCALE__ + clang: __clang__ + cray: _CRAYC + fujitsu: __FUJITSU + sdcc: SDCC,__SDCC + sx: _SX + nvhpc: __NVCOMPILER + portland: __PGI + gnu: __GNUC__ + sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 + hp: __HP_cc,__HP_aCC + dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER + borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ + comeau: __COMO__ + kai: __KCC + lcc: __LCC__ + sgi: __sgi,sgi + microsoft: _MSC_VER + metrowerks: __MWERKS__ + watcom: __WATCOMC__ + tcc: __TINYC__ + unknown: UNKNOWN + " + for ventest in $vendors; do + case $ventest in + *:) + vendor=$ventest + continue + ;; + *) + vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" + ;; + esac + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ +#if !($vencpp) + thisisanerror; +#endif + ]])], [break]) + done + + ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` + ]) +])dnl diff --git a/deps/libffi/m4/ax_configure_args.m4 b/deps/libffi/m4/ax_configure_args.m4 new file mode 100644 index 00000000000000..9237efea7a7f45 --- /dev/null +++ b/deps/libffi/m4/ax_configure_args.m4 @@ -0,0 +1,49 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_configure_args.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CONFIGURE_ARGS +# +# DESCRIPTION +# +# Helper macro for AX_ENABLE_BUILDDIR. +# +# The traditional way of starting a subdir-configure is running the script +# with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have +# to rely on eval'ing $ac_configure_args however some old autoconf +# versions do not provide that. To ensure maximum portability of autoconf +# extension macros this helper can be AC_REQUIRE'd so that +# $ac_configure_args will always be present. +# +# Sadly, the traditional "exec $SHELL" of the enable_builddir macros is +# spoiled now and must be replaced by "eval + exit $?". +# +# Example: +# +# AC_DEFUN([AX_ENABLE_SUBDIR],[dnl +# AC_REQUIRE([AX_CONFIGURE_ARGS])dnl +# eval $SHELL $ac_configure_args || exit $? +# ...]) +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 14 + +AC_DEFUN([AX_CONFIGURE_ARGS],[ + # [$]@ is unusable in 2.60+ but earlier autoconf had no ac_configure_args + if test "${ac_configure_args+set}" != "set" ; then + ac_configure_args= + for ac_arg in ${1+"[$]@"}; do + ac_configure_args="$ac_configure_args '$ac_arg'" + done + fi +]) diff --git a/deps/libffi/m4/ax_enable_builddir.m4 b/deps/libffi/m4/ax_enable_builddir.m4 new file mode 100644 index 00000000000000..710384da545f1f --- /dev/null +++ b/deps/libffi/m4/ax_enable_builddir.m4 @@ -0,0 +1,302 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])] +# +# DESCRIPTION +# +# If the current configure was run within the srcdir then we move all +# configure-files into a subdir and let the configure steps continue +# there. We provide an option --disable-builddir to suppress the move into +# a separate builddir. +# +# Defaults: +# +# $1 = $host (overridden with $HOST) +# $2 = Makefile.mk +# $3 = -all +# +# This macro must be called before AM_INIT_AUTOMAKE. It creates a default +# toplevel srcdir Makefile from the information found in the created +# toplevel builddir Makefile. It just copies the variables and +# rule-targets, each extended with a default rule-execution that recurses +# into the build directory of the current "HOST". You can override the +# auto-detection through `config.guess` and build-time of course, as in +# +# make HOST=i386-mingw-cross +# +# which can of course set at configure time as well using +# +# configure --host=i386-mingw-cross +# +# After the default has been created, additional rules can be appended +# that will not just recurse into the subdirectories and only ever exist +# in the srcdir toplevel makefile - these parts are read from the $2 = +# Makefile.mk file +# +# The automatic rules are usually scanning the toplevel Makefile for lines +# like '#### $host |$builddir' to recognize the place where to recurse +# into. Usually, the last one is the only one used. However, almost all +# targets have an additional "*-all" rule which makes the script to +# recurse into _all_ variants of the current HOST (!!) setting. The "-all" +# suffix can be overridden for the macro as well. +# +# a special rule is only given for things like "dist" that will copy the +# tarball from the builddir to the sourcedir (or $(PUB)) for reason of +# convenience. +# +# LICENSE +# +# Copyright (c) 2009 Guido U. Draheim +# Copyright (c) 2009 Alan Jenkins +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 30 + +AC_DEFUN([AX_ENABLE_BUILDDIR],[ +AC_REQUIRE([AC_CANONICAL_HOST])[]dnl +AC_REQUIRE([AC_CANONICAL_TARGET])[]dnl +AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl +AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl +SUB="." +AC_ARG_ENABLE([builddir], AS_HELP_STRING( + [--disable-builddir],[disable automatic build in subdir of sources]) + ,[SUB="$enableval"], [SUB="auto"]) +if test ".$ac_srcdir_defaulted" != ".no" ; then +if test ".$srcdir" = ".." ; then + if test -f config.status ; then + AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build) + else + test ".$SUB" = "." && SUB="." + test ".$SUB" = ".no" && SUB="." + test ".$TARGET" = "." && TARGET="$target" + test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])" + if test ".$SUB" != ".." ; then # we know where to go and + AS_MKDIR_P([$SUB]) + echo __.$SUB.__ > $SUB/conftest.tmp + cd $SUB + if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then + rm conftest.tmp + AC_MSG_RESULT([continue configure in default builddir "./$SUB"]) + else + AC_MSG_ERROR([could not change to default builddir "./$SUB"]) + fi + srcdir=`echo "$SUB" | + sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'` + # going to restart from subdirectory location + test -f $srcdir/config.log && mv $srcdir/config.log . + test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . + test -f $srcdir/conftest.log && mv $srcdir/conftest.log . + test -f $srcdir/$cache_file && mv $srcdir/$cache_file . + AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"}) + case "[$]0" in # restart + [[\\/]]* | ?:[[\\/]]*) # Absolute name + eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; + *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;; + esac ; exit $? + fi + fi +fi fi +test ".$SUB" = ".auto" && SUB="." +dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec" +AC_PATH_PROG(SED,gsed sed, sed) +AUX="$am_aux_dir" +AS_VAR_POPDEF([SED])dnl +AS_VAR_POPDEF([AUX])dnl +AS_VAR_POPDEF([SUB])dnl +AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status .............. +AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl +AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl +AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl +AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl +AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl +pushdef([END],[Makefile.mk])dnl +pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl + SRC="$ax_enable_builddir_srcdir" + if test ".$SUB" = ".." ; then + if test -f "$TOP/Makefile" ; then + AC_MSG_NOTICE([skipping TOP/Makefile - left untouched]) + else + AC_MSG_NOTICE([skipping TOP/Makefile - not created]) + fi + else + if test -f "$SRC/Makefile" ; then + a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile` + test "$a" != "$b" && rm "$SRC/Makefile" + fi + if test -f "$SRC/Makefile" ; then + echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk + echo " []@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk + eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null" + if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null + then rm $SRC/Makefile ; fi + cp $tmp/conftemp.mk $SRC/makefiles.mk~ ## DEBUGGING + fi + if test ! -f "$SRC/Makefile" ; then + AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile]) + x='`' ; cat >$tmp/conftemp.sed <<_EOF +/^\$/n +x +/^\$/bS +x +/\\\\\$/{H;d;} +{H;s/.*//;x;} +bM +:S +x +/\\\\\$/{h;d;} +{h;s/.*//;x;} +:M +s/\\(\\n\\) /\\1 /g +/^ /d +/^[[ ]]*[[\\#]]/d +/^VPATH *=/d +s/^srcdir *=.*/srcdir = ./ +s/^top_srcdir *=.*/top_srcdir = ./ +/[[:=]]/!d +/^\\./d +dnl Now handle rules (i.e. lines containing ":" but not " = "). +/ = /b +/ .= /b +/:/!b +s/:.*/:/ +s/ / /g +s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g +s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/ +s/ / /g +/^all all[]_ALL[[ :]]/i\\ +all-configured : all[]_ALL +dnl dist-all exists... and would make for dist-all-all +s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g +/[]_ALL[]_ALL/d +a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\ + ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ + ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done +dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree) +/dist[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\ + ; if test "\$\$found" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\ + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done +dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree) +/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\ + ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\ + ; found=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\ + ; if test "\$\$found" -eq "0" ; then : \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\ + ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\ + ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done +dnl special rule add-on: "distclean" removes all local builddirs completely +/distclean[]_ALL *:/a\\ + @ HOST="\$(HOST)\" \\\\\\ + ; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\ + ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\ + ; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\ + ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\ + ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\ + ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\ + ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\ + ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\ + ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile +_EOF + cp "$tmp/conftemp.sed" "$SRC/makefile.sed~" ## DEBUGGING + $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile + if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then + AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])]) + cat $SRC/END >>$SRC/Makefile + fi ; xxxx="####" + echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile + # sanity check + if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then + AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts]) + $SED -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $SRC/Makefile \ + >$SRC/Makefile~ + (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null + fi + else + xxxx="\\#\\#\\#\\#" + # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed + echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed + $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp + cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~" ## DEBUGGING + cp "$tmp/mkfile.tmp" "$SRC/makefiles.out~" ## DEBUGGING + if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then + AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure]) + rm "$tmp/mkfile.tmp" + else + AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure]) + mv "$tmp/mkfile.tmp" "$SRC/Makefile" + fi + fi + AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)]) + xxxx="####" + echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile + fi +popdef([END])dnl +AS_VAR_POPDEF([SED])dnl +AS_VAR_POPDEF([AUX])dnl +AS_VAR_POPDEF([SRC])dnl +AS_VAR_POPDEF([TOP])dnl +AS_VAR_POPDEF([SUB])dnl +],[dnl +ax_enable_builddir_srcdir="$srcdir" # $srcdir +ax_enable_builddir_host="$HOST" # $HOST / $host +ax_enable_builddir_version="$VERSION" # $VERSION +ax_enable_builddir_package="$PACKAGE" # $PACKAGE +ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX +ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED +ax_enable_builddir="$ax_enable_builddir" # $SUB +])dnl +]) diff --git a/deps/libffi/m4/ax_gcc_archflag.m4 b/deps/libffi/m4/ax_gcc_archflag.m4 new file mode 100644 index 00000000000000..c52b9b296e9fab --- /dev/null +++ b/deps/libffi/m4/ax_gcc_archflag.m4 @@ -0,0 +1,267 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE]) +# +# DESCRIPTION +# +# This macro tries to guess the "native" arch corresponding to the target +# architecture for use with gcc's -march=arch or -mtune=arch flags. If +# found, the cache variable $ax_cv_gcc_archflag is set to this flag and +# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to +# "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is +# to add $ax_cv_gcc_archflag to the end of $CFLAGS. +# +# PORTABLE? should be either [yes] (default) or [no]. In the former case, +# the flag is set to -mtune (or equivalent) so that the architecture is +# only used for tuning, but the instruction set used is still portable. In +# the latter case, the flag is set to -march (or equivalent) so that +# architecture-specific instructions are enabled. +# +# The user can specify --with-gcc-arch= in order to override the +# macro's choice of architecture, or --without-gcc-arch to disable this. +# +# When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is +# called unless the user specified --with-gcc-arch manually. +# +# Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID +# +# (The main emphasis here is on recent CPUs, on the principle that doing +# high-performance computing on old hardware is uncommon.) +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# Copyright (c) 2014 Tsukasa Oi +# Copyright (c) 2017-2018 Alexey Kopytov +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 22 + +AC_DEFUN([AX_GCC_ARCHFLAG], +[AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_SED]) +AC_REQUIRE([AX_COMPILER_VENDOR]) + +AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], + ax_gcc_arch=$withval, ax_gcc_arch=yes) + +AC_MSG_CHECKING([for gcc architecture flag]) +AC_MSG_RESULT([]) +AC_CACHE_VAL(ax_cv_gcc_archflag, +[ +ax_cv_gcc_archflag="unknown" + +if test "$GCC" = yes; then + +if test "x$ax_gcc_arch" = xyes; then +ax_gcc_arch="" +if test "$cross_compiling" = no; then +case $host_cpu in + i[[3456]]86*|x86_64*|amd64*) # use cpuid codes + AX_GCC_X86_CPUID(0) + AX_GCC_X86_CPUID(1) + case $ax_cv_gcc_x86_cpuid_0 in + *:756e6547:6c65746e:49656e69) # Intel + case $ax_cv_gcc_x86_cpuid_1 in + *5[[4578]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; + *5[[123]]?:*:*:*) ax_gcc_arch=pentium ;; + *0?61?:*:*:*|?61?:*:*:*|61?:*:*:*) ax_gcc_arch=pentiumpro ;; + *0?6[[356]]?:*:*:*|?6[[356]]?:*:*:*|6[[356]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; + *0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; + *0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; + *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) ax_gcc_arch="yonah pentium-m pentium3 pentiumpro" ;; + *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; + *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; + *1?6[[aef]]?:*:*:*|*2?6e?:*:*:*) ax_gcc_arch="nehalem corei7 core2 pentium-m pentium3 pentiumpro" ;; + *2?6[[5cf]]?:*:*:*) ax_gcc_arch="westmere corei7 core2 pentium-m pentium3 pentiumpro" ;; + *2?6[[ad]]?:*:*:*) ax_gcc_arch="sandybridge corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6[[ae]]?:*:*:*) ax_gcc_arch="ivybridge core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) ax_gcc_arch="haswell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *3?6d?:*:*:*|*4?6[[7f]]?:*:*:*|*5?66?:*:*:*) ax_gcc_arch="broadwell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; + *1?6c?:*:*:*|*2?6[[67]]?:*:*:*|*3?6[[56]]?:*:*:*) ax_gcc_arch="bonnell atom core2 pentium-m pentium3 pentiumpro" ;; + *3?67?:*:*:*|*[[45]]?6[[ad]]?:*:*:*) ax_gcc_arch="silvermont atom core2 pentium-m pentium3 pentiumpro" ;; + *000?f[[012]]?:*:*:*|?f[[012]]?:*:*:*|f[[012]]?:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; + *000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) ax_gcc_arch="nocona prescott pentium4 pentiumpro" ;; + # fallback + *5??:*:*:*) ax_gcc_arch=pentium ;; + *??6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; + *6??:*:*:*) ax_gcc_arch=pentiumpro ;; + *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; + esac ;; + *:68747541:444d4163:69746e65) # AMD + case $ax_cv_gcc_x86_cpuid_1 in + *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; + *5[[8]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; + *5[[9d]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; + *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; + *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; + *6[[678a]]?:*:*:*) ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; + *000?f[[4578bcef]]?:*:*:*|?f[[4578bcef]]?:*:*:*|f[[4578bcef]]?:*:*:*|*001?f[[4578bcf]]?:*:*:*|1?f[[4578bcf]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; + *002?f[[13457bcf]]?:*:*:*|2?f[[13457bcf]]?:*:*:*|*004?f[[138bcf]]?:*:*:*|4?f[[138bcf]]?:*:*:*|*005?f[[df]]?:*:*:*|5?f[[df]]?:*:*:*|*006?f[[8bcf]]?:*:*:*|6?f[[8bcf]]?:*:*:*|*007?f[[cf]]?:*:*:*|7?f[[cf]]?:*:*:*|*00c?f1?:*:*:*|c?f1?:*:*:*|*020?f3?:*:*:*|20?f3?:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; + *010?f[[245689a]]?:*:*:*|10?f[[245689a]]?:*:*:*|*030?f1?:*:*:*|30?f1?:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; + *050?f[[12]]?:*:*:*|50?f[[12]]?:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; + *060?f1?:*:*:*|60?f1?:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; + *060?f2?:*:*:*|60?f2?:*:*:*|*061?f[[03]]?:*:*:*|61?f[[03]]?:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; + *063?f0?:*:*:*|63?f0?:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; + *07[[03]]?f0?:*:*:*|7[[03]]?f0?:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; + # fallback + *0[[13]]??f??:*:*:*|[[13]]??f??:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; + *020?f??:*:*:*|20?f??:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; + *05??f??:*:*:*|5??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; + *060?f??:*:*:*|60?f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; + *061?f??:*:*:*|61?f??:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; + *06??f??:*:*:*|6??f??:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; + *070?f??:*:*:*|70?f??:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; + *???f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; + esac ;; + *:746e6543:736c7561:48727561) # IDT / VIA (Centaur) + case $ax_cv_gcc_x86_cpuid_1 in + *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; + *5[[89]]?:*:*:*) ax_gcc_arch=winchip2 ;; + *66?:*:*:*) ax_gcc_arch=winchip2 ;; + *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; + *6[[9adf]]?:*:*:*) ax_gcc_arch="c3-2 c3" ;; + esac ;; + esac + if test x"$ax_gcc_arch" = x; then # fallback + case $host_cpu in + i586*) ax_gcc_arch=pentium ;; + i686*) ax_gcc_arch=pentiumpro ;; + esac + fi + ;; + + sparc*) + AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) + cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` + cputype=`echo "$cputype" | tr -d ' -' | $SED 's/SPARCIIi/SPARCII/' |tr $as_cr_LETTERS $as_cr_letters` + case $cputype in + *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; + *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; + *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; + *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; + *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; + *cypress*) ax_gcc_arch=cypress ;; + esac ;; + + alphaev5) ax_gcc_arch=ev5 ;; + alphaev56) ax_gcc_arch=ev56 ;; + alphapca56) ax_gcc_arch="pca56 ev56" ;; + alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; + alphaev6) ax_gcc_arch=ev6 ;; + alphaev67) ax_gcc_arch=ev67 ;; + alphaev68) ax_gcc_arch="ev68 ev67" ;; + alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; + alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; + alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; + + powerpc*) + cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | $SED 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` + cputype=`echo $cputype | $SED -e 's/ppc//g;s/ *//g'` + case $cputype in + *750*) ax_gcc_arch="750 G3" ;; + *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; + *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; + *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; + *970*) ax_gcc_arch="970 G5 power4";; + *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; + *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; + 603ev|8240) ax_gcc_arch="$cputype 603e 603";; + *POWER7*) ax_gcc_arch="power7";; + *POWER8*) ax_gcc_arch="power8";; + *POWER9*) ax_gcc_arch="power9";; + *POWER10*) ax_gcc_arch="power10";; + *) ax_gcc_arch=$cputype ;; + esac + ax_gcc_arch="$ax_gcc_arch powerpc" + ;; + aarch64) + cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` + case $cpuimpl in + 0x42) case $cpuarch in + 8) case $cpuvar in + 0x0) ax_gcc_arch="thunderx2t99 vulcan armv8.1-a armv8-a+lse armv8-a native" ;; + esac + ;; + esac + ;; + 0x43) case $cpuarch in + 8) case $cpuvar in + 0x0) ax_gcc_arch="thunderx armv8-a native" ;; + 0x1) ax_gcc_arch="thunderx+lse armv8.1-a armv8-a+lse armv8-a native" ;; + esac + ;; + esac + ;; + esac + ;; +esac +fi # not cross-compiling +fi # guess arch + +if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then +if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code + flag_prefixes="-mtune=" + if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then flag_prefixes="-march="; fi + # -mcpu=$arch and m$arch generate nonportable code on every arch except + # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. + case $host_cpu in i*86|x86_64*|amd64*) flag_prefixes="$flag_prefixes -mcpu= -m";; esac +else + flag_prefixes="-march= -mcpu= -m" +fi +for flag_prefix in $flag_prefixes; do + for arch in $ax_gcc_arch; do + flag="$flag_prefix$arch" + AX_CHECK_COMPILE_FLAG($flag, [if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then + if test "x[]m4_default([$1],yes)" = xyes; then + if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi + fi + fi; ax_cv_gcc_archflag=$flag; break]) + done + test "x$ax_cv_gcc_archflag" = xunknown || break +done +fi + +fi # $GCC=yes +]) +AC_MSG_CHECKING([for gcc architecture flag]) +AC_MSG_RESULT($ax_cv_gcc_archflag) +if test "x$ax_cv_gcc_archflag" = xunknown; then + m4_default([$3],:) +else + m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) +fi +]) diff --git a/deps/libffi/m4/ax_gcc_x86_cpuid.m4 b/deps/libffi/m4/ax_gcc_x86_cpuid.m4 new file mode 100644 index 00000000000000..df954658ee1b08 --- /dev/null +++ b/deps/libffi/m4/ax_gcc_x86_cpuid.m4 @@ -0,0 +1,89 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_X86_CPUID(OP) +# AX_GCC_X86_CPUID_COUNT(OP, COUNT) +# +# DESCRIPTION +# +# On Pentium and later x86 processors, with gcc or a compiler that has a +# compatible syntax for inline assembly instructions, run a small program +# that executes the cpuid instruction with input OP. This can be used to +# detect the CPU type. AX_GCC_X86_CPUID_COUNT takes an additional COUNT +# parameter that gets passed into register ECX before calling cpuid. +# +# On output, the values of the eax, ebx, ecx, and edx registers are stored +# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable +# ax_cv_gcc_x86_cpuid_OP. +# +# If the cpuid instruction fails (because you are running a +# cross-compiler, or because you are not using gcc, or because you are on +# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP +# is set to the string "unknown". +# +# This macro mainly exists to be used in AX_GCC_ARCHFLAG. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# Copyright (c) 2015 Michael Petch +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AC_DEFUN([AX_GCC_X86_CPUID], +[AX_GCC_X86_CPUID_COUNT($1, 0) +]) + +AC_DEFUN([AX_GCC_X86_CPUID_COUNT], +[AC_REQUIRE([AC_PROG_CC]) +AC_LANG_PUSH([C]) +AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, + [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ + int op = $1, level = $2, eax, ebx, ecx, edx; + FILE *f; + __asm__ __volatile__ ("xchg %%ebx, %1\n" + "cpuid\n" + "xchg %%ebx, %1\n" + : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) + : "a" (op), "2" (level)); + + f = fopen("conftest_cpuid", "w"); if (!f) return 1; + fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); + fclose(f); + return 0; +])], + [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown])]) +AC_LANG_POP([C]) +]) diff --git a/deps/libffi/m4/ax_prepend_flag.m4 b/deps/libffi/m4/ax_prepend_flag.m4 new file mode 100644 index 00000000000000..adac8c5acbbd43 --- /dev/null +++ b/deps/libffi/m4/ax_prepend_flag.m4 @@ -0,0 +1,51 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prepend_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PREPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is added to the front of the FLAGS-VARIABLE shell variable, with a +# space added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_APPEND_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# Copyright (c) 2018 John Zaitseff +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_PREPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + FLAGS="$1 $FLAGS" + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_PREPEND_FLAG diff --git a/deps/libffi/m4/ax_require_defined.m4 b/deps/libffi/m4/ax_require_defined.m4 new file mode 100644 index 00000000000000..17c3eab7dafde6 --- /dev/null +++ b/deps/libffi/m4/ax_require_defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED diff --git a/deps/libffi/make_sunver.pl b/deps/libffi/make_sunver.pl new file mode 100644 index 00000000000000..8a90b1fea0d366 --- /dev/null +++ b/deps/libffi/make_sunver.pl @@ -0,0 +1,333 @@ +#!/usr/bin/perl -w + +# make_sunver.pl +# +# This script takes at least two arguments, a GNU style version script and +# a list of object and archive files, and generates a corresponding Sun +# style version script as follows: +# +# Each glob pattern, C++ mangled pattern or literal in the input script is +# matched against all global symbols in the input objects, emitting those +# that matched (or nothing if no match was found). +# A comment with the original pattern and its type is left in the output +# file to make it easy to understand the matches. +# +# It uses elfdump when present (native), GNU readelf otherwise. +# It depends on the GNU version of c++filt, since it must understand the +# GNU mangling style. + +use FileHandle; +use IPC::Open2; + +# Enforce C locale. +$ENV{'LC_ALL'} = "C"; +$ENV{'LANG'} = "C"; + +# Input version script, GNU style. +my $symvers = shift; + +########## +# Get all the symbols from the library, match them, and add them to a hash. + +my %sym_hash = (); + +# List of objects and archives to process. +my @OBJECTS = (); + +# List of shared objects to omit from processing. +my @SHAREDOBJS = (); + +# Filter out those input archives that have corresponding shared objects to +# avoid adding all symbols matched in the archive to the output map. +foreach $file (@ARGV) { + if (($so = $file) =~ s/\.a$/.so/ && -e $so) { + printf STDERR "omitted $file -> $so\n"; + push (@SHAREDOBJS, $so); + } else { + push (@OBJECTS, $file); + } +} + +# We need to detect and ignore hidden symbols. Solaris nm can only detect +# this in the harder to parse default output format, and GNU nm not at all, +# so use elfdump -s in the native case and GNU readelf -s otherwise. +# GNU objdump -t cannot be used since it produces a variable number of +# columns. + +# The path to elfdump. +my $elfdump = "/usr/ccs/bin/elfdump"; + +if (-f $elfdump) { + open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!; + my $skip_arsym = 0; + + while () { + chomp; + + # Ignore empty lines. + if (/^$/) { + # End of archive symbol table, stop skipping. + $skip_arsym = 0 if $skip_arsym; + next; + } + + # Keep skipping until end of archive symbol table. + next if ($skip_arsym); + + # Ignore object name header for individual objects and archives. + next if (/:$/); + + # Ignore table header lines. + next if (/^Symbol Table Section:/); + next if (/index.*value.*size/); + + # Start of archive symbol table: start skipping. + if (/^Symbol Table: \(archive/) { + $skip_arsym = 1; + next; + } + + # Split table. + (undef, undef, undef, undef, $bind, $oth, undef, $shndx, $name) = split; + + # Error out for unknown input. + die "unknown input line:\n$_" unless defined($bind); + + # Ignore local symbols. + next if ($bind eq "LOCL"); + # Ignore hidden symbols. + next if ($oth eq "H"); + # Ignore undefined symbols. + next if ($shndx eq "UNDEF"); + # Error out for unhandled cases. + if ($bind !~ /^(GLOB|WEAK)/ or $oth ne "D") { + die "unhandled symbol:\n$_"; + } + + # Remember symbol. + $sym_hash{$name}++; + } + close ELFDUMP or die "$elfdump error"; +} else { + open READELF, 'readelf -s -W '.(join ' ',@OBJECTS).'|' or die $!; + # Process each symbol. + while () { + chomp; + + # Ignore empty lines. + next if (/^$/); + + # Ignore object name header. + next if (/^File: .*$/); + + # Ignore table header lines. + next if (/^Symbol table.*contains.*:/); + next if (/Num:.*Value.*Size/); + + # Split table. + (undef, undef, undef, undef, $bind, $vis, $ndx, $name) = split; + + # Error out for unknown input. + die "unknown input line:\n$_" unless defined($bind); + + # Ignore local symbols. + next if ($bind eq "LOCAL"); + # Ignore hidden symbols. + next if ($vis eq "HIDDEN"); + # Ignore undefined symbols. + next if ($ndx eq "UND"); + # Error out for unhandled cases. + if ($bind !~ /^(GLOBAL|WEAK)/ or $vis ne "DEFAULT") { + die "unhandled symbol:\n$_"; + } + + # Remember symbol. + $sym_hash{$name}++; + } + close READELF or die "readelf error"; +} + +########## +# The various types of glob patterns. +# +# A glob pattern that is to be applied to the demangled name: 'cxx'. +# A glob patterns that applies directly to the name in the .o files: 'glob'. +# This pattern is ignored; used for local variables (usually just '*'): 'ign'. + +# The type of the current pattern. +my $glob = 'glob'; + +# We're currently inside `extern "C++"', which Sun ld doesn't understand. +my $in_extern = 0; + +# The c++filt command to use. This *must* be GNU c++filt; the Sun Studio +# c++filt doesn't handle the GNU mangling style. +my $cxxfilt = $ENV{'CXXFILT'} || "c++filt"; + +# The current version name. +my $current_version = ""; + +# Was there any attempt to match a symbol to this version? +my $matches_attempted; + +# The number of versions which matched this symbol. +my $matched_symbols; + +open F,$symvers or die $!; + +# Print information about generating this file +print "# This file was generated by make_sunver.pl. DO NOT EDIT!\n"; +print "# It was generated by:\n"; +printf "# %s %s %s\n", $0, $symvers, (join ' ',@ARGV); +printf "# Omitted archives with corresponding shared libraries: %s\n", + (join ' ', @SHAREDOBJS) if $#SHAREDOBJS >= 0; +print "#\n\n"; + +while () { + # Lines of the form '};' + if (/^([ \t]*)(\}[ \t]*;[ \t]*)$/) { + $glob = 'glob'; + if ($in_extern) { + $in_extern--; + print "$1##$2\n"; + } else { + print; + } + next; + } + + # Lines of the form '} SOME_VERSION_NAME_1.0;' + if (/^[ \t]*\}[ \tA-Z0-9_.a-z]+;[ \t]*$/) { + $glob = 'glob'; + # We tried to match symbols agains this version, but none matched. + # Emit dummy hidden symbol to avoid marking this version WEAK. + if ($matches_attempted && $matched_symbols == 0) { + print " hidden:\n"; + print " .force_WEAK_off_$current_version = DATA S0x0 V0x0;\n"; + } + print; next; + } + + # Comment and blank lines + if (/^[ \t]*\#/) { print; next; } + if (/^[ \t]*$/) { print; next; } + + # Lines of the form '{' + if (/^([ \t]*){$/) { + if ($in_extern) { + print "$1##{\n"; + } else { + print; + } + next; + } + + # Lines of the form 'SOME_VERSION_NAME_1.1 {' + if (/^([A-Z0-9_.]+)[ \t]+{$/) { + # Record version name. + $current_version = $1; + # Reset match attempts, #matched symbols for this version. + $matches_attempted = 0; + $matched_symbols = 0; + print; + next; + } + + # Ignore 'global:' + if (/^[ \t]*global:$/) { print; next; } + + # After 'local:', globs should be ignored, they won't be exported. + if (/^[ \t]*local:$/) { + $glob = 'ign'; + print; + next; + } + + # After 'extern "C++"', globs are C++ patterns + if (/^([ \t]*)(extern \"C\+\+\"[ \t]*)$/) { + $in_extern++; + $glob = 'cxx'; + # Need to comment, Sun ld cannot handle this. + print "$1##$2\n"; next; + } + + # Chomp newline now we're done with passing through the input file. + chomp; + + # Catch globs. Note that '{}' is not allowed in globs by this script, + # so only '*' and '[]' are available. + if (/^([ \t]*)([^ \t;{}#]+);?[ \t]*$/) { + my $ws = $1; + my $ptn = $2; + # Turn the glob into a regex by replacing '*' with '.*', '?' with '.'. + # Keep $ptn so we can still print the original form. + ($pattern = $ptn) =~ s/\*/\.\*/g; + $pattern =~ s/\?/\./g; + + if ($glob eq 'ign') { + # We're in a local: * section; just continue. + print "$_\n"; + next; + } + + # Print the glob commented for human readers. + print "$ws##$ptn ($glob)\n"; + # We tried to match a symbol to this version. + $matches_attempted++; + + if ($glob eq 'glob') { + my %ptn_syms = (); + + # Match ptn against symbols in %sym_hash. + foreach my $sym (keys %sym_hash) { + # Maybe it matches one of the patterns based on the symbol in + # the .o file. + $ptn_syms{$sym}++ if ($sym =~ /^$pattern$/); + } + + foreach my $sym (sort keys(%ptn_syms)) { + $matched_symbols++; + print "$ws$sym;\n"; + } + } elsif ($glob eq 'cxx') { + my %dem_syms = (); + + # Verify that we're actually using GNU c++filt. Other versions + # most likely cannot handle GNU style symbol mangling. + my $cxxout = `$cxxfilt --version 2>&1`; + $cxxout =~ m/GNU/ or die "$0 requires GNU c++filt to function"; + + # Talk to c++filt through a pair of file descriptors. + # Need to start a fresh instance per pattern, otherwise the + # process grows to 500+ MB. + my $pid = open2(*FILTIN, *FILTOUT, $cxxfilt) or die $!; + + # Match ptn against symbols in %sym_hash. + foreach my $sym (keys %sym_hash) { + # No? Well, maybe its demangled form matches one of those + # patterns. + printf FILTOUT "%s\n",$sym; + my $dem = ; + chomp $dem; + $dem_syms{$sym}++ if ($dem =~ /^$pattern$/); + } + + close FILTOUT or die "c++filt error"; + close FILTIN or die "c++filt error"; + # Need to wait for the c++filt process to avoid lots of zombies. + waitpid $pid, 0; + + foreach my $sym (sort keys(%dem_syms)) { + $matched_symbols++; + print "$ws$sym;\n"; + } + } else { + # No? Well, then ignore it. + } + next; + } + # Important sanity check. This script can't handle lots of formats + # that GNU ld can, so be sure to error out if one is seen! + die "strange line `$_'"; +} +close F; diff --git a/deps/libffi/man/Makefile.am b/deps/libffi/man/Makefile.am new file mode 100644 index 00000000000000..afcbfb69f1d3de --- /dev/null +++ b/deps/libffi/man/Makefile.am @@ -0,0 +1,8 @@ +## Process this with automake to create Makefile.in + +AUTOMAKE_OPTIONS=foreign + +EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 + +man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3 + diff --git a/deps/libffi/man/ffi.3 b/deps/libffi/man/ffi.3 new file mode 100644 index 00000000000000..1f1d3031c99772 --- /dev/null +++ b/deps/libffi/man/ffi.3 @@ -0,0 +1,41 @@ +.Dd February 15, 2008 +.Dt FFI 3 +.Sh NAME +.Nm FFI +.Nd Foreign Function Interface +.Sh LIBRARY +libffi, -lffi +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Ft void +.Fo ffi_prep_cif_var +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nfixedargs" +.Fa "unsigned int ntotalargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Ft void +.Fo ffi_call +.Fa "ffi_cif *cif" +.Fa "void (*fn)(void)" +.Fa "void *rvalue" +.Fa "void **avalue" +.Fc +.Sh DESCRIPTION +The foreign function interface provides a mechanism by which a function can +generate a call to another function at runtime without requiring knowledge of +the called function's interface at compile time. +.Sh SEE ALSO +.Xr ffi_prep_cif 3 , +.Xr ffi_prep_cif_var 3 , +.Xr ffi_call 3 diff --git a/deps/libffi/man/ffi_call.3 b/deps/libffi/man/ffi_call.3 new file mode 100644 index 00000000000000..5351513f90d86e --- /dev/null +++ b/deps/libffi/man/ffi_call.3 @@ -0,0 +1,103 @@ +.Dd February 15, 2008 +.Dt ffi_call 3 +.Sh NAME +.Nm ffi_call +.Nd Invoke a foreign function. +.Sh SYNOPSIS +.In ffi.h +.Ft void +.Fo ffi_call +.Fa "ffi_cif *cif" +.Fa "void (*fn)(void)" +.Fa "void *rvalue" +.Fa "void **avalue" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_call +function provides a simple mechanism for invoking a function without +requiring knowledge of the function's interface at compile time. +.Fa fn +is called with the values retrieved from the pointers in the +.Fa avalue +array. The return value from +.Fa fn +is placed in storage pointed to by +.Fa rvalue . +.Fa cif +contains information describing the data types, sizes and alignments of the +arguments to and return value from +.Fa fn , +and must be initialized with +.Nm ffi_prep_cif +before it is used with +.Nm ffi_call . +.Pp +.Fa rvalue +must point to storage that is sizeof(ffi_arg) or larger for non-floating point +types. For smaller-sized return value types, the +.Nm ffi_arg +or +.Nm ffi_sarg +integral type must be used to hold +the return value. +.Sh EXAMPLES +.Bd -literal +#include +#include + +unsigned char +foo(unsigned int, float); + +int +main(int argc, const char **argv) +{ + ffi_cif cif; + ffi_type *arg_types[2]; + void *arg_values[2]; + ffi_status status; + + // Because the return value from foo() is smaller than sizeof(long), it + // must be passed as ffi_arg or ffi_sarg. + ffi_arg result; + + // Specify the data type of each argument. Available types are defined + // in . + arg_types[0] = &ffi_type_uint; + arg_types[1] = &ffi_type_float; + + // Prepare the ffi_cif structure. + if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, + 2, &ffi_type_uint8, arg_types)) != FFI_OK) + { + // Handle the ffi_status error. + } + + // Specify the values of each argument. + unsigned int arg1 = 42; + float arg2 = 5.1; + + arg_values[0] = &arg1; + arg_values[1] = &arg2; + + // Invoke the function. + ffi_call(&cif, FFI_FN(foo), &result, arg_values); + + // The ffi_arg 'result' now contains the unsigned char returned from foo(), + // which can be accessed by a typecast. + printf("result is %hhu", (unsigned char)result); + + return 0; +} + +// The target function. +unsigned char +foo(unsigned int x, float y) +{ + unsigned char result = x - y; + return result; +} +.Ed +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_prep_cif 3 diff --git a/deps/libffi/man/ffi_prep_cif.3 b/deps/libffi/man/ffi_prep_cif.3 new file mode 100644 index 00000000000000..ab2be8adc17a19 --- /dev/null +++ b/deps/libffi/man/ffi_prep_cif.3 @@ -0,0 +1,68 @@ +.Dd February 15, 2008 +.Dt ffi_prep_cif 3 +.Sh NAME +.Nm ffi_prep_cif +.Nd Prepare a +.Nm ffi_cif +structure for use with +.Nm ffi_call +. +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_prep_cif +function prepares a +.Nm ffi_cif +structure for use with +.Nm ffi_call +. +.Fa abi +specifies a set of calling conventions to use. +.Fa atypes +is an array of +.Fa nargs +pointers to +.Nm ffi_type +structs that describe the data type, size and alignment of each argument. +.Fa rtype +points to an +.Nm ffi_type +that describes the data type, size and alignment of the +return value. Note that to call a variadic function +.Nm ffi_prep_cif_var +must be used instead. +.Sh RETURN VALUES +Upon successful completion, +.Nm ffi_prep_cif +returns +.Nm FFI_OK . +It will return +.Nm FFI_BAD_TYPEDEF +if +.Fa cif +is +.Nm NULL +or +.Fa atypes +or +.Fa rtype +is malformed. If +.Fa abi +does not refer to a valid ABI, +.Nm FFI_BAD_ABI +will be returned. Available ABIs are +defined in +.Nm . +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_call 3 , +.Xr ffi_prep_cif_var 3 diff --git a/deps/libffi/man/ffi_prep_cif_var.3 b/deps/libffi/man/ffi_prep_cif_var.3 new file mode 100644 index 00000000000000..7e19d0b070f17f --- /dev/null +++ b/deps/libffi/man/ffi_prep_cif_var.3 @@ -0,0 +1,73 @@ +.Dd January 25, 2011 +.Dt ffi_prep_cif_var 3 +.Sh NAME +.Nm ffi_prep_cif_var +.Nd Prepare a +.Nm ffi_cif +structure for use with +.Nm ffi_call +for variadic functions. +.Sh SYNOPSIS +.In ffi.h +.Ft ffi_status +.Fo ffi_prep_cif_var +.Fa "ffi_cif *cif" +.Fa "ffi_abi abi" +.Fa "unsigned int nfixedargs" +.Fa "unsigned int ntotalargs" +.Fa "ffi_type *rtype" +.Fa "ffi_type **atypes" +.Fc +.Sh DESCRIPTION +The +.Nm ffi_prep_cif_var +function prepares a +.Nm ffi_cif +structure for use with +.Nm ffi_call +for variadic functions. +.Fa abi +specifies a set of calling conventions to use. +.Fa atypes +is an array of +.Fa ntotalargs +pointers to +.Nm ffi_type +structs that describe the data type, size and alignment of each argument. +.Fa rtype +points to an +.Nm ffi_type +that describes the data type, size and alignment of the +return value. +.Fa nfixedargs +must contain the number of fixed (non-variadic) arguments. +Note that to call a non-variadic function +.Nm ffi_prep_cif +must be used. +.Sh RETURN VALUES +Upon successful completion, +.Nm ffi_prep_cif_var +returns +.Nm FFI_OK . +It will return +.Nm FFI_BAD_TYPEDEF +if +.Fa cif +is +.Nm NULL +or +.Fa atypes +or +.Fa rtype +is malformed. If +.Fa abi +does not refer to a valid ABI, +.Nm FFI_BAD_ABI +will be returned. Available ABIs are +defined in +.Nm +. +.Sh SEE ALSO +.Xr ffi 3 , +.Xr ffi_call 3 , +.Xr ffi_prep_cif 3 diff --git a/deps/libffi/msvc_build/aarch64/aarch64_include/ffi.h b/deps/libffi/msvc_build/aarch64/aarch64_include/ffi.h new file mode 100644 index 00000000000000..2b0b693998a41c --- /dev/null +++ b/deps/libffi/msvc_build/aarch64/aarch64_include/ffi.h @@ -0,0 +1,511 @@ +/* -----------------------------------------------------------------*-C-*- + libffi 3.3-rc0 - Copyright (c) 2011, 2014 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + 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. + + ----------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------- + Most of the API is documented in doc/libffi.texi. + + The raw API is designed to bypass some of the argument packing and + unpacking on architectures for which it can be avoided. Routines + are provided to emulate the raw API if the underlying platform + doesn't allow faster implementation. + + More details on the raw API can be found in: + + http://gcc.gnu.org/ml/java/1999-q3/msg00138.html + + and + + http://gcc.gnu.org/ml/java/1999-q3/msg00174.html + -------------------------------------------------------------------- */ + +#ifndef LIBFFI_H +#define LIBFFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Specify which architecture libffi is configured for. */ +#ifndef AARCH64 +#define AARCH64 +#endif + +/* ---- System configuration information --------------------------------- */ + +#include + +#ifndef LIBFFI_ASM + +#if defined(_MSC_VER) && !defined(__clang__) +#define __attribute__(X) +#endif + +#include +#include + +/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example). + But we can find it either under the correct ANSI name, or under GNU + C's internal name. */ + +#define FFI_64_BIT_MAX 9223372036854775807 + +#ifdef LONG_LONG_MAX +# define FFI_LONG_LONG_MAX LONG_LONG_MAX +#else +# ifdef LLONG_MAX +# define FFI_LONG_LONG_MAX LLONG_MAX +# ifdef _AIX52 /* or newer has C99 LLONG_MAX */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif /* _AIX52 or newer */ +# else +# ifdef __GNUC__ +# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ +# endif +# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */ +# ifndef __PPC64__ +# if defined (__IBMC__) || defined (__IBMCPP__) +# define FFI_LONG_LONG_MAX LONGLONG_MAX +# endif +# endif /* __PPC64__ */ +# undef FFI_64_BIT_MAX +# define FFI_64_BIT_MAX 9223372036854775807LL +# endif +# endif +#endif + +/* The closure code assumes that this works on pointers, i.e. a size_t + can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + struct _ffi_type **elements; +} ffi_type; + +/* Need minimal decorations for DLLs to work on Windows. GCC has + autoimport and autoexport. Always mark externally visible symbols + as dllimport for MSVC clients, even if it means an extra indirection + when using the static version of the library. + Besides, as a workaround, they can define FFI_BUILDING if they + *know* they are going to link with the static library. */ +#if defined _MSC_VER +# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */ +# define FFI_API __declspec(dllexport) +# elif !defined FFI_BUILDING /* Importing libffi.DLL */ +# define FFI_API __declspec(dllimport) +# else /* Building/linking static library */ +# define FFI_API +# endif +#else +# define FFI_API +#endif + +/* The externally visible type declarations also need the MSVC DLL + decorations, or they will not be exported from the object file. */ +#if defined LIBFFI_HIDE_BASIC_TYPES +# define FFI_EXTERN FFI_API +#else +# define FFI_EXTERN extern FFI_API +#endif + +#ifndef LIBFFI_HIDE_BASIC_TYPES +#if SCHAR_MAX == 127 +# define ffi_type_uchar ffi_type_uint8 +# define ffi_type_schar ffi_type_sint8 +#else + #error "char size not supported" +#endif + +#if SHRT_MAX == 32767 +# define ffi_type_ushort ffi_type_uint16 +# define ffi_type_sshort ffi_type_sint16 +#elif SHRT_MAX == 2147483647 +# define ffi_type_ushort ffi_type_uint32 +# define ffi_type_sshort ffi_type_sint32 +#else + #error "short size not supported" +#endif + +#if INT_MAX == 32767 +# define ffi_type_uint ffi_type_uint16 +# define ffi_type_sint ffi_type_sint16 +#elif INT_MAX == 2147483647 +# define ffi_type_uint ffi_type_uint32 +# define ffi_type_sint ffi_type_sint32 +#elif INT_MAX == 9223372036854775807 +# define ffi_type_uint ffi_type_uint64 +# define ffi_type_sint ffi_type_sint64 +#else + #error "int size not supported" +#endif + +#if LONG_MAX == 2147483647 +# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX + #error "no 64-bit data type supported" +# endif +#elif LONG_MAX != FFI_64_BIT_MAX + #error "long size not supported" +#endif + +#if LONG_MAX == 2147483647 +# define ffi_type_ulong ffi_type_uint32 +# define ffi_type_slong ffi_type_sint32 +#elif LONG_MAX == FFI_64_BIT_MAX +# define ffi_type_ulong ffi_type_uint64 +# define ffi_type_slong ffi_type_sint64 +#else + #error "long size not supported" +#endif + +/* These are defined in types.c. */ +FFI_EXTERN ffi_type ffi_type_void; +FFI_EXTERN ffi_type ffi_type_uint8; +FFI_EXTERN ffi_type ffi_type_sint8; +FFI_EXTERN ffi_type ffi_type_uint16; +FFI_EXTERN ffi_type ffi_type_sint16; +FFI_EXTERN ffi_type ffi_type_uint32; +FFI_EXTERN ffi_type ffi_type_sint32; +FFI_EXTERN ffi_type ffi_type_uint64; +FFI_EXTERN ffi_type ffi_type_sint64; +FFI_EXTERN ffi_type ffi_type_float; +FFI_EXTERN ffi_type ffi_type_double; +FFI_EXTERN ffi_type ffi_type_pointer; + +#ifndef _M_ARM64 +FFI_EXTERN ffi_type ffi_type_longdouble; +#else +#define ffi_type_longdouble ffi_type_double +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_EXTERN ffi_type ffi_type_complex_float; +FFI_EXTERN ffi_type ffi_type_complex_double; +#if 1 +FFI_EXTERN ffi_type ffi_type_complex_longdouble; +#else +#define ffi_type_complex_longdouble ffi_type_complex_double +#endif +#endif +#endif /* LIBFFI_HIDE_BASIC_TYPES */ + +typedef enum { + FFI_OK = 0, + FFI_BAD_TYPEDEF, + FFI_BAD_ABI +} ffi_status; + +typedef struct { + ffi_abi abi; + unsigned nargs; + ffi_type **arg_types; + ffi_type *rtype; + unsigned bytes; + unsigned flags; +#ifdef FFI_EXTRA_CIF_FIELDS + FFI_EXTRA_CIF_FIELDS; +#endif +} ffi_cif; + +/* ---- Definitions for the raw API -------------------------------------- */ + +#ifndef FFI_SIZEOF_ARG +# if LONG_MAX == 2147483647 +# define FFI_SIZEOF_ARG 4 +# elif LONG_MAX == FFI_64_BIT_MAX +# define FFI_SIZEOF_ARG 8 +# endif +#endif + +#ifndef FFI_SIZEOF_JAVA_RAW +# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#endif + +typedef union { + ffi_sarg sint; + ffi_arg uint; + float flt; + char data[FFI_SIZEOF_ARG]; + void* ptr; +} ffi_raw; + +#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 +/* This is a special case for mips64/n32 ABI (and perhaps others) where + sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ +typedef union { + signed int sint; + unsigned int uint; + float flt; + char data[FFI_SIZEOF_JAVA_RAW]; + void* ptr; +} ffi_java_raw; +#else +typedef ffi_raw ffi_java_raw; +#endif + + +FFI_API +void ffi_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_raw *avalue); + +FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); +FFI_API size_t ffi_raw_size (ffi_cif *cif); + +/* This is analogous to the raw API, except it uses Java parameter + packing, even on 64-bit machines. I.e. on 64-bit machines longs + and doubles are followed by an empty 64-bit word. */ + +FFI_API +void ffi_java_raw_call (ffi_cif *cif, + void (*fn)(void), + void *rvalue, + ffi_java_raw *avalue); + +FFI_API +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); +FFI_API +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); +FFI_API +size_t ffi_java_raw_size (ffi_cif *cif); + +/* ---- Definitions for closures ----------------------------------------- */ + +#if FFI_CLOSURES + +#ifdef _MSC_VER +__declspec(align(8)) +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; +} ffi_closure +#ifdef __GNUC__ + __attribute__((aligned (8))) +#endif + ; + +#ifndef __GNUC__ +# ifdef __sgi +# pragma pack 0 +# endif +#endif + +FFI_API void *ffi_closure_alloc (size_t size, void **code); +FFI_API void ffi_closure_free (void *); + +FFI_API ffi_status +ffi_prep_closure (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405) + __attribute__((deprecated ("use ffi_prep_closure_loc instead"))) +#elif defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((deprecated)) +#endif + ; + +FFI_API ffi_status +ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void*codeloc); + +#ifdef __sgi +# pragma pack 8 +#endif +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_raw*,void*); + void *user_data; + +} ffi_raw_closure; + +typedef struct { +#if 0 + void *trampoline_table; + void *trampoline_table_entry; +#else + char tramp[FFI_TRAMPOLINE_SIZE]; +#endif + + ffi_cif *cif; + +#if !FFI_NATIVE_RAW_API + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate + handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; + +#endif + + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); + void *user_data; + +} ffi_java_raw_closure; + +FFI_API ffi_status +ffi_prep_raw_closure (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc); + +FFI_API ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data); + +FFI_API ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc); + +#endif /* FFI_CLOSURES */ + +#ifdef FFI_GO_CLOSURES + +typedef struct { + void *tramp; + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); +} ffi_go_closure; + +FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*)); + +FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); + +#endif /* FFI_GO_CLOSURES */ + +/* ---- Public interface definition -------------------------------------- */ + +FFI_API +ffi_status ffi_prep_cif(ffi_cif *cif, + ffi_abi abi, + unsigned int nargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes); + +FFI_API +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + size_t *offsets); + +/* Useful for eliminating compiler warnings. */ +#define FFI_FN(f) ((void (*)(void))f) + +/* ---- Definitions shared with assembly code ---------------------------- */ + +#endif + +/* If these change, update src/mips/ffitarget.h. */ +#define FFI_TYPE_VOID 0 +#define FFI_TYPE_INT 1 +#define FFI_TYPE_FLOAT 2 +#define FFI_TYPE_DOUBLE 3 +#ifndef _M_ARM64 +#define FFI_TYPE_LONGDOUBLE 4 +#else +#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +#endif +#define FFI_TYPE_UINT8 5 +#define FFI_TYPE_SINT8 6 +#define FFI_TYPE_UINT16 7 +#define FFI_TYPE_SINT16 8 +#define FFI_TYPE_UINT32 9 +#define FFI_TYPE_SINT32 10 +#define FFI_TYPE_UINT64 11 +#define FFI_TYPE_SINT64 12 +#define FFI_TYPE_STRUCT 13 +#define FFI_TYPE_POINTER 14 +#define FFI_TYPE_COMPLEX 15 +/* This should always refer to the last type code (for sanity checks). */ +#define FFI_TYPE_LAST FFI_TYPE_COMPLEX + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h b/deps/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h new file mode 100644 index 00000000000000..b3d89b03ec9af1 --- /dev/null +++ b/deps/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h @@ -0,0 +1,219 @@ +/* fficonfig.h. Generated from fficonfig.h.in by configure. */ +/* fficonfig.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to the flags needed for the .section .eh_frame directive. */ +#define EH_FRAME_FLAGS "a" + +/* Define this if you want extra debugging. */ +/* #undef FFI_DEBUG */ + +/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ +/* #undef FFI_EXEC_TRAMPOLINE_TABLE */ + +/* Define this if you want to enable pax emulated trampolines */ +/* #undef FFI_MMAP_EXEC_EMUTRAMP_PAX */ + +/* Cannot use malloc on this target, so, we revert to alternative means */ +/* #undef FFI_MMAP_EXEC_WRIT */ + +/* Define this if you do not want support for the raw API. */ +/* #undef FFI_NO_RAW_API */ + +/* Define this if you do not want support for aggregate types. */ +/* #undef FFI_NO_STRUCTS */ + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +/*#define HAVE_ALLOCA_H 1 */ + +/* Define if your assembler supports .cfi_* directives. */ +#define HAVE_AS_CFI_PSEUDO_OP 1 + +/* Define if your assembler supports .register. */ +/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ + +/* Define if the compiler uses zarch features. */ +/* #undef HAVE_AS_S390_ZARCH */ + +/* Define if your assembler and linker support unaligned PC relative relocs. + */ +/* #undef HAVE_AS_SPARC_UA_PCREL */ + +/* Define if your assembler supports unwind section type. */ +/* #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE */ + +/* Define if your assembler supports PC relative relocs. */ +/* #undef HAVE_AS_X86_PCREL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define if __attribute__((visibility("hidden"))) is supported. */ +#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have the long double type and it is bigger than a double */ +#define HAVE_LONG_DOUBLE 1 + +/* Define if you support more than one size of the long double type */ +/* #undef HAVE_LONG_DOUBLE_VARIANT */ + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mkostemp' function. */ +#define HAVE_MKOSTEMP 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define if mmap with MAP_ANON(YMOUS) works. */ +#define HAVE_MMAP_ANON 1 + +/* Define if mmap of /dev/zero works. */ +#define HAVE_MMAP_DEV_ZERO 1 + +/* Define if read-only mmap of a plain file works. */ +#define HAVE_MMAP_FILE 1 + +/* Define if .eh_frame sections should be read-only. */ +#define HAVE_RO_EH_FRAME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_STDLIB_H 0 +#define LACKS_STDLIB_H 1 +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if GNU symbol versioning is used for libatomic. */ +#define LIBFFI_GNU_SYMBOL_VERSIONING 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Name of package */ +#define PACKAGE "libffi" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "http://github.com/libffi/libffi/issues" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libffi" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libffi 3.3-rc0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libffi" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.3-rc0" + +/* The size of `double', as computed by sizeof. */ +#define SIZEOF_DOUBLE 8 + +/* The size of `long double', as computed by sizeof. */ +#define SIZEOF_LONG_DOUBLE 8 + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 8 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if symbols are underscored. */ +/* #undef SYMBOL_UNDERSCORE */ + +/* Define this if you are using Purify and want to suppress spurious messages. + */ +/* #undef USING_PURIFY */ + +/* Version number of package */ +#define VERSION "3.3-rc0" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + + +#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +#ifdef LIBFFI_ASM +#ifdef __APPLE__ +#define FFI_HIDDEN(name) .private_extern name +#else +#define FFI_HIDDEN(name) .hidden name +#endif +#else +#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) +#endif +#else +#ifdef LIBFFI_ASM +#define FFI_HIDDEN(name) +#else +#define FFI_HIDDEN +#endif +#endif + diff --git a/deps/libffi/msvcc.sh b/deps/libffi/msvcc.sh new file mode 100755 index 00000000000000..301e2fbd6840fe --- /dev/null +++ b/deps/libffi/msvcc.sh @@ -0,0 +1,353 @@ +#!/bin/sh + +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the MSVC wrappificator. +# +# The Initial Developer of the Original Code is +# Timothy Wall . +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Daniel Witte +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +# +# GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC +# format and translated into something sensible for cl or ml. +# + +args_orig=$@ +args="-nologo -W3" +linkargs= +static_crt= +debug_crt= +cl="cl" +ml="ml" +safeseh="-safeseh" +output= +libpaths= +libversion=8 +verbose= + +while [ $# -gt 0 ] +do + case $1 + in + --verbose) + verbose=1 + shift 1 + ;; + --version) + args="-help" + shift 1 + ;; + -fexceptions) + # Don't enable exceptions for now. + #args="$args -EHac" + shift 1 + ;; + -m32) + shift 1 + ;; + -m64) + ml="ml64" # "$MSVC/x86_amd64/ml64" + safeseh= + shift 1 + ;; + -marm) + ml='armasm' + safeseh= + shift 1 + ;; + -marm64) + ml='armasm64' + safeseh= + shift 1 + ;; + -clang-cl) + cl="clang-cl" + shift 1 + ;; + -O0) + args="$args -Od" + shift 1 + ;; + -O*) + # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG + # case below) are not compatible with optimization flags and will + # cause the build to fail. Therefore, drop the optimization flag if + # -DFFI_DEBUG is also set. + case $args_orig in + *-DFFI_DEBUG*) + args="$args" + ;; + *) + # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive + # project doesn't support MSVC and therefore ends up trying to + # use -O3. Use the equivalent "max optimization" flag for MSVC + # instead of erroring out. + case $1 in + -O3) + args="$args -O2" + ;; + *) + args="$args $1" + ;; + esac + opt="true" + ;; + esac + shift 1 + ;; + -g) + # Enable debug symbol generation. + args="$args -Zi" + shift 1 + ;; + -DFFI_DEBUG) + # Enable runtime error checks. + args="$args -RTC1" + defines="$defines $1" + shift 1 + ;; + -DUSE_STATIC_RTL) + # Link against static CRT. + static_crt=1 + shift 1 + ;; + -DUSE_DEBUG_RTL) + # Link against debug CRT. + debug_crt=1 + shift 1 + ;; + -c) + args="$args -c" + args="$(echo $args | sed 's%/Fe%/Fo%g')" + single="-c" + shift 1 + ;; + -D*=*) + name="$(echo $1|sed 's/-D\([^=][^=]*\)=.*/\1/g')" + value="$(echo $1|sed 's/-D[^=][^=]*=//g')" + args="$args -D${name}='$value'" + defines="$defines -D${name}='$value'" + shift 1 + ;; + -D*) + args="$args $1" + defines="$defines $1" + shift 1 + ;; + -I) + p=$(cygpath -ma "$2") + args="$args -I\"$p\"" + includes="$includes -I\"$p\"" + shift 2 + ;; + -I*) + p=$(cygpath -ma "${1#-I}") + args="$args -I\"$p\"" + includes="$includes -I\"$p\"" + shift 1 + ;; + -L) + p=$(cygpath -ma $2) + linkargs="$linkargs -LIBPATH:$p" + shift 2 + ;; + -L*) + p=$(cygpath -ma ${1#-L}) + linkargs="$linkargs -LIBPATH:$p" + shift 1 + ;; + -link) + # add next argument verbatim to linker args + linkargs="$linkargs $2" + shift 2 + ;; + -l*) + case $1 + in + -lffi) + linkargs="$linkargs lib${1#-l}-${libversion}.lib" + ;; + *) + # ignore other libraries like -lm, hope they are + # covered by MSVCRT + # linkargs="$linkargs ${1#-l}.lib" + ;; + esac + shift 1 + ;; + -W|-Wextra) + # TODO map extra warnings + shift 1 + ;; + -Wall) + # -Wall on MSVC is overzealous, and we already build with -W3. Nothing + # to do here. + shift 1 + ;; + -pedantic) + # libffi tests -pedantic with -Wall, so drop it also. + shift 1 + ;; + -warn) + # ignore -warn all from libtool as well. + if test "$2" = "all"; then + shift 2 + else + args="$args -warn" + shift 1 + fi + ;; + -Werror) + args="$args -WX" + shift 1 + ;; + -W*) + # TODO map specific warnings + shift 1 + ;; + -S) + args="$args -FAs" + shift 1 + ;; + -o) + outdir="$(dirname $2)" + base="$(basename $2|sed 's/\.[^.]*//g')" + if [ -n "$single" ]; then + output="-Fo$2" + else + output="-Fe$2" + fi + armasm_output="-o $2" + if [ -n "$assembly" ]; then + args="$args $output" + else + args="$args $output -Fd$outdir/$base -Fp$outdir/$base -Fa$outdir/$base" + fi + shift 2 + ;; + *.S) + src="$(cygpath -ma $1)" + assembly="true" + shift 1 + ;; + *.c) + args="$args $(cygpath -ma $1)" + shift 1 + ;; + *) + # Assume it's an MSVC argument, and pass it through. + args="$args $1" + shift 1 + ;; + esac +done + +if [ -n "$linkargs" ]; then + + # If -Zi is specified, certain optimizations are implicitly disabled + # by MSVC. Add back those optimizations if this is an optimized build. + # NOTE: These arguments must come after all others. + if [ -n "$opt" ]; then + linkargs="$linkargs -OPT:REF -OPT:ICF -INCREMENTAL:NO" + fi + + args="$args -link $linkargs" +fi + +if [ -n "$static_crt" ]; then + md=-MT +else + md=-MD +fi + +if [ -n "$debug_crt" ]; then + md="${md}d" +fi + +if [ -n "$assembly" ]; then + if [ -z "$outdir" ]; then + outdir="." + fi + ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')" + + if [ $ml = "armasm" ]; then + defines="$defines -D_M_ARM" + fi + + if [ $ml = "armasm64" ]; then + defines="$defines -D_M_ARM64" + fi + + if test -n "$verbose"; then + echo "$cl -nologo -EP $includes $defines $src > $ppsrc" + fi + + eval "\"$cl\" -nologo -EP $includes $defines $src" > $ppsrc || exit $? + output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')" + if [ $ml = "armasm" ]; then + args="-nologo -g -oldit $armasm_output $ppsrc -errorReport:prompt" + elif [ $ml = "armasm64" ]; then + args="-nologo -g $armasm_output $ppsrc -errorReport:prompt" + else + args="-nologo $safeseh $single $output $ppsrc" + fi + + if test -n "$verbose"; then + echo "$ml $args" + fi + + eval "\"$ml\" $args" + result=$? + + # required to fix ml64 broken output? + #mv *.obj $outdir +else + args="$md $args" + + if test -n "$verbose"; then + echo "$cl $args" + fi + # Return an error code of 1 if an invalid command line parameter is passed + # instead of just ignoring it. Any output that is not a warning or an + # error is filtered so this command behaves more like gcc. cl.exe prints + # the name of the compiled file otherwise, which breaks the dejagnu checks + # for excess warnings and errors. + eval "(\"$cl\" $args 2>&1 1>&3 | \ + awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1 | \ + awk '/warning|error/'" + result=$? +fi + +exit $result + +# vim: noai:ts=4:sw=4 diff --git a/deps/libffi/preprocess_asm.py b/deps/libffi/preprocess_asm.py new file mode 100644 index 00000000000000..c5a219e2b68610 --- /dev/null +++ b/deps/libffi/preprocess_asm.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 + +import argparse +import os +from pathlib import Path +import re +import shlex +import shutil +import subprocess +import sys + + +def split_command(value): + if not value: + return None + value = value.strip() + if not value: + return None + return shlex.split(value, posix=(os.name != 'nt')) + + +def find_compiler(): + for var in ('CC', 'CXX'): + command = split_command(os.environ.get(var)) + if command and shutil.which(command[0]): + return command + + for name in ('cl.exe', 'cl', 'clang-cl.exe', 'clang-cl', 'cc', 'clang', 'gcc'): + path = shutil.which(name) + if path: + return [path] + + raise RuntimeError('Unable to locate a compiler for preprocessing assembly') + + +def find_armasm64(): + """Find armasm64.exe in the PATH or common Visual Studio locations.""" + # First check PATH + path = shutil.which('armasm64.exe') + if path: + return path + + # Check common VS locations via environment + vc_install_dir = os.environ.get('VCINSTALLDIR', '') + if vc_install_dir: + candidate = os.path.join(vc_install_dir, 'bin', 'Hostx64', 'arm64', 'armasm64.exe') + if os.path.exists(candidate): + return candidate + candidate = os.path.join(vc_install_dir, 'bin', 'Hostarm64', 'arm64', 'armasm64.exe') + if os.path.exists(candidate): + return candidate + + raise RuntimeError('Unable to locate armasm64.exe') + + +def normalize_path(value): + return str(value).strip().strip('"') + + +def unique_paths(paths): + seen = set() + result = [] + for path in paths: + if path in seen: + continue + seen.add(path) + result.append(path) + return result + + +def preprocess(args): + compiler = find_compiler() + input_path = normalize_path(args.input) + output = Path(normalize_path(args.output)) + include_dirs = [normalize_path(include_dir) for include_dir in args.include_dir] + include_dirs.append(str(output.parent)) + include_dirs = unique_paths(include_dirs) + output.parent.mkdir(parents=True, exist_ok=True) + + if os.name == 'nt' and Path(compiler[0]).name.lower() in ('cl.exe', 'cl', 'clang-cl.exe', 'clang-cl'): + command = compiler + ['/nologo', '/EP', '/TC'] + command += [f'/I{include_dir}' for include_dir in include_dirs] + command += [f'/D{define}' for define in args.define] + command += [input_path] + else: + command = compiler + ['-E', '-P', '-x', 'c'] + command += [f'-I{include_dir}' for include_dir in include_dirs] + command += [f'-D{define}' for define in args.define] + command += [input_path] + + result = subprocess.run(command, capture_output=True, text=True) + if result.returncode != 0: + sys.stderr.write(result.stderr) + raise RuntimeError(f'Preprocessing failed: {" ".join(command)}') + + # Strip all preprocessor directives that assemblers can't handle + # (e.g., armasm64.exe doesn't accept any # directives) + # Remove lines starting with # (preprocessor output like #line, # 1 "file", etc.) + lines = result.stdout.splitlines(keepends=True) + cleaned_lines = [line for line in lines if not line.lstrip().startswith('#')] + cleaned = ''.join(cleaned_lines) + + output.write_text(cleaned, encoding='utf-8') + + # If --assemble is specified, also run the assembler to produce an object file + if args.assemble: + assemble_output = Path(normalize_path(args.assemble)) + assemble_output.parent.mkdir(parents=True, exist_ok=True) + + armasm64 = find_armasm64() + asm_command = [armasm64, '-nologo', '-g', str(output), '-o', str(assemble_output)] + + asm_result = subprocess.run(asm_command, capture_output=True, text=True) + if asm_result.returncode != 0: + sys.stderr.write(asm_result.stderr) + sys.stderr.write(asm_result.stdout) + raise RuntimeError(f'Assembly failed: {" ".join(asm_command)}') + + +def main(argv=None): + parser = argparse.ArgumentParser(description='Preprocess libffi assembly source') + parser.add_argument('--input', required=True) + parser.add_argument('--output', required=True) + parser.add_argument('--include-dir', action='append', default=[]) + parser.add_argument('--define', action='append', default=[]) + parser.add_argument('--assemble', help='Also assemble the output to this object file') + args = parser.parse_args(argv) + + preprocess(args) + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/deps/libffi/src/aarch64/ffi.c b/deps/libffi/src/aarch64/ffi.c new file mode 100644 index 00000000000000..94c643b70ab678 --- /dev/null +++ b/deps/libffi/src/aarch64/ffi.c @@ -0,0 +1,1145 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +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. */ + +#if defined(__aarch64__) || defined(__arm64__)|| defined (_M_ARM64) +#include +#include +#include +#include +#include +#include +#include "internal.h" +#ifdef _WIN32 +#include /* FlushInstructionCache */ +#endif +#include + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +union _d +{ + UINT64 d; + UINT32 s[2]; +}; + +struct _v +{ + union _d d[2] __attribute__((aligned(16))); +}; + +struct call_context +{ + struct _v v[N_V_ARG_REG]; + UINT64 x[N_X_ARG_REG]; +}; + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#ifdef HAVE_ARM64E_PTRAUTH +#include +#endif +#include +#endif + +#else + +#if defined (__clang__) && defined (__APPLE__) +extern void sys_icache_invalidate (void *start, size_t len); +#endif + +static inline void +ffi_clear_cache (void *start, void *end) +{ +#if defined (__clang__) && defined (__APPLE__) + sys_icache_invalidate (start, (char *)end - (char *)start); +#elif defined (__GNUC__) + __builtin___clear_cache (start, end); +#elif defined (_WIN32) + FlushInstructionCache(GetCurrentProcess(), start, (char*)end - (char*)start); +#else +#error "Missing builtin to flush instruction cache" +#endif +} + +#endif + +/* A subroutine of is_vfp_type. Given a structure type, return the type code + of the first non-structure element. Recurse for structure elements. + Return -1 if the structure is in fact empty, i.e. no nested elements. */ + +static int +is_hfa0 (const ffi_type *ty) +{ + ffi_type **elements = ty->elements; + int i, ret = -1; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + ret = elements[i]->type; + if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX) + { + ret = is_hfa0 (elements[i]); + if (ret < 0) + continue; + } + break; + } + + return ret; +} + +/* A subroutine of is_vfp_type. Given a structure type, return true if all + of the non-structure elements are the same as CANDIDATE. */ + +static int +is_hfa1 (const ffi_type *ty, int candidate) +{ + ffi_type **elements = ty->elements; + int i; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + return 1; +} + +/* Determine if TY may be allocated to the FP registers. This is both an + fp scalar type as well as an homogenous floating point aggregate (HFA). + That is, a structure consisting of 1 to 4 members of all the same type, + where that type is an fp scalar. + + Returns non-zero iff TY is an HFA. The result is the AARCH64_RET_* + constant for the type. */ + +static int +is_vfp_type (const ffi_type *ty) +{ + ffi_type **elements; + int candidate, i; + size_t size, ele_count; + + /* Quickest tests first. */ + candidate = ty->type; + switch (candidate) + { + default: + return 0; + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + ele_count = 1; + goto done; + case FFI_TYPE_COMPLEX: + candidate = ty->elements[0]->type; + switch (candidate) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + ele_count = 2; + goto done; + } + return 0; + case FFI_TYPE_STRUCT: + break; + } + + /* No HFA types are smaller than 4 bytes, or larger than 64 bytes. */ + size = ty->size; + if (size < 4 || size > 64) + return 0; + + /* Find the type of the first non-structure member. */ + elements = ty->elements; + candidate = elements[0]->type; + if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX) + { + for (i = 0; ; ++i) + { + candidate = is_hfa0 (elements[i]); + if (candidate >= 0) + break; + } + } + + /* If the first member is not a floating point type, it's not an HFA. + Also quickly re-check the size of the structure. */ + switch (candidate) + { + case FFI_TYPE_FLOAT: + ele_count = size / sizeof(float); + if (size != ele_count * sizeof(float)) + return 0; + break; + case FFI_TYPE_DOUBLE: + ele_count = size / sizeof(double); + if (size != ele_count * sizeof(double)) + return 0; + break; + case FFI_TYPE_LONGDOUBLE: + ele_count = size / sizeof(long double); + if (size != ele_count * sizeof(long double)) + return 0; + break; + default: + return 0; + } + if (ele_count > 4) + return 0; + + /* Finally, make sure that all scalar elements are the same type. */ + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + /* All tests succeeded. Encode the result. */ + done: + return candidate * 4 + (4 - (int)ele_count); +} + +/* Representation of the procedure call argument marshalling + state. + + The terse state variable names match the names used in the AARCH64 + PCS. + + The struct area is allocated downwards from the top of the argument + area. It is used to hold copies of structures passed by value that are + bigger than 16 bytes. */ + +struct arg_state +{ + unsigned ngrn; /* Next general-purpose register number. */ + unsigned nsrn; /* Next vector register number. */ + size_t nsaa; /* Next stack offset. */ + size_t next_struct_area; /* Place to allocate big structs. */ + +#if defined (__APPLE__) + unsigned allocating_variadic; +#endif +}; + +/* Initialize a procedure call argument marshalling state. */ +static void +arg_init (struct arg_state *state, size_t size) +{ + state->ngrn = 0; + state->nsrn = 0; + state->nsaa = 0; + state->next_struct_area = size; +#if defined (__APPLE__) + state->allocating_variadic = 0; +#endif +} + +/* Allocate an aligned slot on the stack and return a pointer to it. */ +static void * +allocate_to_stack (struct arg_state *state, void *stack, + size_t alignment, size_t size) +{ + size_t nsaa = state->nsaa; + + /* Round up the NSAA to the larger of 8 or the natural + alignment of the argument's type. */ +#if defined (__APPLE__) + if (state->allocating_variadic && alignment < 8) + alignment = 8; +#else + if (alignment < 8) + alignment = 8; +#endif + + nsaa = FFI_ALIGN (nsaa, alignment); + state->nsaa = nsaa + size; + + return (char *)stack + nsaa; +} + +/* Allocate and copy a structure that is passed by value on the stack and + return a pointer to it. */ +static void * +allocate_and_copy_struct_to_stack (struct arg_state *state, void *stack, + size_t alignment, size_t size, void *value) +{ + size_t dest = state->next_struct_area - size; + + /* Round down to the natural alignment of the value. */ + dest = FFI_ALIGN_DOWN (dest, alignment); + state->next_struct_area = dest; + + return memcpy ((char *) stack + dest, value, size); +} + +static ffi_arg +extend_integer_type (void *source, int type) +{ + switch (type) + { + case FFI_TYPE_UINT8: + { + UINT8 u8; + memcpy (&u8, source, sizeof (u8)); + return u8; + } + case FFI_TYPE_SINT8: + { + SINT8 s8; + memcpy (&s8, source, sizeof (s8)); + return s8; + } + case FFI_TYPE_UINT16: + { + UINT16 u16; + memcpy (&u16, source, sizeof (u16)); + return u16; + } + case FFI_TYPE_SINT16: + { + SINT16 s16; + memcpy (&s16, source, sizeof (s16)); + return s16; + } + case FFI_TYPE_UINT32: + { + UINT32 u32; + memcpy (&u32, source, sizeof (u32)); + return u32; + } + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + { + SINT32 s32; + memcpy (&s32, source, sizeof (s32)); + return s32; + } + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + { + UINT64 u64; + memcpy (&u64, source, sizeof (u64)); + return u64; + } + case FFI_TYPE_POINTER: + { + uintptr_t uptr; + memcpy (&uptr, source, sizeof (uptr)); + return uptr; + } + default: + abort(); + } +} + +#if defined(_MSC_VER) +void extend_hfa_type (void *dest, void *src, int h); +#else +static void +extend_hfa_type (void *dest, void *src, int h) +{ + ssize_t f = h - AARCH64_RET_S4; + void *x0; + +#define BTI_J "hint #36" + asm volatile ( + "adr %0, 0f\n" +" add %0, %0, %1\n" +" br %0\n" +"0: "BTI_J"\n" /* S4 */ +" ldp s16, s17, [%3]\n" +" ldp s18, s19, [%3, #8]\n" +" b 4f\n" +" "BTI_J"\n" /* S3 */ +" ldp s16, s17, [%3]\n" +" ldr s18, [%3, #8]\n" +" b 3f\n" +" "BTI_J"\n" /* S2 */ +" ldp s16, s17, [%3]\n" +" b 2f\n" +" nop\n" +" "BTI_J"\n" /* S1 */ +" ldr s16, [%3]\n" +" b 1f\n" +" nop\n" +" "BTI_J"\n" /* D4 */ +" ldp d16, d17, [%3]\n" +" ldp d18, d19, [%3, #16]\n" +" b 4f\n" +" "BTI_J"\n" /* D3 */ +" ldp d16, d17, [%3]\n" +" ldr d18, [%3, #16]\n" +" b 3f\n" +" "BTI_J"\n" /* D2 */ +" ldp d16, d17, [%3]\n" +" b 2f\n" +" nop\n" +" "BTI_J"\n" /* D1 */ +" ldr d16, [%3]\n" +" b 1f\n" +" nop\n" +" "BTI_J"\n" /* Q4 */ +" ldp q16, q17, [%3]\n" +" ldp q18, q19, [%3, #32]\n" +" b 4f\n" +" "BTI_J"\n" /* Q3 */ +" ldp q16, q17, [%3]\n" +" ldr q18, [%3, #32]\n" +" b 3f\n" +" "BTI_J"\n" /* Q2 */ +" ldp q16, q17, [%3]\n" +" b 2f\n" +" nop\n" +" "BTI_J"\n" /* Q1 */ +" ldr q16, [%3]\n" +" b 1f\n" +"4: str q19, [%2, #48]\n" +"3: str q18, [%2, #32]\n" +"2: str q17, [%2, #16]\n" +"1: str q16, [%2]" + : "=&r"(x0) + : "r"(f * 16), "r"(dest), "r"(src) + : "memory", "v16", "v17", "v18", "v19"); +} +#endif + +#if defined(_MSC_VER) +void* compress_hfa_type (void *dest, void *src, int h); +#else +static void * +compress_hfa_type (void *dest, void *reg, int h) +{ + switch (h) + { + case AARCH64_RET_S1: + if (dest == reg) + { +#ifdef __AARCH64EB__ + dest += 12; +#endif + } + else + *(float *)dest = *(float *)reg; + break; + case AARCH64_RET_S2: + asm ("ldp q16, q17, [%1]\n\t" + "st2 { v16.s, v17.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17"); + break; + case AARCH64_RET_S3: + asm ("ldp q16, q17, [%1]\n\t" + "ldr q18, [%1, #32]\n\t" + "st3 { v16.s, v17.s, v18.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18"); + break; + case AARCH64_RET_S4: + asm ("ldp q16, q17, [%1]\n\t" + "ldp q18, q19, [%1, #32]\n\t" + "st4 { v16.s, v17.s, v18.s, v19.s }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19"); + break; + + case AARCH64_RET_D1: + if (dest == reg) + { +#ifdef __AARCH64EB__ + dest += 8; +#endif + } + else + *(double *)dest = *(double *)reg; + break; + case AARCH64_RET_D2: + asm ("ldp q16, q17, [%1]\n\t" + "st2 { v16.d, v17.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17"); + break; + case AARCH64_RET_D3: + asm ("ldp q16, q17, [%1]\n\t" + "ldr q18, [%1, #32]\n\t" + "st3 { v16.d, v17.d, v18.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18"); + break; + case AARCH64_RET_D4: + asm ("ldp q16, q17, [%1]\n\t" + "ldp q18, q19, [%1, #32]\n\t" + "st4 { v16.d, v17.d, v18.d, v19.d }[0], [%0]" + : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19"); + break; + + default: + if (dest != reg) + return memcpy (dest, reg, 16 * (4 - (h & 3))); + break; + } + return dest; +} +#endif + +/* Either allocate an appropriate register for the argument type, or if + none are available, allocate a stack slot and return a pointer + to the allocated space. */ + +static void * +allocate_int_to_reg_or_stack (struct call_context *context, + struct arg_state *state, + void *stack, size_t size) +{ + if (state->ngrn < N_X_ARG_REG) + return &context->x[state->ngrn++]; + + state->ngrn = N_X_ARG_REG; + return allocate_to_stack (state, stack, size, size); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep (ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + size_t bytes = cif->bytes; + int flags, i, n; + + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = AARCH64_RET_VOID; + break; + case FFI_TYPE_UINT8: + flags = AARCH64_RET_UINT8; + break; + case FFI_TYPE_UINT16: + flags = AARCH64_RET_UINT16; + break; + case FFI_TYPE_UINT32: + flags = AARCH64_RET_UINT32; + break; + case FFI_TYPE_SINT8: + flags = AARCH64_RET_SINT8; + break; + case FFI_TYPE_SINT16: + flags = AARCH64_RET_SINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = AARCH64_RET_SINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = AARCH64_RET_INT64; + break; + case FFI_TYPE_POINTER: + flags = (sizeof(void *) == 4 ? AARCH64_RET_UINT32 : AARCH64_RET_INT64); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + flags = is_vfp_type (rtype); + if (flags == 0) + { + size_t s = rtype->size; + if (s > 16) + { + flags = AARCH64_RET_VOID | AARCH64_RET_IN_MEM; + bytes += 8; + } + else if (s == 16) + flags = AARCH64_RET_INT128; + else if (s == 8) + flags = AARCH64_RET_INT64; + else + flags = AARCH64_RET_INT128 | AARCH64_RET_NEED_COPY; + } + break; + + default: + abort(); + } + + for (i = 0, n = cif->nargs; i < n; i++) + if (is_vfp_type (cif->arg_types[i])) + { + flags |= AARCH64_FLAG_ARG_V; + break; + } + + /* Round the stack up to a multiple of the stack alignment requirement. */ + cif->bytes = (unsigned) FFI_ALIGN(bytes, 16); + cif->flags = flags; +#if defined (__APPLE__) + cif->aarch64_nfixedargs = 0; +#endif + + return FFI_OK; +} + +#if defined (__APPLE__) +/* Perform Apple-specific cif processing for variadic calls */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, + unsigned int ntotalargs) +{ + ffi_status status = ffi_prep_cif_machdep (cif); + cif->aarch64_nfixedargs = nfixedargs; + return status; +} +#else +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) +{ + ffi_status status = ffi_prep_cif_machdep (cif); + cif->flags |= AARCH64_FLAG_VARARG; + return status; +} +#endif /* __APPLE__ */ + +extern void ffi_call_SYSV (struct call_context *context, void *frame, + void (*fn)(void), void *rvalue, int flags, + void *closure) FFI_HIDDEN; + +/* Call a function with the provided arguments and capture the return + value. + n.b. ffi_call_SYSV will steal the alloca'd `stack` variable here for use + _as its own stack_ - so we need to compile this function without ASAN */ +FFI_ASAN_NO_SANITIZE +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, + void **avalue, void *closure) +{ + struct call_context *context; + void *stack, *frame, *rvalue; + struct arg_state state; + size_t stack_bytes, rtype_size, rsize; + int i, nargs, flags, isvariadic = 0; + ffi_type *rtype; + + flags = cif->flags; + rtype = cif->rtype; + rtype_size = rtype->size; + stack_bytes = cif->bytes; + + if (flags & AARCH64_FLAG_VARARG) + { + isvariadic = 1; + flags &= ~AARCH64_FLAG_VARARG; + } + + /* If the target function returns a structure via hidden pointer, + then we cannot allow a null rvalue. Otherwise, mash a null + rvalue to void return type. */ + rsize = 0; + if (flags & AARCH64_RET_IN_MEM) + { + if (orig_rvalue == NULL) + rsize = rtype_size; + } + else if (orig_rvalue == NULL) + flags &= AARCH64_FLAG_ARG_V; + else if (flags & AARCH64_RET_NEED_COPY) + rsize = 16; + + /* Allocate consecutive stack for everything we'll need. + The frame uses 40 bytes for: lr, fp, rvalue, flags, sp */ + context = alloca (sizeof(struct call_context) + stack_bytes + 40 + rsize); + stack = context + 1; + frame = (void*)((uintptr_t)stack + (uintptr_t)stack_bytes); + rvalue = (rsize ? (void*)((uintptr_t)frame + 40) : orig_rvalue); + + arg_init (&state, stack_bytes); + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = cif->arg_types[i]; + size_t s = ty->size; + void *a = avalue[i]; + int h, t; + void *dest; + + t = ty->type; + switch (t) + { + case FFI_TYPE_VOID: + FFI_ASSERT (0); + break; + + /* If the argument is a basic type the argument is allocated to an + appropriate register, or if none are available, to the stack. */ + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + do_pointer: + { + ffi_arg ext = extend_integer_type (a, t); + if (state.ngrn < N_X_ARG_REG) + context->x[state.ngrn++] = ext; + else + { + void *d = allocate_to_stack (&state, stack, ty->alignment, s); + state.ngrn = N_X_ARG_REG; + /* Note that the default abi extends each argument + to a full 64-bit slot, while the iOS abi allocates + only enough space. */ +#ifdef __APPLE__ + memcpy(d, a, s); +#else + *(ffi_arg *)d = ext; +#endif + } + } + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + { + h = is_vfp_type (ty); + if (h) + { + int elems = 4 - (h & 3); + if (cif->abi == FFI_WIN64 && isvariadic) + { + if (state.ngrn + elems <= N_X_ARG_REG) + { + dest = &context->x[state.ngrn]; + state.ngrn += elems; + extend_hfa_type(dest, a, h); + break; + } + state.nsrn = N_X_ARG_REG; + dest = allocate_to_stack(&state, stack, ty->alignment, s); + } + else + { + if (state.nsrn + elems <= N_V_ARG_REG) + { + dest = &context->v[state.nsrn]; + state.nsrn += elems; + extend_hfa_type (dest, a, h); + break; + } + state.nsrn = N_V_ARG_REG; + dest = allocate_to_stack (&state, stack, ty->alignment, s); + } + } + else if (s > 16) + { + /* If the argument is a composite type that is larger than 16 + bytes, then the argument is copied to memory, and + the argument is replaced by a pointer to the copy. */ + dest = allocate_and_copy_struct_to_stack (&state, stack, + ty->alignment, s, + avalue[i]); + a = &dest; + t = FFI_TYPE_POINTER; + s = sizeof (void *); + goto do_pointer; + } + else + { + size_t n = (s + 7) / 8; + if (state.ngrn + n <= N_X_ARG_REG) + { + /* If the argument is a composite type and the size in + double-words is not more than the number of available + X registers, then the argument is copied into + consecutive X registers. */ + dest = &context->x[state.ngrn]; + state.ngrn += (unsigned int)n; + } + else + { + /* Otherwise, there are insufficient X registers. Further + X register allocations are prevented, the NSAA is + adjusted and the argument is copied to memory at the + adjusted NSAA. */ + state.ngrn = N_X_ARG_REG; + dest = allocate_to_stack (&state, stack, ty->alignment, s); + } + } + memcpy (dest, a, s); + } + break; + + default: + abort(); + } + +#if defined (__APPLE__) + if (i + 1 == cif->aarch64_nfixedargs) + { + state.ngrn = N_X_ARG_REG; + state.nsrn = N_V_ARG_REG; + state.allocating_variadic = 1; + } +#endif + } + + ffi_call_SYSV (context, frame, fn, rvalue, flags, closure); + + if (flags & AARCH64_RET_NEED_COPY) + memcpy (orig_rvalue, rvalue, rtype_size); +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#if FFI_CLOSURES + +#ifdef FFI_GO_CLOSURES +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} +#endif /* FFI_GO_CLOSURES */ + +/* Build a trampoline. */ + +extern void ffi_closure_SYSV (void) FFI_HIDDEN; +extern void ffi_closure_SYSV_V (void) FFI_HIDDEN; +#if defined(FFI_EXEC_STATIC_TRAMP) +extern void ffi_closure_SYSV_alt (void) FFI_HIDDEN; +extern void ffi_closure_SYSV_V_alt (void) FFI_HIDDEN; +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV && cif->abi != FFI_WIN64) + return FFI_BAD_ABI; + + void (*start)(void); + + if (cif->flags & AARCH64_FLAG_ARG_V) + start = ffi_closure_SYSV_V; + else + start = ffi_closure_SYSV; + +#if FFI_EXEC_TRAMPOLINE_TABLE +# ifdef __MACH__ +# ifdef HAVE_ARM64E_PTRAUTH + codeloc = ptrauth_auth_data(codeloc, ptrauth_key_function_pointer, 0); +# endif + void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); + config[0] = closure; + config[1] = start; +# endif +#else + static const unsigned char trampoline[16] = { + 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */ + 0xf1, 0xff, 0xff, 0x10, /* adr x17, tramp+0 */ + 0x00, 0x02, 0x1f, 0xd6 /* br x16 */ + }; + char *tramp = closure->tramp; + +# if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + if (start == ffi_closure_SYSV_V) + start = ffi_closure_SYSV_V_alt; + else + start = ffi_closure_SYSV_alt; + ffi_tramp_set_parms (closure->ftramp, start, closure); + goto out; + } +# endif + + /* Initialize the dynamic trampoline. */ + memcpy (tramp, trampoline, sizeof(trampoline)); + + *(UINT64 *)(tramp + 16) = (uintptr_t)start; + + ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE); + + /* Also flush the cache for code mapping. */ +# ifdef _WIN32 + // Not using dlmalloc.c for Windows ARM64 builds + // so calling ffi_data_to_code_pointer() isn't necessary + unsigned char *tramp_code = tramp; +# else + unsigned char *tramp_code = ffi_data_to_code_pointer (tramp); +# endif + ffi_clear_cache (tramp_code, tramp_code + FFI_TRAMPOLINE_SIZE); +# if defined(FFI_EXEC_STATIC_TRAMP) +out: +# endif +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +#ifdef FFI_GO_CLOSURES +extern void ffi_go_closure_SYSV (void) FFI_HIDDEN; +extern void ffi_go_closure_SYSV_V (void) FFI_HIDDEN; + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void (*start)(void); + + if (cif->abi != FFI_SYSV && cif->abi != FFI_WIN64) + return FFI_BAD_ABI; + + if (cif->flags & AARCH64_FLAG_ARG_V) + start = ffi_go_closure_SYSV_V; + else + start = ffi_go_closure_SYSV; + + closure->tramp = start; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} +#endif /* FFI_GO_CLOSURES */ + +/* Primary handler to setup and invoke a function within a closure. + + A closure when invoked enters via the assembler wrapper + ffi_closure_SYSV(). The wrapper allocates a call context on the + stack, saves the interesting registers (from the perspective of + the calling convention) into the context then passes control to + ffi_closure_SYSV_inner() passing the saved context and a pointer to + the stack at the point ffi_closure_SYSV() was invoked. + + On the return path the assembler wrapper will reload call context + registers. + + ffi_closure_SYSV_inner() marshalls the call context into ffi value + descriptors, invokes the wrapped function, then marshalls the return + value back into the call context. */ + +int FFI_HIDDEN +ffi_closure_SYSV_inner (ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + struct call_context *context, + void *stack, void *rvalue, void *struct_rvalue) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + int i, h, nargs, flags, isvariadic = 0; + struct arg_state state; + + arg_init (&state, cif->bytes); + + flags = cif->flags; + if (flags & AARCH64_FLAG_VARARG) + { + isvariadic = 1; + flags &= ~AARCH64_FLAG_VARARG; + } + + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = cif->arg_types[i]; + int t = ty->type; + size_t n, s = ty->size; + + switch (t) + { + case FFI_TYPE_VOID: + FFI_ASSERT (0); + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + avalue[i] = allocate_int_to_reg_or_stack (context, &state, stack, s); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + h = is_vfp_type (ty); + if (h) + { + n = 4 - (h & 3); + if (cif->abi == FFI_WIN64 && isvariadic) + { + if (state.ngrn + n <= N_X_ARG_REG) + { + void *reg = &context->x[state.ngrn]; + state.ngrn += (unsigned int)n; + + /* Eeek! We need a pointer to the structure, however the + homogeneous float elements are being passed in individual + registers, therefore for float and double the structure + is not represented as a contiguous sequence of bytes in + our saved register context. We don't need the original + contents of the register storage, so we reformat the + structure into the same memory. */ + avalue[i] = compress_hfa_type(reg, reg, h); + } + else + { + state.ngrn = N_X_ARG_REG; + state.nsrn = N_V_ARG_REG; + avalue[i] = allocate_to_stack(&state, stack, + ty->alignment, s); + } + } + else + { + if (state.nsrn + n <= N_V_ARG_REG) + { + void *reg = &context->v[state.nsrn]; + state.nsrn += (unsigned int)n; + avalue[i] = compress_hfa_type(reg, reg, h); + } + else + { + state.nsrn = N_V_ARG_REG; + avalue[i] = allocate_to_stack(&state, stack, + ty->alignment, s); + } + } + } + else if (s > 16) + { + /* Replace Composite type of size greater than 16 with a + pointer. */ +#ifdef __ILP32__ + UINT64 avalue_tmp; + memcpy (&avalue_tmp, + allocate_int_to_reg_or_stack (context, &state, + stack, sizeof (void *)), + sizeof (UINT64)); + avalue[i] = (void *)(UINT32)avalue_tmp; +#else + avalue[i] = *(void **) + allocate_int_to_reg_or_stack (context, &state, stack, + sizeof (void *)); +#endif + } + else + { + n = (s + 7) / 8; + if (state.ngrn + n <= N_X_ARG_REG) + { + avalue[i] = &context->x[state.ngrn]; + state.ngrn += (unsigned int)n; + } + else + { + state.ngrn = N_X_ARG_REG; + avalue[i] = allocate_to_stack(&state, stack, + ty->alignment, s); + } + } + break; + + default: + abort(); + } + +#if defined (__APPLE__) + if (i + 1 == cif->aarch64_nfixedargs) + { + state.ngrn = N_X_ARG_REG; + state.nsrn = N_V_ARG_REG; + state.allocating_variadic = 1; + } +#endif + } + + if (flags & AARCH64_RET_IN_MEM) + rvalue = struct_rvalue; + + fun (cif, rvalue, avalue, user_data); + + return flags; +} + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *tramp_size = AARCH64_TRAMP_SIZE; + *map_size = AARCH64_TRAMP_MAP_SIZE; + return &trampoline_code_table; +} +#endif + +#endif /* FFI_CLOSURES */ + +#endif /* (__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)*/ diff --git a/deps/libffi/src/aarch64/ffitarget.h b/deps/libffi/src/aarch64/ffitarget.h new file mode 100644 index 00000000000000..2ab95644a311d2 --- /dev/null +++ b/deps/libffi/src/aarch64/ffitarget.h @@ -0,0 +1,97 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +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. */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +#ifdef __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef signed long long ffi_sarg; +#elif defined(_WIN32) +#define FFI_SIZEOF_ARG 8 +typedef unsigned long long ffi_arg; +typedef signed long long ffi_sarg; +#else +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; +#endif + +typedef enum ffi_abi + { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_WIN64, + FFI_LAST_ABI, +#if defined(_WIN32) + FFI_DEFAULT_ABI = FFI_WIN64 +#else + FFI_DEFAULT_ABI = FFI_SYSV +#endif + } ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16 +#else +#error "No trampoline table implementation" +#endif + +#else +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE +#endif + +#ifdef _WIN32 +#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic +#endif +#define FFI_TARGET_SPECIFIC_VARIADIC + +/* ---- Internal ---- */ + +#if defined (__APPLE__) +#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs +#elif !defined(_WIN32) && !defined(__ANDROID__) +/* iOS, Windows and Android reserve x18 for the system. Disable Go closures until + a new static chain is chosen. */ +#define FFI_GO_CLOSURES 1 +#endif + +#ifndef _WIN32 +/* No complex type on Windows */ +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +#endif diff --git a/deps/libffi/src/aarch64/internal.h b/deps/libffi/src/aarch64/internal.h new file mode 100644 index 00000000000000..591b9f5c087eb1 --- /dev/null +++ b/deps/libffi/src/aarch64/internal.h @@ -0,0 +1,146 @@ +/* +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. */ + +#define AARCH64_RET_VOID 0 +#define AARCH64_RET_INT64 1 +#define AARCH64_RET_INT128 2 + +#define AARCH64_RET_UNUSED3 3 +#define AARCH64_RET_UNUSED4 4 +#define AARCH64_RET_UNUSED5 5 +#define AARCH64_RET_UNUSED6 6 +#define AARCH64_RET_UNUSED7 7 + +/* Note that FFI_TYPE_FLOAT == 2, _DOUBLE == 3, _LONGDOUBLE == 4, + so _S4 through _Q1 are layed out as (TYPE * 4) + (4 - COUNT). */ +#define AARCH64_RET_S4 8 +#define AARCH64_RET_S3 9 +#define AARCH64_RET_S2 10 +#define AARCH64_RET_S1 11 + +#define AARCH64_RET_D4 12 +#define AARCH64_RET_D3 13 +#define AARCH64_RET_D2 14 +#define AARCH64_RET_D1 15 + +#define AARCH64_RET_Q4 16 +#define AARCH64_RET_Q3 17 +#define AARCH64_RET_Q2 18 +#define AARCH64_RET_Q1 19 + +/* Note that each of the sub-64-bit integers gets two entries. */ +#define AARCH64_RET_UINT8 20 +#define AARCH64_RET_UINT16 22 +#define AARCH64_RET_UINT32 24 + +#define AARCH64_RET_SINT8 26 +#define AARCH64_RET_SINT16 28 +#define AARCH64_RET_SINT32 30 + +#define AARCH64_RET_MASK 31 + +#define AARCH64_RET_IN_MEM (1 << 5) +#define AARCH64_RET_NEED_COPY (1 << 6) + +#define AARCH64_FLAG_ARG_V_BIT 7 +#define AARCH64_FLAG_ARG_V (1 << AARCH64_FLAG_ARG_V_BIT) +#define AARCH64_FLAG_VARARG (1 << 8) + +#define N_X_ARG_REG 8 +#define N_V_ARG_REG 8 +#define CALL_CONTEXT_SIZE (N_V_ARG_REG * 16 + N_X_ARG_REG * 8) + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * For the trampoline code table mapping, a mapping size of 16K is chosen to + * cover the base page sizes of 4K and 16K. + */ +#define AARCH64_TRAMP_MAP_SHIFT 14 +#define AARCH64_TRAMP_MAP_SIZE (1 << AARCH64_TRAMP_MAP_SHIFT) +#define AARCH64_TRAMP_SIZE 32 + +#endif + +/* Helpers for writing assembly compatible with arm ptr auth */ +#ifdef LIBFFI_ASM + + #if defined(HAVE_ARM64E_PTRAUTH) + /* ARM64E ABI For Darwin */ + #define SIGN_LR pacibsp + #define SIGN_LR_WITH_REG(x) pacib lr, x + #define AUTH_LR_AND_RET retab + #define AUTH_LR_WITH_REG(x) autib lr, x + #define BRANCH_AND_LINK_TO_REG blraaz + #define SIGN_LR_LINUX_ONLY + #define BRANCH_TO_REG braaz + #define PAC_CFI_WINDOW_SAVE + #define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 + /* Linux PAC Support */ + #elif defined(__ARM_FEATURE_PAC_DEFAULT) + #define GNU_PROPERTY_AARCH64_POINTER_AUTH (1 << 1) + #define PAC_CFI_WINDOW_SAVE cfi_window_save + #define TMP_REG x9 + #define BRANCH_TO_REG br + #define BRANCH_AND_LINK_TO_REG blr + #define SIGN_LR_LINUX_ONLY SIGN_LR + /* Which key to sign with? */ + #if (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 + /* Signed with A-key */ + #define SIGN_LR hint #25 /* paciasp */ + #define AUTH_LR hint #29 /* autiasp */ + #else + /* Signed with B-key */ + #define SIGN_LR hint #27 /* pacibsp */ + #define AUTH_LR hint #31 /* autibsp */ + #endif /* __ARM_FEATURE_PAC_DEFAULT */ + #define AUTH_LR_WITH_REG(x) _auth_lr_with_reg x +.macro _auth_lr_with_reg modifier + mov TMP_REG, sp + mov sp, \modifier + AUTH_LR + mov sp, TMP_REG +.endm + #define SIGN_LR_WITH_REG(x) _sign_lr_with_reg x +.macro _sign_lr_with_reg modifier + mov TMP_REG, sp + mov sp, \modifier + SIGN_LR + mov sp, TMP_REG +.endm + #define AUTH_LR_AND_RET _auth_lr_and_ret modifier +.macro _auth_lr_and_ret modifier + AUTH_LR + ret +.endm + #undef TMP_REG + + /* No Pointer Auth */ + #else + #define SIGN_LR + #define SIGN_LR_WITH_REG(x) + #define AUTH_LR_AND_RET ret + #define AUTH_LR_WITH_REG(x) + #define BRANCH_AND_LINK_TO_REG blr + #define SIGN_LR_LINUX_ONLY + #define BRANCH_TO_REG br + #define PAC_CFI_WINDOW_SAVE + #define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 + #endif /* HAVE_ARM64E_PTRAUTH */ +#endif /* LIBFFI_ASM */ diff --git a/deps/libffi/src/aarch64/sysv.S b/deps/libffi/src/aarch64/sysv.S new file mode 100644 index 00000000000000..81d33f2ef0a5fb --- /dev/null +++ b/deps/libffi/src/aarch64/sysv.S @@ -0,0 +1,699 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. + +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. */ + +#if defined(__aarch64__) || defined(__arm64__) +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +/* Use the right prefix for global labels. */ +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else +#define CNAME(x) x +#endif +#endif + +#ifdef __APPLE__ +# define L(X) CONCAT1(L, X) +#else +# define L(X) CONCAT1(.L, X) +#endif + +#ifdef __AARCH64EB__ +# define BE(X) X +#else +# define BE(X) 0 +#endif + +#ifdef __ILP32__ +#define PTR_REG(n) w##n +#else +#define PTR_REG(n) x##n +#endif + +#ifdef __ILP32__ +#define PTR_SIZE 4 +#else +#define PTR_SIZE 8 +#endif + +#define BTI_C hint #34 +#define BTI_J hint #36 +/* + * The ELF Notes section needs to indicate if BTI is supported, as the first ELF loaded that doesn't + * declare this support disables it for memory region containing the loaded library. + */ +# define GNU_PROPERTY_AARCH64_BTI (1 << 0) /* Has Branch Target Identification */ + .text + .align 4 + +/* ffi_call_SYSV + extern void ffi_call_SYSV (void *stack, void *frame, + void (*fn)(void), void *rvalue, + int flags, void *closure); + + Therefore on entry we have: + + x0 stack + x1 frame + x2 fn + x3 rvalue + x4 flags + x5 closure +*/ + +CNAME(ffi_call_SYSV): + cfi_startproc + BTI_C + PAC_CFI_WINDOW_SAVE + /* Sign the lr with x1 since that is the CFA which is the modifer used in auth instructions */ + SIGN_LR_WITH_REG(x1) + +#if defined(HAVE_ARM64E_PTRAUTH) && defined(__APPLE__) + /* darwin's libunwind assumes that the cfa is the sp and that's the data + * used to sign the lr. In order to allow unwinding through this + * function it is necessary to point the cfa at the signing register. + */ + cfi_def_cfa(x1, 0); +#endif + /* Use a stack frame allocated by our caller. */ + stp x29, x30, [x1] + cfi_def_cfa_register(x1) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + mov x9, sp + str x9, [x1, #32] + mov x29, x1 + cfi_def_cfa_register(x29) + mov sp, x0 + + mov x9, x2 /* save fn */ + mov x8, x3 /* install structure return */ +#ifdef FFI_GO_CLOSURES + mov x18, x5 /* install static chain */ +#endif + stp x3, x4, [x29, #16] /* save rvalue and flags */ + + /* Load the vector argument passing registers, if necessary. */ + tbz w4, #AARCH64_FLAG_ARG_V_BIT, 1f + ldp q0, q1, [sp, #0] + ldp q2, q3, [sp, #32] + ldp q4, q5, [sp, #64] + ldp q6, q7, [sp, #96] +1: + /* Load the core argument passing registers, including + the structure return pointer. */ + ldp x0, x1, [sp, #16*N_V_ARG_REG + 0] + ldp x2, x3, [sp, #16*N_V_ARG_REG + 16] + ldp x4, x5, [sp, #16*N_V_ARG_REG + 32] + ldp x6, x7, [sp, #16*N_V_ARG_REG + 48] + + /* Deallocate the context, leaving the stacked arguments. */ + add sp, sp, #CALL_CONTEXT_SIZE + + BRANCH_AND_LINK_TO_REG x9 /* call fn */ + + ldp x3, x4, [x29, #16] /* reload rvalue and flags */ + + /* Partially deconstruct the stack frame. */ + ldr x9, [x29, #32] + mov sp, x9 + cfi_def_cfa_register (sp) + mov x2, x29 /* Preserve for auth */ + ldp x29, x30, [x29] + + /* Save the return value as directed. */ + adr x5, 0f + and w4, w4, #AARCH64_RET_MASK + add x5, x5, x4, lsl #4 + br x5 + + /* Note that each table entry is 4 insns, and thus 16 bytes. + For integer data, note that we're storing into ffi_arg + and therefore we want to extend to 64 bits; these types + have two consecutive entries allocated for them. */ + .align 4 +0: BTI_J /* VOID */ + b 99f + nop + nop +1: BTI_J /* INT64 */ + str x0, [x3] + b 99f + nop +2: BTI_J /* INT128 */ + stp x0, x1, [x3] + b 99f + nop +3: brk #1000 /* UNUSED */ + b 99f + nop + nop +4: brk #1000 /* UNUSED */ + b 99f + nop + nop +5: brk #1000 /* UNUSED */ + b 99f + nop + nop +6: brk #1000 /* UNUSED */ + b 99f + nop + nop +7: brk #1000 /* UNUSED */ + b 99f + nop + nop +8: BTI_J /* S4 */ + st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] + b 99f + nop +9: BTI_J /* S3 */ + st3 { v0.s, v1.s, v2.s }[0], [x3] + b 99f + nop +10: BTI_J /* S2 */ + stp s0, s1, [x3] + b 99f + nop +11: BTI_J + str s0, [x3] /* S1 */ + b 99f + nop +12: BTI_J /* D4 */ + st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] + b 99f + nop +13: BTI_J /* D3 */ + st3 { v0.d, v1.d, v2.d }[0], [x3] + b 99f + nop +14: BTI_J /* D2 */ + stp d0, d1, [x3] + b 99f + nop +15: BTI_J /* D1 */ + str d0, [x3] + b 99f + nop +16: BTI_J /* Q4 */ + str q3, [x3, #48] + nop + nop +17: BTI_J /* Q3 */ + str q2, [x3, #32] + nop + nop +18: BTI_J /* Q2 */ + stp q0, q1, [x3] + b 99f + nop +19: BTI_J /* Q1 */ + str q0, [x3] + b 99f + nop +20: BTI_J /* UINT8 */ + uxtb w0, w0 + str x0, [x3] + nop +21: b 99f /* reserved */ + nop + nop + nop +22: BTI_J /* UINT16 */ + uxth w0, w0 + str x0, [x3] + nop +23: b 99f /* reserved */ + nop + nop + nop +24: BTI_J /* UINT32 */ + mov w0, w0 + str x0, [x3] + nop +25: b 99f /* reserved */ + nop + nop + nop +26: BTI_J /* SINT8 */ + sxtb x0, w0 + str x0, [x3] + nop +27: b 99f /* reserved */ + nop + nop + nop +28: BTI_J /* SINT16 */ + sxth x0, w0 + str x0, [x3] + nop +29: b 99f /* reserved */ + nop + nop + nop +30: BTI_J /* SINT32 */ + sxtw x0, w0 + str x0, [x3] + nop +31: b 99f /* reserved */ + nop + nop + nop + + /* Return now that result has been populated. */ +99: + AUTH_LR_WITH_REG(x2) + ret + + cfi_endproc + + .globl CNAME(ffi_call_SYSV) + FFI_HIDDEN(CNAME(ffi_call_SYSV)) +#ifdef __ELF__ + .type CNAME(ffi_call_SYSV), #function + .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV) +#endif + +#if FFI_CLOSURES + +/* ffi_closure_SYSV + + Closure invocation glue. This is the low level code invoked directly by + the closure trampoline to setup and call a closure. + + On entry x17 points to a struct ffi_closure, x16 has been clobbered + all other registers are preserved. + + We allocate a call context and save the argument passing registers, + then invoked the generic C ffi_closure_SYSV_inner() function to do all + the real work, on return we load the result passing registers back from + the call context. +*/ + +#define ffi_closure_SYSV_FS (8*2 + CALL_CONTEXT_SIZE + 64) + + .align 4 +CNAME(ffi_closure_SYSV_V): + cfi_startproc + BTI_C + SIGN_LR + PAC_CFI_WINDOW_SAVE + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + b 0f + cfi_endproc + + .globl CNAME(ffi_closure_SYSV_V) + FFI_HIDDEN(CNAME(ffi_closure_SYSV_V)) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV_V), #function + .size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V) +#endif + + .align 4 +CNAME(ffi_closure_SYSV): + cfi_startproc + BTI_C + SIGN_LR + PAC_CFI_WINDOW_SAVE + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) +0: + mov x29, sp + + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */ + ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */ +#ifdef FFI_GO_CLOSURES +L(do_closure): +#endif + add x3, sp, #16 /* load context */ + add x4, sp, #ffi_closure_SYSV_FS /* load stack */ + add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */ + mov x6, x8 /* load struct_rval */ + bl CNAME(ffi_closure_SYSV_inner) + + /* Load the return value as directed. */ + adr x1, 0f + and w0, w0, #AARCH64_RET_MASK + add x1, x1, x0, lsl #4 + add x3, sp, #16+CALL_CONTEXT_SIZE + br x1 + + /* Note that each table entry is 4 insns, and thus 16 bytes. */ + .align 4 +0: BTI_J /* VOID */ + b 99f + nop + nop +1: BTI_J /* INT64 */ + ldr x0, [x3] + b 99f + nop +2: BTI_J /* INT128 */ + ldp x0, x1, [x3] + b 99f + nop +3: brk #1000 /* UNUSED */ + nop + nop + nop +4: brk #1000 /* UNUSED */ + nop + nop + nop +5: brk #1000 /* UNUSED */ + nop + nop + nop +6: brk #1000 /* UNUSED */ + nop + nop + nop +7: brk #1000 /* UNUSED */ + nop + nop + nop +8: BTI_J /* S4 */ + ldr s3, [x3, #12] + nop + nop +9: BTI_J /* S3 */ + ldr s2, [x3, #8] + nop + nop +10: BTI_J /* S2 */ + ldp s0, s1, [x3] + b 99f + nop +11: BTI_J /* S1 */ + ldr s0, [x3] + b 99f + nop +12: BTI_J /* D4 */ + ldr d3, [x3, #24] + nop + nop +13: BTI_J /* D3 */ + ldr d2, [x3, #16] + nop + nop +14: BTI_J /* D2 */ + ldp d0, d1, [x3] + b 99f + nop +15: BTI_J /* D1 */ + ldr d0, [x3] + b 99f + nop +16: BTI_J /* Q4 */ + ldr q3, [x3, #48] + nop + nop +17: BTI_J /* Q3 */ + ldr q2, [x3, #32] + nop + nop +18: BTI_J /* Q2 */ + ldp q0, q1, [x3] + b 99f + nop +19: BTI_J /* Q1 */ + ldr q0, [x3] + b 99f + nop +20: BTI_J /* UINT8 */ + ldrb w0, [x3, #BE(7)] + b 99f + nop +21: brk #1000 /* reserved */ + nop + nop + nop +22: BTI_J /* UINT16 */ + ldrh w0, [x3, #BE(6)] + b 99f + nop +23: brk #1000 /* reserved */ + nop + nop + nop +24: BTI_J /* UINT32 */ + ldr w0, [x3, #BE(4)] + b 99f + nop +25: brk #1000 /* reserved */ + nop + nop + nop +26: BTI_J /* SINT8 */ + ldrsb x0, [x3, #BE(7)] + b 99f + nop +27: brk #1000 /* reserved */ + nop + nop + nop +28: BTI_J /* SINT16 */ + ldrsh x0, [x3, #BE(6)] + b 99f + nop +29: brk #1000 /* reserved */ + nop + nop + nop +30: BTI_J /* SINT32 */ + ldrsw x0, [x3, #BE(4)] + nop + nop +31: /* reserved */ +99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS + cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS) + cfi_restore (x29) + cfi_restore (x30) + AUTH_LR_AND_RET + cfi_endproc + + .globl CNAME(ffi_closure_SYSV) + FFI_HIDDEN(CNAME(ffi_closure_SYSV)) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV), #function + .size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV) +#endif + +#if defined(FFI_EXEC_STATIC_TRAMP) + .align 4 +CNAME(ffi_closure_SYSV_V_alt): + BTI_C + /* See the comments above trampoline_code_table. */ + ldr x17, [sp, #8] /* Load closure in x17 */ + add sp, sp, #16 /* Restore the stack */ + b CNAME(ffi_closure_SYSV_V) + + .globl CNAME(ffi_closure_SYSV_V_alt) + FFI_HIDDEN(CNAME(ffi_closure_SYSV_V_alt)) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV_V_alt), #function + .size CNAME(ffi_closure_SYSV_V_alt), . - CNAME(ffi_closure_SYSV_V_alt) +#endif + + .align 4 +CNAME(ffi_closure_SYSV_alt): + BTI_C + /* See the comments above trampoline_code_table. */ + ldr x17, [sp, #8] /* Load closure in x17 */ + add sp, sp, #16 /* Restore the stack */ + b CNAME(ffi_closure_SYSV) + + .globl CNAME(ffi_closure_SYSV_alt) + FFI_HIDDEN(CNAME(ffi_closure_SYSV_alt)) +#ifdef __ELF__ + .type CNAME(ffi_closure_SYSV_alt), #function + .size CNAME(ffi_closure_SYSV_alt), . - CNAME(ffi_closure_SYSV_alt) +#endif + +/* + * Below is the definition of the trampoline code table. Each element in + * the code table is a trampoline. + */ +/* + * The trampoline uses register x17. It saves the original value of x17 on + * the stack. + * + * The trampoline has two parameters - target code to jump to and data for + * the target code. The trampoline extracts the parameters from its parameter + * block (see tramp_table_map()). The trampoline saves the data address on + * the stack. Finally, it jumps to the target code. + * + * The target code can choose to: + * + * - restore the value of x17 + * - load the data address in a register + * - restore the stack pointer to what it was when the trampoline was invoked. + */ + .align AARCH64_TRAMP_MAP_SHIFT +CNAME(trampoline_code_table): + .rept AARCH64_TRAMP_MAP_SIZE / AARCH64_TRAMP_SIZE + sub sp, sp, #16 /* Make space on the stack */ + str x17, [sp] /* Save x17 on stack */ + adr x17, #16376 /* Get data address */ + ldr x17, [x17] /* Copy data into x17 */ + str x17, [sp, #8] /* Save data on stack */ + adr x17, #16372 /* Get code address */ + ldr x17, [x17] /* Load code address into x17 */ + br x17 /* Jump to code */ + .endr + + .globl CNAME(trampoline_code_table) + FFI_HIDDEN(CNAME(trampoline_code_table)) +#ifdef __ELF__ + .type CNAME(trampoline_code_table), #function + .size CNAME(trampoline_code_table), . - CNAME(trampoline_code_table) +#endif + .align AARCH64_TRAMP_MAP_SHIFT +#endif /* FFI_EXEC_STATIC_TRAMP */ + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include + .align PAGE_MAX_SHIFT +CNAME(ffi_closure_trampoline_table_page): + .rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE + adr x16, -PAGE_MAX_SIZE + ldp x17, x16, [x16] + br x16 + nop /* each entry in the trampoline config page is 2*sizeof(void*) so the trampoline itself cannot be smaller than 16 bytes */ + .endr + + .globl CNAME(ffi_closure_trampoline_table_page) + FFI_HIDDEN(CNAME(ffi_closure_trampoline_table_page)) + #ifdef __ELF__ + .type CNAME(ffi_closure_trampoline_table_page), #function + .size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page) + #endif +#endif + +#endif /* FFI_EXEC_TRAMPOLINE_TABLE */ + +#ifdef FFI_GO_CLOSURES + .align 4 +CNAME(ffi_go_closure_SYSV_V): + cfi_startproc + BTI_C + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + b 0f + cfi_endproc + + .globl CNAME(ffi_go_closure_SYSV_V) + FFI_HIDDEN(CNAME(ffi_go_closure_SYSV_V)) +#ifdef __ELF__ + .type CNAME(ffi_go_closure_SYSV_V), #function + .size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V) +#endif + + .align 4 +CNAME(ffi_go_closure_SYSV): + cfi_startproc + BTI_C + SIGN_LR_LINUX_ONLY + PAC_CFI_WINDOW_SAVE + stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! + cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) + cfi_rel_offset (x29, 0) + cfi_rel_offset (x30, 8) +0: + mov x29, sp + + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x18, #PTR_SIZE]/* load cif, fn */ + mov x2, x18 /* load user_data */ + b L(do_closure) + cfi_endproc + + .globl CNAME(ffi_go_closure_SYSV) + FFI_HIDDEN(CNAME(ffi_go_closure_SYSV)) +#ifdef __ELF__ + .type CNAME(ffi_go_closure_SYSV), #function + .size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV) +#endif +#endif /* FFI_GO_CLOSURES */ +#endif /* FFI_CLOSURES */ +#endif /* __arm64__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits + + .pushsection .note.gnu.property, "a"; + .balign 8; + .long 4; + .long 0x10; + .long 0x5; + .asciz "GNU"; + .long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ + .long 4; + .long GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_POINTER_AUTH; + .long 0; + .popsection; +#endif + diff --git a/deps/libffi/src/aarch64/win64_armasm.S b/deps/libffi/src/aarch64/win64_armasm.S new file mode 100644 index 00000000000000..7fc185b3d8baea --- /dev/null +++ b/deps/libffi/src/aarch64/win64_armasm.S @@ -0,0 +1,506 @@ +/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. +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. */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + + OPT 2 /*disable listing */ +/* For some macros to add unwind information */ +#include "ksarm64.h" + OPT 1 /*re-enable listing */ + +#define BE(X) 0 +#define PTR_REG(n) x##n +#define PTR_SIZE 8 + + IMPORT ffi_closure_SYSV_inner + EXPORT ffi_call_SYSV + EXPORT ffi_closure_SYSV_V + EXPORT ffi_closure_SYSV + EXPORT extend_hfa_type + EXPORT compress_hfa_type +#ifdef FFI_GO_CLOSURES + EXPORT ffi_go_closure_SYSV_V + EXPORT ffi_go_closure_SYSV +#endif + + TEXTAREA, ALIGN=8 + +/* ffi_call_SYSV + extern void ffi_call_SYSV (void *stack, void *frame, + void (*fn)(void), void *rvalue, + int flags, void *closure); + Therefore on entry we have: + x0 stack + x1 frame + x2 fn + x3 rvalue + x4 flags + x5 closure +*/ + + NESTED_ENTRY ffi_call_SYSV_fake + + /* For unwind information, Windows has to store fp and lr */ + PROLOG_SAVE_REG_PAIR x29, x30, #-32! + + ALTERNATE_ENTRY ffi_call_SYSV + /* Use a stack frame allocated by our caller. */ + stp x29, x30, [x1] + mov x29, x1 + mov sp, x0 + + mov x9, x2 /* save fn */ + mov x8, x3 /* install structure return */ +#ifdef FFI_GO_CLOSURES + /*mov x18, x5 install static chain */ +#endif + stp x3, x4, [x29, #16] /* save rvalue and flags */ + + /* Load the vector argument passing registers, if necessary. */ + tbz x4, #AARCH64_FLAG_ARG_V_BIT, ffi_call_SYSV_L1 + ldp q0, q1, [sp, #0] + ldp q2, q3, [sp, #32] + ldp q4, q5, [sp, #64] + ldp q6, q7, [sp, #96] + +ffi_call_SYSV_L1 + /* Load the core argument passing registers, including + the structure return pointer. */ + ldp x0, x1, [sp, #16*N_V_ARG_REG + 0] + ldp x2, x3, [sp, #16*N_V_ARG_REG + 16] + ldp x4, x5, [sp, #16*N_V_ARG_REG + 32] + ldp x6, x7, [sp, #16*N_V_ARG_REG + 48] + + /* Deallocate the context, leaving the stacked arguments. */ + add sp, sp, #CALL_CONTEXT_SIZE + + blr x9 /* call fn */ + + ldp x3, x4, [x29, #16] /* reload rvalue and flags */ + + /* Partially deconstruct the stack frame. */ + mov sp, x29 + ldp x29, x30, [x29] + + /* Save the return value as directed. */ + adr x5, ffi_call_SYSV_return + and w4, w4, #AARCH64_RET_MASK + add x5, x5, x4, lsl #3 + br x5 + + /* Note that each table entry is 2 insns, and thus 8 bytes. + For integer data, note that we're storing into ffi_arg + and therefore we want to extend to 64 bits; these types + have two consecutive entries allocated for them. */ + ALIGN 4 +ffi_call_SYSV_return + ret /* VOID */ + nop + str x0, [x3] /* INT64 */ + ret + stp x0, x1, [x3] /* INT128 */ + ret + brk #1000 /* UNUSED */ + ret + brk #1000 /* UNUSED */ + ret + brk #1000 /* UNUSED */ + ret + brk #1000 /* UNUSED */ + ret + brk #1000 /* UNUSED */ + ret + st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */ + ret + st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */ + ret + stp s0, s1, [x3] /* S2 */ + ret + str s0, [x3] /* S1 */ + ret + st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */ + ret + st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */ + ret + stp d0, d1, [x3] /* D2 */ + ret + str d0, [x3] /* D1 */ + ret + str q3, [x3, #48] /* Q4 */ + nop + str q2, [x3, #32] /* Q3 */ + nop + stp q0, q1, [x3] /* Q2 */ + ret + str q0, [x3] /* Q1 */ + ret + uxtb w0, w0 /* UINT8 */ + str x0, [x3] + ret /* reserved */ + nop + uxth w0, w0 /* UINT16 */ + str x0, [x3] + ret /* reserved */ + nop + mov w0, w0 /* UINT32 */ + str x0, [x3] + ret /* reserved */ + nop + sxtb x0, w0 /* SINT8 */ + str x0, [x3] + ret /* reserved */ + nop + sxth x0, w0 /* SINT16 */ + str x0, [x3] + ret /* reserved */ + nop + sxtw x0, w0 /* SINT32 */ + str x0, [x3] + ret /* reserved */ + nop + + + NESTED_END ffi_call_SYSV_fake + + +/* ffi_closure_SYSV + Closure invocation glue. This is the low level code invoked directly by + the closure trampoline to setup and call a closure. + On entry x17 points to a struct ffi_closure, x16 has been clobbered + all other registers are preserved. + We allocate a call context and save the argument passing registers, + then invoked the generic C ffi_closure_SYSV_inner() function to do all + the real work, on return we load the result passing registers back from + the call context. +*/ + +#define ffi_closure_SYSV_FS (8*2 + CALL_CONTEXT_SIZE + 64) + + NESTED_ENTRY ffi_closure_SYSV_V + PROLOG_SAVE_REG_PAIR x29, x30, #-ffi_closure_SYSV_FS! + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + + b ffi_closure_SYSV_save_argument + NESTED_END ffi_closure_SYSV_V + + NESTED_ENTRY ffi_closure_SYSV + PROLOG_SAVE_REG_PAIR x29, x30, #-ffi_closure_SYSV_FS! + +ffi_closure_SYSV_save_argument + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */ + ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */ + +do_closure + add x3, sp, #16 /* load context */ + add x4, sp, #ffi_closure_SYSV_FS /* load stack */ + add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */ + mov x6, x8 /* load struct_rval */ + + bl ffi_closure_SYSV_inner + + /* Load the return value as directed. */ + adr x1, ffi_closure_SYSV_return_base + and w0, w0, #AARCH64_RET_MASK + add x1, x1, x0, lsl #3 + add x3, sp, #16+CALL_CONTEXT_SIZE + br x1 + + /* Note that each table entry is 2 insns, and thus 8 bytes. */ + ALIGN 8 +ffi_closure_SYSV_return_base + b ffi_closure_SYSV_epilog /* VOID */ + nop + ldr x0, [x3] /* INT64 */ + b ffi_closure_SYSV_epilog + ldp x0, x1, [x3] /* INT128 */ + b ffi_closure_SYSV_epilog + brk #1000 /* UNUSED */ + nop + brk #1000 /* UNUSED */ + nop + brk #1000 /* UNUSED */ + nop + brk #1000 /* UNUSED */ + nop + brk #1000 /* UNUSED */ + nop + ldr s3, [x3, #12] /* S4 */ + nop + ldr s2, [x3, #8] /* S3 */ + nop + ldp s0, s1, [x3] /* S2 */ + b ffi_closure_SYSV_epilog + ldr s0, [x3] /* S1 */ + b ffi_closure_SYSV_epilog + ldr d3, [x3, #24] /* D4 */ + nop + ldr d2, [x3, #16] /* D3 */ + nop + ldp d0, d1, [x3] /* D2 */ + b ffi_closure_SYSV_epilog + ldr d0, [x3] /* D1 */ + b ffi_closure_SYSV_epilog + ldr q3, [x3, #48] /* Q4 */ + nop + ldr q2, [x3, #32] /* Q3 */ + nop + ldp q0, q1, [x3] /* Q2 */ + b ffi_closure_SYSV_epilog + ldr q0, [x3] /* Q1 */ + b ffi_closure_SYSV_epilog + ldrb w0, [x3, #BE(7)] /* UINT8 */ + b ffi_closure_SYSV_epilog + brk #1000 /* reserved */ + nop + ldrh w0, [x3, #BE(6)] /* UINT16 */ + b ffi_closure_SYSV_epilog + brk #1000 /* reserved */ + nop + ldr w0, [x3, #BE(4)] /* UINT32 */ + b ffi_closure_SYSV_epilog + brk #1000 /* reserved */ + nop + ldrsb x0, [x3, #BE(7)] /* SINT8 */ + b ffi_closure_SYSV_epilog + brk #1000 /* reserved */ + nop + ldrsh x0, [x3, #BE(6)] /* SINT16 */ + b ffi_closure_SYSV_epilog + brk #1000 /* reserved */ + nop + ldrsw x0, [x3, #BE(4)] /* SINT32 */ + nop + /* reserved */ + +ffi_closure_SYSV_epilog + EPILOG_RESTORE_REG_PAIR x29, x30, #ffi_closure_SYSV_FS! + EPILOG_RETURN + NESTED_END ffi_closure_SYSV + + +#ifdef FFI_GO_CLOSURES + NESTED_ENTRY ffi_go_closure_SYSV_V + PROLOG_SAVE_REG_PAIR x29, x30, #-ffi_closure_SYSV_FS! + + /* Save the argument passing vector registers. */ + stp q0, q1, [sp, #16 + 0] + stp q2, q3, [sp, #16 + 32] + stp q4, q5, [sp, #16 + 64] + stp q6, q7, [sp, #16 + 96] + b ffi_go_closure_SYSV_save_argument + NESTED_END ffi_go_closure_SYSV_V + + NESTED_ENTRY ffi_go_closure_SYSV + PROLOG_SAVE_REG_PAIR x29, x30, #-ffi_closure_SYSV_FS! + +ffi_go_closure_SYSV_save_argument + /* Save the argument passing core registers. */ + stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0] + stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16] + stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32] + stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48] + + /* Load ffi_closure_inner arguments. */ + ldp PTR_REG(0), PTR_REG(1), [x18, #PTR_SIZE]/* load cif, fn */ + mov x2, x18 /* load user_data */ + b do_closure + NESTED_END ffi_go_closure_SYSV + +#endif /* FFI_GO_CLOSURES */ + + +/* void extend_hfa_type (void *dest, void *src, int h) */ + + LEAF_ENTRY extend_hfa_type + + adr x3, extend_hfa_type_jump_base + and w2, w2, #AARCH64_RET_MASK + sub x2, x2, #AARCH64_RET_S4 + add x3, x3, x2, lsl #4 + br x3 + + ALIGN 4 +extend_hfa_type_jump_base + ldp s16, s17, [x1] /* S4 */ + ldp s18, s19, [x1, #8] + b extend_hfa_type_store_4 + nop + + ldp s16, s17, [x1] /* S3 */ + ldr s18, [x1, #8] + b extend_hfa_type_store_3 + nop + + ldp s16, s17, [x1] /* S2 */ + b extend_hfa_type_store_2 + nop + nop + + ldr s16, [x1] /* S1 */ + b extend_hfa_type_store_1 + nop + nop + + ldp d16, d17, [x1] /* D4 */ + ldp d18, d19, [x1, #16] + b extend_hfa_type_store_4 + nop + + ldp d16, d17, [x1] /* D3 */ + ldr d18, [x1, #16] + b extend_hfa_type_store_3 + nop + + ldp d16, d17, [x1] /* D2 */ + b extend_hfa_type_store_2 + nop + nop + + ldr d16, [x1] /* D1 */ + b extend_hfa_type_store_1 + nop + nop + + ldp q16, q17, [x1] /* Q4 */ + ldp q18, q19, [x1, #16] + b extend_hfa_type_store_4 + nop + + ldp q16, q17, [x1] /* Q3 */ + ldr q18, [x1, #16] + b extend_hfa_type_store_3 + nop + + ldp q16, q17, [x1] /* Q2 */ + b extend_hfa_type_store_2 + nop + nop + + ldr q16, [x1] /* Q1 */ + b extend_hfa_type_store_1 + +extend_hfa_type_store_4 + str q19, [x0, #48] +extend_hfa_type_store_3 + str q18, [x0, #32] +extend_hfa_type_store_2 + str q17, [x0, #16] +extend_hfa_type_store_1 + str q16, [x0] + ret + + LEAF_END extend_hfa_type + + +/* void compress_hfa_type (void *dest, void *reg, int h) */ + + LEAF_ENTRY compress_hfa_type + + adr x3, compress_hfa_type_jump_base + and w2, w2, #AARCH64_RET_MASK + sub x2, x2, #AARCH64_RET_S4 + add x3, x3, x2, lsl #4 + br x3 + + ALIGN 4 +compress_hfa_type_jump_base + ldp q16, q17, [x1] /* S4 */ + ldp q18, q19, [x1, #32] + st4 { v16.s, v17.s, v18.s, v19.s }[0], [x0] + ret + + ldp q16, q17, [x1] /* S3 */ + ldr q18, [x1, #32] + st3 { v16.s, v17.s, v18.s }[0], [x0] + ret + + ldp q16, q17, [x1] /* S2 */ + st2 { v16.s, v17.s }[0], [x0] + ret + nop + + ldr q16, [x1] /* S1 */ + st1 { v16.s }[0], [x0] + ret + nop + + ldp q16, q17, [x1] /* D4 */ + ldp q18, q19, [x1, #32] + st4 { v16.d, v17.d, v18.d, v19.d }[0], [x0] + ret + + ldp q16, q17, [x1] /* D3 */ + ldr q18, [x1, #32] + st3 { v16.d, v17.d, v18.d }[0], [x0] + ret + + ldp q16, q17, [x1] /* D2 */ + st2 { v16.d, v17.d }[0], [x0] + ret + nop + + ldr q16, [x1] /* D1 */ + st1 { v16.d }[0], [x0] + ret + nop + + ldp q16, q17, [x1] /* Q4 */ + ldp q18, q19, [x1, #32] + b compress_hfa_type_store_q4 + nop + + ldp q16, q17, [x1] /* Q3 */ + ldr q18, [x1, #32] + b compress_hfa_type_store_q3 + nop + + ldp q16, q17, [x1] /* Q2 */ + stp q16, q17, [x0] + ret + nop + + ldr q16, [x1] /* Q1 */ + str q16, [x0] + ret + +compress_hfa_type_store_q4 + str q19, [x0, #48] +compress_hfa_type_store_q3 + str q18, [x0, #32] + stp q16, q17, [x0] + ret + + LEAF_END compress_hfa_type + + END \ No newline at end of file diff --git a/deps/libffi/src/alpha/ffi.c b/deps/libffi/src/alpha/ffi.c new file mode 100644 index 00000000000000..7a95e9707c3a0f --- /dev/null +++ b/deps/libffi/src/alpha/ffi.c @@ -0,0 +1,521 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Anthony Green + Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. + + Alpha Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if defined(__LONG_DOUBLE_128__) +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +extern void ffi_call_osf(void *stack, void *frame, unsigned flags, + void *raddr, void (*fn)(void), void *closure) + FFI_HIDDEN; +extern void ffi_closure_osf(void) FFI_HIDDEN; +extern void ffi_go_closure_osf(void) FFI_HIDDEN; + +/* Promote a float value to its in-register double representation. + Unlike actually casting to double, this does not trap on NaN. */ +static inline UINT64 lds(void *ptr) +{ + UINT64 ret; + asm("lds %0,%1" : "=f"(ret) : "m"(*(UINT32 *)ptr)); + return ret; +} + +/* And the reverse. */ +static inline void sts(void *ptr, UINT64 val) +{ + asm("sts %1,%0" : "=m"(*(UINT32 *)ptr) : "f"(val)); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t bytes = 0; + int flags, i, avn; + ffi_type *rtype, *itype; + + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + /* Compute the size of the argument area. */ + for (i = 0, avn = cif->nargs; i < avn; i++) + { + itype = cif->arg_types[i]; + switch (itype->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + /* All take one 8 byte slot. */ + bytes += 8; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + /* Passed by value in N slots. */ + bytes += FFI_ALIGN(itype->size, FFI_SIZEOF_ARG); + break; + + case FFI_TYPE_COMPLEX: + /* _Complex long double passed by reference; others in 2 slots. */ + if (itype->elements[0]->type == FFI_TYPE_LONGDOUBLE) + bytes += 8; + else + bytes += 16; + break; + + default: + abort(); + } + } + + /* Set the return type flag */ + rtype = cif->rtype; + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = ALPHA_FLAGS(ALPHA_ST_VOID, ALPHA_LD_VOID); + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT32); + break; + case FFI_TYPE_FLOAT: + flags = ALPHA_FLAGS(ALPHA_ST_FLOAT, ALPHA_LD_FLOAT); + break; + case FFI_TYPE_DOUBLE: + flags = ALPHA_FLAGS(ALPHA_ST_DOUBLE, ALPHA_LD_DOUBLE); + break; + case FFI_TYPE_UINT8: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_UINT8); + break; + case FFI_TYPE_SINT8: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_SINT8); + break; + case FFI_TYPE_UINT16: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_UINT16); + break; + case FFI_TYPE_SINT16: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_SINT16); + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT64); + break; + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + /* Passed in memory, with a hidden pointer. */ + flags = ALPHA_RET_IN_MEM; + break; + case FFI_TYPE_COMPLEX: + itype = rtype->elements[0]; + switch (itype->type) + { + case FFI_TYPE_FLOAT: + flags = ALPHA_FLAGS(ALPHA_ST_CPLXF, ALPHA_LD_CPLXF); + break; + case FFI_TYPE_DOUBLE: + flags = ALPHA_FLAGS(ALPHA_ST_CPLXD, ALPHA_LD_CPLXD); + break; + default: + if (rtype->size <= 8) + flags = ALPHA_FLAGS(ALPHA_ST_INT, ALPHA_LD_INT64); + else + flags = ALPHA_RET_IN_MEM; + break; + } + break; + default: + abort(); + } + cif->flags = flags; + + /* Include the hidden structure pointer in args requirement. */ + if (flags == ALPHA_RET_IN_MEM) + bytes += 8; + /* Minimum size is 6 slots, so that ffi_call_osf can pop them. */ + if (bytes < 6*8) + bytes = 6*8; + cif->bytes = bytes; + + return FFI_OK; +} + +static unsigned long +extend_basic_type(void *valp, int type, int argn) +{ + switch (type) + { + case FFI_TYPE_SINT8: + return *(SINT8 *)valp; + case FFI_TYPE_UINT8: + return *(UINT8 *)valp; + case FFI_TYPE_SINT16: + return *(SINT16 *)valp; + case FFI_TYPE_UINT16: + return *(UINT16 *)valp; + + case FFI_TYPE_FLOAT: + if (argn < 6) + return lds(valp); + /* FALLTHRU */ + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + /* Note that unsigned 32-bit quantities are sign extended. */ + return *(SINT32 *)valp; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_DOUBLE: + return *(UINT64 *)valp; + + default: + abort(); + } +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + unsigned long *argp; + long i, avn, argn, flags = cif->flags; + ffi_type **arg_types; + void *frame; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + if (rvalue == NULL && flags == ALPHA_RET_IN_MEM) + rvalue = alloca(cif->rtype->size); + + /* Allocate the space for the arguments, plus 4 words of temp + space for ffi_call_osf. */ + argp = frame = alloca(cif->bytes + 4*FFI_SIZEOF_ARG); + frame += cif->bytes; + + argn = 0; + if (flags == ALPHA_RET_IN_MEM) + argp[argn++] = (unsigned long)rvalue; + + avn = cif->nargs; + arg_types = cif->arg_types; + + for (i = 0, avn = cif->nargs; i < avn; i++) + { + ffi_type *ty = arg_types[i]; + void *valp = avalue[i]; + int type = ty->type; + size_t size; + + switch (type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + argp[argn] = extend_basic_type(valp, type, argn); + argn++; + break; + + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Note that 128-bit long double is passed by reference. */ + argp[argn++] = (unsigned long)valp; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + size = ty->size; + memcpy(argp + argn, valp, size); + argn += FFI_ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + break; + + case FFI_TYPE_COMPLEX: + type = ty->elements[0]->type; + if (type == FFI_TYPE_LONGDOUBLE) + goto by_reference; + + /* Most complex types passed as two separate arguments. */ + size = ty->elements[0]->size; + argp[argn] = extend_basic_type(valp, type, argn); + argp[argn + 1] = extend_basic_type(valp + size, type, argn + 1); + argn += 2; + break; + + default: + abort(); + } + } + + flags = (flags >> ALPHA_ST_SHIFT) & 0xff; + ffi_call_osf(argp, frame, flags, rvalue, fn, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + tramp[0] = 0x47fb0401; /* mov $27,$1 */ + tramp[1] = 0xa77b0010; /* ldq $27,16($27) */ + tramp[2] = 0x6bfb0000; /* jmp $31,($27),0 */ + tramp[3] = 0x47ff041f; /* nop */ + *(void **) &tramp[4] = ffi_closure_osf; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the Icache. + + Tru64 UNIX as doesn't understand the imb mnemonic, so use call_pal + instead, since both Compaq as and gas can handle it. + + 0x86 is PAL_imb in Tru64 UNIX . */ + asm volatile ("call_pal 0x86" : : : "memory"); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_OSF) + return FFI_BAD_ABI; + + closure->tramp = (void *)ffi_go_closure_osf; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +long FFI_HIDDEN +ffi_closure_osf_inner (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, unsigned long *argp) +{ + void **avalue; + ffi_type **arg_types; + long i, avn, argn, flags; + + avalue = alloca(cif->nargs * sizeof(void *)); + flags = cif->flags; + argn = 0; + + /* Copy the caller's structure return address to that the closure + returns the data directly to the caller. */ + if (flags == ALPHA_RET_IN_MEM) + { + rvalue = (void *) argp[0]; + argn = 1; + } + + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, avn = cif->nargs; i < avn; i++) + { + ffi_type *ty = arg_types[i]; + int type = ty->type; + void *valp = &argp[argn]; + size_t size; + + switch (type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + argn += 1; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + size = ty->size; + argn += FFI_ALIGN(size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + break; + + case FFI_TYPE_FLOAT: + /* Floats coming from registers need conversion from double + back to float format. */ + if (argn < 6) + { + valp = &argp[argn - 6]; + sts(valp, argp[argn - 6]); + } + argn += 1; + break; + + case FFI_TYPE_DOUBLE: + if (argn < 6) + valp = &argp[argn - 6]; + argn += 1; + break; + + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* 128-bit long double is passed by reference. */ + valp = (void *)argp[argn]; + argn += 1; + break; + + case FFI_TYPE_COMPLEX: + type = ty->elements[0]->type; + switch (type) + { + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + /* Passed as separate arguments, but they wind up sequential. */ + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + /* Passed as separate arguments. Disjoint, but there's room + enough in one slot to hold the pair. */ + size = ty->elements[0]->size; + memcpy(valp + size, valp + 8, size); + break; + + case FFI_TYPE_FLOAT: + /* Passed as separate arguments. Disjoint, and each piece + may need conversion back to float. */ + if (argn < 6) + { + valp = &argp[argn - 6]; + sts(valp, argp[argn - 6]); + } + if (argn + 1 < 6) + sts(valp + 4, argp[argn + 1 - 6]); + else + *(UINT32 *)(valp + 4) = argp[argn + 1]; + break; + + case FFI_TYPE_DOUBLE: + /* Passed as separate arguments. Only disjoint if one part + is in fp regs and the other is on the stack. */ + if (argn < 5) + valp = &argp[argn - 6]; + else if (argn == 5) + { + valp = alloca(16); + ((UINT64 *)valp)[0] = argp[5 - 6]; + ((UINT64 *)valp)[1] = argp[6]; + } + break; + + case FFI_TYPE_LONGDOUBLE: + goto by_reference; + + default: + abort(); + } + argn += 2; + break; + + default: + abort (); + } + + avalue[i] = valp; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_osf how to perform return type promotions. */ + return (flags >> ALPHA_LD_SHIFT) & 0xff; +} diff --git a/deps/libffi/src/alpha/ffitarget.h b/deps/libffi/src/alpha/ffitarget.h new file mode 100644 index 00000000000000..a02dbd04f6df30 --- /dev/null +++ b/deps/libffi/src/alpha/ffitarget.h @@ -0,0 +1,57 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for Alpha. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_OSF, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_OSF +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#define FFI_TARGET_HAS_COMPLEX_TYPE + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/alpha/internal.h b/deps/libffi/src/alpha/internal.h new file mode 100644 index 00000000000000..44da1922bb9fed --- /dev/null +++ b/deps/libffi/src/alpha/internal.h @@ -0,0 +1,23 @@ +#define ALPHA_ST_VOID 0 +#define ALPHA_ST_INT 1 +#define ALPHA_ST_FLOAT 2 +#define ALPHA_ST_DOUBLE 3 +#define ALPHA_ST_CPLXF 4 +#define ALPHA_ST_CPLXD 5 + +#define ALPHA_LD_VOID 0 +#define ALPHA_LD_INT64 1 +#define ALPHA_LD_INT32 2 +#define ALPHA_LD_UINT16 3 +#define ALPHA_LD_SINT16 4 +#define ALPHA_LD_UINT8 5 +#define ALPHA_LD_SINT8 6 +#define ALPHA_LD_FLOAT 7 +#define ALPHA_LD_DOUBLE 8 +#define ALPHA_LD_CPLXF 9 +#define ALPHA_LD_CPLXD 10 + +#define ALPHA_ST_SHIFT 0 +#define ALPHA_LD_SHIFT 8 +#define ALPHA_RET_IN_MEM 0x10000 +#define ALPHA_FLAGS(S, L) (((L) << ALPHA_LD_SHIFT) | (S)) diff --git a/deps/libffi/src/alpha/osf.S b/deps/libffi/src/alpha/osf.S new file mode 100644 index 00000000000000..b0318282a015ac --- /dev/null +++ b/deps/libffi/src/alpha/osf.S @@ -0,0 +1,282 @@ +/* ----------------------------------------------------------------------- + osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011, 2014 Red Hat + + Alpha/OSF Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + + .arch ev6 + .text + +/* Aid in building a direct addressed jump table, 4 insns per entry. */ +.macro E index + .align 4 + .org 99b + \index * 16 +.endm + +/* ffi_call_osf (void *stack, void *frame, unsigned flags, + void *raddr, void (*fnaddr)(void), void *closure) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .align 4 + .globl ffi_call_osf + .ent ffi_call_osf + FFI_HIDDEN(ffi_call_osf) + +ffi_call_osf: + cfi_startproc + cfi_def_cfa($17, 32) + mov $16, $30 + stq $26, 0($17) + stq $15, 8($17) + mov $17, $15 + .prologue 0 + cfi_def_cfa_register($15) + cfi_rel_offset($26, 0) + cfi_rel_offset($15, 8) + + stq $18, 16($17) # save flags into frame + stq $19, 24($17) # save rvalue into frame + mov $20, $27 # fn into place for call + mov $21, $1 # closure into static chain + + # Load up all of the (potential) argument registers. + ldq $16, 0($30) + ldt $f16, 0($30) + ldt $f17, 8($30) + ldq $17, 8($30) + ldt $f18, 16($30) + ldq $18, 16($30) + ldt $f19, 24($30) + ldq $19, 24($30) + ldt $f20, 32($30) + ldq $20, 32($30) + ldt $f21, 40($30) + ldq $21, 40($30) + + # Deallocate the register argument area. + lda $30, 48($30) + + jsr $26, ($27), 0 +0: + ldah $29, 0($26) !gpdisp!1 + ldq $2, 24($15) # reload rvalue + lda $29, 0($29) !gpdisp!1 + ldq $3, 16($15) # reload flags + lda $1, 99f-0b($26) + ldq $26, 0($15) + ldq $15, 8($15) + cfi_restore($26) + cfi_restore($15) + cfi_def_cfa($sp, 0) + cmoveq $2, ALPHA_ST_VOID, $3 # mash null rvalue to void + addq $3, $3, $3 + s8addq $3, $1, $1 # 99f + stcode * 16 + jmp $31, ($1), $st_int + + .align 4 +99: +E ALPHA_ST_VOID + ret +E ALPHA_ST_INT +$st_int: + stq $0, 0($2) + ret +E ALPHA_ST_FLOAT + sts $f0, 0($2) + ret +E ALPHA_ST_DOUBLE + stt $f0, 0($2) + ret +E ALPHA_ST_CPLXF + sts $f0, 0($2) + sts $f1, 4($2) + ret +E ALPHA_ST_CPLXD + stt $f0, 0($2) + stt $f1, 8($2) + ret + + cfi_endproc + .end ffi_call_osf + +/* ffi_closure_osf(...) + + Receives the closure argument in $1. */ + +#define CLOSURE_FS (16*8) + + .align 4 + .globl ffi_go_closure_osf + .ent ffi_go_closure_osf + FFI_HIDDEN(ffi_go_closure_osf) + +ffi_go_closure_osf: + cfi_startproc + ldgp $29, 0($27) + subq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(CLOSURE_FS) + stq $26, 0($30) + .prologue 1 + cfi_rel_offset($26, 0) + + stq $16, 10*8($30) + stq $17, 11*8($30) + stq $18, 12*8($30) + + ldq $16, 8($1) # load cif + ldq $17, 16($1) # load fun + mov $1, $18 # closure is user_data + br $do_closure + + cfi_endproc + .end ffi_go_closure_osf + + .align 4 + .globl ffi_closure_osf + .ent ffi_closure_osf + FFI_HIDDEN(ffi_closure_osf) + +ffi_closure_osf: + cfi_startproc + ldgp $29, 0($27) + subq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(CLOSURE_FS) + stq $26, 0($30) + .prologue 1 + cfi_rel_offset($26, 0) + + # Store all of the potential argument registers in va_list format. + stq $16, 10*8($30) + stq $17, 11*8($30) + stq $18, 12*8($30) + + ldq $16, 24($1) # load cif + ldq $17, 32($1) # load fun + ldq $18, 40($1) # load user_data + +$do_closure: + stq $19, 13*8($30) + stq $20, 14*8($30) + stq $21, 15*8($30) + stt $f16, 4*8($30) + stt $f17, 5*8($30) + stt $f18, 6*8($30) + stt $f19, 7*8($30) + stt $f20, 8*8($30) + stt $f21, 9*8($30) + + # Call ffi_closure_osf_inner to do the bulk of the work. + lda $19, 2*8($30) + lda $20, 10*8($30) + jsr $26, ffi_closure_osf_inner +0: + ldah $29, 0($26) !gpdisp!2 + lda $2, 99f-0b($26) + s4addq $0, 0, $1 # ldcode * 4 + ldq $0, 16($30) # preload return value + s4addq $1, $2, $1 # 99f + ldcode * 16 + lda $29, 0($29) !gpdisp!2 + ldq $26, 0($30) + cfi_restore($26) + jmp $31, ($1), $load_32 + +.macro epilogue + addq $30, CLOSURE_FS, $30 + cfi_adjust_cfa_offset(-CLOSURE_FS) + ret + .align 4 + cfi_adjust_cfa_offset(CLOSURE_FS) +.endm + + .align 4 +99: +E ALPHA_LD_VOID + epilogue + +E ALPHA_LD_INT64 + epilogue + +E ALPHA_LD_INT32 +$load_32: + sextl $0, $0 + epilogue + +E ALPHA_LD_UINT16 + zapnot $0, 3, $0 + epilogue + +E ALPHA_LD_SINT16 +#ifdef __alpha_bwx__ + sextw $0, $0 +#else + sll $0, 48, $0 + sra $0, 48, $0 +#endif + epilogue + +E ALPHA_LD_UINT8 + and $0, 0xff, $0 + epilogue + +E ALPHA_LD_SINT8 +#ifdef __alpha_bwx__ + sextb $0, $0 +#else + sll $0, 56, $0 + sra $0, 56, $0 +#endif + epilogue + +E ALPHA_LD_FLOAT + lds $f0, 16($sp) + epilogue + +E ALPHA_LD_DOUBLE + ldt $f0, 16($sp) + epilogue + +E ALPHA_LD_CPLXF + lds $f0, 16($sp) + lds $f1, 20($sp) + epilogue + +E ALPHA_LD_CPLXD + ldt $f0, 16($sp) + ldt $f1, 24($sp) + epilogue + + cfi_endproc + .end ffi_closure_osf + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/arc/arcompact.S b/deps/libffi/src/arc/arcompact.S new file mode 100644 index 00000000000000..e74934110202b4 --- /dev/null +++ b/deps/libffi/src/arc/arcompact.S @@ -0,0 +1,210 @@ +/* ----------------------------------------------------------------------- + arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com) + + ARCompact Foreign Function Interface + + 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 RENESAS TECHNOLOGY 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x): +#endif + +#if __SIZEOF_POINTER__ == 8 +#define PTRS 8 +#define FLTS 8 +#define LARG ldl +#define SARG stl +#define ADDPTR addl +#define MOVPTR movl +#else +#define PTRS 4 +#define FLTS 4 +#define LARG ld +#define SARG st +#define ADDPTR add +#define MOVPTR mov +#endif + +#define FRAME_LEN (8 * PTRS + 16) + +.text + +ENTRY(ffi_call_asm) + .cfi_startproc + + /* Save registers. */ + .cfi_def_cfa r1, FRAME_LEN + SARG fp, [r1, FRAME_LEN - 2*PTRS] + .cfi_offset fp, -2*PTRS + SARG blink, [r1, FRAME_LEN - 1*PTRS] + .cfi_offset blink, -1*PTRS + ADDPTR fp, r1, FRAME_LEN + MOVPTR sp, r0 + .cfi_def_cfa fp, 0 + + /* Load arguments. */ + MOVPTR r11, r2 /* fn */ + MOVPTR r12, r3 /* closure */ + + /* Save arguments. */ + LARG r0, [fp, -FRAME_LEN+0*PTRS] + LARG r1, [fp, -FRAME_LEN+1*PTRS] + LARG r2, [fp, -FRAME_LEN+2*PTRS] + LARG r3, [fp, -FRAME_LEN+3*PTRS] + LARG r4, [fp, -FRAME_LEN+4*PTRS] + LARG r5, [fp, -FRAME_LEN+5*PTRS] + LARG r6, [fp, -FRAME_LEN+6*PTRS] + LARG r7, [fp, -FRAME_LEN+7*PTRS] + + /* Call the function. */ + jl [r11] + + /* Save return value (r0/r1) */ + SARG r0, [fp, -FRAME_LEN+0*PTRS] + SARG r1, [fp, -FRAME_LEN+1*PTRS] + + /* Restore and return. */ + add sp, fp, -FRAME_LEN + .cfi_def_cfa sp, FRAME_LEN + LARG blink, [fp, -1*PTRS] + .cfi_restore blink + LARG fp, [fp, -2*PTRS] + .cfi_restore fp + j_s [blink] + .cfi_endproc + .size ffi_call_asm, .-ffi_call_asm + +/* + ffi_closure_asm. Expects address of the passed-in ffi_closure in r8. + void ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) +*/ + +ENTRY(ffi_closure_asm) + .cfi_startproc + + ADDPTR sp, sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* Make a frame. */ + SARG fp, [sp, FRAME_LEN-2*PTRS] + .cfi_offset fp, -2*PTRS + SARG blink, [sp, FRAME_LEN-1*PTRS] + .cfi_offset blink, -1*PTRS + ADDPTR fp, sp, FRAME_LEN + + /* Save arguments. */ + SARG r0, [sp, 0*PTRS] + SARG r1, [sp, 1*PTRS] + SARG r2, [sp, 2*PTRS] + SARG r3, [sp, 3*PTRS] + SARG r4, [sp, 4*PTRS] + SARG r5, [sp, 5*PTRS] + SARG r6, [sp, 6*PTRS] + SARG r7, [sp, 7*PTRS] + + /* Enter C. */ + LARG r0, [r8, FFI_TRAMPOLINE_SIZE+0*PTRS] + LARG r1, [r8, FFI_TRAMPOLINE_SIZE+1*PTRS] + LARG r2, [r8, FFI_TRAMPOLINE_SIZE+2*PTRS] + ADDPTR r3, sp, FRAME_LEN + MOVPTR r4, sp + + /* Call the C code. */ + bl ffi_closure_inner + + /* Return values. */ + LARG r0, [sp, 0*PTRS] + LARG r1, [sp, 1*PTRS] + + /* Restore and return. */ + LARG blink, [sp, FRAME_LEN-1*PTRS] + .cfi_restore blink + LARG fp, [sp, FRAME_LEN-2*PTRS] + .cfi_restore fp + ADDPTR sp, sp, FRAME_LEN + .cfi_def_cfa_offset 0 + j_s [blink] + .cfi_endproc + .size ffi_closure_asm, .-ffi_closure_asm + +/* + ffi_go_closure_asm. Expects address of the passed-in ffi_go_closure in r12. + void ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) +*/ + +ENTRY(ffi_go_closure_asm) + .cfi_startproc + + ADDPTR sp, sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* make a frame */ + SARG fp, [sp, FRAME_LEN-2*PTRS] + .cfi_offset fp, -2*PTRS + SARG blink, [sp, FRAME_LEN-1*PTRS] + .cfi_offset blink, -1*PTRS + ADDPTR fp, sp, FRAME_LEN + + /* save arguments */ + SARG r0, [sp, 0*PTRS] + SARG r1, [sp, 1*PTRS] + SARG r2, [sp, 2*PTRS] + SARG r3, [sp, 3*PTRS] + SARG r4, [sp, 4*PTRS] + SARG r5, [sp, 5*PTRS] + SARG r6, [sp, 6*PTRS] + SARG r7, [sp, 7*PTRS] + + /* enter C */ + LARG r0, [r12, 1*PTRS] + LARG r1, [r12, 2*PTRS] + MOVPTR r2, r12 + ADDPTR r3, sp, FRAME_LEN + MOVPTR r4, sp + + bl ffi_closure_inner + + /* Return values. */ + LARG r0, [sp, 0*PTRS] + LARG r1, [sp, 1*PTRS] + + + LARG blink, [sp, FRAME_LEN-1*PTRS] + .cfi_restore blink + LARG fp, [sp, FRAME_LEN-2*PTRS] + .cfi_restore fp + ADDPTR sp, sp, FRAME_LEN + .cfi_def_cfa_offset 0 + j_s [blink] + .cfi_endproc + .size ffi_go_closure_asm, .-ffi_go_closure_asm diff --git a/deps/libffi/src/arc/ffi.c b/deps/libffi/src/arc/ffi.c new file mode 100644 index 00000000000000..0632319139bb53 --- /dev/null +++ b/deps/libffi/src/arc/ffi.c @@ -0,0 +1,447 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) + + ARC Foreign Function Interface + + 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 RENESAS TECHNOLOGY 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#include + +#define NARGREG 8 +#define STKALIGN 4 +#define MAXCOPYARG (2 * sizeof(double)) + +typedef struct call_context +{ + size_t r[8]; + /* used by the assembly code to in-place construct its own stack frame */ + char frame[16]; +} call_context; + +typedef struct call_builder +{ + call_context *aregs; + int used_integer; + //int used_float; + size_t *used_stack; + void *struct_stack; +} call_builder; + +/* integer (not pointer) less than ABI XLEN */ +/* FFI_TYPE_INT does not appear to be used */ +#if defined(__ARC64_ARCH64__) +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) +#else +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) +#endif + +/* for little endian ARC, the code is in fact stored as mixed endian for + performance reasons */ +#if __BIG_ENDIAN__ +#define CODE_ENDIAN(x) (x) +#else +#define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16)) +#endif + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep (ffi_cif * cif) +{ + /* Set the return type flag. */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_STRUCT: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFI_TYPE_DOUBLE; + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +/* allocates a single register, float register, or XLEN-sized stack slot to a datum */ +static void marshal_atom(call_builder *cb, int type, void *data) { + size_t value = 0; + switch (type) { + case FFI_TYPE_UINT8: value = *(uint8_t *)data; break; + case FFI_TYPE_SINT8: value = *(int8_t *)data; break; + case FFI_TYPE_UINT16: value = *(uint16_t *)data; break; + case FFI_TYPE_SINT16: value = *(int16_t *)data; break; + /* 32-bit quantities are always sign-extended in the ABI */ + case FFI_TYPE_UINT32: value = *(int32_t *)data; break; + case FFI_TYPE_SINT32: value = *(int32_t *)data; break; +#if defined(__ARC64_ARCH64__) + case FFI_TYPE_UINT64: value = *(uint64_t *)data; break; + case FFI_TYPE_SINT64: value = *(int64_t *)data; break; +#endif + case FFI_TYPE_POINTER: value = *(size_t *)data; break; + default: FFI_ASSERT(0); break; + } + + if (cb->used_integer == NARGREG) { + *cb->used_stack++ = value; + } else { + cb->aregs->r[cb->used_integer++] = value; + } +} + +/* adds an argument to a call, or a not by reference return value */ +static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + +#if (defined(__ARC64_ARCH64__) || defined(__ARC64_ARCH32__)) + if (type->size > 2 * __SIZEOF_POINTER__) { + if (var) { + marshal_atom(cb, FFI_TYPE_POINTER, &data); + } else { + /* copy to stack and pass by reference */ + data = memcpy (cb->struct_stack, data, type->size); + cb->struct_stack = (size_t *) FFI_ALIGN ((char *) cb->struct_stack + type->size, __SIZEOF_POINTER__); + marshal_atom(cb, FFI_TYPE_POINTER, &data); + } + } +#else + if (type->type == FFI_TYPE_STRUCT) { + if (var) { + if (type->size > 0) + marshal_atom(cb, FFI_TYPE_POINTER, data); + } else { + int i; + + for (i = 0; i < type->size; i += sizeof(size_t)) { + marshal_atom(cb, FFI_TYPE_POINTER, data); + data += sizeof(size_t); + } + } + } +#endif + else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + marshal_atom(cb, type->type, data); + } else { + memcpy(realign, data, type->size); + if (type->size > 0) + marshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + marshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + } +} + +static void unmarshal_atom(call_builder *cb, int type, void *data) { + size_t value; + + if (cb->used_integer == NARGREG) { + value = *cb->used_stack++; + } else { + value = cb->aregs->r[cb->used_integer++]; + } + + switch (type) { + case FFI_TYPE_UINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_SINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_UINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_SINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_UINT32: *(uint32_t *)data = value; break; + case FFI_TYPE_SINT32: *(uint32_t *)data = value; break; +#if defined(__ARC64_ARCH64__) + case FFI_TYPE_UINT64: *(uint64_t *)data = value; break; + case FFI_TYPE_SINT64: *(uint64_t *)data = value; break; +#endif + case FFI_TYPE_POINTER: *(size_t *)data = value; break; + default: FFI_ASSERT(0); break; + } +} + +/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ +static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + +#if defined(__ARC64_ARCH64__) + void *pointer; + + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); + return pointer; + } +#elif defined(__ARC64_ARCH32__) + if (type->type == FFI_TYPE_STRUCT) { + if (type->size > 2 * __SIZEOF_POINTER__) { + unmarshal_atom(cb, FFI_TYPE_POINTER, &realign[0]); + memcpy(data, (const void*)realign[0], type->size); + return data; + } else { + int i; + void *pdata = data; + + for (i = 0; i < type->size; i += sizeof(size_t)) { + unmarshal_atom(cb, FFI_TYPE_POINTER, pdata); + pdata += sizeof(size_t); + } + return data; + } + } +#else + if (type->type == FFI_TYPE_STRUCT) { + + if (var) { + int i; + void *pdata = data; + + for (i = 0; i < type->size; i += sizeof(size_t)) { + unmarshal_atom(cb, FFI_TYPE_POINTER, pdata); + pdata += sizeof(size_t); + } + return data; + } else { + if (type->size > 0) + unmarshal_atom(cb, FFI_TYPE_POINTER, &realign[0]); + memcpy(data, (const void*)realign[0], type->size); + return data; + } + } +#endif + else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + unmarshal_atom(cb, type->type, data); + return data; + } else { + if (type->size > 0) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + memcpy(data, realign, type->size); + return data; + } +} + +static int passed_by_ref(ffi_type *type, int var) { + if (type->type == FFI_TYPE_STRUCT) + return 1; + + return type->size > 2 * __SIZEOF_POINTER__; +} + +/* Low level routine for calling functions */ +extern void ffi_call_asm (void *stack, struct call_context *regs, + void (*fn) (void), void *closure) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + int return_by_ref = passed_by_ref(cif->rtype, 0); + + /* Allocate space for stack arg parameters. */ + size_t arg_bytes = FFI_ALIGN(2 * sizeof(size_t) * cif->nargs, STKALIGN); + /* Allocate space for copies of big structures. */ + size_t struct_bytes = FFI_ALIGN(cif->bytes, STKALIGN); + // size_t rval_bytes = 0; + // if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) + // rval_bytes = FFI_ALIGN(cif->rtype->size, STKALIGN); + size_t alloc_size = arg_bytes + /*rval_bytes +*/ struct_bytes + sizeof(call_context); + size_t alloc_base = (size_t)alloca(alloc_size); + + // if (rval_bytes) + // rvalue = (void*)(alloc_base + arg_bytes); + + call_builder cb; + cb.used_integer = 0; + cb.aregs = (call_context*)(alloc_base + arg_bytes /*+ rval_bytes*/ + struct_bytes); + cb.used_stack = (void*)alloc_base; + cb.struct_stack = (void *)(alloc_base + arg_bytes /*+ rval_bytes*/); + + // if (cif->rtype->type == FFI_TYPE_STRUCT) + // marshal(&cb, &ffi_type_pointer, 0, &rvalue); + + if (return_by_ref) + marshal(&cb, &ffi_type_pointer, 0, &rvalue); + + int i; + for (i = 0; i < cif->nargs; i++) + marshal(&cb, cif->arg_types[i], 0, avalue[i]); + + ffi_call_asm ((void *) alloc_base, cb.aregs, fn, closure); + + cb.used_integer = 0; + if (!return_by_ref && rvalue) + { + if (IS_INT(cif->rtype->type) + && cif->rtype->size < sizeof (ffi_arg)) + { + /* Integer types smaller than ffi_arg need to be extended. */ + switch (cif->rtype->type) { + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 + ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32), + rvalue); + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 + ? FFI_TYPE_UINT64 : FFI_TYPE_UINT32), + rvalue); + break; + } + } + else + unmarshal(&cb, cif->rtype, 0, rvalue); + } +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +extern void ffi_closure_asm(void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + uint32_t *tramp = (uint32_t *) & (closure->tramp[0]); + +#if defined(__ARC64_ARCH64__) + size_t address_ffi_closure = (size_t) ffi_closure_asm; +#endif + + switch (cif->abi) + { +#if defined(__ARC64_ARCH64__) + case FFI_ARC64: + FFI_ASSERT (tramp == codeloc); + tramp[0] = CODE_ENDIAN (0x580a1fc0); /* movl r8, pcl */ + tramp[1] = CODE_ENDIAN (0x5c0b1f80); /* movhl r12, limm */ + tramp[2] = CODE_ENDIAN ((uint32_t)(address_ffi_closure >> 32)); + tramp[3] = CODE_ENDIAN (0x5c051f8c); /* orl r12, r12, limm */ + tramp[4] = CODE_ENDIAN ((uint32_t)(address_ffi_closure & 0xffffffff)); + tramp[5] = CODE_ENDIAN (0x20200300); /* j [r12] */ + break; +#else + case FFI_ARCOMPACT: + FFI_ASSERT (tramp == codeloc); + tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */ + tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */ + tramp[2] = CODE_ENDIAN ((uint32_t) ffi_closure_asm); + break; +#endif + + default: + return FFI_BAD_ABI; + } + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE); + + return FFI_OK; +} + +extern void ffi_go_closure_asm (void) FFI_HIDDEN; + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + closure->tramp = (void *) ffi_go_closure_asm; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +/* Called by the assembly code with aregs pointing to saved argument registers + and stack pointing to the stacked arguments. Return values passed in + registers will be reloaded from aregs. */ +void FFI_HIDDEN +ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stack, call_context *aregs) +{ + void **avalue = alloca(cif->nargs * sizeof(void*)); + /* storage for arguments which will be copied by unmarshal(). We could + theoretically avoid the copies in many cases and use at most 128 bytes + of memory, but allocating disjoint storage for each argument is + simpler. */ + char *astorage = alloca(cif->bytes); + char *ptr = astorage; + void *rvalue; + call_builder cb; + int i; + + cb.aregs = aregs; + cb.used_integer = 0; + cb.used_stack = stack; + + /* handle hidden argument */ + if (cif->flags == FFI_TYPE_STRUCT) + unmarshal(&cb, &ffi_type_pointer, 0, &rvalue); + else + rvalue = alloca(cif->rtype->size); + + for (i = 0; i < cif->nargs; i++) { + avalue[i] = unmarshal(&cb, cif->arg_types[i], 1, ptr); + ptr += cif->arg_types[i]->size; + } + + fun (cif, rvalue, avalue, user_data); + + if (cif->rtype->type != FFI_TYPE_VOID) { + cb.used_integer = 0; + marshal(&cb, cif->rtype, 1, rvalue); + } +} diff --git a/deps/libffi/src/arc/ffitarget.h b/deps/libffi/src/arc/ffitarget.h new file mode 100644 index 00000000000000..5b36902e714a2b --- /dev/null +++ b/deps/libffi/src/arc/ffitarget.h @@ -0,0 +1,67 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) + Target configuration macros for ARC. + + 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 RENESAS TECHNOLOGY 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi +{ + FFI_FIRST_ABI = 0, +#if __SIZEOF_POINTER__ == 8 + FFI_ARC64, +#else + FFI_ARCOMPACT, +#endif + FFI_LAST_ABI, +#if __SIZEOF_POINTER__ == 8 + FFI_DEFAULT_ABI = FFI_ARC64 +#else + FFI_DEFAULT_ABI = FFI_ARCOMPACT +#endif +} ffi_abi; +#endif + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#if __SIZEOF_POINTER__ == 8 +#define FFI_TRAMPOLINE_SIZE 24 +#else +#define FFI_TRAMPOLINE_SIZE 12 +#endif + +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/arm/ffi.c b/deps/libffi/src/arm/ffi.c new file mode 100644 index 00000000000000..cfd3e9d19ebd4b --- /dev/null +++ b/deps/libffi/src/arm/ffi.c @@ -0,0 +1,921 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Timothy Wall + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + Copyright (c) 2011 Anthony Green + Copyright (c) 2011 Free Software Foundation + Copyright (c) 1998, 2008, 2011 Red Hat, Inc. + + ARM Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#if defined(__arm__) || defined(_M_ARM) +#include +#include +#include +#include +#include +#include +#include "internal.h" + +#if defined(_WIN32) +#define WIN32_LEAN_AND_MEAN +#include +#endif + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include +#endif + +#else +#ifndef _WIN32 +extern unsigned int ffi_arm_trampoline[2] FFI_HIDDEN; +#else +// Declare this as an array of char, instead of array of int, +// otherwise Clang optimizes out the "& 0xFFFFFFFE" for clearing +// the thumb bit. +extern unsigned char ffi_arm_trampoline[12] FFI_HIDDEN; +#endif +#endif + +#if defined(__FreeBSD__) && defined(__arm__) +#include +#include +#endif + +#if defined(__QNX__) +#include +#endif + +/* Forward declares. */ +static int vfp_type_p (const ffi_type *); +static void layout_vfp_args (ffi_cif *); + +static void * +ffi_align (ffi_type *ty, void *p) +{ + /* Align if necessary */ + size_t alignment; +#ifdef _WIN32_WCE + alignment = 4; +#else + alignment = ty->alignment; + if (alignment < 4) + alignment = 4; +#endif + return (void *) FFI_ALIGN (p, alignment); +} + +static size_t +ffi_put_arg (ffi_type *ty, void *src, void *dst) +{ + size_t z = ty->size; + + switch (ty->type) + { + case FFI_TYPE_SINT8: + *(UINT32 *)dst = *(SINT8 *)src; + break; + case FFI_TYPE_UINT8: + *(UINT32 *)dst = *(UINT8 *)src; + break; + case FFI_TYPE_SINT16: + *(UINT32 *)dst = *(SINT16 *)src; + break; + case FFI_TYPE_UINT16: + *(UINT32 *)dst = *(UINT16 *)src; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: +#ifndef _WIN32 + case FFI_TYPE_FLOAT: +#endif + *(UINT32 *)dst = *(UINT32 *)src; + break; + +#ifdef _WIN32 + // casting a float* to a UINT32* doesn't work on Windows + case FFI_TYPE_FLOAT: + *(uintptr_t *)dst = 0; + *(float *)dst = *(float *)src; + break; +#endif + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + *(UINT64 *)dst = *(UINT64 *)src; + break; + + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + memcpy (dst, src, z); + break; + + default: + abort(); + } + + return FFI_ALIGN (z, 4); +} + +/* ffi_prep_args is called once stack space has been allocated + for the function's arguments. + + The vfp_space parameter is the load area for VFP regs, the return + value is cif->vfp_used (word bitset of VFP regs used for passing + arguments). These are only used for the VFP hard-float ABI. +*/ +static void +ffi_prep_args_SYSV (ffi_cif *cif, int flags, void *rvalue, + void **avalue, char *argp) +{ + ffi_type **arg_types = cif->arg_types; + int i, n; + + if (flags == ARM_TYPE_STRUCT) + { + *(void **) argp = rvalue; + argp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + argp = ffi_align (ty, argp); + argp += ffi_put_arg (ty, avalue[i], argp); + } +} + +static void +ffi_prep_args_VFP (ffi_cif *cif, int flags, void *rvalue, + void **avalue, char *stack, char *vfp_space) +{ + ffi_type **arg_types = cif->arg_types; + int i, n, vi = 0; + char *argp, *regp, *eo_regp; + char stack_used = 0; + char done_with_regs = 0; + + /* The first 4 words on the stack are used for values + passed in core registers. */ + regp = stack; + eo_regp = argp = regp + 16; + + /* If the function returns an FFI_TYPE_STRUCT in memory, + that address is passed in r0 to the function. */ + if (flags == ARM_TYPE_STRUCT) + { + *(void **) regp = rvalue; + regp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + void *a = avalue[i]; + int is_vfp_type = vfp_type_p (ty); + + /* Allocated in VFP registers. */ + if (vi < cif->vfp_nargs && is_vfp_type) + { + char *vfp_slot = vfp_space + cif->vfp_args[vi++] * 4; + ffi_put_arg (ty, a, vfp_slot); + continue; + } + /* Try allocating in core registers. */ + else if (!done_with_regs && !is_vfp_type) + { + char *tregp = ffi_align (ty, regp); + size_t size = ty->size; + size = (size < 4) ? 4 : size; // pad + /* Check if there is space left in the aligned register + area to place the argument. */ + if (tregp + size <= eo_regp) + { + regp = tregp + ffi_put_arg (ty, a, tregp); + done_with_regs = (regp == argp); + // ensure we did not write into the stack area + FFI_ASSERT (regp <= argp); + continue; + } + /* In case there are no arguments in the stack area yet, + the argument is passed in the remaining core registers + and on the stack. */ + else if (!stack_used) + { + stack_used = 1; + done_with_regs = 1; + argp = tregp + ffi_put_arg (ty, a, tregp); + FFI_ASSERT (eo_regp < argp); + continue; + } + } + /* Base case, arguments are passed on the stack */ + stack_used = 1; + argp = ffi_align (ty, argp); + argp += ffi_put_arg (ty, a, argp); + } +} + +/* Perform machine dependent cif processing */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep (ffi_cif *cif) +{ + int flags = 0, cabi = cif->abi; + size_t bytes = cif->bytes; + + /* Map out the register placements of VFP register args. The VFP + hard-float calling conventions are slightly more sophisticated + than the base calling conventions, so we do it here instead of + in ffi_prep_args(). */ + if (cabi == FFI_VFP) + layout_vfp_args (cif); + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + flags = ARM_TYPE_VOID; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + flags = ARM_TYPE_INT; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = ARM_TYPE_INT64; + break; + + case FFI_TYPE_FLOAT: + flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_S : ARM_TYPE_INT); + break; + case FFI_TYPE_DOUBLE: + flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_D : ARM_TYPE_INT64); + break; + + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + if (cabi == FFI_VFP) + { + int h = vfp_type_p (cif->rtype); + + flags = ARM_TYPE_VFP_N; + if (h == 0x100 + FFI_TYPE_FLOAT) + flags = ARM_TYPE_VFP_S; + if (h == 0x100 + FFI_TYPE_DOUBLE) + flags = ARM_TYPE_VFP_D; + if (h != 0) + break; + } + + /* A Composite Type not larger than 4 bytes is returned in r0. + A Composite Type larger than 4 bytes, or whose size cannot + be determined statically ... is stored in memory at an + address passed [in r0]. */ + if (cif->rtype->size <= 4) + flags = ARM_TYPE_INT; + else + { + flags = ARM_TYPE_STRUCT; + bytes += 4; + } + break; + + default: + abort(); + } + + /* Round the stack up to a multiple of 8 bytes. This isn't needed + everywhere, but it is on some platforms, and it doesn't harm anything + when it isn't needed. */ + bytes = FFI_ALIGN (bytes, 8); + + /* Minimum stack space is the 4 register arguments that we pop. */ + if (bytes < 4*4) + bytes = 4*4; + + cif->bytes = bytes; + cif->flags = flags; + + return FFI_OK; +} + +/* Perform machine dependent cif processing for variadic calls */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var (ffi_cif * cif, + unsigned int nfixedargs, unsigned int ntotalargs) +{ + /* VFP variadic calls actually use the SYSV ABI */ + if (cif->abi == FFI_VFP) + cif->abi = FFI_SYSV; + + return ffi_prep_cif_machdep (cif); +} + +/* Prototypes for assembly functions, in sysv.S. */ + +struct call_frame +{ + void *fp; + void *lr; + void *rvalue; + int flags; + void *closure; +}; + +extern void ffi_call_SYSV (void *stack, struct call_frame *, + void (*fn) (void)) FFI_HIDDEN; +extern void ffi_call_VFP (void *vfp_space, struct call_frame *, + void (*fn) (void), unsigned vfp_used) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif * cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + int flags = cif->flags; + ffi_type *rtype = cif->rtype; + size_t bytes, rsize, vfp_size; + char *stack, *vfp_space, *new_rvalue; + struct call_frame *frame; + + rsize = 0; + if (rvalue == NULL) + { + /* If the return value is a struct and we don't have a return + value address then we need to make one. Otherwise the return + value is in registers and we can ignore them. */ + if (flags == ARM_TYPE_STRUCT) + rsize = rtype->size; + else + flags = ARM_TYPE_VOID; + } + else if (flags == ARM_TYPE_VFP_N) + { + /* Largest case is double x 4. */ + rsize = 32; + } + else if (flags == ARM_TYPE_INT && rtype->type == FFI_TYPE_STRUCT) + rsize = 4; + + /* Largest case. */ + vfp_size = (cif->abi == FFI_VFP && cif->vfp_used ? 8*8: 0); + + bytes = cif->bytes; + stack = alloca (vfp_size + bytes + sizeof(struct call_frame) + rsize); + + vfp_space = NULL; + if (vfp_size) + { + vfp_space = stack; + stack += vfp_size; + } + + frame = (struct call_frame *)(stack + bytes); + + new_rvalue = rvalue; + if (rsize) + new_rvalue = (void *)(frame + 1); + + frame->rvalue = new_rvalue; + frame->flags = flags; + frame->closure = closure; + + if (vfp_space) + { + ffi_prep_args_VFP (cif, flags, new_rvalue, avalue, stack, vfp_space); + ffi_call_VFP (vfp_space, frame, fn, cif->vfp_used); + } + else + { + ffi_prep_args_SYSV (cif, flags, new_rvalue, avalue, stack); + ffi_call_SYSV (stack, frame, fn); + } + + if (rvalue && rvalue != new_rvalue) + memcpy (rvalue, new_rvalue, rtype->size); +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#ifdef FFI_GO_CLOSURES +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} +#endif + +static void * +ffi_prep_incoming_args_SYSV (ffi_cif *cif, void *rvalue, + char *argp, void **avalue) +{ + ffi_type **arg_types = cif->arg_types; + int i, n; + + if (cif->flags == ARM_TYPE_STRUCT) + { + rvalue = *(void **) argp; + argp += 4; + } + else + { + if (cif->rtype->size && cif->rtype->size < 4) + *(uint32_t *) rvalue = 0; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + + argp = ffi_align (ty, argp); + avalue[i] = (void *) argp; + argp += z; + } + + return rvalue; +} + +static void * +ffi_prep_incoming_args_VFP (ffi_cif *cif, void *rvalue, char *stack, + char *vfp_space, void **avalue) +{ + ffi_type **arg_types = cif->arg_types; + int i, n, vi = 0; + char *argp, *regp, *eo_regp; + char done_with_regs = 0; + char stack_used = 0; + + regp = stack; + eo_regp = argp = regp + 16; + + if (cif->flags == ARM_TYPE_STRUCT) + { + rvalue = *(void **) regp; + regp += 4; + } + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + int is_vfp_type = vfp_type_p (ty); + size_t z = ty->size; + + if (vi < cif->vfp_nargs && is_vfp_type) + { + avalue[i] = vfp_space + cif->vfp_args[vi++] * 4; + continue; + } + else if (!done_with_regs && !is_vfp_type) + { + char *tregp = ffi_align (ty, regp); + + z = (z < 4) ? 4 : z; // pad + + /* If the arguments either fits into the registers or uses registers + and stack, while we haven't read other things from the stack */ + if (tregp + z <= eo_regp || !stack_used) + { + /* Because we're little endian, this is what it turns into. */ + avalue[i] = (void *) tregp; + regp = tregp + z; + + /* If we read past the last core register, make sure we + have not read from the stack before and continue + reading after regp. */ + if (regp > eo_regp) + { + FFI_ASSERT (!stack_used); + argp = regp; + } + if (regp >= eo_regp) + { + done_with_regs = 1; + stack_used = 1; + } + continue; + } + } + + stack_used = 1; + argp = ffi_align (ty, argp); + avalue[i] = (void *) argp; + argp += z; + } + + return rvalue; +} + +#if FFI_CLOSURES + +struct closure_frame +{ + char vfp_space[8*8] __attribute__((aligned(8))); + char result[8*4]; + char argp[]; +}; + +int FFI_HIDDEN +ffi_closure_inner_SYSV (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + struct closure_frame *frame) +{ + void **avalue = (void **) alloca (cif->nargs * sizeof (void *)); + void *rvalue = ffi_prep_incoming_args_SYSV (cif, frame->result, + frame->argp, avalue); + fun (cif, rvalue, avalue, user_data); + return cif->flags; +} + +int FFI_HIDDEN +ffi_closure_inner_VFP (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + struct closure_frame *frame) +{ + void **avalue = (void **) alloca (cif->nargs * sizeof (void *)); + void *rvalue = ffi_prep_incoming_args_VFP (cif, frame->result, frame->argp, + frame->vfp_space, avalue); + fun (cif, rvalue, avalue, user_data); + return cif->flags; +} + +void ffi_closure_SYSV (void) FFI_HIDDEN; +void ffi_closure_VFP (void) FFI_HIDDEN; +#if defined(FFI_EXEC_STATIC_TRAMP) +void ffi_closure_SYSV_alt (void) FFI_HIDDEN; +void ffi_closure_VFP_alt (void) FFI_HIDDEN; +#endif + +#ifdef FFI_GO_CLOSURES +void ffi_go_closure_SYSV (void) FFI_HIDDEN; +void ffi_go_closure_VFP (void) FFI_HIDDEN; +#endif + +/* the cif must already be prep'ed */ + +#if defined(__FreeBSD__) && defined(__arm__) +#define __clear_cache(start, end) do { \ + struct arm_sync_icache_args ua; \ + \ + ua.addr = (uintptr_t)(start); \ + ua.len = (char *)(end) - (char *)start; \ + sysarch(ARM_SYNC_ICACHE, &ua); \ + } while (0); +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure * closure, + ffi_cif * cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + void (*closure_func) (void) = ffi_closure_SYSV; + + if (cif->abi == FFI_VFP) + { + /* We only need take the vfp path if there are vfp arguments. */ + if (cif->vfp_used) + closure_func = ffi_closure_VFP; + } + else if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + +#if FFI_EXEC_TRAMPOLINE_TABLE + void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); + config[0] = closure; + config[1] = closure_func; +#else + +# if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + if (closure_func == ffi_closure_SYSV) + closure_func = ffi_closure_SYSV_alt; + else + closure_func = ffi_closure_VFP_alt; + ffi_tramp_set_parms (closure->ftramp, closure_func, closure); + goto out; + } +# endif + + /* Initialize the dynamic trampoline. */ +# ifndef _WIN32 + memcpy(closure->tramp, ffi_arm_trampoline, 8); +# else + // cast away function type so MSVC doesn't set the lower bit of the function pointer + memcpy(closure->tramp, (void*)((uintptr_t)ffi_arm_trampoline & 0xFFFFFFFE), FFI_TRAMPOLINE_CLOSURE_OFFSET); +# endif + +# if defined(__QNX__) + msync (closure->tramp, 8, MS_INVALIDATE_ICACHE); /* clear data map */ + msync (codeloc, 8, MS_INVALIDATE_ICACHE); /* clear insn map */ +# elif defined(_WIN32) + FlushInstructionCache(GetCurrentProcess(), closure->tramp, FFI_TRAMPOLINE_SIZE); +# else + __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */ + __clear_cache(codeloc, codeloc + 8); /* clear insn map */ +# endif +# ifdef _WIN32 + *(void(**)(void))(closure->tramp + FFI_TRAMPOLINE_CLOSURE_FUNCTION) = closure_func; +# else + *(void (**)(void))(closure->tramp + 8) = closure_func; +# endif +# if defined(FFI_EXEC_STATIC_TRAMP) +out: +# endif +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +#ifdef FFI_GO_CLOSURES +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ + void (*closure_func) (void) = ffi_go_closure_SYSV; + + if (cif->abi == FFI_VFP) + { + /* We only need take the vfp path if there are vfp arguments. */ + if (cif->vfp_used) + closure_func = ffi_go_closure_VFP; + } + else if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->tramp = closure_func; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} +#endif + +#endif /* FFI_CLOSURES */ + +/* Below are routines for VFP hard-float support. */ + +/* A subroutine of vfp_type_p. Given a structure type, return the type code + of the first non-structure element. Recurse for structure elements. + Return -1 if the structure is in fact empty, i.e. no nested elements. */ + +static int +is_hfa0 (const ffi_type *ty) +{ + ffi_type **elements = ty->elements; + int i, ret = -1; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + ret = elements[i]->type; + if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX) + { + ret = is_hfa0 (elements[i]); + if (ret < 0) + continue; + } + break; + } + + return ret; +} + +/* A subroutine of vfp_type_p. Given a structure type, return true if all + of the non-structure elements are the same as CANDIDATE. */ + +static int +is_hfa1 (const ffi_type *ty, int candidate) +{ + ffi_type **elements = ty->elements; + int i; + + if (elements != NULL) + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + return 1; +} + +/* Determine if TY is an homogenous floating point aggregate (HFA). + That is, a structure consisting of 1 to 4 members of all the same type, + where that type is a floating point scalar. + + Returns non-zero iff TY is an HFA. The result is an encoded value where + bits 0-7 contain the type code, and bits 8-10 contain the element count. */ + +static int +vfp_type_p (const ffi_type *ty) +{ + ffi_type **elements; + int candidate, i; + size_t size, ele_count; + + /* Quickest tests first. */ + candidate = ty->type; + switch (ty->type) + { + default: + return 0; + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + ele_count = 1; + goto done; + case FFI_TYPE_COMPLEX: + candidate = ty->elements[0]->type; + if (candidate != FFI_TYPE_FLOAT && candidate != FFI_TYPE_DOUBLE) + return 0; + ele_count = 2; + goto done; + case FFI_TYPE_STRUCT: + break; + } + + /* No HFA types are smaller than 4 bytes, or larger than 32 bytes. */ + size = ty->size; + if (size < 4 || size > 32) + return 0; + + /* Find the type of the first non-structure member. */ + elements = ty->elements; + candidate = elements[0]->type; + if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX) + { + for (i = 0; ; ++i) + { + candidate = is_hfa0 (elements[i]); + if (candidate >= 0) + break; + } + } + + /* If the first member is not a floating point type, it's not an HFA. + Also quickly re-check the size of the structure. */ + switch (candidate) + { + case FFI_TYPE_FLOAT: + ele_count = size / sizeof(float); + if (size != ele_count * sizeof(float)) + return 0; + break; + case FFI_TYPE_DOUBLE: + ele_count = size / sizeof(double); + if (size != ele_count * sizeof(double)) + return 0; + break; + default: + return 0; + } + if (ele_count > 4) + return 0; + + /* Finally, make sure that all scalar elements are the same type. */ + for (i = 0; elements[i]; ++i) + { + int t = elements[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + { + if (!is_hfa1 (elements[i], candidate)) + return 0; + } + else if (t != candidate) + return 0; + } + + /* All tests succeeded. Encode the result. */ + done: + return (ele_count << 8) | candidate; +} + +static int +place_vfp_arg (ffi_cif *cif, int h) +{ + unsigned short reg = cif->vfp_reg_free; + int align = 1, nregs = h >> 8; + + if ((h & 0xff) == FFI_TYPE_DOUBLE) + align = 2, nregs *= 2; + + /* Align register number. */ + if ((reg & 1) && align == 2) + reg++; + + while (reg + nregs <= 16) + { + int s, new_used = 0; + for (s = reg; s < reg + nregs; s++) + { + new_used |= (1 << s); + if (cif->vfp_used & (1 << s)) + { + reg += align; + goto next_reg; + } + } + /* Found regs to allocate. */ + cif->vfp_used |= new_used; + cif->vfp_args[cif->vfp_nargs++] = (signed char)reg; + + /* Update vfp_reg_free. */ + if (cif->vfp_used & (1 << cif->vfp_reg_free)) + { + reg += nregs; + while (cif->vfp_used & (1 << reg)) + reg += 1; + cif->vfp_reg_free = reg; + } + return 0; + next_reg:; + } + // done, mark all regs as used + cif->vfp_reg_free = 16; + cif->vfp_used = 0xFFFF; + return 1; +} + +static void +layout_vfp_args (ffi_cif * cif) +{ + unsigned int i; + /* Init VFP fields */ + cif->vfp_used = 0; + cif->vfp_nargs = 0; + cif->vfp_reg_free = 0; + memset (cif->vfp_args, -1, 16); /* Init to -1. */ + + for (i = 0; i < cif->nargs; i++) + { + int h = vfp_type_p (cif->arg_types[i]); + if (h && place_vfp_arg (cif, h) == 1) + break; + } +} + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *tramp_size = ARM_TRAMP_SIZE; + *map_size = ARM_TRAMP_MAP_SIZE; + return &trampoline_code_table; +} +#endif + +#endif /* __arm__ or _M_ARM */ diff --git a/deps/libffi/src/arm/ffitarget.h b/deps/libffi/src/arm/ffitarget.h new file mode 100644 index 00000000000000..12d5d206953490 --- /dev/null +++ b/deps/libffi/src/arm/ffitarget.h @@ -0,0 +1,89 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2010 CodeSourcery + Copyright (c) 1996-2003 Red Hat, Inc. + + Target configuration macros for ARM. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_VFP, + FFI_LAST_ABI, +#if defined(__ARM_PCS_VFP) || defined(_WIN32) + FFI_DEFAULT_ABI = FFI_VFP, +#else + FFI_DEFAULT_ABI = FFI_SYSV, +#endif +} ffi_abi; +#endif + +#define FFI_EXTRA_CIF_FIELDS \ + int vfp_used; \ + unsigned short vfp_reg_free, vfp_nargs; \ + signed char vfp_args[16] \ + +#define FFI_TARGET_SPECIFIC_VARIADIC +#ifndef _WIN32 +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#define FFI_TRAMPOLINE_SIZE 12 +#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8 +#else +#error "No trampoline table implementation" +#endif + +#else +#ifdef _WIN32 +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12 +#else +#define FFI_TRAMPOLINE_SIZE 12 +#endif +#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE +#endif + +#endif diff --git a/deps/libffi/src/arm/internal.h b/deps/libffi/src/arm/internal.h new file mode 100644 index 00000000000000..fa8ab0b6ebcd70 --- /dev/null +++ b/deps/libffi/src/arm/internal.h @@ -0,0 +1,17 @@ +#define ARM_TYPE_VFP_S 0 +#define ARM_TYPE_VFP_D 1 +#define ARM_TYPE_VFP_N 2 +#define ARM_TYPE_INT64 3 +#define ARM_TYPE_INT 4 +#define ARM_TYPE_VOID 5 +#define ARM_TYPE_STRUCT 6 + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * For the trampoline table mapping, a mapping size of 4K (base page size) + * is chosen. + */ +#define ARM_TRAMP_MAP_SHIFT 12 +#define ARM_TRAMP_MAP_SIZE (1 << ARM_TRAMP_MAP_SHIFT) +#define ARM_TRAMP_SIZE 20 +#endif diff --git a/deps/libffi/src/arm/sysv.S b/deps/libffi/src/arm/sysv.S new file mode 100644 index 00000000000000..e4272a103c542d --- /dev/null +++ b/deps/libffi/src/arm/sysv.S @@ -0,0 +1,456 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc. + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + + ARM Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#ifdef __arm__ +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + +/* GCC 4.8 provides __ARM_ARCH; construct it otherwise. */ +#ifndef __ARM_ARCH +# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7EM__) +# define __ARM_ARCH 7 +# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ + || defined(__ARM_ARCH_6M__) +# define __ARM_ARCH 6 +# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \ + || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \ + || defined(__ARM_ARCH_5TEJ__) +# define __ARM_ARCH 5 +# else +# define __ARM_ARCH 4 +# endif +#endif + +/* Conditionally compile unwinder directives. */ +#ifdef __ARM_EABI__ +# define UNWIND(...) __VA_ARGS__ +#else +# define UNWIND(...) +#endif + +#if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__ARM_EABI__) + .cfi_sections .debug_frame +#endif + +#define CONCAT(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +#ifdef __USER_LABEL_PREFIX__ +# define CNAME(X) CONCAT (__USER_LABEL_PREFIX__, X) +#else +# define CNAME(X) X +#endif +#ifdef __ELF__ +# define SIZE(X) .size CNAME(X), . - CNAME(X) +# define TYPE(X, Y) .type CNAME(X), Y +#else +# define SIZE(X) +# define TYPE(X, Y) +#endif + +#define ARM_FUNC_START_LOCAL(name) \ + .align 3; \ + TYPE(CNAME(name), %function); \ + CNAME(name): + +#define ARM_FUNC_START(name) \ + .globl CNAME(name); \ + FFI_HIDDEN(CNAME(name)); \ + ARM_FUNC_START_LOCAL(name) + +#define ARM_FUNC_END(name) \ + SIZE(name) + + .text + .syntax unified +#if defined(_WIN32) + /* Windows on ARM is thumb-only */ + .thumb +#else + /* Keep the assembly in ARM mode in other cases, for simplicity + * (to avoid interworking issues). */ +#undef __thumb__ + .arm +#endif + +/* Aid in defining a jump table with 8 bytes between entries. */ +#ifdef __thumb__ +/* In thumb mode, instructions can be shorter than expected in arm mode, so + * we need to align the start of each case. */ +# define E(index) .align 3 +#elif defined(__clang__) +/* ??? The clang assembler doesn't handle .if with symbolic expressions. */ +# define E(index) +#else +# define E(index) \ + .if . - 0b - 8*index; \ + .error "type table out of sync"; \ + .endif +#endif + + +#ifndef __clang__ + /* We require interworking on LDM, which implies ARMv5T, + which implies the existance of BLX. */ + .arch armv5t +#endif + + /* Note that we use STC and LDC to encode VFP instructions, + so that we do not need ".fpu vfp", nor get that added to + the object file attributes. These will not be executed + unless the FFI_VFP abi is used. */ + + @ r0: stack + @ r1: frame + @ r2: fn + @ r3: vfp_used + +ARM_FUNC_START(ffi_call_VFP) + UNWIND(.fnstart) + cfi_startproc + + cmp r3, #3 @ load only d0 if possible + ite le + ldcle p11, cr0, [r0] @ vldrle d0, [r0] + ldcgt p11, cr0, [r0], {16} @ vldmgt r0, {d0-d7} + add r0, r0, #64 @ discard the vfp register args + /* FALLTHRU */ +ARM_FUNC_END(ffi_call_VFP) + +ARM_FUNC_START(ffi_call_SYSV) + stm r1, {fp, lr} + mov fp, r1 + + @ This is a bit of a lie wrt the origin of the unwind info, but + @ now we've got the usual frame pointer and two saved registers. + UNWIND(.save {fp,lr}) + UNWIND(.setfp fp, sp) + cfi_def_cfa(fp, 8) + cfi_rel_offset(fp, 0) + cfi_rel_offset(lr, 4) + + mov sp, r0 @ install the stack pointer + mov lr, r2 @ move the fn pointer out of the way + ldr ip, [fp, #16] @ install the static chain + ldmia sp!, {r0-r3} @ move first 4 parameters in registers. + blx lr @ call fn + + @ Load r2 with the pointer to storage for the return value + @ Load r3 with the return type code + ldr r2, [fp, #8] + ldr r3, [fp, #12] + + @ Deallocate the stack with the arguments. + mov sp, fp + cfi_def_cfa_register(sp) + + @ Store values stored in registers. +#ifndef __thumb__ + .align 3 + add pc, pc, r3, lsl #3 + nop +#else + adr ip, 0f + add ip, ip, r3, lsl #3 + mov pc, ip + .align 3 +#endif +0: +E(ARM_TYPE_VFP_S) + stc p10, cr0, [r2] @ vstr s0, [r2] + pop {fp,pc} +E(ARM_TYPE_VFP_D) + stc p11, cr0, [r2] @ vstr d0, [r2] + pop {fp,pc} +E(ARM_TYPE_VFP_N) + stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3} + pop {fp,pc} +E(ARM_TYPE_INT64) + str r1, [r2, #4] + nop +E(ARM_TYPE_INT) + str r0, [r2] + pop {fp,pc} +E(ARM_TYPE_VOID) + pop {fp,pc} + nop +E(ARM_TYPE_STRUCT) + pop {fp,pc} + + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_call_SYSV) + +#if FFI_CLOSURES + +/* + int ffi_closure_inner_* (cif, fun, user_data, frame) +*/ + +ARM_FUNC_START(ffi_go_closure_SYSV) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + ldr r0, [ip, #4] @ load cif + ldr r1, [ip, #8] @ load fun + mov r2, ip @ load user_data + b 0f + cfi_endproc +ARM_FUNC_END(ffi_go_closure_SYSV) + +ARM_FUNC_START(ffi_closure_SYSV) + UNWIND(.fnstart) + cfi_startproc +#ifdef _WIN32 + ldmfd sp!, {r0, ip} @ restore fp (r0 is used for stack alignment) +#endif + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + +#if FFI_EXEC_TRAMPOLINE_TABLE + ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure* +#endif + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data +0: + add ip, sp, #16 @ compute entry sp + sub sp, sp, #64+32 @ allocate frame + cfi_adjust_cfa_offset(64+32) + stmdb sp!, {ip,lr} + + /* Remember that EABI unwind info only applies at call sites. + We need do nothing except note the save of the stack pointer + and the link registers. */ + UNWIND(.save {sp,lr}) + cfi_adjust_cfa_offset(8) + cfi_rel_offset(lr, 4) + + add r3, sp, #8 @ load frame + bl CNAME(ffi_closure_inner_SYSV) + + @ Load values returned in registers. + add r2, sp, #8+64 @ load result + adr r3, CNAME(ffi_closure_ret) +#ifndef __thumb__ + add pc, r3, r0, lsl #3 +#else + add r3, r3, r0, lsl #3 + mov pc, r3 +#endif + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_closure_SYSV) + +ARM_FUNC_START(ffi_go_closure_VFP) + cfi_startproc + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + ldr r0, [ip, #4] @ load cif + ldr r1, [ip, #8] @ load fun + mov r2, ip @ load user_data + b 0f + cfi_endproc +ARM_FUNC_END(ffi_go_closure_VFP) + +ARM_FUNC_START(ffi_closure_VFP) + UNWIND(.fnstart) + cfi_startproc +#ifdef _WIN32 + ldmfd sp!, {r0, ip} @ restore fp (r0 is used for stack alignment) +#endif + stmdb sp!, {r0-r3} @ save argument regs + cfi_adjust_cfa_offset(16) + +#if FFI_EXEC_TRAMPOLINE_TABLE + ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure* +#endif + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data +0: + add ip, sp, #16 + sub sp, sp, #64+32 @ allocate frame + cfi_adjust_cfa_offset(64+32) + stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7} + stmdb sp!, {ip,lr} + + /* See above. */ + UNWIND(.save {sp,lr}) + cfi_adjust_cfa_offset(8) + cfi_rel_offset(lr, 4) + + add r3, sp, #8 @ load frame + bl CNAME(ffi_closure_inner_VFP) + + @ Load values returned in registers. + add r2, sp, #8+64 @ load result + adr r3, CNAME(ffi_closure_ret) +#ifndef __thumb__ + add pc, r3, r0, lsl #3 +#else + add r3, r3, r0, lsl #3 + mov pc, r3 +#endif + cfi_endproc + UNWIND(.fnend) +ARM_FUNC_END(ffi_closure_VFP) + +/* Load values returned in registers for both closure entry points. + Note that we use LDM with SP in the register set. This is deprecated + by ARM, but not yet unpredictable. */ + +ARM_FUNC_START_LOCAL(ffi_closure_ret) + cfi_startproc + cfi_rel_offset(sp, 0) + cfi_rel_offset(lr, 4) +0: +E(ARM_TYPE_VFP_S) + ldc p10, cr0, [r2] @ vldr s0, [r2] + b call_epilogue +E(ARM_TYPE_VFP_D) + ldc p11, cr0, [r2] @ vldr d0, [r2] + b call_epilogue +E(ARM_TYPE_VFP_N) + ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3} + b call_epilogue +E(ARM_TYPE_INT64) + ldr r1, [r2, #4] + nop +E(ARM_TYPE_INT) + ldr r0, [r2] + b call_epilogue +E(ARM_TYPE_VOID) + b call_epilogue + nop +E(ARM_TYPE_STRUCT) + b call_epilogue +call_epilogue: +#ifndef __thumb__ + ldm sp, {sp,pc} +#else + ldm sp, {ip,lr} + mov sp, ip + bx lr +#endif + cfi_endproc +ARM_FUNC_END(ffi_closure_ret) + +#if defined(FFI_EXEC_STATIC_TRAMP) +ARM_FUNC_START(ffi_closure_SYSV_alt) + /* See the comments above trampoline_code_table. */ + ldr ip, [sp, #4] /* Load closure in ip */ + add sp, sp, 8 /* Restore the stack */ + b CNAME(ffi_closure_SYSV) +ARM_FUNC_END(ffi_closure_SYSV_alt) + +ARM_FUNC_START(ffi_closure_VFP_alt) + /* See the comments above trampoline_code_table. */ + ldr ip, [sp, #4] /* Load closure in ip */ + add sp, sp, 8 /* Restore the stack */ + b CNAME(ffi_closure_VFP) +ARM_FUNC_END(ffi_closure_VFP_alt) + +/* + * Below is the definition of the trampoline code table. Each element in + * the code table is a trampoline. + */ +/* + * The trampoline uses register ip (r12). It saves the original value of ip + * on the stack. + * + * The trampoline has two parameters - target code to jump to and data for + * the target code. The trampoline extracts the parameters from its parameter + * block (see tramp_table_map()). The trampoline saves the data address on + * the stack. Finally, it jumps to the target code. + * + * The target code can choose to: + * + * - restore the value of ip + * - load the data address in a register + * - restore the stack pointer to what it was when the trampoline was invoked. + */ + .align ARM_TRAMP_MAP_SHIFT +ARM_FUNC_START(trampoline_code_table) + .rept ARM_TRAMP_MAP_SIZE / ARM_TRAMP_SIZE + sub sp, sp, #8 /* Make space on the stack */ + str ip, [sp] /* Save ip on stack */ + ldr ip, [pc, #4080] /* Copy data into ip */ + str ip, [sp, #4] /* Save data on stack */ + ldr pc, [pc, #4076] /* Copy code into PC */ + .endr +ARM_FUNC_END(trampoline_code_table) + .align ARM_TRAMP_MAP_SHIFT +#endif /* FFI_EXEC_STATIC_TRAMP */ + +#endif /* FFI_CLOSURES */ + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ +#include + +.align PAGE_MAX_SHIFT +ARM_FUNC_START(ffi_closure_trampoline_table_page) +.rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE + adr ip, #-PAGE_MAX_SIZE @ the config page is PAGE_MAX_SIZE behind the trampoline page + sub ip, #8 @ account for pc bias + ldr pc, [ip, #4] @ jump to ffi_closure_SYSV or ffi_closure_VFP +.endr +ARM_FUNC_END(ffi_closure_trampoline_table_page) +#endif + +#elif defined(_WIN32) + +ARM_FUNC_START(ffi_arm_trampoline) +0: adr ip, 0b + stmdb sp!, {r0, ip} + ldr pc, 1f +1: .long 0 +ARM_FUNC_END(ffi_arm_trampoline) + +#else + +ARM_FUNC_START(ffi_arm_trampoline) +0: adr ip, 0b + ldr pc, 1f +1: .long 0 +ARM_FUNC_END(ffi_arm_trampoline) + +#endif /* FFI_EXEC_TRAMPOLINE_TABLE */ +#endif /* __arm__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif diff --git a/deps/libffi/src/arm/sysv_msvc_arm32.S b/deps/libffi/src/arm/sysv_msvc_arm32.S new file mode 100644 index 00000000000000..5c99d0207af317 --- /dev/null +++ b/deps/libffi/src/arm/sysv_msvc_arm32.S @@ -0,0 +1,311 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc. + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + Copyright (c) 2019 Microsoft Corporation. + + ARM Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" +#include "ksarm.h" + + + ; 8 byte aligned AREA to support 8 byte aligned jump tables + MACRO + NESTED_ENTRY_FFI $FuncName, $AreaName, $ExceptHandler + + ; compute the function's labels + __DeriveFunctionLabels $FuncName + + ; determine the area we will put the function into +__FuncArea SETS "|.text|" + IF "$AreaName" != "" +__FuncArea SETS "$AreaName" + ENDIF + + ; set up the exception handler itself +__FuncExceptionHandler SETS "" + IF "$ExceptHandler" != "" +__FuncExceptionHandler SETS "|$ExceptHandler|" + ENDIF + + ; switch to the specified area, jump tables require 8 byte alignment + AREA $__FuncArea,CODE,CODEALIGN,ALIGN=3,READONLY + + ; export the function name + __ExportProc $FuncName + + ; flush any pending literal pool stuff + ROUT + + ; reset the state of the unwind code tracking + __ResetUnwindState + + MEND + +; MACRO +; TABLE_ENTRY $Type, $Table +;$Type_$Table +; MEND + +#define E(index,table) return_##index##_##table + + ; r0: stack + ; r1: frame + ; r2: fn + ; r3: vfp_used + + ; fake entry point exists only to generate exists only to + ; generate .pdata for exception unwinding + NESTED_ENTRY_FFI ffi_call_VFP_fake + PROLOG_PUSH {r11, lr} ; save fp and lr for unwind + + ALTERNATE_ENTRY ffi_call_VFP + cmp r3, #3 ; load only d0 if possible + vldrle d0, [r0] + vldmgt r0, {d0-d7} + add r0, r0, #64 ; discard the vfp register args + b ffi_call_SYSV + NESTED_END ffi_call_VFP_fake + + ; fake entry point exists only to generate exists only to + ; generate .pdata for exception unwinding + NESTED_ENTRY_FFI ffi_call_SYSV_fake + PROLOG_PUSH {r11, lr} ; save fp and lr for unwind + + ALTERNATE_ENTRY ffi_call_SYSV + stm r1, {fp, lr} + mov fp, r1 + + mov sp, r0 ; install the stack pointer + mov lr, r2 ; move the fn pointer out of the way + ldr ip, [fp, #16] ; install the static chain + ldmia sp!, {r0-r3} ; move first 4 parameters in registers. + blx lr ; call fn + + ; Load r2 with the pointer to storage for the return value + ; Load r3 with the return type code + ldr r2, [fp, #8] + ldr r3, [fp, #12] + + ; Deallocate the stack with the arguments. + mov sp, fp + + ; Store values stored in registers. + ALIGN 8 + lsl r3, #3 + add r3, r3, pc + add r3, #8 + mov pc, r3 + + +E(ARM_TYPE_VFP_S, ffi_call) + ALIGN 8 + vstr s0, [r2] + pop {fp,pc} +E(ARM_TYPE_VFP_D, ffi_call) + ALIGN 8 + vstr d0, [r2] + pop {fp,pc} +E(ARM_TYPE_VFP_N, ffi_call) + ALIGN 8 + vstm r2, {d0-d3} + pop {fp,pc} +E(ARM_TYPE_INT64, ffi_call) + ALIGN 8 + str r1, [r2, #4] + nop +E(ARM_TYPE_INT, ffi_call) + ALIGN 8 + str r0, [r2] + pop {fp,pc} +E(ARM_TYPE_VOID, ffi_call) + ALIGN 8 + pop {fp,pc} + nop +E(ARM_TYPE_STRUCT, ffi_call) + ALIGN 8 + cmp r3, #ARM_TYPE_STRUCT + pop {fp,pc} + NESTED_END ffi_call_SYSV_fake + + IMPORT |ffi_closure_inner_SYSV| + /* + int ffi_closure_inner_SYSV + ( + cif, ; r0 + fun, ; r1 + user_data, ; r2 + frame ; r3 + ) + */ + + NESTED_ENTRY_FFI ffi_go_closure_SYSV + stmdb sp!, {r0-r3} ; save argument regs + ldr r0, [ip, #4] ; load cif + ldr r1, [ip, #8] ; load fun + mov r2, ip ; load user_data + b ffi_go_closure_SYSV_0 + NESTED_END ffi_go_closure_SYSV + + ; r3: ffi_closure + + ; fake entry point exists only to generate exists only to + ; generate .pdata for exception unwinding + NESTED_ENTRY_FFI ffi_closure_SYSV_fake + PROLOG_PUSH {r11, lr} ; save fp and lr for unwind + ALTERNATE_ENTRY ffi_closure_SYSV + ldmfd sp!, {ip,r0} ; restore fp (r0 is used for stack alignment) + stmdb sp!, {r0-r3} ; save argument regs + + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] ; ffi_closure->cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] ; ffi_closure->fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] ; ffi_closure->user_data + + ALTERNATE_ENTRY ffi_go_closure_SYSV_0 + add ip, sp, #16 ; compute entry sp + + sub sp, sp, #64+32 ; allocate frame parameter (sizeof(vfp_space) = 64, sizeof(result) = 32) + mov r3, sp ; set frame parameter + stmdb sp!, {ip,lr} + + bl ffi_closure_inner_SYSV ; call the Python closure + + ; Load values returned in registers. + add r2, sp, #64+8 ; address of closure_frame->result + bl ffi_closure_ret ; move result to correct register or memory for type + + ldmfd sp!, {ip,lr} + mov sp, ip ; restore stack pointer + mov pc, lr + NESTED_END ffi_closure_SYSV_fake + + IMPORT |ffi_closure_inner_VFP| + /* + int ffi_closure_inner_VFP + ( + cif, ; r0 + fun, ; r1 + user_data, ; r2 + frame ; r3 + ) + */ + + NESTED_ENTRY_FFI ffi_go_closure_VFP + stmdb sp!, {r0-r3} ; save argument regs + ldr r0, [ip, #4] ; load cif + ldr r1, [ip, #8] ; load fun + mov r2, ip ; load user_data + b ffi_go_closure_VFP_0 + NESTED_END ffi_go_closure_VFP + + ; fake entry point exists only to generate exists only to + ; generate .pdata for exception unwinding + ; r3: closure + NESTED_ENTRY_FFI ffi_closure_VFP_fake + PROLOG_PUSH {r11, lr} ; save fp and lr for unwind + + ALTERNATE_ENTRY ffi_closure_VFP + ldmfd sp!, {ip,r0} ; restore fp (r0 is used for stack alignment) + stmdb sp!, {r0-r3} ; save argument regs + + ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] ; load cif + ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] ; load fun + ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] ; load user_data + + ALTERNATE_ENTRY ffi_go_closure_VFP_0 + add ip, sp, #16 ; compute entry sp + sub sp, sp, #32 ; save space for closure_frame->result + vstmdb sp!, {d0-d7} ; push closure_frame->vfp_space + + mov r3, sp ; save closure_frame + stmdb sp!, {ip,lr} + + bl ffi_closure_inner_VFP + + ; Load values returned in registers. + add r2, sp, #64+8 ; load result + bl ffi_closure_ret + ldmfd sp!, {ip,lr} + mov sp, ip ; restore stack pointer + mov pc, lr + NESTED_END ffi_closure_VFP_fake + +/* Load values returned in registers for both closure entry points. + Note that we use LDM with SP in the register set. This is deprecated + by ARM, but not yet unpredictable. */ + + NESTED_ENTRY_FFI ffi_closure_ret + stmdb sp!, {fp,lr} + + ALIGN 8 + lsl r0, #3 + add r0, r0, pc + add r0, #8 + mov pc, r0 + +E(ARM_TYPE_VFP_S, ffi_closure) + ALIGN 8 + vldr s0, [r2] + b call_epilogue +E(ARM_TYPE_VFP_D, ffi_closure) + ALIGN 8 + vldr d0, [r2] + b call_epilogue +E(ARM_TYPE_VFP_N, ffi_closure) + ALIGN 8 + vldm r2, {d0-d3} + b call_epilogue +E(ARM_TYPE_INT64, ffi_closure) + ALIGN 8 + ldr r1, [r2, #4] + nop +E(ARM_TYPE_INT, ffi_closure) + ALIGN 8 + ldr r0, [r2] + b call_epilogue +E(ARM_TYPE_VOID, ffi_closure) + ALIGN 8 + b call_epilogue + nop +E(ARM_TYPE_STRUCT, ffi_closure) + ALIGN 8 + b call_epilogue +call_epilogue + ldmfd sp!, {fp,pc} + NESTED_END ffi_closure_ret + + AREA |.trampoline|, DATA, THUMB, READONLY + EXPORT |ffi_arm_trampoline| +|ffi_arm_trampoline| DATA +thisproc adr ip, thisproc + stmdb sp!, {ip, r0} + ldr pc, [pc, #0] + DCD 0 + ;ENDP + + END \ No newline at end of file diff --git a/deps/libffi/src/avr32/ffi.c b/deps/libffi/src/avr32/ffi.c new file mode 100644 index 00000000000000..3d43397b03ad1f --- /dev/null +++ b/deps/libffi/src/avr32/ffi.c @@ -0,0 +1,423 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Anthony Green + Copyright (c) 2009 Bradley Smith + + AVR32 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include +#include + +/* #define DEBUG */ + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned int, unsigned int, unsigned int*, unsigned int, + void (*fn)(void)); +extern void ffi_closure_SYSV (ffi_closure *); + +unsigned int pass_struct_on_stack(ffi_type *type) +{ + if(type->type != FFI_TYPE_STRUCT) + return 0; + + if(type->alignment < type->size && + !(type->size == 4 || type->size == 8) && + !(type->size == 8 && type->alignment >= 4)) + return 1; + + if(type->size == 3 || type->size == 5 || type->size == 6 || + type->size == 7) + return 1; + + return 0; +} + +/* ffi_prep_args is called by the assembly routine once stack space + * has been allocated for the function's arguments + * + * This is annoyingly complex since we need to keep track of used + * registers. + */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + ffi_type **p_arg; + char *reg_base = stack; + char *stack_base = stack + 20; + unsigned int stack_offset = 0; + unsigned int reg_mask = 0; + + p_argv = ecif->avalue; + + /* If cif->flags is struct then we know it's not passed in registers */ + if(ecif->cif->flags == FFI_TYPE_STRUCT) + { + *(void**)reg_base = ecif->rvalue; + reg_mask |= 1; + } + + for(i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; + i++, p_arg++) + { + size_t z = (*p_arg)->size; + int alignment = (*p_arg)->alignment; + int type = (*p_arg)->type; + char *addr = 0; + + if(z % 4 != 0) + z += (4 - z % 4); + + if(reg_mask != 0x1f) + { + if(pass_struct_on_stack(*p_arg)) + { + addr = stack_base + stack_offset; + stack_offset += z; + } + else if(z == sizeof(int)) + { + char index = 0; + + while((reg_mask >> index) & 1) + index++; + + addr = reg_base + (index * 4); + reg_mask |= (1 << index); + } + else if(z == 2 * sizeof(int)) + { + if(!((reg_mask >> 1) & 1)) + { + addr = reg_base + 4; + reg_mask |= (3 << 1); + } + else if(!((reg_mask >> 3) & 1)) + { + addr = reg_base + 12; + reg_mask |= (3 << 3); + } + } + } + + if(!addr) + { + addr = stack_base + stack_offset; + stack_offset += z; + } + + if(type == FFI_TYPE_STRUCT && (*p_arg)->elements[1] == NULL) + type = (*p_arg)->elements[0]->type; + + switch(type) + { + case FFI_TYPE_UINT8: + *(unsigned int *)addr = (unsigned int)*(UINT8 *)(*p_argv); + break; + case FFI_TYPE_SINT8: + *(signed int *)addr = (signed int)*(SINT8 *)(*p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *)addr = (unsigned int)*(UINT16 *)(*p_argv); + break; + case FFI_TYPE_SINT16: + *(signed int *)addr = (signed int)*(SINT16 *)(*p_argv); + break; + default: + memcpy(addr, *p_argv, z); + } + + p_argv++; + } + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < 5; i++) + { + if((reg_mask & (1 << i)) == 0) + printf("r%d: (unused)\n", 12 - i); + else + printf("r%d: 0x%08x\n", 12 - i, ((unsigned int*)reg_base)[i]); + } + + for(i = 0; i < stack_offset / 4; i++) + { + printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack_base)[i]); + } +#endif +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Round the stack up to a multiple of 8 bytes. This isn't needed + * everywhere, but it is on some platforms, and it doesn't harm + * anything when it isn't needed. */ + cif->bytes = (cif->bytes + 7) & ~7; + + /* Flag to indicate that he return value is in fact a struct */ + cif->rstruct_flag = 0; + + /* Set the return type flag */ + switch(cif->rtype->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + cif->flags = (unsigned)FFI_TYPE_UINT8; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + cif->flags = (unsigned)FFI_TYPE_UINT16; + break; + case FFI_TYPE_FLOAT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + cif->flags = (unsigned)FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned)FFI_TYPE_UINT64; + break; + case FFI_TYPE_STRUCT: + cif->rstruct_flag = 1; + if(!pass_struct_on_stack(cif->rtype)) + { + if(cif->rtype->size <= 1) + cif->flags = (unsigned)FFI_TYPE_UINT8; + else if(cif->rtype->size <= 2) + cif->flags = (unsigned)FFI_TYPE_UINT16; + else if(cif->rtype->size <= 4) + cif->flags = (unsigned)FFI_TYPE_UINT32; + else if(cif->rtype->size <= 8) + cif->flags = (unsigned)FFI_TYPE_UINT64; + else + cif->flags = (unsigned)cif->rtype->type; + } + else + cif->flags = (unsigned)cif->rtype->type; + break; + default: + cif->flags = (unsigned)cif->rtype->type; + break; + } + + return FFI_OK; +} + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + unsigned int size = 0, i = 0; + ffi_type **p_arg; + + ecif.cif = cif; + ecif.avalue = avalue; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + size += (*p_arg)->size + (4 - (*p_arg)->size % 4); + + /* If the return value is a struct and we don't have a return value + * address then we need to make one */ + + /* If cif->flags is struct then it's not suitable for registers */ + if((rvalue == NULL) && (cif->flags == FFI_TYPE_STRUCT)) + ecif.rvalue = alloca(cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch(cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, size, cif->flags, + ecif.rvalue, cif->rstruct_flag, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif) +{ + register unsigned int i, reg_mask = 0; + register void **p_argv; + register ffi_type **p_arg; + register char *reg_base = stack; + register char *stack_base = stack + 20; + register unsigned int stack_offset = 0; + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < cif->nargs + 7; i++) + { + printf("sp+%d: 0x%08x\n", i*4, ((unsigned int*)stack)[i]); + } +#endif + + /* If cif->flags is struct then we know it's not passed in registers */ + if(cif->flags == FFI_TYPE_STRUCT) + { + *rvalue = *(void **)reg_base; + reg_mask |= 1; + } + + p_argv = avalue; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + { + size_t z = (*p_arg)->size; + int alignment = (*p_arg)->alignment; + + *p_argv = 0; + + if(z % 4 != 0) + z += (4 - z % 4); + + if(reg_mask != 0x1f) + { + if(pass_struct_on_stack(*p_arg)) + { + *p_argv = (void*)stack_base + stack_offset; + stack_offset += z; + } + else if(z <= sizeof(int)) + { + char index = 0; + + while((reg_mask >> index) & 1) + index++; + + *p_argv = (void*)reg_base + (index * 4); + reg_mask |= (1 << index); + } + else if(z == 2 * sizeof(int)) + { + if(!((reg_mask >> 1) & 1)) + { + *p_argv = (void*)reg_base + 4; + reg_mask |= (3 << 1); + } + else if(!((reg_mask >> 3) & 1)) + { + *p_argv = (void*)reg_base + 12; + reg_mask |= (3 << 3); + } + } + } + + if(!*p_argv) + { + *p_argv = (void*)stack_base + stack_offset; + stack_offset += z; + } + + if((*p_arg)->type != FFI_TYPE_STRUCT || + (*p_arg)->elements[1] == NULL) + { + if(alignment == 1) + **(unsigned int**)p_argv <<= 24; + else if(alignment == 2) + **(unsigned int**)p_argv <<= 16; + } + + p_argv++; + } + +#ifdef DEBUG + /* Debugging */ + for(i = 0; i < cif->nargs; i++) + { + printf("sp+%d: 0x%08x\n", i*4, *(((unsigned int**)avalue)[i])); + } +#endif +} + +/* This function is jumped to by the trampoline */ + +unsigned int ffi_closure_SYSV_inner(ffi_closure *closure, void **respp, + void *args) +{ + ffi_cif *cif; + void **arg_area; + unsigned int i, size = 0; + ffi_type **p_arg; + + cif = closure->cif; + + for(i = 0, p_arg = cif->arg_types; i < cif->nargs; i++, p_arg++) + size += (*p_arg)->size + (4 - (*p_arg)->size % 4); + + arg_area = (void **)alloca(size); + + /* this call will initialize ARG_AREA, such that each element in that + * array points to the corresponding value on the stack; and if the + * function returns a structure, it will re-set RESP to point to the + * structure return address. */ + + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); + + (closure->fun)(cif, *respp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]); + unsigned int __fun = (unsigned int)(&ffi_closure_SYSV); + unsigned int __ctx = (unsigned int)(codeloc); + unsigned int __rstruct_flag = (unsigned int)(cif->rstruct_flag); + unsigned int __inner = (unsigned int)(&ffi_closure_SYSV_inner); + *(unsigned int*) &__tramp[0] = 0xebcd1f00; /* pushm r8-r12 */ + *(unsigned int*) &__tramp[4] = 0xfefc0010; /* ld.w r12, pc[16] */ + *(unsigned int*) &__tramp[8] = 0xfefb0010; /* ld.w r11, pc[16] */ + *(unsigned int*) &__tramp[12] = 0xfefa0010; /* ld.w r10, pc[16] */ + *(unsigned int*) &__tramp[16] = 0xfeff0010; /* ld.w pc, pc[16] */ + *(unsigned int*) &__tramp[20] = __ctx; + *(unsigned int*) &__tramp[24] = __rstruct_flag; + *(unsigned int*) &__tramp[28] = __inner; + *(unsigned int*) &__tramp[32] = __fun; + syscall(__NR_cacheflush, 0, (&__tramp[0]), 36); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + diff --git a/deps/libffi/src/avr32/ffitarget.h b/deps/libffi/src/avr32/ffitarget.h new file mode 100644 index 00000000000000..d0c7586f9a8b03 --- /dev/null +++ b/deps/libffi/src/avr32/ffitarget.h @@ -0,0 +1,55 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2009 Bradley Smith + Target configuration macros for AVR32. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_EXTRA_CIF_FIELDS unsigned int rstruct_flag + +/* Definitions for closures */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 36 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/avr32/sysv.S b/deps/libffi/src/avr32/sysv.S new file mode 100644 index 00000000000000..a984b3c88a3095 --- /dev/null +++ b/deps/libffi/src/avr32/sysv.S @@ -0,0 +1,208 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2009 Bradley Smith + + AVR32 Foreign Function Interface + + 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. + --------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + /* r12: ffi_prep_args + * r11: &ecif + * r10: size + * r9: cif->flags + * r8: ecif.rvalue + * sp+0: cif->rstruct_flag + * sp+4: fn */ + + .text + .align 1 + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +ffi_call_SYSV: + stm --sp, r0,r1,lr + stm --sp, r8-r12 + mov r0, sp + + /* Make room for all of the new args. */ + sub sp, r10 + /* Pad to make way for potential skipped registers */ + sub sp, 20 + + /* Call ffi_prep_args(stack, &ecif). */ + /* r11 already set */ + mov r1, r12 + mov r12, sp + icall r1 + + /* Save new argument size */ + mov r1, r12 + + /* Move first 5 parameters in registers. */ + ldm sp++, r8-r12 + + /* call (fn) (...). */ + ld.w r1, r0[36] + icall r1 + + /* Remove the space we pushed for the args. */ + mov sp, r0 + + /* Load r1 with the rstruct flag. */ + ld.w r1, sp[32] + + /* Load r9 with the return type code. */ + ld.w r9, sp[12] + + /* Load r8 with the return value pointer. */ + ld.w r8, sp[16] + + /* If the return value pointer is NULL, assume no return value. */ + cp.w r8, 0 + breq .Lend + + /* Check if return type is actually a struct */ + cp.w r1, 0 + breq 1f + + /* Return 8bit */ + cp.w r9, FFI_TYPE_UINT8 + breq .Lstore8 + + /* Return 16bit */ + cp.w r9, FFI_TYPE_UINT16 + breq .Lstore16 + +1: + /* Return 32bit */ + cp.w r9, FFI_TYPE_UINT32 + breq .Lstore32 + cp.w r9, FFI_TYPE_UINT16 + breq .Lstore32 + cp.w r9, FFI_TYPE_UINT8 + breq .Lstore32 + + /* Return 64bit */ + cp.w r9, FFI_TYPE_UINT64 + breq .Lstore64 + + /* Didn't match anything */ + bral .Lend + +.Lstore64: + st.w r8[0], r11 + st.w r8[4], r10 + bral .Lend + +.Lstore32: + st.w r8[0], r12 + bral .Lend + +.Lstore16: + st.h r8[0], r12 + bral .Lend + +.Lstore8: + st.b r8[0], r12 + bral .Lend + +.Lend: + sub sp, -20 + ldm sp++, r0,r1,pc + + .size ffi_call_SYSV, . - ffi_call_SYSV + + + /* r12: __ctx + * r11: __rstruct_flag + * r10: __inner */ + + .align 1 + .globl ffi_closure_SYSV + .type ffi_closure_SYSV, @function +ffi_closure_SYSV: + stm --sp, r0,lr + mov r0, r11 + mov r8, r10 + sub r10, sp, -8 + sub sp, 12 + st.w sp[8], sp + sub r11, sp, -8 + icall r8 + + /* Check if return type is actually a struct */ + cp.w r0, 0 + breq 1f + + /* Return 8bit */ + cp.w r12, FFI_TYPE_UINT8 + breq .Lget8 + + /* Return 16bit */ + cp.w r12, FFI_TYPE_UINT16 + breq .Lget16 + +1: + /* Return 32bit */ + cp.w r12, FFI_TYPE_UINT32 + breq .Lget32 + cp.w r12, FFI_TYPE_UINT16 + breq .Lget32 + cp.w r12, FFI_TYPE_UINT8 + breq .Lget32 + + /* Return 64bit */ + cp.w r12, FFI_TYPE_UINT64 + breq .Lget64 + + /* Didn't match anything */ + bral .Lclend + +.Lget64: + ld.w r11, sp[0] + ld.w r10, sp[4] + bral .Lclend + +.Lget32: + ld.w r12, sp[0] + bral .Lclend + +.Lget16: + ld.uh r12, sp[0] + bral .Lclend + +.Lget8: + ld.ub r12, sp[0] + bral .Lclend + +.Lclend: + sub sp, -12 + ldm sp++, r0,lr + sub sp, -20 + mov pc, lr + + .size ffi_closure_SYSV, . - ffi_closure_SYSV + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/bfin/ffi.c b/deps/libffi/src/bfin/ffi.c new file mode 100644 index 00000000000000..22a2acdac192c1 --- /dev/null +++ b/deps/libffi/src/bfin/ffi.c @@ -0,0 +1,196 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Alexandre K. I. de Mendonca , + Paulo Pizarro + + Blackfin Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ +#include +#include + +#include +#include + +/* Maximum number of GPRs available for argument passing. */ +#define MAX_GPRARGS 3 + +/* + * Return types + */ +#define FFIBFIN_RET_VOID 0 +#define FFIBFIN_RET_BYTE 1 +#define FFIBFIN_RET_HALFWORD 2 +#define FFIBFIN_RET_INT64 3 +#define FFIBFIN_RET_INT32 4 + +/*====================================================================*/ +/* PROTOTYPE * + /*====================================================================*/ +void ffi_prep_args(unsigned char *, extended_cif *); + +/*====================================================================*/ +/* Externals */ +/* (Assembly) */ +/*====================================================================*/ + +extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void)); + +/*====================================================================*/ +/* Implementation */ +/* */ +/*====================================================================*/ + + +/* + * This function calculates the return type (size) based on type. + */ + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* --------------------------------------* + * Return handling * + * --------------------------------------*/ + switch (cif->rtype->type) { + case FFI_TYPE_VOID: + cif->flags = FFIBFIN_RET_VOID; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + cif->flags = FFIBFIN_RET_HALFWORD; + break; + case FFI_TYPE_UINT8: + cif->flags = FFIBFIN_RET_BYTE; + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + case FFI_TYPE_SINT8: + cif->flags = FFIBFIN_RET_INT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFIBFIN_RET_INT64; + break; + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4){ + cif->flags = FFIBFIN_RET_INT32; + }else if (cif->rtype->size == 8){ + cif->flags = FFIBFIN_RET_INT64; + }else{ + //it will return via a hidden pointer in P0 + cif->flags = FFIBFIN_RET_VOID; + } + break; + default: + FFI_ASSERT(0); + break; + } + return FFI_OK; +} + +/* + * This will prepare the arguments and will call the assembly routine + * cif = the call interface + * fn = the function to be called + * rvalue = the return value + * avalue = the arguments + */ +void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue) +{ + int ret_type = cif->flags; + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + ecif.rvalue = rvalue; + + switch (cif->abi) { + case FFI_SYSV: + ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + + +/* +* This function prepares the parameters (copies them from the ecif to the stack) +* to call the function (ffi_prep_args is called by the assembly routine in file +* sysv.S, which also calls the actual function) +*/ +void ffi_prep_args(unsigned char *stack, extended_cif *ecif) +{ + register unsigned int i = 0; + void **p_argv; + unsigned char *argp; + ffi_type **p_arg; + argp = stack; + p_argv = ecif->avalue; + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) { + size_t z; + z = (*p_arg)->size; + if (z < sizeof(int)) { + z = sizeof(int); + switch ((*p_arg)->type) { + case FFI_TYPE_SINT8: { + signed char v = *(SINT8 *)(* p_argv); + signed int t = v; + *(signed int *) argp = t; + } + break; + case FFI_TYPE_UINT8: { + unsigned char v = *(UINT8 *)(* p_argv); + unsigned int t = v; + *(unsigned int *) argp = t; + } + break; + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv); + break; + case FFI_TYPE_STRUCT: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + default: + FFI_ASSERT(0); + break; + } + } else if (z == sizeof(int)) { + *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv); + } else { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + } +} + + + diff --git a/deps/libffi/src/bfin/ffitarget.h b/deps/libffi/src/bfin/ffitarget.h new file mode 100644 index 00000000000000..2175c010162f6e --- /dev/null +++ b/deps/libffi/src/bfin/ffitarget.h @@ -0,0 +1,43 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012 Alexandre K. I. de Mendonca + + Blackfin Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#endif + diff --git a/deps/libffi/src/bfin/sysv.S b/deps/libffi/src/bfin/sysv.S new file mode 100644 index 00000000000000..f4278be2426d25 --- /dev/null +++ b/deps/libffi/src/bfin/sysv.S @@ -0,0 +1,179 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2012 Alexandre K. I. de Mendonca , + Paulo Pizarro + + Blackfin Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +.text +.align 4 + + /* + There is a "feature" in the bfin toolchain that it puts a _ before function names + that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV + */ + .global _ffi_call_SYSV; + .type _ffi_call_SYSV, STT_FUNC; + .func ffi_call_SYSV + + /* + cif->bytes = R0 (fp+8) + &ecif = R1 (fp+12) + ffi_prep_args = R2 (fp+16) + ret_type = stack (fp+20) + ecif.rvalue = stack (fp+24) + fn = stack (fp+28) + got (fp+32) + + There is room for improvement here (we can use temporary registers + instead of saving the values in the memory) + REGS: + P5 => Stack pointer (function arguments) + R5 => cif->bytes + R4 => ret->type + + FP-20 = P3 + FP-16 = SP (parameters area) + FP-12 = SP (temp) + FP-08 = function return part 1 [R0] + FP-04 = function return part 2 [R1] + */ + +_ffi_call_SYSV: +.prologue: + LINK 20; + [FP-20] = P3; + [FP+8] = R0; + [FP+12] = R1; + [FP+16] = R2; + +.allocate_stack: + //alocate cif->bytes into the stack + R1 = [FP+8]; + R0 = SP; + R0 = R0 - R1; + R1 = 4; + R0 = R0 - R1; + [FP-12] = SP; + SP = R0; + [FP-16] = SP; + +.call_prep_args: + //get the addr of prep_args + P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4]; + P1 = [P0]; + P3 = [P0+4]; + R0 = [FP-16];//SP (parameter area) + R1 = [FP+12];//ecif + call (P1); + +.call_user_function: + //ajust SP so as to allow the user function access the parameters on the stack + SP = [FP-16]; //point to function parameters + R0 = [SP]; + R1 = [SP+4]; + R2 = [SP+8]; + //load user function address + P0 = FP; + P0 +=28; + P1 = [P0]; + P1 = [P1]; + P3 = [P0+4]; + /* + For functions returning aggregate values (struct) occupying more than 8 bytes, + the caller allocates the return value object on the stack and the address + of this object is passed to the callee as a hidden argument in register P0. + */ + P0 = [FP+24]; + + call (P1); + SP = [FP-12]; +.compute_return: + P2 = [FP-20]; + [FP-8] = R0; + [FP-4] = R1; + + R0 = [FP+20]; + R1 = R0 << 2; + + R0 = [P2+.rettable@GOT17M4]; + R0 = R1 + R0; + P2 = R0; + R1 = [P2]; + + P2 = [FP+-20]; + R0 = [P2+.rettable@GOT17M4]; + R0 = R1 + R0; + P2 = R0; + R0 = [FP-8]; + R1 = [FP-4]; + jump (P2); + +/* +#define FFIBFIN_RET_VOID 0 +#define FFIBFIN_RET_BYTE 1 +#define FFIBFIN_RET_HALFWORD 2 +#define FFIBFIN_RET_INT64 3 +#define FFIBFIN_RET_INT32 4 +*/ +.align 4 +.align 4 +.rettable: + .dd .epilogue - .rettable + .dd .rbyte - .rettable; + .dd .rhalfword - .rettable; + .dd .rint64 - .rettable; + .dd .rint32 - .rettable; + +.rbyte: + P0 = [FP+24]; + R0 = R0.B (Z); + [P0] = R0; + JUMP .epilogue +.rhalfword: + P0 = [FP+24]; + R0 = R0.L; + [P0] = R0; + JUMP .epilogue +.rint64: + P0 = [FP+24];// &rvalue + [P0] = R0; + [P0+4] = R1; + JUMP .epilogue +.rint32: + P0 = [FP+24]; + [P0] = R0; +.epilogue: + R0 = [FP+8]; + R1 = [FP+12]; + R2 = [FP+16]; + P3 = [FP-20]; + UNLINK; + RTS; + +.size _ffi_call_SYSV,.-_ffi_call_SYSV; +.endfunc diff --git a/deps/libffi/src/closures.c b/deps/libffi/src/closures.c new file mode 100644 index 00000000000000..02cf78fa26c0aa --- /dev/null +++ b/deps/libffi/src/closures.c @@ -0,0 +1,1107 @@ +/* ----------------------------------------------------------------------- + closures.c - Copyright (c) 2019, 2022 Anthony Green + Copyright (c) 2007, 2009, 2010 Red Hat, Inc. + Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc + Copyright (c) 2011 Plausible Labs Cooperative, Inc. + + Code to allocate and deallocate memory for closures. + + 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. + ----------------------------------------------------------------------- */ + +#if (defined __linux__ || defined __CYGWIN__) && !defined _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif + +#ifndef __EMSCRIPTEN__ + +#include +#include +#include +#include + +#ifdef __NetBSD__ +#include +#endif + +#if __NetBSD_Version__ - 0 >= 799007200 +/* NetBSD with PROT_MPROTECT */ +#include + +#include +#include +#ifdef HAVE_SYS_MEMFD_H +#include +#endif + +static const size_t overhead = + (sizeof(max_align_t) > sizeof(void *) + sizeof(size_t)) ? + sizeof(max_align_t) + : sizeof(void *) + sizeof(size_t); + +#define ADD_TO_POINTER(p, d) ((void *)((uintptr_t)(p) + (d))) + +void * +ffi_closure_alloc (size_t size, void **code) +{ + static size_t page_size; + size_t rounded_size; + void *codeseg, *dataseg; + int prot; + + /* Expect that PAX mprotect is active and a separate code mapping is necessary. */ + if (!code) + return NULL; + + /* Obtain system page size. */ + if (!page_size) + page_size = sysconf(_SC_PAGESIZE); + + /* Round allocation size up to the next page, keeping in mind the size field and pointer to code map. */ + rounded_size = (size + overhead + page_size - 1) & ~(page_size - 1); + + /* Primary mapping is RW, but request permission to switch to PROT_EXEC later. */ + prot = PROT_READ | PROT_WRITE | PROT_MPROTECT(PROT_EXEC); + dataseg = mmap(NULL, rounded_size, prot, MAP_ANON | MAP_PRIVATE, -1, 0); + if (dataseg == MAP_FAILED) + return NULL; + + /* Create secondary mapping and switch it to RX. */ + codeseg = mremap(dataseg, rounded_size, NULL, rounded_size, MAP_REMAPDUP); + if (codeseg == MAP_FAILED) { + munmap(dataseg, rounded_size); + return NULL; + } + if (mprotect(codeseg, rounded_size, PROT_READ | PROT_EXEC) == -1) { + munmap(codeseg, rounded_size); + munmap(dataseg, rounded_size); + return NULL; + } + + /* Remember allocation size and location of the secondary mapping for ffi_closure_free. */ + memcpy(dataseg, &rounded_size, sizeof(rounded_size)); + memcpy(ADD_TO_POINTER(dataseg, sizeof(size_t)), &codeseg, sizeof(void *)); + *code = ADD_TO_POINTER(codeseg, overhead); + return ADD_TO_POINTER(dataseg, overhead); +} + +void +ffi_closure_free (void *ptr) +{ + void *codeseg, *dataseg; + size_t rounded_size; + + dataseg = ADD_TO_POINTER(ptr, -overhead); + memcpy(&rounded_size, dataseg, sizeof(rounded_size)); + memcpy(&codeseg, ADD_TO_POINTER(dataseg, sizeof(size_t)), sizeof(void *)); + munmap(dataseg, rounded_size); + munmap(codeseg, rounded_size); +} + +int +ffi_tramp_is_present (__attribute__((unused)) void *ptr) +{ + return 0; +} +#else /* !NetBSD with PROT_MPROTECT */ + +#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE +# if __linux__ && !defined(__ANDROID__) +/* This macro indicates it may be forbidden to map anonymous memory + with both write and execute permission. Code compiled when this + option is defined will attempt to map such pages once, but if it + fails, it falls back to creating a temporary file in a writable and + executable filesystem and mapping pages from it into separate + locations in the virtual memory space, one location writable and + another executable. */ +# define FFI_MMAP_EXEC_WRIT 1 +# define HAVE_MNTENT 1 +# endif +# if defined(__CYGWIN__) || defined(_WIN32) || defined(__OS2__) +/* Windows systems may have Data Execution Protection (DEP) enabled, + which requires the use of VirtualMalloc/VirtualFree to alloc/free + executable memory. */ +# define FFI_MMAP_EXEC_WRIT 1 +# endif +#endif + +#if FFI_MMAP_EXEC_WRIT && defined(__linux__) && !defined(__ANDROID__) +# if !defined FFI_MMAP_EXEC_SELINUX +/* When defined to 1 check for SELinux and if SELinux is active, + don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that + might cause audit messages. */ +# define FFI_MMAP_EXEC_SELINUX 1 +# endif /* !defined FFI_MMAP_EXEC_SELINUX */ +# if !defined FFI_MMAP_PAX +/* Also check for PaX MPROTECT */ +# define FFI_MMAP_PAX 1 +# endif /* !defined FFI_MMAP_PAX */ +#endif /* FFI_MMAP_EXEC_WRIT && defined(__linux__) && !defined(__ANDROID__) */ + +#if FFI_CLOSURES + +#if FFI_EXEC_TRAMPOLINE_TABLE + +#ifdef __MACH__ + +#include +#include +#ifdef HAVE_ARM64E_PTRAUTH +#include +#endif +#include +#include + +extern void *ffi_closure_trampoline_table_page; + +typedef struct ffi_trampoline_table ffi_trampoline_table; +typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry; + +struct ffi_trampoline_table +{ + /* contiguous writable and executable pages */ + vm_address_t config_page; + + /* free list tracking */ + uint16_t free_count; + ffi_trampoline_table_entry *free_list; + ffi_trampoline_table_entry *free_list_pool; + + ffi_trampoline_table *prev; + ffi_trampoline_table *next; +}; + +struct ffi_trampoline_table_entry +{ + void *(*trampoline) (void); + ffi_trampoline_table_entry *next; +}; + +/* Total number of trampolines that fit in one trampoline table */ +#define FFI_TRAMPOLINE_COUNT (PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE) + +static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER; +static ffi_trampoline_table *ffi_trampoline_tables = NULL; + +static ffi_trampoline_table * +ffi_trampoline_table_alloc (void) +{ + ffi_trampoline_table *table; + vm_address_t config_page; + vm_address_t trampoline_page; + vm_address_t trampoline_page_template; + vm_prot_t cur_prot; + vm_prot_t max_prot; + kern_return_t kt; + uint16_t i; + + /* Allocate two pages -- a config page and a placeholder page */ + config_page = 0x0; + kt = vm_allocate (mach_task_self (), &config_page, PAGE_MAX_SIZE * 2, + VM_FLAGS_ANYWHERE); + if (kt != KERN_SUCCESS) + return NULL; + + /* Remap the trampoline table on top of the placeholder page */ + trampoline_page = config_page + PAGE_MAX_SIZE; + +#ifdef HAVE_ARM64E_PTRAUTH + trampoline_page_template = (vm_address_t)(uintptr_t)ptrauth_auth_data((void *)&ffi_closure_trampoline_table_page, ptrauth_key_function_pointer, 0); +#else + trampoline_page_template = (vm_address_t)&ffi_closure_trampoline_table_page; +#endif + +#ifdef __arm__ + /* ffi_closure_trampoline_table_page can be thumb-biased on some ARM archs */ + trampoline_page_template &= ~1UL; +#endif + kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_MAX_SIZE, 0x0, + VM_FLAGS_OVERWRITE, mach_task_self (), trampoline_page_template, + FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE); + if (kt != KERN_SUCCESS) + { + vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2); + return NULL; + } + + if (!(cur_prot & VM_PROT_EXECUTE)) + { + /* If VM_PROT_EXECUTE isn't set on the remapped trampoline page, set it */ + kt = vm_protect (mach_task_self (), trampoline_page, PAGE_MAX_SIZE, + FALSE, cur_prot | VM_PROT_EXECUTE); + if (kt != KERN_SUCCESS) + { + vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2); + return NULL; + } + } + + /* We have valid trampoline and config pages */ + table = calloc (1, sizeof (ffi_trampoline_table)); + table->free_count = FFI_TRAMPOLINE_COUNT; + table->config_page = config_page; + + /* Create and initialize the free list */ + table->free_list_pool = + calloc (FFI_TRAMPOLINE_COUNT, sizeof (ffi_trampoline_table_entry)); + + for (i = 0; i < table->free_count; i++) + { + ffi_trampoline_table_entry *entry = &table->free_list_pool[i]; + entry->trampoline = + (void *) (trampoline_page + (i * FFI_TRAMPOLINE_SIZE)); +#ifdef HAVE_ARM64E_PTRAUTH + entry->trampoline = ptrauth_sign_unauthenticated(entry->trampoline, ptrauth_key_function_pointer, 0); +#endif + + if (i < table->free_count - 1) + entry->next = &table->free_list_pool[i + 1]; + } + + table->free_list = table->free_list_pool; + + return table; +} + +static void +ffi_trampoline_table_free (ffi_trampoline_table *table) +{ + /* Remove from the list */ + if (table->prev != NULL) + table->prev->next = table->next; + + if (table->next != NULL) + table->next->prev = table->prev; + + /* Deallocate pages */ + vm_deallocate (mach_task_self (), table->config_page, PAGE_MAX_SIZE * 2); + + /* Deallocate free list */ + free (table->free_list_pool); + free (table); +} + +void * +ffi_closure_alloc (size_t size, void **code) +{ + /* Create the closure */ + ffi_closure *closure = malloc (size); + if (closure == NULL) + return NULL; + + pthread_mutex_lock (&ffi_trampoline_lock); + + /* Check for an active trampoline table with available entries. */ + ffi_trampoline_table *table = ffi_trampoline_tables; + if (table == NULL || table->free_list == NULL) + { + table = ffi_trampoline_table_alloc (); + if (table == NULL) + { + pthread_mutex_unlock (&ffi_trampoline_lock); + free (closure); + return NULL; + } + + /* Insert the new table at the top of the list */ + table->next = ffi_trampoline_tables; + if (table->next != NULL) + table->next->prev = table; + + ffi_trampoline_tables = table; + } + + /* Claim the free entry */ + ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list; + ffi_trampoline_tables->free_list = entry->next; + ffi_trampoline_tables->free_count--; + entry->next = NULL; + + pthread_mutex_unlock (&ffi_trampoline_lock); + + /* Initialize the return values */ + *code = entry->trampoline; + closure->trampoline_table = table; + closure->trampoline_table_entry = entry; + + return closure; +} + +void +ffi_closure_free (void *ptr) +{ + ffi_closure *closure = ptr; + + pthread_mutex_lock (&ffi_trampoline_lock); + + /* Fetch the table and entry references */ + ffi_trampoline_table *table = closure->trampoline_table; + ffi_trampoline_table_entry *entry = closure->trampoline_table_entry; + + /* Return the entry to the free list */ + entry->next = table->free_list; + table->free_list = entry; + table->free_count++; + + /* If all trampolines within this table are free, and at least one other table exists, deallocate + * the table */ + if (table->free_count == FFI_TRAMPOLINE_COUNT + && ffi_trampoline_tables != table) + { + ffi_trampoline_table_free (table); + } + else if (ffi_trampoline_tables != table) + { + /* Otherwise, bump this table to the top of the list */ + table->prev = NULL; + table->next = ffi_trampoline_tables; + if (ffi_trampoline_tables != NULL) + ffi_trampoline_tables->prev = table; + + ffi_trampoline_tables = table; + } + + pthread_mutex_unlock (&ffi_trampoline_lock); + + /* Free the closure */ + free (closure); +} + +#endif + +// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations. + +#elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */ + +#define USE_LOCKS 1 +#define USE_DL_PREFIX 1 +#ifdef __GNUC__ +#ifndef USE_BUILTIN_FFS +#define USE_BUILTIN_FFS 1 +#endif +#endif + +/* We need to use mmap, not sbrk. */ +#define HAVE_MORECORE 0 + +/* We could, in theory, support mremap, but it wouldn't buy us anything. */ +#define HAVE_MREMAP 0 + +/* We have no use for this, so save some code and data. */ +#define NO_MALLINFO 1 + +/* We need all allocations to be in regular segments, otherwise we + lose track of the corresponding code address. */ +#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T + +/* Don't allocate more than a page unless needed. */ +#define DEFAULT_GRANULARITY ((size_t)malloc_getpagesize) + +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include +#if !defined(_WIN32) +#ifdef HAVE_MNTENT +#include +#endif /* HAVE_MNTENT */ +#include +#include + +/* We don't want sys/mman.h to be included after we redefine mmap and + dlmunmap. */ +#include +#define LACKS_SYS_MMAN_H 1 + +#if FFI_MMAP_EXEC_SELINUX +#include +#include + +static int selinux_enabled = -1; + +static int +selinux_enabled_check (void) +{ + struct statfs sfs; + FILE *f; + char *buf = NULL; + size_t len = 0; + + if (statfs ("/selinux", &sfs) >= 0 + && (unsigned int) sfs.f_type == 0xf97cff8cU) + return 1; + f = fopen ("/proc/mounts", "r"); + if (f == NULL) + return 0; + while (getline (&buf, &len, f) >= 0) + { + char *p = strchr (buf, ' '); + if (p == NULL) + break; + p = strchr (p + 1, ' '); + if (p == NULL) + break; + if (strncmp (p + 1, "selinuxfs ", 10) == 0) + { + free (buf); + fclose (f); + return 1; + } + } + free (buf); + fclose (f); + return 0; +} + +#define is_selinux_enabled() (selinux_enabled >= 0 ? selinux_enabled \ + : (selinux_enabled = selinux_enabled_check ())) + +#else + +#define is_selinux_enabled() 0 + +#endif /* !FFI_MMAP_EXEC_SELINUX */ + +/* On PaX enable kernels that have MPROTECT enabled we can't use PROT_EXEC. */ +#if defined FFI_MMAP_PAX +#include + +enum { + PAX_MPROTECT = (1 << 0), + PAX_EMUTRAMP = (1 << 1), +}; +static int cached_pax_flags = -1; + +static int +pax_flags_check (void) +{ + char *buf = NULL; + size_t len = 0; + FILE *f; + int ret; + f = fopen ("/proc/self/status", "r"); + if (f == NULL) + return 0; + ret = 0; + + while (getline (&buf, &len, f) != -1) + if (!strncmp (buf, "PaX:", 4)) + { + if (NULL != strchr (buf + 4, 'M')) + ret |= PAX_MPROTECT; + if (NULL != strchr (buf + 4, 'E')) + ret |= PAX_EMUTRAMP; + break; + } + free (buf); + fclose (f); + return ret; +} + +#define get_pax_flags() (cached_pax_flags >= 0 ? cached_pax_flags \ + : (cached_pax_flags = pax_flags_check ())) +#define has_pax_flags(flags) ((flags) == ((flags) & get_pax_flags ())) +#define is_mprotect_enabled() (has_pax_flags (PAX_MPROTECT)) +#define is_emutramp_enabled() (has_pax_flags (PAX_EMUTRAMP)) + +#endif /* defined FFI_MMAP_PAX */ + +#elif defined (__CYGWIN__) || defined(__INTERIX) + +#include + +/* Cygwin is Linux-like, but not quite that Linux-like. */ +#define is_selinux_enabled() 0 + +#endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ + +#if !defined FFI_MMAP_PAX +# define is_mprotect_enabled() 0 +# define is_emutramp_enabled() 0 +#endif /* !defined FFI_MMAP_PAX */ + +/* Declare all functions defined in dlmalloc.c as static. */ +static void *dlmalloc(size_t); +static void dlfree(void*); +static void *dlcalloc(size_t, size_t) MAYBE_UNUSED; +static void *dlrealloc(void *, size_t) MAYBE_UNUSED; +static void *dlmemalign(size_t, size_t) MAYBE_UNUSED; +static void *dlvalloc(size_t) MAYBE_UNUSED; +static int dlmallopt(int, int) MAYBE_UNUSED; +static size_t dlmalloc_footprint(void) MAYBE_UNUSED; +static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED; +static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED; +static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED; +static void *dlpvalloc(size_t) MAYBE_UNUSED; +static int dlmalloc_trim(size_t) MAYBE_UNUSED; +static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED; +static void dlmalloc_stats(void) MAYBE_UNUSED; + +#if !(defined(_WIN32) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) +/* Use these for mmap and munmap within dlmalloc.c. */ +static void *dlmmap(void *, size_t, int, int, int, off_t); +static int dlmunmap(void *, size_t); +#endif /* !(defined(_WIN32) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ + +#define mmap dlmmap +#define munmap dlmunmap + +#include "dlmalloc.c" + +#undef mmap +#undef munmap + +#if !(defined(_WIN32) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) + +/* A mutex used to synchronize access to *exec* variables in this file. */ +static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER; + +/* A file descriptor of a temporary file from which we'll map + executable pages. */ +static int execfd = -1; + +/* The amount of space already allocated from the temporary file. */ +static size_t execsize = 0; + +#ifdef HAVE_MEMFD_CREATE +/* Open a temporary file name, and immediately unlink it. */ +static int +open_temp_exec_file_memfd (const char *name) +{ + int fd; + fd = memfd_create (name, MFD_CLOEXEC); + return fd; +} +#endif + +/* Open a temporary file name, and immediately unlink it. */ +static int +open_temp_exec_file_name (char *name, int flags MAYBE_UNUSED) +{ + int fd; + +#ifdef HAVE_MKOSTEMP + fd = mkostemp (name, flags); +#else + fd = mkstemp (name); +#endif + + if (fd != -1) + unlink (name); + + return fd; +} + +/* Open a temporary file in the named directory. */ +static int +open_temp_exec_file_dir (const char *dir) +{ + static const char suffix[] = "/ffiXXXXXX"; + int lendir, flags; + char *tempname; +#ifdef O_TMPFILE + int fd; +#endif + +#ifdef O_CLOEXEC + flags = O_CLOEXEC; +#else + flags = 0; +#endif + +#ifdef O_TMPFILE + fd = open (dir, flags | O_RDWR | O_EXCL | O_TMPFILE, 0700); + /* If the running system does not support the O_TMPFILE flag then retry without it. */ + if (fd != -1 || (errno != EINVAL && errno != EISDIR && errno != EOPNOTSUPP)) { + return fd; + } else { + errno = 0; + } +#endif + + lendir = (int) strlen (dir); + tempname = __builtin_alloca (lendir + sizeof (suffix)); + + if (!tempname) + return -1; + + memcpy (tempname, dir, lendir); + memcpy (tempname + lendir, suffix, sizeof (suffix)); + + return open_temp_exec_file_name (tempname, flags); +} + +/* Open a temporary file in the directory in the named environment + variable. */ +static int +open_temp_exec_file_env (const char *envvar) +{ + const char *value = getenv (envvar); + + if (!value) + return -1; + + return open_temp_exec_file_dir (value); +} + +#ifdef HAVE_MNTENT +/* Open a temporary file in an executable and writable mount point + listed in the mounts file. Subsequent calls with the same mounts + keep searching for mount points in the same file. Providing NULL + as the mounts file closes the file. */ +static int +open_temp_exec_file_mnt (const char *mounts) +{ + static const char *last_mounts; + static FILE *last_mntent; + + if (mounts != last_mounts) + { + if (last_mntent) + endmntent (last_mntent); + + last_mounts = mounts; + + if (mounts) + last_mntent = setmntent (mounts, "r"); + else + last_mntent = NULL; + } + + if (!last_mntent) + return -1; + + for (;;) + { + int fd; + struct mntent mnt; + char buf[MAXPATHLEN * 3]; + + if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL) + return -1; + + if (hasmntopt (&mnt, "ro") + || hasmntopt (&mnt, "noexec") + || access (mnt.mnt_dir, W_OK)) + continue; + + fd = open_temp_exec_file_dir (mnt.mnt_dir); + + if (fd != -1) + return fd; + } +} +#endif /* HAVE_MNTENT */ + +/* Instructions to look for a location to hold a temporary file that + can be mapped in for execution. */ +static struct +{ + int (*func)(const char *); + const char *arg; + int repeat; +} open_temp_exec_file_opts[] = { +#ifdef HAVE_MEMFD_CREATE + { open_temp_exec_file_memfd, "libffi", 0 }, +#endif + { open_temp_exec_file_env, "LIBFFI_TMPDIR", 0 }, + { open_temp_exec_file_env, "TMPDIR", 0 }, + { open_temp_exec_file_dir, "/tmp", 0 }, + { open_temp_exec_file_dir, "/var/tmp", 0 }, + { open_temp_exec_file_dir, "/dev/shm", 0 }, + { open_temp_exec_file_env, "HOME", 0 }, +#ifdef HAVE_MNTENT + { open_temp_exec_file_mnt, "/etc/mtab", 1 }, + { open_temp_exec_file_mnt, "/proc/mounts", 1 }, +#endif /* HAVE_MNTENT */ +}; + +/* Current index into open_temp_exec_file_opts. */ +static int open_temp_exec_file_opts_idx = 0; + +/* Reset a current multi-call func, then advances to the next entry. + If we're at the last, go back to the first and return nonzero, + otherwise return zero. */ +static int +open_temp_exec_file_opts_next (void) +{ + if (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) + open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (NULL); + + open_temp_exec_file_opts_idx++; + if (open_temp_exec_file_opts_idx + == (sizeof (open_temp_exec_file_opts) + / sizeof (*open_temp_exec_file_opts))) + { + open_temp_exec_file_opts_idx = 0; + return 1; + } + + return 0; +} + +/* Return a file descriptor of a temporary zero-sized file in a + writable and executable filesystem. */ +int +open_temp_exec_file (void) +{ + int fd; + + do + { + fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func + (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].arg); + + if (!open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat + || fd == -1) + { + if (open_temp_exec_file_opts_next ()) + break; + } + } + while (fd == -1); + + return fd; +} + +/* We need to allocate space in a file that will be backing a writable + mapping. Several problems exist with the usual approaches: + - fallocate() is Linux-only + - posix_fallocate() is not available on all platforms + - ftruncate() does not allocate space on filesystems with sparse files + Failure to allocate the space will cause SIGBUS to be thrown when + the mapping is subsequently written to. */ +static int +allocate_space (int fd, off_t len) +{ + static long page_size; + + /* Obtain system page size. */ + if (!page_size) + page_size = sysconf(_SC_PAGESIZE); + + unsigned char buf[page_size]; + memset (buf, 0, page_size); + + while (len > 0) + { + off_t to_write = (len < page_size) ? len : page_size; + if (write (fd, buf, to_write) < to_write) + return -1; + len -= to_write; + } + + return 0; +} + +/* Map in a chunk of memory from the temporary exec file into separate + locations in the virtual memory address space, one writable and one + executable. Returns the address of the writable portion, after + storing an offset to the corresponding executable portion at the + last word of the requested chunk. */ +static void * +dlmmap_locked (void *start, size_t length, int prot, int flags, off_t offset) +{ + void *ptr; + + if (execfd == -1) + { + open_temp_exec_file_opts_idx = 0; + retry_open: + execfd = open_temp_exec_file (); + if (execfd == -1) + return MFAIL; + } + + offset = execsize; + + if (allocate_space (execfd, length)) + return MFAIL; + + flags &= ~(MAP_PRIVATE | MAP_ANONYMOUS); + flags |= MAP_SHARED; + + ptr = mmap (NULL, length, (prot & ~PROT_WRITE) | PROT_EXEC, + flags, execfd, offset); + if (ptr == MFAIL) + { + if (!offset) + { + close (execfd); + goto retry_open; + } + if (ftruncate (execfd, offset) != 0) + { + /* Fixme : Error logs can be added here. Returning an error for + * ftruncte() will not add any advantage as it is being + * validating in the error case. */ + } + + return MFAIL; + } + else if (!offset + && open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat) + open_temp_exec_file_opts_next (); + + start = mmap (start, length, prot, flags, execfd, offset); + + if (start == MFAIL) + { + munmap (ptr, length); + if (ftruncate (execfd, offset) != 0) + { + /* Fixme : Error logs can be added here. Returning an error for + * ftruncte() will not add any advantage as it is being + * validating in the error case. */ + } + return start; + } + + mmap_exec_offset ((char *)start, length) = (char*)ptr - (char*)start; + + execsize += length; + + return start; +} + +/* Map in a writable and executable chunk of memory if possible. + Failing that, fall back to dlmmap_locked. */ +static void * +dlmmap (void *start, size_t length, int prot, + int flags, int fd, off_t offset) +{ + void *ptr; + + assert (start == NULL && length % malloc_getpagesize == 0 + && prot == (PROT_READ | PROT_WRITE) + && flags == (MAP_PRIVATE | MAP_ANONYMOUS) + && fd == -1 && offset == 0); + + if (execfd == -1 && ffi_tramp_is_supported ()) + { + ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); + return ptr; + } + + /* -1 != execfd hints that we already decided to use dlmmap_locked + last time. */ + if (execfd == -1 && is_mprotect_enabled ()) + { +#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX + if (is_emutramp_enabled ()) + { + /* emutramp requires the kernel recognizing the trampoline pattern + generated by ffi_prep_closure_loc; there is no way to test + in advance whether this will work, so this is experimental. */ + ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); + return ptr; + } +#endif + /* fallback to dlmmap_locked. */ + } + else if (execfd == -1 && !is_selinux_enabled ()) + { + ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); + + if (ptr != MFAIL || (errno != EPERM && errno != EACCES)) + /* Cool, no need to mess with separate segments. */ + return ptr; + + /* If MREMAP_DUP is ever introduced and implemented, try mmap + with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with + MREMAP_DUP and prot at this point. */ + } + + pthread_mutex_lock (&open_temp_exec_file_mutex); + ptr = dlmmap_locked (start, length, prot, flags, offset); + pthread_mutex_unlock (&open_temp_exec_file_mutex); + + return ptr; +} + +/* Release memory at the given address, as well as the corresponding + executable page if it's separate. */ +static int +dlmunmap (void *start, size_t length) +{ + /* We don't bother decreasing execsize or truncating the file, since + we can't quite tell whether we're unmapping the end of the file. + We don't expect frequent deallocation anyway. If we did, we + could locate pages in the file by writing to the pages being + deallocated and checking that the file contents change. + Yuck. */ + msegmentptr seg = segment_holding (gm, start); + void *code; + + if (seg && (code = add_segment_exec_offset (start, seg)) != start) + { + int ret = munmap (code, length); + if (ret) + return ret; + } + + return munmap (start, length); +} + +#if FFI_CLOSURE_FREE_CODE +/* Return segment holding given code address. */ +static msegmentptr +segment_holding_code (mstate m, char* addr) +{ + msegmentptr sp = &m->seg; + for (;;) { + if (addr >= add_segment_exec_offset (sp->base, sp) + && addr < add_segment_exec_offset (sp->base, sp) + sp->size) + return sp; + if ((sp = sp->next) == 0) + return 0; + } +} +#endif + +#endif /* !(defined(_WIN32) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */ + +/* Allocate a chunk of memory with the given size. Returns a pointer + to the writable address, and sets *CODE to the executable + corresponding virtual address. */ +void * +ffi_closure_alloc (size_t size, void **code) +{ + void *ptr, *ftramp; + + if (!code) + return NULL; + + ptr = dlmalloc (size); + + if (ptr) + { + msegmentptr seg = segment_holding (gm, ptr); + + *code = FFI_FN (add_segment_exec_offset (ptr, seg)); + if (!ffi_tramp_is_supported ()) + return ptr; + + ftramp = ffi_tramp_alloc (0); + if (ftramp == NULL) + { + dlfree (ptr); + return NULL; + } + *code = FFI_FN (ffi_tramp_get_addr (ftramp)); + ((ffi_closure *) ptr)->ftramp = ftramp; + } + + return ptr; +} + +void * +ffi_data_to_code_pointer (void *data) +{ + msegmentptr seg = segment_holding (gm, data); + /* We expect closures to be allocated with ffi_closure_alloc(), in + which case seg will be non-NULL. However, some users take on the + burden of managing this memory themselves, in which case this + we'll just return data. */ + if (seg) + { + if (!ffi_tramp_is_supported ()) + return add_segment_exec_offset (data, seg); + return ffi_tramp_get_addr (((ffi_closure *) data)->ftramp); + } + else + return data; +} + +/* Release a chunk of memory allocated with ffi_closure_alloc. If + FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the + writable or the executable address given. Otherwise, only the + writable address can be provided here. */ +void +ffi_closure_free (void *ptr) +{ +#if FFI_CLOSURE_FREE_CODE + msegmentptr seg = segment_holding_code (gm, ptr); + + if (seg) + ptr = sub_segment_exec_offset (ptr, seg); +#endif + if (ffi_tramp_is_supported ()) + ffi_tramp_free (((ffi_closure *) ptr)->ftramp); + + dlfree (ptr); +} + +int +ffi_tramp_is_present (void *ptr) +{ + msegmentptr seg = segment_holding (gm, ptr); + return seg != NULL && ffi_tramp_is_supported(); +} + +# else /* ! FFI_MMAP_EXEC_WRIT */ + +/* On many systems, memory returned by malloc is writable and + executable, so just use it. */ + +#include + +void * +ffi_closure_alloc (size_t size, void **code) +{ + void *c; + + if (!code) + return NULL; + + c = malloc (size); + *code = FFI_FN (c); + return c; +} + +void +ffi_closure_free (void *ptr) +{ + free (ptr); +} + +void * +ffi_data_to_code_pointer (void *data) +{ + return data; +} + +int +ffi_tramp_is_present (__attribute__((unused)) void *ptr) +{ + return 0; +} + +# endif /* ! FFI_MMAP_EXEC_WRIT */ +#endif /* FFI_CLOSURES */ + +#endif /* NetBSD with PROT_MPROTECT */ +#endif /* __EMSCRIPTEN__ */ diff --git a/deps/libffi/src/cris/ffi.c b/deps/libffi/src/cris/ffi.c new file mode 100644 index 00000000000000..9011fdec03a877 --- /dev/null +++ b/deps/libffi/src/cris/ffi.c @@ -0,0 +1,386 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 1998 Cygnus Solutions + Copyright (c) 2004 Simon Posnjak + Copyright (c) 2005 Axis Communications AB + Copyright (C) 2007 Free Software Foundation, Inc. + + CRIS Foreign Function Interface + + 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 SIMON POSNJAK 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG) + +static ffi_status +initialize_aggregate_packed_struct (ffi_type * arg) +{ + ffi_type **ptr; + + FFI_ASSERT (arg != NULL); + + FFI_ASSERT (arg->elements != NULL); + FFI_ASSERT (arg->size == 0); + FFI_ASSERT (arg->alignment == 0); + + ptr = &(arg->elements[0]); + + while ((*ptr) != NULL) + { + if (((*ptr)->size == 0) + && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT (ffi_type_test ((*ptr))); + + arg->size += (*ptr)->size; + + arg->alignment = (arg->alignment > (*ptr)->alignment) ? + arg->alignment : (*ptr)->alignment; + + ptr++; + } + + if (arg->size == 0) + return FFI_BAD_TYPEDEF; + else + return FFI_OK; +} + +int +ffi_prep_args (char *stack, extended_cif * ecif) +{ + unsigned int i; + unsigned int struct_count = 0; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); i--, p_arg++) + { + size_t z; + + switch ((*p_arg)->type) + { + case FFI_TYPE_STRUCT: + { + z = (*p_arg)->size; + if (z <= 4) + { + memcpy (argp, *p_argv, z); + z = 4; + } + else if (z <= 8) + { + memcpy (argp, *p_argv, z); + z = 8; + } + else + { + unsigned int uiLocOnStack; + z = sizeof (void *); + uiLocOnStack = 4 * ecif->cif->nargs + struct_count; + struct_count = struct_count + (*p_arg)->size; + *(unsigned int *) argp = + (unsigned int) (UINT32 *) (stack + uiLocOnStack); + memcpy ((stack + uiLocOnStack), *p_argv, (*p_arg)->size); + } + break; + } + default: + z = (*p_arg)->size; + if (z < sizeof (int)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = + (unsigned int) *(UINT8 *) (*p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = + (unsigned int) *(UINT16 *) (*p_argv); + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else if (z == sizeof (int)) + *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv); + else + memcpy (argp, *p_argv, z); + break; + } + p_argv++; + argp += z; + } + + return (struct_count); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_core (ffi_cif * cif, + ffi_abi abi, unsigned int isvariadic, + unsigned int nfixedargs, unsigned int ntotalargs, + ffi_type * rtype, ffi_type ** atypes) +{ + unsigned bytes = 0; + unsigned int i; + ffi_type **ptr; + + FFI_ASSERT (cif != NULL); + FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); + FFI_ASSERT(nfixedargs <= ntotalargs); + FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI); + + cif->abi = abi; + cif->arg_types = atypes; + cif->nargs = ntotalargs; + cif->rtype = rtype; + + cif->flags = 0; + + if ((cif->rtype->size == 0) + && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT_VALID_TYPE (cif->rtype); + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + if (((*ptr)->size == 0) + && (initialize_aggregate_packed_struct ((*ptr)) != FFI_OK)) + return FFI_BAD_TYPEDEF; + + FFI_ASSERT_VALID_TYPE (*ptr); + + if (((*ptr)->alignment - 1) & bytes) + bytes = FFI_ALIGN (bytes, (*ptr)->alignment); + if ((*ptr)->type == FFI_TYPE_STRUCT) + { + if ((*ptr)->size > 8) + { + bytes += (*ptr)->size; + bytes += sizeof (void *); + } + else + { + if ((*ptr)->size > 4) + bytes += 8; + else + bytes += 4; + } + } + else + bytes += STACK_ARG_SIZE ((*ptr)->size); + } + + cif->bytes = bytes; + + return ffi_prep_cif_machdep (cif); +} + +ffi_status +ffi_prep_cif_machdep (ffi_cif * cif) +{ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned) cif->rtype->type; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV (int (*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, unsigned *, void (*fn) ()) + __attribute__ ((__visibility__ ("hidden"))); + +void +ffi_call (ffi_cif * cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV (ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT (0); + break; + } +} + +/* Because the following variables are not exported outside libffi, we + mark them hidden. */ + +/* Assembly code for the jump stub. */ +extern const char ffi_cris_trampoline_template[] + __attribute__ ((__visibility__ ("hidden"))); + +/* Offset into ffi_cris_trampoline_template of where to put the + ffi_prep_closure_inner function. */ +extern const int ffi_cris_trampoline_fn_offset + __attribute__ ((__visibility__ ("hidden"))); + +/* Offset into ffi_cris_trampoline_template of where to put the + closure data. */ +extern const int ffi_cris_trampoline_closure_offset + __attribute__ ((__visibility__ ("hidden"))); + +/* This function is sibling-called (jumped to) by the closure + trampoline. We get R10..R13 at PARAMS[0..3] and a copy of [SP] at + PARAMS[4] to simplify handling of a straddling parameter. A copy + of R9 is at PARAMS[5] and SP at PARAMS[6]. These parameters are + put at the appropriate place in CLOSURE which is then executed and + the return value is passed back to the caller. */ + +static unsigned long long +ffi_prep_closure_inner (void **params, ffi_closure* closure) +{ + char *register_args = (char *) params; + void *struct_ret = params[5]; + char *stack_args = params[6]; + char *ptr = register_args; + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + + /* Max room needed is number of arguments as 64-bit values. */ + void **avalue = alloca (closure->cif->nargs * sizeof(void *)); + int i; + int doing_regs; + long long llret = 0; + + /* Find the address of each argument. */ + for (i = 0, doing_regs = 1; i < cif->nargs; i++) + { + /* Types up to and including 8 bytes go by-value. */ + if (arg_types[i]->size <= 4) + { + avalue[i] = ptr; + ptr += 4; + } + else if (arg_types[i]->size <= 8) + { + avalue[i] = ptr; + ptr += 8; + } + else + { + FFI_ASSERT (arg_types[i]->type == FFI_TYPE_STRUCT); + + /* Passed by-reference, so copy the pointer. */ + avalue[i] = *(void **) ptr; + ptr += 4; + } + + /* If we've handled more arguments than fit in registers, start + looking at the those passed on the stack. Step over the + first one if we had a straddling parameter. */ + if (doing_regs && ptr >= register_args + 4*4) + { + ptr = stack_args + ((ptr > register_args + 4*4) ? 4 : 0); + doing_regs = 0; + } + } + + /* Invoke the closure. */ + (closure->fun) (cif, + + cif->rtype->type == FFI_TYPE_STRUCT + /* The caller allocated space for the return + structure, and passed a pointer to this space in + R9. */ + ? struct_ret + + /* We take advantage of being able to ignore that + the high part isn't set if the return value is + not in R10:R11, but in R10 only. */ + : (void *) &llret, + + avalue, closure->user_data); + + return llret; +} + +/* API function: Prepare the trampoline. */ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif *, void *, void **, void*), + void *user_data, + void *codeloc) +{ + void *innerfn = ffi_prep_closure_inner; + FFI_ASSERT (cif->abi == FFI_SYSV); + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + memcpy (closure->tramp, ffi_cris_trampoline_template, + FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE); + memcpy (closure->tramp + ffi_cris_trampoline_fn_offset, + &innerfn, sizeof (void *)); + memcpy (closure->tramp + ffi_cris_trampoline_closure_offset, + &codeloc, sizeof (void *)); + + return FFI_OK; +} diff --git a/deps/libffi/src/cris/ffitarget.h b/deps/libffi/src/cris/ffitarget.h new file mode 100644 index 00000000000000..b837e976e4e8b6 --- /dev/null +++ b/deps/libffi/src/cris/ffitarget.h @@ -0,0 +1,56 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for CRIS. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE 36 +#define FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE (7*4) +#define FFI_TRAMPOLINE_SIZE \ + (FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE + FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE) +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/cris/sysv.S b/deps/libffi/src/cris/sysv.S new file mode 100644 index 00000000000000..79abaee4d959ce --- /dev/null +++ b/deps/libffi/src/cris/sysv.S @@ -0,0 +1,215 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2004 Simon Posnjak + Copyright (c) 2005 Axis Communications AB + + CRIS Foreign Function Interface + + 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 SIMON POSNJAK 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#define CONCAT(x,y) x ## y +#define XCONCAT(x,y) CONCAT (x, y) +#define L(x) XCONCAT (__USER_LABEL_PREFIX__, x) + + .text + + ;; OK, when we get called we should have this (according to + ;; AXIS ETRAX 100LX Programmer's Manual chapter 6.3). + ;; + ;; R10: ffi_prep_args (func. pointer) + ;; R11: &ecif + ;; R12: cif->bytes + ;; R13: fig->flags + ;; sp+0: ecif.rvalue + ;; sp+4: fn (function pointer to the function that we need to call) + + .globl L(ffi_call_SYSV) + .type L(ffi_call_SYSV),@function + .hidden L(ffi_call_SYSV) + +L(ffi_call_SYSV): + ;; Save the regs to the stack. + push $srp + ;; Used for stack pointer saving. + push $r6 + ;; Used for function address pointer. + push $r7 + ;; Used for stack pointer saving. + push $r8 + ;; We save fig->flags to stack we will need them after we + ;; call The Function. + push $r13 + + ;; Saving current stack pointer. + move.d $sp,$r8 + move.d $sp,$r6 + + ;; Move address of ffi_prep_args to r13. + move.d $r10,$r13 + + ;; Make room on the stack for the args of fn. + sub.d $r12,$sp + + ;; Function void ffi_prep_args(char *stack, extended_cif *ecif) parameters are: + ;; r10 <-- stack pointer + ;; r11 <-- &ecif (already there) + move.d $sp,$r10 + + ;; Call the function. + jsr $r13 + + ;; Save the size of the structures which are passed on stack. + move.d $r10,$r7 + + ;; Move first four args in to r10..r13. + move.d [$sp+0],$r10 + move.d [$sp+4],$r11 + move.d [$sp+8],$r12 + move.d [$sp+12],$r13 + + ;; Adjust the stack and check if any parameters are given on stack. + addq 16,$sp + sub.d $r7,$r6 + cmp.d $sp,$r6 + + bpl go_on + nop + +go_on_no_params_on_stack: + move.d $r6,$sp + +go_on: + ;; Discover if we need to put rval address in to r9. + move.d [$r8+0],$r7 + cmpq FFI_TYPE_STRUCT,$r7 + bne call_now + nop + + ;; Move rval address to $r9. + move.d [$r8+20],$r9 + +call_now: + ;; Move address of The Function in to r7. + move.d [$r8+24],$r7 + + ;; Call The Function. + jsr $r7 + + ;; Reset stack. + move.d $r8,$sp + + ;; Load rval type (fig->flags) in to r13. + pop $r13 + + ;; Detect rval type. + cmpq FFI_TYPE_VOID,$r13 + beq epilogue + + cmpq FFI_TYPE_STRUCT,$r13 + beq epilogue + + cmpq FFI_TYPE_DOUBLE,$r13 + beq return_double_or_longlong + + cmpq FFI_TYPE_UINT64,$r13 + beq return_double_or_longlong + + cmpq FFI_TYPE_SINT64,$r13 + beq return_double_or_longlong + nop + + ;; Just return the 32 bit value. + ba return + nop + +return_double_or_longlong: + ;; Load half of the rval to r10 and the other half to r11. + move.d [$sp+16],$r13 + move.d $r10,[$r13] + addq 4,$r13 + move.d $r11,[$r13] + ba epilogue + nop + +return: + ;; Load the rval to r10. + move.d [$sp+16],$r13 + move.d $r10,[$r13] + +epilogue: + pop $r8 + pop $r7 + pop $r6 + Jump [$sp+] + + .size ffi_call_SYSV,.-ffi_call_SYSV + +/* Save R10..R13 into an array, somewhat like varargs. Copy the next + argument too, to simplify handling of any straddling parameter. + Save R9 and SP after those. Jump to function handling the rest. + Since this is a template, copied and the main function filled in by + the user. */ + + .globl L(ffi_cris_trampoline_template) + .type L(ffi_cris_trampoline_template),@function + .hidden L(ffi_cris_trampoline_template) + +L(ffi_cris_trampoline_template): +0: + /* The value we get for "PC" is right after the prefix instruction, + two bytes from the beginning, i.e. 0b+2. */ + move.d $r10,[$pc+2f-(0b+2)] + move.d $pc,$r10 +1: + addq 2f-1b+4,$r10 + move.d $r11,[$r10+] + move.d $r12,[$r10+] + move.d $r13,[$r10+] + move.d [$sp],$r11 + move.d $r11,[$r10+] + move.d $r9,[$r10+] + move.d $sp,[$r10+] + subq FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE,$r10 + move.d 0,$r11 +3: + jump 0 +2: + .size ffi_cris_trampoline_template,.-0b + +/* This macro create a constant usable as "extern const int \name" in + C from within libffi, when \name has no prefix decoration. */ + + .macro const name,value + .globl \name + .type \name,@object + .hidden \name +\name: + .dword \value + .size \name,4 + .endm + +/* Constants for offsets within the trampoline. We could do this with + just symbols, avoiding memory contents and memory accesses, but the + C usage code would look a bit stranger. */ + + const L(ffi_cris_trampoline_fn_offset),2b-4-0b + const L(ffi_cris_trampoline_closure_offset),3b-4-0b diff --git a/deps/libffi/src/csky/ffi.c b/deps/libffi/src/csky/ffi.c new file mode 100644 index 00000000000000..af50b7c648dfe1 --- /dev/null +++ b/deps/libffi/src/csky/ffi.c @@ -0,0 +1,395 @@ +/* ----------------------------------------------------------------------- + ffi.c + + CSKY Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments +*/ +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) + { + size_t z; + size_t alignment; + + /* Align if necessary */ + alignment = (*p_arg)->alignment; +#ifdef __CSKYABIV1__ + /* + * Adapt ABIV1 bug. + * If struct's size is larger than 8 bytes, then it always alignment as 4 bytes. + */ + if (((*p_arg)->type == FFI_TYPE_STRUCT) && ((*p_arg)->size > 8) && (alignment == 8)) { + alignment = 4; + } +#endif + + if ((alignment - 1) & (unsigned) argp) { + argp = (char *) FFI_ALIGN(argp, alignment); + } + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + argp = (char *) FFI_ALIGN(argp, 4); + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: +#ifdef __CSKYBE__ + memcpy((argp + 4 - (*p_arg)->size), *p_argv, (*p_arg)->size); +#else + memcpy(argp, *p_argv, (*p_arg)->size); +#endif + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof(int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + } + + return; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Round the stack up to a multiple of 8 bytes. This isn't needed + everywhere, but it is on some platforms, and it doesn't hcsky anything + when it isn't needed. */ + cif->bytes = (cif->bytes + 7) & ~7; + + /* Set the return type flag */ + switch (cif->rtype->type) + { + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned) FFI_TYPE_SINT64; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4) + /* A Composite Type not larger than 4 bytes is returned in r0. */ + cif->flags = (unsigned)FFI_TYPE_INT; + else if (cif->rtype->size <= 8) + /* A Composite Type not larger than 8 bytes is returned in r0, r1. */ + cif->flags = (unsigned)FFI_TYPE_SINT64; + else + /* A Composite Type larger than 8 bytes, or whose size cannot + be determined statically ... is stored in memory at an + address passed [in r0]. */ + cif->flags = (unsigned)FFI_TYPE_STRUCT; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +/* Perform machine dependent cif processing for variadic calls */ +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs) +{ + return ffi_prep_cif_machdep(cif); +} + +/* Prototypes for assembly functions, in sysv.S */ +extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + int small_struct = (cif->flags == FFI_TYPE_INT + && cif->rtype->type == FFI_TYPE_STRUCT); + + ecif.cif = cif; + ecif.avalue = avalue; + + unsigned int temp; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->flags == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else if (small_struct) + ecif.rvalue = &temp; + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); + break; + + default: + FFI_ASSERT(0); + break; + } + if (small_struct) +#ifdef __CSKYBE__ + memcpy (rvalue, ((unsigned char *)&temp + (4 - cif->rtype->size)), cif->rtype->size); +#else + memcpy (rvalue, &temp, cif->rtype->size); +#endif +} + +/** private members **/ + +static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, + void** args, ffi_cif* cif); + +void ffi_closure_SYSV (ffi_closure *); + +/* This function is jumped to by the trampoline */ + +unsigned int +ffi_closure_SYSV_inner (closure, respp, args) + ffi_closure *closure; + void **respp; + void *args; +{ + // our various things... + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void*)); + + /* this call will initialize ARG_AREA, such that each + * element in that array points to the corresponding + * value on the stack; and if the function returns + * a structure, it will re-set RESP to point to the + * structure return address. */ + + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); + + (closure->fun) (cif, *respp, arg_area, closure->user_data); + +#ifdef __CSKYBE__ + if (cif->flags == FFI_TYPE_INT && cif->rtype->type == FFI_TYPE_STRUCT) { + unsigned int tmp = 0; + tmp = *(unsigned int *)(*respp); + *(unsigned int *)(*respp) = (tmp >> ((4 - cif->rtype->size) * 8)); + } +#endif + + return cif->flags; +} + + +static void +ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + if ( cif->flags == FFI_TYPE_STRUCT ) { + *rvalue = *(void **) argp; + argp += 4; + } + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) + { + size_t z; + size_t alignment; + + alignment = (*p_arg)->alignment; + if (alignment < 4) + alignment = 4; + +#ifdef __CSKYABIV1__ + /* + * Adapt ABIV1 bug. + * If struct's size is larger than 8 bytes, then it always alignment as 4 bytes. + */ + if (((*p_arg)->type == FFI_TYPE_STRUCT) && ((*p_arg)->size > 8) && (alignment == 8)) { + alignment = 4; + } +#endif + + /* Align if necessary */ + if ((alignment - 1) & (unsigned) argp) { + argp = (char *) FFI_ALIGN(argp, alignment); + } + + z = (*p_arg)->size; + +#ifdef __CSKYBE__ + unsigned int tmp = 0; + if ((*p_arg)->size < 4) { + tmp = *(unsigned int *)argp; + memcpy(argp, ((unsigned char *)&tmp + (4 - (*p_arg)->size)), (*p_arg)->size); + } +#else + /* because we're little endian, this is what it turns into. */ +#endif + *p_argv = (void*) argp; + + p_argv++; + argp += z; + } + + return; +} + +/* How to make a trampoline. */ + +extern unsigned char ffi_csky_trampoline[TRAMPOLINE_SIZE]; + +/* + * Since there is no __clear_cache in libgcc in csky toolchain. + * define ffi_csky_cacheflush in sysv.S. + * void ffi_csky_cacheflush(uint32 start_addr, uint32 size, int cache) + */ +#define CACHEFLUSH_IN_FFI 1 +#if CACHEFLUSH_IN_FFI +extern void ffi_csky_cacheflush(unsigned char *__tramp, unsigned int k, + int i); +#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ +({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ + unsigned int __fun = (unsigned int)(FUN); \ + unsigned int __ctx = (unsigned int)(CTX); \ + unsigned char *insns = (unsigned char *)(CTX); \ + memcpy (__tramp, ffi_csky_trampoline, TRAMPOLINE_SIZE); \ + *(unsigned int*) &__tramp[TRAMPOLINE_SIZE] = __ctx; \ + *(unsigned int*) &__tramp[TRAMPOLINE_SIZE + 4] = __fun; \ + ffi_csky_cacheflush(&__tramp[0], TRAMPOLINE_SIZE, 3); /* Clear data mapping. */ \ + ffi_csky_cacheflush(insns, TRAMPOLINE_SIZE, 3); \ + /* Clear instruction \ + mapping. */ \ + }) +#else +#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ +({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ + unsigned int __fun = (unsigned int)(FUN); \ + unsigned int __ctx = (unsigned int)(CTX); \ + unsigned char *insns = (unsigned char *)(CTX); \ + memcpy (__tramp, ffi_csky_trampoline, TRAMPOLINE_SIZE); \ + *(unsigned int*) &__tramp[TRAMPOLINE_SIZE] = __ctx; \ + *(unsigned int*) &__tramp[TRAMPOLINE_SIZE + 4] = __fun; \ + __clear_cache((&__tramp[0]), (&__tramp[TRAMPOLINE_SIZE-1])); /* Clear data mapping. */ \ + __clear_cache(insns, insns + TRAMPOLINE_SIZE); \ + /* Clear instruction \ + mapping. */ \ + }) +#endif + +/* the cif must already be prep'ed */ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + void (*closure_func)(ffi_closure*) = NULL; + + if (cif->abi == FFI_SYSV) + closure_func = &ffi_closure_SYSV; + else + return FFI_BAD_ABI; + + FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ + closure_func, \ + codeloc); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + + diff --git a/deps/libffi/src/csky/ffitarget.h b/deps/libffi/src/csky/ffitarget.h new file mode 100644 index 00000000000000..f770aac66f1d4d --- /dev/null +++ b/deps/libffi/src/csky/ffitarget.h @@ -0,0 +1,63 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2010 CodeSourcery + Copyright (c) 1996-2003 Red Hat, Inc. + + Target configuration macros for CSKY. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV, +} ffi_abi; +#endif + +#ifdef __CSKYABIV2__ +#define FFI_ASM_ARGREG_SIZE 16 +#define TRAMPOLINE_SIZE 16 +#define FFI_TRAMPOLINE_SIZE 24 +#else +#define FFI_ASM_ARGREG_SIZE 24 +#define TRAMPOLINE_SIZE 20 +#define FFI_TRAMPOLINE_SIZE 28 +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#endif diff --git a/deps/libffi/src/csky/sysv.S b/deps/libffi/src/csky/sysv.S new file mode 100644 index 00000000000000..21670bfd3d0309 --- /dev/null +++ b/deps/libffi/src/csky/sysv.S @@ -0,0 +1,371 @@ +/* ----------------------------------------------------------------------- + sysv.S + + CSKY Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +.macro CSKY_FUNC_START name + .text + .align 2 + .globl \name + .type \name, @function + \name: +.endm + +#ifdef __CSKYABIV2__ + + /* + * a0: fn + * a1: &ecif + * a2: cif->bytes + * a3: fig->flags + * sp+0: ecif.rvalue + */ +CSKY_FUNC_START ffi_call_SYSV + /* Save registers */ + .cfi_startproc + subi sp, 28 + .cfi_def_cfa_offset 28 + stw a0, (sp, 0x0) + .cfi_offset 0, -28 + stw a1, (sp, 0x4) + .cfi_offset 1, -24 + stw a2, (sp, 0x8) + .cfi_offset 2, -20 + stw a3, (sp, 0xC) + .cfi_offset 3, -16 + stw l0, (sp, 0x10) + .cfi_offset 4, -12 + stw l1, (sp, 0x14) + .cfi_offset 5, -8 + stw lr, (sp, 0x18) + .cfi_offset 15, -4 + + mov l0, sp + .cfi_def_cfa_register 4 + + /* Make room for all of the new args. */ + subu sp, sp, a2 + + /* Place all of the ffi_prep_args in position */ + mov a0, sp + /* a1 already set */ + + /* Call ffi_prep_args(stack, &ecif) */ + jsri ffi_prep_args + + /* move first 4 parameters in registers */ + ldw a0, (sp, 0x0) + ldw a1, (sp, 0x4) + ldw a2, (sp, 0x8) + ldw a3, (sp, 0xC) + + /* and adjust stack */ + subu lr, l0, sp /* cif->bytes == l0 - sp */ + cmphsi lr, 16 + movi l1, 16 + movt lr, l1 + addu sp, sp, lr + + ldw l1, (l0, 0) /* load fn() in advance */ + + /* call (fn) (...) */ + jsr l1 + + /* Remove the space we pushed for the args */ + mov sp, l0 + + /* Load r2 with the pointer to storage for the return value */ + ldw a2, (sp, 0x1C) + + /* Load r3 with the return type code */ + ldw a3, (sp, 0xC) + + /* If the return value pointer is NULL, assume no return value. */ + cmpnei a2, 0 + bf .Lepilogue + + cmpnei a3, FFI_TYPE_STRUCT + bf .Lepilogue + + /* return INT64 */ + cmpnei a3, FFI_TYPE_SINT64 + bt .Lretint + /* stw a0, (a2, 0x0) at .Lretint */ + stw a1, (a2, 0x4) + +.Lretint: + /* return INT */ + stw a0, (a2, 0x0) + +.Lepilogue: + ldw a0, (sp, 0x0) + ldw a1, (sp, 0x4) + ldw a2, (sp, 0x8) + ldw a3, (sp, 0xC) + ldw l0, (sp, 0x10) + ldw l1, (sp, 0x14) + ldw lr, (sp, 0x18) + addi sp, sp, 28 + rts + .cfi_endproc + .size ffi_call_SYSV, .-ffi_call_SYSV + + + /* + * unsigned int FFI_HIDDEN + * ffi_closure_SYSV_inner (closure, respp, args) + * ffi_closure *closure; + * void **respp; + * void *args; + */ +CSKY_FUNC_START ffi_closure_SYSV + .cfi_startproc + mov a2, sp + addi a1, sp, 16 + subi sp, sp, 24 + .cfi_def_cfa_offset 40 + stw a1, (sp, 0x10) + .cfi_offset 1, -24 + stw lr, (sp, 0x14) + .cfi_offset 15, -20 + stw sp, (sp, 0x8) + addi a1, sp, 8 + jsri ffi_closure_SYSV_inner + ldw a0, (sp, 0x0) + /* + * if FFI_TYPE_SINT64, need a1. + * if FFI_TYPE_INT, ignore a1. + */ + ldw a1, (sp, 0x4) + + ldw lr, (sp, 0x14) + addi sp, sp, 40 + rts + .cfi_endproc + .size ffi_closure_SYSV, .-ffi_closure_SYSV + +CSKY_FUNC_START ffi_csky_trampoline + subi sp, sp, 16 + stw a0, (sp, 0x0) + stw a1, (sp, 0x4) + stw a2, (sp, 0x8) + stw a3, (sp, 0xC) + lrw a0, [.Lctx] + lrw a1, [.Lfun] + jmp a1 +.Lctx: + mov a0, a0 + mov a0, a0 +.Lfun: + + .size ffi_csky_trampoline, .-ffi_csky_trampoline + +CSKY_FUNC_START ffi_csky_cacheflush + mov t0, r7 + movi r7, 123 + trap 0 + mov r7, t0 + rts + + .size ffi_csky_cacheflush, .-ffi_csky_cacheflush + +#else /* !__CSKYABIV2__ */ + + /* + * a0: fn + * a1: &ecif + * a2: cif->bytes + * a3: fig->flags + * a4: ecif.rvalue + */ +CSKY_FUNC_START ffi_call_SYSV + /* Save registers */ + .cfi_startproc + subi sp, 32 + subi sp, 8 + .cfi_def_cfa_offset 40 + stw a0, (sp, 0x0) + .cfi_offset 2, -40 + stw a1, (sp, 0x4) + .cfi_offset 3, -36 + stw a2, (sp, 0x8) + .cfi_offset 4, -32 + stw a3, (sp, 0xC) + .cfi_offset 5, -28 + stw a4, (sp, 0x10) + .cfi_offset 6, -24 + stw a5, (sp, 0x14) + .cfi_offset 7, -20 + stw l0, (sp, 0x18) + .cfi_offset 8, -16 + stw l1, (sp, 0x1C) + .cfi_offset 9, -12 + stw lr, (sp, 0x20) + .cfi_offset 15, -8 + + mov l0, sp + .cfi_def_cfa_register 8 + + /* Make room for all of the new args. */ + subu sp, sp, a2 + + /* Place all of the ffi_prep_args in position */ + mov a0, sp + /* a1 already set */ + + /* Call ffi_prep_args(stack, &ecif) */ + jsri ffi_prep_args + + /* move first 4 parameters in registers */ + ldw a0, (sp, 0x0) + ldw a1, (sp, 0x4) + ldw a2, (sp, 0x8) + ldw a3, (sp, 0xC) + ldw a4, (sp, 0x10) + ldw a5, (sp, 0x14) + + /* and adjust stack */ + mov lr, l0 + subu lr, sp /* cif->bytes == l0 - sp */ + movi l1, 24 + cmphs lr, l1 + movt lr, l1 + addu sp, sp, lr + + ldw l1, (l0, 0) /* load fn() in advance */ + + /* call (fn) (...) */ + jsr l1 + + /* Remove the space we pushed for the args */ + mov sp, l0 + + /* Load r2 with the pointer to storage for the return value */ + ldw a2, (sp, 0x10) + + /* Load r3 with the return type code */ + ldw a3, (sp, 0xC) + + /* If the return value pointer is NULL, assume no return value. */ + cmpnei a2, 0 + bf .Lepilogue + + cmpnei a3, FFI_TYPE_STRUCT + bf .Lepilogue + + /* return INT64 */ + cmpnei a3, FFI_TYPE_SINT64 + bt .Lretint + /* stw a0, (a2, 0x0) at .Lretint */ + stw a1, (a2, 0x4) + +.Lretint: + /* return INT */ + stw a0, (a2, 0x0) + +.Lepilogue: + ldw a0, (sp, 0x0) + ldw a1, (sp, 0x4) + ldw a2, (sp, 0x8) + ldw a3, (sp, 0xC) + ldw a4, (sp, 0x10) + ldw a5, (sp, 0x14) + ldw l0, (sp, 0x18) + ldw l1, (sp, 0x1C) + ldw lr, (sp, 0x20) + addi sp, sp, 32 + addi sp, sp, 8 + rts + .cfi_endproc + + .size ffi_call_SYSV, .-ffi_call_SYSV + + + /* + * unsigned int FFI_HIDDEN + * ffi_closure_SYSV_inner (closure, respp, args) + * ffi_closure *closure; + * void **respp; + * void *args; + */ +CSKY_FUNC_START ffi_closure_SYSV + .cfi_startproc + mov a2, sp + mov a1, sp + addi a1, 24 + subi sp, sp, 24 + .cfi_def_cfa_offset 48 + stw a1, (sp, 0x10) + .cfi_offset 3, -32 + stw lr, (sp, 0x14) + .cfi_offset 15, -28 + stw sp, (sp, 0x8) + mov a1, sp + addi a1, 8 + jsri ffi_closure_SYSV_inner + ldw a0, (sp, 0x0) + /* + * if FFI_TYPE_SINT64, need a1. + * if FFI_TYPE_INT, ignore a1. + */ + ldw a1, (sp, 0x4) + + ldw lr, (sp, 0x14) + addi sp, sp, 24 + addi sp, sp, 24 + rts + .cfi_endproc + + .size ffi_closure_SYSV, .-ffi_closure_SYSV + +CSKY_FUNC_START ffi_csky_trampoline + subi sp, 24 + stw a0, (sp, 0x0) + stw a1, (sp, 0x4) + stw a2, (sp, 0x8) + stw a3, (sp, 0xC) + stw a4, (sp, 0x10) + stw a5, (sp, 0x14) + lrw a0, [.Lctx] + lrw a1, [.Lfun] + jmp a1 +.Lctx: + mov a0, a0 + mov a0, a0 +.Lfun: + + .size ffi_csky_trampoline, .-ffi_csky_trampoline + +CSKY_FUNC_START ffi_csky_cacheflush + lrw r1, 123 + trap 0 + rts + + .size ffi_csky_cacheflush, .-ffi_csky_cacheflush + +#endif /* __CSKYABIV2__ */ diff --git a/deps/libffi/src/debug.c b/deps/libffi/src/debug.c new file mode 100644 index 00000000000000..63321dc013cc27 --- /dev/null +++ b/deps/libffi/src/debug.c @@ -0,0 +1,64 @@ +/* ----------------------------------------------------------------------- + debug.c - Copyright (c) 1996 Red Hat, Inc. + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include + +/* General debugging routines */ + +void ffi_stop_here(void) +{ + /* This function is only useful for debugging purposes. + Place a breakpoint on ffi_stop_here to be notified of + significant events. */ +} + +/* This function should only be called via the FFI_ASSERT() macro */ + +NORETURN void ffi_assert(const char *expr, const char *file, int line) +{ + fprintf(stderr, "ASSERTION FAILURE: %s at %s:%d\n", expr, file, line); + ffi_stop_here(); + abort(); +} + +/* Perform a sanity check on an ffi_type structure */ + +void ffi_type_test(ffi_type *a, const char *file, int line) +{ + FFI_ASSERT_AT(a != NULL, file, line); + + FFI_ASSERT_AT(a->type <= FFI_TYPE_LAST, file, line); + FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->size > 0, file, line); + FFI_ASSERT_AT(a->type == FFI_TYPE_VOID || a->alignment > 0, file, line); + FFI_ASSERT_AT((a->type != FFI_TYPE_STRUCT && a->type != FFI_TYPE_COMPLEX) + || a->elements != NULL, file, line); + FFI_ASSERT_AT(a->type != FFI_TYPE_COMPLEX + || (a->elements != NULL + && a->elements[0] != NULL && a->elements[1] == NULL), + file, line); + +} diff --git a/deps/libffi/src/dlmalloc.c b/deps/libffi/src/dlmalloc.c new file mode 100644 index 00000000000000..17193a0db3bb45 --- /dev/null +++ b/deps/libffi/src/dlmalloc.c @@ -0,0 +1,5172 @@ +/* + This is a version (aka dlmalloc) of malloc/free/realloc written by + Doug Lea and released to the public domain, as explained at + http://creativecommons.org/licenses/publicdomain. Send questions, + comments, complaints, performance data, etc to dl@cs.oswego.edu + +* Version 2.8.3 Thu Sep 22 11:16:15 2005 Doug Lea (dl at gee) + + Note: There may be an updated version of this malloc obtainable at + ftp://gee.cs.oswego.edu/pub/misc/malloc.c + Check before installing! + +* Quickstart + + This library is all in one file to simplify the most common usage: + ftp it, compile it (-O3), and link it into another program. All of + the compile-time options default to reasonable values for use on + most platforms. You might later want to step through various + compile-time and dynamic tuning options. + + For convenience, an include file for code using this malloc is at: + ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.3.h + You don't really need this .h file unless you call functions not + defined in your system include files. The .h file contains only the + excerpts from this file needed for using this malloc on ANSI C/C++ + systems, so long as you haven't changed compile-time options about + naming and tuning parameters. If you do, then you can create your + own malloc.h that does include all settings by cutting at the point + indicated below. Note that you may already by default be using a C + library containing a malloc that is based on some version of this + malloc (for example in linux). You might still want to use the one + in this file to customize settings or to avoid overheads associated + with library versions. + +* Vital statistics: + + Supported pointer/size_t representation: 4 or 8 bytes + size_t MUST be an unsigned type of the same width as + pointers. (If you are using an ancient system that declares + size_t as a signed type, or need it to be a different width + than pointers, you can use a previous release of this malloc + (e.g. 2.7.2) supporting these.) + + Alignment: 8 bytes (default) + This suffices for nearly all current machines and C compilers. + However, you can define MALLOC_ALIGNMENT to be wider than this + if necessary (up to 128bytes), at the expense of using more space. + + Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) + 8 or 16 bytes (if 8byte sizes) + Each malloced chunk has a hidden word of overhead holding size + and status information, and additional cross-check word + if FOOTERS is defined. + + Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) + 8-byte ptrs: 32 bytes (including overhead) + + Even a request for zero bytes (i.e., malloc(0)) returns a + pointer to something of the minimum allocatable size. + The maximum overhead wastage (i.e., number of extra bytes + allocated than were requested in malloc) is less than or equal + to the minimum size, except for requests >= mmap_threshold that + are serviced via mmap(), where the worst case wastage is about + 32 bytes plus the remainder from a system page (the minimal + mmap unit); typically 4096 or 8192 bytes. + + Security: static-safe; optionally more or less + The "security" of malloc refers to the ability of malicious + code to accentuate the effects of errors (for example, freeing + space that is not currently malloc'ed or overwriting past the + ends of chunks) in code that calls malloc. This malloc + guarantees not to modify any memory locations below the base of + heap, i.e., static variables, even in the presence of usage + errors. The routines additionally detect most improper frees + and reallocs. All this holds as long as the static bookkeeping + for malloc itself is not corrupted by some other means. This + is only one aspect of security -- these checks do not, and + cannot, detect all possible programming errors. + + If FOOTERS is defined nonzero, then each allocated chunk + carries an additional check word to verify that it was malloced + from its space. These check words are the same within each + execution of a program using malloc, but differ across + executions, so externally crafted fake chunks cannot be + freed. This improves security by rejecting frees/reallocs that + could corrupt heap memory, in addition to the checks preventing + writes to statics that are always on. This may further improve + security at the expense of time and space overhead. (Note that + FOOTERS may also be worth using with MSPACES.) + + By default detected errors cause the program to abort (calling + "abort()"). You can override this to instead proceed past + errors by defining PROCEED_ON_ERROR. In this case, a bad free + has no effect, and a malloc that encounters a bad address + caused by user overwrites will ignore the bad address by + dropping pointers and indices to all known memory. This may + be appropriate for programs that should continue if at all + possible in the face of programming errors, although they may + run out of memory because dropped memory is never reclaimed. + + If you don't like either of these options, you can define + CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything + else. And if if you are sure that your program using malloc has + no errors or vulnerabilities, you can define INSECURE to 1, + which might (or might not) provide a small performance improvement. + + Thread-safety: NOT thread-safe unless USE_LOCKS defined + When USE_LOCKS is defined, each public call to malloc, free, + etc is surrounded with either a pthread mutex or a win32 + spinlock (depending on WIN32). This is not especially fast, and + can be a major bottleneck. It is designed only to provide + minimal protection in concurrent environments, and to provide a + basis for extensions. If you are using malloc in a concurrent + program, consider instead using ptmalloc, which is derived from + a version of this malloc. (See http://www.malloc.de). + + System requirements: Any combination of MORECORE and/or MMAP/MUNMAP + This malloc can use unix sbrk or any emulation (invoked using + the CALL_MORECORE macro) and/or mmap/munmap or any emulation + (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system + memory. On most unix systems, it tends to work best if both + MORECORE and MMAP are enabled. On Win32, it uses emulations + based on VirtualAlloc. It also uses common C library functions + like memset. + + Compliance: I believe it is compliant with the Single Unix Specification + (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably + others as well. + +* Overview of algorithms + + This is not the fastest, most space-conserving, most portable, or + most tunable malloc ever written. However it is among the fastest + while also being among the most space-conserving, portable and + tunable. Consistent balance across these factors results in a good + general-purpose allocator for malloc-intensive programs. + + In most ways, this malloc is a best-fit allocator. Generally, it + chooses the best-fitting existing chunk for a request, with ties + broken in approximately least-recently-used order. (This strategy + normally maintains low fragmentation.) However, for requests less + than 256bytes, it deviates from best-fit when there is not an + exactly fitting available chunk by preferring to use space adjacent + to that used for the previous small request, as well as by breaking + ties in approximately most-recently-used order. (These enhance + locality of series of small allocations.) And for very large requests + (>= 256Kb by default), it relies on system memory mapping + facilities, if supported. (This helps avoid carrying around and + possibly fragmenting memory used only for large chunks.) + + All operations (except malloc_stats and mallinfo) have execution + times that are bounded by a constant factor of the number of bits in + a size_t, not counting any clearing in calloc or copying in realloc, + or actions surrounding MORECORE and MMAP that have times + proportional to the number of non-contiguous regions returned by + system allocation routines, which is often just 1. + + The implementation is not very modular and seriously overuses + macros. Perhaps someday all C compilers will do as good a job + inlining modular code as can now be done by brute-force expansion, + but now, enough of them seem not to. + + Some compilers issue a lot of warnings about code that is + dead/unreachable only on some platforms, and also about intentional + uses of negation on unsigned types. All known cases of each can be + ignored. + + For a longer but out of date high-level description, see + http://gee.cs.oswego.edu/dl/html/malloc.html + +* MSPACES + If MSPACES is defined, then in addition to malloc, free, etc., + this file also defines mspace_malloc, mspace_free, etc. These + are versions of malloc routines that take an "mspace" argument + obtained using create_mspace, to control all internal bookkeeping. + If ONLY_MSPACES is defined, only these versions are compiled. + So if you would like to use this allocator for only some allocations, + and your system malloc for others, you can compile with + ONLY_MSPACES and then do something like... + static mspace mymspace = create_mspace(0,0); // for example + #define mymalloc(bytes) mspace_malloc(mymspace, bytes) + + (Note: If you only need one instance of an mspace, you can instead + use "USE_DL_PREFIX" to relabel the global malloc.) + + You can similarly create thread-local allocators by storing + mspaces as thread-locals. For example: + static __thread mspace tlms = 0; + void* tlmalloc(size_t bytes) { + if (tlms == 0) tlms = create_mspace(0, 0); + return mspace_malloc(tlms, bytes); + } + void tlfree(void* mem) { mspace_free(tlms, mem); } + + Unless FOOTERS is defined, each mspace is completely independent. + You cannot allocate from one and free to another (although + conformance is only weakly checked, so usage errors are not always + caught). If FOOTERS is defined, then each chunk carries around a tag + indicating its originating mspace, and frees are directed to their + originating spaces. + + ------------------------- Compile-time options --------------------------- + +Be careful in setting #define values for numerical constants of type +size_t. On some systems, literal values are not automatically extended +to size_t precision unless they are explicitly casted. + +WIN32 default: defined if _WIN32 defined + Defining WIN32 sets up defaults for MS environment and compilers. + Otherwise defaults are for unix. + +MALLOC_ALIGNMENT default: (size_t)8 + Controls the minimum alignment for malloc'ed chunks. It must be a + power of two and at least 8, even on machines for which smaller + alignments would suffice. It may be defined as larger than this + though. Note however that code and data structures are optimized for + the case of 8-byte alignment. + +MSPACES default: 0 (false) + If true, compile in support for independent allocation spaces. + This is only supported if HAVE_MMAP is true. + +ONLY_MSPACES default: 0 (false) + If true, only compile in mspace versions, not regular versions. + +USE_LOCKS default: 0 (false) + Causes each call to each public routine to be surrounded with + pthread or WIN32 mutex lock/unlock. (If set true, this can be + overridden on a per-mspace basis for mspace versions.) + +FOOTERS default: 0 + If true, provide extra checking and dispatching by placing + information in the footers of allocated chunks. This adds + space and time overhead. + +INSECURE default: 0 + If true, omit checks for usage errors and heap space overwrites. + +USE_DL_PREFIX default: NOT defined + Causes compiler to prefix all public routines with the string 'dl'. + This can be useful when you only want to use this malloc in one part + of a program, using your regular system malloc elsewhere. + +ABORT default: defined as abort() + Defines how to abort on failed checks. On most systems, a failed + check cannot die with an "assert" or even print an informative + message, because the underlying print routines in turn call malloc, + which will fail again. Generally, the best policy is to simply call + abort(). It's not very useful to do more than this because many + errors due to overwriting will show up as address faults (null, odd + addresses etc) rather than malloc-triggered checks, so will also + abort. Also, most compilers know that abort() does not return, so + can better optimize code conditionally calling it. + +PROCEED_ON_ERROR default: defined as 0 (false) + Controls whether detected bad addresses cause them to bypassed + rather than aborting. If set, detected bad arguments to free and + realloc are ignored. And all bookkeeping information is zeroed out + upon a detected overwrite of freed heap space, thus losing the + ability to ever return it from malloc again, but enabling the + application to proceed. If PROCEED_ON_ERROR is defined, the + static variable malloc_corruption_error_count is compiled in + and can be examined to see if errors have occurred. This option + generates slower code than the default abort policy. + +DEBUG default: NOT defined + The DEBUG setting is mainly intended for people trying to modify + this code or diagnose problems when porting to new platforms. + However, it may also be able to better isolate user errors than just + using runtime checks. The assertions in the check routines spell + out in more detail the assumptions and invariants underlying the + algorithms. The checking is fairly extensive, and will slow down + execution noticeably. Calling malloc_stats or mallinfo with DEBUG + set will attempt to check every non-mmapped allocated and free chunk + in the course of computing the summaries. + +ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) + Debugging assertion failures can be nearly impossible if your + version of the assert macro causes malloc to be called, which will + lead to a cascade of further failures, blowing the runtime stack. + ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), + which will usually make debugging easier. + +MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 + The action to take before "return 0" when malloc fails to be able to + return memory because there is none available. + +HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES + True if this system supports sbrk or an emulation of it. + +MORECORE default: sbrk + The name of the sbrk-style system routine to call to obtain more + memory. See below for guidance on writing custom MORECORE + functions. The type of the argument to sbrk/MORECORE varies across + systems. It cannot be size_t, because it supports negative + arguments, so it is normally the signed type of the same width as + size_t (sometimes declared as "intptr_t"). It doesn't much matter + though. Internally, we only call it with arguments less than half + the max value of a size_t, which should work across all reasonable + possibilities, although sometimes generating compiler warnings. See + near the end of this file for guidelines for creating a custom + version of MORECORE. + +MORECORE_CONTIGUOUS default: 1 (true) + If true, take advantage of fact that consecutive calls to MORECORE + with positive arguments always return contiguous increasing + addresses. This is true of unix sbrk. It does not hurt too much to + set it true anyway, since malloc copes with non-contiguities. + Setting it false when definitely non-contiguous saves time + and possibly wasted space it would take to discover this though. + +MORECORE_CANNOT_TRIM default: NOT defined + True if MORECORE cannot release space back to the system when given + negative arguments. This is generally necessary only if you are + using a hand-crafted MORECORE function that cannot handle negative + arguments. + +HAVE_MMAP default: 1 (true) + True if this system supports mmap or an emulation of it. If so, and + HAVE_MORECORE is not true, MMAP is used for all system + allocation. If set and HAVE_MORECORE is true as well, MMAP is + primarily used to directly allocate very large blocks. It is also + used as a backup strategy in cases where MORECORE fails to provide + space from system. Note: A single call to MUNMAP is assumed to be + able to unmap memory that may have be allocated using multiple calls + to MMAP, so long as they are adjacent. + +HAVE_MREMAP default: 1 on linux, else 0 + If true realloc() uses mremap() to re-allocate large blocks and + extend or shrink allocation spaces. + +MMAP_CLEARS default: 1 on unix + True if mmap clears memory so calloc doesn't need to. This is true + for standard unix mmap using /dev/zero. + +USE_BUILTIN_FFS default: 0 (i.e., not used) + Causes malloc to use the builtin ffs() function to compute indices. + Some compilers may recognize and intrinsify ffs to be faster than the + supplied C version. Also, the case of x86 using gcc is special-cased + to an asm instruction, so is already as fast as it can be, and so + this setting has no effect. (On most x86s, the asm version is only + slightly faster than the C version.) + +malloc_getpagesize default: derive from system includes, or 4096. + The system page size. To the extent possible, this malloc manages + memory from the system in page-size units. This may be (and + usually is) a function rather than a constant. This is ignored + if WIN32, where page size is determined using getSystemInfo during + initialization. + +USE_DEV_RANDOM default: 0 (i.e., not used) + Causes malloc to use /dev/random to initialize secure magic seed for + stamping footers. Otherwise, the current time is used. + +NO_MALLINFO default: 0 + If defined, don't compile "mallinfo". This can be a simple way + of dealing with mismatches between system declarations and + those in this file. + +MALLINFO_FIELD_TYPE default: size_t + The type of the fields in the mallinfo struct. This was originally + defined as "int" in SVID etc, but is more usefully defined as + size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set + +REALLOC_ZERO_BYTES_FREES default: not defined + This should be set if a call to realloc with zero bytes should + be the same as a call to free. Some people think it should. Otherwise, + since this malloc returns a unique pointer for malloc(0), so does + realloc(p, 0). + +LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H +LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H +LACKS_STDLIB_H default: NOT defined unless on WIN32 + Define these if your system does not have these header files. + You might need to manually insert some of the declarations they provide. + +DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, + system_info.dwAllocationGranularity in WIN32, + otherwise 64K. + Also settable using mallopt(M_GRANULARITY, x) + The unit for allocating and deallocating memory from the system. On + most systems with contiguous MORECORE, there is no reason to + make this more than a page. However, systems with MMAP tend to + either require or encourage larger granularities. You can increase + this value to prevent system allocation functions to be called so + often, especially if they are slow. The value must be at least one + page and must be a power of two. Setting to 0 causes initialization + to either page size or win32 region size. (Note: In previous + versions of malloc, the equivalent of this option was called + "TOP_PAD") + +DEFAULT_TRIM_THRESHOLD default: 2MB + Also settable using mallopt(M_TRIM_THRESHOLD, x) + The maximum amount of unused top-most memory to keep before + releasing via malloc_trim in free(). Automatic trimming is mainly + useful in long-lived programs using contiguous MORECORE. Because + trimming via sbrk can be slow on some systems, and can sometimes be + wasteful (in cases where programs immediately afterward allocate + more large chunks) the value should be high enough so that your + overall system performance would improve by releasing this much + memory. As a rough guide, you might set to a value close to the + average size of a process (program) running on your system. + Releasing this much memory would allow such a process to run in + memory. Generally, it is worth tuning trim thresholds when a + program undergoes phases where several large chunks are allocated + and released in ways that can reuse each other's storage, perhaps + mixed with phases where there are no such chunks at all. The trim + value must be greater than page size to have any useful effect. To + disable trimming completely, you can set to MAX_SIZE_T. Note that the trick + some people use of mallocing a huge space and then freeing it at + program startup, in an attempt to reserve system memory, doesn't + have the intended effect under automatic trimming, since that memory + will immediately be returned to the system. + +DEFAULT_MMAP_THRESHOLD default: 256K + Also settable using mallopt(M_MMAP_THRESHOLD, x) + The request size threshold for using MMAP to directly service a + request. Requests of at least this size that cannot be allocated + using already-existing space will be serviced via mmap. (If enough + normal freed space already exists it is used instead.) Using mmap + segregates relatively large chunks of memory so that they can be + individually obtained and released from the host system. A request + serviced through mmap is never reused by any other request (at least + not directly; the system may just so happen to remap successive + requests to the same locations). Segregating space in this way has + the benefits that: Mmapped space can always be individually released + back to the system, which helps keep the system level memory demands + of a long-lived program low. Also, mapped memory doesn't become + `locked' between other chunks, as can happen with normally allocated + chunks, which means that even trimming via malloc_trim would not + release them. However, it has the disadvantage that the space + cannot be reclaimed, consolidated, and then used to service later + requests, as happens with normal chunks. The advantages of mmap + nearly always outweigh disadvantages for "large" chunks, but the + value of "large" may vary across systems. The default is an + empirically derived value that works well in most systems. You can + disable mmap by setting to MAX_SIZE_T. + +*/ + +#if defined __linux__ && !defined _GNU_SOURCE +/* mremap() on Linux requires this via sys/mman.h */ +#define _GNU_SOURCE 1 +#endif + +#ifndef WIN32 +#ifdef _WIN32 +#define WIN32 1 +#endif /* _WIN32 */ +#endif /* WIN32 */ +#ifdef WIN32 +#define WIN32_LEAN_AND_MEAN +#include +#define HAVE_MMAP 1 +#define HAVE_MORECORE 0 +#define LACKS_UNISTD_H +#define LACKS_SYS_PARAM_H +#define LACKS_SYS_MMAN_H +#define LACKS_STRING_H +#define LACKS_STRINGS_H +#define LACKS_SYS_TYPES_H +#define LACKS_ERRNO_H +#define MALLOC_FAILURE_ACTION +#define MMAP_CLEARS 0 /* WINCE and some others apparently don't clear */ +#endif /* WIN32 */ + +#ifdef __OS2__ +#define INCL_DOS +#include +#define HAVE_MMAP 1 +#define HAVE_MORECORE 0 +#define LACKS_SYS_MMAN_H +#endif /* __OS2__ */ + +#if defined(DARWIN) || defined(_DARWIN) +/* Mac OSX docs advise not to use sbrk; it seems better to use mmap */ +#ifndef HAVE_MORECORE +#define HAVE_MORECORE 0 +#define HAVE_MMAP 1 +#endif /* HAVE_MORECORE */ +#endif /* DARWIN */ + +#ifndef LACKS_SYS_TYPES_H +#include /* For size_t */ +#endif /* LACKS_SYS_TYPES_H */ + +/* The maximum possible size_t value has all bits set */ +#define MAX_SIZE_T (~(size_t)0) + +#ifndef ONLY_MSPACES +#define ONLY_MSPACES 0 +#endif /* ONLY_MSPACES */ +#ifndef MSPACES +#if ONLY_MSPACES +#define MSPACES 1 +#else /* ONLY_MSPACES */ +#define MSPACES 0 +#endif /* ONLY_MSPACES */ +#endif /* MSPACES */ +#ifndef MALLOC_ALIGNMENT +#define MALLOC_ALIGNMENT ((size_t)8U) +#endif /* MALLOC_ALIGNMENT */ +#ifndef FOOTERS +#define FOOTERS 0 +#endif /* FOOTERS */ +#ifndef ABORT +#define ABORT abort() +#endif /* ABORT */ +#ifndef ABORT_ON_ASSERT_FAILURE +#define ABORT_ON_ASSERT_FAILURE 1 +#endif /* ABORT_ON_ASSERT_FAILURE */ +#ifndef PROCEED_ON_ERROR +#define PROCEED_ON_ERROR 0 +#endif /* PROCEED_ON_ERROR */ +#ifndef USE_LOCKS +#define USE_LOCKS 0 +#endif /* USE_LOCKS */ +#ifndef INSECURE +#define INSECURE 0 +#endif /* INSECURE */ +#ifndef HAVE_MMAP +#define HAVE_MMAP 1 +#endif /* HAVE_MMAP */ +#ifndef MMAP_CLEARS +#define MMAP_CLEARS 1 +#endif /* MMAP_CLEARS */ +#ifndef HAVE_MREMAP +#ifdef linux +#define HAVE_MREMAP 1 +#else /* linux */ +#define HAVE_MREMAP 0 +#endif /* linux */ +#endif /* HAVE_MREMAP */ +#ifndef MALLOC_FAILURE_ACTION +#define MALLOC_FAILURE_ACTION errno = ENOMEM; +#endif /* MALLOC_FAILURE_ACTION */ +#ifndef HAVE_MORECORE +#if ONLY_MSPACES +#define HAVE_MORECORE 0 +#else /* ONLY_MSPACES */ +#define HAVE_MORECORE 1 +#endif /* ONLY_MSPACES */ +#endif /* HAVE_MORECORE */ +#if !HAVE_MORECORE +#define MORECORE_CONTIGUOUS 0 +#else /* !HAVE_MORECORE */ +#ifndef MORECORE +#define MORECORE sbrk +#endif /* MORECORE */ +#ifndef MORECORE_CONTIGUOUS +#define MORECORE_CONTIGUOUS 1 +#endif /* MORECORE_CONTIGUOUS */ +#endif /* HAVE_MORECORE */ +#ifndef DEFAULT_GRANULARITY +#if MORECORE_CONTIGUOUS +#define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ +#else /* MORECORE_CONTIGUOUS */ +#define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) +#endif /* MORECORE_CONTIGUOUS */ +#endif /* DEFAULT_GRANULARITY */ +#ifndef DEFAULT_TRIM_THRESHOLD +#ifndef MORECORE_CANNOT_TRIM +#define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) +#else /* MORECORE_CANNOT_TRIM */ +#define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T +#endif /* MORECORE_CANNOT_TRIM */ +#endif /* DEFAULT_TRIM_THRESHOLD */ +#ifndef DEFAULT_MMAP_THRESHOLD +#if HAVE_MMAP +#define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) +#else /* HAVE_MMAP */ +#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T +#endif /* HAVE_MMAP */ +#endif /* DEFAULT_MMAP_THRESHOLD */ +#ifndef USE_BUILTIN_FFS +#define USE_BUILTIN_FFS 0 +#endif /* USE_BUILTIN_FFS */ +#ifndef USE_DEV_RANDOM +#define USE_DEV_RANDOM 0 +#endif /* USE_DEV_RANDOM */ +#ifndef NO_MALLINFO +#define NO_MALLINFO 0 +#endif /* NO_MALLINFO */ +#ifndef MALLINFO_FIELD_TYPE +#define MALLINFO_FIELD_TYPE size_t +#endif /* MALLINFO_FIELD_TYPE */ + +/* + mallopt tuning options. SVID/XPG defines four standard parameter + numbers for mallopt, normally defined in malloc.h. None of these + are used in this malloc, so setting them has no effect. But this + malloc does support the following options. +*/ + +/* The system's malloc.h may have conflicting defines. */ +#undef M_TRIM_THRESHOLD +#undef M_GRANULARITY +#undef M_MMAP_THRESHOLD + +#define M_TRIM_THRESHOLD (-1) +#define M_GRANULARITY (-2) +#define M_MMAP_THRESHOLD (-3) + +/* ------------------------ Mallinfo declarations ------------------------ */ + +#if !NO_MALLINFO +/* + This version of malloc supports the standard SVID/XPG mallinfo + routine that returns a struct containing usage properties and + statistics. It should work on any system that has a + /usr/include/malloc.h defining struct mallinfo. The main + declaration needed is the mallinfo struct that is returned (by-copy) + by mallinfo(). The malloinfo struct contains a bunch of fields that + are not even meaningful in this version of malloc. These fields are + are instead filled by mallinfo() with other numbers that might be of + interest. + + HAVE_USR_INCLUDE_MALLOC_H should be set if you have a + /usr/include/malloc.h file that includes a declaration of struct + mallinfo. If so, it is included; else a compliant version is + declared below. These must be precisely the same for mallinfo() to + work. The original SVID version of this struct, defined on most + systems with mallinfo, declares all fields as ints. But some others + define as unsigned long. If your system defines the fields using a + type of different width than listed here, you MUST #include your + system version and #define HAVE_USR_INCLUDE_MALLOC_H. +*/ + +/* #define HAVE_USR_INCLUDE_MALLOC_H */ + +#ifdef HAVE_USR_INCLUDE_MALLOC_H +#include "/usr/include/malloc.h" +#else /* HAVE_USR_INCLUDE_MALLOC_H */ + +/* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */ +#define _STRUCT_MALLINFO + +struct mallinfo { + MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ + MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ + MALLINFO_FIELD_TYPE smblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ + MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ + MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ + MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ + MALLINFO_FIELD_TYPE fordblks; /* total free space */ + MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ +}; + +#endif /* HAVE_USR_INCLUDE_MALLOC_H */ +#endif /* NO_MALLINFO */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if !ONLY_MSPACES + +/* ------------------- Declarations of public routines ------------------- */ + +#ifndef USE_DL_PREFIX +#define dlcalloc calloc +#define dlfree free +#define dlmalloc malloc +#define dlmemalign memalign +#define dlrealloc realloc +#define dlvalloc valloc +#define dlpvalloc pvalloc +#define dlmallinfo mallinfo +#define dlmallopt mallopt +#define dlmalloc_trim malloc_trim +#define dlmalloc_stats malloc_stats +#define dlmalloc_usable_size malloc_usable_size +#define dlmalloc_footprint malloc_footprint +#define dlmalloc_max_footprint malloc_max_footprint +#define dlindependent_calloc independent_calloc +#define dlindependent_comalloc independent_comalloc +#endif /* USE_DL_PREFIX */ + + +/* + malloc(size_t n) + Returns a pointer to a newly allocated chunk of at least n bytes, or + null if no space is available, in which case errno is set to ENOMEM + on ANSI C systems. + + If n is zero, malloc returns a minimum-sized chunk. (The minimum + size is 16 bytes on most 32bit systems, and 32 bytes on 64bit + systems.) Note that size_t is an unsigned type, so calls with + arguments that would be negative if signed are interpreted as + requests for huge amounts of space, which will often fail. The + maximum supported value of n differs across systems, but is in all + cases less than the maximum representable value of a size_t. +*/ +void* dlmalloc(size_t); + +/* + free(void* p) + Releases the chunk of memory pointed to by p, that had been previously + allocated using malloc or a related routine such as realloc. + It has no effect if p is null. If p was not malloced or already + freed, free(p) will by default cause the current program to abort. +*/ +void dlfree(void*); + +/* + calloc(size_t n_elements, size_t element_size); + Returns a pointer to n_elements * element_size bytes, with all locations + set to zero. +*/ +void* dlcalloc(size_t, size_t); + +/* + realloc(void* p, size_t n) + Returns a pointer to a chunk of size n that contains the same data + as does chunk p up to the minimum of (n, p's size) bytes, or null + if no space is available. + + The returned pointer may or may not be the same as p. The algorithm + prefers extending p in most cases when possible, otherwise it + employs the equivalent of a malloc-copy-free sequence. + + If p is null, realloc is equivalent to malloc. + + If space is not available, realloc returns null, errno is set (if on + ANSI) and p is NOT freed. + + if n is for fewer bytes than already held by p, the newly unused + space is lopped off and freed if possible. realloc with a size + argument of zero (re)allocates a minimum-sized chunk. + + The old unix realloc convention of allowing the last-free'd chunk + to be used as an argument to realloc is not supported. +*/ + +void* dlrealloc(void*, size_t); + +/* + memalign(size_t alignment, size_t n); + Returns a pointer to a newly allocated chunk of n bytes, aligned + in accord with the alignment argument. + + The alignment argument should be a power of two. If the argument is + not a power of two, the nearest greater power is used. + 8-byte alignment is guaranteed by normal malloc calls, so don't + bother calling memalign with an argument of 8 or less. + + Overreliance on memalign is a sure way to fragment space. +*/ +void* dlmemalign(size_t, size_t); + +/* + valloc(size_t n); + Equivalent to memalign(pagesize, n), where pagesize is the page + size of the system. If the pagesize is unknown, 4096 is used. +*/ +void* dlvalloc(size_t); + +/* + mallopt(int parameter_number, int parameter_value) + Sets tunable parameters The format is to provide a + (parameter-number, parameter-value) pair. mallopt then sets the + corresponding parameter to the argument value if it can (i.e., so + long as the value is meaningful), and returns 1 if successful else + 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, + normally defined in malloc.h. None of these are use in this malloc, + so setting them has no effect. But this malloc also supports other + options in mallopt. See below for details. Briefly, supported + parameters are as follows (listed defaults are for "typical" + configurations). + + Symbol param # default allowed param values + M_TRIM_THRESHOLD -1 2*1024*1024 any (MAX_SIZE_T disables) + M_GRANULARITY -2 page size any power of 2 >= page size + M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) +*/ +int dlmallopt(int, int); + +/* + malloc_footprint(); + Returns the number of bytes obtained from the system. The total + number of bytes allocated by malloc, realloc etc., is less than this + value. Unlike mallinfo, this function returns only a precomputed + result, so can be called frequently to monitor memory consumption. + Even if locks are otherwise defined, this function does not use them, + so results might not be up to date. +*/ +size_t dlmalloc_footprint(void); + +/* + malloc_max_footprint(); + Returns the maximum number of bytes obtained from the system. This + value will be greater than current footprint if deallocated space + has been reclaimed by the system. The peak number of bytes allocated + by malloc, realloc etc., is less than this value. Unlike mallinfo, + this function returns only a precomputed result, so can be called + frequently to monitor memory consumption. Even if locks are + otherwise defined, this function does not use them, so results might + not be up to date. +*/ +size_t dlmalloc_max_footprint(void); + +#if !NO_MALLINFO +/* + mallinfo() + Returns (by copy) a struct containing various summary statistics: + + arena: current total non-mmapped bytes allocated from system + ordblks: the number of free chunks + smblks: always zero. + hblks: current number of mmapped regions + hblkhd: total bytes held in mmapped regions + usmblks: the maximum total allocated space. This will be greater + than current total if trimming has occurred. + fsmblks: always zero + uordblks: current total allocated space (normal or mmapped) + fordblks: total free space + keepcost: the maximum number of bytes that could ideally be released + back to system via malloc_trim. ("ideally" means that + it ignores page restrictions etc.) + + Because these fields are ints, but internal bookkeeping may + be kept as longs, the reported values may wrap around zero and + thus be inaccurate. +*/ +struct mallinfo dlmallinfo(void); +#endif /* NO_MALLINFO */ + +/* + independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); + + independent_calloc is similar to calloc, but instead of returning a + single cleared space, it returns an array of pointers to n_elements + independent elements that can hold contents of size elem_size, each + of which starts out cleared, and can be independently freed, + realloc'ed etc. The elements are guaranteed to be adjacently + allocated (this is not guaranteed to occur with multiple callocs or + mallocs), which may also improve cache locality in some + applications. + + The "chunks" argument is optional (i.e., may be null, which is + probably the most typical usage). If it is null, the returned array + is itself dynamically allocated and should also be freed when it is + no longer needed. Otherwise, the chunks array must be of at least + n_elements in length. It is filled in with the pointers to the + chunks. + + In either case, independent_calloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and "chunks" + is null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be individually freed when it is no longer + needed. If you'd like to instead be able to free all at once, you + should instead use regular calloc and assign pointers into this + space to represent elements. (In this case though, you cannot + independently free elements.) + + independent_calloc simplifies and speeds up implementations of many + kinds of pools. It may also be useful when constructing large data + structures that initially have a fixed number of fixed-sized nodes, + but the number is not known at compile time, and some of the nodes + may later need to be freed. For example: + + struct Node { int item; struct Node* next; }; + + struct Node* build_list() { + struct Node** pool; + int n = read_number_of_nodes_needed(); + if (n <= 0) return 0; + pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); + if (pool == 0) die(); + // organize into a linked list... + struct Node* first = pool[0]; + for (i = 0; i < n-1; ++i) + pool[i]->next = pool[i+1]; + free(pool); // Can now free the array (or not, if it is needed later) + return first; + } +*/ +void** dlindependent_calloc(size_t, size_t, void**); + +/* + independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); + + independent_comalloc allocates, all at once, a set of n_elements + chunks with sizes indicated in the "sizes" array. It returns + an array of pointers to these elements, each of which can be + independently freed, realloc'ed etc. The elements are guaranteed to + be adjacently allocated (this is not guaranteed to occur with + multiple callocs or mallocs), which may also improve cache locality + in some applications. + + The "chunks" argument is optional (i.e., may be null). If it is null + the returned array is itself dynamically allocated and should also + be freed when it is no longer needed. Otherwise, the chunks array + must be of at least n_elements in length. It is filled in with the + pointers to the chunks. + + In either case, independent_comalloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and chunks is + null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be individually freed when it is no longer + needed. If you'd like to instead be able to free all at once, you + should instead use a single regular malloc, and assign pointers at + particular offsets in the aggregate space. (In this case though, you + cannot independently free elements.) + + independent_comallac differs from independent_calloc in that each + element may have a different size, and also that it does not + automatically clear elements. + + independent_comalloc can be used to speed up allocation in cases + where several structs or objects must always be allocated at the + same time. For example: + + struct Head { ... } + struct Foot { ... } + + void send_message(char* msg) { + int msglen = strlen(msg); + size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; + void* chunks[3]; + if (independent_comalloc(3, sizes, chunks) == 0) + die(); + struct Head* head = (struct Head*)(chunks[0]); + char* body = (char*)(chunks[1]); + struct Foot* foot = (struct Foot*)(chunks[2]); + // ... + } + + In general though, independent_comalloc is worth using only for + larger values of n_elements. For small values, you probably won't + detect enough difference from series of malloc calls to bother. + + Overuse of independent_comalloc can increase overall memory usage, + since it cannot reuse existing noncontiguous small chunks that + might be available for some of the elements. +*/ +void** dlindependent_comalloc(size_t, size_t*, void**); + + +/* + pvalloc(size_t n); + Equivalent to valloc(minimum-page-that-holds(n)), that is, + round up n to nearest pagesize. + */ +void* dlpvalloc(size_t); + +/* + malloc_trim(size_t pad); + + If possible, gives memory back to the system (via negative arguments + to sbrk) if there is unused memory at the `high' end of the malloc + pool or in unused MMAP segments. You can call this after freeing + large blocks of memory to potentially reduce the system-level memory + requirements of a program. However, it cannot guarantee to reduce + memory. Under some allocation patterns, some large free blocks of + memory will be locked between two used chunks, so they cannot be + given back to the system. + + The `pad' argument to malloc_trim represents the amount of free + trailing space to leave untrimmed. If this argument is zero, only + the minimum amount of memory to maintain internal data structures + will be left. Non-zero arguments can be supplied to maintain enough + trailing space to service future expected allocations without having + to re-obtain memory from the system. + + Malloc_trim returns 1 if it actually released any memory, else 0. +*/ +int dlmalloc_trim(size_t); + +/* + malloc_usable_size(void* p); + + Returns the number of bytes you can actually use in + an allocated chunk, which may be more than you requested (although + often not) due to alignment and minimum size constraints. + You can use this many bytes without worrying about + overwriting other allocated objects. This is not a particularly great + programming practice. malloc_usable_size can be more useful in + debugging and assertions, for example: + + p = malloc(n); + assert(malloc_usable_size(p) >= 256); +*/ +size_t dlmalloc_usable_size(void*); + +/* + malloc_stats(); + Prints on stderr the amount of space obtained from the system (both + via sbrk and mmap), the maximum amount (which may be more than + current if malloc_trim and/or munmap got called), and the current + number of bytes allocated via malloc (or realloc, etc) but not yet + freed. Note that this is the number of bytes allocated, not the + number requested. It will be larger than the number requested + because of alignment and bookkeeping overhead. Because it includes + alignment wastage as being in use, this figure may be greater than + zero even when no user-level chunks are allocated. + + The reported current and maximum system memory can be inaccurate if + a program makes other calls to system memory allocation functions + (normally sbrk) outside of malloc. + + malloc_stats prints only the most commonly interesting statistics. + More information can be obtained by calling mallinfo. +*/ +void dlmalloc_stats(void); + +#endif /* ONLY_MSPACES */ + +#if MSPACES + +/* + mspace is an opaque type representing an independent + region of space that supports mspace_malloc, etc. +*/ +typedef void* mspace; + +/* + create_mspace creates and returns a new independent space with the + given initial capacity, or, if 0, the default granularity size. It + returns null if there is no system memory available to create the + space. If argument locked is non-zero, the space uses a separate + lock to control access. The capacity of the space will grow + dynamically as needed to service mspace_malloc requests. You can + control the sizes of incremental increases of this space by + compiling with a different DEFAULT_GRANULARITY or dynamically + setting with mallopt(M_GRANULARITY, value). +*/ +mspace create_mspace(size_t capacity, int locked); + +/* + destroy_mspace destroys the given space, and attempts to return all + of its memory back to the system, returning the total number of + bytes freed. After destruction, the results of access to all memory + used by the space become undefined. +*/ +size_t destroy_mspace(mspace msp); + +/* + create_mspace_with_base uses the memory supplied as the initial base + of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this + space is used for bookkeeping, so the capacity must be at least this + large. (Otherwise 0 is returned.) When this initial space is + exhausted, additional memory will be obtained from the system. + Destroying this space will deallocate all additionally allocated + space (if possible) but not the initial base. +*/ +mspace create_mspace_with_base(void* base, size_t capacity, int locked); + +/* + mspace_malloc behaves as malloc, but operates within + the given space. +*/ +void* mspace_malloc(mspace msp, size_t bytes); + +/* + mspace_free behaves as free, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_free is not actually needed. + free may be called instead of mspace_free because freed chunks from + any space are handled by their originating spaces. +*/ +void mspace_free(mspace msp, void* mem); + +/* + mspace_realloc behaves as realloc, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_realloc is not actually + needed. realloc may be called instead of mspace_realloc because + realloced chunks from any space are handled by their originating + spaces. +*/ +void* mspace_realloc(mspace msp, void* mem, size_t newsize); + +/* + mspace_calloc behaves as calloc, but operates within + the given space. +*/ +void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); + +/* + mspace_memalign behaves as memalign, but operates within + the given space. +*/ +void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); + +/* + mspace_independent_calloc behaves as independent_calloc, but + operates within the given space. +*/ +void** mspace_independent_calloc(mspace msp, size_t n_elements, + size_t elem_size, void* chunks[]); + +/* + mspace_independent_comalloc behaves as independent_comalloc, but + operates within the given space. +*/ +void** mspace_independent_comalloc(mspace msp, size_t n_elements, + size_t sizes[], void* chunks[]); + +/* + mspace_footprint() returns the number of bytes obtained from the + system for this space. +*/ +size_t mspace_footprint(mspace msp); + +/* + mspace_max_footprint() returns the peak number of bytes obtained from the + system for this space. +*/ +size_t mspace_max_footprint(mspace msp); + + +#if !NO_MALLINFO +/* + mspace_mallinfo behaves as mallinfo, but reports properties of + the given space. +*/ +struct mallinfo mspace_mallinfo(mspace msp); +#endif /* NO_MALLINFO */ + +/* + mspace_malloc_stats behaves as malloc_stats, but reports + properties of the given space. +*/ +void mspace_malloc_stats(mspace msp); + +/* + mspace_trim behaves as malloc_trim, but + operates within the given space. +*/ +int mspace_trim(mspace msp, size_t pad); + +/* + An alias for mallopt. +*/ +int mspace_mallopt(int, int); + +#endif /* MSPACES */ + +#ifdef __cplusplus +}; /* end of extern "C" */ +#endif /* __cplusplus */ + +/* + ======================================================================== + To make a fully customizable malloc.h header file, cut everything + above this line, put into file malloc.h, edit to suit, and #include it + on the next line, as well as in programs that use this malloc. + ======================================================================== +*/ + +/* #include "malloc.h" */ + +/*------------------------------ internal #includes ---------------------- */ + +#ifdef _MSC_VER +#pragma warning( disable : 4146 ) /* no "unsigned" warnings */ +#endif /* _MSC_VER */ + +#include /* for printing in malloc_stats */ + +#ifndef LACKS_ERRNO_H +#include /* for MALLOC_FAILURE_ACTION */ +#endif /* LACKS_ERRNO_H */ +#if FOOTERS +#include /* for magic initialization */ +#endif /* FOOTERS */ +#ifndef LACKS_STDLIB_H +#include /* for abort() */ +#endif /* LACKS_STDLIB_H */ +#ifdef DEBUG +#if ABORT_ON_ASSERT_FAILURE +#define assert(x) if(!(x)) ABORT +#else /* ABORT_ON_ASSERT_FAILURE */ +#include +#endif /* ABORT_ON_ASSERT_FAILURE */ +#else /* DEBUG */ +#define assert(x) +#endif /* DEBUG */ +#ifndef LACKS_STRING_H +#include /* for memset etc */ +#endif /* LACKS_STRING_H */ +#if USE_BUILTIN_FFS +#ifndef LACKS_STRINGS_H +#include /* for ffs */ +#endif /* LACKS_STRINGS_H */ +#endif /* USE_BUILTIN_FFS */ +#if HAVE_MMAP +#ifndef LACKS_SYS_MMAN_H +#include /* for mmap */ +#endif /* LACKS_SYS_MMAN_H */ +#ifndef LACKS_FCNTL_H +#include +#endif /* LACKS_FCNTL_H */ +#endif /* HAVE_MMAP */ +#if HAVE_MORECORE +#ifndef LACKS_UNISTD_H +#include /* for sbrk */ +#else /* LACKS_UNISTD_H */ +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) +extern void* sbrk(ptrdiff_t); +#endif /* FreeBSD etc */ +#endif /* LACKS_UNISTD_H */ +#endif /* HAVE_MMAP */ + +#ifndef WIN32 +#ifndef malloc_getpagesize +# ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ +# ifndef _SC_PAGE_SIZE +# define _SC_PAGE_SIZE _SC_PAGESIZE +# endif +# endif +# ifdef _SC_PAGE_SIZE +# define malloc_getpagesize sysconf(_SC_PAGE_SIZE) +# else +# if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) + extern size_t getpagesize(); +# define malloc_getpagesize getpagesize() +# else +# ifdef WIN32 /* use supplied emulation of getpagesize */ +# define malloc_getpagesize getpagesize() +# else +# ifndef LACKS_SYS_PARAM_H +# include +# endif +# ifdef EXEC_PAGESIZE +# define malloc_getpagesize EXEC_PAGESIZE +# else +# ifdef NBPG +# ifndef CLSIZE +# define malloc_getpagesize NBPG +# else +# define malloc_getpagesize (NBPG * CLSIZE) +# endif +# else +# ifdef NBPC +# define malloc_getpagesize NBPC +# else +# ifdef PAGESIZE +# define malloc_getpagesize PAGESIZE +# else /* just guess */ +# define malloc_getpagesize ((size_t)4096U) +# endif +# endif +# endif +# endif +# endif +# endif +# endif +#endif +#endif + +/* ------------------- size_t and alignment properties -------------------- */ + +/* The byte and bit size of a size_t */ +#define SIZE_T_SIZE (sizeof(size_t)) +#define SIZE_T_BITSIZE (sizeof(size_t) << 3) + +/* Some constants coerced to size_t */ +/* Annoying but necessary to avoid errors on some platforms */ +#define SIZE_T_ZERO ((size_t)0) +#define SIZE_T_ONE ((size_t)1) +#define SIZE_T_TWO ((size_t)2) +#define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) +#define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) +#define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) +#define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) + +/* The bit mask value corresponding to MALLOC_ALIGNMENT */ +#define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) + +/* True if address a has acceptable alignment */ +#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) + +/* the number of bytes to offset an address to align it */ +#define align_offset(A)\ + ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ + ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) + +/* -------------------------- MMAP preliminaries ------------------------- */ + +/* + If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and + checks to fail so compiler optimizer can delete code rather than + using so many "#if"s. +*/ + + +/* MORECORE and MMAP must return MFAIL on failure */ +#define MFAIL ((void*)(MAX_SIZE_T)) +#define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ + +#if !HAVE_MMAP +#define IS_MMAPPED_BIT (SIZE_T_ZERO) +#define USE_MMAP_BIT (SIZE_T_ZERO) +#define CALL_MMAP(s) MFAIL +#define CALL_MUNMAP(a, s) (-1) +#define DIRECT_MMAP(s) MFAIL + +#else /* HAVE_MMAP */ +#define IS_MMAPPED_BIT (SIZE_T_ONE) +#define USE_MMAP_BIT (SIZE_T_ONE) + +#if !defined(WIN32) && !defined (__OS2__) +#define CALL_MUNMAP(a, s) munmap((a), (s)) +#define MMAP_PROT (PROT_READ|PROT_WRITE) +#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) +#define MAP_ANONYMOUS MAP_ANON +#endif /* MAP_ANON */ +#ifdef MAP_ANONYMOUS +#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) +#define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) +#else /* MAP_ANONYMOUS */ +/* + Nearly all versions of mmap support MAP_ANONYMOUS, so the following + is unlikely to be needed, but is supplied just in case. +*/ +#define MMAP_FLAGS (MAP_PRIVATE) +static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ +#define CALL_MMAP(s) ((dev_zero_fd < 0) ? \ + (dev_zero_fd = open("/dev/zero", O_RDWR), \ + mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ + mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) +#endif /* MAP_ANONYMOUS */ + +#define DIRECT_MMAP(s) CALL_MMAP(s) + +#elif defined(__OS2__) + +/* OS/2 MMAP via DosAllocMem */ +static void* os2mmap(size_t size) { + void* ptr; + if (DosAllocMem(&ptr, size, OBJ_ANY|PAG_COMMIT|PAG_READ|PAG_WRITE) && + DosAllocMem(&ptr, size, PAG_COMMIT|PAG_READ|PAG_WRITE)) + return MFAIL; + return ptr; +} + +#define os2direct_mmap(n) os2mmap(n) + +/* This function supports releasing coalesed segments */ +static int os2munmap(void* ptr, size_t size) { + while (size) { + ULONG ulSize = size; + ULONG ulFlags = 0; + if (DosQueryMem(ptr, &ulSize, &ulFlags) != 0) + return -1; + if ((ulFlags & PAG_BASE) == 0 ||(ulFlags & PAG_COMMIT) == 0 || + ulSize > size) + return -1; + if (DosFreeMem(ptr) != 0) + return -1; + ptr = ( void * ) ( ( char * ) ptr + ulSize ); + size -= ulSize; + } + return 0; +} + +#define CALL_MMAP(s) os2mmap(s) +#define CALL_MUNMAP(a, s) os2munmap((a), (s)) +#define DIRECT_MMAP(s) os2direct_mmap(s) + +#else /* WIN32 */ + +/* Win32 MMAP via VirtualAlloc */ +static void* win32mmap(size_t size) { + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE); + return (ptr != 0)? ptr: MFAIL; +} + +/* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ +static void* win32direct_mmap(size_t size) { + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, + PAGE_EXECUTE_READWRITE); + return (ptr != 0)? ptr: MFAIL; +} + +/* This function supports releasing coalesed segments */ +static int win32munmap(void* ptr, size_t size) { + MEMORY_BASIC_INFORMATION minfo; + char* cptr = ptr; + while (size) { + if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) + return -1; + if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || + minfo.State != MEM_COMMIT || minfo.RegionSize > size) + return -1; + if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) + return -1; + cptr += minfo.RegionSize; + size -= minfo.RegionSize; + } + return 0; +} + +#define CALL_MMAP(s) win32mmap(s) +#define CALL_MUNMAP(a, s) win32munmap((a), (s)) +#define DIRECT_MMAP(s) win32direct_mmap(s) +#endif /* WIN32 */ +#endif /* HAVE_MMAP */ + +#if HAVE_MMAP && HAVE_MREMAP +#define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) +#else /* HAVE_MMAP && HAVE_MREMAP */ +#define CALL_MREMAP(addr, osz, nsz, mv) MFAIL +#endif /* HAVE_MMAP && HAVE_MREMAP */ + +#if HAVE_MORECORE +#define CALL_MORECORE(S) MORECORE(S) +#else /* HAVE_MORECORE */ +#define CALL_MORECORE(S) MFAIL +#endif /* HAVE_MORECORE */ + +/* mstate bit set if contiguous morecore disabled or failed */ +#define USE_NONCONTIGUOUS_BIT (4U) + +/* segment bit set in create_mspace_with_base */ +#define EXTERN_BIT (8U) + + +/* --------------------------- Lock preliminaries ------------------------ */ + +#if USE_LOCKS + +/* + When locks are defined, there are up to two global locks: + + * If HAVE_MORECORE, morecore_mutex protects sequences of calls to + MORECORE. In many cases sys_alloc requires two calls, that should + not be interleaved with calls by other threads. This does not + protect against direct calls to MORECORE by other threads not + using this lock, so there is still code to cope the best we can on + interference. + + * magic_init_mutex ensures that mparams.magic and other + unique mparams values are initialized only once. +*/ + +#if !defined(WIN32) && !defined(__OS2__) +/* By default use posix locks */ +#include +#define MLOCK_T pthread_mutex_t +#define INITIAL_LOCK(l) pthread_mutex_init(l, NULL) +#define ACQUIRE_LOCK(l) pthread_mutex_lock(l) +#define RELEASE_LOCK(l) pthread_mutex_unlock(l) + +#if HAVE_MORECORE +static MLOCK_T morecore_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif /* HAVE_MORECORE */ + +static MLOCK_T magic_init_mutex = PTHREAD_MUTEX_INITIALIZER; + +#elif defined(__OS2__) +#define MLOCK_T HMTX +#define INITIAL_LOCK(l) DosCreateMutexSem(0, l, 0, FALSE) +#define ACQUIRE_LOCK(l) DosRequestMutexSem(*l, SEM_INDEFINITE_WAIT) +#define RELEASE_LOCK(l) DosReleaseMutexSem(*l) +#if HAVE_MORECORE +static MLOCK_T morecore_mutex; +#endif /* HAVE_MORECORE */ +static MLOCK_T magic_init_mutex; + +#else /* WIN32 */ +/* + Because lock-protected regions have bounded times, and there + are no recursive lock calls, we can use simple spinlocks. +*/ + +#define MLOCK_T long +static int win32_acquire_lock (MLOCK_T *sl) { + for (;;) { +#ifdef InterlockedCompareExchangePointer + if (!InterlockedCompareExchange(sl, 1, 0)) + return 0; +#else /* Use older void* version */ + if (!InterlockedCompareExchange((void**)sl, (void*)1, (void*)0)) + return 0; +#endif /* InterlockedCompareExchangePointer */ + Sleep (0); + } +} + +static void win32_release_lock (MLOCK_T *sl) { + InterlockedExchange (sl, 0); +} + +#define INITIAL_LOCK(l) *(l)=0 +#define ACQUIRE_LOCK(l) win32_acquire_lock(l) +#define RELEASE_LOCK(l) win32_release_lock(l) +#if HAVE_MORECORE +static MLOCK_T morecore_mutex; +#endif /* HAVE_MORECORE */ +static MLOCK_T magic_init_mutex; +#endif /* WIN32 */ + +#define USE_LOCK_BIT (2U) +#else /* USE_LOCKS */ +#define USE_LOCK_BIT (0U) +#define INITIAL_LOCK(l) +#endif /* USE_LOCKS */ + +#if USE_LOCKS && HAVE_MORECORE +#define ACQUIRE_MORECORE_LOCK() ACQUIRE_LOCK(&morecore_mutex); +#define RELEASE_MORECORE_LOCK() RELEASE_LOCK(&morecore_mutex); +#else /* USE_LOCKS && HAVE_MORECORE */ +#define ACQUIRE_MORECORE_LOCK() +#define RELEASE_MORECORE_LOCK() +#endif /* USE_LOCKS && HAVE_MORECORE */ + +#if USE_LOCKS +#define ACQUIRE_MAGIC_INIT_LOCK() ACQUIRE_LOCK(&magic_init_mutex); +#define RELEASE_MAGIC_INIT_LOCK() RELEASE_LOCK(&magic_init_mutex); +#else /* USE_LOCKS */ +#define ACQUIRE_MAGIC_INIT_LOCK() +#define RELEASE_MAGIC_INIT_LOCK() +#endif /* USE_LOCKS */ + + +/* ----------------------- Chunk representations ------------------------ */ + +/* + (The following includes lightly edited explanations by Colin Plumb.) + + The malloc_chunk declaration below is misleading (but accurate and + necessary). It declares a "view" into memory allowing access to + necessary fields at known offsets from a given base. + + Chunks of memory are maintained using a `boundary tag' method as + originally described by Knuth. (See the paper by Paul Wilson + ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such + techniques.) Sizes of free chunks are stored both in the front of + each chunk and at the end. This makes consolidating fragmented + chunks into bigger chunks fast. The head fields also hold bits + representing whether chunks are free or in use. + + Here are some pictures to make it clearer. They are "exploded" to + show that the state of a chunk can be thought of as extending from + the high 31 bits of the head field of its header through the + prev_foot and PINUSE_BIT bit of the following chunk header. + + A chunk that's in use looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk (if P = 1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 1| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- -+ + | : + +- size - sizeof(size_t) available payload bytes -+ + : | + chunk-> +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| + | Size of next chunk (may or may not be in use) | +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + And if it's free, it looks like this: + + chunk-> +- -+ + | User payload (must be in use, or we would have merged!) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 0| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prev pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | : + +- size - sizeof(struct chunk) unused bytes -+ + : | + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| + | Size of next chunk (must be in use, or we would have merged)| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | : + +- User payload -+ + : | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0| + +-+ + Note that since we always merge adjacent free chunks, the chunks + adjacent to a free chunk must be in use. + + Given a pointer to a chunk (which can be derived trivially from the + payload pointer) we can, in O(1) time, find out whether the adjacent + chunks are free, and if so, unlink them from the lists that they + are on and merge them with the current chunk. + + Chunks always begin on even word boundaries, so the mem portion + (which is returned to the user) is also on an even word boundary, and + thus at least double-word aligned. + + The P (PINUSE_BIT) bit, stored in the unused low-order bit of the + chunk size (which is always a multiple of two words), is an in-use + bit for the *previous* chunk. If that bit is *clear*, then the + word before the current chunk size contains the previous chunk + size, and can be used to find the front of the previous chunk. + The very first chunk allocated always has this bit set, preventing + access to non-existent (or non-owned) memory. If pinuse is set for + any given chunk, then you CANNOT determine the size of the + previous chunk, and might even get a memory addressing fault when + trying to do so. + + The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of + the chunk size redundantly records whether the current chunk is + inuse. This redundancy enables usage checks within free and realloc, + and reduces indirection when freeing and consolidating chunks. + + Each freshly allocated chunk must have both cinuse and pinuse set. + That is, each allocated chunk borders either a previously allocated + and still in-use chunk, or the base of its memory arena. This is + ensured by making all allocations from the the `lowest' part of any + found chunk. Further, no free chunk physically borders another one, + so each free chunk is known to be preceded and followed by either + inuse chunks or the ends of memory. + + Note that the `foot' of the current chunk is actually represented + as the prev_foot of the NEXT chunk. This makes it easier to + deal with alignments etc but can be very confusing when trying + to extend or adapt this code. + + The exceptions to all this are + + 1. The special chunk `top' is the top-most available chunk (i.e., + the one bordering the end of available memory). It is treated + specially. Top is never included in any bin, is used only if + no other chunk is available, and is released back to the + system if it is very large (see M_TRIM_THRESHOLD). In effect, + the top chunk is treated as larger (and thus less well + fitting) than any other available chunk. The top chunk + doesn't update its trailing size field since there is no next + contiguous chunk that would have to index off it. However, + space is still allocated for it (TOP_FOOT_SIZE) to enable + separation or merging when space is extended. + + 3. Chunks allocated via mmap, which have the lowest-order bit + (IS_MMAPPED_BIT) set in their prev_foot fields, and do not set + PINUSE_BIT in their head fields. Because they are allocated + one-by-one, each must carry its own prev_foot field, which is + also used to hold the offset this chunk has within its mmapped + region, which is needed to preserve alignment. Each mmapped + chunk is trailed by the first two fields of a fake next-chunk + for sake of usage checks. + +*/ + +struct malloc_chunk { + size_t prev_foot; /* Size of previous chunk (if free). */ + size_t head; /* Size and inuse bits. */ + struct malloc_chunk* fd; /* double links -- used only if free. */ + struct malloc_chunk* bk; +}; + +typedef struct malloc_chunk mchunk; +typedef struct malloc_chunk* mchunkptr; +typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ +typedef size_t bindex_t; /* Described below */ +typedef unsigned int binmap_t; /* Described below */ +typedef unsigned int flag_t; /* The type of various bit flag sets */ + +/* ------------------- Chunks sizes and alignments ----------------------- */ + +#define MCHUNK_SIZE (sizeof(mchunk)) + +#if FOOTERS +#define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) +#else /* FOOTERS */ +#define CHUNK_OVERHEAD (SIZE_T_SIZE) +#endif /* FOOTERS */ + +/* MMapped chunks need a second word of overhead ... */ +#define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) +/* ... and additional padding for fake next-chunk at foot */ +#define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) + +/* The smallest size we can malloc is an aligned minimal chunk */ +#define MIN_CHUNK_SIZE\ + ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) + +/* conversion from malloc headers to user pointers, and back */ +#define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) +#define mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) +/* chunk associated with aligned address A */ +#define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) + +/* Bounds on request (not chunk) sizes. */ +#define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) +#define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) + +/* pad request bytes into a usable size */ +#define pad_request(req) \ + (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) + +/* pad request, checking for minimum (but not maximum) */ +#define request2size(req) \ + (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) + + +/* ------------------ Operations on head and foot fields ----------------- */ + +/* + The head field of a chunk is or'ed with PINUSE_BIT when previous + adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in + use. If the chunk was obtained with mmap, the prev_foot field has + IS_MMAPPED_BIT set, otherwise holding the offset of the base of the + mmapped region to the base of the chunk. +*/ + +#define PINUSE_BIT (SIZE_T_ONE) +#define CINUSE_BIT (SIZE_T_TWO) +#define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) + +/* Head value for fenceposts */ +#define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) + +/* extraction of fields from head words */ +#define cinuse(p) ((p)->head & CINUSE_BIT) +#define pinuse(p) ((p)->head & PINUSE_BIT) +#define chunksize(p) ((p)->head & ~(INUSE_BITS)) + +#define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) +#define clear_cinuse(p) ((p)->head &= ~CINUSE_BIT) + +/* Treat space at ptr +/- offset as a chunk */ +#define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) +#define chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) + +/* Ptr to next or previous physical malloc_chunk. */ +#define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~INUSE_BITS))) +#define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) + +/* extract next chunk's pinuse bit */ +#define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) + +/* Get/set size at footer */ +#define get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) +#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) + +/* Set size, pinuse bit, and foot */ +#define set_size_and_pinuse_of_free_chunk(p, s)\ + ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) + +/* Set size, pinuse bit, foot, and clear next pinuse */ +#define set_free_with_pinuse(p, s, n)\ + (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) + +#define is_mmapped(p)\ + (!((p)->head & PINUSE_BIT) && ((p)->prev_foot & IS_MMAPPED_BIT)) + +/* Get the internal overhead associated with chunk p */ +#define overhead_for(p)\ + (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) + +/* Return true if malloced space is not necessarily cleared */ +#if MMAP_CLEARS +#define calloc_must_clear(p) (!is_mmapped(p)) +#else /* MMAP_CLEARS */ +#define calloc_must_clear(p) (1) +#endif /* MMAP_CLEARS */ + +/* ---------------------- Overlaid data structures ----------------------- */ + +/* + When chunks are not in use, they are treated as nodes of either + lists or trees. + + "Small" chunks are stored in circular doubly-linked lists, and look + like this: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space (may be 0 bytes long) . + . . + . | +nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Larger chunks are kept in a form of bitwise digital trees (aka + tries) keyed on chunksizes. Because malloc_tree_chunks are only for + free chunks greater than 256 bytes, their size doesn't impose any + constraints on user chunk sizes. Each node looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to left child (child[0]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to right child (child[1]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to parent | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | bin index of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space . + . | +nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Each tree holding treenodes is a tree of unique chunk sizes. Chunks + of the same size are arranged in a circularly-linked list, with only + the oldest chunk (the next to be used, in our FIFO ordering) + actually in the tree. (Tree members are distinguished by a non-null + parent pointer.) If a chunk with the same size an an existing node + is inserted, it is linked off the existing node using pointers that + work in the same way as fd/bk pointers of small chunks. + + Each tree contains a power of 2 sized range of chunk sizes (the + smallest is 0x100 <= x < 0x180), which is is divided in half at each + tree level, with the chunks in the smaller half of the range (0x100 + <= x < 0x140 for the top nose) in the left subtree and the larger + half (0x140 <= x < 0x180) in the right subtree. This is, of course, + done by inspecting individual bits. + + Using these rules, each node's left subtree contains all smaller + sizes than its right subtree. However, the node at the root of each + subtree has no particular ordering relationship to either. (The + dividing line between the subtree sizes is based on trie relation.) + If we remove the last chunk of a given size from the interior of the + tree, we need to replace it with a leaf node. The tree ordering + rules permit a node to be replaced by any leaf below it. + + The smallest chunk in a tree (a common operation in a best-fit + allocator) can be found by walking a path to the leftmost leaf in + the tree. Unlike a usual binary tree, where we follow left child + pointers until we reach a null, here we follow the right child + pointer any time the left one is null, until we reach a leaf with + both child pointers null. The smallest chunk in the tree will be + somewhere along that path. + + The worst case number of steps to add, find, or remove a node is + bounded by the number of bits differentiating chunks within + bins. Under current bin calculations, this ranges from 6 up to 21 + (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case + is of course much better. +*/ + +struct malloc_tree_chunk { + /* The first four fields must be compatible with malloc_chunk */ + size_t prev_foot; + size_t head; + struct malloc_tree_chunk* fd; + struct malloc_tree_chunk* bk; + + struct malloc_tree_chunk* child[2]; + struct malloc_tree_chunk* parent; + bindex_t index; +}; + +typedef struct malloc_tree_chunk tchunk; +typedef struct malloc_tree_chunk* tchunkptr; +typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ + +/* A little helper macro for trees */ +#define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) + +/* ----------------------------- Segments -------------------------------- */ + +/* + Each malloc space may include non-contiguous segments, held in a + list headed by an embedded malloc_segment record representing the + top-most space. Segments also include flags holding properties of + the space. Large chunks that are directly allocated by mmap are not + included in this list. They are instead independently created and + destroyed without otherwise keeping track of them. + + Segment management mainly comes into play for spaces allocated by + MMAP. Any call to MMAP might or might not return memory that is + adjacent to an existing segment. MORECORE normally contiguously + extends the current space, so this space is almost always adjacent, + which is simpler and faster to deal with. (This is why MORECORE is + used preferentially to MMAP when both are available -- see + sys_alloc.) When allocating using MMAP, we don't use any of the + hinting mechanisms (inconsistently) supported in various + implementations of unix mmap, or distinguish reserving from + committing memory. Instead, we just ask for space, and exploit + contiguity when we get it. It is probably possible to do + better than this on some systems, but no general scheme seems + to be significantly better. + + Management entails a simpler variant of the consolidation scheme + used for chunks to reduce fragmentation -- new adjacent memory is + normally prepended or appended to an existing segment. However, + there are limitations compared to chunk consolidation that mostly + reflect the fact that segment processing is relatively infrequent + (occurring only when getting memory from system) and that we + don't expect to have huge numbers of segments: + + * Segments are not indexed, so traversal requires linear scans. (It + would be possible to index these, but is not worth the extra + overhead and complexity for most programs on most platforms.) + * New segments are only appended to old ones when holding top-most + memory; if they cannot be prepended to others, they are held in + different segments. + + Except for the top-most segment of an mstate, each segment record + is kept at the tail of its segment. Segments are added by pushing + segment records onto the list headed by &mstate.seg for the + containing mstate. + + Segment flags control allocation/merge/deallocation policies: + * If EXTERN_BIT set, then we did not allocate this segment, + and so should not try to deallocate or merge with others. + (This currently holds only for the initial segment passed + into create_mspace_with_base.) + * If IS_MMAPPED_BIT set, the segment may be merged with + other surrounding mmapped segments and trimmed/de-allocated + using munmap. + * If neither bit is set, then the segment was obtained using + MORECORE so can be merged with surrounding MORECORE'd segments + and deallocated/trimmed using MORECORE with negative arguments. +*/ + +struct malloc_segment { + char* base; /* base address */ + size_t size; /* allocated size */ + struct malloc_segment* next; /* ptr to next segment */ +#if FFI_MMAP_EXEC_WRIT + /* The mmap magic is supposed to store the address of the executable + segment at the very end of the requested block. */ + +# define mmap_exec_offset(b,s) (*(ptrdiff_t*)((b)+(s)-sizeof(ptrdiff_t))) + + /* We can only merge segments if their corresponding executable + segments are at identical offsets. */ +# define check_segment_merge(S,b,s) \ + (mmap_exec_offset((b),(s)) == (S)->exec_offset) + +# define add_segment_exec_offset(p,S) ((char*)(p) + (S)->exec_offset) +# define sub_segment_exec_offset(p,S) ((char*)(p) - (S)->exec_offset) + + /* The removal of sflags only works with HAVE_MORECORE == 0. */ + +# define get_segment_flags(S) (IS_MMAPPED_BIT) +# define set_segment_flags(S,v) \ + (((v) != IS_MMAPPED_BIT) ? (ABORT, (v)) : \ + (((S)->exec_offset = \ + mmap_exec_offset((S)->base, (S)->size)), \ + (mmap_exec_offset((S)->base + (S)->exec_offset, (S)->size) != \ + (S)->exec_offset) ? (ABORT, (v)) : \ + (mmap_exec_offset((S)->base, (S)->size) = 0), (v))) + + /* We use an offset here, instead of a pointer, because then, when + base changes, we don't have to modify this. On architectures + with segmented addresses, this might not work. */ + ptrdiff_t exec_offset; +#else + +# define get_segment_flags(S) ((S)->sflags) +# define set_segment_flags(S,v) ((S)->sflags = (v)) +# define check_segment_merge(S,b,s) (1) + + flag_t sflags; /* mmap and extern flag */ +#endif +}; + +#define is_mmapped_segment(S) (get_segment_flags(S) & IS_MMAPPED_BIT) +#define is_extern_segment(S) (get_segment_flags(S) & EXTERN_BIT) + +typedef struct malloc_segment msegment; +typedef struct malloc_segment* msegmentptr; + +/* ---------------------------- malloc_state ----------------------------- */ + +/* + A malloc_state holds all of the bookkeeping for a space. + The main fields are: + + Top + The topmost chunk of the currently active segment. Its size is + cached in topsize. The actual size of topmost space is + topsize+TOP_FOOT_SIZE, which includes space reserved for adding + fenceposts and segment records if necessary when getting more + space from the system. The size at which to autotrim top is + cached from mparams in trim_check, except that it is disabled if + an autotrim fails. + + Designated victim (dv) + This is the preferred chunk for servicing small requests that + don't have exact fits. It is normally the chunk split off most + recently to service another small request. Its size is cached in + dvsize. The link fields of this chunk are not maintained since it + is not kept in a bin. + + SmallBins + An array of bin headers for free chunks. These bins hold chunks + with sizes less than MIN_LARGE_SIZE bytes. Each bin contains + chunks of all the same size, spaced 8 bytes apart. To simplify + use in double-linked lists, each bin header acts as a malloc_chunk + pointing to the real first node, if it exists (else pointing to + itself). This avoids special-casing for headers. But to avoid + waste, we allocate only the fd/bk pointers of bins, and then use + repositioning tricks to treat these as the fields of a chunk. + + TreeBins + Treebins are pointers to the roots of trees holding a range of + sizes. There are 2 equally spaced treebins for each power of two + from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything + larger. + + Bin maps + There is one bit map for small bins ("smallmap") and one for + treebins ("treemap). Each bin sets its bit when non-empty, and + clears the bit when empty. Bit operations are then used to avoid + bin-by-bin searching -- nearly all "search" is done without ever + looking at bins that won't be selected. The bit maps + conservatively use 32 bits per map word, even if on 64bit system. + For a good description of some of the bit-based techniques used + here, see Henry S. Warren Jr's book "Hacker's Delight" (and + supplement at http://hackersdelight.org/). Many of these are + intended to reduce the branchiness of paths through malloc etc, as + well as to reduce the number of memory locations read or written. + + Segments + A list of segments headed by an embedded malloc_segment record + representing the initial space. + + Address check support + The least_addr field is the least address ever obtained from + MORECORE or MMAP. Attempted frees and reallocs of any address less + than this are trapped (unless INSECURE is defined). + + Magic tag + A cross-check field that should always hold same value as mparams.magic. + + Flags + Bits recording whether to use MMAP, locks, or contiguous MORECORE + + Statistics + Each space keeps track of current and maximum system memory + obtained via MORECORE or MMAP. + + Locking + If USE_LOCKS is defined, the "mutex" lock is acquired and released + around every public call using this mspace. +*/ + +/* Bin types, widths and sizes */ +#define NSMALLBINS (32U) +#define NTREEBINS (32U) +#define SMALLBIN_SHIFT (3U) +#define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) +#define TREEBIN_SHIFT (8U) +#define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) +#define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) +#define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) + +struct malloc_state { + binmap_t smallmap; + binmap_t treemap; + size_t dvsize; + size_t topsize; + char* least_addr; + mchunkptr dv; + mchunkptr top; + size_t trim_check; + size_t magic; + mchunkptr smallbins[(NSMALLBINS+1)*2]; + tbinptr treebins[NTREEBINS]; + size_t footprint; + size_t max_footprint; + flag_t mflags; +#if USE_LOCKS + MLOCK_T mutex; /* locate lock among fields that rarely change */ +#endif /* USE_LOCKS */ + msegment seg; +}; + +typedef struct malloc_state* mstate; + +/* ------------- Global malloc_state and malloc_params ------------------- */ + +/* + malloc_params holds global properties, including those that can be + dynamically set using mallopt. There is a single instance, mparams, + initialized in init_mparams. +*/ + +struct malloc_params { + size_t magic; + size_t page_size; + size_t granularity; + size_t mmap_threshold; + size_t trim_threshold; + flag_t default_mflags; +}; + +static struct malloc_params mparams; + +/* The global malloc_state used for all non-"mspace" calls */ +static struct malloc_state _gm_; +#define gm (&_gm_) +#define is_global(M) ((M) == &_gm_) +#define is_initialized(M) ((M)->top != 0) + +/* -------------------------- system alloc setup ------------------------- */ + +/* Operations on mflags */ + +#define use_lock(M) ((M)->mflags & USE_LOCK_BIT) +#define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) +#define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) + +#define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) +#define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) +#define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) + +#define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) +#define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) + +#define set_lock(M,L)\ + ((M)->mflags = (L)?\ + ((M)->mflags | USE_LOCK_BIT) :\ + ((M)->mflags & ~USE_LOCK_BIT)) + +/* page-align a size */ +#define page_align(S)\ + (((S) + (mparams.page_size)) & ~(mparams.page_size - SIZE_T_ONE)) + +/* granularity-align a size */ +#define granularity_align(S)\ + (((S) + (mparams.granularity)) & ~(mparams.granularity - SIZE_T_ONE)) + +#define is_page_aligned(S)\ + (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) +#define is_granularity_aligned(S)\ + (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) + +/* True if segment S holds address A */ +#define segment_holds(S, A)\ + ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) + +/* Return segment holding given address */ +static msegmentptr segment_holding(mstate m, char* addr) { + msegmentptr sp = &m->seg; + for (;;) { + if (addr >= sp->base && addr < sp->base + sp->size) + return sp; + if ((sp = sp->next) == 0) + return 0; + } +} + +/* Return true if segment contains a segment link */ +static int has_segment_link(mstate m, msegmentptr ss) { + msegmentptr sp = &m->seg; + for (;;) { + if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) + return 1; + if ((sp = sp->next) == 0) + return 0; + } +} + +#ifndef MORECORE_CANNOT_TRIM +#define should_trim(M,s) ((s) > (M)->trim_check) +#else /* MORECORE_CANNOT_TRIM */ +#define should_trim(M,s) (0) +#endif /* MORECORE_CANNOT_TRIM */ + +/* + TOP_FOOT_SIZE is padding at the end of a segment, including space + that may be needed to place segment records and fenceposts when new + noncontiguous segments are added. +*/ +#define TOP_FOOT_SIZE\ + (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) + + +/* ------------------------------- Hooks -------------------------------- */ + +/* + PREACTION should be defined to return 0 on success, and nonzero on + failure. If you are not using locking, you can redefine these to do + anything you like. +*/ + +#if USE_LOCKS + +/* Ensure locks are initialized */ +#define GLOBALLY_INITIALIZE() (mparams.page_size == 0 && init_mparams()) + +#define PREACTION(M) ((GLOBALLY_INITIALIZE() || use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) +#define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } +#else /* USE_LOCKS */ + +#ifndef PREACTION +#define PREACTION(M) (0) +#endif /* PREACTION */ + +#ifndef POSTACTION +#define POSTACTION(M) +#endif /* POSTACTION */ + +#endif /* USE_LOCKS */ + +/* + CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. + USAGE_ERROR_ACTION is triggered on detected bad frees and + reallocs. The argument p is an address that might have triggered the + fault. It is ignored by the two predefined actions, but might be + useful in custom actions that try to help diagnose errors. +*/ + +#if PROCEED_ON_ERROR + +/* A count of the number of corruption errors causing resets */ +int malloc_corruption_error_count; + +/* default corruption action */ +static void reset_on_error(mstate m); + +#define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) +#define USAGE_ERROR_ACTION(m, p) + +#else /* PROCEED_ON_ERROR */ + +#ifndef CORRUPTION_ERROR_ACTION +#define CORRUPTION_ERROR_ACTION(m) ABORT +#endif /* CORRUPTION_ERROR_ACTION */ + +#ifndef USAGE_ERROR_ACTION +#define USAGE_ERROR_ACTION(m,p) ABORT +#endif /* USAGE_ERROR_ACTION */ + +#endif /* PROCEED_ON_ERROR */ + +/* -------------------------- Debugging setup ---------------------------- */ + +#if ! DEBUG + +#define check_free_chunk(M,P) +#define check_inuse_chunk(M,P) +#define check_malloced_chunk(M,P,N) +#define check_mmapped_chunk(M,P) +#define check_malloc_state(M) +#define check_top_chunk(M,P) + +#else /* DEBUG */ +#define check_free_chunk(M,P) do_check_free_chunk(M,P) +#define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) +#define check_top_chunk(M,P) do_check_top_chunk(M,P) +#define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) +#define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) +#define check_malloc_state(M) do_check_malloc_state(M) + +static void do_check_any_chunk(mstate m, mchunkptr p); +static void do_check_top_chunk(mstate m, mchunkptr p); +static void do_check_mmapped_chunk(mstate m, mchunkptr p); +static void do_check_inuse_chunk(mstate m, mchunkptr p); +static void do_check_free_chunk(mstate m, mchunkptr p); +static void do_check_malloced_chunk(mstate m, void* mem, size_t s); +static void do_check_tree(mstate m, tchunkptr t); +static void do_check_treebin(mstate m, bindex_t i); +static void do_check_smallbin(mstate m, bindex_t i); +static void do_check_malloc_state(mstate m); +static int bin_find(mstate m, mchunkptr x); +static size_t traverse_and_check(mstate m); +#endif /* DEBUG */ + +/* ---------------------------- Indexing Bins ---------------------------- */ + +#define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) +#define small_index(s) ((s) >> SMALLBIN_SHIFT) +#define small_index2size(i) ((i) << SMALLBIN_SHIFT) +#define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) + +/* addressing by index. See above about smallbin repositioning */ +#define smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) +#define treebin_at(M,i) (&((M)->treebins[i])) + +/* assign tree index for size S to variable I */ +#if defined(__GNUC__) && defined(__i386__) +#define compute_tree_index(S, I)\ +{\ + size_t X = S >> TREEBIN_SHIFT;\ + if (X == 0)\ + I = 0;\ + else if (X > 0xFFFF)\ + I = NTREEBINS-1;\ + else {\ + unsigned int K;\ + __asm__("bsrl %1,%0\n\t" : "=r" (K) : "rm" (X));\ + I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ + }\ +} +#else /* GNUC */ +#define compute_tree_index(S, I)\ +{\ + size_t X = S >> TREEBIN_SHIFT;\ + if (X == 0)\ + I = 0;\ + else if (X > 0xFFFF)\ + I = NTREEBINS-1;\ + else {\ + unsigned int Y = (unsigned int)X;\ + unsigned int N = ((Y - 0x100) >> 16) & 8;\ + unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ + N += K;\ + N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ + K = 14 - N + ((Y <<= K) >> 15);\ + I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ + }\ +} +#endif /* GNUC */ + +/* Bit representing maximum resolved size in a treebin at i */ +#define bit_for_tree_index(i) \ + (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) + +/* Shift placing maximum resolved bit in a treebin at i as sign bit */ +#define leftshift_for_tree_index(i) \ + ((i == NTREEBINS-1)? 0 : \ + ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) + +/* The size of the smallest chunk held in bin with index i */ +#define minsize_for_tree_index(i) \ + ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ + (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) + + +/* ------------------------ Operations on bin maps ----------------------- */ + +/* bit corresponding to given index */ +#define idx2bit(i) ((binmap_t)(1) << (i)) + +/* Mark/Clear bits with given index */ +#define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) +#define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) +#define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) + +#define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) +#define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) +#define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) + +/* index corresponding to given bit */ + +#if defined(__GNUC__) && defined(__i386__) +#define compute_bit2idx(X, I)\ +{\ + unsigned int J;\ + __asm__("bsfl %1,%0\n\t" : "=r" (J) : "rm" (X));\ + I = (bindex_t)J;\ +} + +#else /* GNUC */ +#if USE_BUILTIN_FFS +#define compute_bit2idx(X, I) I = __builtin_ffs(X)-1 + +#else /* USE_BUILTIN_FFS */ +#define compute_bit2idx(X, I)\ +{\ + unsigned int Y = X - 1;\ + unsigned int K = Y >> (16-4) & 16;\ + unsigned int N = K; Y >>= K;\ + N += K = Y >> (8-3) & 8; Y >>= K;\ + N += K = Y >> (4-2) & 4; Y >>= K;\ + N += K = Y >> (2-1) & 2; Y >>= K;\ + N += K = Y >> (1-0) & 1; Y >>= K;\ + I = (bindex_t)(N + Y);\ +} +#endif /* USE_BUILTIN_FFS */ +#endif /* GNUC */ + +/* isolate the least set bit of a bitmap */ +#define least_bit(x) ((x) & -(x)) + +/* mask with all bits to left of least bit of x on */ +#define left_bits(x) ((x<<1) | -(x<<1)) + +/* mask with all bits to left of or equal to least bit of x on */ +#define same_or_left_bits(x) ((x) | -(x)) + + +/* ----------------------- Runtime Check Support ------------------------- */ + +/* + For security, the main invariant is that malloc/free/etc never + writes to a static address other than malloc_state, unless static + malloc_state itself has been corrupted, which cannot occur via + malloc (because of these checks). In essence this means that we + believe all pointers, sizes, maps etc held in malloc_state, but + check all of those linked or offsetted from other embedded data + structures. These checks are interspersed with main code in a way + that tends to minimize their run-time cost. + + When FOOTERS is defined, in addition to range checking, we also + verify footer fields of inuse chunks, which can be used guarantee + that the mstate controlling malloc/free is intact. This is a + streamlined version of the approach described by William Robertson + et al in "Run-time Detection of Heap-based Overflows" LISA'03 + http://www.usenix.org/events/lisa03/tech/robertson.html The footer + of an inuse chunk holds the xor of its mstate and a random seed, + that is checked upon calls to free() and realloc(). This is + (probablistically) unguessable from outside the program, but can be + computed by any code successfully malloc'ing any chunk, so does not + itself provide protection against code that has already broken + security through some other means. Unlike Robertson et al, we + always dynamically check addresses of all offset chunks (previous, + next, etc). This turns out to be cheaper than relying on hashes. +*/ + +#if !INSECURE +/* Check if address a is at least as high as any from MORECORE or MMAP */ +#define ok_address(M, a) ((char*)(a) >= (M)->least_addr) +/* Check if address of next chunk n is higher than base chunk p */ +#define ok_next(p, n) ((char*)(p) < (char*)(n)) +/* Check if p has its cinuse bit on */ +#define ok_cinuse(p) cinuse(p) +/* Check if p has its pinuse bit on */ +#define ok_pinuse(p) pinuse(p) + +#else /* !INSECURE */ +#define ok_address(M, a) (1) +#define ok_next(b, n) (1) +#define ok_cinuse(p) (1) +#define ok_pinuse(p) (1) +#endif /* !INSECURE */ + +#if (FOOTERS && !INSECURE) +/* Check if (alleged) mstate m has expected magic field */ +#define ok_magic(M) ((M)->magic == mparams.magic) +#else /* (FOOTERS && !INSECURE) */ +#define ok_magic(M) (1) +#endif /* (FOOTERS && !INSECURE) */ + + +/* In gcc, use __builtin_expect to minimize impact of checks */ +#if !INSECURE +#if defined(__GNUC__) && __GNUC__ >= 3 +#define RTCHECK(e) __builtin_expect(e, 1) +#else /* GNUC */ +#define RTCHECK(e) (e) +#endif /* GNUC */ +#else /* !INSECURE */ +#define RTCHECK(e) (1) +#endif /* !INSECURE */ + +/* macros to set up inuse chunks with or without footers */ + +#if !FOOTERS + +#define mark_inuse_foot(M,p,s) + +/* Set cinuse bit and pinuse bit of next chunk */ +#define set_inuse(M,p,s)\ + ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ + ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) + +/* Set cinuse and pinuse of this chunk and pinuse of next chunk */ +#define set_inuse_and_pinuse(M,p,s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) + +/* Set size, cinuse and pinuse bit of this chunk */ +#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) + +#else /* FOOTERS */ + +/* Set foot of inuse chunk to be xor of mstate and seed */ +#define mark_inuse_foot(M,p,s)\ + (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) + +#define get_mstate_for(p)\ + ((mstate)(((mchunkptr)((char*)(p) +\ + (chunksize(p))))->prev_foot ^ mparams.magic)) + +#define set_inuse(M,p,s)\ + ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ + (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ + mark_inuse_foot(M,p,s)) + +#define set_inuse_and_pinuse(M,p,s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ + mark_inuse_foot(M,p,s)) + +#define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ + ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ + mark_inuse_foot(M, p, s)) + +#endif /* !FOOTERS */ + +/* ---------------------------- setting mparams -------------------------- */ + +/* Initialize mparams */ +static int init_mparams(void) { + if (mparams.page_size == 0) { + size_t s; + + mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; + mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; +#if MORECORE_CONTIGUOUS + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; +#else /* MORECORE_CONTIGUOUS */ + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; +#endif /* MORECORE_CONTIGUOUS */ + +#if (FOOTERS && !INSECURE) + { +#if USE_DEV_RANDOM + int fd; + unsigned char buf[sizeof(size_t)]; + /* Try to use /dev/urandom, else fall back on using time */ + if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && + read(fd, buf, sizeof(buf)) == sizeof(buf)) { + s = *((size_t *) buf); + close(fd); + } + else +#endif /* USE_DEV_RANDOM */ + s = (size_t)(time(0) ^ (size_t)0x55555555U); + + s |= (size_t)8U; /* ensure nonzero */ + s &= ~(size_t)7U; /* improve chances of fault for bad values */ + + } +#else /* (FOOTERS && !INSECURE) */ + s = (size_t)0x58585858U; +#endif /* (FOOTERS && !INSECURE) */ + ACQUIRE_MAGIC_INIT_LOCK(); + if (mparams.magic == 0) { + mparams.magic = s; + /* Set up lock for main malloc area */ + INITIAL_LOCK(&gm->mutex); + gm->mflags = mparams.default_mflags; + } + RELEASE_MAGIC_INIT_LOCK(); + +#if !defined(WIN32) && !defined(__OS2__) + mparams.page_size = malloc_getpagesize; + mparams.granularity = ((DEFAULT_GRANULARITY != 0)? + DEFAULT_GRANULARITY : mparams.page_size); +#elif defined (__OS2__) + /* if low-memory is used, os2munmap() would break + if it were anything other than 64k */ + mparams.page_size = 4096u; + mparams.granularity = 65536u; +#else /* WIN32 */ + { + SYSTEM_INFO system_info; + GetSystemInfo(&system_info); + mparams.page_size = system_info.dwPageSize; + mparams.granularity = system_info.dwAllocationGranularity; + } +#endif /* WIN32 */ + + /* Sanity-check configuration: + size_t must be unsigned and as wide as pointer type. + ints must be at least 4 bytes. + alignment must be at least 8. + Alignment, min chunk size, and page size must all be powers of 2. + */ + if ((sizeof(size_t) != sizeof(char*)) || + (MAX_SIZE_T < MIN_CHUNK_SIZE) || + (sizeof(int) < 4) || + (MALLOC_ALIGNMENT < (size_t)8U) || + ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || + ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || + ((mparams.granularity & (mparams.granularity-SIZE_T_ONE)) != 0) || + ((mparams.page_size & (mparams.page_size-SIZE_T_ONE)) != 0)) + ABORT; + } + return 0; +} + +/* support for mallopt */ +static int change_mparam(int param_number, int value) { + size_t val = (size_t)value; + init_mparams(); + switch(param_number) { + case M_TRIM_THRESHOLD: + mparams.trim_threshold = val; + return 1; + case M_GRANULARITY: + if (val >= mparams.page_size && ((val & (val-1)) == 0)) { + mparams.granularity = val; + return 1; + } + else + return 0; + case M_MMAP_THRESHOLD: + mparams.mmap_threshold = val; + return 1; + default: + return 0; + } +} + +#if DEBUG +/* ------------------------- Debugging Support --------------------------- */ + +/* Check properties of any chunk, whether free, inuse, mmapped etc */ +static void do_check_any_chunk(mstate m, mchunkptr p) { + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); +} + +/* Check properties of top chunk */ +static void do_check_top_chunk(mstate m, mchunkptr p) { + msegmentptr sp = segment_holding(m, (char*)p); + size_t sz = chunksize(p); + assert(sp != 0); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(sz == m->topsize); + assert(sz > 0); + assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); + assert(pinuse(p)); + assert(!next_pinuse(p)); +} + +/* Check properties of (inuse) mmapped chunks */ +static void do_check_mmapped_chunk(mstate m, mchunkptr p) { + size_t sz = chunksize(p); + size_t len = (sz + (p->prev_foot & ~IS_MMAPPED_BIT) + MMAP_FOOT_PAD); + assert(is_mmapped(p)); + assert(use_mmap(m)); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(!is_small(sz)); + assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); + assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); + assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); +} + +/* Check properties of inuse chunks */ +static void do_check_inuse_chunk(mstate m, mchunkptr p) { + do_check_any_chunk(m, p); + assert(cinuse(p)); + assert(next_pinuse(p)); + /* If not pinuse and not mmapped, previous chunk has OK offset */ + assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); + if (is_mmapped(p)) + do_check_mmapped_chunk(m, p); +} + +/* Check properties of free chunks */ +static void do_check_free_chunk(mstate m, mchunkptr p) { + size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); + mchunkptr next = chunk_plus_offset(p, sz); + do_check_any_chunk(m, p); + assert(!cinuse(p)); + assert(!next_pinuse(p)); + assert (!is_mmapped(p)); + if (p != m->dv && p != m->top) { + if (sz >= MIN_CHUNK_SIZE) { + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(is_aligned(chunk2mem(p))); + assert(next->prev_foot == sz); + assert(pinuse(p)); + assert (next == m->top || cinuse(next)); + assert(p->fd->bk == p); + assert(p->bk->fd == p); + } + else /* markers are always of size SIZE_T_SIZE */ + assert(sz == SIZE_T_SIZE); + } +} + +/* Check properties of malloced chunks at the point they are malloced */ +static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + size_t sz = p->head & ~(PINUSE_BIT|CINUSE_BIT); + do_check_inuse_chunk(m, p); + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(sz >= MIN_CHUNK_SIZE); + assert(sz >= s); + /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ + assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); + } +} + +/* Check a tree and its subtrees. */ +static void do_check_tree(mstate m, tchunkptr t) { + tchunkptr head = 0; + tchunkptr u = t; + bindex_t tindex = t->index; + size_t tsize = chunksize(t); + bindex_t idx; + compute_tree_index(tsize, idx); + assert(tindex == idx); + assert(tsize >= MIN_LARGE_SIZE); + assert(tsize >= minsize_for_tree_index(idx)); + assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); + + do { /* traverse through chain of same-sized nodes */ + do_check_any_chunk(m, ((mchunkptr)u)); + assert(u->index == tindex); + assert(chunksize(u) == tsize); + assert(!cinuse(u)); + assert(!next_pinuse(u)); + assert(u->fd->bk == u); + assert(u->bk->fd == u); + if (u->parent == 0) { + assert(u->child[0] == 0); + assert(u->child[1] == 0); + } + else { + assert(head == 0); /* only one node on chain has parent */ + head = u; + assert(u->parent != u); + assert (u->parent->child[0] == u || + u->parent->child[1] == u || + *((tbinptr*)(u->parent)) == u); + if (u->child[0] != 0) { + assert(u->child[0]->parent == u); + assert(u->child[0] != u); + do_check_tree(m, u->child[0]); + } + if (u->child[1] != 0) { + assert(u->child[1]->parent == u); + assert(u->child[1] != u); + do_check_tree(m, u->child[1]); + } + if (u->child[0] != 0 && u->child[1] != 0) { + assert(chunksize(u->child[0]) < chunksize(u->child[1])); + } + } + u = u->fd; + } while (u != t); + assert(head != 0); +} + +/* Check all the chunks in a treebin. */ +static void do_check_treebin(mstate m, bindex_t i) { + tbinptr* tb = treebin_at(m, i); + tchunkptr t = *tb; + int empty = (m->treemap & (1U << i)) == 0; + if (t == 0) + assert(empty); + if (!empty) + do_check_tree(m, t); +} + +/* Check all the chunks in a smallbin. */ +static void do_check_smallbin(mstate m, bindex_t i) { + sbinptr b = smallbin_at(m, i); + mchunkptr p = b->bk; + unsigned int empty = (m->smallmap & (1U << i)) == 0; + if (p == b) + assert(empty); + if (!empty) { + for (; p != b; p = p->bk) { + size_t size = chunksize(p); + mchunkptr q; + /* each chunk claims to be free */ + do_check_free_chunk(m, p); + /* chunk belongs in bin */ + assert(small_index(size) == i); + assert(p->bk == b || chunksize(p->bk) == chunksize(p)); + /* chunk is followed by an inuse chunk */ + q = next_chunk(p); + if (q->head != FENCEPOST_HEAD) + do_check_inuse_chunk(m, q); + } + } +} + +/* Find x in a bin. Used in other check functions. */ +static int bin_find(mstate m, mchunkptr x) { + size_t size = chunksize(x); + if (is_small(size)) { + bindex_t sidx = small_index(size); + sbinptr b = smallbin_at(m, sidx); + if (smallmap_is_marked(m, sidx)) { + mchunkptr p = b; + do { + if (p == x) + return 1; + } while ((p = p->fd) != b); + } + } + else { + bindex_t tidx; + compute_tree_index(size, tidx); + if (treemap_is_marked(m, tidx)) { + tchunkptr t = *treebin_at(m, tidx); + size_t sizebits = size << leftshift_for_tree_index(tidx); + while (t != 0 && chunksize(t) != size) { + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + sizebits <<= 1; + } + if (t != 0) { + tchunkptr u = t; + do { + if (u == (tchunkptr)x) + return 1; + } while ((u = u->fd) != t); + } + } + } + return 0; +} + +/* Traverse each chunk and check it; return total */ +static size_t traverse_and_check(mstate m) { + size_t sum = 0; + if (is_initialized(m)) { + msegmentptr s = &m->seg; + sum += m->topsize + TOP_FOOT_SIZE; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + mchunkptr lastq = 0; + assert(pinuse(q)); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + sum += chunksize(q); + if (cinuse(q)) { + assert(!bin_find(m, q)); + do_check_inuse_chunk(m, q); + } + else { + assert(q == m->dv || bin_find(m, q)); + assert(lastq == 0 || cinuse(lastq)); /* Not 2 consecutive free */ + do_check_free_chunk(m, q); + } + lastq = q; + q = next_chunk(q); + } + s = s->next; + } + } + return sum; +} + +/* Check all properties of malloc_state. */ +static void do_check_malloc_state(mstate m) { + bindex_t i; + size_t total; + /* check bins */ + for (i = 0; i < NSMALLBINS; ++i) + do_check_smallbin(m, i); + for (i = 0; i < NTREEBINS; ++i) + do_check_treebin(m, i); + + if (m->dvsize != 0) { /* check dv chunk */ + do_check_any_chunk(m, m->dv); + assert(m->dvsize == chunksize(m->dv)); + assert(m->dvsize >= MIN_CHUNK_SIZE); + assert(bin_find(m, m->dv) == 0); + } + + if (m->top != 0) { /* check top chunk */ + do_check_top_chunk(m, m->top); + assert(m->topsize == chunksize(m->top)); + assert(m->topsize > 0); + assert(bin_find(m, m->top) == 0); + } + + total = traverse_and_check(m); + assert(total <= m->footprint); + assert(m->footprint <= m->max_footprint); +} +#endif /* DEBUG */ + +/* ----------------------------- statistics ------------------------------ */ + +#if !NO_MALLINFO +static struct mallinfo internal_mallinfo(mstate m) { + struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + if (!PREACTION(m)) { + check_malloc_state(m); + if (is_initialized(m)) { + size_t nfree = SIZE_T_ONE; /* top always free */ + size_t mfree = m->topsize + TOP_FOOT_SIZE; + size_t sum = mfree; + msegmentptr s = &m->seg; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + size_t sz = chunksize(q); + sum += sz; + if (!cinuse(q)) { + mfree += sz; + ++nfree; + } + q = next_chunk(q); + } + s = s->next; + } + + nm.arena = sum; + nm.ordblks = nfree; + nm.hblkhd = m->footprint - sum; + nm.usmblks = m->max_footprint; + nm.uordblks = m->footprint - mfree; + nm.fordblks = mfree; + nm.keepcost = m->topsize; + } + + POSTACTION(m); + } + return nm; +} +#endif /* !NO_MALLINFO */ + +static void internal_malloc_stats(mstate m) { + if (!PREACTION(m)) { + size_t maxfp = 0; + size_t fp = 0; + size_t used = 0; + check_malloc_state(m); + if (is_initialized(m)) { + msegmentptr s = &m->seg; + maxfp = m->max_footprint; + fp = m->footprint; + used = fp - (m->topsize + TOP_FOOT_SIZE); + + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + if (!cinuse(q)) + used -= chunksize(q); + q = next_chunk(q); + } + s = s->next; + } + } + + fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); + fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); + fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); + + POSTACTION(m); + } +} + +/* ----------------------- Operations on smallbins ----------------------- */ + +/* + Various forms of linking and unlinking are defined as macros. Even + the ones for trees, which are very long but have very short typical + paths. This is ugly but reduces reliance on inlining support of + compilers. +*/ + +/* Link a free chunk into a smallbin */ +#define insert_small_chunk(M, P, S) {\ + bindex_t I = small_index(S);\ + mchunkptr B = smallbin_at(M, I);\ + mchunkptr F = B;\ + assert(S >= MIN_CHUNK_SIZE);\ + if (!smallmap_is_marked(M, I))\ + mark_smallmap(M, I);\ + else if (RTCHECK(ok_address(M, B->fd)))\ + F = B->fd;\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + B->fd = P;\ + F->bk = P;\ + P->fd = F;\ + P->bk = B;\ +} + +/* Unlink a chunk from a smallbin */ +#define unlink_small_chunk(M, P, S) {\ + mchunkptr F = P->fd;\ + mchunkptr B = P->bk;\ + bindex_t I = small_index(S);\ + assert(P != B);\ + assert(P != F);\ + assert(chunksize(P) == small_index2size(I));\ + if (F == B)\ + clear_smallmap(M, I);\ + else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) &&\ + (B == smallbin_at(M,I) || ok_address(M, B)))) {\ + F->bk = B;\ + B->fd = F;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ +} + +/* Unlink the first chunk from a smallbin */ +#define unlink_first_small_chunk(M, B, P, I) {\ + mchunkptr F = P->fd;\ + assert(P != B);\ + assert(P != F);\ + assert(chunksize(P) == small_index2size(I));\ + if (B == F)\ + clear_smallmap(M, I);\ + else if (RTCHECK(ok_address(M, F))) {\ + B->fd = F;\ + F->bk = B;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ +} + +/* Replace dv node, binning the old one */ +/* Used only when dvsize known to be small */ +#define replace_dv(M, P, S) {\ + size_t DVS = M->dvsize;\ + if (DVS != 0) {\ + mchunkptr DV = M->dv;\ + assert(is_small(DVS));\ + insert_small_chunk(M, DV, DVS);\ + }\ + M->dvsize = S;\ + M->dv = P;\ +} + +/* ------------------------- Operations on trees ------------------------- */ + +/* Insert chunk into tree */ +#define insert_large_chunk(M, X, S) {\ + tbinptr* H;\ + bindex_t I;\ + compute_tree_index(S, I);\ + H = treebin_at(M, I);\ + X->index = I;\ + X->child[0] = X->child[1] = 0;\ + if (!treemap_is_marked(M, I)) {\ + mark_treemap(M, I);\ + *H = X;\ + X->parent = (tchunkptr)H;\ + X->fd = X->bk = X;\ + }\ + else {\ + tchunkptr T = *H;\ + size_t K = S << leftshift_for_tree_index(I);\ + for (;;) {\ + if (chunksize(T) != S) {\ + tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ + K <<= 1;\ + if (*C != 0)\ + T = *C;\ + else if (RTCHECK(ok_address(M, C))) {\ + *C = X;\ + X->parent = T;\ + X->fd = X->bk = X;\ + break;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + break;\ + }\ + }\ + else {\ + tchunkptr F = T->fd;\ + if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ + T->fd = F->bk = X;\ + X->fd = F;\ + X->bk = T;\ + X->parent = 0;\ + break;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + break;\ + }\ + }\ + }\ + }\ +} + +/* + Unlink steps: + + 1. If x is a chained node, unlink it from its same-sized fd/bk links + and choose its bk node as its replacement. + 2. If x was the last node of its size, but not a leaf node, it must + be replaced with a leaf node (not merely one with an open left or + right), to make sure that lefts and rights of descendants + correspond properly to bit masks. We use the rightmost descendant + of x. We could use any other leaf, but this is easy to locate and + tends to counteract removal of leftmosts elsewhere, and so keeps + paths shorter than minimally guaranteed. This doesn't loop much + because on average a node in a tree is near the bottom. + 3. If x is the base of a chain (i.e., has parent links) relink + x's parent and children to x's replacement (or null if none). +*/ + +#define unlink_large_chunk(M, X) {\ + tchunkptr XP = X->parent;\ + tchunkptr R;\ + if (X->bk != X) {\ + tchunkptr F = X->fd;\ + R = X->bk;\ + if (RTCHECK(ok_address(M, F))) {\ + F->bk = R;\ + R->fd = F;\ + }\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + else {\ + tchunkptr* RP;\ + if (((R = *(RP = &(X->child[1]))) != 0) ||\ + ((R = *(RP = &(X->child[0]))) != 0)) {\ + tchunkptr* CP;\ + while ((*(CP = &(R->child[1])) != 0) ||\ + (*(CP = &(R->child[0])) != 0)) {\ + R = *(RP = CP);\ + }\ + if (RTCHECK(ok_address(M, RP)))\ + *RP = 0;\ + else {\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + }\ + if (XP != 0) {\ + tbinptr* H = treebin_at(M, X->index);\ + if (X == *H) {\ + if ((*H = R) == 0) \ + clear_treemap(M, X->index);\ + }\ + else if (RTCHECK(ok_address(M, XP))) {\ + if (XP->child[0] == X) \ + XP->child[0] = R;\ + else \ + XP->child[1] = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + if (R != 0) {\ + if (RTCHECK(ok_address(M, R))) {\ + tchunkptr C0, C1;\ + R->parent = XP;\ + if ((C0 = X->child[0]) != 0) {\ + if (RTCHECK(ok_address(M, C0))) {\ + R->child[0] = C0;\ + C0->parent = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + if ((C1 = X->child[1]) != 0) {\ + if (RTCHECK(ok_address(M, C1))) {\ + R->child[1] = C1;\ + C1->parent = R;\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ + else\ + CORRUPTION_ERROR_ACTION(M);\ + }\ + }\ +} + +/* Relays to large vs small bin operations */ + +#define insert_chunk(M, P, S)\ + if (is_small(S)) insert_small_chunk(M, P, S)\ + else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } + +#define unlink_chunk(M, P, S)\ + if (is_small(S)) unlink_small_chunk(M, P, S)\ + else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } + + +/* Relays to internal calls to malloc/free from realloc, memalign etc */ + +#if ONLY_MSPACES +#define internal_malloc(m, b) mspace_malloc(m, b) +#define internal_free(m, mem) mspace_free(m,mem); +#else /* ONLY_MSPACES */ +#if MSPACES +#define internal_malloc(m, b)\ + (m == gm)? dlmalloc(b) : mspace_malloc(m, b) +#define internal_free(m, mem)\ + if (m == gm) dlfree(mem); else mspace_free(m,mem); +#else /* MSPACES */ +#define internal_malloc(m, b) dlmalloc(b) +#define internal_free(m, mem) dlfree(mem) +#endif /* MSPACES */ +#endif /* ONLY_MSPACES */ + +/* ----------------------- Direct-mmapping chunks ----------------------- */ + +/* + Directly mmapped chunks are set up with an offset to the start of + the mmapped region stored in the prev_foot field of the chunk. This + allows reconstruction of the required argument to MUNMAP when freed, + and also allows adjustment of the returned chunk to meet alignment + requirements (especially in memalign). There is also enough space + allocated to hold a fake next chunk of size SIZE_T_SIZE to maintain + the PINUSE bit so frees can be checked. +*/ + +/* Malloc using mmap */ +static void* mmap_alloc(mstate m, size_t nb) { + size_t mmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + if (mmsize > nb) { /* Check for wrap around 0 */ + char* mm = (char*)(DIRECT_MMAP(mmsize)); + if (mm != CMFAIL) { + size_t offset = align_offset(chunk2mem(mm)); + size_t psize = mmsize - offset - MMAP_FOOT_PAD; + mchunkptr p = (mchunkptr)(mm + offset); + p->prev_foot = offset | IS_MMAPPED_BIT; + (p)->head = (psize|CINUSE_BIT); + mark_inuse_foot(m, p, psize); + chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; + + if (mm < m->least_addr) + m->least_addr = mm; + if ((m->footprint += mmsize) > m->max_footprint) + m->max_footprint = m->footprint; + assert(is_aligned(chunk2mem(p))); + check_mmapped_chunk(m, p); + return chunk2mem(p); + } + } + return 0; +} + +/* Realloc using mmap */ +static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb) { + size_t oldsize = chunksize(oldp); + if (is_small(nb)) /* Can't shrink mmap regions below small size */ + return 0; + /* Keep old chunk if big enough but not too big */ + if (oldsize >= nb + SIZE_T_SIZE && + (oldsize - nb) <= (mparams.granularity << 1)) + return oldp; + else { + size_t offset = oldp->prev_foot & ~IS_MMAPPED_BIT; + size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; + size_t newmmsize = granularity_align(nb + SIX_SIZE_T_SIZES + + CHUNK_ALIGN_MASK); + char* cp = (char*)CALL_MREMAP((char*)oldp - offset, + oldmmsize, newmmsize, 1); + if (cp != CMFAIL) { + mchunkptr newp = (mchunkptr)(cp + offset); + size_t psize = newmmsize - offset - MMAP_FOOT_PAD; + newp->head = (psize|CINUSE_BIT); + mark_inuse_foot(m, newp, psize); + chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; + + if (cp < m->least_addr) + m->least_addr = cp; + if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) + m->max_footprint = m->footprint; + check_mmapped_chunk(m, newp); + return newp; + } + } + return 0; +} + +/* -------------------------- mspace management -------------------------- */ + +/* Initialize top chunk and its size */ +static void init_top(mstate m, mchunkptr p, size_t psize) { + /* Ensure alignment */ + size_t offset = align_offset(chunk2mem(p)); + p = (mchunkptr)((char*)p + offset); + psize -= offset; + + m->top = p; + m->topsize = psize; + p->head = psize | PINUSE_BIT; + /* set size of fake trailing chunk holding overhead space only once */ + chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; + m->trim_check = mparams.trim_threshold; /* reset on each update */ +} + +/* Initialize bins for a new mstate that is otherwise zeroed out */ +static void init_bins(mstate m) { + /* Establish circular links for smallbins */ + bindex_t i; + for (i = 0; i < NSMALLBINS; ++i) { + sbinptr bin = smallbin_at(m,i); + bin->fd = bin->bk = bin; + } +} + +#if PROCEED_ON_ERROR + +/* default corruption action */ +static void reset_on_error(mstate m) { + int i; + ++malloc_corruption_error_count; + /* Reinitialize fields to forget about all memory */ + m->smallbins = m->treebins = 0; + m->dvsize = m->topsize = 0; + m->seg.base = 0; + m->seg.size = 0; + m->seg.next = 0; + m->top = m->dv = 0; + for (i = 0; i < NTREEBINS; ++i) + *treebin_at(m, i) = 0; + init_bins(m); +} +#endif /* PROCEED_ON_ERROR */ + +/* Allocate chunk and prepend remainder with chunk in successor base. */ +static void* prepend_alloc(mstate m, char* newbase, char* oldbase, + size_t nb) { + mchunkptr p = align_as_chunk(newbase); + mchunkptr oldfirst = align_as_chunk(oldbase); + size_t psize = (char*)oldfirst - (char*)p; + mchunkptr q = chunk_plus_offset(p, nb); + size_t qsize = psize - nb; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + + assert((char*)oldfirst > (char*)q); + assert(pinuse(oldfirst)); + assert(qsize >= MIN_CHUNK_SIZE); + + /* consolidate remainder with first chunk of old base */ + if (oldfirst == m->top) { + size_t tsize = m->topsize += qsize; + m->top = q; + q->head = tsize | PINUSE_BIT; + check_top_chunk(m, q); + } + else if (oldfirst == m->dv) { + size_t dsize = m->dvsize += qsize; + m->dv = q; + set_size_and_pinuse_of_free_chunk(q, dsize); + } + else { + if (!cinuse(oldfirst)) { + size_t nsize = chunksize(oldfirst); + unlink_chunk(m, oldfirst, nsize); + oldfirst = chunk_plus_offset(oldfirst, nsize); + qsize += nsize; + } + set_free_with_pinuse(q, qsize, oldfirst); + insert_chunk(m, q, qsize); + check_free_chunk(m, q); + } + + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); +} + + +/* Add a segment to hold a new noncontiguous region */ +static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { + /* Determine locations and sizes of segment, fenceposts, old top */ + char* old_top = (char*)m->top; + msegmentptr oldsp = segment_holding(m, old_top); + char* old_end = oldsp->base + oldsp->size; + size_t ssize = pad_request(sizeof(struct malloc_segment)); + char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + size_t offset = align_offset(chunk2mem(rawsp)); + char* asp = rawsp + offset; + char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; + mchunkptr sp = (mchunkptr)csp; + msegmentptr ss = (msegmentptr)(chunk2mem(sp)); + mchunkptr tnext = chunk_plus_offset(sp, ssize); + mchunkptr p = tnext; + int nfences = 0; + (void)nfences; // Suppress unused variable warning + + /* reset top to new space */ + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + + /* Set up segment record */ + assert(is_aligned(ss)); + set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); + *ss = m->seg; /* Push current record */ + m->seg.base = tbase; + m->seg.size = tsize; + (void)set_segment_flags(&m->seg, mmapped); + m->seg.next = ss; + + /* Insert trailing fenceposts */ + for (;;) { + mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); + p->head = FENCEPOST_HEAD; + ++nfences; + if ((char*)(&(nextp->head)) < old_end) + p = nextp; + else + break; + } + assert(nfences >= 2); + + /* Insert the rest of old top into a bin as an ordinary free chunk */ + if (csp != old_top) { + mchunkptr q = (mchunkptr)old_top; + size_t psize = csp - old_top; + mchunkptr tn = chunk_plus_offset(q, psize); + set_free_with_pinuse(q, psize, tn); + insert_chunk(m, q, psize); + } + + check_top_chunk(m, m->top); +} + +/* -------------------------- System allocation -------------------------- */ + +/* Get memory from system using MORECORE or MMAP */ +static void* sys_alloc(mstate m, size_t nb) { + char* tbase = CMFAIL; + size_t tsize = 0; + flag_t mmap_flag = 0; + + init_mparams(); + + /* Directly map large chunks */ + if (use_mmap(m) && nb >= mparams.mmap_threshold) { + void* mem = mmap_alloc(m, nb); + if (mem != 0) + return mem; + } + + /* + Try getting memory in any of three ways (in most-preferred to + least-preferred order): + 1. A call to MORECORE that can normally contiguously extend memory. + (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or + or main space is mmapped or a previous contiguous call failed) + 2. A call to MMAP new space (disabled if not HAVE_MMAP). + Note that under the default settings, if MORECORE is unable to + fulfill a request, and HAVE_MMAP is true, then mmap is + used as a noncontiguous system allocator. This is a useful backup + strategy for systems with holes in address spaces -- in this case + sbrk cannot contiguously expand the heap, but mmap may be able to + find space. + 3. A call to MORECORE that cannot usually contiguously extend memory. + (disabled if not HAVE_MORECORE) + */ + + if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { + char* br = CMFAIL; + msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); + size_t asize = 0; + ACQUIRE_MORECORE_LOCK(); + + if (ss == 0) { /* First time through or recovery */ + char* base = (char*)CALL_MORECORE(0); + if (base != CMFAIL) { + asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); + /* Adjust to end on a page boundary */ + if (!is_page_aligned(base)) + asize += (page_align((size_t)base) - (size_t)base); + /* Can't call MORECORE if size is negative when treated as signed */ + if (asize < HALF_MAX_SIZE_T && + (br = (char*)(CALL_MORECORE(asize))) == base) { + tbase = base; + tsize = asize; + } + } + } + else { + /* Subtract out existing available top space from MORECORE request. */ + asize = granularity_align(nb - m->topsize + TOP_FOOT_SIZE + SIZE_T_ONE); + /* Use mem here only if it did continuously extend old space */ + if (asize < HALF_MAX_SIZE_T && + (br = (char*)(CALL_MORECORE(asize))) == ss->base+ss->size) { + tbase = br; + tsize = asize; + } + } + + if (tbase == CMFAIL) { /* Cope with partial failure */ + if (br != CMFAIL) { /* Try to use/extend the space we did get */ + if (asize < HALF_MAX_SIZE_T && + asize < nb + TOP_FOOT_SIZE + SIZE_T_ONE) { + size_t esize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE - asize); + if (esize < HALF_MAX_SIZE_T) { + char* end = (char*)CALL_MORECORE(esize); + if (end != CMFAIL) + asize += esize; + else { /* Can't use; try to release */ + (void)CALL_MORECORE(-asize); + br = CMFAIL; + } + } + } + } + if (br != CMFAIL) { /* Use the space we did get */ + tbase = br; + tsize = asize; + } + else + disable_contiguous(m); /* Don't try contiguous path in the future */ + } + + RELEASE_MORECORE_LOCK(); + } + + if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ + size_t req = nb + TOP_FOOT_SIZE + SIZE_T_ONE; + size_t rsize = granularity_align(req); + if (rsize > nb) { /* Fail if wraps around zero */ + char* mp = (char*)(CALL_MMAP(rsize)); + if (mp != CMFAIL) { + tbase = mp; + tsize = rsize; + mmap_flag = IS_MMAPPED_BIT; + } + } + } + + if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ + size_t asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); + if (asize < HALF_MAX_SIZE_T) { + char* br = CMFAIL; + char* end = CMFAIL; + ACQUIRE_MORECORE_LOCK(); + br = (char*)(CALL_MORECORE(asize)); + end = (char*)(CALL_MORECORE(0)); + RELEASE_MORECORE_LOCK(); + if (br != CMFAIL && end != CMFAIL && br < end) { + size_t ssize = end - br; + if (ssize > nb + TOP_FOOT_SIZE) { + tbase = br; + tsize = ssize; + } + } + } + } + + if (tbase != CMFAIL) { + + if ((m->footprint += tsize) > m->max_footprint) + m->max_footprint = m->footprint; + + if (!is_initialized(m)) { /* first-time initialization */ + m->seg.base = m->least_addr = tbase; + m->seg.size = tsize; + (void)set_segment_flags(&m->seg, mmap_flag); + m->magic = mparams.magic; + init_bins(m); + if (is_global(m)) + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + else { + /* Offset top by embedded malloc_state */ + mchunkptr mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); + } + } + + else { + /* Try to merge with an existing segment */ + msegmentptr sp = &m->seg; + while (sp != 0 && tbase != sp->base + sp->size) + sp = sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + check_segment_merge(sp, tbase, tsize) && + (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag && + segment_holds(sp, m->top)) { /* append */ + sp->size += tsize; + init_top(m, m->top, m->topsize + tsize); + } + else { + if (tbase < m->least_addr) + m->least_addr = tbase; + sp = &m->seg; + while (sp != 0 && sp->base != tbase + tsize) + sp = sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + check_segment_merge(sp, tbase, tsize) && + (get_segment_flags(sp) & IS_MMAPPED_BIT) == mmap_flag) { + char* oldbase = sp->base; + sp->base = tbase; + sp->size += tsize; + return prepend_alloc(m, tbase, oldbase, nb); + } + else + add_segment(m, tbase, tsize, mmap_flag); + } + } + + if (nb < m->topsize) { /* Allocate from new or extended top space */ + size_t rsize = m->topsize -= nb; + mchunkptr p = m->top; + mchunkptr r = m->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + check_top_chunk(m, m->top); + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); + } + } + + MALLOC_FAILURE_ACTION; + return 0; +} + +/* ----------------------- system deallocation -------------------------- */ + +/* Unmap and unlink any mmapped segments that don't contain used chunks */ +static size_t release_unused_segments(mstate m) { + size_t released = 0; + msegmentptr pred = &m->seg; + msegmentptr sp = pred->next; + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + msegmentptr next = sp->next; + if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { + mchunkptr p = align_as_chunk(base); + size_t psize = chunksize(p); + /* Can unmap if first chunk holds entire segment and not pinned */ + if (!cinuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { + tchunkptr tp = (tchunkptr)p; + assert(segment_holds(sp, (char*)sp)); + if (p == m->dv) { + m->dv = 0; + m->dvsize = 0; + } + else { + unlink_large_chunk(m, tp); + } + if (CALL_MUNMAP(base, size) == 0) { + released += size; + m->footprint -= size; + /* unlink obsoleted record */ + sp = pred; + sp->next = next; + } + else { /* back out if cannot unmap */ + insert_large_chunk(m, tp, psize); + } + } + } + pred = sp; + sp = next; + } + return released; +} + +static int sys_trim(mstate m, size_t pad) { + size_t released = 0; + if (pad < MAX_REQUEST && is_initialized(m)) { + pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ + + if (m->topsize > pad) { + /* Shrink top space in granularity-size units, keeping at least one */ + size_t unit = mparams.granularity; + size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - + SIZE_T_ONE) * unit; + msegmentptr sp = segment_holding(m, (char*)m->top); + + if (!is_extern_segment(sp)) { + if (is_mmapped_segment(sp)) { + if (HAVE_MMAP && + sp->size >= extra && + !has_segment_link(m, sp)) { /* can't shrink if pinned */ + size_t newsize = sp->size - extra; + /* Prefer mremap, fall back to munmap */ + if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || + (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { + released = extra; + } + } + } + else if (HAVE_MORECORE) { + if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ + extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; + ACQUIRE_MORECORE_LOCK(); + { + /* Make sure end of memory is where we last set it. */ + char* old_br = (char*)(CALL_MORECORE(0)); + if (old_br == sp->base + sp->size) { + char* rel_br = (char*)(CALL_MORECORE(-extra)); + char* new_br = (char*)(CALL_MORECORE(0)); + if (rel_br != CMFAIL && new_br < old_br) + released = old_br - new_br; + } + } + RELEASE_MORECORE_LOCK(); + } + } + + if (released != 0) { + sp->size -= released; + m->footprint -= released; + init_top(m, m->top, m->topsize - released); + check_top_chunk(m, m->top); + } + } + + /* Unmap any unused mmapped segments */ + if (HAVE_MMAP) + released += release_unused_segments(m); + + /* On failure, disable autotrim to avoid repeated failed future calls */ + if (released == 0) + m->trim_check = MAX_SIZE_T; + } + + return (released != 0)? 1 : 0; +} + +/* ---------------------------- malloc support --------------------------- */ + +/* allocate a large request from the best fitting chunk in a treebin */ +static void* tmalloc_large(mstate m, size_t nb) { + tchunkptr v = 0; + size_t rsize = -nb; /* Unsigned negation */ + tchunkptr t; + bindex_t idx; + compute_tree_index(nb, idx); + + if ((t = *treebin_at(m, idx)) != 0) { + /* Traverse tree for this bin looking for node with size == nb */ + size_t sizebits = nb << leftshift_for_tree_index(idx); + tchunkptr rst = 0; /* The deepest untaken right subtree */ + for (;;) { + tchunkptr rt; + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + v = t; + if ((rsize = trem) == 0) + break; + } + rt = t->child[1]; + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + if (rt != 0 && rt != t) + rst = rt; + if (t == 0) { + t = rst; /* set t to least subtree holding sizes > nb */ + break; + } + sizebits <<= 1; + } + } + + if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ + binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; + if (leftbits != 0) { + bindex_t i; + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + t = *treebin_at(m, i); + } + } + + while (t != 0) { /* find smallest of tree or subtree */ + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; + } + t = leftmost_child(t); + } + + /* If dv is a better fit, return 0 so malloc will use it */ + if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { + if (RTCHECK(ok_address(m, v))) { /* split */ + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + insert_chunk(m, r, rsize); + } + return chunk2mem(v); + } + } + CORRUPTION_ERROR_ACTION(m); + } + return 0; +} + +/* allocate a small request from the best fitting chunk in a treebin */ +static void* tmalloc_small(mstate m, size_t nb) { + tchunkptr t, v; + size_t rsize; + bindex_t i; + binmap_t leastbit = least_bit(m->treemap); + compute_bit2idx(leastbit, i); + + v = t = *treebin_at(m, i); + rsize = chunksize(t) - nb; + + while ((t = leftmost_child(t)) != 0) { + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; + } + } + + if (RTCHECK(ok_address(m, v))) { + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(m, r, rsize); + } + return chunk2mem(v); + } + } + + CORRUPTION_ERROR_ACTION(m); + return 0; +} + +/* --------------------------- realloc support --------------------------- */ + +static void* internal_realloc(mstate m, void* oldmem, size_t bytes) { + if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + return 0; + } + if (!PREACTION(m)) { + mchunkptr oldp = mem2chunk(oldmem); + size_t oldsize = chunksize(oldp); + mchunkptr next = chunk_plus_offset(oldp, oldsize); + mchunkptr newp = 0; + void* extra = 0; + + /* Try to either shrink or extend into top. Else malloc-copy-free */ + + if (RTCHECK(ok_address(m, oldp) && ok_cinuse(oldp) && + ok_next(oldp, next) && ok_pinuse(next))) { + size_t nb = request2size(bytes); + if (is_mmapped(oldp)) + newp = mmap_resize(m, oldp, nb); + else if (oldsize >= nb) { /* already big enough */ + size_t rsize = oldsize - nb; + newp = oldp; + if (rsize >= MIN_CHUNK_SIZE) { + mchunkptr remainder = chunk_plus_offset(newp, nb); + set_inuse(m, newp, nb); + set_inuse(m, remainder, rsize); + extra = chunk2mem(remainder); + } + } + else if (next == m->top && oldsize + m->topsize > nb) { + /* Expand into top */ + size_t newsize = oldsize + m->topsize; + size_t newtopsize = newsize - nb; + mchunkptr newtop = chunk_plus_offset(oldp, nb); + set_inuse(m, oldp, nb); + newtop->head = newtopsize |PINUSE_BIT; + m->top = newtop; + m->topsize = newtopsize; + newp = oldp; + } + } + else { + USAGE_ERROR_ACTION(m, oldmem); + POSTACTION(m); + return 0; + } + + POSTACTION(m); + + if (newp != 0) { + if (extra != 0) { + internal_free(m, extra); + } + check_inuse_chunk(m, newp); + return chunk2mem(newp); + } + else { + void* newmem = internal_malloc(m, bytes); + if (newmem != 0) { + size_t oc = oldsize - overhead_for(oldp); + memcpy(newmem, oldmem, (oc < bytes)? oc : bytes); + internal_free(m, oldmem); + } + return newmem; + } + } + return 0; +} + +/* --------------------------- memalign support -------------------------- */ + +static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { + if (alignment <= MALLOC_ALIGNMENT) /* Can just use malloc */ + return internal_malloc(m, bytes); + if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ + alignment = MIN_CHUNK_SIZE; + if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ + size_t a = MALLOC_ALIGNMENT << 1; + while (a < alignment) a <<= 1; + alignment = a; + } + + if (bytes >= MAX_REQUEST - alignment) { + if (m != 0) { /* Test isn't needed but avoids compiler warning */ + MALLOC_FAILURE_ACTION; + } + } + else { + size_t nb = request2size(bytes); + size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; + char* mem = (char*)internal_malloc(m, req); + if (mem != 0) { + void* leader = 0; + void* trailer = 0; + mchunkptr p = mem2chunk(mem); + + if (PREACTION(m)) return 0; + if ((((size_t)(mem)) % alignment) != 0) { /* misaligned */ + /* + Find an aligned spot inside chunk. Since we need to give + back leading space in a chunk of at least MIN_CHUNK_SIZE, if + the first calculation places us at a spot with less than + MIN_CHUNK_SIZE leader, we can move to the next aligned spot. + We've allocated enough total room so that this is always + possible. + */ + char* br = (char*)mem2chunk((size_t)(((size_t)(mem + + alignment - + SIZE_T_ONE)) & + -alignment)); + char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? + br : br+alignment; + mchunkptr newp = (mchunkptr)pos; + size_t leadsize = pos - (char*)(p); + size_t newsize = chunksize(p) - leadsize; + + if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ + newp->prev_foot = p->prev_foot + leadsize; + newp->head = (newsize|CINUSE_BIT); + } + else { /* Otherwise, give back leader, use the rest */ + set_inuse(m, newp, newsize); + set_inuse(m, p, leadsize); + leader = chunk2mem(p); + } + p = newp; + } + + /* Give back spare room at the end */ + if (!is_mmapped(p)) { + size_t size = chunksize(p); + if (size > nb + MIN_CHUNK_SIZE) { + size_t remainder_size = size - nb; + mchunkptr remainder = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + set_inuse(m, remainder, remainder_size); + trailer = chunk2mem(remainder); + } + } + + assert (chunksize(p) >= nb); + assert((((size_t)(chunk2mem(p))) % alignment) == 0); + check_inuse_chunk(m, p); + POSTACTION(m); + if (leader != 0) { + internal_free(m, leader); + } + if (trailer != 0) { + internal_free(m, trailer); + } + return chunk2mem(p); + } + } + return 0; +} + +/* ------------------------ comalloc/coalloc support --------------------- */ + +static void** ialloc(mstate m, + size_t n_elements, + size_t* sizes, + int opts, + void* chunks[]) { + /* + This provides common support for independent_X routines, handling + all of the combinations that can result. + + The opts arg has: + bit 0 set if all elements are same size (using sizes[0]) + bit 1 set if elements should be zeroed + */ + + size_t element_size; /* chunksize of each element, if all same */ + size_t contents_size; /* total size of elements */ + size_t array_size; /* request size of pointer array */ + void* mem; /* malloced aggregate space */ + mchunkptr p; /* corresponding chunk */ + size_t remainder_size; /* remaining bytes while splitting */ + void** marray; /* either "chunks" or malloced ptr array */ + mchunkptr array_chunk; /* chunk for malloced ptr array */ + flag_t was_enabled; /* to disable mmap */ + size_t size; + size_t i; + + /* compute array length, if needed */ + if (chunks != 0) { + if (n_elements == 0) + return chunks; /* nothing to do */ + marray = chunks; + array_size = 0; + } + else { + /* if empty req, must still return chunk representing empty array */ + if (n_elements == 0) + return (void**)internal_malloc(m, 0); + marray = 0; + array_size = request2size(n_elements * (sizeof(void*))); + } + + /* compute total element size */ + if (opts & 0x1) { /* all-same-size */ + element_size = request2size(*sizes); + contents_size = n_elements * element_size; + } + else { /* add up all the sizes */ + element_size = 0; + contents_size = 0; + for (i = 0; i != n_elements; ++i) + contents_size += request2size(sizes[i]); + } + + size = contents_size + array_size; + + /* + Allocate the aggregate chunk. First disable direct-mmapping so + malloc won't use it, since we would not be able to later + free/realloc space internal to a segregated mmap region. + */ + was_enabled = use_mmap(m); + disable_mmap(m); + mem = internal_malloc(m, size - CHUNK_OVERHEAD); + if (was_enabled) + enable_mmap(m); + if (mem == 0) + return 0; + + if (PREACTION(m)) return 0; + p = mem2chunk(mem); + remainder_size = chunksize(p); + + assert(!is_mmapped(p)); + + if (opts & 0x2) { /* optionally clear the elements */ + memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); + } + + /* If not provided, allocate the pointer array as final part of chunk */ + if (marray == 0) { + size_t array_chunk_size; + array_chunk = chunk_plus_offset(p, contents_size); + array_chunk_size = remainder_size - contents_size; + marray = (void**) (chunk2mem(array_chunk)); + set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); + remainder_size = contents_size; + } + + /* split out elements */ + for (i = 0; ; ++i) { + marray[i] = chunk2mem(p); + if (i != n_elements-1) { + if (element_size != 0) + size = element_size; + else + size = request2size(sizes[i]); + remainder_size -= size; + set_size_and_pinuse_of_inuse_chunk(m, p, size); + p = chunk_plus_offset(p, size); + } + else { /* the final element absorbs any overallocation slop */ + set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); + break; + } + } + +#if DEBUG + if (marray != chunks) { + /* final element must have exactly exhausted chunk */ + if (element_size != 0) { + assert(remainder_size == element_size); + } + else { + assert(remainder_size == request2size(sizes[i])); + } + check_inuse_chunk(m, mem2chunk(marray)); + } + for (i = 0; i != n_elements; ++i) + check_inuse_chunk(m, mem2chunk(marray[i])); + +#endif /* DEBUG */ + + POSTACTION(m); + return marray; +} + + +/* -------------------------- public routines ---------------------------- */ + +#if !ONLY_MSPACES + +void* dlmalloc(size_t bytes) { + /* + Basic algorithm: + If a small request (< 256 bytes minus per-chunk overhead): + 1. If one exists, use a remainderless chunk in associated smallbin. + (Remainderless means that there are too few excess bytes to + represent as a chunk.) + 2. If it is big enough, use the dv chunk, which is normally the + chunk adjacent to the one used for the most recent small request. + 3. If one exists, split the smallest available chunk in a bin, + saving remainder in dv. + 4. If it is big enough, use the top chunk. + 5. If available, get memory from system and use it + Otherwise, for a large request: + 1. Find the smallest available binned chunk that fits, and use it + if it is better fitting than dv chunk, splitting if necessary. + 2. If better fitting than any binned chunk, use the dv chunk. + 3. If it is big enough, use the top chunk. + 4. If request size >= mmap threshold, try to directly mmap this chunk. + 5. If available, get memory from system and use it + + The ugly goto's here ensure that postaction occurs along all paths. + */ + + if (!PREACTION(gm)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = gm->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(gm, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(gm, b, p, idx); + set_inuse_and_pinuse(gm, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb > gm->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(gm, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(gm, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(gm, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(gm, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + } + } + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + } + + if (nb <= gm->dvsize) { + size_t rsize = gm->dvsize - nb; + mchunkptr p = gm->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = gm->dv = chunk_plus_offset(p, nb); + gm->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + } + else { /* exhaust dv */ + size_t dvs = gm->dvsize; + gm->dvsize = 0; + gm->dv = 0; + set_inuse_and_pinuse(gm, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb < gm->topsize) { /* Split top */ + size_t rsize = gm->topsize -= nb; + mchunkptr p = gm->top; + mchunkptr r = gm->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + mem = chunk2mem(p); + check_top_chunk(gm, gm->top); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + mem = sys_alloc(gm, nb); + + postaction: + POSTACTION(gm); + return mem; + } + + return 0; +} + +void dlfree(void* mem) { + /* + Consolidate freed chunks with preceding or succeeding bordering + free chunks, if they exist, and then place in a bin. Intermixed + with special cases for top, dv, mmapped chunks, and usage errors. + */ + + if (mem != 0) { + mchunkptr p = mem2chunk(mem); +#if FOOTERS + mstate fm = get_mstate_for(p); + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; + } +#else /* FOOTERS */ +#define fm gm +#endif /* FOOTERS */ + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if ((prevsize & IS_MMAPPED_BIT) != 0) { + prevsize &= ~IS_MMAPPED_BIT; + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + insert_chunk(fm, p, psize); + check_free_chunk(fm, p); + goto postaction; + } + } + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); + } + } +#if !FOOTERS +#undef fm +#endif /* FOOTERS */ +} + +void* dlcalloc(size_t n_elements, size_t elem_size) { + void* mem; + size_t req = 0; + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = dlmalloc(req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; +} + +void* dlrealloc(void* oldmem, size_t bytes) { + if (oldmem == 0) + return dlmalloc(bytes); +#ifdef REALLOC_ZERO_BYTES_FREES + if (bytes == 0) { + dlfree(oldmem); + return 0; + } +#endif /* REALLOC_ZERO_BYTES_FREES */ + else { +#if ! FOOTERS + mstate m = gm; +#else /* FOOTERS */ + mstate m = get_mstate_for(mem2chunk(oldmem)); + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } +#endif /* FOOTERS */ + return internal_realloc(m, oldmem, bytes); + } +} + +void* dlmemalign(size_t alignment, size_t bytes) { + return internal_memalign(gm, alignment, bytes); +} + +void** dlindependent_calloc(size_t n_elements, size_t elem_size, + void* chunks[]) { + size_t sz = elem_size; /* serves as 1-element array */ + return ialloc(gm, n_elements, &sz, 3, chunks); +} + +void** dlindependent_comalloc(size_t n_elements, size_t sizes[], + void* chunks[]) { + return ialloc(gm, n_elements, sizes, 0, chunks); +} + +void* dlvalloc(size_t bytes) { + size_t pagesz; + init_mparams(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, bytes); +} + +void* dlpvalloc(size_t bytes) { + size_t pagesz; + init_mparams(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); +} + +int dlmalloc_trim(size_t pad) { + int result = 0; + if (!PREACTION(gm)) { + result = sys_trim(gm, pad); + POSTACTION(gm); + } + return result; +} + +size_t dlmalloc_footprint(void) { + return gm->footprint; +} + +size_t dlmalloc_max_footprint(void) { + return gm->max_footprint; +} + +#if !NO_MALLINFO +struct mallinfo dlmallinfo(void) { + return internal_mallinfo(gm); +} +#endif /* NO_MALLINFO */ + +void dlmalloc_stats(void) { + internal_malloc_stats(gm); +} + +size_t dlmalloc_usable_size(void* mem) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + if (cinuse(p)) + return chunksize(p) - overhead_for(p); + } + return 0; +} + +int dlmallopt(int param_number, int value) { + return change_mparam(param_number, value); +} + +#endif /* !ONLY_MSPACES */ + +/* ----------------------------- user mspaces ---------------------------- */ + +#if MSPACES + +static mstate init_user_mstate(char* tbase, size_t tsize) { + size_t msize = pad_request(sizeof(struct malloc_state)); + mchunkptr mn; + mchunkptr msp = align_as_chunk(tbase); + mstate m = (mstate)(chunk2mem(msp)); + memset(m, 0, msize); + INITIAL_LOCK(&m->mutex); + msp->head = (msize|PINUSE_BIT|CINUSE_BIT); + m->seg.base = m->least_addr = tbase; + m->seg.size = m->footprint = m->max_footprint = tsize; + m->magic = mparams.magic; + m->mflags = mparams.default_mflags; + disable_contiguous(m); + init_bins(m); + mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); + check_top_chunk(m, m->top); + return m; +} + +mspace create_mspace(size_t capacity, int locked) { + mstate m = 0; + size_t msize = pad_request(sizeof(struct malloc_state)); + init_mparams(); /* Ensure pagesize etc initialized */ + + if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + size_t rs = ((capacity == 0)? mparams.granularity : + (capacity + TOP_FOOT_SIZE + msize)); + size_t tsize = granularity_align(rs); + char* tbase = (char*)(CALL_MMAP(tsize)); + if (tbase != CMFAIL) { + m = init_user_mstate(tbase, tsize); + set_segment_flags(&m->seg, IS_MMAPPED_BIT); + set_lock(m, locked); + } + } + return (mspace)m; +} + +mspace create_mspace_with_base(void* base, size_t capacity, int locked) { + mstate m = 0; + size_t msize = pad_request(sizeof(struct malloc_state)); + init_mparams(); /* Ensure pagesize etc initialized */ + + if (capacity > msize + TOP_FOOT_SIZE && + capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + m = init_user_mstate((char*)base, capacity); + set_segment_flags(&m->seg, EXTERN_BIT); + set_lock(m, locked); + } + return (mspace)m; +} + +size_t destroy_mspace(mspace msp) { + size_t freed = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + msegmentptr sp = &ms->seg; + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + flag_t flag = get_segment_flags(sp); + sp = sp->next; + if ((flag & IS_MMAPPED_BIT) && !(flag & EXTERN_BIT) && + CALL_MUNMAP(base, size) == 0) + freed += size; + } + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return freed; +} + +/* + mspace versions of routines are near-clones of the global + versions. This is not so nice but better than the alternatives. +*/ + + +void* mspace_malloc(mspace msp, size_t bytes) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (!PREACTION(ms)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = ms->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(ms, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(ms, b, p, idx); + set_inuse_and_pinuse(ms, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb > ms->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(ms, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(ms, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(ms, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(ms, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + } + } + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + } + + if (nb <= ms->dvsize) { + size_t rsize = ms->dvsize - nb; + mchunkptr p = ms->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = ms->dv = chunk_plus_offset(p, nb); + ms->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + } + else { /* exhaust dv */ + size_t dvs = ms->dvsize; + ms->dvsize = 0; + ms->dv = 0; + set_inuse_and_pinuse(ms, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb < ms->topsize) { /* Split top */ + size_t rsize = ms->topsize -= nb; + mchunkptr p = ms->top; + mchunkptr r = ms->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + mem = chunk2mem(p); + check_top_chunk(ms, ms->top); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + mem = sys_alloc(ms, nb); + + postaction: + POSTACTION(ms); + return mem; + } + + return 0; +} + +void mspace_free(mspace msp, void* mem) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); +#if FOOTERS + mstate fm = get_mstate_for(p); +#else /* FOOTERS */ + mstate fm = (mstate)msp; +#endif /* FOOTERS */ + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; + } + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if ((prevsize & IS_MMAPPED_BIT) != 0) { + prevsize &= ~IS_MMAPPED_BIT; + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + insert_chunk(fm, p, psize); + check_free_chunk(fm, p); + goto postaction; + } + } + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); + } + } +} + +void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { + void* mem; + size_t req = 0; + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = internal_malloc(ms, req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; +} + +void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { + if (oldmem == 0) + return mspace_malloc(msp, bytes); +#ifdef REALLOC_ZERO_BYTES_FREES + if (bytes == 0) { + mspace_free(msp, oldmem); + return 0; + } +#endif /* REALLOC_ZERO_BYTES_FREES */ + else { +#if FOOTERS + mchunkptr p = mem2chunk(oldmem); + mstate ms = get_mstate_for(p); +#else /* FOOTERS */ + mstate ms = (mstate)msp; +#endif /* FOOTERS */ + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return internal_realloc(ms, oldmem, bytes); + } +} + +void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return internal_memalign(ms, alignment, bytes); +} + +void** mspace_independent_calloc(mspace msp, size_t n_elements, + size_t elem_size, void* chunks[]) { + size_t sz = elem_size; /* serves as 1-element array */ + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, &sz, 3, chunks); +} + +void** mspace_independent_comalloc(mspace msp, size_t n_elements, + size_t sizes[], void* chunks[]) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, sizes, 0, chunks); +} + +int mspace_trim(mspace msp, size_t pad) { + int result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + if (!PREACTION(ms)) { + result = sys_trim(ms, pad); + POSTACTION(ms); + } + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; +} + +void mspace_malloc_stats(mspace msp) { + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + internal_malloc_stats(ms); + } + else { + USAGE_ERROR_ACTION(ms,ms); + } +} + +size_t mspace_footprint(mspace msp) { + size_t result; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->footprint; + } + USAGE_ERROR_ACTION(ms,ms); + return result; +} + + +size_t mspace_max_footprint(mspace msp) { + size_t result; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->max_footprint; + } + USAGE_ERROR_ACTION(ms,ms); + return result; +} + + +#if !NO_MALLINFO +struct mallinfo mspace_mallinfo(mspace msp) { + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + } + return internal_mallinfo(ms); +} +#endif /* NO_MALLINFO */ + +int mspace_mallopt(int param_number, int value) { + return change_mparam(param_number, value); +} + +#endif /* MSPACES */ + +/* -------------------- Alternative MORECORE functions ------------------- */ + +/* + Guidelines for creating a custom version of MORECORE: + + * For best performance, MORECORE should allocate in multiples of pagesize. + * MORECORE may allocate more memory than requested. (Or even less, + but this will usually result in a malloc failure.) + * MORECORE must not allocate memory when given argument zero, but + instead return one past the end address of memory from previous + nonzero call. + * For best performance, consecutive calls to MORECORE with positive + arguments should return increasing addresses, indicating that + space has been contiguously extended. + * Even though consecutive calls to MORECORE need not return contiguous + addresses, it must be OK for malloc'ed chunks to span multiple + regions in those cases where they do happen to be contiguous. + * MORECORE need not handle negative arguments -- it may instead + just return MFAIL when given negative arguments. + Negative arguments are always multiples of pagesize. MORECORE + must not misinterpret negative args as large positive unsigned + args. You can suppress all such calls from even occurring by defining + MORECORE_CANNOT_TRIM, + + As an example alternative MORECORE, here is a custom allocator + kindly contributed for pre-OSX macOS. It uses virtually but not + necessarily physically contiguous non-paged memory (locked in, + present and won't get swapped out). You can use it by uncommenting + this section, adding some #includes, and setting up the appropriate + defines above: + + #define MORECORE osMoreCore + + There is also a shutdown routine that should somehow be called for + cleanup upon program exit. + + #define MAX_POOL_ENTRIES 100 + #define MINIMUM_MORECORE_SIZE (64 * 1024U) + static int next_os_pool; + void *our_os_pools[MAX_POOL_ENTRIES]; + + void *osMoreCore(int size) + { + void *ptr = 0; + static void *sbrk_top = 0; + + if (size > 0) + { + if (size < MINIMUM_MORECORE_SIZE) + size = MINIMUM_MORECORE_SIZE; + if (CurrentExecutionLevel() == kTaskLevel) + ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); + if (ptr == 0) + { + return (void *) MFAIL; + } + // save ptrs so they can be freed during cleanup + our_os_pools[next_os_pool] = ptr; + next_os_pool++; + ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); + sbrk_top = (char *) ptr + size; + return ptr; + } + else if (size < 0) + { + // we don't currently support shrink behavior + return (void *) MFAIL; + } + else + { + return sbrk_top; + } + } + + // cleanup any allocated memory pools + // called as last thing before shutting down driver + + void osCleanupMem(void) + { + void **ptr; + + for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) + if (*ptr) + { + PoolDeallocate(*ptr); + *ptr = 0; + } + } + +*/ + + +/* ----------------------------------------------------------------------- +History: + V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) + * Add max_footprint functions + * Ensure all appropriate literals are size_t + * Fix conditional compilation problem for some #define settings + * Avoid concatenating segments with the one provided + in create_mspace_with_base + * Rename some variables to avoid compiler shadowing warnings + * Use explicit lock initialization. + * Better handling of sbrk interference. + * Simplify and fix segment insertion, trimming and mspace_destroy + * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x + * Thanks especially to Dennis Flanagan for help on these. + + V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) + * Fix memalign brace error. + + V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) + * Fix improper #endif nesting in C++ + * Add explicit casts needed for C++ + + V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) + * Use trees for large bins + * Support mspaces + * Use segments to unify sbrk-based and mmap-based system allocation, + removing need for emulation on most platforms without sbrk. + * Default safety checks + * Optional footer checks. Thanks to William Robertson for the idea. + * Internal code refactoring + * Incorporate suggestions and platform-specific changes. + Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, + Aaron Bachmann, Emery Berger, and others. + * Speed up non-fastbin processing enough to remove fastbins. + * Remove useless cfree() to avoid conflicts with other apps. + * Remove internal memcpy, memset. Compilers handle builtins better. + * Remove some options that no one ever used and rename others. + + V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) + * Fix malloc_state bitmap array misdeclaration + + V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) + * Allow tuning of FIRST_SORTED_BIN_SIZE + * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. + * Better detection and support for non-contiguousness of MORECORE. + Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger + * Bypass most of malloc if no frees. Thanks To Emery Berger. + * Fix freeing of old top non-contiguous chunk im sysmalloc. + * Raised default trim and map thresholds to 256K. + * Fix mmap-related #defines. Thanks to Lubos Lunak. + * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. + * Branch-free bin calculation + * Default trim and mmap thresholds now 256K. + + V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) + * Introduce independent_comalloc and independent_calloc. + Thanks to Michael Pachos for motivation and help. + * Make optional .h file available + * Allow > 2GB requests on 32bit systems. + * new WIN32 sbrk, mmap, munmap, lock code from . + Thanks also to Andreas Mueller , + and Anonymous. + * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for + helping test this.) + * memalign: check alignment arg + * realloc: don't try to shift chunks backwards, since this + leads to more fragmentation in some programs and doesn't + seem to help in any others. + * Collect all cases in malloc requiring system memory into sysmalloc + * Use mmap as backup to sbrk + * Place all internal state in malloc_state + * Introduce fastbins (although similar to 2.5.1) + * Many minor tunings and cosmetic improvements + * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK + * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS + Thanks to Tony E. Bennett and others. + * Include errno.h to support default failure action. + + V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) + * return null for negative arguments + * Added Several WIN32 cleanups from Martin C. Fong + * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' + (e.g. WIN32 platforms) + * Cleanup header file inclusion for WIN32 platforms + * Cleanup code to avoid Microsoft Visual C++ compiler complaints + * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing + memory allocation routines + * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) + * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to + usage of 'assert' in non-WIN32 code + * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to + avoid infinite loop + * Always call 'fREe()' rather than 'free()' + + V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) + * Fixed ordering problem with boundary-stamping + + V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) + * Added pvalloc, as recommended by H.J. Liu + * Added 64bit pointer support mainly from Wolfram Gloger + * Added anonymously donated WIN32 sbrk emulation + * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen + * malloc_extend_top: fix mask error that caused wastage after + foreign sbrks + * Add linux mremap support code from HJ Liu + + V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) + * Integrated most documentation with the code. + * Add support for mmap, with help from + Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Use last_remainder in more cases. + * Pack bins using idea from colin@nyx10.cs.du.edu + * Use ordered bins instead of best-fit threshold + * Eliminate block-local decls to simplify tracing and debugging. + * Support another case of realloc via move into top + * Fix error occurring when initial sbrk_base not word-aligned. + * Rely on page size for units instead of SBRK_UNIT to + avoid surprises about sbrk alignment conventions. + * Add mallinfo, mallopt. Thanks to Raymond Nijssen + (raymond@es.ele.tue.nl) for the suggestion. + * Add `pad' argument to malloc_trim and top_pad mallopt parameter. + * More precautions for cases where other routines call sbrk, + courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Added macros etc., allowing use in linux libc from + H.J. Lu (hjl@gnu.ai.mit.edu) + * Inverted this history list + + V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) + * Re-tuned and fixed to behave more nicely with V2.6.0 changes. + * Removed all preallocation code since under current scheme + the work required to undo bad preallocations exceeds + the work saved in good cases for most test programs. + * No longer use return list or unconsolidated bins since + no scheme using them consistently outperforms those that don't + given above changes. + * Use best fit for very large chunks to prevent some worst-cases. + * Added some support for debugging + + V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) + * Removed footers when chunks are in use. Thanks to + Paul Wilson (wilson@cs.texas.edu) for the suggestion. + + V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) + * Added malloc_trim, with help from Wolfram Gloger + (wmglo@Dent.MED.Uni-Muenchen.DE). + + V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) + + V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) + * realloc: try to expand in both directions + * malloc: swap order of clean-bin strategy; + * realloc: only conditionally expand backwards + * Try not to scavenge used bins + * Use bin counts as a guide to preallocation + * Occasionally bin return list chunks in first scan + * Add a few optimizations from colin@nyx10.cs.du.edu + + V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) + * faster bin computation & slightly different binning + * merged all consolidations to one part of malloc proper + (eliminating old malloc_find_space & malloc_clean_bin) + * Scan 2 returns chunks (not just 1) + * Propagate failure in realloc if malloc returns 0 + * Add stuff to allow compilation on non-ANSI compilers + from kpv@research.att.com + + V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) + * removed potential for odd address access in prev_chunk + * removed dependency on getpagesize.h + * misc cosmetics and a bit more internal documentation + * anticosmetics: mangled names in macros to evade debugger strangeness + * tested on sparc, hp-700, dec-mips, rs6000 + with gcc & native cc (hp, dec only) allowing + Detlefs & Zorn comparison study (in SIGPLAN Notices.) + + Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) + * Based loosely on libg++-1.2X malloc. (It retains some of the overall + structure of old version, but most details differ.) + +*/ diff --git a/deps/libffi/src/frv/eabi.S b/deps/libffi/src/frv/eabi.S new file mode 100644 index 00000000000000..379ea4bb0a743d --- /dev/null +++ b/deps/libffi/src/frv/eabi.S @@ -0,0 +1,128 @@ +/* ----------------------------------------------------------------------- + eabi.S - Copyright (c) 2004 Anthony Green + + FR-V Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .globl ffi_prep_args_EABI + + .text + .p2align 4 + .globl ffi_call_EABI + .type ffi_call_EABI, @function + + # gr8 : ffi_prep_args + # gr9 : &ecif + # gr10: cif->bytes + # gr11: fig->flags + # gr12: ecif.rvalue + # gr13: fn + +ffi_call_EABI: + addi sp, #-80, sp + sti fp, @(sp, #24) + addi sp, #24, fp + movsg lr, gr5 + + /* Make room for the new arguments. */ + /* subi sp, fp, gr10 */ + + /* Store return address and incoming args on stack. */ + sti gr5, @(fp, #8) + sti gr8, @(fp, #-4) + sti gr9, @(fp, #-8) + sti gr10, @(fp, #-12) + sti gr11, @(fp, #-16) + sti gr12, @(fp, #-20) + sti gr13, @(fp, #-24) + + sub sp, gr10, sp + + /* Call ffi_prep_args. */ + ldi @(fp, #-4), gr4 + addi sp, #0, gr8 + ldi @(fp, #-8), gr9 +#ifdef __FRV_FDPIC__ + ldd @(gr4, gr0), gr14 + calll @(gr14, gr0) +#else + calll @(gr4, gr0) +#endif + + /* ffi_prep_args returns the new stack pointer. */ + mov gr8, gr4 + + ldi @(sp, #0), gr8 + ldi @(sp, #4), gr9 + ldi @(sp, #8), gr10 + ldi @(sp, #12), gr11 + ldi @(sp, #16), gr12 + ldi @(sp, #20), gr13 + + /* Always copy the return value pointer into the hidden + parameter register. This is only strictly necessary + when we're returning an aggregate type, but it doesn't + hurt to do this all the time, and it saves a branch. */ + ldi @(fp, #-20), gr3 + + /* Use the ffi_prep_args return value for the new sp. */ + mov gr4, sp + + /* Call the target function. */ + ldi @(fp, -24), gr4 +#ifdef __FRV_FDPIC__ + ldd @(gr4, gr0), gr14 + calll @(gr14, gr0) +#else + calll @(gr4, gr0) +#endif + + /* Store the result. */ + ldi @(fp, #-16), gr10 /* fig->flags */ + ldi @(fp, #-20), gr4 /* ecif.rvalue */ + + /* Is the return value stored in two registers? */ + cmpi gr10, #8, icc0 + bne icc0, 0, .L2 + /* Yes, save them. */ + sti gr8, @(gr4, #0) + sti gr9, @(gr4, #4) + bra .L3 +.L2: + /* Is the return value a structure? */ + cmpi gr10, #-1, icc0 + beq icc0, 0, .L3 + /* No, save a 4 byte return value. */ + sti gr8, @(gr4, #0) +.L3: + + /* Restore the stack, and return. */ + ldi @(fp, 8), gr5 + ld @(fp, gr0), fp + addi sp,#80,sp + jmpl @(gr5,gr0) + .size ffi_call_EABI, .-ffi_call_EABI + diff --git a/deps/libffi/src/frv/ffi.c b/deps/libffi/src/frv/ffi.c new file mode 100644 index 00000000000000..ed1c65a1a362b0 --- /dev/null +++ b/deps/libffi/src/frv/ffi.c @@ -0,0 +1,292 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2004 Anthony Green + Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2008 Red Hat, Inc. + + FR-V Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void *ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + register int count = 0; + + p_argv = ecif->avalue; + argp = stack; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + z = sizeof(void*); + *(void **) argp = *p_argv; + } + /* if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (count > 24) + { + // This is going on the stack. Turn it into a double. + *(double *) argp = (double) *(float*)(* p_argv); + z = sizeof(double); + } + else + *(void **) argp = *(void **)(* p_argv); + } */ + else if (z < sizeof(int)) + { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof(int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + count += z; + } + + return (stack + ((count > 24) ? 24 : FFI_ALIGN_DOWN(count, 8))); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = -1; + else + cif->flags = cif->rtype->size; + + cif->bytes = FFI_ALIGN (cif->bytes, 8); + + return FFI_OK; +} + +extern void ffi_call_EABI(void *(*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, + unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + + switch (cif->abi) + { + case FFI_EABI: + ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + unsigned arg4, unsigned arg5, unsigned arg6) +{ + /* This function is called by a trampoline. The trampoline stows a + pointer to the ffi_closure object in gr7. We must save this + pointer in a place that will persist while we do our work. */ + register ffi_closure *creg __asm__ ("gr7"); + ffi_closure *closure = creg; + + /* Arguments that don't fit in registers are found on the stack + at a fixed offset above the current frame pointer. */ + register char *frame_pointer __asm__ ("fp"); + char *stack_args = frame_pointer + 16; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { arg1, arg2, arg3, arg4, arg5, arg6 }; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int i; + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + avalue[i] = ptr; + break; + case FFI_TYPE_STRUCT: + avalue[i] = *(void**)ptr; + break; + default: + /* This is an 8-byte value. */ + avalue[i] = ptr; + ptr += 4; + break; + } + ptr += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + if (ptr == ((char *)register_args + (6*4))) + ptr = stack_args; + } + + /* Invoke the closure. */ + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + /* The caller allocates space for the return structure, and + passes a pointer to this space in gr3. Use this value directly + as the return value. */ + register void *return_struct_ptr __asm__("gr3"); + (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data); + } + else + { + /* Allocate space for the return value and call the function. */ + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + + /* Functions return 4-byte or smaller results in gr8. 8-byte + values also use gr9. We fill the both, even for small return + values, just to avoid a branch. */ + asm ("ldi @(%0, #0), gr8" : : "r" (&rvalue)); + asm ("ldi @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1])); + } +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long fn = (long) ffi_closure_eabi; + unsigned long cls = (long) codeloc; +#ifdef __FRV_FDPIC__ + register void *got __asm__("gr15"); +#endif + int i; + + fn = (unsigned long) ffi_closure_eabi; + +#ifdef __FRV_FDPIC__ + tramp[0] = &((unsigned int *)codeloc)[2]; + tramp[1] = got; + tramp[2] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ + tramp[3] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ + tramp[4] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ + tramp[5] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ + tramp[6] = 0x9cc86000; /* ldi @(gr6, #0), gr14 */ + tramp[7] = 0x8030e000; /* jmpl @(gr14, gr0) */ +#else + tramp[0] = 0x8cfc0000 + (fn & 0xffff); /* setlos lo(fn), gr6 */ + tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7 */ + tramp[2] = 0x8cf80000 + (fn >> 16); /* sethi hi(fn), gr6 */ + tramp[3] = 0x8ef80000 + (cls >> 16); /* sethi hi(cls), gr7 */ + tramp[4] = 0x80300006; /* jmpl @(gr0, gr6) */ +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Cache flushing. */ + for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++) + __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i), + "r" (codeloc)); + + return FFI_OK; +} diff --git a/deps/libffi/src/frv/ffitarget.h b/deps/libffi/src/frv/ffitarget.h new file mode 100644 index 00000000000000..d42540e53d3ad6 --- /dev/null +++ b/deps/libffi/src/frv/ffitarget.h @@ -0,0 +1,62 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2004 Red Hat, Inc. + Target configuration macros for FR-V + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_EABI, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_EABI +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#ifdef __FRV_FDPIC__ +/* Trampolines are 8 4-byte instructions long. */ +#define FFI_TRAMPOLINE_SIZE (8*4) +#else +/* Trampolines are 5 4-byte instructions long. */ +#define FFI_TRAMPOLINE_SIZE (5*4) +#endif + +#endif diff --git a/deps/libffi/src/ia64/ffi.c b/deps/libffi/src/ia64/ffi.c new file mode 100644 index 00000000000000..1395f26a88feab --- /dev/null +++ b/deps/libffi/src/ia64/ffi.c @@ -0,0 +1,616 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. + Copyright (c) 2000 Hewlett Packard Company + Copyright (c) 2011 Anthony Green + + IA64 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include + +#include "ia64_flags.h" + +/* A 64-bit pointer value. In LP64 mode, this is effectively a plain + pointer. In ILP32 mode, it's a pointer that's been extended to + 64 bits by "addp4". */ +#ifdef __hpux +typedef void *PTR64; +#else // some other unix +typedef void *PTR64 __attribute__((mode(DI))); +#endif + +/* Memory image of fp register contents. This is the implementation + specific format used by ldf.fill/stf.spill. All we care about is + that it wants a 16 byte aligned slot. */ +typedef struct +{ + UINT64 x[2] __attribute__((aligned(16))); +} fpreg; + + +/* The stack layout given to ffi_call_unix and ffi_closure_unix_inner. */ + +struct ia64_args +{ + fpreg fp_regs[8]; /* Contents of 8 fp arg registers. */ + UINT64 gp_regs[8]; /* Contents of 8 gp arg registers. */ + UINT64 other_args[]; /* Arguments passed on stack, variable size. */ +}; + + +/* Adjust ADDR, a pointer to an 8 byte slot, to point to the low LEN bytes. */ + +static inline void * +endian_adjust (void *addr, size_t len) +{ +#ifdef __BIG_ENDIAN__ + return addr + (8 - len); +#else + return addr; +#endif +} + +/* Store VALUE to ADDR in the current cpu implementation's fp spill format. + This is a macro instead of a function, so that it works for all 3 floating + point types without type conversions. Type conversion to long double breaks + the denorm support. */ + +#ifdef __hpux +#define stf_spill(addr, value) +#else +#define stf_spill(addr, value) \ + asm ("stf.spill %0 = %1%P0" : "=m" (*addr) : "f"(value)); +#endif + +/* Load a value from ADDR, which is in the current cpu implementation's + fp spill format. As above, this must also be a macro. */ + +#ifdef __hpux +#define ldf_fill(result, addr) +#else +#define ldf_fill(result, addr) \ + asm ("ldf.fill %0 = %1%P1" : "=f"(result) : "m"(*addr)); +#endif + +/* Return the size of the C type associated with with TYPE. Which will + be one of the FFI_IA64_TYPE_HFA_* values. */ + +static size_t +hfa_type_size (int type) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + return sizeof(float); + case FFI_IA64_TYPE_HFA_DOUBLE: + return sizeof(double); + case FFI_IA64_TYPE_HFA_LDOUBLE: + return sizeof(__float80); + default: + abort (); + } +} + +/* Load from ADDR a value indicated by TYPE. Which will be one of + the FFI_IA64_TYPE_HFA_* values. */ + +static void +hfa_type_load (fpreg *fpaddr, int type, void *addr) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + stf_spill (fpaddr, *(float *) addr); + return; + case FFI_IA64_TYPE_HFA_DOUBLE: + stf_spill (fpaddr, *(double *) addr); + return; + case FFI_IA64_TYPE_HFA_LDOUBLE: + stf_spill (fpaddr, *(__float80 *) addr); + return; + default: + abort (); + } +} + +/* Load VALUE into ADDR as indicated by TYPE. Which will be one of + the FFI_IA64_TYPE_HFA_* values. */ + +static void +hfa_type_store (int type, void *addr, fpreg *fpaddr) +{ + switch (type) + { + case FFI_IA64_TYPE_HFA_FLOAT: + { + float result; + ldf_fill (result, fpaddr); + *(float *) addr = result; + break; + } + case FFI_IA64_TYPE_HFA_DOUBLE: + { + double result; + ldf_fill (result, fpaddr); + *(double *) addr = result; + break; + } + case FFI_IA64_TYPE_HFA_LDOUBLE: + { + __float80 result; + ldf_fill (result, fpaddr); + *(__float80 *) addr = result; + break; + } + default: + abort (); + } +} + +/* Is TYPE a struct containing floats, doubles, or extended doubles, + all of the same fp type? If so, return the element type. Return + FFI_TYPE_VOID if not. */ + +static int +hfa_element_type (ffi_type *type, int nested) +{ + int element = FFI_TYPE_VOID; + + switch (type->type) + { + case FFI_TYPE_FLOAT: + /* We want to return VOID for raw floating-point types, but the + synthetic HFA type if we're nested within an aggregate. */ + if (nested) + element = FFI_IA64_TYPE_HFA_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + /* Similarly. */ + if (nested) + element = FFI_IA64_TYPE_HFA_DOUBLE; + break; + + case FFI_TYPE_LONGDOUBLE: + /* Similarly, except that that HFA is true for double extended, + but not quad precision. Both have sizeof == 16, so tell the + difference based on the precision. */ + if (LDBL_MANT_DIG == 64 && nested) + element = FFI_IA64_TYPE_HFA_LDOUBLE; + break; + + case FFI_TYPE_STRUCT: + { + ffi_type **ptr = &type->elements[0]; + + for (ptr = &type->elements[0]; *ptr ; ptr++) + { + int sub_element = hfa_element_type (*ptr, 1); + if (sub_element == FFI_TYPE_VOID) + return FFI_TYPE_VOID; + + if (element == FFI_TYPE_VOID) + element = sub_element; + else if (element != sub_element) + return FFI_TYPE_VOID; + } + } + break; + + default: + return FFI_TYPE_VOID; + } + + return element; +} + + +/* Perform machine dependent cif processing. */ + +static ffi_status +ffi_prep_cif_machdep_core(ffi_cif *cif) +{ + int flags; + + /* Adjust cif->bytes to include space for the bits of the ia64_args frame + that precedes the integer register portion. The estimate that the + generic bits did for the argument space required is good enough for the + integer component. */ + cif->bytes += offsetof(struct ia64_args, gp_regs[0]); + if (cif->bytes < sizeof(struct ia64_args)) + cif->bytes = sizeof(struct ia64_args); + + /* Set the return type flag. */ + flags = cif->rtype->type; + switch (cif->rtype->type) + { + case FFI_TYPE_LONGDOUBLE: + /* Leave FFI_TYPE_LONGDOUBLE as meaning double extended precision, + and encode quad precision as a two-word integer structure. */ + if (LDBL_MANT_DIG != 64) + flags = FFI_IA64_TYPE_SMALL_STRUCT | (16 << 8); + break; + + case FFI_TYPE_STRUCT: + { + size_t size = cif->rtype->size; + int hfa_type = hfa_element_type (cif->rtype, 0); + + if (hfa_type != FFI_TYPE_VOID) + { + size_t nelts = size / hfa_type_size (hfa_type); + if (nelts <= 8) + flags = hfa_type | (size << 8); + } + else + { + if (size <= 32) + flags = FFI_IA64_TYPE_SMALL_STRUCT | (size << 8); + } + } + break; + + default: + break; + } + cif->flags = flags; + + return FFI_OK; +} + +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + cif->nfixedargs = cif->nargs; + return ffi_prep_cif_machdep_core(cif); +} + +ffi_status +ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs MAYBE_UNUSED) +{ + cif->nfixedargs = nfixedargs; + return ffi_prep_cif_machdep_core(cif); +} + +extern int ffi_call_unix (struct ia64_args *, PTR64, void (*)(void), UINT64); + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + struct ia64_args *stack; + long i, avn, gpcount, fpcount; + ffi_type **p_arg; + + FFI_ASSERT (cif->abi == FFI_UNIX); + + /* If we have no spot for a return value, make one. */ + if (rvalue == NULL && cif->rtype->type != FFI_TYPE_VOID) + rvalue = alloca (cif->rtype->size); + + /* Allocate the stack frame. */ + stack = alloca (cif->bytes); + + gpcount = fpcount = 0; + avn = cif->nargs; + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + stack->gp_regs[gpcount++] = *(SINT8 *)avalue[i]; + break; + case FFI_TYPE_UINT8: + stack->gp_regs[gpcount++] = *(UINT8 *)avalue[i]; + break; + case FFI_TYPE_SINT16: + stack->gp_regs[gpcount++] = *(SINT16 *)avalue[i]; + break; + case FFI_TYPE_UINT16: + stack->gp_regs[gpcount++] = *(UINT16 *)avalue[i]; + break; + case FFI_TYPE_SINT32: + stack->gp_regs[gpcount++] = *(SINT32 *)avalue[i]; + break; + case FFI_TYPE_UINT32: + stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i]; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i]; + break; + + case FFI_TYPE_POINTER: + stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i]; + break; + + case FFI_TYPE_FLOAT: + if (gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]); + { + UINT32 tmp; + memcpy (&tmp, avalue[i], sizeof (UINT32)); + stack->gp_regs[gpcount++] = tmp; + } + break; + + case FFI_TYPE_DOUBLE: + if (gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]); + memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64)); + break; + + case FFI_TYPE_LONGDOUBLE: + if (gpcount & 1) + gpcount++; + if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8) + stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]); + memcpy (&stack->gp_regs[gpcount], avalue[i], 16); + gpcount += 2; + break; + + case FFI_TYPE_STRUCT: + { + size_t size = (*p_arg)->size; + size_t align = (*p_arg)->alignment; + int hfa_type = hfa_element_type (*p_arg, 0); + + FFI_ASSERT (align <= 16); + if (align == 16 && (gpcount & 1)) + gpcount++; + + if (hfa_type != FFI_TYPE_VOID) + { + size_t hfa_size = hfa_type_size (hfa_type); + size_t offset = 0; + size_t gp_offset = gpcount * 8; + + while (fpcount < 8 + && offset < size + && gp_offset < 8 * 8) + { + hfa_type_load (&stack->fp_regs[fpcount], hfa_type, + avalue[i] + offset); + offset += hfa_size; + gp_offset += hfa_size; + fpcount += 1; + } + } + + memcpy (&stack->gp_regs[gpcount], avalue[i], size); + gpcount += (size + 7) / 8; + } + break; + + default: + abort (); + } + } + + ffi_call_unix (stack, rvalue, fn, cif->flags); +} + +/* Closures represent a pair consisting of a function pointer, and + some user data. A closure is invoked by reinterpreting the closure + as a function pointer, and branching to it. Thus we can make an + interpreted function callable as a C function: We turn the + interpreter itself, together with a pointer specifying the + interpreted procedure, into a closure. + + For IA64, function pointer are already pairs consisting of a code + pointer, and a gp pointer. The latter is needed to access global + variables. Here we set up such a pair as the first two words of + the closure (in the "trampoline" area), but we replace the gp + pointer with a pointer to the closure itself. We also add the real + gp pointer to the closure. This allows the function entry code to + both retrieve the user data, and to restore the correct gp pointer. */ + +extern void ffi_closure_unix (); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + /* The layout of a function descriptor. A C function pointer really + points to one of these. */ + struct ia64_fd + { + UINT64 code_pointer; + UINT64 gp; + }; + + struct ffi_ia64_trampoline_struct + { + UINT64 code_pointer; /* Pointer to ffi_closure_unix. */ + UINT64 fake_gp; /* Pointer to closure, installed as gp. */ + UINT64 real_gp; /* Real gp value. */ + }; + + struct ffi_ia64_trampoline_struct *tramp; + struct ia64_fd *fd; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp; + fd = (struct ia64_fd *)(void *)ffi_closure_unix; + + tramp->code_pointer = fd->code_pointer; + tramp->real_gp = fd->gp; + tramp->fake_gp = (UINT64)(PTR64)codeloc; + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + + +UINT64 +ffi_closure_unix_inner (ffi_closure *closure, struct ia64_args *stack, + void *rvalue, void *r8) +{ + ffi_cif *cif; + void **avalue; + ffi_type **p_arg; + long i, avn, gpcount, fpcount, nfixedargs; + + cif = closure->cif; + avn = cif->nargs; + nfixedargs = cif->nfixedargs; + avalue = alloca (avn * sizeof (void *)); + + /* If the structure return value is passed in memory get that location + from r8 so as to pass the value directly back to the caller. */ + if (cif->flags == FFI_TYPE_STRUCT) + rvalue = r8; + + gpcount = fpcount = 0; + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + int named = i < nfixedargs; + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 1); + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 2); + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], 4); + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + avalue[i] = &stack->gp_regs[gpcount++]; + break; + case FFI_TYPE_POINTER: + avalue[i] = endian_adjust(&stack->gp_regs[gpcount++], sizeof(void*)); + break; + + case FFI_TYPE_FLOAT: + if (named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + float result; + avalue[i] = addr; + ldf_fill (result, addr); + *(float *)addr = result; + } + else + avalue[i] = endian_adjust(&stack->gp_regs[gpcount], 4); + gpcount++; + break; + + case FFI_TYPE_DOUBLE: + if (named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + double result; + avalue[i] = addr; + ldf_fill (result, addr); + *(double *)addr = result; + } + else + avalue[i] = &stack->gp_regs[gpcount]; + gpcount++; + break; + + case FFI_TYPE_LONGDOUBLE: + if (gpcount & 1) + gpcount++; + if (LDBL_MANT_DIG == 64 && named && gpcount < 8 && fpcount < 8) + { + fpreg *addr = &stack->fp_regs[fpcount++]; + __float80 result; + avalue[i] = addr; + ldf_fill (result, addr); + *(__float80 *)addr = result; + } + else + avalue[i] = &stack->gp_regs[gpcount]; + gpcount += 2; + break; + + case FFI_TYPE_STRUCT: + { + size_t size = (*p_arg)->size; + size_t align = (*p_arg)->alignment; + int hfa_type = hfa_element_type (*p_arg, 0); + + FFI_ASSERT (align <= 16); + if (align == 16 && (gpcount & 1)) + gpcount++; + + if (hfa_type != FFI_TYPE_VOID) + { + size_t hfa_size = hfa_type_size (hfa_type); + size_t offset = 0; + size_t gp_offset = gpcount * 8; + void *addr = alloca (size); + + avalue[i] = addr; + + while (fpcount < 8 + && offset < size + && gp_offset < 8 * 8) + { + hfa_type_store (hfa_type, addr + offset, + &stack->fp_regs[fpcount]); + offset += hfa_size; + gp_offset += hfa_size; + fpcount += 1; + } + + if (offset < size) + memcpy (addr + offset, (char *)stack->gp_regs + gp_offset, + size - offset); + } + else + avalue[i] = &stack->gp_regs[gpcount]; + + gpcount += (size + 7) / 8; + } + break; + + default: + abort (); + } + } + + closure->fun (cif, rvalue, avalue, closure->user_data); + + return cif->flags; +} diff --git a/deps/libffi/src/ia64/ffitarget.h b/deps/libffi/src/ia64/ffitarget.h new file mode 100644 index 00000000000000..fd5b9a0ee1c7c9 --- /dev/null +++ b/deps/libffi/src/ia64/ffitarget.h @@ -0,0 +1,56 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for IA-64. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long long ffi_arg; +typedef signed long long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_UNIX, /* Linux and all Unix variants use the same conventions */ + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 /* Really the following struct, which */ + /* can be interpreted as a C function */ + /* descriptor: */ +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs + +#endif diff --git a/deps/libffi/src/ia64/ia64_flags.h b/deps/libffi/src/ia64/ia64_flags.h new file mode 100644 index 00000000000000..9d652cef14cee7 --- /dev/null +++ b/deps/libffi/src/ia64/ia64_flags.h @@ -0,0 +1,40 @@ +/* ----------------------------------------------------------------------- + ia64_flags.h - Copyright (c) 2000 Hewlett Packard Company + + IA64/unix Foreign Function Interface + + Original author: Hans Boehm, HP Labs + + 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. + ----------------------------------------------------------------------- */ + +/* "Type" codes used between assembly and C. When used as a part of + a cfi->flags value, the low byte will be these extra type codes, + and bits 8-31 will be the actual size of the type. */ + +/* Small structures containing N words in integer registers. */ +#define FFI_IA64_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 1) + +/* Homogeneous Floating Point Aggregates (HFAs) which are returned + in FP registers. */ +#define FFI_IA64_TYPE_HFA_FLOAT (FFI_TYPE_LAST + 2) +#define FFI_IA64_TYPE_HFA_DOUBLE (FFI_TYPE_LAST + 3) +#define FFI_IA64_TYPE_HFA_LDOUBLE (FFI_TYPE_LAST + 4) diff --git a/deps/libffi/src/ia64/unix.S b/deps/libffi/src/ia64/unix.S new file mode 100644 index 00000000000000..04908368c3e26a --- /dev/null +++ b/deps/libffi/src/ia64/unix.S @@ -0,0 +1,585 @@ +/* ----------------------------------------------------------------------- + unix.S - Copyright (c) 1998, 2008 Red Hat, Inc. + Copyright (c) 2000 Hewlett Packard Company + + IA64/unix Foreign Function Interface + + Primary author: Hans Boehm, HP Labs + + Loosely modeled on Cygnus code for other platforms. + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "ia64_flags.h" + + .pred.safe_across_calls p1-p5,p16-p63 +.text +/* HPUX assembler needs to see these symbols, otherwise compilation + fails */ +#ifdef __hpux + .global memcpy + .global ffi_closure_unix_inner +#endif + +/* int ffi_call_unix (struct ia64_args *stack, PTR64 rvalue, + void (*fn)(void), int flags); + */ + + .align 16 + .global ffi_call_unix + .proc ffi_call_unix +ffi_call_unix: + .prologue + /* Bit o trickiness. We actually share a stack frame with ffi_call. + Rely on the fact that ffi_call uses a vframe and don't bother + tracking one here at all. */ + .fframe 0 + .save ar.pfs, r36 // loc0 + alloc loc0 = ar.pfs, 4, 3, 8, 0 + .save rp, loc1 + mov loc1 = b0 + .body + add r16 = 16, in0 + mov loc2 = gp + mov r8 = in1 + ;; + + /* Load up all of the argument registers. */ + ldf.fill f8 = [in0], 32 + ldf.fill f9 = [r16], 32 + ;; + ldf.fill f10 = [in0], 32 + ldf.fill f11 = [r16], 32 + ;; + ldf.fill f12 = [in0], 32 + ldf.fill f13 = [r16], 32 + ;; + ldf.fill f14 = [in0], 32 + ldf.fill f15 = [r16], 24 + ;; + ld8 out0 = [in0], 16 + ld8 out1 = [r16], 16 + ;; + ld8 out2 = [in0], 16 + ld8 out3 = [r16], 16 + ;; + ld8 out4 = [in0], 16 + ld8 out5 = [r16], 16 + ;; + ld8 out6 = [in0] + ld8 out7 = [r16] + ;; + + /* Deallocate the register save area from the stack frame. */ + mov sp = in0 + + /* Call the target function. */ + ld8 r16 = [in2], 8 + ;; + ld8 gp = [in2] + mov b6 = r16 + br.call.sptk.many b0 = b6 + ;; + + /* Dispatch to handle return value. */ + mov gp = loc2 + zxt1 r16 = in3 + ;; + mov ar.pfs = loc0 + addl r18 = @ltoffx(.Lst_table), gp + ;; + /* default assembler on HP-UX does not support LDXMOV */ +#ifdef __hpux + ld8 r18 = [r18] +#else + ld8.mov r18 = [r18], .Lst_table +#endif + mov b0 = loc1 + ;; + shladd r18 = r16, 3, r18 + ;; + ld8 r17 = [r18] + shr in3 = in3, 8 + ;; + add r17 = r17, r18 + ;; + mov b6 = r17 + br b6 + ;; + +.Lst_void: + br.ret.sptk.many b0 + ;; +.Lst_uint8: + zxt1 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint8: + sxt1 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_uint16: + zxt2 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint16: + sxt2 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_uint32: + zxt4 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_sint32: + sxt4 r8 = r8 + ;; + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_int64: + st8 [in1] = r8 + br.ret.sptk.many b0 + ;; +.Lst_float: + stfs [in1] = f8 + br.ret.sptk.many b0 + ;; +.Lst_double: + stfd [in1] = f8 + br.ret.sptk.many b0 + ;; +.Lst_ldouble: + stfe [in1] = f8 + br.ret.sptk.many b0 + ;; + +.Lst_small_struct: + cmp.lt p6, p0 = 8, in3 + cmp.lt p7, p0 = 16, in3 + cmp.lt p8, p0 = 24, in3 + ;; + add r16 = 8, sp + add r17 = 16, sp + add r18 = 24, sp + ;; + st8 [sp] = r8 +(p6) st8 [r16] = r9 + mov out0 = in1 +(p7) st8 [r17] = r10 +(p8) st8 [r18] = r11 + mov out1 = sp + mov out2 = in3 + ;; + // ia64 software calling convention requires + // top 16 bytes of stack to be scratch space + // PLT resolver uses that scratch space at + // 'memcpy' symbol reolution time + add sp = -16, sp + br.call.sptk.many b0 = memcpy# + ;; + mov ar.pfs = loc0 + mov b0 = loc1 + mov gp = loc2 + br.ret.sptk.many b0 + +.Lst_hfa_float: + add r16 = 4, in1 + cmp.lt p6, p0 = 4, in3 + ;; + stfs [in1] = f8, 8 +(p6) stfs [r16] = f9, 8 + cmp.lt p7, p0 = 8, in3 + cmp.lt p8, p0 = 12, in3 + ;; +(p7) stfs [in1] = f10, 8 +(p8) stfs [r16] = f11, 8 + cmp.lt p9, p0 = 16, in3 + cmp.lt p10, p0 = 20, in3 + ;; +(p9) stfs [in1] = f12, 8 +(p10) stfs [r16] = f13, 8 + cmp.lt p6, p0 = 24, in3 + cmp.lt p7, p0 = 28, in3 + ;; +(p6) stfs [in1] = f14 +(p7) stfs [r16] = f15 + br.ret.sptk.many b0 + ;; + +.Lst_hfa_double: + add r16 = 8, in1 + cmp.lt p6, p0 = 8, in3 + ;; + stfd [in1] = f8, 16 +(p6) stfd [r16] = f9, 16 + cmp.lt p7, p0 = 16, in3 + cmp.lt p8, p0 = 24, in3 + ;; +(p7) stfd [in1] = f10, 16 +(p8) stfd [r16] = f11, 16 + cmp.lt p9, p0 = 32, in3 + cmp.lt p10, p0 = 40, in3 + ;; +(p9) stfd [in1] = f12, 16 +(p10) stfd [r16] = f13, 16 + cmp.lt p6, p0 = 48, in3 + cmp.lt p7, p0 = 56, in3 + ;; +(p6) stfd [in1] = f14 +(p7) stfd [r16] = f15 + br.ret.sptk.many b0 + ;; + +.Lst_hfa_ldouble: + add r16 = 16, in1 + cmp.lt p6, p0 = 16, in3 + ;; + stfe [in1] = f8, 32 +(p6) stfe [r16] = f9, 32 + cmp.lt p7, p0 = 32, in3 + cmp.lt p8, p0 = 48, in3 + ;; +(p7) stfe [in1] = f10, 32 +(p8) stfe [r16] = f11, 32 + cmp.lt p9, p0 = 64, in3 + cmp.lt p10, p0 = 80, in3 + ;; +(p9) stfe [in1] = f12, 32 +(p10) stfe [r16] = f13, 32 + cmp.lt p6, p0 = 96, in3 + cmp.lt p7, p0 = 112, in3 + ;; +(p6) stfe [in1] = f14 +(p7) stfe [r16] = f15 + br.ret.sptk.many b0 + ;; + + .endp ffi_call_unix + + .align 16 + .global ffi_closure_unix + .proc ffi_closure_unix + +#define FRAME_SIZE (8*16 + 8*8 + 8*16) + +ffi_closure_unix: + .prologue + .save ar.pfs, r40 // loc0 + alloc loc0 = ar.pfs, 8, 4, 4, 0 + .fframe FRAME_SIZE + add r12 = -FRAME_SIZE, r12 + .save rp, loc1 + mov loc1 = b0 + .save ar.unat, loc2 + mov loc2 = ar.unat + .body + + /* Retrieve closure pointer and real gp. */ +#ifdef _ILP32 + addp4 out0 = 0, gp + addp4 gp = 16, gp +#else + mov out0 = gp + add gp = 16, gp +#endif + ;; + ld8 gp = [gp] + + /* Spill all of the possible argument registers. */ + add r16 = 16 + 8*16, sp + add r17 = 16 + 8*16 + 16, sp + ;; + stf.spill [r16] = f8, 32 + stf.spill [r17] = f9, 32 + mov loc3 = gp + ;; + stf.spill [r16] = f10, 32 + stf.spill [r17] = f11, 32 + ;; + stf.spill [r16] = f12, 32 + stf.spill [r17] = f13, 32 + ;; + stf.spill [r16] = f14, 32 + stf.spill [r17] = f15, 24 + ;; + .mem.offset 0, 0 + st8.spill [r16] = in0, 16 + .mem.offset 8, 0 + st8.spill [r17] = in1, 16 + add out1 = 16 + 8*16, sp + ;; + .mem.offset 0, 0 + st8.spill [r16] = in2, 16 + .mem.offset 8, 0 + st8.spill [r17] = in3, 16 + add out2 = 16, sp + ;; + .mem.offset 0, 0 + st8.spill [r16] = in4, 16 + .mem.offset 8, 0 + st8.spill [r17] = in5, 16 + mov out3 = r8 + ;; + .mem.offset 0, 0 + st8.spill [r16] = in6 + .mem.offset 8, 0 + st8.spill [r17] = in7 + + /* Invoke ffi_closure_unix_inner for the hard work. */ + br.call.sptk.many b0 = ffi_closure_unix_inner + ;; + + /* Dispatch to handle return value. */ + mov gp = loc3 + zxt1 r16 = r8 + ;; + addl r18 = @ltoffx(.Lld_table), gp + mov ar.pfs = loc0 + ;; +#ifdef __hpux + ld8 r18 = [r18] +#else + ld8.mov r18 = [r18], .Lst_table +#endif + mov b0 = loc1 + ;; + shladd r18 = r16, 3, r18 + mov ar.unat = loc2 + ;; + ld8 r17 = [r18] + shr r8 = r8, 8 + ;; + add r17 = r17, r18 + add r16 = 16, sp + ;; + mov b6 = r17 + br b6 + ;; + .label_state 1 + +.Lld_void: + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_int: + .body + .copy_state 1 + ld8 r8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_float: + .body + .copy_state 1 + ldfs f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_double: + .body + .copy_state 1 + ldfd f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; +.Lld_ldouble: + .body + .copy_state 1 + ldfe f8 = [r16] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_small_struct: + .body + .copy_state 1 + add r17 = 8, r16 + cmp.lt p6, p0 = 8, r8 + cmp.lt p7, p0 = 16, r8 + cmp.lt p8, p0 = 24, r8 + ;; + ld8 r8 = [r16], 16 +(p6) ld8 r9 = [r17], 16 + ;; +(p7) ld8 r10 = [r16] +(p8) ld8 r11 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_float: + .body + .copy_state 1 + add r17 = 4, r16 + cmp.lt p6, p0 = 4, r8 + ;; + ldfs f8 = [r16], 8 +(p6) ldfs f9 = [r17], 8 + cmp.lt p7, p0 = 8, r8 + cmp.lt p8, p0 = 12, r8 + ;; +(p7) ldfs f10 = [r16], 8 +(p8) ldfs f11 = [r17], 8 + cmp.lt p9, p0 = 16, r8 + cmp.lt p10, p0 = 20, r8 + ;; +(p9) ldfs f12 = [r16], 8 +(p10) ldfs f13 = [r17], 8 + cmp.lt p6, p0 = 24, r8 + cmp.lt p7, p0 = 28, r8 + ;; +(p6) ldfs f14 = [r16] +(p7) ldfs f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_double: + .body + .copy_state 1 + add r17 = 8, r16 + cmp.lt p6, p0 = 8, r8 + ;; + ldfd f8 = [r16], 16 +(p6) ldfd f9 = [r17], 16 + cmp.lt p7, p0 = 16, r8 + cmp.lt p8, p0 = 24, r8 + ;; +(p7) ldfd f10 = [r16], 16 +(p8) ldfd f11 = [r17], 16 + cmp.lt p9, p0 = 32, r8 + cmp.lt p10, p0 = 40, r8 + ;; +(p9) ldfd f12 = [r16], 16 +(p10) ldfd f13 = [r17], 16 + cmp.lt p6, p0 = 48, r8 + cmp.lt p7, p0 = 56, r8 + ;; +(p6) ldfd f14 = [r16] +(p7) ldfd f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + +.Lld_hfa_ldouble: + .body + .copy_state 1 + add r17 = 16, r16 + cmp.lt p6, p0 = 16, r8 + ;; + ldfe f8 = [r16], 32 +(p6) ldfe f9 = [r17], 32 + cmp.lt p7, p0 = 32, r8 + cmp.lt p8, p0 = 48, r8 + ;; +(p7) ldfe f10 = [r16], 32 +(p8) ldfe f11 = [r17], 32 + cmp.lt p9, p0 = 64, r8 + cmp.lt p10, p0 = 80, r8 + ;; +(p9) ldfe f12 = [r16], 32 +(p10) ldfe f13 = [r17], 32 + cmp.lt p6, p0 = 96, r8 + cmp.lt p7, p0 = 112, r8 + ;; +(p6) ldfe f14 = [r16] +(p7) ldfe f15 = [r17] + .restore sp + add sp = FRAME_SIZE, sp + br.ret.sptk.many b0 + ;; + + .endp ffi_closure_unix +#ifdef __hpux + .rodata +#else + .section .rodata +#endif + .align 8 +.Lst_table: + data8 @pcrel(.Lst_void) // FFI_TYPE_VOID + data8 @pcrel(.Lst_sint32) // FFI_TYPE_INT + data8 @pcrel(.Lst_float) // FFI_TYPE_FLOAT + data8 @pcrel(.Lst_double) // FFI_TYPE_DOUBLE + data8 @pcrel(.Lst_ldouble) // FFI_TYPE_LONGDOUBLE + data8 @pcrel(.Lst_uint8) // FFI_TYPE_UINT8 + data8 @pcrel(.Lst_sint8) // FFI_TYPE_SINT8 + data8 @pcrel(.Lst_uint16) // FFI_TYPE_UINT16 + data8 @pcrel(.Lst_sint16) // FFI_TYPE_SINT16 + data8 @pcrel(.Lst_uint32) // FFI_TYPE_UINT32 + data8 @pcrel(.Lst_sint32) // FFI_TYPE_SINT32 + data8 @pcrel(.Lst_int64) // FFI_TYPE_UINT64 + data8 @pcrel(.Lst_int64) // FFI_TYPE_SINT64 + data8 @pcrel(.Lst_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lst_int64) // FFI_TYPE_POINTER + data8 @pcrel(.Lst_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lst_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lst_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lst_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lst_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE + +.Lld_table: + data8 @pcrel(.Lld_void) // FFI_TYPE_VOID + data8 @pcrel(.Lld_int) // FFI_TYPE_INT + data8 @pcrel(.Lld_float) // FFI_TYPE_FLOAT + data8 @pcrel(.Lld_double) // FFI_TYPE_DOUBLE + data8 @pcrel(.Lld_ldouble) // FFI_TYPE_LONGDOUBLE + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT8 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT8 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT16 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT16 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT32 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT32 + data8 @pcrel(.Lld_int) // FFI_TYPE_UINT64 + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT64 + data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lld_int) // FFI_TYPE_POINTER + data8 @pcrel(.Lld_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/java_raw_api.c b/deps/libffi/src/java_raw_api.c new file mode 100644 index 00000000000000..114d3e47fcdef3 --- /dev/null +++ b/deps/libffi/src/java_raw_api.c @@ -0,0 +1,374 @@ +/* ----------------------------------------------------------------------- + java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc. + + Cloned from raw_api.c + + Raw_api.c author: Kresten Krab Thorup + Java_raw_api.c author: Hans-J. Boehm + + $Id $ + + 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. + ----------------------------------------------------------------------- */ + +/* This defines a Java- and 64-bit specific variant of the raw API. */ +/* It assumes that "raw" argument blocks look like Java stacks on a */ +/* 64-bit machine. Arguments that can be stored in a single stack */ +/* stack slots (longs, doubles) occupy 128 bits, but only the first */ +/* 64 bits are actually used. */ + +#include +#include +#include + +#if !defined(NO_JAVA_RAW_API) + +size_t +ffi_java_raw_size (ffi_cif *cif) +{ + size_t result = 0; + int i; + + ffi_type **at = cif->arg_types; + + for (i = cif->nargs-1; i >= 0; i--, at++) + { + switch((*at) -> type) { + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + result += 2 * FFI_SIZEOF_JAVA_RAW; + break; + case FFI_TYPE_STRUCT: + /* No structure parameters in Java. */ + abort(); + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + default: + result += FFI_SIZEOF_JAVA_RAW; + } + } + + return result; +} + + +void +ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + +#if WORDS_BIGENDIAN + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + *args = (void*) ((char*)(raw++) + 3); + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + *args = (void*) ((char*)(raw++) + 2); + break; + +#if FFI_SIZEOF_JAVA_RAW == 8 + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + *args = (void *)raw; + raw += 2; + break; +#endif + + case FFI_TYPE_POINTER: + *args = (void*) &(raw++)->ptr; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + *args = raw; + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); + } + } + +#else /* WORDS_BIGENDIAN */ + +#if !PDP + + /* then assume little endian */ + for (i = 0; i < cif->nargs; i++, tp++, args++) + { +#if FFI_SIZEOF_JAVA_RAW == 8 + switch((*tp)->type) { + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + *args = (void*) raw; + raw += 2; + break; + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + default: + *args = (void*) raw++; + } +#else /* FFI_SIZEOF_JAVA_RAW != 8 */ + *args = (void*) raw; + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); +#endif /* FFI_SIZEOF_JAVA_RAW == 8 */ + } + +#else +#error "pdp endian not supported" +#endif /* ! PDP */ + +#endif /* WORDS_BIGENDIAN */ +} + +void +ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT8*) (*args); +#else + (raw++)->uint = *(UINT8*) (*args); +#endif + break; + + case FFI_TYPE_SINT8: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT8*) (*args); +#else + (raw++)->sint = *(SINT8*) (*args); +#endif + break; + + case FFI_TYPE_UINT16: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT16*) (*args); +#else + (raw++)->uint = *(UINT16*) (*args); +#endif + break; + + case FFI_TYPE_SINT16: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT16*) (*args); +#else + (raw++)->sint = *(SINT16*) (*args); +#endif + break; + + case FFI_TYPE_UINT32: +#if WORDS_BIGENDIAN + *(UINT32*)(raw++) = *(UINT32*) (*args); +#else + (raw++)->uint = *(UINT32*) (*args); +#endif + break; + + case FFI_TYPE_SINT32: +#if WORDS_BIGENDIAN + *(SINT32*)(raw++) = *(SINT32*) (*args); +#else + (raw++)->sint = *(SINT32*) (*args); +#endif + break; + + case FFI_TYPE_FLOAT: + (raw++)->flt = *(FLOAT32*) (*args); + break; + +#if FFI_SIZEOF_JAVA_RAW == 8 + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + raw->uint = *(UINT64*) (*args); + raw += 2; + break; +#endif + + case FFI_TYPE_POINTER: + (raw++)->ptr = **(void***) args; + break; + + default: +#if FFI_SIZEOF_JAVA_RAW == 8 + FFI_ASSERT(0); /* Should have covered all cases */ +#else + memcpy ((void*) raw->data, (void*)*args, (*tp)->size); + raw += + FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw); +#endif + } + } +} + +#if !FFI_NATIVE_RAW_API + +static void +ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue) +{ +#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 + switch (cif->rtype->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + *(UINT64 *)rvalue <<= 32; + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_INT: +#if FFI_SIZEOF_JAVA_RAW == 4 + case FFI_TYPE_POINTER: +#endif + *(SINT64 *)rvalue <<= 32; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + break; + } +#endif +} + +static void +ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue) +{ +#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8 + switch (cif->rtype->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + *(UINT64 *)rvalue >>= 32; + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_INT: + *(SINT64 *)rvalue >>= 32; + break; + + case FFI_TYPE_COMPLEX: + /* Not supported yet. */ + abort(); + + default: + break; + } +#endif +} + +/* This is a generic definition of ffi_raw_call, to be used if the + * native system does not provide a machine-specific implementation. + * Having this, allows code to be written for the raw API, without + * the need for system-specific code to handle input in that format; + * these following couple of functions will handle the translation forth + * and back automatically. */ + +void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, + ffi_java_raw *raw) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + ffi_java_raw_to_ptrarray (cif, raw, avalue); + ffi_call (cif, fn, rvalue, avalue); + ffi_java_rvalue_to_raw (cif, rvalue); +} + +#if FFI_CLOSURES /* base system provides closures */ + +static void +ffi_java_translate_args (ffi_cif *cif, void *rvalue, + void **avalue, void *user_data) +{ + ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif)); + ffi_raw_closure *cl = (ffi_raw_closure*)user_data; + + ffi_java_ptrarray_to_raw (cif, avalue, raw); + (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data); + ffi_java_raw_to_rvalue (cif, rvalue); +} + +ffi_status +ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data, + void *codeloc) +{ + ffi_status status; + + status = ffi_prep_closure_loc ((ffi_closure*) cl, + cif, + &ffi_java_translate_args, + codeloc, + codeloc); + if (status == FFI_OK) + { + cl->fun = fun; + cl->user_data = user_data; + } + + return status; +} + +/* Again, here is the generic version of ffi_prep_raw_closure, which + * will install an intermediate "hub" for translation of arguments from + * the pointer-array format, to the raw format */ + +ffi_status +ffi_prep_java_raw_closure (ffi_java_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void *user_data) +{ + return ffi_prep_java_raw_closure_loc (cl, cif, fun, user_data, cl); +} + +#endif /* FFI_CLOSURES */ +#endif /* !FFI_NATIVE_RAW_API */ +#endif /* !NO_JAVA_RAW_API */ diff --git a/deps/libffi/src/kvx/asm.h b/deps/libffi/src/kvx/asm.h new file mode 100644 index 00000000000000..4edba410d82062 --- /dev/null +++ b/deps/libffi/src/kvx/asm.h @@ -0,0 +1,5 @@ +/* args are passed on registers from r0 up to r11 => 12*8 bytes */ +#define REG_ARGS_SIZE (12*8) +#define KVX_REGISTER_SIZE (8) +#define KVX_ABI_SLOT_SIZE (KVX_REGISTER_SIZE) +#define KVX_ABI_MAX_AGGREGATE_IN_REG_SIZE (4*KVX_ABI_SLOT_SIZE) diff --git a/deps/libffi/src/kvx/ffi.c b/deps/libffi/src/kvx/ffi.c new file mode 100644 index 00000000000000..58f6aef5ca473b --- /dev/null +++ b/deps/libffi/src/kvx/ffi.c @@ -0,0 +1,273 @@ +/* Copyright (c) 2020 Kalray + +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. */ + +#if defined(__kvx__) +#include +#include +#include +#include +#include +#include "ffi_common.h" +#include "asm.h" + +#define ALIGN(x, a) ALIGN_MASK(x, (typeof(x))(a) - 1) +#define ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) +#define KVX_ABI_STACK_ALIGNMENT (32) +#define KVX_ABI_STACK_ARG_ALIGNMENT (8) +#define max(a,b) ((a) > (b) ? (a) : (b)) + +#ifdef FFI_DEBUG +#define DEBUG_PRINT(...) do{ fprintf( stderr, __VA_ARGS__ ); } while(0) +#else +#define DEBUG_PRINT(...) +#endif + +struct ret_value { + unsigned long int r0; + unsigned long int r1; + unsigned long int r2; + unsigned long int r3; +}; + +extern struct ret_value ffi_call_SYSV(unsigned total_size, + unsigned size, + extended_cif *ecif, + unsigned *rvalue_addr, + void *fn, + unsigned int_ext_method); + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + cif->flags = cif->rtype->size; + return FFI_OK; +} + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void *ffi_prep_args(char *stack, unsigned int arg_slots_size, extended_cif *ecif) +{ + char *stacktemp = stack; + char *current_arg_passed_by_value = stack + arg_slots_size; + int i, s; + ffi_type **arg; + int count = 0; + ffi_cif *cif = ecif->cif; + void **argv = ecif->avalue; + + arg = cif->arg_types; + + DEBUG_PRINT("stack: %p\n", stack); + DEBUG_PRINT("arg_slots_size: %u\n", arg_slots_size); + DEBUG_PRINT("current_arg_passed_by_value: %p\n", current_arg_passed_by_value); + DEBUG_PRINT("ecif: %p\n", ecif); + DEBUG_PRINT("ecif->avalue: %p\n", ecif->avalue); + + for (i = 0; i < cif->nargs; i++) { + + s = KVX_ABI_SLOT_SIZE; + switch((*arg)->type) { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + DEBUG_PRINT("INT64/32/16/8/FLOAT/DOUBLE or POINTER @%p\n", stack); + *(uint64_t *) stack = *(uint64_t *)(* argv); + break; + + case FFI_TYPE_COMPLEX: + if ((*arg)->size == 8) + *(_Complex float *) stack = *(_Complex float *)(* argv); + else if ((*arg)->size == 16) { + *(_Complex double *) stack = *(_Complex double *)(* argv); + s = 16; + } else + abort(); + break; + case FFI_TYPE_STRUCT: { + char *value; + unsigned int written_size = 0; + DEBUG_PRINT("struct by value @%p\n", stack); + if ((*arg)->size > KVX_ABI_MAX_AGGREGATE_IN_REG_SIZE) { + DEBUG_PRINT("big struct\n"); + *(uint64_t *) stack = (uintptr_t)current_arg_passed_by_value; + value = current_arg_passed_by_value; + current_arg_passed_by_value += (*arg)->size; + written_size = KVX_ABI_SLOT_SIZE; + } else { + value = stack; + written_size = (*arg)->size; + } + memcpy(value, *argv, (*arg)->size); + s = ALIGN(written_size, KVX_ABI_STACK_ARG_ALIGNMENT); + break; + } + default: + printf("Error: unsupported arg type %d\n", (*arg)->type); + abort(); + break; + + } + stack += s; + count += s; + argv++; + arg++; + } +#ifdef FFI_DEBUG + FFI_ASSERT(((intptr_t)(stacktemp + REG_ARGS_SIZE) & (KVX_ABI_STACK_ALIGNMENT-1)) == 0); +#endif + return stacktemp + REG_ARGS_SIZE; +} + +/* Perform machine dependent cif processing when we have a variadic function */ + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, + unsigned int ntotalargs) +{ + cif->flags = cif->rtype->size; + return FFI_OK; +} + +static unsigned long handle_small_int_ext(kvx_intext_method *int_ext_method, + const ffi_type *rtype) +{ + switch (rtype->type) { + case FFI_TYPE_SINT8: + *int_ext_method = KVX_RET_SXBD; + return KVX_REGISTER_SIZE; + + case FFI_TYPE_SINT16: + *int_ext_method = KVX_RET_SXHD; + return KVX_REGISTER_SIZE; + + case FFI_TYPE_SINT32: + *int_ext_method = KVX_RET_SXWD; + return KVX_REGISTER_SIZE; + + case FFI_TYPE_UINT8: + *int_ext_method = KVX_RET_ZXBD; + return KVX_REGISTER_SIZE; + + case FFI_TYPE_UINT16: + *int_ext_method = KVX_RET_ZXHD; + return KVX_REGISTER_SIZE; + + case FFI_TYPE_UINT32: + *int_ext_method = KVX_RET_ZXWD; + return KVX_REGISTER_SIZE; + + default: + *int_ext_method = KVX_RET_NONE; + return rtype->size; + } +} + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + int i; + unsigned long int slot_fitting_args_size = 0; + unsigned long int total_size = 0; + unsigned long int big_struct_size = 0; + kvx_intext_method int_extension_method; + ffi_type **arg; + struct ret_value local_rvalue = {0}; + size_t wb_size; + + + /* Calculate size to allocate on stack */ + for (i = 0, arg = cif->arg_types; i < cif->nargs; i++, arg++) { + DEBUG_PRINT("argument %d, type %d, size %lu\n", i, (*arg)->type, (*arg)->size); + if (((*arg)->type == FFI_TYPE_STRUCT) || ((*arg)->type == FFI_TYPE_COMPLEX)) { + if ((*arg)->size <= KVX_ABI_MAX_AGGREGATE_IN_REG_SIZE) { + slot_fitting_args_size += ALIGN((*arg)->size, KVX_ABI_SLOT_SIZE); + } else { + slot_fitting_args_size += KVX_ABI_SLOT_SIZE; /* aggregate passed by reference */ + big_struct_size += ALIGN((*arg)->size, KVX_ABI_SLOT_SIZE); + } + } else if ((*arg)->size <= KVX_ABI_SLOT_SIZE) { + slot_fitting_args_size += KVX_ABI_SLOT_SIZE; + } else { + printf("Error: unsupported arg size %ld arg type %d\n", (*arg)->size, (*arg)->type); + abort(); /* should never happen? */ + } + } + + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + ecif.rvalue = rvalue; + + /* This implementation allocates anyway for all register based args */ + slot_fitting_args_size = max(slot_fitting_args_size, REG_ARGS_SIZE); + total_size = slot_fitting_args_size + big_struct_size; + total_size = ALIGN(total_size, KVX_ABI_STACK_ALIGNMENT); + + /* wb_size: write back size, the size we will need to write back to user + * provided buffer. In theory it should always be cif->flags which is + * cif->rtype->size. But libffi API mandates that for integral types + * of size <= system register size, then we *MUST* write back + * the size of system register size. + * in our case, if size <= 8 bytes we must write back 8 bytes. + * floats, complex and structs are not affected, only integrals. + */ + wb_size = handle_small_int_ext(&int_extension_method, cif->rtype); + + switch (cif->abi) { + case FFI_SYSV: + DEBUG_PRINT("total_size: %lu\n", total_size); + DEBUG_PRINT("slot fitting args size: %lu\n", slot_fitting_args_size); + DEBUG_PRINT("rvalue: %p\n", rvalue); + DEBUG_PRINT("fn: %p\n", fn); + DEBUG_PRINT("rsize: %u\n", cif->flags); + DEBUG_PRINT("wb_size: %u\n", wb_size); + DEBUG_PRINT("int_extension_method: %u\n", int_extension_method); + local_rvalue = ffi_call_SYSV(total_size, slot_fitting_args_size, + &ecif, rvalue, fn, int_extension_method); + if ((cif->flags <= KVX_ABI_MAX_AGGREGATE_IN_REG_SIZE) + && (cif->rtype->type != FFI_TYPE_VOID)) + memcpy(rvalue, &local_rvalue, wb_size); + break; + default: + abort(); + break; + } +} + +/* Closures not supported yet */ +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + return FFI_BAD_ABI; +} + +#endif /* (__kvx__) */ diff --git a/deps/libffi/src/kvx/ffitarget.h b/deps/libffi/src/kvx/ffitarget.h new file mode 100644 index 00000000000000..8df8735e3f2d85 --- /dev/null +++ b/deps/libffi/src/kvx/ffitarget.h @@ -0,0 +1,75 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2020 Kalray + + KVX Target configuration macros + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; + +/* Those values are set depending on return type + * they are used in the assembly code in sysv.S + */ +typedef enum kvx_intext_method { + KVX_RET_NONE = 0, + KVX_RET_SXBD = 1, + KVX_RET_SXHD = 2, + KVX_RET_SXWD = 3, + KVX_RET_ZXBD = 4, + KVX_RET_ZXHD = 5, + KVX_RET_ZXWD = 6 +} kvx_intext_method; + +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +/* This is only to allow Python to compile + * but closures are not supported yet + */ +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 0 + +#define FFI_NATIVE_RAW_API 0 +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_TARGET_HAS_COMPLEX_TYPE + +#endif + diff --git a/deps/libffi/src/kvx/sysv.S b/deps/libffi/src/kvx/sysv.S new file mode 100644 index 00000000000000..952afc7063bc0c --- /dev/null +++ b/deps/libffi/src/kvx/sysv.S @@ -0,0 +1,127 @@ +/* Copyright (c) 2020 Kalray + +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. */ + +#if defined(__kvx__) +#define LIBFFI_ASM +#include +#include +#include +#include + +.text +.global ffi_call_SYSV +.type ffi_call_SYSV, @function +.type ffi_prep_args, @function +.align 8 + +/* ffi_call_SYSV + + r0: total size to allocate on stack + r1: size of arg slots + r2: extended cif structure, DO NOT REMOVE: it is used by ffi_prep_args() + r3: return value address + r4: function to call + r5: integer sign extension method to be used +*/ +ffi_call_SYSV: + addd $r12 = $r12, -64 + so (-32)[$r12] = $r20r21r22r23 + ;; + sd (0)[$r12] = $r24 + ;; + get $r23 = $ra + copyd $r20 = $r12 + sbfd $r12 = $r0, $r12 + ;; + copyd $r0 = $r12 + copyd $r21 = $r3 + copyd $r22 = $r4 + copyd $r24 = $r5 + call ffi_prep_args + ;; + lo $r8r9r10r11 = (64)[$r12] + ;; + lo $r4r5r6r7 = (32)[$r12] + ;; + lo $r0r1r2r3 = (0)[$r12] + copyd $r12 = $r0 + /* $r15 is the register used by the ABI to return big (>32 bytes) + * structs by value. + * It is also referred to as the "struct register" in the ABI. + */ + copyd $r15 = $r21 + icall $r22 + ;; + pcrel $r4 = @pcrel(.Ltable) + cb.deqz $r24 ? .Lend + ;; + addx8d $r24 = $r24, $r4 + ;; + igoto $r24 + ;; +.Ltable: +0: /* we should never arrive here */ + goto .Lerror + nop + ;; +1: /* Sign extend byte to double */ + sxbd $r0 = $r0 + goto .Lend + ;; +2: /* Sign extend half to double */ + sxhd $r0 = $r0 + goto .Lend + ;; +3: /* Sign extend word to double */ + sxwd $r0 = $r0 + goto .Lend + ;; +4: /* Zero extend byte to double */ + zxbd $r0 = $r0 + goto .Lend + ;; +5: /* Zero extend half to double */ + zxhd $r0 = $r0 + goto .Lend + ;; +6: /* Zero extend word to double */ + zxwd $r0 = $r0 + /* Fallthrough to .Lend */ + ;; +.Lend: + ld $r24 = (0)[$r12] + ;; + set $ra = $r23 + lo $r20r21r22r23 = (32)[$r20] + addd $r12 = $r20, 64 + ;; + ret + ;; +.Lerror: + errop + ;; + +#endif /* __kvx__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif + diff --git a/deps/libffi/src/loongarch64/ffi.c b/deps/libffi/src/loongarch64/ffi.c new file mode 100644 index 00000000000000..93c337749f171d --- /dev/null +++ b/deps/libffi/src/loongarch64/ffi.c @@ -0,0 +1,624 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2022 Xu Chenghua + 2022 Cheng Lulu + Based on RISC-V port + + LoongArch Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include + +#include +#include + +#if defined(__loongarch_soft_float) +# define ABI_FRLEN 0 +#elif defined(__loongarch_single_float) +# define ABI_FRLEN 32 +# define ABI_FLOAT float +#elif defined(__loongarch_double_float) +# define ABI_FRLEN 64 +# define ABI_FLOAT double +#else +#error unsupported LoongArch floating-point ABI +#endif + +#define NARGREG 8 +#define STKALIGN 16 +#define MAXCOPYARG (2 * sizeof (double)) + +/* call_context registers + - 8 floating point parameter/result registers. + - 8 integer parameter/result registers. + - 2 registers used by the assembly code to in-place construct its own + stack frame + - frame register + - return register +*/ +typedef struct call_context +{ +#if !defined(__loongarch_soft_float) + ABI_FLOAT fa[8]; +#endif + size_t a[10]; +} call_context; + +typedef struct call_builder +{ + call_context *aregs; + int used_integer; + int used_float; + size_t *used_stack; + size_t *stack; + size_t next_struct_area; +} call_builder; + +/* Integer (not pointer) less than ABI GRLEN. */ +/* FFI_TYPE_INT does not appear to be used. */ +#if __SIZEOF_POINTER__ == 8 +# define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) +#else +# define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) +#endif + +#if ABI_FRLEN +typedef struct float_struct_info +{ + char as_elements; + char type1; + char offset2; + char type2; +} float_struct_info; + +#if ABI_FRLEN >= 64 +# define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) +#else +# define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) +#endif + +static ffi_type ** +flatten_struct (ffi_type *in, ffi_type **out, ffi_type **out_end) +{ + int i; + + if (out == out_end) + return out; + if (in->type != FFI_TYPE_STRUCT) + *(out++) = in; + else + for (i = 0; in->elements[i]; i++) + out = flatten_struct (in->elements[i], out, out_end); + return out; +} + +/* Structs with at most two fields after flattening, one of which is of + floating point type, are passed in multiple registers if sufficient + registers are available. */ +static float_struct_info +struct_passed_as_elements (call_builder *cb, ffi_type *top) +{ + float_struct_info ret = {0, 0, 0, 0}; + ffi_type *fields[3]; + int num_floats, num_ints; + int num_fields = flatten_struct (top, fields, fields + 3) - fields; + + if (num_fields == 1) + { + if (IS_FLOAT (fields[0]->type)) + { + ret.as_elements = 1; + ret.type1 = fields[0]->type; + } + } + else if (num_fields == 2) + { + num_floats = IS_FLOAT (fields[0]->type) + IS_FLOAT (fields[1]->type); + num_ints = IS_INT (fields[0]->type) + IS_INT (fields[1]->type); + if (num_floats == 0 || num_floats + num_ints != 2) + return ret; + if (cb->used_float + num_floats > NARGREG + || cb->used_integer + (2 - num_floats) > NARGREG) + return ret; + if (!IS_FLOAT (fields[0]->type) && !IS_FLOAT (fields[1]->type)) + return ret; + + ret.type1 = fields[0]->type; + ret.type2 = fields[1]->type; + ret.offset2 = FFI_ALIGN (fields[0]->size, fields[1]->alignment); + ret.as_elements = 1; + } + return ret; +} +#endif + +/* Allocates a single register, float register, or GRLEN-sized stack slot to a + datum. */ +static void +marshal_atom (call_builder *cb, int type, void *data) +{ + size_t value = 0; + switch (type) + { + case FFI_TYPE_UINT8: + value = *(uint8_t *) data; + break; + case FFI_TYPE_SINT8: + value = *(int8_t *) data; + break; + case FFI_TYPE_UINT16: + value = *(uint16_t *) data; + break; + case FFI_TYPE_SINT16: + value = *(int16_t *) data; + break; + /* 32-bit quantities are always sign-extended in the ABI. */ + case FFI_TYPE_UINT32: + value = *(int32_t *) data; + break; + case FFI_TYPE_SINT32: + value = *(int32_t *) data; + break; +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: + value = *(uint64_t *) data; + break; + case FFI_TYPE_SINT64: + value = *(int64_t *) data; + break; +#endif + case FFI_TYPE_POINTER: + value = *(size_t *) data; + break; + +#if ABI_FRLEN >= 32 + case FFI_TYPE_FLOAT: + *(float *)(cb->aregs->fa + cb->used_float++) = *(float *) data; + return; +#endif +#if ABI_FRLEN >= 64 + case FFI_TYPE_DOUBLE: + (cb->aregs->fa[cb->used_float++]) = *(double *) data; + return; +#endif + default: + FFI_ASSERT (0); + break; + } + + if (cb->used_integer == NARGREG) + *cb->used_stack++ = value; + else + cb->aregs->a[cb->used_integer++] = value; +} + +static void +unmarshal_atom (call_builder *cb, int type, void *data) +{ + size_t value; + switch (type) + { +#if ABI_FRLEN >= 32 + case FFI_TYPE_FLOAT: + *(float *) data = *(float *)(cb->aregs->fa + cb->used_float++); + return; +#endif +#if ABI_FRLEN >= 64 + case FFI_TYPE_DOUBLE: + *(double *) data = cb->aregs->fa[cb->used_float++]; + return; +#endif + } + + if (cb->used_integer == NARGREG) + value = *cb->used_stack++; + else + value = cb->aregs->a[cb->used_integer++]; + + switch (type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#endif + case FFI_TYPE_POINTER: + *(ffi_arg *)data = value; + break; + default: + FFI_ASSERT (0); + break; + } +} + +/* Allocate and copy a structure that is passed by value on the stack and + return a pointer to it. */ +static void * +allocate_and_copy_struct_to_stack (call_builder *cb, void *data, + ffi_type *type) +{ + size_t dest = cb->next_struct_area - type->size; + + dest = FFI_ALIGN_DOWN (dest, type->alignment); + cb->next_struct_area = dest; + + return memcpy ((char *)cb->stack + dest, data, type->size); +} + +/* Adds an argument to a call, or a not by reference return value. */ +static void +marshal (call_builder *cb, ffi_type *type, int var, void *data) +{ + size_t realign[2]; + +#if ABI_FRLEN + if (!var && type->type == FFI_TYPE_STRUCT) + { + float_struct_info fsi = struct_passed_as_elements (cb, type); + if (fsi.as_elements) + { + marshal_atom (cb, fsi.type1, data); + if (fsi.offset2) + marshal_atom (cb, fsi.type2, ((char *) data) + fsi.offset2); + return; + } + } + + if (!var && cb->used_float < NARGREG + && IS_FLOAT (type->type)) + { + marshal_atom (cb, type->type, data); + return; + } + + double promoted; + if (var && type->type == FFI_TYPE_FLOAT) + { + /* C standard requires promoting float -> double for variable arg. */ + promoted = *(float *) data; + type = &ffi_type_double; + data = &promoted; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) + /* Pass by reference. */ + { + allocate_and_copy_struct_to_stack (cb, data, type); + data = (char *)cb->stack + cb->next_struct_area; + marshal_atom (cb, FFI_TYPE_POINTER, &data); + } + else if (IS_INT (type->type) || type->type == FFI_TYPE_POINTER) + marshal_atom (cb, type->type, data); + else + { + /* Overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on. */ + + /* Variadics are aligned even in registers. */ + if (type->alignment > __SIZEOF_POINTER__) + { + if (var) + cb->used_integer = FFI_ALIGN (cb->used_integer, 2); + cb->used_stack + = (size_t *) FFI_ALIGN (cb->used_stack, 2 * __SIZEOF_POINTER__); + } + + memcpy (realign, data, type->size); + if (type->size > 0) + marshal_atom (cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + marshal_atom (cb, FFI_TYPE_POINTER, realign + 1); + } +} + +/* For arguments passed by reference returns the pointer, otherwise the arg + is copied (up to MAXCOPYARG bytes). */ +static void * +unmarshal (call_builder *cb, ffi_type *type, int var, void *data) +{ + size_t realign[2]; + void *pointer; + +#if ABI_FRLEN + if (!var && type->type == FFI_TYPE_STRUCT) + { + float_struct_info fsi = struct_passed_as_elements (cb, type); + if (fsi.as_elements) + { + unmarshal_atom (cb, fsi.type1, data); + if (fsi.offset2) + unmarshal_atom (cb, fsi.type2, ((char *) data) + fsi.offset2); + return data; + } + } + + if (!var && cb->used_float < NARGREG + && IS_FLOAT (type->type)) + { + unmarshal_atom (cb, type->type, data); + return data; + } + + if (var && type->type == FFI_TYPE_FLOAT) + { + int m = cb->used_integer; + void *promoted + = m < NARGREG ? cb->aregs->a + m : cb->used_stack + m - NARGREG + 1; + *(float *) promoted = *(double *) promoted; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) + { + /* Pass by reference. */ + unmarshal_atom (cb, FFI_TYPE_POINTER, (char *) &pointer); + return pointer; + } + else if (IS_INT (type->type) || type->type == FFI_TYPE_POINTER) + { + unmarshal_atom (cb, type->type, data); + return data; + } + else + { + /* Overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on. */ + + /* Variadics are aligned even in registers. */ + if (type->alignment > __SIZEOF_POINTER__) + { + if (var) + cb->used_integer = FFI_ALIGN (cb->used_integer, 2); + cb->used_stack + = (size_t *) FFI_ALIGN (cb->used_stack, 2 * __SIZEOF_POINTER__); + } + + if (type->size > 0) + unmarshal_atom (cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + unmarshal_atom (cb, FFI_TYPE_POINTER, realign + 1); + memcpy (data, realign, type->size); + return data; + } +} + +static int +passed_by_ref (call_builder *cb, ffi_type *type, int var) +{ +#if ABI_FRLEN + if (!var && type->type == FFI_TYPE_STRUCT) + { + float_struct_info fsi = struct_passed_as_elements (cb, type); + if (fsi.as_elements) + return 0; + } +#endif + + return type->size > 2 * __SIZEOF_POINTER__; +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + cif->loongarch_nfixedargs = cif->nargs; + return FFI_OK; +} + +/* Perform machine dependent cif processing when we have a variadic + function. */ +ffi_status +ffi_prep_cif_machdep_var (ffi_cif *cif, unsigned int nfixedargs, + unsigned int ntotalargs) +{ + cif->loongarch_nfixedargs = nfixedargs; + return FFI_OK; +} + +/* Low level routine for calling functions. */ +extern void ffi_call_asm (void *stack, struct call_context *regs, + void (*fn) (void), void *closure) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + /* This is a conservative estimate, assuming a complex return value and + that all remaining arguments are long long / __int128 */ + size_t arg_bytes = cif->bytes; + size_t rval_bytes = 0; + if (rvalue == NULL && cif->rtype->size > 2 * __SIZEOF_POINTER__) + rval_bytes = FFI_ALIGN (cif->rtype->size, STKALIGN); + size_t alloc_size = arg_bytes + rval_bytes + sizeof (call_context); + + /* The assembly code will deallocate all stack data at lower addresses + than the argument region, so we need to allocate the frame and the + return value after the arguments in a single allocation. */ + size_t alloc_base; + /* Argument region must be 16-byte aligned in LP64 ABIs. */ + if (_Alignof(max_align_t) >= STKALIGN) + /* Since sizeof long double is normally 16, the compiler will + guarantee alloca alignment to at least that much. */ + alloc_base = (size_t) alloca (alloc_size); + else + alloc_base = FFI_ALIGN (alloca (alloc_size + STKALIGN - 1), STKALIGN); + + if (rval_bytes) + rvalue = (void *) (alloc_base + arg_bytes); + + call_builder cb; + cb.used_float = cb.used_integer = 0; + cb.aregs = (call_context *) (alloc_base + arg_bytes + rval_bytes); + cb.used_stack = (void *) alloc_base; + cb.stack = (void *) alloc_base; + cb.next_struct_area = arg_bytes; + + int return_by_ref = passed_by_ref (&cb, cif->rtype, 0); + if (return_by_ref) + cb.aregs->a[cb.used_integer++] = (size_t)rvalue; + + int i; + for (i = 0; i < cif->nargs; i++) + marshal (&cb, cif->arg_types[i], i >= cif->loongarch_nfixedargs, + avalue[i]); + + ffi_call_asm ((void *) alloc_base, cb.aregs, fn, closure); + + cb.used_float = cb.used_integer = 0; + if (!return_by_ref && rvalue) + unmarshal (&cb, cif->rtype, 0, rvalue); +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +extern void ffi_closure_asm (void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + uint32_t *tramp = (uint32_t *) &closure->tramp[0]; + uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; + + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + +#if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + ffi_tramp_set_parms (closure->ftramp, ffi_closure_asm, closure); + goto out; + } +#endif + + /* Fill the dynamic trampoline. We will call ffi_closure_inner with codeloc, + not closure, but as long as the memory is readable it should work. */ + tramp[0] = 0x1800000c; /* pcaddi $t0, 0 (i.e. $t0 <- tramp) */ + tramp[1] = 0x28c0418d; /* ld.d $t1, $t0, 16 */ + tramp[2] = 0x4c0001a0; /* jirl $zero, $t1, 0 */ + tramp[3] = 0x03400000; /* nop */ + tramp[4] = fn; + tramp[5] = fn >> 32; + + __builtin___clear_cache (codeloc, codeloc + FFI_TRAMPOLINE_SIZE); + +#if defined(FFI_EXEC_STATIC_TRAMP) +out: +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +extern void ffi_go_closure_asm (void) FFI_HIDDEN; + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + closure->tramp = (void *) ffi_go_closure_asm; + closure->cif = cif; + closure->fun = fun; + return FFI_OK; +} + +/* Called by the assembly code with aregs pointing to saved argument registers + and stack pointing to the stacked arguments. Return values passed in + registers will be reloaded from aregs. */ +void FFI_HIDDEN +ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, size_t *stack, call_context *aregs) +{ + void **avalue = alloca (cif->nargs * sizeof (void *)); + /* Storage for arguments which will be copied by unmarshal(). We could + theoretically avoid the copies in many cases and use at most 128 bytes + of memory, but allocating disjoint storage for each argument is + simpler. */ + char *astorage = alloca (cif->nargs * MAXCOPYARG); + void *rvalue; + call_builder cb; + int return_by_ref; + int i; + + cb.aregs = aregs; + cb.used_integer = cb.used_float = 0; + cb.used_stack = stack; + + return_by_ref = passed_by_ref (&cb, cif->rtype, 0); + if (return_by_ref) + unmarshal (&cb, &ffi_type_pointer, 0, &rvalue); + else + rvalue = alloca (cif->rtype->size); + + for (i = 0; i < cif->nargs; i++) + avalue[i] + = unmarshal (&cb, cif->arg_types[i], i >= cif->loongarch_nfixedargs, + astorage + i * MAXCOPYARG); + + fun (cif, rvalue, avalue, user_data); + + if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) + { + cb.used_integer = cb.used_float = 0; + marshal (&cb, cif->rtype, 0, rvalue); + } +} + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *tramp_size = 16; + /* A mapping size of 64K is chosen to cover the page sizes of 4K, 16K, and + 64K. */ + *map_size = 1 << 16; + return &trampoline_code_table; +} +#endif diff --git a/deps/libffi/src/loongarch64/ffitarget.h b/deps/libffi/src/loongarch64/ffitarget.h new file mode 100644 index 00000000000000..5a4698af308d0a --- /dev/null +++ b/deps/libffi/src/loongarch64/ffitarget.h @@ -0,0 +1,82 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2022 Xu Chenghua + 2022 Cheng Lulu + + Target configuration macros for LoongArch. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error \ + "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef __loongarch__ +#error \ + "libffi was configured for a LoongArch target but this does not appear to be a LoongArch compiler." +#endif + +#ifndef LIBFFI_ASM + +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi +{ + FFI_FIRST_ABI = 0, + FFI_LP64S, + FFI_LP64F, + FFI_LP64D, + FFI_LAST_ABI, + +#if defined(__loongarch64) +#if defined(__loongarch_soft_float) + FFI_DEFAULT_ABI = FFI_LP64S +#elif defined(__loongarch_single_float) + FFI_DEFAULT_ABI = FFI_LP64F +#elif defined(__loongarch_double_float) + FFI_DEFAULT_ABI = FFI_LP64D +#else +#error unsupported LoongArch floating-point ABI +#endif +#else +#error unsupported LoongArch base architecture +#endif +} ffi_abi; + +#endif /* LIBFFI_ASM */ + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 +#define FFI_EXTRA_CIF_FIELDS \ + unsigned loongarch_nfixedargs; \ + unsigned loongarch_unused; +#define FFI_TARGET_SPECIFIC_VARIADIC +#endif diff --git a/deps/libffi/src/loongarch64/sysv.S b/deps/libffi/src/loongarch64/sysv.S new file mode 100644 index 00000000000000..aa7bde2c1efcee --- /dev/null +++ b/deps/libffi/src/loongarch64/sysv.S @@ -0,0 +1,327 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2022 Xu Chenghua + 2022 Cheng Lulu + + LoongArch Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Define aliases so that we can handle all ABIs uniformly. */ + +#if __SIZEOF_POINTER__ == 8 +# define PTRS 8 +# define LARG ld.d +# define SARG st.d +#else +# define PTRS 4 +# define LARG ld.w +# define SARG st.w +#endif + +#if defined(__loongarch_single_float) +# define FLTS 4 +# define FLD fld.w +# define FST fst.w +#elif defined(__loongarch_double_float) +# define FLTS 8 +# define FLARG fld.d +# define FSARG fst.d +#elif defined(__loongarch_soft_float) +# define FLTS 0 +#else +#error unsupported LoongArch floating-point ABI +#endif + + .text + .globl ffi_call_asm + .type ffi_call_asm, @function + .hidden ffi_call_asm +/* struct call_context + { + ABI_FLOAT fa[8]; + size_t a[10]; + } + + - 8 floating point parameter/result registers (fa[0] - fa[7]) + - 8 integer parameter/result registers (a[0] - a[7]) + - 2 registers used by the assembly code to in-place construct its own stack + frame. + - frame pointer (a[8]) + - return address (a[9]) + + void ffi_call_asm (size_t *stackargs, struct call_context *regargs, + void (*fn)(void), void *closure); */ + +#define FRAME_LEN (8 * FLTS + 10 * PTRS) + +ffi_call_asm: + .cfi_startproc + + /* We are NOT going to set up an ordinary stack frame. In order to pass + the stacked args to the called function, we adjust our stack pointer + to a0, which is in the _caller's_ alloca area. We establish our own + stack frame at the end of the call_context. + + Anything below the arguments will be freed at this point, although + we preserve the call_context so that it can be read back in the + caller. */ + + .cfi_def_cfa 5, FRAME_LEN # Interim CFA based on a1. + SARG $fp, $a1, FRAME_LEN - 2*PTRS + .cfi_offset 22, -2*PTRS + SARG $ra, $a1, FRAME_LEN - 1*PTRS + .cfi_offset 1, -1*PTRS + + addi.d $fp, $a1, FRAME_LEN + move $sp, $a0 + .cfi_def_cfa 22, 0 # Our frame is fully set up. + + # Load arguments. + move $t1, $a2 + move $t2, $a3 + +#if FLTS + FLARG $fa0, $fp, -FRAME_LEN+0*FLTS + FLARG $fa1, $fp, -FRAME_LEN+1*FLTS + FLARG $fa2, $fp, -FRAME_LEN+2*FLTS + FLARG $fa3, $fp, -FRAME_LEN+3*FLTS + FLARG $fa4, $fp, -FRAME_LEN+4*FLTS + FLARG $fa5, $fp, -FRAME_LEN+5*FLTS + FLARG $fa6, $fp, -FRAME_LEN+6*FLTS + FLARG $fa7, $fp, -FRAME_LEN+7*FLTS +#endif + + LARG $a0, $fp, -FRAME_LEN+8*FLTS+0*PTRS + LARG $a1, $fp, -FRAME_LEN+8*FLTS+1*PTRS + LARG $a2, $fp, -FRAME_LEN+8*FLTS+2*PTRS + LARG $a3, $fp, -FRAME_LEN+8*FLTS+3*PTRS + LARG $a4, $fp, -FRAME_LEN+8*FLTS+4*PTRS + LARG $a5, $fp, -FRAME_LEN+8*FLTS+5*PTRS + LARG $a6, $fp, -FRAME_LEN+8*FLTS+6*PTRS + LARG $a7, $fp, -FRAME_LEN+8*FLTS+7*PTRS + + /* Call */ + jirl $ra, $t1, 0 + +#if FLTS + /* Save return values - only a0/a1 (fa0/fa1) are used. */ + FSARG $fa0, $fp, -FRAME_LEN+0*FLTS + FSARG $fa1, $fp, -FRAME_LEN+1*FLTS +#endif + + SARG $a0, $fp, -FRAME_LEN+8*FLTS+0*PTRS + SARG $a1, $fp, -FRAME_LEN+8*FLTS+1*PTRS + + /* Restore and return. */ + addi.d $sp, $fp, -FRAME_LEN + .cfi_def_cfa 3, FRAME_LEN + LARG $ra, $fp, -1*PTRS + .cfi_restore 1 + LARG $fp, $fp, -2*PTRS + .cfi_restore 22 + jr $ra + .cfi_endproc + .size ffi_call_asm, .-ffi_call_asm + + +/* ffi_closure_asm. Expects address of the passed-in ffi_closure in t0. + void ffi_closure_inner (ffi_cif *cif, + void (*fun)(ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) */ + + .globl ffi_closure_asm + .hidden ffi_closure_asm + .type ffi_closure_asm, @function + +ffi_closure_asm: + .cfi_startproc + addi.d $sp, $sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* Make a frame. */ + SARG $fp, $sp, FRAME_LEN - 2*PTRS + .cfi_offset 22, -2*PTRS + SARG $ra, $sp, FRAME_LEN - 1*PTRS + .cfi_offset 1, -1*PTRS + addi.d $fp, $sp, FRAME_LEN + + /* Save arguments. */ +#if FLTS + FSARG $fa0, $sp, 0*FLTS + FSARG $fa1, $sp, 1*FLTS + FSARG $fa2, $sp, 2*FLTS + FSARG $fa3, $sp, 3*FLTS + FSARG $fa4, $sp, 4*FLTS + FSARG $fa5, $sp, 5*FLTS + FSARG $fa6, $sp, 6*FLTS + FSARG $fa7, $sp, 7*FLTS +#endif + + SARG $a0, $sp, 8*FLTS+0*PTRS + SARG $a1, $sp, 8*FLTS+1*PTRS + SARG $a2, $sp, 8*FLTS+2*PTRS + SARG $a3, $sp, 8*FLTS+3*PTRS + SARG $a4, $sp, 8*FLTS+4*PTRS + SARG $a5, $sp, 8*FLTS+5*PTRS + SARG $a6, $sp, 8*FLTS+6*PTRS + SARG $a7, $sp, 8*FLTS+7*PTRS + + /* Enter C */ + LARG $a0, $t0, FFI_TRAMPOLINE_SIZE+0*PTRS + LARG $a1, $t0, FFI_TRAMPOLINE_SIZE+1*PTRS + LARG $a2, $t0, FFI_TRAMPOLINE_SIZE+2*PTRS + addi.d $a3, $sp, FRAME_LEN + move $a4, $sp + + bl ffi_closure_inner + + /* Return values. */ +#if FLTS + FLARG $fa0, $sp, 0*FLTS + FLARG $fa1, $sp, 1*FLTS +#endif + + LARG $a0, $sp, 8*FLTS+0*PTRS + LARG $a1, $sp, 8*FLTS+1*PTRS + + /* Restore and return. */ + LARG $ra, $sp, FRAME_LEN-1*PTRS + .cfi_restore 1 + LARG $fp, $sp, FRAME_LEN-2*PTRS + .cfi_restore 22 + addi.d $sp, $sp, FRAME_LEN + .cfi_def_cfa_offset 0 + jr $ra + .cfi_endproc + .size ffi_closure_asm, .-ffi_closure_asm + +/* Static trampoline code table, in which each element is a trampoline. + + The trampoline clobbers t0 and t1, but we don't save them on the stack + because our psABI explicitly says they are scratch registers, at least for + ELF. Our dynamic trampoline is already clobbering them anyway. + + The trampoline has two parameters - target code to jump to and data for + the target code. The trampoline extracts the parameters from its parameter + block (see tramp_table_map()). The trampoline saves the data address in + t0 and jumps to the target code. As ffi_closure_asm() already expects the + data address to be in t0, we don't need a "ffi_closure_asm_alt". */ + +#if defined(FFI_EXEC_STATIC_TRAMP) + .align 16 + .globl trampoline_code_table + .hidden trampoline_code_table + .type trampoline_code_table, @function + +trampoline_code_table: + + .rept 65536 / 16 + pcaddu12i $t1, 16 # 65536 >> 12 + ld.d $t0, $t1, 0 + ld.d $t1, $t1, 8 + jirl $zero, $t1, 0 + .endr + .size trampoline_code_table, .-trampoline_code_table + + .align 2 +#endif + +/* ffi_go_closure_asm. Expects address of the passed-in ffi_go_closure in t2. + void ffi_closure_inner (ffi_cif *cif, + void (*fun)(ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) */ + + .globl ffi_go_closure_asm + .hidden ffi_go_closure_asm + .type ffi_go_closure_asm, @function + +ffi_go_closure_asm: + .cfi_startproc + addi.d $sp, $sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* Make a frame. */ + SARG $fp, $sp, FRAME_LEN - 2*PTRS + .cfi_offset 22, -2*PTRS + SARG $ra, $sp, FRAME_LEN - 1*PTRS + .cfi_offset 1, -1*PTRS + addi.d $fp, $sp, FRAME_LEN + + /* Save arguments. */ +#if FLTS + FSARG $fa0, $sp, 0*FLTS + FSARG $fa1, $sp, 1*FLTS + FSARG $fa2, $sp, 2*FLTS + FSARG $fa3, $sp, 3*FLTS + FSARG $fa4, $sp, 4*FLTS + FSARG $fa5, $sp, 5*FLTS + FSARG $fa6, $sp, 6*FLTS + FSARG $fa7, $sp, 7*FLTS +#endif + + SARG $a0, $sp, 8*FLTS+0*PTRS + SARG $a1, $sp, 8*FLTS+1*PTRS + SARG $a2, $sp, 8*FLTS+2*PTRS + SARG $a3, $sp, 8*FLTS+3*PTRS + SARG $a4, $sp, 8*FLTS+4*PTRS + SARG $a5, $sp, 8*FLTS+5*PTRS + SARG $a6, $sp, 8*FLTS+6*PTRS + SARG $a7, $sp, 8*FLTS+7*PTRS + + /* Enter C */ + LARG $a0, $t2, 1*PTRS + LARG $a1, $t2, 2*PTRS + move $a2, $t2 + addi.d $a3, $sp, FRAME_LEN + move $a4, $sp + + bl ffi_closure_inner + + /* Return values. */ +#if FLTS + FLARG $fa0, $sp, 0*FLTS + FLARG $fa1, $sp, 1*FLTS +#endif + + LARG $a0, $sp, 8*FLTS+0*PTRS + LARG $a1, $sp, 8*FLTS+1*PTRS + + /* Restore and return. */ + LARG $ra, $sp, FRAME_LEN-1*PTRS + .cfi_restore 1 + LARG $fp, $sp, FRAME_LEN-2*PTRS + .cfi_restore 22 + addi.d $sp, $sp, FRAME_LEN + .cfi_def_cfa_offset 0 + jr $ra + .cfi_endproc + .size ffi_go_closure_asm, .-ffi_go_closure_asm + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif diff --git a/deps/libffi/src/m32r/ffi.c b/deps/libffi/src/m32r/ffi.c new file mode 100644 index 00000000000000..6fab50b115ed24 --- /dev/null +++ b/deps/libffi/src/m32r/ffi.c @@ -0,0 +1,249 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2004 Renesas Technology + Copyright (c) 2008 Red Hat, Inc. + Copyright (c) 2022 Anthony Green + + M32R Foreign Function Interface + + 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 RENESAS TECHNOLOGY 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack + space has been allocated for the function's arguments. */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + unsigned int i; + int tmp; + unsigned int avn; + void **p_argv; + char *argp; + ffi_type **p_arg; + + tmp = 0; + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 8) + { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0) && (avn != 0); + i--, p_arg++) + { + size_t z; + + /* Align if necessary. */ + if (((*p_arg)->alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, (*p_arg)->alignment); + + if (avn != 0) + { + avn--; + z = (*p_arg)->size; + if (z < sizeof (int)) + { + z = sizeof (int); + + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + z = (*p_arg)->size; + if ((*p_arg)->alignment != 1) + memcpy (argp, *p_argv, z); + else + memcpy (argp + 4 - z, *p_argv, z); + z = sizeof (int); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof (int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + if (z > 8) + { + *(unsigned int *) argp = (unsigned int)(void *)(* p_argv); + z = sizeof(void *); + } + else + { + memcpy(argp, *p_argv, z); + z = 8; + } + } + else + { + /* Double or long long 64bit. */ + memcpy (argp, *p_argv, z); + } + } + p_argv++; + argp += z; + } + } + + return; +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Set the return type flag. */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->size <= 4) + cif->flags = FFI_TYPE_INT; + + else if (cif->rtype->size <= 8) + cif->flags = FFI_TYPE_DOUBLE; + + else + cif->flags = (unsigned) cif->rtype->type; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags = FFI_TYPE_DOUBLE; + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + ffi_type **arg_types = cif->arg_types; + int i, nargs = cif->nargs; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have + a return value address then we need to make one. */ + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT && size > 4) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + int size = cif->rtype->size; + int align = cif->rtype->alignment; + + if (size < 4) + { + if (align == 1) + *(unsigned long *)(ecif.rvalue) <<= (4 - size) * 8; + } + else if (4 < size && size < 8) + { + if (align == 1) + { + memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); + } + else if (align == 2) + { + if (size & 1) + size += 1; + + if (size != 8) + memcpy (ecif.rvalue, ecif.rvalue + 8-size, size); + } + } + } + break; + + default: + FFI_ASSERT(0); + break; + } +} diff --git a/deps/libffi/src/m32r/ffitarget.h b/deps/libffi/src/m32r/ffitarget.h new file mode 100644 index 00000000000000..6c34801982f6ed --- /dev/null +++ b/deps/libffi/src/m32r/ffitarget.h @@ -0,0 +1,53 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 2004 Renesas Technology. + Target configuration macros for M32R. + + 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 RENESAS TECHNOLOGY 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi + { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV + } ffi_abi; +#endif + +#define FFI_CLOSURES 0 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/m32r/sysv.S b/deps/libffi/src/m32r/sysv.S new file mode 100644 index 00000000000000..06b75c22634a67 --- /dev/null +++ b/deps/libffi/src/m32r/sysv.S @@ -0,0 +1,121 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2004 Renesas Technology + + M32R Foreign Function Interface + + 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 RENESAS TECHNOLOGY 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x)! .type CNAME(x),%function! CNAME(x): +#endif + +.text + + /* R0: ffi_prep_args */ + /* R1: &ecif */ + /* R2: cif->bytes */ + /* R3: fig->flags */ + /* sp+0: ecif.rvalue */ + /* sp+4: fn */ + + /* This assumes we are using gas. */ +ENTRY(ffi_call_SYSV) + /* Save registers. */ + push fp + push lr + push r3 + push r2 + push r1 + push r0 + mv fp, sp + + /* Make room for all of the new args. */ + sub sp, r2 + + /* Place all of the ffi_prep_args in position. */ + mv lr, r0 + mv r0, sp + /* R1 already set. */ + + /* And call. */ + jl lr + + /* Move first 4 parameters in registers... */ + ld r0, @(0,sp) + ld r1, @(4,sp) + ld r2, @(8,sp) + ld r3, @(12,sp) + + /* ...and adjust the stack. */ + ld lr, @(8,fp) + cmpi lr, #16 + bc adjust_stack + ldi lr, #16 +adjust_stack: + add sp, lr + + /* Call the function. */ + ld lr, @(28,fp) + jl lr + + /* Remove the space we pushed for the args. */ + mv sp, fp + + /* Load R2 with the pointer to storage for the return value. */ + ld r2, @(24,sp) + + /* Load R3 with the return type code. */ + ld r3, @(12,sp) + + /* If the return value pointer is NULL, assume no return value. */ + beqz r2, epilogue + + /* Return INT. */ + ldi r4, #FFI_TYPE_INT + bne r3, r4, return_double + st r0, @r2 + bra epilogue + +return_double: + /* Return DOUBLE or LONGDOUBLE. */ + ldi r4, #FFI_TYPE_DOUBLE + bne r3, r4, epilogue + st r0, @r2 + st r1, @(4,r2) + +epilogue: + pop r0 + pop r1 + pop r2 + pop r3 + pop lr + pop fp + jmp lr + +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) diff --git a/deps/libffi/src/m68k/ffi.c b/deps/libffi/src/m68k/ffi.c new file mode 100644 index 00000000000000..033018480ca933 --- /dev/null +++ b/deps/libffi/src/m68k/ffi.c @@ -0,0 +1,362 @@ +/* ----------------------------------------------------------------------- + ffi.c + + m68k Foreign Function Interface + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#ifdef __rtems__ +void rtems_cache_flush_multiple_data_lines( const void *, size_t ); +#else +#include +#ifdef __MINT__ +#include +#include +#else +#include +#endif +#endif + +void ffi_call_SYSV (extended_cif *, + unsigned, unsigned, + void *, void (*fn) ()); +void *ffi_prep_args (void *stack, extended_cif *ecif); +void ffi_closure_SYSV (ffi_closure *); +void ffi_closure_struct_SYSV (ffi_closure *); +unsigned int ffi_closure_SYSV_inner (ffi_closure *closure, + void *resp, void *args); + +/* ffi_prep_args is called by the assembly routine once stack space has + been allocated for the function's arguments. */ + +void * +ffi_prep_args (void *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + void *struct_value_ptr; + + argp = stack; + + if ( +#ifdef __MINT__ + (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) || +#endif + (((ecif->cif->rtype->type == FFI_TYPE_STRUCT) + && !ecif->cif->flags))) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + i != 0; + i--, p_arg++) + { + size_t z = (*p_arg)->size; + int type = (*p_arg)->type; + + if (z < sizeof (int)) + { + switch (type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_STRUCT: +#ifdef __MINT__ + if (z == 1 || z == 2) + memcpy (argp + 2, *p_argv, z); + else + memcpy (argp, *p_argv, z); +#else + memcpy (argp + sizeof (int) - z, *p_argv, z); +#endif + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else + { + memcpy (argp, *p_argv, z); + + /* Align if necessary. */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } + + return struct_value_ptr; +} + +#define CIF_FLAGS_INT 1 +#define CIF_FLAGS_DINT 2 +#define CIF_FLAGS_FLOAT 4 +#define CIF_FLAGS_DOUBLE 8 +#define CIF_FLAGS_LDOUBLE 16 +#define CIF_FLAGS_POINTER 32 +#define CIF_FLAGS_STRUCT1 64 +#define CIF_FLAGS_STRUCT2 128 +#define CIF_FLAGS_SINT8 256 +#define CIF_FLAGS_SINT16 512 + +/* Perform machine dependent cif processing */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && + cif->rtype->elements[1]) + { + cif->flags = 0; + break; + } + + switch (cif->rtype->size) + { + case 1: +#ifdef __MINT__ + cif->flags = CIF_FLAGS_STRUCT2; +#else + cif->flags = CIF_FLAGS_STRUCT1; +#endif + break; + case 2: + cif->flags = CIF_FLAGS_STRUCT2; + break; +#ifdef __MINT__ + case 3: +#endif + case 4: + cif->flags = CIF_FLAGS_INT; + break; +#ifdef __MINT__ + case 7: +#endif + case 8: + cif->flags = CIF_FLAGS_DINT; + break; + default: + cif->flags = 0; + break; + } + break; + + case FFI_TYPE_FLOAT: + cif->flags = CIF_FLAGS_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + cif->flags = CIF_FLAGS_DOUBLE; + break; + +#if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE) + case FFI_TYPE_LONGDOUBLE: +#ifdef __MINT__ + cif->flags = 0; +#else + cif->flags = CIF_FLAGS_LDOUBLE; +#endif + break; +#endif + + case FFI_TYPE_POINTER: + cif->flags = CIF_FLAGS_POINTER; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = CIF_FLAGS_DINT; + break; + + case FFI_TYPE_SINT16: + cif->flags = CIF_FLAGS_SINT16; + break; + + case FFI_TYPE_SINT8: + cif->flags = CIF_FLAGS_SINT8; + break; + + default: + cif->flags = CIF_FLAGS_INT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && cif->rtype->size > 8) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV (&ecif, cif->bytes, cif->flags, + ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +static void +ffi_prep_incoming_args_SYSV (char *stack, void **avalue, ffi_cif *cif) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + + argp = stack; + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; +#ifdef __MINT__ + if (cif->flags && + cif->rtype->type == FFI_TYPE_STRUCT && + (z == 1 || z == 2)) + { + *p_argv = (void *) (argp + 2); + + z = 4; + } + else + if (cif->flags && + cif->rtype->type == FFI_TYPE_STRUCT && + (z == 3 || z == 4)) + { + *p_argv = (void *) (argp); + + z = 4; + } + else +#endif + if (z <= 4) + { + *p_argv = (void *) (argp + 4 - z); + + z = 4; + } + else + { + *p_argv = (void *) argp; + + /* Align if necessary */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } +} + +unsigned int +ffi_closure_SYSV_inner (ffi_closure *closure, void *resp, void *args) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_incoming_args_SYSV(args, arg_area, cif); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + *(unsigned short *)closure->tramp = 0x207c; + *(void **)(closure->tramp + 2) = codeloc; + *(unsigned short *)(closure->tramp + 6) = 0x4ef9; + + if ( +#ifdef __MINT__ + (cif->rtype->type == FFI_TYPE_LONGDOUBLE) || +#endif + (((cif->rtype->type == FFI_TYPE_STRUCT) + && !cif->flags))) + *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV; + else + *(void **)(closure->tramp + 8) = ffi_closure_SYSV; + +#ifdef __rtems__ + rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE ); +#elif defined(__MINT__) + Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE); +#else + syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE, + FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE); +#endif + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/deps/libffi/src/m68k/ffitarget.h b/deps/libffi/src/m68k/ffitarget.h new file mode 100644 index 00000000000000..e81dde2b2eb404 --- /dev/null +++ b/deps/libffi/src/m68k/ffitarget.h @@ -0,0 +1,54 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for Motorola 68K. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/deps/libffi/src/m68k/sysv.S b/deps/libffi/src/m68k/sysv.S new file mode 100644 index 00000000000000..ea40f1100ba9e4 --- /dev/null +++ b/deps/libffi/src/m68k/sysv.S @@ -0,0 +1,357 @@ +/* ----------------------------------------------------------------------- + + sysv.S - Copyright (c) 2012 Alan Hourihane + Copyright (c) 1998, 2012 Andreas Schwab + Copyright (c) 2008 Red Hat, Inc. + Copyright (c) 2012, 2016 Thorsten Glaser + + m68k Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +#ifdef HAVE_AS_CFI_PSEUDO_OP +#define CFI_STARTPROC() .cfi_startproc +#define CFI_OFFSET(reg,off) .cfi_offset reg,off +#define CFI_DEF_CFA(reg,off) .cfi_def_cfa reg,off +#define CFI_ENDPROC() .cfi_endproc +#else +#define CFI_STARTPROC() +#define CFI_OFFSET(reg,off) +#define CFI_DEF_CFA(reg,off) +#define CFI_ENDPROC() +#endif + +#ifdef __MINT__ +#define CALLFUNC(funcname) _ ## funcname +#else +#define CALLFUNC(funcname) funcname +#endif + + .text + + .globl CALLFUNC(ffi_call_SYSV) + .type CALLFUNC(ffi_call_SYSV),@function + .align 4 + +CALLFUNC(ffi_call_SYSV): + CFI_STARTPROC() + link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %d2,-(%sp) + CFI_OFFSET(2,-12) + + | Make room for all of the new args. + sub.l 12(%fp),%sp + + | Call ffi_prep_args + move.l 8(%fp),-(%sp) + pea 4(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_prep_args) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_prep_args@PLTPC) +#endif + addq.l #8,%sp + + | Pass pointer to struct value, if any +#ifdef __MINT__ + move.l %d0,%a1 +#else + move.l %a0,%a1 +#endif + + | Call the function + move.l 24(%fp),%a0 + jsr (%a0) + + | Remove the space we pushed for the args + add.l 12(%fp),%sp + + | Load the pointer to storage for the return value + move.l 20(%fp),%a1 + + | Load the return type code + move.l 16(%fp),%d2 + + | If the return value pointer is NULL, assume no return value. + | NOTE: On the mc68000, tst on an address register is not supported. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + cmp.w #0, %a1 +#else + tst.l %a1 +#endif + jbeq noretval + + btst #0,%d2 + jbeq retlongint + move.l %d0,(%a1) + jbra epilogue + +retlongint: + btst #1,%d2 + jbeq retfloat + move.l %d0,(%a1) + move.l %d1,4(%a1) + jbra epilogue + +retfloat: + btst #2,%d2 + jbeq retdouble +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.s %fp0,(%a1) +#else + move.l %d0,(%a1) +#endif + jbra epilogue + +retdouble: + btst #3,%d2 + jbeq retlongdouble +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.d %fp0,(%a1) +#else + move.l %d0,(%a1)+ + move.l %d1,(%a1) +#endif + jbra epilogue + +retlongdouble: + btst #4,%d2 + jbeq retpointer +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.x %fp0,(%a1) +#else + move.l %d0,(%a1)+ + move.l %d1,(%a1)+ + move.l %d2,(%a1) +#endif + jbra epilogue + +retpointer: + btst #5,%d2 + jbeq retstruct1 +#ifdef __MINT__ + move.l %d0,(%a1) +#else + move.l %a0,(%a1) +#endif + jbra epilogue + +retstruct1: + btst #6,%d2 + jbeq retstruct2 + move.b %d0,(%a1) + jbra epilogue + +retstruct2: + btst #7,%d2 + jbeq retsint8 + move.w %d0,(%a1) + jbra epilogue + +retsint8: + btst #8,%d2 + jbeq retsint16 + | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + ext.w %d0 + ext.l %d0 +#else + extb.l %d0 +#endif + move.l %d0,(%a1) + jbra epilogue + +retsint16: + btst #9,%d2 + jbeq noretval + ext.l %d0 + move.l %d0,(%a1) + +noretval: +epilogue: + move.l (%sp)+,%d2 + unlk %fp + rts + CFI_ENDPROC() + .size CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV) + + .globl CALLFUNC(ffi_closure_SYSV) + .type CALLFUNC(ffi_closure_SYSV), @function + .align 4 + +CALLFUNC(ffi_closure_SYSV): + CFI_STARTPROC() + link %fp,#-12 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + pea -12(%fp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) +#endif + + lsr.l #1,%d0 + jne 1f + jcc .Lcls_epilogue + | CIF_FLAGS_INT + move.l -12(%fp),%d0 +.Lcls_epilogue: + | no CIF_FLAGS_* + unlk %fp + rts +1: + lea -12(%fp),%a0 + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_float + | CIF_FLAGS_DINT + move.l (%a0)+,%d0 + move.l (%a0),%d1 + jra .Lcls_epilogue +.Lcls_ret_float: +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.s (%a0),%fp0 +#else + move.l (%a0),%d0 +#endif + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_ldouble + | CIF_FLAGS_DOUBLE +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.d (%a0),%fp0 +#else + move.l (%a0)+,%d0 + move.l (%a0),%d1 +#endif + jra .Lcls_epilogue +.Lcls_ret_ldouble: +#if defined(__MC68881__) || defined(__HAVE_68881__) + fmove.x (%a0),%fp0 +#else + move.l (%a0)+,%d0 + move.l (%a0)+,%d1 + move.l (%a0),%d2 +#endif + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_struct1 + | CIF_FLAGS_POINTER + move.l (%a0),%a0 + move.l %a0,%d0 + jra .Lcls_epilogue +.Lcls_ret_struct1: + move.b (%a0),%d0 + jra .Lcls_epilogue +1: + lsr.l #2,%d0 + jne 1f + jcs .Lcls_ret_sint8 + | CIF_FLAGS_STRUCT2 + move.w (%a0),%d0 + jra .Lcls_epilogue +.Lcls_ret_sint8: + move.l (%a0),%d0 + | NOTE: On the mc68000, extb is not supported. 8->16, then 16->32. +#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__) + ext.w %d0 + ext.l %d0 +#else + extb.l %d0 +#endif + jra .Lcls_epilogue +1: + | CIF_FLAGS_SINT16 + move.l (%a0),%d0 + ext.l %d0 + jra .Lcls_epilogue + CFI_ENDPROC() + + .size CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV) + + .globl CALLFUNC(ffi_closure_struct_SYSV) + .type CALLFUNC(ffi_closure_struct_SYSV), @function + .align 4 + +CALLFUNC(ffi_closure_struct_SYSV): + CFI_STARTPROC() + link %fp,#0 + CFI_OFFSET(14,-8) + CFI_DEF_CFA(14,8) + move.l %sp,-12(%fp) + pea 8(%fp) + move.l %a1,-(%sp) + move.l %a0,-(%sp) +#if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) +#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) + move.l _current_shared_library_a5_offset_(%a5),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) + move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 + lea (-6,%pc,%a0),%a0 + move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 + jsr (%a0) +#else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) +#endif + unlk %fp + rts + CFI_ENDPROC() + .size CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/m88k/ffi.c b/deps/libffi/src/m88k/ffi.c new file mode 100644 index 00000000000000..57b344f4b9a0e8 --- /dev/null +++ b/deps/libffi/src/m88k/ffi.c @@ -0,0 +1,400 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * m88k Foreign Function Interface + * + * This file attempts to provide all the FFI entry points which can reliably + * be implemented in C. + * + * Only OpenBSD/m88k is currently supported; other platforms (such as + * Motorola's SysV/m88k) could be supported with the following tweaks: + * + * - non-OpenBSD systems use an `outgoing parameter area' as part of the + * 88BCS calling convention, which is not supported under OpenBSD from + * release 3.6 onwards. Supporting it should be as easy as taking it + * into account when adjusting the stack, in the assembly code. + * + * - the logic deciding whether a function argument gets passed through + * registers, or on the stack, has changed several times in OpenBSD in + * edge cases (especially for structs larger than 32 bytes being passed + * by value). The code below attemps to match the logic used by the + * system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend + * fixes. + */ + +#include +#include + +#include +#include + +void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *, + void (*fn) ()); +void *ffi_prep_args (void *, extended_cif *); +void ffi_closure_OBSD (ffi_closure *); +void ffi_closure_struct_OBSD (ffi_closure *); +unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *, + char *); +void ffi_cacheflush_OBSD (unsigned int, unsigned int); + +#define CIF_FLAGS_INT (1 << 0) +#define CIF_FLAGS_DINT (1 << 1) + +/* + * Foreign Function Interface API + */ + +/* ffi_prep_args is called by the assembly routine once stack space has + been allocated for the function's arguments. */ + +void * +ffi_prep_args (void *stack, extended_cif *ecif) +{ + unsigned int i; + void **p_argv; + char *argp, *stackp; + unsigned int *regp; + unsigned int regused; + ffi_type **p_arg; + void *struct_value_ptr; + + regp = (unsigned int *)stack; + stackp = (char *)(regp + 8); + regused = 0; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT + && !ecif->cif->flags) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + unsigned short t, a; + + z = (*p_arg)->size; + t = (*p_arg)->type; + a = (*p_arg)->alignment; + + /* + * Figure out whether the argument can be passed through registers + * or on the stack. + * The rule is that registers can only receive simple types not larger + * than 64 bits, or structs the exact size of a register and aligned to + * the size of a register. + */ + if (t == FFI_TYPE_STRUCT) + { + if (z == sizeof (int) && a == sizeof (int) && regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + else + { + if (z > sizeof (int) && regused < 8 - 1) + { + /* align to an even register pair */ + if (regused & 1) + { + regp++; + regused++; + } + } + if (regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + + /* Enforce proper stack alignment of 64-bit types */ + if (argp == stackp && a > sizeof (int)) + { + stackp = (char *) FFI_ALIGN(stackp, a); + argp = stackp; + } + + switch (t) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *(unsigned int *) argp = *(unsigned int *) *p_argv; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT (0); + } + + /* Align if necessary. */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + + /* Be careful, once all registers are filled, and about to continue + on stack, regp == stackp. Therefore the check for regused as well. */ + if (argp == (char *)regp && regused < 8) + { + regp += z / sizeof (int); + regused += z / sizeof (int); + } + else + stackp += z; + } + + return struct_value_ptr; +} + +/* Perform machine dependent cif processing */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->size == sizeof (int) && + cif->rtype->alignment == sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else + cif->flags = 0; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = CIF_FLAGS_DINT; + break; + + default: + cif->flags = CIF_FLAGS_INT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && (cif->rtype->size != sizeof (int) + || cif->rtype->alignment != sizeof (int))) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_OBSD: + ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/* + * Closure API + */ + +static void +ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp, + char *stackp) +{ + unsigned int i; + void **p_argv; + char *argp; + unsigned int regused; + ffi_type **p_arg; + + regused = 0; + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + unsigned short t, a; + + z = (*p_arg)->size; + t = (*p_arg)->type; + a = (*p_arg)->alignment; + + /* + * Figure out whether the argument has been passed through registers + * or on the stack. + * The rule is that registers can only receive simple types not larger + * than 64 bits, or structs the exact size of a register and aligned to + * the size of a register. + */ + if (t == FFI_TYPE_STRUCT) + { + if (z == sizeof (int) && a == sizeof (int) && regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + else + { + if (z > sizeof (int) && regused < 8 - 1) + { + /* align to an even register pair */ + if (regused & 1) + { + regp++; + regused++; + } + } + if (regused < 8) + argp = (char *)regp; + else + argp = stackp; + } + + /* Enforce proper stack alignment of 64-bit types */ + if (argp == stackp && a > sizeof (int)) + { + stackp = (char *) FFI_ALIGN(stackp, a); + argp = stackp; + } + + if (z < sizeof (int) && t != FFI_TYPE_STRUCT) + *p_argv = (void *) (argp + sizeof (int) - z); + else + *p_argv = (void *) argp; + + /* Align if necessary */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + + /* Be careful, once all registers are exhausted, and about to fetch from + stack, regp == stackp. Therefore the check for regused as well. */ + if (argp == (char *)regp && regused < 8) + { + regp += z / sizeof (int); + regused += z / sizeof (int); + } + else + stackp += z; + } +} + +unsigned int +ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp, + char *stackp) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, void *codeloc) +{ + unsigned int *tramp = (unsigned int *) codeloc; + void *fn; + + FFI_ASSERT (cif->abi == FFI_OBSD); + + if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags) + fn = &ffi_closure_struct_OBSD; + else + fn = &ffi_closure_OBSD; + + /* or.u %r10, %r0, %hi16(fn) */ + tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16); + /* or.u %r13, %r0, %hi16(closure) */ + tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16); + /* or %r10, %r10, %lo16(fn) */ + tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff); + /* jmp.n %r10 */ + tramp[3] = 0xf400c40a; + /* or %r13, %r13, %lo16(closure) */ + tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff); + + ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/deps/libffi/src/m88k/ffitarget.h b/deps/libffi/src/m88k/ffitarget.h new file mode 100644 index 00000000000000..e52bf9fa30a487 --- /dev/null +++ b/deps/libffi/src/m88k/ffitarget.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * m88k Foreign Function Interface + */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_OBSD, + FFI_DEFAULT_ABI = FFI_OBSD, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 0x14 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/m88k/obsd.S b/deps/libffi/src/m88k/obsd.S new file mode 100644 index 00000000000000..1944a23de42459 --- /dev/null +++ b/deps/libffi/src/m88k/obsd.S @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * m88k Foreign Function Interface + */ + +#define LIBFFI_ASM +#include +#include + + .text + +/* + * ffi_cacheflush_OBSD(unsigned int addr, %r2 + * unsigned int size); %r3 + */ + .align 4 + .globl ffi_cacheflush_OBSD + .type ffi_cacheflush_OBSD,@function +ffi_cacheflush_OBSD: + tb0 0, %r0, 451 + or %r0, %r0, %r0 + jmp %r1 + .size ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD + +/* + * ffi_call_OBSD(unsigned bytes, %r2 + * extended_cif *ecif, %r3 + * unsigned flags, %r4 + * void *rvalue, %r5 + * void (*fn)()); %r6 + */ + .align 4 + .globl ffi_call_OBSD + .type ffi_call_OBSD,@function +ffi_call_OBSD: + subu %r31, %r31, 32 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 32 + + | Save the few arguments we'll need after ffi_prep_args() + st.d %r4, %r31, 8 + st %r6, %r31, 16 + + | Allocate room for the image of r2-r9, and the stack space for + | the args (rounded to a 16-byte boundary) + addu %r2, %r2, (8 * 4) + 15 + clr %r2, %r2, 4<0> + subu %r31, %r31, %r2 + + | Fill register and stack image + or %r2, %r31, %r0 +#ifdef PIC + bsr ffi_prep_args#plt +#else + bsr ffi_prep_args +#endif + + | Save pointer to return struct address, if any + or %r12, %r2, %r0 + + | Get function pointer + subu %r4, %r30, 32 + ld %r1, %r4, 16 + + | Fetch the register arguments + ld.d %r2, %r31, (0 * 4) + ld.d %r4, %r31, (2 * 4) + ld.d %r6, %r31, (4 * 4) + ld.d %r8, %r31, (6 * 4) + addu %r31, %r31, (8 * 4) + + | Invoke the function + jsr %r1 + + | Restore stack now that we don't need the args anymore + subu %r31, %r30, 32 + + | Figure out what to return as the function's return value + ld %r5, %r31, 12 | rvalue + ld %r4, %r31, 8 | flags + + bcnd eq0, %r5, 9f + + bb0 0, %r4, 1f | CIF_FLAGS_INT + st %r2, %r5, 0 + br 9f + +1: + bb0 1, %r4, 1f | CIF_FLAGS_DINT + st.d %r2, %r5, 0 + br 9f + +1: +9: + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 32 + .size ffi_call_OBSD, . - ffi_call_OBSD + +/* + * ffi_closure_OBSD(ffi_closure *closure); %r13 + */ + .align 4 + .globl ffi_closure_OBSD + .type ffi_closure_OBSD, @function +ffi_closure_OBSD: + subu %r31, %r31, 16 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 16 + + | Make room on the stack for saved register arguments and return + | value + subu %r31, %r31, (8 * 4) + (2 * 4) + st.d %r2, %r31, (0 * 4) + st.d %r4, %r31, (2 * 4) + st.d %r6, %r31, (4 * 4) + st.d %r8, %r31, (6 * 4) + + | Invoke the closure function + or %r5, %r30, 0 | calling stack + addu %r4, %r31, 0 | saved registers + addu %r3, %r31, (8 * 4) | return value + or %r2, %r13, %r0 | closure +#ifdef PIC + bsr ffi_closure_OBSD_inner#plt +#else + bsr ffi_closure_OBSD_inner +#endif + + | Figure out what to return as the function's return value + bb0 0, %r2, 1f | CIF_FLAGS_INT + ld %r2, %r31, (8 * 4) + br 9f + +1: + bb0 1, %r2, 1f | CIF_FLAGS_DINT + ld.d %r2, %r31, (8 * 4) + br 9f + +1: +9: + subu %r31, %r30, 16 + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 16 + .size ffi_closure_OBSD,.-ffi_closure_OBSD + +/* + * ffi_closure_struct_OBSD(ffi_closure *closure); %r13 + */ + .align 4 + .globl ffi_closure_struct_OBSD + .type ffi_closure_struct_OBSD, @function +ffi_closure_struct_OBSD: + subu %r31, %r31, 16 + st %r30, %r31, 4 + st %r1, %r31, 0 + addu %r30, %r31, 16 + + | Make room on the stack for saved register arguments + subu %r31, %r31, (8 * 4) + st.d %r2, %r31, (0 * 4) + st.d %r4, %r31, (2 * 4) + st.d %r6, %r31, (4 * 4) + st.d %r8, %r31, (6 * 4) + + | Invoke the closure function + or %r5, %r30, 0 | calling stack + addu %r4, %r31, 0 | saved registers + or %r3, %r12, 0 | return value + or %r2, %r13, %r0 | closure +#ifdef PIC + bsr ffi_closure_OBSD_inner#plt +#else + bsr ffi_closure_OBSD_inner +#endif + + subu %r31, %r30, 16 + ld %r1, %r31, 0 + ld %r30, %r31, 4 + jmp.n %r1 + addu %r31, %r31, 16 + .size ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD diff --git a/deps/libffi/src/metag/ffi.c b/deps/libffi/src/metag/ffi.c new file mode 100644 index 00000000000000..3aecb0b8115631 --- /dev/null +++ b/deps/libffi/src/metag/ffi.c @@ -0,0 +1,330 @@ +/* ---------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Imagination Technologies + + Meta Foreign Function Interface + 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 SIMON POSNJAK 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. +----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +/* + * ffi_prep_args is called by the assembly routine once stack space has been + * allocated for the function's arguments + */ + +unsigned int ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + /* Store return value */ + if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { + argp -= 4; + *(void **) argp = ecif->rvalue; + } + + p_argv = ecif->avalue; + + /* point to next location */ + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++) + { + size_t z; + + /* Move argp to address of argument */ + z = (*p_arg)->size; + argp -= z; + + /* Align if necessary */ + argp = (char *) FFI_ALIGN_DOWN(FFI_ALIGN_DOWN(argp, (*p_arg)->alignment), 4); + + if (z < sizeof(int)) { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + case FFI_TYPE_STRUCT: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + default: + FFI_ASSERT(0); + } + } else if ( z == sizeof(int)) { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } else { + memcpy(argp, *p_argv, z); + } + } + + /* return the size of the arguments to be passed in registers, + padded to an 8 byte boundary to preserve stack alignment */ + return FFI_ALIGN(MIN(stack - argp, 6*4), 8); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + ffi_type **ptr; + unsigned i, bytes = 0; + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) { + if ((*ptr)->size == 0) + return FFI_BAD_TYPEDEF; + + /* Perform a sanity check on the argument type, do this + check after the initialization. */ + FFI_ASSERT_VALID_TYPE(*ptr); + + /* Add any padding if necessary */ + if (((*ptr)->alignment - 1) & bytes) + bytes = FFI_ALIGN(bytes, (*ptr)->alignment); + + bytes += FFI_ALIGN((*ptr)->size, 4); + } + + /* Ensure arg space is aligned to an 8-byte boundary */ + bytes = FFI_ALIGN(bytes, 8); + + /* Make space for the return structure pointer */ + if (cif->rtype->type == FFI_TYPE_STRUCT) { + bytes += sizeof(void*); + + /* Ensure stack is aligned to an 8-byte boundary */ + bytes = FFI_ALIGN(bytes, 8); + } + + cif->bytes = bytes; + + /* Set the return type flag */ + switch (cif->rtype->type) { + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags = (unsigned) cif->rtype->type; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = (unsigned) FFI_TYPE_SINT64; + break; + case FFI_TYPE_STRUCT: + /* Meta can store return values which are <= 64 bits */ + if (cif->rtype->size <= 4) + /* Returned to D0Re0 as 32-bit value */ + cif->flags = (unsigned)FFI_TYPE_INT; + else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8)) + /* Returned valued is stored to D1Re0|R0Re0 */ + cif->flags = (unsigned)FFI_TYPE_DOUBLE; + else + /* value stored in memory */ + cif->flags = (unsigned)FFI_TYPE_STRUCT; + break; + default: + cif->flags = (unsigned)FFI_TYPE_INT; + break; + } + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *); + +/* + * Exported in API. Entry point + * cif -> ffi_cif object + * fn -> function pointer + * rvalue -> pointer to return value + * avalue -> vector of void * pointers pointing to memory locations holding the + * arguments + */ +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT)); + ecif.cif = cif; + ecif.avalue = avalue; + + double temp; + + /* + * If the return value is a struct and we don't have a return value address + * then we need to make one + */ + + if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT)) + ecif.rvalue = alloca(cif->rtype->size); + else if (small_struct) + ecif.rvalue = &temp; + else + ecif.rvalue = rvalue; + + switch (cif->abi) { + case FFI_SYSV: + ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue); + break; + default: + FFI_ASSERT(0); + break; + } + + if (small_struct) + memcpy (rvalue, &temp, cif->rtype->size); +} + +/* private members */ + +static void ffi_prep_incoming_args_SYSV (char *, void **, void **, + ffi_cif*, float *); + +void ffi_closure_SYSV (ffi_closure *); + +/* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */ +extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */ + +/* end of private members */ + +/* + * __tramp: trampoline memory location + * __fun: assembly routine + * __ctx: memory location for wrapper + * + * At this point, tramp[0] == __ctx ! + */ +void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) { + memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline)); + *(unsigned int*) &__tramp[40] = __ctx; + *(unsigned int*) &__tramp[44] = __fun; + /* This will flush the instruction cache */ + __builtin_meta2_cachewd(&__tramp[0], 1); + __builtin_meta2_cachewd(&__tramp[47], 1); +} + + + +/* the cif must already be prepared */ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + void (*closure_func)(ffi_closure*) = NULL; + + if (cif->abi == FFI_SYSV) + closure_func = &ffi_closure_SYSV; + else + return FFI_BAD_ABI; + + ffi_init_trampoline( + (unsigned char*)&closure->tramp[0], + (unsigned int)closure_func, + (unsigned int)codeloc); + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} + + +/* This function is jumped to by the trampoline */ +unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args) + ffi_closure *closure; + void **respp; + void *args; + void *vfp_args; +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void**) alloca (cif->nargs * sizeof (void*)); + + /* + * This call will initialize ARG_AREA, such that each + * element in that array points to the corresponding + * value on the stack; and if the function returns + * a structure, it will re-set RESP to point to the + * structure return address. + */ + ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args); + + (closure->fun) ( cif, *respp, arg_area, closure->user_data); + + return cif->flags; +} + +static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, + void **avalue, ffi_cif *cif, + float *vfp_stack) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + /* stack points to original arguments */ + argp = stack; + + /* Store return value */ + if ( cif->flags == FFI_TYPE_STRUCT ) { + argp -= 4; + *rvalue = *(void **) argp; + } + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) { + size_t z; + size_t alignment; + + alignment = (*p_arg)->alignment; + if (alignment < 4) + alignment = 4; + if ((alignment - 1) & (unsigned)argp) + argp = (char *) FFI_ALIGN(argp, alignment); + + z = (*p_arg)->size; + *p_argv = (void*) argp; + p_argv++; + argp -= z; + } + return; +} diff --git a/deps/libffi/src/metag/ffitarget.h b/deps/libffi/src/metag/ffitarget.h new file mode 100644 index 00000000000000..7b9dbebca86919 --- /dev/null +++ b/deps/libffi/src/metag/ffitarget.h @@ -0,0 +1,53 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd. + Target configuration macros for Meta + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_DEFAULT_ABI = FFI_SYSV, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1, +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 48 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/deps/libffi/src/metag/sysv.S b/deps/libffi/src/metag/sysv.S new file mode 100644 index 00000000000000..b4b2a3b26bbfbd --- /dev/null +++ b/deps/libffi/src/metag/sysv.S @@ -0,0 +1,311 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2013 Imagination Technologies Ltd. + + Meta Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +/* Use the right prefix for global labels. */ +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else +#define CNAME(x) x +#endif +#define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x): +#endif + +#ifdef __ELF__ +#define LSYM(x) .x +#else +#define LSYM(x) x +#endif + +.macro call_reg x= + .text + .balign 4 + mov D1RtP, \x + swap D1RtP, PC +.endm + +! Save register arguments +.macro SAVE_ARGS + .text + .balign 4 + setl [A0StP++], D0Ar6, D1Ar5 + setl [A0StP++], D0Ar4, D1Ar3 + setl [A0StP++], D0Ar2, D1Ar1 +.endm + +! Save retrun, frame pointer and other regs +.macro SAVE_REGS regs= + .text + .balign 4 + setl [A0StP++], D0FrT, D1RtP + ! Needs to be a pair of regs + .ifnc "\regs","" + setl [A0StP++], \regs + .endif +.endm + +! Declare a global function +.macro METAG_FUNC_START name + .text + .balign 4 + ENTRY(\name) +.endm + +! Return registers from the stack. Reverse SAVE_REGS operation +.macro RET_REGS regs=, cond= + .ifnc "\regs", "" + getl \regs, [--A0StP] + .endif + getl D0FrT, D1RtP, [--A0StP] +.endm + +! Return arguments +.macro RET_ARGS + getl D0Ar2, D1Ar1, [--A0StP] + getl D0Ar4, D1Ar3, [--A0StP] + getl D0Ar6, D1Ar5, [--A0StP] +.endm + + + ! D1Ar1: fn + ! D0Ar2: &ecif + ! D1Ar3: cif->bytes + ! D0Ar4: fig->flags + ! D1Ar5: ecif.rvalue + + ! This assumes we are using GNU as +METAG_FUNC_START ffi_call_SYSV + ! Save argument registers + + SAVE_ARGS + + ! new frame + mov D0FrT, A0FrP + add A0FrP, A0StP, #0 + + ! Preserve the old frame pointer + SAVE_REGS "D1.5, D0.5" + + ! Make room for new args. cifs->bytes is the total space for input + ! and return arguments + + add A0StP, A0StP, D1Ar3 + + ! Preserve cifs->bytes & fn + mov D0.5, D1Ar3 + mov D1.5, D1Ar1 + + ! Place all of the ffi_prep_args in position + mov D1Ar1, A0StP + + ! Call ffi_prep_args(stack, &ecif) +#ifdef __PIC__ + callr D1RtP, CNAME(ffi_prep_args@PLT) +#else + callr D1RtP, CNAME(ffi_prep_args) +#endif + + ! Restore fn pointer + + ! The foreign stack should look like this + ! XXXXX XXXXXX <--- stack pointer + ! FnArgN rvalue + ! FnArgN+2 FnArgN+1 + ! FnArgN+4 FnArgN+3 + ! .... + ! + + ! A0StP now points to the first (or return) argument + 4 + + ! Preserve cif->bytes + getl D0Ar2, D1Ar1, [--A0StP] + getl D0Ar4, D1Ar3, [--A0StP] + getl D0Ar6, D1Ar5, [--A0StP] + + ! Place A0StP to the first argument again + add A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each + + ! A0FrP points to the initial stack without the reserved space for the + ! cifs->bytes, whilst A0StP points to the stack after the space allocation + + ! fn was the first argument of ffi_call_SYSV. + ! The stack at this point looks like this: + ! + ! A0StP(on entry to _SYSV) -> Arg6 Arg5 | low + ! Arg4 Arg3 | + ! Arg2 Arg1 | + ! A0FrP ----> D0FrtP D1RtP | + ! D1.5 D0.5 | + ! A0StP(bf prep_args) -> FnArgn FnArgn-1 | + ! FnArgn-2FnArgn-3 | + ! ................ | <= cifs->bytes + ! FnArg4 FnArg3 | + ! A0StP (prv_A0StP+cifs->bytes) FnArg2 FnArg1 | high + ! + ! fn was in Arg1 so it's located in in A0FrP+#-0xC + ! + + ! D0Re0 contains the size of arguments stored in registers + sub A0StP, A0StP, D0Re0 + + ! Arg1 is the function pointer for the foreign call. This has been + ! preserved in D1.5 + + ! Time to call (fn). Arguments should be like this: + ! Arg1-Arg6 are loaded to regs + ! The rest of the arguments are stored in stack pointed by A0StP + + call_reg D1.5 + + ! Reset stack. + + mov A0StP, A0FrP + + ! Load Arg1 with the pointer to storage for the return type + ! This was stored in Arg5 + + getd D1Ar1, [A0FrP+#-20] + + ! Load D0Ar2 with the return type code. This was stored in Arg4 (flags) + + getd D0Ar2, [A0FrP+#-16] + + ! We are ready to start processing the return value + ! D0Re0 (and D1Re0) hold the return value + + ! If the return value is NULL, assume no return value + cmp D1Ar1, #0 + beq LSYM(Lepilogue) + + ! return INT + cmp D0Ar2, #FFI_TYPE_INT + ! Sadly, there is no setd{cc} instruction so we need to workaround that + bne .INT64 + setd [D1Ar1], D0Re0 + b LSYM(Lepilogue) + + ! return INT64 +.INT64: + cmp D0Ar2, #FFI_TYPE_SINT64 + setleq [D1Ar1], D0Re0, D1Re0 + + ! return DOUBLE + cmp D0Ar2, #FFI_TYPE_DOUBLE + setl [D1AR1++], D0Re0, D1Re0 + +LSYM(Lepilogue): + ! At this point, the stack pointer points right after the argument + ! saved area. We need to restore 4 regs, therefore we need to move + ! 16 bytes ahead. + add A0StP, A0StP, #16 + RET_REGS "D1.5, D0.5" + RET_ARGS + getd D0Re0, [A0StP] + mov A0FrP, D0FrT + swap D1RtP, PC + +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + + +/* + (called by ffi_metag_trampoline) + void ffi_closure_SYSV (ffi_closure*) + + (called by ffi_closure_SYSV) + unsigned int FFI_HIDDEN + ffi_closure_SYSV_inner (closure,respp, args) + ffi_closure *closure; + void **respp; + void *args; +*/ + +METAG_FUNC_START ffi_closure_SYSV + ! We assume that D1Ar1 holds the address of the + ! ffi_closure struct. We will use that to fetch the + ! arguments. The stack pointer points to an empty space + ! and it is ready to store more data. + + ! D1Ar1 is ready + ! Allocate stack space for return value + add A0StP, A0StP, #8 + ! Store it to D0Ar2 + sub D0Ar2, A0StP, #8 + + sub D1Ar3, A0FrP, #4 + + ! D1Ar3 contains the address of the original D1Ar1 argument + ! We need to subtract #4 later on + + ! Preverve D0Ar2 + mov D0.5, D0Ar2 + +#ifdef __PIC__ + callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT) +#else + callr D1RtP, CNAME(ffi_closure_SYSV_inner) +#endif + + ! Check the return value and store it to D0.5 + cmp D0Re0, #FFI_TYPE_INT + beq .Lretint + cmp D0Re0, #FFI_TYPE_DOUBLE + beq .Lretdouble +.Lclosure_epilogue: + sub A0StP, A0StP, #8 + RET_REGS "D1.5, D0.5" + RET_ARGS + swap D1RtP, PC + +.Lretint: + setd [D0.5], D0Re0 + b .Lclosure_epilogue +.Lretdouble: + setl [D0.5++], D0Re0, D1Re0 + b .Lclosure_epilogue +.ffi_closure_SYSV_end: +.size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + + +ENTRY(ffi_metag_trampoline) + SAVE_ARGS + ! New frame + mov A0FrP, A0StP + SAVE_REGS "D1.5, D0.5" + mov D0.5, PC + ! Load D1Ar1 the value of ffi_metag_trampoline + getd D1Ar1, [D0.5 + #8] + ! Jump to ffi_closure_SYSV + getd PC, [D0.5 + #12] diff --git a/deps/libffi/src/microblaze/ffi.c b/deps/libffi/src/microblaze/ffi.c new file mode 100644 index 00000000000000..df6e33c97d4c00 --- /dev/null +++ b/deps/libffi/src/microblaze/ffi.c @@ -0,0 +1,321 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc + + MicroBlaze Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*, + unsigned int, unsigned int, unsigned int*, void (*fn)(void), + unsigned int, unsigned int); + +extern void ffi_closure_SYSV(void); + +#define WORD_SIZE sizeof(unsigned int) +#define ARGS_REGISTER_SIZE (WORD_SIZE * 6) +#define WORD_FFI_ALIGN(x) FFI_ALIGN(x, WORD_SIZE) + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ +void ffi_prep_args(void* stack, extended_cif* ecif) +{ + unsigned int i; + ffi_type** p_arg; + void** p_argv; + void* stack_args_p = stack; + + if (ecif == NULL || ecif->cif == NULL) { + return; /* no description to prepare */ + } + + p_argv = ecif->avalue; + + if ((ecif->cif->rtype != NULL) && + (ecif->cif->rtype->type == FFI_TYPE_STRUCT)) + { + /* if return type is a struct which is referenced on the stack/reg5, + * by a pointer. Stored the return value pointer in r5. + */ + char* addr = stack_args_p; + memcpy(addr, &(ecif->rvalue), WORD_SIZE); + stack_args_p += WORD_SIZE; + } + + if (ecif->avalue == NULL) { + return; /* no arguments to prepare */ + } + + for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; + i++, p_arg++) + { + size_t size = (*p_arg)->size; + int type = (*p_arg)->type; + void* value = p_argv[i]; + char* addr = stack_args_p; + int aligned_size = WORD_FFI_ALIGN(size); + + /* force word alignment on the stack */ + stack_args_p += aligned_size; + + switch (type) + { + case FFI_TYPE_UINT8: + *(unsigned int *)addr = (unsigned int)*(UINT8*)(value); + break; + case FFI_TYPE_SINT8: + *(signed int *)addr = (signed int)*(SINT8*)(value); + break; + case FFI_TYPE_UINT16: + *(unsigned int *)addr = (unsigned int)*(UINT16*)(value); + break; + case FFI_TYPE_SINT16: + *(signed int *)addr = (signed int)*(SINT16*)(value); + break; + case FFI_TYPE_STRUCT: +#if __BIG_ENDIAN__ + /* + * MicroBlaze toolchain appears to emit: + * bsrli r5, r5, 8 (caller) + * ... + * + * ... + * bslli r5, r5, 8 (callee) + * + * For structs like "struct a { uint8_t a[3]; };", when passed + * by value. + * + * Structs like "struct b { uint16_t a; };" are also expected + * to be packed strangely in registers. + * + * This appears to be because the microblaze toolchain expects + * "struct b == uint16_t", which is only any issue for big + * endian. + * + * The following is a work around for big-endian only, for the + * above mentioned case, it will re-align the contents of a + * <= 3-byte struct value. + */ + if (size < WORD_SIZE) + { + memcpy (addr + (WORD_SIZE - size), value, size); + break; + } +#endif + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + default: + memcpy(addr, value, aligned_size); + } + } +} + +ffi_status ffi_prep_cif_machdep(ffi_cif* cif) +{ + /* check ABI */ + switch (cif->abi) + { + case FFI_SYSV: + break; + default: + return FFI_BAD_ABI; + } + return FFI_OK; +} + +void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue) +{ + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + ecif.rvalue = alloca(cif->rtype->size); + } else { + ecif.rvalue = rvalue; + } + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, + ecif.rvalue, fn, cif->rtype->type, cif->rtype->size); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_call_SYSV(void* register_args, void* stack_args, + ffi_closure* closure, void* rvalue, + unsigned int* rtype, unsigned int* rsize) +{ + /* prepare arguments for closure call */ + ffi_cif* cif = closure->cif; + ffi_type** arg_types = cif->arg_types; + + /* re-allocate data for the args. This needs to be done in order to keep + * multi-word objects (e.g. structs) in contiguous memory. Callers are not + * required to store the value of args in the lower 6 words in the stack + * (although they are allocated in the stack). + */ + char* stackclone = alloca(cif->bytes); + void** avalue = alloca(cif->nargs * sizeof(void*)); + void* struct_rvalue = NULL; + char* ptr = stackclone; + int i; + + /* copy registers into stack clone */ + int registers_used = cif->bytes; + if (registers_used > ARGS_REGISTER_SIZE) { + registers_used = ARGS_REGISTER_SIZE; + } + memcpy(stackclone, register_args, registers_used); + + /* copy stack allocated args into stack clone */ + if (cif->bytes > ARGS_REGISTER_SIZE) { + int stack_used = cif->bytes - ARGS_REGISTER_SIZE; + memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used); + } + + /* preserve struct type return pointer passing */ + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + struct_rvalue = *((void**)ptr); + ptr += WORD_SIZE; + } + + /* populate arg pointer list */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifdef __BIG_ENDIAN__ + avalue[i] = ptr + 3; +#else + avalue[i] = ptr; +#endif + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifdef __BIG_ENDIAN__ + avalue[i] = ptr + 2; +#else + avalue[i] = ptr; +#endif + break; + case FFI_TYPE_STRUCT: +#if __BIG_ENDIAN__ + /* + * Work around strange ABI behaviour. + * (see info in ffi_prep_args) + */ + if (arg_types[i]->size < WORD_SIZE) + { + memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size); + } +#endif + avalue[i] = (void*)ptr; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_DOUBLE: + avalue[i] = ptr; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + default: + /* default 4-byte argument */ + avalue[i] = ptr; + break; + } + ptr += WORD_FFI_ALIGN(arg_types[i]->size); + } + + /* set the return type info passed back to the wrapper */ + *rsize = cif->rtype->size; + *rtype = cif->rtype->type; + if (struct_rvalue != NULL) { + closure->fun(cif, struct_rvalue, avalue, closure->user_data); + /* copy struct return pointer value into function return value */ + *((void**)rvalue) = struct_rvalue; + } else { + closure->fun(cif, rvalue, avalue, closure->user_data); + } +} + +ffi_status ffi_prep_closure_loc( + ffi_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void* user_data, void* codeloc) +{ + unsigned long* tramp = (unsigned long*)&(closure->tramp[0]); + unsigned long cls = (unsigned long)codeloc; + unsigned long fn = 0; + unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + switch (cif->abi) + { + case FFI_SYSV: + fn = (unsigned long)ffi_closure_SYSV; + + /* load r11 (temp) with fn */ + /* imm fn(upper) */ + tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff); + /* addik r11, r0, fn(lower) */ + tramp[1] = 0x31600000 | (fn & 0xffff); + + /* load r12 (temp) with cls */ + /* imm cls(upper) */ + tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff); + /* addik r12, r0, cls(lower) */ + tramp[3] = 0x31800000 | (cls & 0xffff); + + /* load r3 (temp) with ffi_closure_call_SYSV */ + /* imm fn_closure_call_sysv(upper) */ + tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff); + /* addik r3, r0, fn_closure_call_sysv(lower) */ + tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff); + /* branch/jump to address stored in r11 (fn) */ + tramp[6] = 0x98085800; /* bra r11 */ + + break; + default: + return FFI_BAD_ABI; + } + return FFI_OK; +} diff --git a/deps/libffi/src/microblaze/ffitarget.h b/deps/libffi/src/microblaze/ffitarget.h new file mode 100644 index 00000000000000..c6fa5a4115d980 --- /dev/null +++ b/deps/libffi/src/microblaze/ffitarget.h @@ -0,0 +1,53 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc + + Target configuration macros for MicroBlaze. + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* Definitions for closures */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#define FFI_TRAMPOLINE_SIZE (4*8) + +#endif diff --git a/deps/libffi/src/microblaze/sysv.S b/deps/libffi/src/microblaze/sysv.S new file mode 100644 index 00000000000000..ea43e9d5453943 --- /dev/null +++ b/deps/libffi/src/microblaze/sysv.S @@ -0,0 +1,302 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc + + MicroBlaze Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + /* + * arg[0] (r5) = ffi_prep_args, + * arg[1] (r6) = &ecif, + * arg[2] (r7) = cif->bytes, + * arg[3] (r8) = cif->flags, + * arg[4] (r9) = ecif.rvalue, + * arg[5] (r10) = fn + * arg[6] (sp[0]) = cif->rtype->type + * arg[7] (sp[4]) = cif->rtype->size + */ + .text + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +ffi_call_SYSV: + /* push callee saves */ + addik r1, r1, -20 + swi r19, r1, 0 /* Frame Pointer */ + swi r20, r1, 4 /* PIC register */ + swi r21, r1, 8 /* PIC register */ + swi r22, r1, 12 /* save for locals */ + swi r23, r1, 16 /* save for locals */ + + /* save the r5-r10 registers in the stack */ + addik r1, r1, -24 /* increment sp to store 6x 32-bit words */ + swi r5, r1, 0 + swi r6, r1, 4 + swi r7, r1, 8 + swi r8, r1, 12 + swi r9, r1, 16 + swi r10, r1, 20 + + /* save function pointer */ + addik r3, r5, 0 /* copy ffi_prep_args into r3 */ + addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */ + addik r23, r10, 0 /* save function address into r23 (callee-saved) */ + + /* prepare stack with allocation for n (bytes = r7) args */ + rsub r1, r7, r1 /* subtract bytes from sp */ + + /* prep args for ffi_prep_args call */ + addik r5, r1, 0 /* store stack pointer into arg[0] */ + /* r6 still holds ecif for arg[1] */ + + /* Call ffi_prep_args(stack, &ecif). */ + addik r1, r1, -4 + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r3 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 4 /* restore the link register from the frame */ + /* returns calling stack pointer location */ + + /* prepare args for fn call, prep_args populates them onto the stack */ + lwi r5, r1, 0 /* arg[0] */ + lwi r6, r1, 4 /* arg[1] */ + lwi r7, r1, 8 /* arg[2] */ + lwi r8, r1, 12 /* arg[3] */ + lwi r9, r1, 16 /* arg[4] */ + lwi r10, r1, 20 /* arg[5] */ + + /* call (fn) (...). */ + addik r1, r1, -4 + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r23 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 4 /* restore the link register from the frame */ + + /* Remove the space we pushed for the args. */ + addik r1, r22, 0 /* restore old SP */ + + /* restore this functions parameters */ + lwi r5, r1, 0 /* arg[0] */ + lwi r6, r1, 4 /* arg[1] */ + lwi r7, r1, 8 /* arg[2] */ + lwi r8, r1, 12 /* arg[3] */ + lwi r9, r1, 16 /* arg[4] */ + lwi r10, r1, 20 /* arg[5] */ + addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */ + + /* If the return value pointer is NULL, assume no return value. */ + beqi r9, ffi_call_SYSV_end + + lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */ + lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7]) */ + + /* Check if return type is actually a struct, do nothing */ + rsubi r11, r22, FFI_TYPE_STRUCT + beqi r11, ffi_call_SYSV_end + + /* Return 8bit */ + rsubi r11, r23, 1 + beqi r11, ffi_call_SYSV_store8 + + /* Return 16bit */ + rsubi r11, r23, 2 + beqi r11, ffi_call_SYSV_store16 + + /* Return 32bit */ + rsubi r11, r23, 4 + beqi r11, ffi_call_SYSV_store32 + + /* Return 64bit */ + rsubi r11, r23, 8 + beqi r11, ffi_call_SYSV_store64 + + /* Didn't match anything */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store64: + swi r3, r9, 0 /* store word r3 into return value */ + swi r4, r9, 4 /* store word r4 into return value */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store32: + swi r3, r9, 0 /* store word r3 into return value */ + bri ffi_call_SYSV_end + +ffi_call_SYSV_store16: +#ifdef __BIG_ENDIAN__ + shi r3, r9, 2 /* store half-word r3 into return value */ +#else + shi r3, r9, 0 /* store half-word r3 into return value */ +#endif + bri ffi_call_SYSV_end + +ffi_call_SYSV_store8: +#ifdef __BIG_ENDIAN__ + sbi r3, r9, 3 /* store byte r3 into return value */ +#else + sbi r3, r9, 0 /* store byte r3 into return value */ +#endif + bri ffi_call_SYSV_end + +ffi_call_SYSV_end: + /* callee restores */ + lwi r19, r1, 0 /* frame pointer */ + lwi r20, r1, 4 /* PIC register */ + lwi r21, r1, 8 /* PIC register */ + lwi r22, r1, 12 + lwi r23, r1, 16 + addik r1, r1, 20 + + /* return from sub-routine (with delay slot) */ + rtsd r15, 8 + nop + + .size ffi_call_SYSV, . - ffi_call_SYSV + +/* ------------------------------------------------------------------------- */ + + /* + * args passed into this function, are passed down to the callee. + * this function is the target of the closure trampoline, as such r12 is + * a pointer to the closure object. + */ + .text + .globl ffi_closure_SYSV + .type ffi_closure_SYSV, @function +ffi_closure_SYSV: + /* push callee saves */ + addik r11, r1, 28 /* save stack args start location (excluding regs/link) */ + addik r1, r1, -12 + swi r19, r1, 0 /* Frame Pointer */ + swi r20, r1, 4 /* PIC register */ + swi r21, r1, 8 /* PIC register */ + + /* store register args on stack */ + addik r1, r1, -24 + swi r5, r1, 0 + swi r6, r1, 4 + swi r7, r1, 8 + swi r8, r1, 12 + swi r9, r1, 16 + swi r10, r1, 20 + + /* setup args */ + addik r5, r1, 0 /* register_args */ + addik r6, r11, 0 /* stack_args */ + addik r7, r12, 0 /* closure object */ + addik r1, r1, -8 /* allocate return value */ + addik r8, r1, 0 /* void* rvalue */ + addik r1, r1, -8 /* allocate for return type/size values */ + addik r9, r1, 0 /* void* rtype */ + addik r10, r1, 4 /* void* rsize */ + + /* call the wrap_call function */ + addik r1, r1, -28 /* allocate args + link reg */ + swi r15, r1, 0 /* store the link register in the frame */ + brald r15, r3 + nop /* branch has delay slot */ + lwi r15, r1, 0 + addik r1, r1, 28 /* restore the link register from the frame */ + +ffi_closure_SYSV_prepare_return: + lwi r9, r1, 0 /* rtype */ + lwi r10, r1, 4 /* rsize */ + addik r1, r1, 8 /* de-allocate return info values */ + + /* Check if return type is actually a struct, store 4 bytes */ + rsubi r11, r9, FFI_TYPE_STRUCT + beqi r11, ffi_closure_SYSV_store32 + + /* Return 8bit */ + rsubi r11, r10, 1 + beqi r11, ffi_closure_SYSV_store8 + + /* Return 16bit */ + rsubi r11, r10, 2 + beqi r11, ffi_closure_SYSV_store16 + + /* Return 32bit */ + rsubi r11, r10, 4 + beqi r11, ffi_closure_SYSV_store32 + + /* Return 64bit */ + rsubi r11, r10, 8 + beqi r11, ffi_closure_SYSV_store64 + + /* Didn't match anything */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store64: + lwi r3, r1, 0 /* store word r3 into return value */ + lwi r4, r1, 4 /* store word r4 into return value */ + /* 64 bits == 2 words, no sign extend occurs */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store32: + lwi r3, r1, 0 /* store word r3 into return value */ + /* 32 bits == 1 word, no sign extend occurs */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store16: +#ifdef __BIG_ENDIAN__ + lhui r3, r1, 2 /* store half-word r3 into return value */ +#else + lhui r3, r1, 0 /* store half-word r3 into return value */ +#endif + rsubi r11, r9, FFI_TYPE_SINT16 + bnei r11, ffi_closure_SYSV_end + sext16 r3, r3 /* fix sign extend of sint8 */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_store8: +#ifdef __BIG_ENDIAN__ + lbui r3, r1, 3 /* store byte r3 into return value */ +#else + lbui r3, r1, 0 /* store byte r3 into return value */ +#endif + rsubi r11, r9, FFI_TYPE_SINT8 + bnei r11, ffi_closure_SYSV_end + sext8 r3, r3 /* fix sign extend of sint8 */ + bri ffi_closure_SYSV_end + +ffi_closure_SYSV_end: + addik r1, r1, 8 /* de-allocate return value */ + + /* de-allocate stored args */ + addik r1, r1, 24 + + /* callee restores */ + lwi r19, r1, 0 /* frame pointer */ + lwi r20, r1, 4 /* PIC register */ + lwi r21, r1, 8 /* PIC register */ + addik r1, r1, 12 + + /* return from sub-routine (with delay slot) */ + rtsd r15, 8 + nop + + .size ffi_closure_SYSV, . - ffi_closure_SYSV diff --git a/deps/libffi/src/mips/ffi.c b/deps/libffi/src/mips/ffi.c new file mode 100644 index 00000000000000..5c8c6bc5d4473d --- /dev/null +++ b/deps/libffi/src/mips/ffi.c @@ -0,0 +1,1317 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011 Anthony Green + Copyright (c) 2008 David Daney + Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. + + MIPS Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include + +#ifdef __GNUC__ +# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) +# define USE__BUILTIN___CLEAR_CACHE 1 +# endif +#endif + +#ifndef USE__BUILTIN___CLEAR_CACHE +# if defined(__FreeBSD__) +# include +# elif defined(__OpenBSD__) +# include +# else +# include +# endif +#endif + +#ifdef FFI_DEBUG +# define FFI_MIPS_STOP_HERE() ffi_stop_here() +#else +# define FFI_MIPS_STOP_HERE() do {} while(0) +#endif + +#ifdef FFI_MIPS_N32 +#define FIX_ARGP \ +FFI_ASSERT(argp <= &stack[bytes]); \ +if (argp == &stack[bytes]) \ +{ \ + argp = stack; \ + FFI_MIPS_STOP_HERE(); \ +} +#else +#define FIX_ARGP +#endif + + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +static void ffi_prep_args(char *stack, + extended_cif *ecif, + int bytes, + int flags) +{ + int i; + void **p_argv; + char *argp, *argp_f; + ffi_type **p_arg; + + memset(stack, 0, bytes); + +#ifdef FFI_MIPS_N32 + int soft_float = (ecif->cif->abi == FFI_N32_SOFT_FLOAT + || ecif->cif->abi == FFI_N64_SOFT_FLOAT); + /* If more than 8 double words are used, the remainder go + on the stack. We reorder stuff on the stack here to + support this easily. */ + /* if ret is _Complex long double, args reg shift2, and a0 should holds pointer to rvalue */ + if (ecif->cif->rtype->type == FFI_TYPE_COMPLEX && ecif->cif->rtype->elements[0]->type == FFI_TYPE_LONGDOUBLE) + { + if (bytes + 16 > 8 * sizeof(ffi_arg)) + argp = &stack[bytes - (8 * sizeof(ffi_arg))]; + else + argp = stack; + * (unsigned long *) argp = (unsigned long) ecif->rvalue; + argp += 16; + } + else + { + if (bytes > 8 * sizeof(ffi_arg)) + argp = &stack[bytes - (8 * sizeof(ffi_arg))]; + else + argp = stack; + } +#else + argp = stack; +#endif + + argp_f = argp; + +#ifdef FFI_MIPS_N32 + if ( ecif->cif->rstruct_flag != 0 ) +#else + if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) +#endif + { + *(ffi_arg *) argp = (ffi_arg) ecif->rvalue; + argp += sizeof(ffi_arg); + FIX_ARGP; + } + + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs; i++, p_arg++) + { + size_t z; + unsigned int a; + + /* Align if necessary. */ + a = (*p_arg)->alignment; + if (a < sizeof(ffi_arg)) + a = sizeof(ffi_arg); + + if ((a - 1) & (unsigned long) argp) + { + argp = (char *) FFI_ALIGN(argp, a); + FIX_ARGP; + } + + z = (*p_arg)->size; + if (z <= sizeof(ffi_arg)) + { + int type = (*p_arg)->type; + z = sizeof(ffi_arg); + + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (ecif->cif->abi == FFI_N64 + || ecif->cif->abi == FFI_N64_SOFT_FLOAT) + ? FFI_TYPE_SINT64 : FFI_TYPE_UINT32; + + if (i < 8 && (ecif->cif->abi == FFI_N32_SOFT_FLOAT + || ecif->cif->abi == FFI_N64_SOFT_FLOAT)) + { + switch (type) + { + case FFI_TYPE_FLOAT: + type = FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + type = FFI_TYPE_UINT64; + break; + default: + break; + } + } + switch (type) + { + case FFI_TYPE_SINT8: + *(ffi_arg *)argp = *(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(ffi_arg *)argp = *(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(ffi_arg *)argp = *(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(ffi_arg *)argp = *(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_SINT32: + *(ffi_arg *)argp = *(SINT32 *)(* p_argv); + break; + + case FFI_TYPE_UINT32: +#ifdef FFI_MIPS_N32 + /* The N32 ABI requires that 32-bit integers + be sign-extended to 64-bits, regardless of + whether they are signed or unsigned. */ + *(ffi_arg *)argp = *(SINT32 *)(* p_argv); +#else + *(ffi_arg *)argp = *(UINT32 *)(* p_argv); +#endif + break; + +#ifdef FFI_MIPS_N32 + case FFI_TYPE_COMPLEX: + /* expand from 4+4 to 8+8 if pass with fpr reg */ + /* argp will wind back to stack when we process all of reg args */ + /* all var_args passed with gpr, should be expand */ + if(!soft_float + && (*p_arg)->elements[0]->type == FFI_TYPE_FLOAT + && argp>=argp_f + && i < ecif->cif->mips_nfixedargs) + { + *(float *) argp = *(float *)(* p_argv); + argp += z; + char *tmp = (void *) (*p_argv); + *(float *) argp = *(float *)(tmp+4); + } + else + memcpy(argp, *p_argv, (*p_arg)->size); + break; +#endif + /* This can only happen with 64bit slots. */ + case FFI_TYPE_FLOAT: + *(float *) argp = *(float *)(* p_argv); + break; + + /* Handle structures. */ + default: + memcpy(argp, *p_argv, (*p_arg)->size); + break; + } + } + else + { +#ifdef FFI_MIPS_O32 + memcpy(argp, *p_argv, z); +#else + { + unsigned long end = (unsigned long) argp + z; + unsigned long cap = (unsigned long) stack + bytes; + + /* Check if the data will fit within the register space. + Handle it if it doesn't. */ + + if (end <= cap) + memcpy(argp, *p_argv, z); + else + { + unsigned long portion = cap - (unsigned long)argp; + + memcpy(argp, *p_argv, portion); + argp = stack; + z -= portion; + memcpy(argp, (void*)((unsigned long)(*p_argv) + portion), + z); + } + } +#endif + } + p_argv++; + argp += z; + FIX_ARGP; + } +} + +#ifdef FFI_MIPS_N32 + +/* The n32 spec says that if "a chunk consists solely of a double + float field (but not a double, which is part of a union), it + is passed in a floating point register. Any other chunk is + passed in an integer register". This code traverses structure + definitions and generates the appropriate flags. */ + +static int +calc_n32_struct_flags_element(unsigned *flags, ffi_type *e, + unsigned *loc, unsigned *arg_reg) +{ + /* Align this object. */ + *loc = FFI_ALIGN(*loc, e->alignment); + if (e->type == FFI_TYPE_DOUBLE) + { + /* Already aligned to FFI_SIZEOF_ARG. */ + *arg_reg = *loc / FFI_SIZEOF_ARG; + if (*arg_reg > 7) + return 1; + *flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); + } + *loc += e->size; + return 0; +} + +static unsigned +calc_n32_struct_flags(int soft_float, ffi_type *arg, + unsigned *loc, unsigned *arg_reg) +{ + unsigned flags = 0; + unsigned index = 0; + + ffi_type *e; + + if (soft_float) + return 0; + + while ((e = arg->elements[index])) + { + if (e->type == FFI_TYPE_COMPLEX) + { + if (calc_n32_struct_flags_element(&flags, e->elements[0], loc, arg_reg)) + break; + if (calc_n32_struct_flags_element(&flags, e->elements[0], loc, arg_reg)) + break; + } + else + if (calc_n32_struct_flags_element(&flags, e, loc, arg_reg)) + break; + index++; + } + /* Next Argument register at alignment of FFI_SIZEOF_ARG. */ + *arg_reg = FFI_ALIGN(*loc, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + + return flags; +} + +static unsigned +calc_n32_return_struct_flags(int soft_float, ffi_type *arg) +{ + unsigned flags; + unsigned small = FFI_TYPE_SMALLSTRUCT; + ffi_type *e; + + /* Returning structures under n32 is a tricky thing. + A struct with only one or two floating point fields + is returned in $f0 (and $f2 if necessary). Any other + struct results at most 128 bits are returned in $2 + (the first 64 bits) and $3 (remainder, if necessary). + Larger structs are handled normally. */ + + if (arg->size > 16) + return 0; + + if (arg->size > 8) + small = FFI_TYPE_SMALLSTRUCT2; + + e = arg->elements[0]; + + if (e->type == FFI_TYPE_COMPLEX) + { + int type = e->elements[0]->type; + + if (type != FFI_TYPE_DOUBLE && type != FFI_TYPE_FLOAT) + return small; + + if (arg->elements[1]) + { + /* Two floating point fields with more fields! + This must be passed the old way. */ + return small; + } + + flags = (type << FFI_FLAG_BITS) + type; + } + else + { + if (e->type != FFI_TYPE_DOUBLE && e->type != FFI_TYPE_FLOAT) + return small; + + flags = e->type; + + if (arg->elements[1]) + { + e = arg->elements[1]; + if (e->type != FFI_TYPE_DOUBLE && e->type != FFI_TYPE_FLOAT) + return small; + + if (arg->elements[2]) + { + /* There are three arguments and the first two are + floats! This must be passed the old way. */ + return small; + } + + flags += e->type << FFI_FLAG_BITS; + } + } + + if (soft_float) + flags += FFI_TYPE_STRUCT_SOFT; + return flags; +} + +#endif + +/* Perform machine dependent cif processing */ +static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) +{ + cif->flags = 0; + cif->mips_nfixedargs = nfixedargs; + +#ifdef FFI_MIPS_O32 + /* Set the flags necessary for O32 processing. FFI_O32_SOFT_FLOAT + * does not have special handling for floating point args. + */ + + if (cif->rtype->type != FFI_TYPE_STRUCT && cif->rtype->type != FFI_TYPE_COMPLEX && cif->abi == FFI_O32) + { + if (cif->nargs > 0 && cif->nargs == nfixedargs) + { + switch ((cif->arg_types)[0]->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += (cif->arg_types)[0]->type; + break; + + default: + break; + } + + if (cif->nargs > 1) + { + /* Only handle the second argument if the first + is a float or double. */ + if (cif->flags) + { + switch ((cif->arg_types)[1]->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags += (cif->arg_types)[1]->type << FFI_FLAG_BITS; + break; + + default: + break; + } + } + } + } + } + + /* Set the return type flag */ + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); + break; + + case FFI_TYPE_FLOAT: + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); + break; + } + } + else + { + /* FFI_O32 */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_COMPLEX: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); + if (cif->rtype->type == FFI_TYPE_COMPLEX) + cif->flags += ((*cif->rtype->elements[0]).type) << (FFI_FLAG_BITS * 4); + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 2); + break; + + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 2); + break; + } + } +#endif + +#ifdef FFI_MIPS_N32 + /* Set the flags necessary for N32 processing */ + { + unsigned arg_reg = 0; + unsigned loc = 0; + unsigned count = (cif->nargs < 8) ? cif->nargs : 8; + unsigned index = 0; + + unsigned struct_flags = 0; + int soft_float = (cif->abi == FFI_N32_SOFT_FLOAT + || cif->abi == FFI_N64_SOFT_FLOAT); + + if (cif->rtype->type == FFI_TYPE_STRUCT) + { + struct_flags = calc_n32_return_struct_flags(soft_float, cif->rtype); + + if (struct_flags == 0) + { + /* This means that the structure is being passed as + a hidden argument */ + + arg_reg = 1; + count = (cif->nargs < 7) ? cif->nargs : 7; + + cif->rstruct_flag = !0; + } + else + cif->rstruct_flag = 0; + } + else + cif->rstruct_flag = 0; + + while (count-- > 0 && arg_reg < 8) + { + ffi_type *t = cif->arg_types[index]; + + switch (t->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + if (!soft_float && index < nfixedargs) + cif->flags += t->type << (arg_reg * FFI_FLAG_BITS); + arg_reg++; + break; + case FFI_TYPE_LONGDOUBLE: + /* Align it. */ + arg_reg = FFI_ALIGN(arg_reg, 2); + /* Treat it as two adjacent doubles. */ + if (soft_float || index >= nfixedargs) + { + arg_reg += 2; + } + else + { + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + if (arg_reg >= 8) + continue; + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + } + break; + + case FFI_TYPE_COMPLEX: + switch (t->elements[0]->type) + { + case FFI_TYPE_LONGDOUBLE: + arg_reg = FFI_ALIGN(arg_reg, 2); + if (soft_float || index >= nfixedargs) + { + arg_reg += 2; + } + else + { + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + if (arg_reg >= 8) + continue; + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + if (arg_reg >= 8) + continue; + } + /* passthrough */ + case FFI_TYPE_FLOAT: + // one fpr can only holds one arg even it is single + cif->bytes += 16; + /* passthrough */ + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_DOUBLE: + if (soft_float || index >= nfixedargs) + { + arg_reg += 2; + } + else + { + uint32_t type = t->elements[0]->type != FFI_TYPE_LONGDOUBLE? t->elements[0]->type: FFI_TYPE_DOUBLE; + cif->flags += + (type << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + if (arg_reg >= 8) + continue; + cif->flags += + (type << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + } + break; + default: + arg_reg += 2; + break; + } + break; + + case FFI_TYPE_STRUCT: + loc = arg_reg * FFI_SIZEOF_ARG; + cif->flags += calc_n32_struct_flags(soft_float || index >= nfixedargs, + t, &loc, &arg_reg); + break; + + default: + arg_reg++; + break; + } + + index++; + } + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + { + if (struct_flags == 0) + { + /* The structure is returned through a hidden + first argument. Do nothing, 'cause FFI_TYPE_VOID + is 0 */ + } + else + { + /* The structure is returned via some tricky + mechanism */ + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += struct_flags << (4 + (FFI_FLAG_BITS * 8)); + } + break; + } + + case FFI_TYPE_VOID: + /* Do nothing, 'cause FFI_TYPE_VOID is 0 */ + break; + + case FFI_TYPE_POINTER: + if (cif->abi == FFI_N32_SOFT_FLOAT || cif->abi == FFI_N32) + cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); + else + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 8); + break; + + case FFI_TYPE_FLOAT: + if (soft_float) + { + cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); + break; + } + /* else fall through */ + case FFI_TYPE_DOUBLE: + if (soft_float) + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 8); + else + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8); + break; + + case FFI_TYPE_LONGDOUBLE: + /* Long double is returned as if it were a struct containing + two doubles. */ + if (soft_float) + { + /* if ret is long double, the ret is given by v0 and a0, no idea why + * Let's us VOID | VOID | LONGDOUBLE for it*/ + cif->flags += FFI_TYPE_LONGDOUBLE << (FFI_FLAG_BITS * 8); + } + else + { + cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); + cif->flags += (FFI_TYPE_DOUBLE + + (FFI_TYPE_DOUBLE << FFI_FLAG_BITS)) + << (4 + (FFI_FLAG_BITS * 8)); + } + break; + case FFI_TYPE_COMPLEX: + { + int type = cif->rtype->elements[0]->type; + + cif->flags += (FFI_TYPE_COMPLEX << (FFI_FLAG_BITS * 8)); + if (soft_float || (type != FFI_TYPE_FLOAT && type != FFI_TYPE_DOUBLE && type != FFI_TYPE_LONGDOUBLE)) + { + switch (type) + { + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_INT: + type = FFI_TYPE_SMALLSTRUCT2; + break; + case FFI_TYPE_LONGDOUBLE: + type = FFI_TYPE_LONGDOUBLE; + break; + case FFI_TYPE_FLOAT: + default: + type = FFI_TYPE_SMALLSTRUCT; + } + cif->flags += type << (4 + (FFI_FLAG_BITS * 8)); + } + else + { + //cif->flags += (type + (type << FFI_FLAG_BITS)) + // << (4 + (FFI_FLAG_BITS * 8)); + cif->flags += type << (4 + (FFI_FLAG_BITS * 8)); + } + break; + } + case FFI_TYPE_UINT32: + /* In the N32 or N64 ABI unsigned 32-bit integer should be + *sign*-extended. */ + cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); + break; + case FFI_TYPE_SINT64: + cif->flags += FFI_TYPE_UINT64 << (FFI_FLAG_BITS * 8); + break; + default: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8); + break; + } + } +#endif + return FFI_OK; +} + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + return ffi_prep_cif_machdep_int(cif, cif->nargs); +} + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned nfixedargs, + unsigned ntotalargs MAYBE_UNUSED) +{ + return ffi_prep_cif_machdep_int(cif, nfixedargs); +} + +/* Low level routine for calling O32 functions */ +extern int ffi_call_O32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, + unsigned, unsigned *, void (*)(void), void *closure); + +/* Low level routine for calling N32 functions */ +extern int ffi_call_N32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, + unsigned, void *, void (*)(void), void *closure); + +void ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT || cif->rtype->type == FFI_TYPE_COMPLEX)) + ecif.rvalue = alloca(cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { +#ifdef FFI_MIPS_O32 + case FFI_O32: + case FFI_O32_SOFT_FLOAT: + ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn, closure); + break; +#endif + +#ifdef FFI_MIPS_N32 + case FFI_N32: + case FFI_N32_SOFT_FLOAT: + case FFI_N64: + case FFI_N64_SOFT_FLOAT: + { + int copy_rvalue = 0; + int copy_offset = 0; + char *rvalue_copy = ecif.rvalue; + if (cif->rtype->type == FFI_TYPE_STRUCT && cif->rtype->size < 16) + { + /* For structures smaller than 16 bytes we clobber memory + in 8 byte increments. Make a copy so we don't clobber + the callers memory outside of the struct bounds. */ + rvalue_copy = alloca(16); + copy_rvalue = 1; + } + else if (cif->rtype->type == FFI_TYPE_FLOAT + && (cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT)) + { + rvalue_copy = alloca (8); + copy_rvalue = 1; +#if defined(__MIPSEB__) || defined(_MIPSEB) + copy_offset = 4; +#endif + } + ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, rvalue_copy, fn, closure); + if (copy_rvalue) + memcpy(ecif.rvalue, rvalue_copy + copy_offset, cif->rtype->size); + } + break; +#endif + + default: + FFI_ASSERT(0); + break; + } +} + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + + +#if FFI_CLOSURES +#if defined(FFI_MIPS_O32) +extern void ffi_closure_O32(void); +extern void ffi_go_closure_O32(void); +#else +extern void ffi_closure_N32(void); +extern void ffi_go_closure_N32(void); +#endif /* FFI_MIPS_O32 */ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + void * fn; + char *clear_location = (char *) codeloc; + +#if defined(FFI_MIPS_O32) + if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) + return FFI_BAD_ABI; + fn = ffi_closure_O32; +#else +#if _MIPS_SIM ==_ABIN32 + if (cif->abi != FFI_N32 + && cif->abi != FFI_N32_SOFT_FLOAT) + return FFI_BAD_ABI; +#else + if (cif->abi != FFI_N64 + && cif->abi != FFI_N64_SOFT_FLOAT) + return FFI_BAD_ABI; +#endif + fn = ffi_closure_N32; +#endif /* FFI_MIPS_O32 */ + +#if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned)fn >> 16); + /* ori $25,low(fn) */ + tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff); + /* lui $12,high(codeloc) */ + tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); + /* jr $25 */ +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[3] = 0x03200008; +#else + tramp[3] = 0x03200009; +#endif + /* ori $12,low(codeloc) */ + tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); +#else + /* N64 has a somewhat larger trampoline. */ + /* lui $25,high(fn) */ + tramp[0] = 0x3c190000 | ((unsigned long)fn >> 48); + /* lui $12,high(codeloc) */ + tramp[1] = 0x3c0c0000 | ((unsigned long)codeloc >> 48); + /* ori $25,mid-high(fn) */ + tramp[2] = 0x37390000 | (((unsigned long)fn >> 32 ) & 0xffff); + /* ori $12,mid-high(codeloc) */ + tramp[3] = 0x358c0000 | (((unsigned long)codeloc >> 32) & 0xffff); + /* dsll $25,$25,16 */ + tramp[4] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[5] = 0x000c6438; + /* ori $25,mid-low(fn) */ + tramp[6] = 0x37390000 | (((unsigned long)fn >> 16 ) & 0xffff); + /* ori $12,mid-low(codeloc) */ + tramp[7] = 0x358c0000 | (((unsigned long)codeloc >> 16) & 0xffff); + /* dsll $25,$25,16 */ + tramp[8] = 0x0019cc38; + /* dsll $12,$12,16 */ + tramp[9] = 0x000c6438; + /* ori $25,low(fn) */ + tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); + /* jr $25 */ +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[11] = 0x03200008; +#else + tramp[11] = 0x03200009; +#endif + /* ori $12,low(codeloc) */ + tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); + +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + +#if !defined(__FreeBSD__) +#ifdef USE__BUILTIN___CLEAR_CACHE + __builtin___clear_cache(clear_location, clear_location + FFI_TRAMPOLINE_SIZE); +#else + cacheflush (clear_location, FFI_TRAMPOLINE_SIZE, ICACHE); +#endif +#endif /* ! __FreeBSD__ */ + return FFI_OK; +} + +/* + * Decodes the arguments to a function, which will be stored on the + * stack. AR is the pointer to the beginning of the integer arguments + * (and, depending upon the arguments, some floating-point arguments + * as well). FPR is a pointer to the area where floating point + * registers have been saved, if any. + * + * RVALUE is the location where the function return value will be + * stored. CLOSURE is the prepared closure to invoke. + * + * This function should only be called from assembly, which is in + * turn called from a trampoline. + * + * Returns the function return type. + * + * Based on the similar routine for sparc. + */ +int +ffi_closure_mips_inner_O32 (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, ffi_arg *ar, + double *fpr) +{ + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn, seen_int; + + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + + seen_int = (cif->abi == FFI_O32_SOFT_FLOAT) || (cif->mips_nfixedargs != cif->nargs); + argn = 0; + + if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_STRUCT) + { + rvalue = (void *)(uintptr_t)ar[0]; + argn = 1; + seen_int = 1; + } + if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_COMPLEX) + { + rvalue = fpr; + argn = 1; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + while (i < avn) + { + if (arg_types[i]->alignment == 8 && (argn & 0x1)) + argn++; + if (i < 2 && !seen_int && + (arg_types[i]->type == FFI_TYPE_FLOAT || + arg_types[i]->type == FFI_TYPE_DOUBLE || + arg_types[i]->type == FFI_TYPE_LONGDOUBLE)) + { +#if defined(__MIPSEB__) || defined(_MIPSEB) + if (arg_types[i]->type == FFI_TYPE_FLOAT) + avaluep[i] = ((char *) &fpr[i]) + sizeof (float); + else +#endif + avaluep[i] = (char *) &fpr[i]; + } + else + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + avaluep[i] = &avalue[i]; + *(SINT8 *) &avalue[i] = (SINT8) ar[argn]; + break; + + case FFI_TYPE_UINT8: + avaluep[i] = &avalue[i]; + *(UINT8 *) &avalue[i] = (UINT8) ar[argn]; + break; + + case FFI_TYPE_SINT16: + avaluep[i] = &avalue[i]; + *(SINT16 *) &avalue[i] = (SINT16) ar[argn]; + break; + + case FFI_TYPE_UINT16: + avaluep[i] = &avalue[i]; + *(UINT16 *) &avalue[i] = (UINT16) ar[argn]; + break; + + default: + avaluep[i] = (char *) &ar[argn]; + break; + } + seen_int = 1; + } + argn += FFI_ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + i++; + } + + /* Invoke the closure. */ + fun(cif, rvalue, avaluep, user_data); + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { + switch (cif->rtype->type) + { + case FFI_TYPE_FLOAT: + return FFI_TYPE_INT; + case FFI_TYPE_DOUBLE: + return FFI_TYPE_UINT64; + default: + return cif->rtype->type; + } + } + else + { + if (cif->rtype->type == FFI_TYPE_COMPLEX) { + __asm__ volatile ("move $v1, %0" : : "r"(cif->rtype->size)); + } + return cif->rtype->type; + } +} + +#if defined(FFI_MIPS_N32) + +static void +copy_struct_N32(char *target, unsigned offset, ffi_abi abi, ffi_type *type, + int argn, unsigned arg_offset, ffi_arg *ar, + ffi_arg *fpr, int soft_float) +{ + ffi_type **elt_typep = type->elements; + while(*elt_typep) + { + ffi_type *elt_type = *elt_typep; + unsigned o; + char *tp; + char *argp; + char *fpp; + + o = FFI_ALIGN(offset, elt_type->alignment); + arg_offset += o - offset; + offset = o; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + + argp = (char *)(ar + argn); + fpp = (char *)(argn >= 8 ? ar + argn : fpr + argn); + + tp = target + offset; + + if (elt_type->type == FFI_TYPE_DOUBLE && !soft_float) + *(double *)tp = *(double *)fpp; + else + memcpy(tp, argp + arg_offset, elt_type->size); + + offset += elt_type->size; + arg_offset += elt_type->size; + elt_typep++; + argn += arg_offset / sizeof(ffi_arg); + arg_offset = arg_offset % sizeof(ffi_arg); + } +} + +/* + * Decodes the arguments to a function, which will be stored on the + * stack. AR is the pointer to the beginning of the integer + * arguments. FPR is a pointer to the area where floating point + * registers have been saved. + * + * RVALUE is the location where the function return value will be + * stored. CLOSURE is the prepared closure to invoke. + * + * This function should only be called from assembly, which is in + * turn called from a trampoline. + * + * Returns the function return flags. + * + */ +int +ffi_closure_mips_inner_N32 (ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, ffi_arg *ar, + ffi_arg *fpr) +{ + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn; + int soft_float; + ffi_arg *argp; + + soft_float = cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + + argn = 0; + + if (cif->rstruct_flag) + { +#if _MIPS_SIM==_ABIN32 + rvalue = (void *)(UINT32)ar[0]; +#else /* N64 */ + rvalue = (void *)ar[0]; +#endif + argn = 1; + } + if (cif->rtype->type == FFI_TYPE_COMPLEX && cif->rtype->elements[0]->type == FFI_TYPE_LONGDOUBLE) + argn = 2; + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + while (i < avn) + { + if (arg_types[i]->type == FFI_TYPE_FLOAT + || arg_types[i]->type == FFI_TYPE_DOUBLE + || arg_types[i]->type == FFI_TYPE_LONGDOUBLE) + { + argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; + if ((arg_types[i]->type == FFI_TYPE_LONGDOUBLE) && ((uintptr_t)argp & (arg_types[i]->alignment-1))) + { + argp=(ffi_arg*)FFI_ALIGN(argp,arg_types[i]->alignment); + argn++; + } +#if defined(__MIPSEB__) || defined(_MIPSEB) + if (arg_types[i]->type == FFI_TYPE_FLOAT && argn < 8) + avaluep[i] = ((char *) argp) + sizeof (float); + else +#endif + avaluep[i] = (char *) argp; + } + else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) + { + argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; + avaluep[i] = (char *) argp; + } + else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_LONGDOUBLE) + { + /* align long double */ + argn += ((argn & 0x1)? 1 : 0); + argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; + avaluep[i] = (char *) argp; + } + else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT) + { + if (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) + argp = ar + argn; + else + { + argp = fpr + argn; + /* the normal args for function holds 8bytes, while here we convert it to ptr */ + uint32_t *tmp = (uint32_t *)argp; + tmp[1] = tmp[2]; + } + avaluep[i] = (char *) argp; + } + else + { + unsigned type = arg_types[i]->type; + + if (arg_types[i]->alignment > sizeof(ffi_arg)) + argn = FFI_ALIGN(argn, arg_types[i]->alignment / sizeof(ffi_arg)); + + argp = ar + argn; + + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (cif->abi == FFI_N64 || cif->abi == FFI_N64_SOFT_FLOAT) + ? FFI_TYPE_SINT64 : FFI_TYPE_UINT32; + + if (soft_float && type == FFI_TYPE_FLOAT) + type = FFI_TYPE_SINT32; + + switch (type) + { + case FFI_TYPE_SINT8: + avaluep[i] = &avalue[i]; + *(SINT8 *) &avalue[i] = (SINT8) *argp; + break; + + case FFI_TYPE_UINT8: + avaluep[i] = &avalue[i]; + *(UINT8 *) &avalue[i] = (UINT8) *argp; + break; + + case FFI_TYPE_SINT16: + avaluep[i] = &avalue[i]; + *(SINT16 *) &avalue[i] = (SINT16) *argp; + break; + + case FFI_TYPE_UINT16: + avaluep[i] = &avalue[i]; + *(UINT16 *) &avalue[i] = (UINT16) *argp; + break; + + case FFI_TYPE_SINT32: + avaluep[i] = &avalue[i]; + *(SINT32 *) &avalue[i] = (SINT32) *argp; + break; + + case FFI_TYPE_UINT32: + avaluep[i] = &avalue[i]; + *(UINT32 *) &avalue[i] = (UINT32) *argp; + break; + + case FFI_TYPE_STRUCT: + if (argn < 8) + { + /* Allocate space for the struct as at least part of + it was passed in registers. */ + avaluep[i] = alloca(arg_types[i]->size); + copy_struct_N32(avaluep[i], 0, cif->abi, arg_types[i], + argn, 0, ar, fpr, i >= cif->mips_nfixedargs || soft_float); + + break; + } + /* Else fall through. */ + default: + avaluep[i] = (char *) argp; + break; + } + } + argn += FFI_ALIGN(arg_types[i]->size, sizeof(ffi_arg)) / sizeof(ffi_arg); + i++; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avaluep, user_data); + + return cif->flags >> (FFI_FLAG_BITS * 8); +} + +#endif /* FFI_MIPS_N32 */ + +#if defined(FFI_MIPS_O32) +extern void ffi_closure_O32(void); +extern void ffi_go_closure_O32(void); +#else +extern void ffi_closure_N32(void); +extern void ffi_go_closure_N32(void); +#endif /* FFI_MIPS_O32 */ + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void * fn; + +#if defined(FFI_MIPS_O32) + if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) + return FFI_BAD_ABI; + fn = ffi_go_closure_O32; +#else +#if _MIPS_SIM ==_ABIN32 + if (cif->abi != FFI_N32 + && cif->abi != FFI_N32_SOFT_FLOAT) + return FFI_BAD_ABI; +#else + if (cif->abi != FFI_N64 + && cif->abi != FFI_N64_SOFT_FLOAT) + return FFI_BAD_ABI; +#endif + fn = ffi_go_closure_N32; +#endif /* FFI_MIPS_O32 */ + + closure->tramp = (void *)fn; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#endif /* FFI_CLOSURES */ diff --git a/deps/libffi/src/mips/ffitarget.h b/deps/libffi/src/mips/ffitarget.h new file mode 100644 index 00000000000000..cc7250cc1c051b --- /dev/null +++ b/deps/libffi/src/mips/ffitarget.h @@ -0,0 +1,249 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for MIPS. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifdef __rtems__ +/* + * Subprogram calling convention - copied from sgidefs.h + */ +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 +#elif !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__linux__) +# include +#endif + +# ifndef _ABIN32 +# define _ABIN32 _MIPS_SIM_NABI32 +# endif +# ifndef _ABI64 +# define _ABI64 _MIPS_SIM_ABI64 +# endif +# ifndef _ABIO32 +# define _ABIO32 _MIPS_SIM_ABI32 +# endif + +#if !defined(_MIPS_SIM) +# error -- something is very wrong -- +#else +# if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) +# define FFI_MIPS_N32 +# else +# if (_MIPS_SIM==_ABIO32 && defined(_ABIO32)) +# define FFI_MIPS_O32 +# else +# error -- this is an unsupported platform -- +# endif +# endif +#endif + +#ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +# define FFI_SIZEOF_ARG 4 +#else +/* N32 and N64 frames have 64bit integer args */ +# define FFI_SIZEOF_ARG 8 +# if _MIPS_SIM == _ABIN32 +# define FFI_SIZEOF_JAVA_RAW 4 +# endif +#endif + +#define FFI_TARGET_HAS_COMPLEX_TYPE 1 +#define FFI_FLAG_BITS 2 + +/* SGI's strange assembler requires that we multiply by 4 rather + than shift left by FFI_FLAG_BITS */ + +#define FFI_ARGS_D FFI_TYPE_DOUBLE +#define FFI_ARGS_F FFI_TYPE_FLOAT +#define FFI_ARGS_DD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_DOUBLE +#define FFI_ARGS_FF FFI_TYPE_FLOAT * 4 + FFI_TYPE_FLOAT +#define FFI_ARGS_FD FFI_TYPE_DOUBLE * 4 + FFI_TYPE_FLOAT +#define FFI_ARGS_DF FFI_TYPE_FLOAT * 4 + FFI_TYPE_DOUBLE + +/* Needed for N32 structure returns */ +#define FFI_TYPE_SMALLSTRUCT FFI_TYPE_UINT8 +#define FFI_TYPE_SMALLSTRUCT2 FFI_TYPE_SINT8 + +#if 0 +/* The SGI assembler can't handle this.. */ +#define FFI_TYPE_STRUCT_DD (( FFI_ARGS_DD ) << 4) + FFI_TYPE_STRUCT +/* (and so on) */ +#else +/* ...so we calculate these by hand! */ +#define FFI_TYPE_STRUCT_D 61 +#define FFI_TYPE_STRUCT_F 45 +#define FFI_TYPE_STRUCT_DD 253 +#define FFI_TYPE_STRUCT_FF 173 +#define FFI_TYPE_STRUCT_FD 237 +#define FFI_TYPE_STRUCT_DF 189 +#define FFI_TYPE_STRUCT_SMALL 93 +#define FFI_TYPE_STRUCT_SMALL2 109 + +#define FFI_TYPE_COMPLEX_SMALL 95 +#define FFI_TYPE_COMPLEX_SMALL2 111 +#define FFI_TYPE_COMPLEX_FF 47 +#define FFI_TYPE_COMPLEX_DD 63 +#define FFI_TYPE_COMPLEX_LDLD 79 + +/* and for n32 soft float, add 16 * 2^4 */ +#define FFI_TYPE_STRUCT_D_SOFT 317 +#define FFI_TYPE_STRUCT_F_SOFT 301 +#define FFI_TYPE_STRUCT_DD_SOFT 509 +#define FFI_TYPE_STRUCT_FF_SOFT 429 +#define FFI_TYPE_STRUCT_FD_SOFT 493 +#define FFI_TYPE_STRUCT_DF_SOFT 445 +#define FFI_TYPE_STRUCT_SOFT 16 +#endif + +#ifdef LIBFFI_ASM +#define v0 $2 +#define v1 $3 +#define a0 $4 +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 +#define a5 $9 +#define a6 $10 +#define a7 $11 +#define t0 $8 +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define t5 $13 +#define t6 $14 +#define t7 $15 +#define t8 $24 +#define t9 $25 +#define ra $31 + +#ifdef FFI_MIPS_O32 +# define REG_L lw +# define REG_S sw +# define SUBU subu +# define ADDU addu +# define SRL srl +# define LI li +#else /* !FFI_MIPS_O32 */ +# define REG_L ld +# define REG_S sd +# define SUBU dsubu +# define ADDU daddu +# define SRL dsrl +# define LI dli +# if (_MIPS_SIM==_ABI64) +# define LA dla +# define EH_FRAME_ALIGN 3 +# define FDE_ADDR_BYTES .8byte +# else +# define LA la +# define EH_FRAME_ALIGN 2 +# define FDE_ADDR_BYTES .4byte +# endif /* _MIPS_SIM==_ABI64 */ +#endif /* !FFI_MIPS_O32 */ +#else /* !LIBFFI_ASM */ +# ifdef __GNUC__ +# ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +typedef unsigned int ffi_arg __attribute__((__mode__(__SI__))); +typedef signed int ffi_sarg __attribute__((__mode__(__SI__))); +#else +/* N32 and N64 frames have 64bit integer args */ +typedef unsigned int ffi_arg __attribute__((__mode__(__DI__))); +typedef signed int ffi_sarg __attribute__((__mode__(__DI__))); +# endif +# else +# ifdef FFI_MIPS_O32 +/* O32 stack frames have 32bit integer args */ +typedef __uint32_t ffi_arg; +typedef __int32_t ffi_sarg; +# else +/* N32 and N64 frames have 64bit integer args */ +typedef __uint64_t ffi_arg; +typedef __int64_t ffi_sarg; +# endif +# endif /* __GNUC__ */ + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_O32, + FFI_N32, + FFI_N64, + FFI_O32_SOFT_FLOAT, + FFI_N32_SOFT_FLOAT, + FFI_N64_SOFT_FLOAT, + FFI_LAST_ABI, + +#ifdef FFI_MIPS_O32 +#ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_O32_SOFT_FLOAT +#else + FFI_DEFAULT_ABI = FFI_O32 +#endif +#else +# if _MIPS_SIM==_ABI64 +# ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_N64_SOFT_FLOAT +# else + FFI_DEFAULT_ABI = FFI_N64 +# endif +# else +# ifdef __mips_soft_float + FFI_DEFAULT_ABI = FFI_N32_SOFT_FLOAT +# else + FFI_DEFAULT_ABI = FFI_N32 +# endif +# endif +#endif +} ffi_abi; + +#define FFI_EXTRA_CIF_FIELDS unsigned rstruct_flag; unsigned mips_nfixedargs +#define FFI_TARGET_SPECIFIC_VARIADIC +#endif /* !LIBFFI_ASM */ + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32) +# define FFI_TRAMPOLINE_SIZE 20 +#else +# define FFI_TRAMPOLINE_SIZE 56 +#endif + +#endif + diff --git a/deps/libffi/src/mips/n32.S b/deps/libffi/src/mips/n32.S new file mode 100644 index 00000000000000..08cbb956667e36 --- /dev/null +++ b/deps/libffi/src/mips/n32.S @@ -0,0 +1,827 @@ +/* ----------------------------------------------------------------------- + n32.S - Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc. + + MIPS Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Only build this code if we are compiling for n32 */ + +#if defined(FFI_MIPS_N32) + +#define callback a0 +#define bytes a2 +#define flags a3 +#define raddr a4 +#define fn a5 +#define closure a6 + +/* Note: to keep stack 16 byte aligned we need even number slots + used 9 slots here +*/ +#define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG ) + +#ifdef __GNUC__ + .abicalls +#endif +#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + .set mips4 +#endif + .text + .align 2 + .globl ffi_call_N32 + .ent ffi_call_N32 +ffi_call_N32: +.LFB0: + .frame $fp, SIZEOF_FRAME, ra + .mask 0xc0000000,-FFI_SIZEOF_ARG + .fmask 0x00000000,0 + + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +.LCFI00: + REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer + REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address +.LCFI01: + move $fp, $sp +.LCFI02: + move t9, callback # callback function pointer + REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes + REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags + REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr + REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn + REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure + + # Allocate at least 4 words in the argstack + move v0, bytes + bge bytes, 4 * FFI_SIZEOF_ARG, bigger + LI v0, 4 * FFI_SIZEOF_ARG + b sixteen + + bigger: + ADDU t4, v0, 2 * FFI_SIZEOF_ARG -1 # make sure it is aligned + and v0, t4, -2 * FFI_SIZEOF_ARG # to a proper boundry. + +sixteen: + SUBU $sp, $sp, v0 # move the stack pointer to reflect the + # arg space + + move a0, $sp # 4 * FFI_SIZEOF_ARG + ADDU a3, $fp, 3 * FFI_SIZEOF_ARG + + # Call ffi_prep_args + jal t9 + + # Copy the stack pointer to t9 + move t9, $sp + + # Fix the stack if there are more than 8 64bit slots worth + # of arguments. + + # Load the number of bytes + REG_L t6, 2*FFI_SIZEOF_ARG($fp) + + # Is it bigger than 8 * FFI_SIZEOF_ARG? + daddiu t8, t6, -(8 * FFI_SIZEOF_ARG) + bltz t8, loadregs + + ADDU t9, t9, t8 + +loadregs: + + REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. + + # when retval is _Complex long double, $f12/$a0, $f13/$a1 will be skipped + # no idea why, but gcc does it. + SRL t4, t6, 8*FFI_FLAG_BITS + move t8, t6 + bne t4, FFI_TYPE_COMPLEX_LDLD, loadregs1 + + SLL t8, t6, 2*FFI_FLAG_BITS + + +loadregs1: +#ifdef __mips_soft_float + REG_L a0, 0*FFI_SIZEOF_ARG(t9) + REG_L a1, 1*FFI_SIZEOF_ARG(t9) + REG_L a2, 2*FFI_SIZEOF_ARG(t9) + REG_L a3, 3*FFI_SIZEOF_ARG(t9) + REG_L a4, 4*FFI_SIZEOF_ARG(t9) + REG_L a5, 5*FFI_SIZEOF_ARG(t9) + REG_L a6, 6*FFI_SIZEOF_ARG(t9) + REG_L a7, 7*FFI_SIZEOF_ARG(t9) +#else + and t4, t8, ((1< +#include + +/* Only build this code if we are compiling for o32 */ + +#if defined(FFI_MIPS_O32) + +#define callback a0 +#define bytes a2 +#define flags a3 + +#define SIZEOF_FRAME (4 * FFI_SIZEOF_ARG + 2 * FFI_SIZEOF_ARG) +#define A3_OFF (SIZEOF_FRAME + 3 * FFI_SIZEOF_ARG) +#define FP_OFF (SIZEOF_FRAME - 2 * FFI_SIZEOF_ARG) +#define RA_OFF (SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG) + + .abicalls + .text + .align 2 + .globl ffi_call_O32 + .ent ffi_call_O32 +ffi_call_O32: +$LFB0: + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +$LCFI00: + REG_S $fp, FP_OFF($sp) # Save frame pointer +$LCFI01: + REG_S ra, RA_OFF($sp) # Save return address +$LCFI02: + move $fp, $sp + +$LCFI03: + move t9, callback # callback function pointer + REG_S flags, A3_OFF($fp) # flags + + # Allocate at least 4 words in the argstack + LI v0, 4 * FFI_SIZEOF_ARG + blt bytes, v0, sixteen + + ADDU v0, bytes, 7 # make sure it is aligned + and v0, -8 # to an 8 byte boundry + +sixteen: + SUBU $sp, v0 # move the stack pointer to reflect the + # arg space + + ADDU a0, $sp, 4 * FFI_SIZEOF_ARG + + jalr t9 + + REG_L t0, A3_OFF($fp) # load the flags word + SRL t2, t0, 4 # shift our arg info + and t0, ((1<<4)-1) # mask out the return type + + ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args + +#ifndef __mips_soft_float + bnez t0, pass_d # make it quick for int +#endif + REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the + REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs. + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +#ifndef __mips_soft_float +pass_d: + bne t0, FFI_ARGS_D, pass_f + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + REG_L a2, 2*FFI_SIZEOF_ARG($sp) # passing a double + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_f: + bne t0, FFI_ARGS_F, pass_d_d + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + REG_L a1, 1*FFI_SIZEOF_ARG($sp) # passing a float + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_d_d: + bne t0, FFI_ARGS_DD, pass_f_f + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing two doubles + b call_it + +pass_f_f: + bne t0, FFI_ARGS_FF, pass_d_f + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.s $f14, 1*FFI_SIZEOF_ARG($sp) # passing two floats + REG_L a2, 2*FFI_SIZEOF_ARG($sp) + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_d_f: + bne t0, FFI_ARGS_DF, pass_f_d + l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.s $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float + REG_L a3, 3*FFI_SIZEOF_ARG($sp) + b call_it + +pass_f_d: + # assume that the only other combination must be float then double + # bne t0, FFI_ARGS_F_D, call_it + l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float + +#endif + +call_it: + # Load the static chain pointer + REG_L t7, SIZEOF_FRAME + 6*FFI_SIZEOF_ARG($fp) + + # Load the function pointer + REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp) + + # If the return value pointer is NULL, assume no return value. + REG_L t1, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + beqz t1, noretval + + and t1, t2, ((1<<4)-1) + bne t1, FFI_TYPE_INT, retlonglong + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + REG_S v0, 0(t0) + b epilogue + +retlonglong: + # Really any 64-bit int, signed or not. + bne t1, FFI_TYPE_UINT64, retfloat + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + REG_S v1, 4(t0) + REG_S v0, 0(t0) + b epilogue + +retfloat: + bne t1, FFI_TYPE_FLOAT, retdouble + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) +#ifndef __mips_soft_float + s.s $f0, 0(t0) +#else + REG_S v0, 0(t0) +#endif + b epilogue + +retdouble: + bne t1, FFI_TYPE_DOUBLE, retcomplex + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) +#ifndef __mips_soft_float + s.d $f0, 0(t0) +#else + REG_S v1, 4(t0) + REG_S v0, 0(t0) +#endif + b epilogue + +retcomplex: + # mask out the complex elements type. + # the struct of flags (bits): + # 0-1: arg0 + # 2-3: arg1 + # 4-7: return type + # 8-11: rtype elements type: for complex + # Note here: t2 is flags>>4 + bne t1, FFI_TYPE_COMPLEX, noretval + jalr t9 + REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) + REG_L t1, A3_OFF($fp) # load the flags word + SRL t1, t1, 8 + li t3, 3 + beq t1, t3, 3f # double + li t3, 2 + beq t1, t3, 2f # float + # FIXME: long double + slti t3, t1, 5 + beqz t3, 5f # (u)int8/16/32/64 +2: +#ifndef __mips_soft_float + s.s $f0, 0(t0) + s.s $f2, 4(t0) +#else + # FIXME: do nothing can pass all of the testsuite +#endif + b epilogue +3: +#ifndef __mips_soft_float + s.d $f0, 0(t0) + s.d $f2, 8(t0) +#else + # FIXME: do nothing can pass all of the testsuite +#endif + b epilogue + +5: + REG_S v1, 4(t0) + REG_S v0, 0(t0) + b epilogue + +noretval: + jalr t9 + + # Epilogue +epilogue: + move $sp, $fp + REG_L $fp, FP_OFF($sp) # Restore frame pointer + REG_L ra, RA_OFF($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME # Fix stack pointer + j ra + +$LFE0: + .end ffi_call_O32 + + +/* ffi_closure_O32. Expects address of the passed-in ffi_closure + in t4 ($12). Stores any arguments passed in registers onto the + stack, then calls ffi_closure_mips_inner_O32, which + then decodes them. + + Stack layout: + + 3 - a3 save + 2 - a2 save + 1 - a1 save + 0 - a0 save, original sp + -1 - ra save + -2 - fp save + -3 - $16 (s0) save + -4 - cprestore + -5 - return value high (v1) + -6 - return value low (v0) + -7 - f14 (le high, be low) + -8 - f14 (le low, be high) + -9 - f12 (le high, be low) + -10 - f12 (le low, be high) + -11 - Called function a5 save + -12 - Called function a4 save + -13 - Called function a3 save + -14 - Called function a2 save + -15 - Called function a1 save + -16 - Called function a0 save, our sp and fp point here + */ + +#define SIZEOF_FRAME2 (16 * FFI_SIZEOF_ARG) +#define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG) +#define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG) +#define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG) +#define A0_OFF2 (SIZEOF_FRAME2 + 0 * FFI_SIZEOF_ARG) +#define RA_OFF2 (SIZEOF_FRAME2 - 1 * FFI_SIZEOF_ARG) +#define FP_OFF2 (SIZEOF_FRAME2 - 2 * FFI_SIZEOF_ARG) +#define S0_OFF2 (SIZEOF_FRAME2 - 3 * FFI_SIZEOF_ARG) +#define GP_OFF2 (SIZEOF_FRAME2 - 4 * FFI_SIZEOF_ARG) +#define V1_OFF2 (SIZEOF_FRAME2 - 5 * FFI_SIZEOF_ARG) +#define V0_OFF2 (SIZEOF_FRAME2 - 6 * FFI_SIZEOF_ARG) +#define FA_1_1_OFF2 (SIZEOF_FRAME2 - 7 * FFI_SIZEOF_ARG) +#define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG) +#define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG) +#define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG) +#define CALLED_A5_OFF2 (SIZEOF_FRAME2 - 11 * FFI_SIZEOF_ARG) +#define CALLED_A4_OFF2 (SIZEOF_FRAME2 - 12 * FFI_SIZEOF_ARG) + + .text + + .align 2 + .globl ffi_go_closure_O32 + .ent ffi_go_closure_O32 +ffi_go_closure_O32: +$LFB1: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder + .cpload t9 + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +$LCFI10: + + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +$LCFI11: + + move $fp, $sp +$LCFI12: + + REG_S a0, A0_OFF2($fp) + REG_S a1, A1_OFF2($fp) + REG_S a2, A2_OFF2($fp) + REG_S a3, A3_OFF2($fp) + + # Load ABI enum to s0 + REG_L $16, 4($15) # cif + REG_L $16, 0($16) # abi is first member. + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT + +#ifndef __mips_soft_float + # Store all possible float/double registers. + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) +#endif +1: + # prepare arguments for ffi_closure_mips_inner_O32 + REG_L a0, 4($15) # cif + REG_L a1, 8($15) # fun + move a2, $15 # user_data = go closure + addu a3, $fp, V0_OFF2 # rvalue + + addu t9, $fp, A0_OFF2 # ar + REG_S t9, CALLED_A4_OFF2($fp) + + addu t9, $fp, FA_0_0_OFF2 #fpr + REG_S t9, CALLED_A5_OFF2($fp) + + b $do_closure + +$LFE1: + .end ffi_go_closure_O32 + + .align 2 + .globl ffi_closure_O32 + .ent ffi_closure_O32 +ffi_closure_O32: +$LFB2: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder + .cpload t9 + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +$LCFI20: + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +$LCFI21: + move $fp, $sp + +$LCFI22: + # Store all possible argument registers. If there are more than + # four arguments, then they are stored above where we put a3. + REG_S a0, A0_OFF2($fp) + REG_S a1, A1_OFF2($fp) + REG_S a2, A2_OFF2($fp) + REG_S a3, A3_OFF2($fp) + + # Load ABI enum to s0 + REG_L $16, 20($12) # cif pointer follows tramp. + REG_L $16, 0($16) # abi is first member. + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT + +#ifndef __mips_soft_float + # Store all possible float/double registers. + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) +#endif +1: + # prepare arguments for ffi_closure_mips_inner_O32 + REG_L a0, 20($12) # cif pointer follows tramp. + REG_L a1, 24($12) # fun + REG_L a2, 28($12) # user_data + addu a3, $fp, V0_OFF2 # rvalue + + addu t9, $fp, A0_OFF2 # ar + REG_S t9, CALLED_A4_OFF2($fp) + + addu t9, $fp, FA_0_0_OFF2 #fpr + REG_S t9, CALLED_A5_OFF2($fp) + +$do_closure: + la t9, ffi_closure_mips_inner_O32 + # Call ffi_closure_mips_inner_O32 to do the work. + jalr t9 + + # Load the return value into the appropriate register. + move $8, $2 + li $9, FFI_TYPE_VOID + beq $8, $9, closure_done + + li $13, 1 # FFI_O32 + bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT + +#ifndef __mips_soft_float + li $9, FFI_TYPE_FLOAT + l.s $f0, V0_OFF2($fp) + beq $8, $9, closure_done + + li $9, FFI_TYPE_DOUBLE + l.d $f0, V0_OFF2($fp) + beq $8, $9, closure_done + + li $9, FFI_TYPE_COMPLEX + bne $8, $9, 1f + + li $9, 8 + l.s $f0, V0_OFF2($fp) + l.s $f2, V1_OFF2($fp) + beq $3, $9, closure_done + + li $9, 16 + l.d $f0, V0_OFF2($fp) + l.d $f2, (V0_OFF2+8)($fp) + beq $3, $9, closure_done +#endif +1: + REG_L $3, V1_OFF2($fp) + REG_L $2, V0_OFF2($fp) + +closure_done: + # Epilogue + move $sp, $fp + REG_L $16, S0_OFF2($sp) # Restore s0 + REG_L $fp, FP_OFF2($sp) # Restore frame pointer + REG_L ra, RA_OFF2($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME2 + j ra +$LFE2: + .end ffi_closure_O32 + +/* DWARF-2 unwind info. */ + + .section .eh_frame,"a",@progbits +$Lframe0: + .4byte $LECIE0-$LSCIE0 # Length of Common Information Entry +$LSCIE0: + .4byte 0x0 # CIE Identifier Tag + .byte 0x1 # CIE Version + .ascii "zR\0" # CIE Augmentation + .uleb128 0x1 # CIE Code Alignment Factor + .sleb128 4 # CIE Data Alignment Factor + .byte 0x1f # CIE RA Column + .uleb128 0x1 # Augmentation size + .byte 0x00 # FDE Encoding (absptr) + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1d + .uleb128 0x0 + .align 2 +$LECIE0: + +$LSFDE0: + .4byte $LEFDE0-$LASFDE0 # FDE Length +$LASFDE0: + .4byte $LASFDE0-$Lframe0 # FDE CIE offset + .4byte $LFB0 # FDE initial location + .4byte $LFE0-$LFB0 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI00-$LFB0 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 0x18 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI01-$LCFI00 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI02-$LCFI01 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x18 + .align 2 +$LEFDE0: + +$LSFDE1: + .4byte $LEFDE1-$LASFDE1 # FDE Length +$LASFDE1: + .4byte $LASFDE1-$Lframe0 # FDE CIE offset + .4byte $LFB1 # FDE initial location + .4byte $LFE1-$LFB1 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI10-$LFB1 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI11-$LCFI10 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI12-$LCFI11 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 SIZEOF_FRAME2 + .align 2 +$LEFDE1: + +$LSFDE2: + .4byte $LEFDE2-$LASFDE2 # FDE Length +$LASFDE2: + .4byte $LASFDE2-$Lframe0 # FDE CIE offset + .4byte $LFB2 # FDE initial location + .4byte $LFE2-$LFB2 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI20-$LFB2 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI21-$LCFI20 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 + .4byte $LCFI22-$LCFI21 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 SIZEOF_FRAME2 + .align 2 +$LEFDE2: + +#endif + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",%progbits +#endif diff --git a/deps/libffi/src/moxie/eabi.S b/deps/libffi/src/moxie/eabi.S new file mode 100644 index 00000000000000..10cfb0448ea937 --- /dev/null +++ b/deps/libffi/src/moxie/eabi.S @@ -0,0 +1,101 @@ +/* ----------------------------------------------------------------------- + eabi.S - Copyright (c) 2012, 2013 Anthony Green + + Moxie Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .globl ffi_prep_args_EABI + + .text + .p2align 4 + .globl ffi_call_EABI + .type ffi_call_EABI, @function + + # $r0 : ffi_prep_args + # $r1 : &ecif + # $r2 : cif->bytes + # $r3 : fig->flags + # $r4 : ecif.rvalue + # $r5 : fn + +ffi_call_EABI: + push $sp, $r6 + push $sp, $r7 + push $sp, $r8 + dec $sp, 24 + + /* Store incoming args on stack. */ + sto.l 0($sp), $r0 /* ffi_prep_args */ + sto.l 4($sp), $r1 /* ecif */ + sto.l 8($sp), $r2 /* bytes */ + sto.l 12($sp), $r3 /* flags */ + sto.l 16($sp), $r4 /* &rvalue */ + sto.l 20($sp), $r5 /* fn */ + + /* Call ffi_prep_args. */ + mov $r6, $r4 /* Save result buffer */ + mov $r7, $r5 /* Save the target fn */ + mov $r8, $r3 /* Save the flags */ + sub $sp, $r2 /* Allocate stack space */ + mov $r0, $sp /* We can stomp over $r0 */ + /* $r1 is already set up */ + jsra ffi_prep_args + + /* Load register arguments. */ + ldo.l $r0, 0($sp) + ldo.l $r1, 4($sp) + ldo.l $r2, 8($sp) + ldo.l $r3, 12($sp) + ldo.l $r4, 16($sp) + ldo.l $r5, 20($sp) + + /* Call the target function. */ + jsr $r7 + + ldi.l $r7, 0xffffffff + cmp $r8, $r7 + beq retstruct + + ldi.l $r7, 4 + cmp $r8, $r7 + bgt ret2reg + + st.l ($r6), $r0 + jmpa retdone + +ret2reg: + st.l ($r6), $r0 + sto.l 4($r6), $r1 + +retstruct: +retdone: + /* Return. */ + ldo.l $r6, -4($fp) + ldo.l $r7, -8($fp) + ldo.l $r8, -12($fp) + ret + .size ffi_call_EABI, .-ffi_call_EABI + diff --git a/deps/libffi/src/moxie/ffi.c b/deps/libffi/src/moxie/ffi.c new file mode 100644 index 00000000000000..99bcf4077ce890 --- /dev/null +++ b/deps/libffi/src/moxie/ffi.c @@ -0,0 +1,310 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2012, 2013, 2018, 2021, 2022 Anthony Green + + Moxie Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void *ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + register int count = 0; + + p_argv = ecif->avalue; + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += 4; + } + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + (i != 0); + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + z = sizeof(void*); + *(void **) argp = *p_argv; + } + else if (z < sizeof(int)) + { + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof(int)) + { + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + } + else + { + memcpy(argp, *p_argv, z); + } + p_argv++; + argp += z; + count += z; + } + + return (stack + ((count > 24) ? 24 : FFI_ALIGN_DOWN(count, 8))); +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = -1; + else + cif->flags = cif->rtype->size; + + cif->bytes = FFI_ALIGN (cif->bytes, 8); + + return FFI_OK; +} + +extern void ffi_call_EABI(void *(*)(char *, extended_cif *), + extended_cif *, + unsigned, unsigned, + unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue) +{ + extended_cif ecif; + ffi_type **arg_types = cif->arg_types; + int i, nargs = cif->nargs; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args?? */ + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + switch (cif->abi) + { + case FFI_EABI: + ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } +} + +void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + unsigned arg4, unsigned arg5, unsigned arg6) +{ + /* This function is called by a trampoline. The trampoline stows a + pointer to the ffi_closure object in $r12. We must save this + pointer in a place that will persist while we do our work. */ + register ffi_closure *creg __asm__ ("$r12"); + ffi_closure *closure = creg; + + /* Arguments that don't fit in registers are found on the stack + at a fixed offset above the current frame pointer. */ + register char *frame_pointer __asm__ ("$fp"); + + /* Pointer to a struct return value. */ + void *struct_rvalue = (void *) arg1; + + /* 6 words reserved for register args + 3 words from jsr */ + char *stack_args = frame_pointer + 9*4; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { arg1, arg2, arg3, arg4, arg5, arg6 }; + char *register_args_ptr = (char *) register_args; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int i; + + /* preserve struct type return pointer passing */ + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) { + ptr += 4; + register_args_ptr = (char *)®ister_args[1]; + } + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + avalue[i] = ptr; + break; + case FFI_TYPE_STRUCT: + { + if (arg_types[i]->size > 4) + { + void *copy = alloca(arg_types[i]->size); + memcpy(copy, *(void**)ptr, arg_types[i]->size); + avalue[i] = copy; + } + else + avalue[i] = *(void**)ptr; + } + break; + default: + /* This is an 8-byte value. */ + if (ptr == (char *) ®ister_args[5]) + { + /* The value is split across two locations */ + unsigned *ip = alloca(8); + avalue[i] = ip; + ip[0] = *(unsigned *) ptr; + ip[1] = *(unsigned *) stack_args; + } + else + { + avalue[i] = ptr; + } + ptr += 4; + break; + } + ptr += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + if (ptr == (char *) ®ister_args[6]) + ptr = stack_args; + else if (ptr == (char *) ®ister_args[7]) + ptr = stack_args + 4; + } + + /* Invoke the closure. */ + if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); + } + else + { + /* Allocate space for the return value and call the function. */ + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue)); + } +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned short *tramp = (unsigned short *) &closure->tramp[0]; + unsigned long fn = (long) ffi_closure_eabi; + unsigned long cls = (long) codeloc; + + if (cif->abi != FFI_EABI) + return FFI_BAD_ABI; + + fn = (unsigned long) ffi_closure_eabi; + + tramp[0] = 0x01e0; /* ldi.l $r12, .... */ + tramp[1] = cls >> 16; + tramp[2] = cls & 0xffff; + tramp[3] = 0x1a00; /* jmpa .... */ + tramp[4] = fn >> 16; + tramp[5] = fn & 0xffff; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} diff --git a/deps/libffi/src/moxie/ffitarget.h b/deps/libffi/src/moxie/ffitarget.h new file mode 100644 index 00000000000000..623e3ece57d56f --- /dev/null +++ b/deps/libffi/src/moxie/ffitarget.h @@ -0,0 +1,52 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2013 Anthony Green + Target configuration macros for Moxie + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_EABI, + FFI_DEFAULT_ABI = FFI_EABI, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +/* Trampolines are 12-bytes long. See ffi_prep_closure_loc. */ +#define FFI_TRAMPOLINE_SIZE (12) + +#endif diff --git a/deps/libffi/src/or1k/ffi.c b/deps/libffi/src/or1k/ffi.c new file mode 100644 index 00000000000000..7a6d28c2c12e39 --- /dev/null +++ b/deps/libffi/src/or1k/ffi.c @@ -0,0 +1,341 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2014 Sebastian Macke + + OpenRISC Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include "ffi_common.h" + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void* ffi_prep_args(char *stack, extended_cif *ecif) +{ + char *stacktemp = stack; + int i, s; + ffi_type **arg; + int count = 0; + int nfixedargs; + + nfixedargs = ecif->cif->nfixedargs; + arg = ecif->cif->arg_types; + void **argv = ecif->avalue; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) + { + *(void **) stack = ecif->rvalue; + stack += 4; + count = 4; + } + for(i=0; icif->nargs; i++) + { + + /* variadic args are saved on stack */ + if ((nfixedargs == 0) && (count < 24)) + { + count = 24; + stack = stacktemp + 24; + } + nfixedargs--; + + s = 4; + switch((*arg)->type) + { + case FFI_TYPE_STRUCT: + *(void **)stack = *argv; + break; + + case FFI_TYPE_SINT8: + *(signed int *) stack = (signed int)*(SINT8 *)(* argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) stack = (unsigned int)*(UINT8 *)(* argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) stack = (signed int)*(SINT16 *)(* argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) stack = (unsigned int)*(UINT16 *)(* argv); + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + *(int *)stack = *(int*)(*argv); + break; + + default: /* 8 byte types */ + if (count == 20) /* never split arguments */ + { + stack += 4; + count += 4; + } + s = (*arg)->size; + memcpy(stack, *argv, s); + break; + } + + stack += s; + count += s; + argv++; + arg++; + } + return stacktemp + ((count>24)?24:0); +} + +extern void ffi_call_SYSV(unsigned, + extended_cif *, + void *(*)(char *, extended_cif *), + unsigned *, + void (*fn)(void), + unsigned); + + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + int i; + int size; + ffi_type **arg; + + /* Calculate size to allocate on stack */ + + for(i = 0, arg = cif->arg_types, size=0; i < cif->nargs; i++, arg++) + { + if ((*arg)->type == FFI_TYPE_STRUCT) + size += 4; + else + if ((*arg)->size <= 4) + size += 4; + else + size += 8; + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + { + ffi_type *at = cif->arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args? */ + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + } + + /* for variadic functions more space is needed on the stack */ + if (cif->nargs != cif->nfixedargs) + size += 24; + + if (cif->rtype->type == FFI_TYPE_STRUCT) + size += 4; + + + extended_cif ecif; + ecif.cif = cif; + ecif.avalue = avalue; + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags); + break; + default: + FFI_ASSERT(0); + break; + } +} + + +void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, unsigned long r8) +{ + register int *sp __asm__ ("r17"); + register int *r13 __asm__ ("r13"); + + ffi_closure* closure = (ffi_closure*) r13; + char *stack_args = (char*) sp; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = + { r3, r4, r5, r6, r7, r8 }; + + /* Pointer to a struct return value. */ + void *struct_rvalue = (void *) r3; + + ffi_cif *cif = closure->cif; + ffi_type **arg_types = cif->arg_types; + void **avalue = alloca (cif->nargs * sizeof(void *)); + char *ptr = (char *) register_args; + int count = 0; + int nfixedargs = cif->nfixedargs; + int i; + + /* preserve struct type return pointer passing */ + + if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ptr += 4; + count = 4; + } + + /* Find the address of each argument. */ + for (i = 0; i < cif->nargs; i++) + { + + /* variadic args are saved on stack */ + if ((nfixedargs == 0) && (count < 24)) + { + ptr = stack_args; + count = 24; + } + nfixedargs--; + + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = ptr + 3; + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = ptr + 2; + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + avalue[i] = ptr; + break; + + case FFI_TYPE_STRUCT: + avalue[i] = *(void**)ptr; + break; + + default: + /* 8-byte values */ + + /* arguments are never splitted */ + if (ptr == ®ister_args[5]) + ptr = stack_args; + avalue[i] = ptr; + ptr += 4; + count += 4; + break; + } + ptr += 4; + count += 4; + + /* If we've handled more arguments than fit in registers, + start looking at the those passed on the stack. */ + + if (count == 24) + ptr = stack_args; + } + + if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + (closure->fun) (cif, struct_rvalue, avalue, closure->user_data); + } else + { + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + if (cif->rtype) + asm ("l.ori r12, %0, 0x0\n l.lwz r11, 0(r12)\n l.lwz r12, 4(r12)" : : "r" (&rvalue)); + } +} + + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + unsigned short *tramp = (unsigned short *) closure->tramp; + unsigned long fn = (unsigned long) ffi_closure_SYSV; + unsigned long cls = (unsigned long) codeloc; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + /* write pointers to temporary registers */ + tramp[0] = (0x6 << 10) | (13 << 5); /* l.movhi r13, ... */ + tramp[1] = cls >> 16; + tramp[2] = (0x2a << 10) | (13 << 5) | 13; /* l.ori r13, r13, ... */ + tramp[3] = cls & 0xFFFF; + + tramp[4] = (0x6 << 10) | (15 << 5); /* l.movhi r15, ... */ + tramp[5] = fn >> 16; + tramp[6] = (0x2a << 10) | (15 << 5) | 15; /* l.ori r15, r15 ... */ + tramp[7] = fn & 0xFFFF; + + tramp[8] = (0x11 << 10); /* l.jr r15 */ + tramp[9] = 15 << 11; + + tramp[10] = (0x2a << 10) | (17 << 5) | 1; /* l.ori r17, r1, ... */ + tramp[11] = 0x0; + + return FFI_OK; +} + + +ffi_status ffi_prep_cif_machdep (ffi_cif *cif) +{ + cif->flags = 0; + + /* structures are returned as pointers */ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = FFI_TYPE_STRUCT; + else + if (cif->rtype->size > 4) + cif->flags = FFI_TYPE_UINT64; + + cif->nfixedargs = cif->nargs; + + return FFI_OK; +} + + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + unsigned int nfixedargs, unsigned int ntotalargs) +{ + ffi_status status; + + status = ffi_prep_cif_machdep (cif); + cif->nfixedargs = nfixedargs; + return status; +} diff --git a/deps/libffi/src/or1k/ffitarget.h b/deps/libffi/src/or1k/ffitarget.h new file mode 100644 index 00000000000000..e55da286185a10 --- /dev/null +++ b/deps/libffi/src/or1k/ffitarget.h @@ -0,0 +1,58 @@ +/* ----------------------------------------------------------------------- + ffitarget.h - Copyright (c) 2014 Sebastian Macke + + OpenRISC Target configuration macros + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#define FFI_TRAMPOLINE_SIZE (24) + +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs; + +#endif + diff --git a/deps/libffi/src/or1k/sysv.S b/deps/libffi/src/or1k/sysv.S new file mode 100644 index 00000000000000..df6570ba9d3e7c --- /dev/null +++ b/deps/libffi/src/or1k/sysv.S @@ -0,0 +1,107 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2014 Sebastian Macke + + OpenRISC Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +.text + .globl ffi_call_SYSV + .type ffi_call_SYSV, @function +/* + r3: size to allocate on stack + r4: extended cif structure + r5: function pointer ffi_prep_args + r6: ret address + r7: function to call + r8: flag for return type +*/ + +ffi_call_SYSV: + /* Store registers used on stack */ + l.sw -4(r1), r9 /* return address */ + l.sw -8(r1), r1 /* stack address */ + l.sw -12(r1), r14 /* callee saved registers */ + l.sw -16(r1), r16 + l.sw -20(r1), r18 + l.sw -24(r1), r20 + + l.ori r14, r1, 0x0 /* save stack pointer */ + l.addi r1, r1, -24 + + l.ori r16, r7, 0x0 /* save function address */ + l.ori r18, r6, 0x0 /* save ret address */ + l.ori r20, r8, 0x0 /* save flag */ + + l.sub r1, r1, r3 /* reserve space on stack */ + + /* Call ffi_prep_args */ + l.ori r3, r1, 0x0 /* first argument stack address, second already ecif */ + l.jalr r5 + l.nop + + /* Load register arguments and call*/ + + l.lwz r3, 0(r1) + l.lwz r4, 4(r1) + l.lwz r5, 8(r1) + l.lwz r6, 12(r1) + l.lwz r7, 16(r1) + l.lwz r8, 20(r1) + l.ori r1, r11, 0x0 /* new stack pointer */ + l.jalr r16 + l.nop + + /* handle return values */ + + l.sfeqi r20, FFI_TYPE_STRUCT + l.bf ret /* structs don't return an rvalue */ + l.nop + + /* copy ret address */ + + l.sfeqi r20, FFI_TYPE_UINT64 + l.bnf four_byte_ret /* 8 byte value is returned */ + l.nop + + l.sw 4(r18), r12 + +four_byte_ret: + l.sw 0(r18), r11 + +ret: + /* return */ + l.ori r1, r14, 0x0 /* reset stack pointer */ + l.lwz r9, -4(r1) + l.lwz r1, -8(r1) + l.lwz r14, -12(r1) + l.lwz r16, -16(r1) + l.lwz r18, -20(r1) + l.lwz r20, -24(r1) + l.jr r9 + l.nop + +.size ffi_call_SYSV, .-ffi_call_SYSV diff --git a/deps/libffi/src/pa/ffi.c b/deps/libffi/src/pa/ffi.c new file mode 100644 index 00000000000000..f6012397e76735 --- /dev/null +++ b/deps/libffi/src/pa/ffi.c @@ -0,0 +1,673 @@ +/* ----------------------------------------------------------------------- + ffi.c - (c) 2011 Anthony Green + (c) 2008 Red Hat, Inc. + (c) 2006 Free Software Foundation, Inc. + (c) 2003-2004 Randolph Chung + + HPPA Foreign Function Interface + HP-UX PA ABI support + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) + +#define MIN_STACK_SIZE 64 +#define FIRST_ARG_SLOT 9 +#define DEBUG_LEVEL 0 + +#define fldw(addr, fpreg) \ + __asm__ volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) +#define fstw(fpreg, addr) \ + __asm__ volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) +#define fldd(addr, fpreg) \ + __asm__ volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) +#define fstd(fpreg, addr) \ + __asm__ volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) + +#define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) + +static inline int ffi_struct_type(ffi_type *t) +{ + size_t sz = t->size; + + /* Small structure results are passed in registers, + larger ones are passed by pointer. Note that small + structures differ from the corresponding integer + types in that they have different alignment requirements. */ + + if (sz <= 8) + return -sz; + else + return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ +} + +/* PA has a downward growing stack, which looks like this: + + Offset + [ Variable args ] + SP = (4*(n+9)) arg word N + ... + SP-52 arg word 4 + [ Fixed args ] + SP-48 arg word 3 + SP-44 arg word 2 + SP-40 arg word 1 + SP-36 arg word 0 + [ Frame marker ] + ... + SP-20 RP + SP-4 previous SP + + The first four argument words on the stack are reserved for use by + the callee. Instead, the general and floating registers replace + the first four argument slots. Non FP arguments are passed solely + in the general registers. FP arguments are passed in both general + and floating registers when using libffi. + + Non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23. + Non-FP 64-bit args are passed in register pairs, starting + on an odd numbered register (i.e. r25+r26 and r23+r24). + FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L. + FP 64-bit arguments are passed in fr5 and fr7. + + The registers are allocated in the same manner as stack slots. + This allows the callee to save its arguments on the stack if + necessary: + + arg word 3 -> gr23 or fr7L + arg word 2 -> gr24 or fr6L or fr7R + arg word 1 -> gr25 or fr5L + arg word 0 -> gr26 or fr4L or fr5R + + Note that fr4R and fr6R are never used for arguments (i.e., + doubles are not passed in fr4 or fr6). + + The rest of the arguments are passed on the stack starting at SP-52, + but 64-bit arguments need to be aligned to an 8-byte boundary + + This means we can have holes either in the register allocation, + or in the stack. */ + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments + + The following code will put everything into the stack frame + (which was allocated by the asm routine), and on return + the asm routine will load the arguments that should be + passed by register into the appropriate registers + + NOTE: We load floating point args in this function... that means we + assume gcc will not mess with fp regs in here. */ + +void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes) +{ + register unsigned int i; + register ffi_type **p_arg; + register void **p_argv; + unsigned int slot = FIRST_ARG_SLOT; + char *dest_cpy; + size_t len; + + debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, + ecif, bytes); + + p_arg = ecif->cif->arg_types; + p_argv = ecif->avalue; + + for (i = 0; i < ecif->cif->nargs; i++) + { + int type = (*p_arg)->type; + + switch (type) + { + case FFI_TYPE_SINT8: + *(SINT32 *)(stack - slot) = *(SINT8 *)(*p_argv); + break; + + case FFI_TYPE_UINT8: + *(UINT32 *)(stack - slot) = *(UINT8 *)(*p_argv); + break; + + case FFI_TYPE_SINT16: + *(SINT32 *)(stack - slot) = *(SINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT16: + *(UINT32 *)(stack - slot) = *(UINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), + slot); + *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); + break; + + case FFI_TYPE_FLOAT: + /* First 4 args go in fr4L - fr7L. */ + debug(3, "Storing UINT32(float) in slot %u\n", slot); + *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 4 args go in fr4L - fr7L. */ + case 0: fldw(stack - slot, fr4); break; + case 1: fldw(stack - slot, fr5); break; + case 2: fldw(stack - slot, fr6); break; + case 3: fldw(stack - slot, fr7); break; + } + break; + + case FFI_TYPE_DOUBLE: + /* Align slot for 64-bit type. */ + slot += (slot & 1) ? 1 : 2; + debug(3, "Storing UINT64(double) at slot %u\n", slot); + *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 2 args go in fr5, fr7. */ + case 1: fldd(stack - slot, fr5); break; + case 3: fldd(stack - slot, fr7); break; + } + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are passed in the same manner as structures + larger than 8 bytes. */ + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + break; +#endif + + case FFI_TYPE_STRUCT: + + /* Structs smaller or equal than 4 bytes are passed in one + register. Structs smaller or equal 8 bytes are passed in two + registers. Larger structures are passed by pointer. */ + + len = (*p_arg)->size; + if (len <= 4) + { + dest_cpy = (char *)(stack - slot) + 4 - len; + memcpy(dest_cpy, (char *)*p_argv, len); + } + else if (len <= 8) + { + slot += (slot & 1) ? 1 : 2; + dest_cpy = (char *)(stack - slot) + 8 - len; + memcpy(dest_cpy, (char *)*p_argv, len); + } + else + *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); + break; + + default: + FFI_ASSERT(0); + } + + slot++; + p_arg++; + p_argv++; + } + + /* Make sure we didn't mess up and scribble on the stack. */ + { + unsigned int n; + + debug(5, "Stack setup:\n"); + for (n = 0; n < (bytes + 3) / 4; n++) + { + if ((n%4) == 0) { debug(5, "\n%08x: ", (unsigned int)(stack - n)); } + debug(5, "%08x ", *(stack - n)); + } + debug(5, "\n"); + } + + FFI_ASSERT(slot * 4 <= bytes); + + return; +} + +static void ffi_size_stack_pa32(ffi_cif *cif) +{ + ffi_type **ptr; + int i; + int z = 0; /* # stack slots */ + + for (ptr = cif->arg_types, i = 0; i < cif->nargs; ptr++, i++) + { + int type = (*ptr)->type; + + switch (type) + { + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + z += 2 + (z & 1); /* must start on even regs, so we may waste one */ + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: +#endif + case FFI_TYPE_STRUCT: + z += 1; /* pass by ptr, callee will copy */ + break; + + default: /* <= 32-bit values */ + z++; + } + } + + /* We can fit up to 6 args in the default 64-byte stack frame, + if we need more, we need more stack. */ + if (z <= 6) + cif->bytes = MIN_STACK_SIZE; /* min stack size */ + else + cif->bytes = 64 + ROUND_UP((z - 6) * sizeof(UINT32), MIN_STACK_SIZE); + + debug(3, "Calculated stack size is %u bytes\n", cif->bytes); +} + +/* Perform machine dependent cif processing. */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + cif->flags = (unsigned) cif->rtype->type; + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a structure. */ + cif->flags = FFI_TYPE_STRUCT; + break; +#endif + + case FFI_TYPE_STRUCT: + /* For the return type we have to check the size of the structures. + If the size is smaller or equal 4 bytes, the result is given back + in one register. If the size is smaller or equal 8 bytes than we + return the result in two registers. But if the size is bigger than + 8 bytes, we work with pointers. */ + cif->flags = ffi_struct_type(cif->rtype); + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI_TYPE_UINT64; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + /* Lucky us, because of the unique PA ABI we get to do our + own stack sizing. */ + switch (cif->abi) + { + case FFI_PA32: + ffi_size_stack_pa32(cif); + break; + + default: + FFI_ASSERT(0); + break; + } + + return FFI_OK; +} + +extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), + extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + size_t i, nargs = cif->nargs; + ffi_type **arg_types = cif->arg_types; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT && size > 8) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if (rvalue == NULL +#ifdef PA_HPUX + && (cif->rtype->type == FFI_TYPE_STRUCT + || cif->rtype->type == FFI_TYPE_LONGDOUBLE)) +#else + && cif->rtype->type == FFI_TYPE_STRUCT) +#endif + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + + switch (cif->abi) + { + case FFI_PA32: + debug(3, "Calling ffi_call_pa32: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); + ffi_call_pa32(ffi_prep_args_pa32, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT(0); + break; + } +} + +#if FFI_CLOSURES +/* This is more-or-less an inverse of ffi_call -- we have arguments on + the stack, and we need to fill them into a cif structure and invoke + the user function. This really ought to be in asm to make sure + the compiler doesn't do things we don't expect. */ +ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) +{ + ffi_cif *cif; + void **avalue; + void *rvalue; + /* Functions can return up to 64-bits in registers. Return address + must be double word aligned. */ + union { double rd; UINT32 ret[2]; } u; + ffi_type **p_arg; + char *tmp; + int i, avn; + unsigned int slot = FIRST_ARG_SLOT; + register UINT32 r28 asm("r28"); + + cif = closure->cif; + + /* If returning via structure, callee will write to our pointer. */ + if (cif->flags == FFI_TYPE_STRUCT) + rvalue = (void *)r28; + else + rvalue = &u; + + avalue = (void **)alloca(cif->nargs * FFI_SIZEOF_ARG); + avn = cif->nargs; + p_arg = cif->arg_types; + + for (i = 0; i < avn; i++) + { + int type = (*p_arg)->type; + + switch (type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + avalue[i] = (char *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + slot += (slot & 1) ? 1 : 2; + avalue[i] = (void *)(stack - slot); + break; + + case FFI_TYPE_FLOAT: +#ifdef PA_LINUX + /* The closure call is indirect. In Linux, floating point + arguments in indirect calls with a prototype are passed + in the floating point registers instead of the general + registers. So, we need to replace what was previously + stored in the current slot with the value in the + corresponding floating point register. */ + switch (slot - FIRST_ARG_SLOT) + { + case 0: fstw(fr4, (void *)(stack - slot)); break; + case 1: fstw(fr5, (void *)(stack - slot)); break; + case 2: fstw(fr6, (void *)(stack - slot)); break; + case 3: fstw(fr7, (void *)(stack - slot)); break; + } +#endif + avalue[i] = (void *)(stack - slot); + break; + + case FFI_TYPE_DOUBLE: + slot += (slot & 1) ? 1 : 2; +#ifdef PA_LINUX + /* See previous comment for FFI_TYPE_FLOAT. */ + switch (slot - FIRST_ARG_SLOT) + { + case 1: fstd(fr5, (void *)(stack - slot)); break; + case 3: fstd(fr7, (void *)(stack - slot)); break; + } +#endif + avalue[i] = (void *)(stack - slot); + break; + +#ifdef PA_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a big structure. */ + avalue[i] = (void *) *(stack - slot); + break; +#endif + + case FFI_TYPE_STRUCT: + /* Structs smaller or equal than 4 bytes are passed in one + register. Structs smaller or equal 8 bytes are passed in two + registers. Larger structures are passed by pointer. */ + if((*p_arg)->size <= 4) + { + avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - + (*p_arg)->size; + } + else if ((*p_arg)->size <= 8) + { + slot += (slot & 1) ? 1 : 2; + avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - + (*p_arg)->size; + } + else + avalue[i] = (void *) *(stack - slot); + break; + + default: + FFI_ASSERT(0); + } + + slot++; + p_arg++; + } + + /* Invoke the closure. */ + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", u.ret[0], + u.ret[1]); + + /* Store the result using the lower 2 bytes of the flags. */ + switch (cif->flags) + { + case FFI_TYPE_UINT8: + *(stack - FIRST_ARG_SLOT) = (UINT8)u.ret[0]; + break; + case FFI_TYPE_SINT8: + *(stack - FIRST_ARG_SLOT) = (SINT8)u.ret[0]; + break; + case FFI_TYPE_UINT16: + *(stack - FIRST_ARG_SLOT) = (UINT16)u.ret[0]; + break; + case FFI_TYPE_SINT16: + *(stack - FIRST_ARG_SLOT) = (SINT16)u.ret[0]; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + *(stack - FIRST_ARG_SLOT) = u.ret[0]; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + *(stack - FIRST_ARG_SLOT) = u.ret[0]; + *(stack - FIRST_ARG_SLOT - 1) = u.ret[1]; + break; + + case FFI_TYPE_DOUBLE: + fldd(rvalue, fr4); + break; + + case FFI_TYPE_FLOAT: + fldw(rvalue, fr4); + break; + + case FFI_TYPE_STRUCT: + /* Don't need a return value, done by caller. */ + break; + + case FFI_TYPE_SMALL_STRUCT1: + case FFI_TYPE_SMALL_STRUCT2: + case FFI_TYPE_SMALL_STRUCT3: + case FFI_TYPE_SMALL_STRUCT4: + tmp = (void*)(stack - FIRST_ARG_SLOT); + tmp += 4 - cif->rtype->size; + memcpy((void*)tmp, &u, cif->rtype->size); + break; + + case FFI_TYPE_SMALL_STRUCT5: + case FFI_TYPE_SMALL_STRUCT6: + case FFI_TYPE_SMALL_STRUCT7: + case FFI_TYPE_SMALL_STRUCT8: + { + unsigned int ret2[2]; + int off; + + /* Right justify ret[0] and ret[1] */ + switch (cif->flags) + { + case FFI_TYPE_SMALL_STRUCT5: off = 3; break; + case FFI_TYPE_SMALL_STRUCT6: off = 2; break; + case FFI_TYPE_SMALL_STRUCT7: off = 1; break; + default: off = 0; break; + } + + memset (ret2, 0, sizeof (ret2)); + memcpy ((char *)ret2 + off, &u, 8 - off); + + *(stack - FIRST_ARG_SLOT) = ret2[0]; + *(stack - FIRST_ARG_SLOT - 1) = ret2[1]; + } + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_VOID: + break; + + default: + debug(0, "assert with cif->flags: %d\n",cif->flags); + FFI_ASSERT(0); + break; + } + return FFI_OK; +} + +/* Fill in a closure to refer to the specified fun and user_data. + cif specifies the argument and result types for fun. + The cif must already be prep'ed. */ + +extern void ffi_closure_pa32(void); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + /* The layout of a function descriptor. A function pointer with the PLABEL + bit set points to a function descriptor. */ + struct pa32_fd + { + UINT32 code_pointer; + UINT32 gp; + }; + + struct ffi_pa32_trampoline_struct + { + UINT32 code_pointer; /* Pointer to ffi_closure_unix. */ + UINT32 fake_gp; /* Pointer to closure, installed as gp. */ + UINT32 real_gp; /* Real gp value. */ + }; + + struct ffi_pa32_trampoline_struct *tramp; + struct pa32_fd *fd; + + if (cif->abi != FFI_PA32) + return FFI_BAD_ABI; + + /* Get function descriptor address for ffi_closure_pa32. */ + fd = (struct pa32_fd *)((UINT32)ffi_closure_pa32 & ~3); + + /* Setup trampoline. */ + tramp = (struct ffi_pa32_trampoline_struct *)closure->tramp; + tramp->code_pointer = fd->code_pointer; + tramp->fake_gp = (UINT32)codeloc & ~3; + tramp->real_gp = fd->gp; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} +#endif diff --git a/deps/libffi/src/pa/ffi64.c b/deps/libffi/src/pa/ffi64.c new file mode 100644 index 00000000000000..08807c8af15a45 --- /dev/null +++ b/deps/libffi/src/pa/ffi64.c @@ -0,0 +1,614 @@ +/* ----------------------------------------------------------------------- + ffi64.c - (c) 2022 John David Anglin + + HPPA Foreign Function Interface + PA 64-Bit ABI support + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) + +#define FIRST_ARG_SLOT 0 +#define DEBUG_LEVEL 0 + +#define fldw(addr, fpreg) \ + __asm__ volatile ("fldw 4(%0), %%" #fpreg "R" : : "r"(addr) : #fpreg) +#define fstw(fpreg, addr) \ + __asm__ volatile ("fstw %%" #fpreg "R, 4(%0)" : : "r"(addr)) +#define fldd(addr, fpreg) \ + __asm__ volatile ("fldd 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) +#define fstd(fpreg, addr) \ + __asm__ volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) + +#define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) + +static inline int ffi_struct_type(ffi_type *t) +{ + int sz = t->size; + + /* Small structure results are returned in registers 28 and 29, + larger ones are in a buffer allocated by the callee. The + address of the buffer is passed in r28. The buffer is supposed + to be aligned on a 16-byte boundary. Register return values are + padded on the right. The pad bits on the right are undefined. */ + + if (sz <= 16) + return -sz; + else + return FFI_TYPE_STRUCT; +} + +/* PA has a downward growing stack, which looks like this. Stack + arguments are offset from the argument ponter (AP) in r29. + + Offset + [ Fixed args ] + AP-64 arg word 0 (r26, fr4) + AP-56 arg word 1 (r25, fr5) + AP-48 arg word 2 (r24, fr6) + AP-40 arg word 3 (r23, fr7) + AP-32 arg word 4 (r22, fr8) + AP-24 arg word 5 (r21, fr9) + AP-16 arg word 6 (r20, fr10) + AP-8 arg word 7 (r19, fr11) + [ Variable args; AP = SP-16 if there are no variable args ] + AP stack arg 0 + AP+8 stack arg 1 + ... + [ Frame marker ] + SP-16 RP + SP-8 previous SP + + The first eight argument words on the stack are reserved for use by + the callee. Instead, the general and floating registers replace + the first four argument slots. Non FP arguments are passed solely + in the general registers. Single and double FP arguments are passed + in both general and floating registers when using libffi. + + The registers are allocated in the same manner as stack slots. + This allows the callee to save its arguments on the stack if + necessary: + + arg word 0 -> gr26 or fr4L or fr4R + arg word 1 -> gr25 or fr5L or fr5R + arg word 2 -> gr24 or fr6L or fr6R + arg word 3 -> gr23 or fr7L or fr7R + ... + + Single Single-precision floating-point parameters, when passed in + floating-point registers, are passed in the right halves of the + floating point registers; the left halves are unused. + + Quad-precision floating-point parameters within the first 64 bytes of + the parameter list are always passed in general registers. + + The rest of the arguments are passed on the stack starting at AP. + + This means we can have holes either in the register allocation, + or in the stack. */ + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments + + The following code will put everything into the stack frame + (which was allocated by the asm routine), and on return + the asm routine will load the arguments that should be + passed by register into the appropriate registers + + NOTE: We load floating point args in this function... that means we + assume gcc will not mess with fp regs in here. */ + +void ffi_prep_args_pa64(UINT64 *stack, extended_cif *ecif, unsigned bytes) +{ + register unsigned int i; + register ffi_type **p_arg; + register void **p_argv; + unsigned int slot = FIRST_ARG_SLOT; + size_t len; + + debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, + ecif, bytes); + + p_arg = ecif->cif->arg_types; + p_argv = ecif->avalue; + + for (i = 0; i < ecif->cif->nargs; i++) + { + int type = (*p_arg)->type; + + len = (*p_arg)->size; + + switch (type) + { + case FFI_TYPE_SINT8: + *(SINT64 *)(stack + slot) = *(SINT8 *)(*p_argv); + break; + + case FFI_TYPE_UINT8: + *(UINT64 *)(stack + slot) = *(UINT8 *)(*p_argv); + break; + + case FFI_TYPE_SINT16: + *(SINT64 *)(stack + slot) = *(SINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT16: + *(UINT64 *)(stack + slot) = *(UINT16 *)(*p_argv); + break; + + case FFI_TYPE_SINT32: + *(SINT64 *)(stack + slot) = *(SINT32 *)(*p_argv); + break; + + case FFI_TYPE_UINT32: + *(UINT64 *)(stack + slot) = *(UINT32 *)(*p_argv); + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + debug(3, "Storing UINT64 %lu in slot %u\n", *(UINT64 *)(*p_argv), + slot); + *(UINT64 *)(stack + slot) = *(UINT64 *)(*p_argv); + break; + + case FFI_TYPE_FLOAT: + /* First 8 args go in fr4L - fr11L. */ + debug(3, "Storing UINT32(float) in slot %u\n", slot); + *(UINT64 *)(stack + slot) = *(UINT32 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 4 args go in fr4L - fr7L. */ + case 0: fldw(stack + slot, fr4); break; + case 1: fldw(stack + slot, fr5); break; + case 2: fldw(stack + slot, fr6); break; + case 3: fldw(stack + slot, fr7); break; + case 4: fldw(stack + slot, fr8); break; + case 5: fldw(stack + slot, fr9); break; + case 6: fldw(stack + slot, fr10); break; + case 7: fldw(stack + slot, fr11); break; + } + break; + + case FFI_TYPE_DOUBLE: + debug(3, "Storing UINT64(double) at slot %u\n", slot); + *(UINT64 *)(stack + slot) = *(UINT64 *)(*p_argv); + switch (slot - FIRST_ARG_SLOT) + { + /* First 8 args go in fr4 to fr11. */ + case 0: fldd(stack + slot, fr4); break; + case 1: fldd(stack + slot, fr5); break; + case 2: fldd(stack + slot, fr6); break; + case 3: fldd(stack + slot, fr7); break; + case 4: fldd(stack + slot, fr8); break; + case 5: fldd(stack + slot, fr9); break; + case 6: fldd(stack + slot, fr10); break; + case 7: fldd(stack + slot, fr11); break; + } + break; + +#ifdef PA64_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Align slot to a 16-byte boundary. */ + slot += (slot & 1); + *(UINT64 *)(stack + slot) = *(UINT64 *)(*p_argv); + *(UINT64 *)(stack + slot + 1) = *(UINT64 *)(*p_argv + 8); + break; +#endif + + case FFI_TYPE_STRUCT: + /* Structs larger than 8 bytes are aligned on a 16-byte boundary. */ + if (len > 8) + slot += (slot & 1); + memcpy((char *)(stack + slot), (char *)*p_argv, len); + break; + + default: + FFI_ASSERT(0); + } + + slot += ROUND_UP (len, 8) >> 3; + p_arg++; + p_argv++; + } + + FFI_ASSERT(slot * 8 <= bytes); + + return; +} + +static void ffi_size_stack_pa64(ffi_cif *cif) +{ + ffi_type **ptr; + int i; + int z = 0; /* # stack slots */ + + for (ptr = cif->arg_types, i = 0; i < cif->nargs; ptr++, i++) + { + int type = (*ptr)->type; + int size = (*ptr)->size; + + switch (type) + { +#ifdef PA64_HPUX + case FFI_TYPE_LONGDOUBLE: + z += 2 + (z & 1); + break; +#endif + + case FFI_TYPE_STRUCT: + if (size > 8) + z += (z & 1); + z += ROUND_UP (size, 8) >> 3; + break; + + default: /* 64-bit values */ + z++; + } + } + + /* We need a minimum of 8 argument slots. Stack must be 16-byte + aligned. */ + if (z <= 8) + z = 8; + else + z += (z & 1); + + /* Add 16 bytes for frame marker. */ + cif->bytes = z * 8 + 64; + debug(3, "Calculated stack size is %u bytes\n", cif->bytes); +} + +/* Perform machine dependent cif processing. */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* Set the return type flag for jump table. */ + switch (cif->rtype->type) + { + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + /* For the return type we have to check the size of the structures. + If the size is smaller or equal 8 bytes, the result is given back + in one register. If the size is smaller or equal 16 bytes than we + return the result in two registers. If the size is bigger than + 16 bytes, the return is in a buffer allocated by the caller. */ + cif->flags = ffi_struct_type(cif->rtype); + break; + + default: + cif->flags = (unsigned) cif->rtype->type; + break; + } + + /* Lucky us, because of the unique PA ABI we get to do our + own stack sizing. */ + switch (cif->abi) + { + case FFI_PA64: + ffi_size_stack_pa64(cif); + break; + + default: + FFI_ASSERT(0); + break; + } + + return FFI_OK; +} + +extern void ffi_call_pa64(void (*)(UINT64 *, extended_cif *, unsigned), + extended_cif *, unsigned, unsigned, unsigned *, + void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if (rvalue == NULL + && (cif->rtype->type == FFI_TYPE_STRUCT + || cif->rtype->type == FFI_TYPE_COMPLEX) + && cif->rtype->size > 16) + ecif.rvalue = alloca(ROUND_UP (cif->rtype->size, 16)); + else + ecif.rvalue = rvalue; + + + switch (cif->abi) + { + case FFI_PA64: + debug(3, "Calling ffi_call_pa64: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); + ffi_call_pa64(ffi_prep_args_pa64, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT(0); + break; + } +} + +#if FFI_CLOSURES +/* This is more-or-less an inverse of ffi_call -- we have arguments on + the stack, and we need to fill them into a cif structure and invoke + the user function. This really ought to be in asm to make sure + the compiler doesn't do things we don't expect. */ +ffi_status ffi_closure_inner_pa64(ffi_closure *closure, UINT64 *stack) +{ + ffi_cif *cif; + void **avalue; + void *rvalue; + /* Functions can return up to 128-bits in registers. Return address + must be double word aligned. */ + union { long double rld; UINT64 ret[2]; } u; + ffi_type **p_arg; + char *tmp; + int i, avn; + unsigned int slot = FIRST_ARG_SLOT; + register UINT64 r28 asm("r28"); + + cif = closure->cif; + + /* If returning via structure, callee will write to our pointer. */ + if (cif->flags == FFI_TYPE_STRUCT) + rvalue = (void *)r28; + else + rvalue = &u; + + avalue = (void **)alloca(cif->nargs * FFI_SIZEOF_ARG); + avn = cif->nargs; + p_arg = cif->arg_types; + + for (i = 0; i < avn; i++) + { + int type = (*p_arg)->type; + + switch (type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = (void *)(stack + slot) + 7; + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = (void *)(stack + slot) + 6; + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + avalue[i] = (void *)(stack + slot) + 4; + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + avalue[i] = (void *)(stack + slot); + break; + + case FFI_TYPE_FLOAT: + /* The closure call is indirect. In Linux, floating point + arguments in indirect calls with a prototype are passed + in the floating point registers instead of the general + registers. So, we need to replace what was previously + stored in the current slot with the value in the + corresponding floating point register. */ + switch (slot + FIRST_ARG_SLOT) + { + case 0: fstw(fr4, (void *)(stack + slot)); break; + case 1: fstw(fr5, (void *)(stack + slot)); break; + case 2: fstw(fr6, (void *)(stack + slot)); break; + case 3: fstw(fr7, (void *)(stack + slot)); break; + case 4: fstw(fr8, (void *)(stack + slot)); break; + case 5: fstw(fr9, (void *)(stack + slot)); break; + case 6: fstw(fr10, (void *)(stack + slot)); break; + case 7: fstw(fr11, (void *)(stack + slot)); break; + } + avalue[i] = (void *)(stack + slot) + 4; + break; + + case FFI_TYPE_DOUBLE: + /* See previous comment for FFI_TYPE_FLOAT. */ + switch (slot + FIRST_ARG_SLOT) + { + case 0: fstd(fr4, (void *)(stack + slot)); break; + case 1: fstd(fr5, (void *)(stack + slot)); break; + case 2: fstd(fr6, (void *)(stack + slot)); break; + case 3: fstd(fr7, (void *)(stack + slot)); break; + case 4: fstd(fr8, (void *)(stack + slot)); break; + case 5: fstd(fr9, (void *)(stack + slot)); break; + case 6: fstd(fr10, (void *)(stack + slot)); break; + case 7: fstd(fr11, (void *)(stack + slot)); break; + } + avalue[i] = (void *)(stack + slot); + break; + +#ifdef PA64_HPUX + case FFI_TYPE_LONGDOUBLE: + /* Long doubles are treated like a big structure. */ + slot += (slot & 1); + avalue[i] = (void *)(stack + slot); + break; +#endif + + case FFI_TYPE_STRUCT: + /* All structs are passed in registers. Structs larger + than 8 bytes are aligned on a 16-byte boundary. */ + if((*p_arg)->size > 8) + slot += (slot & 1); + avalue[i] = (void *) (stack + slot); + break; + + default: + FFI_ASSERT(0); + } + + slot += (ROUND_UP ((*p_arg)->size, 8) >> 3); + p_arg++; + } + + /* Invoke the closure. */ + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + debug(3, "after calling function, ret[0] = %16lx, ret[1] = %16lx\n", u.ret[0], + u.ret[1]); + + /* Store the result using the lower 2 bytes of the flags. */ + switch (cif->flags) + { + case FFI_TYPE_UINT8: + *(stack + FIRST_ARG_SLOT) = (UINT8)u.ret[0]; + break; + case FFI_TYPE_SINT8: + *(stack + FIRST_ARG_SLOT) = (SINT8)u.ret[0]; + break; + case FFI_TYPE_UINT16: + *(stack + FIRST_ARG_SLOT) = (UINT16)u.ret[0]; + break; + case FFI_TYPE_SINT16: + *(stack + FIRST_ARG_SLOT) = (SINT16)u.ret[0]; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + *(stack + FIRST_ARG_SLOT) = (SINT32)u.ret[0]; + break; + case FFI_TYPE_UINT32: + *(stack - FIRST_ARG_SLOT) = (UINT32)u.ret[0]; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + *(stack - FIRST_ARG_SLOT) = u.ret[0]; + break; + + case FFI_TYPE_LONGDOUBLE: + *(stack + FIRST_ARG_SLOT) = u.ret[0]; + *(stack + FIRST_ARG_SLOT + 1) = u.ret[1]; + break; + + case FFI_TYPE_DOUBLE: + fldd(rvalue, fr4); + break; + + case FFI_TYPE_FLOAT: + /* Adjust for address adjustment in fldw macro. */ + fldw(rvalue - 4, fr4); + break; + + case FFI_TYPE_STRUCT: + /* Don't need a return value, done by caller. */ + break; + + case -1: + case -2: + case -3: + case -4: + case -5: + case -6: + case -7: + case -8: + case -9: + case -10: + case -11: + case -12: + case -13: + case -14: + case -15: + case -16: + tmp = (void*)(stack + FIRST_ARG_SLOT); + memcpy((void*)tmp, &u, cif->rtype->size); + break; + + case FFI_TYPE_VOID: + break; + + default: + debug(0, "assert with cif->flags: %d\n",cif->flags); + FFI_ASSERT(0); + break; + } + return FFI_OK; +} + +/* Fill in a closure to refer to the specified fun and user_data. + cif specifies the argument and result types for fun. + The cif must already be prep'ed. */ + +extern void ffi_closure_pa64(void); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + /* The layout of a function descriptor. */ + struct pa64_fd + { + UINT64 tmp1; + UINT64 tmp2; + UINT64 code_pointer; + UINT64 gp; + }; + + struct ffi_pa64_trampoline_struct + { + UINT64 real_gp; /* Real gp value. */ + UINT64 tmp2; + UINT64 code_pointer; /* Pointer to ffi_closure_unix. */ + UINT64 fake_gp; /* Pointer to closure, installed as gp. */ + }; + + struct ffi_pa64_trampoline_struct *tramp; + struct pa64_fd *fd; + + if (cif->abi != FFI_PA64) + return FFI_BAD_ABI; + + /* Get function descriptor address for ffi_closure_pa64. */ + fd = (struct pa64_fd *)((UINT64)ffi_closure_pa64); + + /* Setup trampoline. */ + tramp = (struct ffi_pa64_trampoline_struct *)closure->tramp; + tramp->code_pointer = fd->code_pointer; + tramp->fake_gp = (UINT64)codeloc; + tramp->real_gp = fd->gp; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} +#endif diff --git a/deps/libffi/src/pa/ffitarget.h b/deps/libffi/src/pa/ffitarget.h new file mode 100644 index 00000000000000..dae854a695bb30 --- /dev/null +++ b/deps/libffi/src/pa/ffitarget.h @@ -0,0 +1,94 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for hppa. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + +#ifdef PA_LINUX + FFI_PA32, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA32 +#endif + +#ifdef PA_HPUX + FFI_PA32, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA32 +#endif + +#ifdef PA64_HPUX + FFI_PA64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_PA64 +#endif +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#if defined(PA64_HPUX) +#define FFI_TRAMPOLINE_SIZE 32 +#else +#define FFI_TRAMPOLINE_SIZE 12 +#endif + +#define FFI_TYPE_SMALL_STRUCT1 -1 +#define FFI_TYPE_SMALL_STRUCT2 -2 +#define FFI_TYPE_SMALL_STRUCT3 -3 +#define FFI_TYPE_SMALL_STRUCT4 -4 +#define FFI_TYPE_SMALL_STRUCT5 -5 +#define FFI_TYPE_SMALL_STRUCT6 -6 +#define FFI_TYPE_SMALL_STRUCT7 -7 +#define FFI_TYPE_SMALL_STRUCT8 -8 + +/* linux.S and hpux32.S expect FFI_TYPE_COMPLEX is the last generic type. */ +#define FFI_PA_TYPE_LAST FFI_TYPE_COMPLEX + +/* If new generic types are added, the jump tables in linux.S and hpux32.S + likely need updating. */ +#if FFI_TYPE_LAST != FFI_PA_TYPE_LAST +# error "You likely have broken jump tables" +#endif + +#endif diff --git a/deps/libffi/src/pa/hpux32.S b/deps/libffi/src/pa/hpux32.S new file mode 100644 index 00000000000000..1629c0356b439d --- /dev/null +++ b/deps/libffi/src/pa/hpux32.S @@ -0,0 +1,417 @@ +/* ----------------------------------------------------------------------- + hpux32.S - Copyright (c) 2006 Free Software Foundation, Inc. + (c) 2008 Red Hat, Inc. + based on src/pa/linux.S + + HP-UX PA Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .LEVEL 1.1 + .SPACE $PRIVATE$ + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE + .SUBSPA $DATA$ + .align 4 + + /* void ffi_call_pa32(void (*)(char *, extended_cif *), + extended_cif *ecif, + unsigned bytes, + unsigned flags, + unsigned *rvalue, + void (*fn)(void)); + */ + + .export ffi_call_pa32,ENTRY,PRIV_LEV=3 + .import ffi_prep_args_pa32,CODE + + .SPACE $TEXT$ + .SUBSPA $CODE$ + .align 4 + +L$FB1 +ffi_call_pa32 + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 + .entry + stw %rp, -20(%sp) + copy %r3, %r1 +L$CFI11 + copy %sp, %r3 +L$CFI12 + + /* Setup the stack for calling prep_args... + We want the stack to look like this: + + [ Previous stack ] <- %r3 + + [ 64-bytes register save area ] <- %r4 + + [ Stack space for actual call, passed as ] <- %arg0 + [ arg0 to ffi_prep_args_pa32 ] + + [ Stack for calling prep_args ] <- %sp + */ + + stwm %r1, 64(%sp) + stw %r4, 12(%r3) +L$CFI13 + copy %sp, %r4 + + addl %arg2, %r4, %arg0 ; arg stack + stw %arg3, -48(%r3) ; save flags we need it later + + /* Call prep_args: + %arg0(stack) -- set up above + %arg1(ecif) -- same as incoming param + %arg2(bytes) -- same as incoming param */ + bl ffi_prep_args_pa32,%r2 + ldo 64(%arg0), %sp + ldo -64(%sp), %sp + + /* now %sp should point where %arg0 was pointing. */ + + /* Load the arguments that should be passed in registers + The fp args are loaded by the prep_args function. */ + ldw -36(%sp), %arg0 + ldw -40(%sp), %arg1 + ldw -44(%sp), %arg2 + ldw -48(%sp), %arg3 + + /* in case the function is going to return a structure + we need to give it a place to put the result. */ + ldw -52(%r3), %ret0 ; %ret0 <- rvalue + ldw -56(%r3), %r22 ; %r22 <- function to call + bl $$dyncall, %r31 ; Call the user function + copy %r31, %rp + + /* Prepare to store the result; we need to recover flags and rvalue. */ + ldw -48(%r3), %r21 ; r21 <- flags + + /* Adjust flags range from [-8, 15] to [0, 23]. */ + addi 8, %r21, %r21 + + blr %r21, %r0 + ldw -52(%r3), %r20 ; r20 <- rvalue + + /* Giant jump table */ + /* 8-byte small struct */ + b,n L$smst8 + nop + /* 7-byte small struct */ + b,n L$smst7 + nop + /* 6-byte small struct */ + b,n L$smst6 + nop + /* 5-byte small struct */ + b,n L$smst5 + nop + /* 4-byte small struct */ + b,n L$smst4 + nop + /* 3-byte small struct */ + b,n L$smst3 + nop + /* 2-byte small struct */ + b,n L$smst2 + nop + /* 1-byte small struct */ + b L$done + stb %ret0, 0(%r20) + /* void */ + b,n L$done + nop + /* int */ + b L$done + stw %ret0, 0(%r20) + /* float */ + b L$done + fstw %fr4L,0(%r20) + /* double */ + b L$done + fstd %fr4,0(%r20) + /* long double */ + b,n L$done + nop + /* unsigned int8 */ + b L$done + stw %ret0, 0(%r20) + /* signed int8 */ + b L$done + stw %ret0, 0(%r20) + /* unsigned int16 */ + b L$done + stw %ret0, 0(%r20) + /* signed int16 */ + b L$done + stw %ret0, 0(%r20) + /* unsigned int32 */ + b L$done + stw %ret0, 0(%r20) + /* signed int32 */ + b L$done + stw %ret0, 0(%r20) + /* unsigned int64 */ + b,n L$uint64 + nop + /* signed int64 */ + b,n L$sint64 + nop + /* large struct */ + b,n L$done + nop + /* pointer */ + b L$done + stw %ret0, 0(%r20) + /* complex */ + b,n L$done + nop + + /* Store the result according to the return type. The most + likely types should come first. */ + +L$uint64 +L$sint64 + stw %ret0, 0(%r20) + b L$done + stw %ret1, 4(%r20) + +L$smst2 + /* 2-byte structs are returned in ret0 as ????xxyy. */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$smst3 + /* 3-byte structs are returned in ret0 as ??xxyyzz. */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$smst4 + /* 4-byte structs are returned in ret0 as wwxxyyzz. */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$smst5 + /* 5 byte values are returned right justified: + ret0 ret1 + 5: ??????aa bbccddee */ + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$smst6 + /* 6 byte values are returned right justified: + ret0 ret1 + 6: ????aabb ccddeeff */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$smst7 + /* 7 byte values are returned right justified: + ret0 ret1 + 7: ??aabbcc ddeeffgg */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b L$done + stb %ret1, 0(%r20) + +L$smst8 + /* 8 byte values are returned right justified: + ret0 ret1 + 8: aabbccdd eeffgghh */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stb %ret1, 0(%r20) + +L$done + /* all done, return */ + copy %r4, %sp ; pop arg stack + ldw 12(%r3), %r4 + ldwm -64(%sp), %r3 ; .. and pop stack + ldw -20(%sp), %rp + bv %r0(%rp) + nop + .exit + .procend +L$FE1 + + /* void ffi_closure_pa32(void); + Called with closure argument in %r19 */ + + .SPACE $TEXT$ + .SUBSPA $CODE$ + .export ffi_closure_pa32,ENTRY,PRIV_LEV=3,RTNVAL=GR + .import ffi_closure_inner_pa32,CODE + .align 4 +L$FB2 +ffi_closure_pa32 + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .entry + + stw %rp, -20(%sp) + copy %r3, %r1 +L$CFI21 + copy %sp, %r3 +L$CFI22 + stwm %r1, 64(%sp) + + /* Put arguments onto the stack and call ffi_closure_inner. */ + stw %arg0, -36(%r3) + stw %arg1, -40(%r3) + stw %arg2, -44(%r3) + stw %arg3, -48(%r3) + + /* Retrieve closure pointer and real gp. */ + copy %r19, %arg0 + ldw 8(%r19), %r19 + bl ffi_closure_inner_pa32, %r2 + copy %r3, %arg1 + ldwm -64(%sp), %r3 + ldw -20(%sp), %rp + ldw -36(%sp), %ret0 + bv %r0(%rp) + ldw -40(%sp), %ret1 + .exit + .procend +L$FE2: + + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 + .EXPORT _GLOBAL__F_ffi_call_pa32,DATA +_GLOBAL__F_ffi_call_pa32 +L$frame1: + .word L$ECIE1-L$SCIE1 ;# Length of Common Information Entry +L$SCIE1: + .word 0x0 ;# CIE Identifier Tag + .byte 0x1 ;# CIE Version + .ascii "\0" ;# CIE Augmentation + .uleb128 0x1 ;# CIE Code Alignment Factor + .sleb128 4 ;# CIE Data Alignment Factor + .byte 0x2 ;# CIE RA Column + .byte 0xc ;# DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x0 + .align 4 +L$ECIE1: +L$SFDE1: + .word L$EFDE1-L$ASFDE1 ;# FDE Length +L$ASFDE1: + .word L$ASFDE1-L$frame1 ;# FDE CIE offset + .word L$FB1 ;# FDE initial location + .word L$FE1-L$FB1 ;# FDE address range + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI11-L$FB1 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI12-L$CFI11 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI13-L$CFI12 + .byte 0x84 ;# DW_CFA_offset, column 0x4 + .uleb128 0x3 + + .align 4 +L$EFDE1: + +L$SFDE2: + .word L$EFDE2-L$ASFDE2 ;# FDE Length +L$ASFDE2: + .word L$ASFDE2-L$frame1 ;# FDE CIE offset + .word L$FB2 ;# FDE initial location + .word L$FE2-L$FB2 ;# FDE address range + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI21-L$FB2 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI22-L$CFI21 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .align 4 +L$EFDE2: diff --git a/deps/libffi/src/pa/hpux64.S b/deps/libffi/src/pa/hpux64.S new file mode 100644 index 00000000000000..6a82b57ecbbe32 --- /dev/null +++ b/deps/libffi/src/pa/hpux64.S @@ -0,0 +1,681 @@ +/* ----------------------------------------------------------------------- + hpux64.S - (c) 2005-2022 John David Anglin + + HPUX PA 64-Bit Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .LEVEL 2.0w + .text + .align 4 + + /* void ffi_call_pa64(void (*)(char *, extended_cif *), + extended_cif *ecif, + unsigned bytes, + unsigned flags, + unsigned *rvalue, + void (*fn)()); + */ + + .export ffi_call_pa64,code + .import ffi_prep_args_pa64,code + + .align 4 + +L$FB1 +ffi_call_pa64 + .proc + .callinfo FRAME=48,CALLS,SAVE_RP,ENTRY_GR=4 + .entry + std %rp, -16(%sp) + copy %r3, %r1 +L$CFI11 + copy %sp, %r3 +L$CFI12 + std,ma %r1, 48(%sp) + + /* Setup the stack for calling prep_args... + We want the stack to look like this: + + [ Previous stack ] <- %r3 + + [ 48-byte register save area ] + + [ Stack space for call arguments ] <- %r4 + + [ 16-byte rame marker ] + + [ 128-byte stack for calling prep_args ] <- %sp + */ + + std %r4, 8(%r3) ; save r4 +L$CFI13 + std %r23, 16(%r3) ; save flags we need it later + std %r22, 24(%r3) ; save rvalue + std %r21, 32(%r3) ; save fn pointer + + copy %sp, %r4 + copy %r4, %r26 ; argument stack pointer + addl %r24, %sp, %sp ; allocate argument space + + ldo 112(%sp), %r29 ; arg pointer for prep args + + /* Call prep_args: + %arg0(stack) -- set up above to point to call arguments + %arg1(ecif) -- same as incoming param + %arg2(bytes) -- same as incoming param */ + bl ffi_prep_args_pa64,%r2 + ldo 128(%sp), %sp + ldo -128(%sp), %sp + + /* Load the arguments that should be passed in registers + The fp args were loaded by the prep_args function. */ + ldd 0(%r4), %r26 + ldd 8(%r4), %r25 + ldd 16(%r4), %r24 + ldd 24(%r4), %r23 + ldd 32(%r4), %r22 + ldd 40(%r4), %r21 + ldd 48(%r4), %r20 + ldd 56(%r4), %r19 + + ldd 24(%r3), %ret0 ; %ret0 <- rvalue + + ldd 32(%r3), %r1 ; %r1 <- function pointer + ldd 16(%r1), %rp ; fn address + ldd 24(%r1), %dp ; New gp + bve,l (%rp), %r2 ; Call the user function + ldo 64(%r4), %r29 ; Argument pointer + + /* Prepare to store the result; recover flags and rvalue. */ + ldd 16(%r3), %r21 ; r21 <- flags + extrd,s %r21, 63, 32, %r21 ; sign extend flags for blr + + /* Adjust flags range from [-16, 15] to [0, 31]. */ + addi 16, %r21, %r21 + + blr %r21, %r0 + ldd 24(%r3), %r20 ; r20 <- rvalue + + /* Giant jump table */ + /* 16-byte small struct */ + b,n L$smst16 + nop + /* 15-byte small struct */ + b,n L$smst15 + nop + /* 14-byte small struct */ + b,n L$smst14 + nop + /* 13-byte small struct */ + b,n L$smst13 + nop + /* 12-byte small struct */ + b,n L$smst12 + nop + /* 11-byte small struct */ + b,n L$smst11 + nop + /* 10-byte small struct */ + b,n L$smst10 + nop + /* 9-byte small struct */ + b,n L$smst9 + nop + /* 8-byte small struct */ + b,n L$smst8 + nop + /* 7-byte small struct */ + b,n L$smst7 + nop + /* 6-byte small struct */ + b,n L$smst6 + nop + /* 5-byte small struct */ + b,n L$smst5 + nop + /* 4-byte small struct */ + b,n L$smst4 + nop + /* 3-byte small struct */ + b,n L$smst3 + nop + /* 2-byte small struct */ + b,n L$smst2 + nop + /* 1-byte small struct */ + b,n L$smst1 + nop + /* void */ + b,n L$done + nop + /* int */ + b L$done + std %ret0, 0(%r20) + /* float */ + b L$done + fstw %fr4R, 0(%r20) + /* double */ + b L$done + fstd %fr4, 0(%r20) + /* long double */ + b,n L$longdouble + nop + /* unsigned int8 */ + b L$done + std %ret0, 0(%r20) + /* signed int8 */ + b L$done + std %ret0, 0(%r20) + /* unsigned int16 */ + b L$done + std %ret0, 0(%r20) + /* signed int16 */ + b L$done + std %ret0, 0(%r20) + /* unsigned int32 */ + b L$done + std %ret0, 0(%r20) + /* signed int32 */ + b L$done + std %ret0, 0(%r20) + /* unsigned int64 */ + b L$done + std %ret0, 0(%r20) + /* signed int64 */ + b L$done + std %ret0, 0(%r20) + /* large struct */ + b,n L$done + nop + /* pointer */ + b L$done + std %ret0, 0(%r20) + /* complex */ + b,n L$done + nop + +L$longdouble + std %ret0, 0(%r20) + b L$done + std %ret1, 8(%r20) + + /* We need to copy byte-by-byte the exact number bytes + in the struct to avoid clobbering other data. */ +L$smst1 + extrd,u %ret0, 7, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst2 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst3 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst4 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst5 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst6 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst7 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst8 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + b L$done + stb %ret0, 0(%r20) + +L$smst9 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst10 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst11 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst12 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 31, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst13 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 39, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst14 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 47, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst15 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 55, 8, %r22 + b L$done + stb %r22, 0(%r20) + +L$smst16 + extrd,u %ret0, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret0, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb,ma %ret0, 1(%r20) + extrd,u %ret1, 7, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 15, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 23, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 31, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 39, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 47, 8, %r22 + stb,ma %r22, 1(%r20) + extrd,u %ret1, 55, 8, %r22 + stb,ma %r22, 1(%r20) + stb %ret1, 0(%r20) + +L$done + /* all done, restore registers and return */ + copy %r4, %sp + ldd 8(%r3), %r4 + ldd -16(%r3), %rp + bve (%rp) + ldd,mb -48(%sp), %r3 + .exit + .procend +L$FE1 + .size ffi_call_pa64, .-ffi_call_pa64 + + /* void ffi_closure_pa64(void); + Called with closure argument in %r21 */ + + .export ffi_closure_pa64,code + .import ffi_closure_inner_pa64,code + .align 4 +L$FB2 +ffi_closure_pa64 + .proc + .callinfo FRAME=128,CALLS,SAVE_RP,ENTRY_GR=3 + .entry + + std %rp, -16(%sp) + copy %r3, %r1 +L$CFI21 + copy %sp, %r3 +L$CFI22 + std,ma %r1, 128(%sp) +L$CFI23 + + /* Put arguments onto the stack and call ffi_closure_inner. */ + std %r26, -64(%r29) + std %r25, -56(%r29) + std %r24, -48(%r29) + std %r23, -40(%r29) + std %r22, -32(%r29) + std %r21, -24(%r29) + std %r20, -16(%r29) + std %r19, -8(%r29) + + /* Load and save start of argument stack. */ + ldo -64(%r29), %r25 + std %r25, 8(%r3) + + /* Setup arg pointer. */ + ldo -16(%sp), %ret1 + + /* Retrieve closure pointer and real gp. */ + copy %dp, %r26 + bl ffi_closure_inner_pa64, %r2 + ldd 0(%dp), %dp + + /* Retrieve start of argument stack. */ + ldd 8(%r3), %r1 + + /* Restore r3 and op stack. */ + ldd,mb -128(%sp), %r3 + + /* Load return address. */ + ldd -16(%sp), %rp + + /* Load return values from first and second stack slots. */ + ldd 0(%r1), %ret0 + bve (%rp) + ldd 8(%r1), %ret1 + + .exit + .procend + .end +L$FE2: + .size ffi_closure_pa64, .-ffi_closure_pa64 + + .section .eh_frame,"aw",@progbits +L$frame1: + .word L$ECIE1-L$SCIE1 ;# Length of Common Information Entry +L$SCIE1: + .word 0x0 ;# CIE Identifier Tag + .byte 0x3 ;# CIE Version + .stringz "" ;# CIE Augmentation + .uleb128 0x1 ;# CIE Code Alignment Factor + .sleb128 8 ;# CIE Data Alignment Factor + .byte 0x2 ;# CIE RA Column + .byte 0xc ;# DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x0 + .align 8 +L$ECIE1: +L$SFDE1: + .word L$EFDE1-L$ASFDE1 ;# FDE Length +L$ASFDE1: + .word L$ASFDE1-L$frame1 ;# FDE CIE offset + .dword L$FB1 ;# FDE initial location + .dword L$FE1-L$FB1 ;# FDE address range + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI11-L$FB1 + .byte 0x9 ;# DW_CFA_register: r3 in r1 + .uleb128 0x3 + .uleb128 0x1 + .byte 0x11 ;# DW_CFA_offset_extended_sf: r2 at cfa-16 + .uleb128 0x2 + .sleb128 -2 + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI12-L$CFI11 + .byte 0xd ;# DW_CFA_def_cfa_register: r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI13-L$CFI12 + .byte 0x83 ;# DW_CFA_offset: r3 at cfa+0 + .uleb128 0 + .byte 0x84 ;# DW_CFA_offset: r4 at cfa+8 + .uleb128 1 + + .align 8 +L$EFDE1: + +L$SFDE2: + .word L$EFDE2-L$ASFDE2 ;# FDE Length +L$ASFDE2: + .word L$ASFDE2-L$frame1 ;# FDE CIE offset + .dword L$FB2 ;# FDE initial location + .dword L$FE2-L$FB2 ;# FDE address range + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI21-L$FB2 + .byte 0x9 ;# DW_CFA_register: r3 in r1 + .uleb128 0x3 + .uleb128 0x1 + .byte 0x11 ;# DW_CFA_offset_extended_sf: r2 at cfa-16 + .uleb128 0x2 + .sleb128 -2 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI22-L$CFI21 + .byte 0xd ;# DW_CFA_def_cfa_register: r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word L$CFI23-L$CFI22 + .byte 0x83 ;# DW_CFA_offset: r3 at cfa+0 + .uleb128 0 + + .align 8 +L$EFDE2: diff --git a/deps/libffi/src/pa/linux.S b/deps/libffi/src/pa/linux.S new file mode 100644 index 00000000000000..fdd43324769d5f --- /dev/null +++ b/deps/libffi/src/pa/linux.S @@ -0,0 +1,431 @@ +/* ----------------------------------------------------------------------- + linux.S - (c) 2003-2004 Randolph Chung + (c) 2008 Red Hat, Inc. + + HPPA Foreign Function Interface + + 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 RENESAS TECHNOLOGY 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .text + .level 1.1 + .align 4 + + /* void ffi_call_pa32(void (*)(char *, extended_cif *), + extended_cif *ecif, + unsigned bytes, + unsigned flags, + unsigned *rvalue, + void (*fn)(void)); + */ + + .export ffi_call_pa32,code + .import ffi_prep_args_pa32,code + + .type ffi_call_pa32, @function +.LFB1: +ffi_call_pa32: + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 + .entry + stw %rp, -20(%sp) + copy %r3, %r1 +.LCFI11: + + copy %sp, %r3 +.LCFI12: + + /* Setup the stack for calling prep_args... + We want the stack to look like this: + + [ Previous stack ] <- %r3 + + [ 64-bytes register save area ] <- %r4 + + [ Stack space for actual call, passed as ] <- %arg0 + [ arg0 to ffi_prep_args_pa32 ] + + [ Stack for calling prep_args ] <- %sp + */ + + stwm %r1, 64(%sp) + stw %r4, 12(%r3) +.LCFI13: + copy %sp, %r4 + + addl %arg2, %r4, %arg0 /* arg stack */ + stw %arg3, -48(%r3) /* save flags; we need it later */ + + /* Call prep_args: + %arg0(stack) -- set up above + %arg1(ecif) -- same as incoming param + %arg2(bytes) -- same as incoming param */ + bl ffi_prep_args_pa32,%r2 + ldo 64(%arg0), %sp + ldo -64(%sp), %sp + + /* now %sp should point where %arg0 was pointing. */ + + /* Load the arguments that should be passed in registers + The fp args were loaded by the prep_args function. */ + ldw -36(%sp), %arg0 + ldw -40(%sp), %arg1 + ldw -44(%sp), %arg2 + ldw -48(%sp), %arg3 + + /* in case the function is going to return a structure + we need to give it a place to put the result. */ + ldw -52(%r3), %ret0 /* %ret0 <- rvalue */ + ldw -56(%r3), %r22 /* %r22 <- function to call */ + bl $$dyncall, %r31 /* Call the user function */ + copy %r31, %rp + + /* Prepare to store the result; we need to recover flags and rvalue. */ + ldw -48(%r3), %r21 /* r21 <- flags */ + + /* Adjust flags range from [-8, 15] to [0, 23]. */ + addi 8, %r21, %r21 + + blr %r21, %r0 + ldw -52(%r3), %r20 /* r20 <- rvalue */ + + /* Giant jump table */ + /* 8-byte small struct */ + b,n .Lsmst8 + nop + /* 7-byte small struct */ + b,n .Lsmst7 + nop + /* 6-byte small struct */ + b,n .Lsmst6 + nop + /* 5-byte small struct */ + b,n .Lsmst5 + nop + /* 4-byte small struct */ + b,n .Lsmst4 + nop + /* 3-byte small struct */ + b,n .Lsmst3 + nop + /* 2-byte small struct */ + b,n .Lsmst2 + nop + /* 1-byte small struct */ + b .Ldone + stb %ret0, 0(%r20) + /* void */ + b,n .Ldone + nop + /* int */ + b .Ldone + stw %ret0, 0(%r20) + /* float */ + b .Ldone + fstw %fr4L,0(%r20) + /* double */ + b .Ldone + fstd %fr4,0(%r20) + /* long double */ + b .Ldone + fstd %fr4,0(%r20) + /* unsigned int8 */ + b .Ldone + stw %ret0, 0(%r20) + /* sint8 */ + b .Ldone + stw %ret0, 0(%r20) + /* unsigned int16 */ + b .Ldone + stw %ret0, 0(%r20) + /* sint16 */ + b .Ldone + stw %ret0, 0(%r20) + /* unsigned int32 */ + b .Ldone + stw %ret0, 0(%r20) + /* sint32 */ + b .Ldone + stw %ret0, 0(%r20) + /* unsigned int64 */ + b,n .Luint64 + nop + /* signed int64 */ + b,n .Lsint64 + nop + /* large struct */ + b,n .Ldone + nop + /* pointer */ + b .Ldone + stw %ret0, 0(%r20) + /* complex */ + b,n .Ldone + nop + + /* Store the result according to the return type. */ + +.Luint64: +.Lsint64: + stw %ret0, 0(%r20) + b .Ldone + stw %ret1, 4(%r20) + +.Lsmst2: + /* 2-byte structs are returned in ret0 as ????xxyy. */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lsmst3: + /* 3-byte structs are returned in ret0 as ??xxyyzz. */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lsmst4: + /* 4-byte structs are returned in ret0 as wwxxyyzz. */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret0, 0(%r20) + +.Lsmst5: + /* 5 byte values are returned right justified: + ret0 ret1 + 5: ??????aa bbccddee */ + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lsmst6: + /* 6 byte values are returned right justified: + ret0 ret1 + 6: ????aabb ccddeeff */ + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lsmst7: + /* 7 byte values are returned right justified: + ret0 ret1 + 7: ??aabbcc ddeeffgg */ + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + b .Ldone + stb %ret1, 0(%r20) + +.Lsmst8: + /* 8 byte values are returned right justified: + ret0 ret1 + 8: aabbccdd eeffgghh */ + extru %ret0, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret0, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stbs,ma %ret0, 1(%r20) + extru %ret1, 7, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 15, 8, %r22 + stbs,ma %r22, 1(%r20) + extru %ret1, 23, 8, %r22 + stbs,ma %r22, 1(%r20) + stb %ret1, 0(%r20) + +.Ldone: + /* all done, return */ + copy %r4, %sp /* pop arg stack */ + ldw 12(%r3), %r4 + ldwm -64(%sp), %r3 /* .. and pop stack */ + ldw -20(%sp), %rp + bv %r0(%rp) + nop + .exit + .procend +.LFE1: + + /* void ffi_closure_pa32(void); + Called with closure argument in %r19 */ + .export ffi_closure_pa32,code + .import ffi_closure_inner_pa32,code + + .type ffi_closure_pa32, @function +.LFB2: +ffi_closure_pa32: + .proc + .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .entry + + stw %rp, -20(%sp) +.LCFI20: + copy %r3, %r1 +.LCFI21: + copy %sp, %r3 +.LCFI22: + stwm %r1, 64(%sp) + + /* Put arguments onto the stack and call ffi_closure_inner. */ + stw %arg0, -36(%r3) + stw %arg1, -40(%r3) + stw %arg2, -44(%r3) + stw %arg3, -48(%r3) + + /* Retrieve closure pointer and real gp. */ + copy %r19, %arg0 + ldw 8(%r19), %r19 + bl ffi_closure_inner_pa32, %r2 + copy %r3, %arg1 + + ldwm -64(%sp), %r3 + ldw -20(%sp), %rp + ldw -36(%sp), %ret0 + bv %r0(%r2) + ldw -40(%sp), %ret1 + + .exit + .procend +.LFE2: + + .section ".eh_frame",EH_FRAME_FLAGS,@progbits +.Lframe1: + .word .LECIE1-.LSCIE1 ;# Length of Common Information Entry +.LSCIE1: + .word 0x0 ;# CIE Identifier Tag + .byte 0x1 ;# CIE Version +#ifdef __PIC__ + .ascii "zR\0" ;# CIE Augmentation: 'z' - data, 'R' - DW_EH_PE_... data +#else + .ascii "\0" ;# CIE Augmentation +#endif + .uleb128 0x1 ;# CIE Code Alignment Factor + .sleb128 4 ;# CIE Data Alignment Factor + .byte 0x2 ;# CIE RA Column +#ifdef __PIC__ + .uleb128 0x1 ;# Augmentation size + .byte 0x1b ;# FDE Encoding (DW_EH_PE_pcrel|DW_EH_PE_sdata4) +#endif + .byte 0xc ;# DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x0 + .align 4 +.LECIE1: +.LSFDE1: + .word .LEFDE1-.LASFDE1 ;# FDE Length +.LASFDE1: + .word .LASFDE1-.Lframe1 ;# FDE CIE offset +#ifdef __PIC__ + .word .LFB1-. ;# FDE initial location +#else + .word .LFB1 ;# FDE initial location +#endif + .word .LFE1-.LFB1 ;# FDE address range +#ifdef __PIC__ + .uleb128 0x0 ;# Augmentation size: no data +#endif + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI11-.LFB1 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI12-.LCFI11 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI13-.LCFI12 + .byte 0x84 ;# DW_CFA_offset, column 0x4 + .uleb128 0x3 + + .align 4 +.LEFDE1: + +.LSFDE2: + .word .LEFDE2-.LASFDE2 ;# FDE Length +.LASFDE2: + .word .LASFDE2-.Lframe1 ;# FDE CIE offset +#ifdef __PIC__ + .word .LFB2-. ;# FDE initial location +#else + .word .LFB2 ;# FDE initial location +#endif + .word .LFE2-.LFB2 ;# FDE address range +#ifdef __PIC__ + .uleb128 0x0 ;# Augmentation size: no data +#endif + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI21-.LFB2 + .byte 0x83 ;# DW_CFA_offset, column 0x3 + .uleb128 0x0 + .byte 0x11 ;# DW_CFA_offset_extended_sf + .uleb128 0x2 + .sleb128 -5 + + .byte 0x4 ;# DW_CFA_advance_loc4 + .word .LCFI22-.LCFI21 + .byte 0xd ;# DW_CFA_def_cfa_register = r3 + .uleb128 0x3 + + .align 4 +.LEFDE2: + +#if defined(__ELF__) && defined(__linux__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/deps/libffi/src/powerpc/aix.S b/deps/libffi/src/powerpc/aix.S new file mode 100644 index 00000000000000..7ba541595f23c4 --- /dev/null +++ b/deps/libffi/src/powerpc/aix.S @@ -0,0 +1,566 @@ +/* ----------------------------------------------------------------------- + aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc. + based on darwin.S by John Hornkvist + + PowerPC Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + + .set r0,0 + .set r1,1 + .set r2,2 + .set r3,3 + .set r4,4 + .set r5,5 + .set r6,6 + .set r7,7 + .set r8,8 + .set r9,9 + .set r10,10 + .set r11,11 + .set r12,12 + .set r13,13 + .set r14,14 + .set r15,15 + .set r16,16 + .set r17,17 + .set r18,18 + .set r19,19 + .set r20,20 + .set r21,21 + .set r22,22 + .set r23,23 + .set r24,24 + .set r25,25 + .set r26,26 + .set r27,27 + .set r28,28 + .set r29,29 + .set r30,30 + .set r31,31 + .set f0,0 + .set f1,1 + .set f2,2 + .set f3,3 + .set f4,4 + .set f5,5 + .set f6,6 + .set f7,7 + .set f8,8 + .set f9,9 + .set f10,10 + .set f11,11 + .set f12,12 + .set f13,13 + .set f14,14 + .set f15,15 + .set f16,16 + .set f17,17 + .set f18,18 + .set f19,19 + .set f20,20 + .set f21,21 + + .extern .ffi_prep_args + +#define LIBFFI_ASM +#include +#include +#define JUMPTARGET(name) name +#define L(x) x + .file "aix.S" + .toc + + /* void ffi_call_AIX(extended_cif *ecif, unsigned long bytes, + * unsigned int flags, unsigned int *rvalue, + * void (*fn)(), + * void (*prep_args)(extended_cif*, unsigned *const)); + * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args + */ + +.csect .text[PR] + .align 2 + .globl ffi_call_AIX + .globl .ffi_call_AIX +.csect ffi_call_AIX[DS] +ffi_call_AIX: +#ifdef __64BIT__ + .llong .ffi_call_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_AIX: + .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: + /* Save registers we use. */ + mflr r0 + + std r28,-32(r1) + std r29,-24(r1) + std r30,-16(r1) + std r31, -8(r1) + + std r0, 16(r1) +LCFI..0: + mr r28, r1 /* our AP. */ + stdux r1, r1, r4 +LCFI..1: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address. */ + std r2, 40(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + ld r0, 0(r29) + ld r2, 8(r29) + ld r11, 16(r29) + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + ld r3, 40+(1*8)(r1) + ld r4, 40+(2*8)(r1) + ld r5, 40+(3*8)(r1) + ld r6, 40+(4*8)(r1) + nop + ld r7, 40+(5*8)(r1) + ld r8, 40+(6*8)(r1) + ld r9, 40+(7*8)(r1) + ld r10,40+(8*8)(r1) + +L1: + /* Load all the FP registers. */ + bf 6,L2 /* 2f + 0x18 */ + lfd f1,-32-(13*8)(r28) + lfd f2,-32-(12*8)(r28) + lfd f3,-32-(11*8)(r28) + lfd f4,-32-(10*8)(r28) + nop + lfd f5,-32-(9*8)(r28) + lfd f6,-32-(8*8)(r28) + lfd f7,-32-(7*8)(r28) + lfd f8,-32-(6*8)(r28) + nop + lfd f9,-32-(5*8)(r28) + lfd f10,-32-(4*8)(r28) + lfd f11,-32-(3*8)(r28) + lfd f12,-32-(2*8)(r28) + nop + lfd f13,-32-(1*8)(r28) + +L2: + /* Make the call. */ + bctrl + ld r2, 40(r1) + + /* Now, deal with the return value. */ + mtcrf 0x01, r31 + + bt 30, L(done_return_value) + bt 29, L(fp_return_value) + std r3, 0(r30) + + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + mr r1, r28 + ld r0, 16(r28) + ld r28, -32(r1) + mtlr r0 + ld r29, -24(r1) + ld r30, -16(r1) + ld r31, -8(r1) + blr + +L(fp_return_value): + bf 28, L(float_return_value) + stfd f1, 0(r30) + bf 31, L(done_return_value) + stfd f2, 8(r30) + b L(done_return_value) +L(float_return_value): + stfs f1, 0(r30) + b L(done_return_value) +LFE..0: +#else /* ! __64BIT__ */ + + .long .ffi_call_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_AIX: + .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: + /* Save registers we use. */ + mflr r0 + + stw r28,-16(r1) + stw r29,-12(r1) + stw r30, -8(r1) + stw r31, -4(r1) + + stw r0, 8(r1) +LCFI..0: + mr r28, r1 /* out AP. */ + stwux r1, r1, r4 +LCFI..1: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + stw r2, 20(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + lwz r0, 0(r29) + lwz r2, 4(r29) + lwz r11, 8(r29) + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + lwz r3, 20+(1*4)(r1) + lwz r4, 20+(2*4)(r1) + lwz r5, 20+(3*4)(r1) + lwz r6, 20+(4*4)(r1) + nop + lwz r7, 20+(5*4)(r1) + lwz r8, 20+(6*4)(r1) + lwz r9, 20+(7*4)(r1) + lwz r10,20+(8*4)(r1) + +L1: + /* Load all the FP registers. */ + bf 6,L2 /* 2f + 0x18 */ + lfd f1,-16-(13*8)(r28) + lfd f2,-16-(12*8)(r28) + lfd f3,-16-(11*8)(r28) + lfd f4,-16-(10*8)(r28) + nop + lfd f5,-16-(9*8)(r28) + lfd f6,-16-(8*8)(r28) + lfd f7,-16-(7*8)(r28) + lfd f8,-16-(6*8)(r28) + nop + lfd f9,-16-(5*8)(r28) + lfd f10,-16-(4*8)(r28) + lfd f11,-16-(3*8)(r28) + lfd f12,-16-(2*8)(r28) + nop + lfd f13,-16-(1*8)(r28) + +L2: + /* Make the call. */ + bctrl + lwz r2, 20(r1) + + /* Now, deal with the return value. */ + mtcrf 0x01, r31 + + bt 30, L(done_return_value) + bt 29, L(fp_return_value) + stw r3, 0(r30) + bf 28, L(done_return_value) + stw r4, 4(r30) + + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + mr r1, r28 + lwz r0, 8(r28) + lwz r28,-16(r1) + mtlr r0 + lwz r29,-12(r1) + lwz r30, -8(r1) + lwz r31, -4(r1) + blr + +L(fp_return_value): + bf 28, L(float_return_value) + stfd f1, 0(r30) + b L(done_return_value) +L(float_return_value): + stfs f1, 0(r30) + b L(done_return_value) +LFE..0: +#endif + .ef __LINE__ + .long 0 + .byte 0,0,0,1,128,4,0,0 +/* END(ffi_call_AIX) */ + + /* void ffi_call_go_AIX(extended_cif *ecif, unsigned long bytes, + * unsigned int flags, unsigned int *rvalue, + * void (*fn)(), + * void (*prep_args)(extended_cif*, unsigned *const), + * void *closure); + * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args, r9=closure + */ + +.csect .text[PR] + .align 2 + .globl ffi_call_go_AIX + .globl .ffi_call_go_AIX +.csect ffi_call_go_AIX[DS] +ffi_call_go_AIX: +#ifdef __64BIT__ + .llong .ffi_call_go_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_go_AIX: + .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: + /* Save registers we use. */ + mflr r0 + + std r28,-32(r1) + std r29,-24(r1) + std r30,-16(r1) + std r31, -8(r1) + + std r9, 8(r1) /* closure, saved in cr field. */ + std r0, 16(r1) +LCFI..2: + mr r28, r1 /* our AP. */ + stdux r1, r1, r4 +LCFI..3: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + std r2, 40(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + ld r0, 0(r29) + ld r2, 8(r29) + ld r11, 8(r28) /* closure */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + ld r3, 40+(1*8)(r1) + ld r4, 40+(2*8)(r1) + ld r5, 40+(3*8)(r1) + ld r6, 40+(4*8)(r1) + nop + ld r7, 40+(5*8)(r1) + ld r8, 40+(6*8)(r1) + ld r9, 40+(7*8)(r1) + ld r10,40+(8*8)(r1) + + b L1 +LFE..1: +#else /* ! __64BIT__ */ + + .long .ffi_call_go_AIX, TOC[tc0], 0 + .csect .text[PR] +.ffi_call_go_AIX: + .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 + /* Save registers we use. */ +LFB..1: + mflr r0 + + stw r28,-16(r1) + stw r29,-12(r1) + stw r30, -8(r1) + stw r31, -4(r1) + + stw r9, 4(r1) /* closure, saved in cr field. */ + stw r0, 8(r1) +LCFI..2: + mr r28, r1 /* out AP. */ + stwux r1, r1, r4 +LCFI..3: + + /* Save arguments over call... */ + mr r31, r5 /* flags, */ + mr r30, r6 /* rvalue, */ + mr r29, r7 /* function address, */ + stw r2, 20(r1) + + /* Call ffi_prep_args. */ + mr r4, r1 + bl .ffi_prep_args + nop + + /* Now do the call. */ + lwz r0, 0(r29) + lwz r2, 4(r29) + lwz r11, 4(r28) /* closure */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40, r31 + mtctr r0 + /* Load all those argument registers. */ + /* We have set up a nice stack frame, just load it into registers. */ + lwz r3, 20+(1*4)(r1) + lwz r4, 20+(2*4)(r1) + lwz r5, 20+(3*4)(r1) + lwz r6, 20+(4*4)(r1) + nop + lwz r7, 20+(5*4)(r1) + lwz r8, 20+(6*4)(r1) + lwz r9, 20+(7*4)(r1) + lwz r10,20+(8*4)(r1) + + b L1 +LFE..1: +#endif + .ef __LINE__ + .long 0 + .byte 0,0,0,1,128,4,0,0 +/* END(ffi_call_go_AIX) */ + +.csect .text[PR] + .align 2 + .globl ffi_call_DARWIN + .globl .ffi_call_DARWIN +.csect ffi_call_DARWIN[DS] +ffi_call_DARWIN: +#ifdef __64BIT__ + .llong .ffi_call_DARWIN, TOC[tc0], 0 +#else + .long .ffi_call_DARWIN, TOC[tc0], 0 +#endif + .csect .text[PR] +.ffi_call_DARWIN: + blr + .long 0 + .byte 0,0,0,0,0,0,0,0 +/* END(ffi_call_DARWIN) */ + +/* EH frame stuff. */ + +#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */ +#ifdef __64BIT__ +#define PTRSIZE 8 +#define LOG2_PTRSIZE 3 +#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */ +#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */ +#else +#define PTRSIZE 4 +#define LOG2_PTRSIZE 2 +#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */ +#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */ +#endif + .csect _unwind.ro_[RO],4 + .align LOG2_PTRSIZE + .globl _GLOBAL__F_libffi_src_powerpc_aix +_GLOBAL__F_libffi_src_powerpc_aix: +Lframe..1: + .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */ +LSCIE..1: + .vbyte 4,0 /* CIE Identifier Tag */ + .byte 0x3 /* CIE Version */ + .byte "zR" /* CIE Augmentation */ + .byte 0 + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */ + .byte 0x41 /* CIE RA Column */ + .byte 0x1 /* uleb128 0x1; Augmentation size */ + .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */ + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0x1 /* uleb128 0x1; Register r1 */ + .byte 0 /* uleb128 0x0; Offset 0 */ + .align LOG2_PTRSIZE +LECIE..1: +LSFDE..1: + .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */ +LASFDE..1: + .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..0-LFB..0 + .byte 0x11 /* DW_CFA_def_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .byte 0x9f /* DW_CFA_offset Register r31 */ + .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */ + .byte 0x9e /* DW_CFA_offset Register r30 */ + .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */ + .byte 0x9d /* DW_CFA_offset Register r29 */ + .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */ + .byte 0x9c /* DW_CFA_offset Register r28 */ + .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..1-LCFI..0 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0x1c /* uleb128 28; Register r28 */ + .align LOG2_PTRSIZE +LEFDE..1: +LSFDE..2: + .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */ +LASFDE..2: + .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..2-LFB..1 + .byte 0x11 /* DW_CFA_def_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .byte 0x9f /* DW_CFA_offset Register r31 */ + .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */ + .byte 0x9e /* DW_CFA_offset Register r30 */ + .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */ + .byte 0x9d /* DW_CFA_offset Register r29 */ + .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */ + .byte 0x9c /* DW_CFA_offset Register r28 */ + .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..3-LCFI..2 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0x1c /* uleb128 28; Register r28 */ + .align LOG2_PTRSIZE +LEFDE..2: + .vbyte 4,0 /* End of FDEs */ + + .csect .text[PR] + .ref _GLOBAL__F_libffi_src_powerpc_aix /* Prevents garbage collection by AIX linker */ + diff --git a/deps/libffi/src/powerpc/aix_closure.S b/deps/libffi/src/powerpc/aix_closure.S new file mode 100644 index 00000000000000..132c785eddc855 --- /dev/null +++ b/deps/libffi/src/powerpc/aix_closure.S @@ -0,0 +1,694 @@ +/* ----------------------------------------------------------------------- + aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc. + based on darwin_closure.S + + PowerPC Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + + .set r0,0 + .set r1,1 + .set r2,2 + .set r3,3 + .set r4,4 + .set r5,5 + .set r6,6 + .set r7,7 + .set r8,8 + .set r9,9 + .set r10,10 + .set r11,11 + .set r12,12 + .set r13,13 + .set r14,14 + .set r15,15 + .set r16,16 + .set r17,17 + .set r18,18 + .set r19,19 + .set r20,20 + .set r21,21 + .set r22,22 + .set r23,23 + .set r24,24 + .set r25,25 + .set r26,26 + .set r27,27 + .set r28,28 + .set r29,29 + .set r30,30 + .set r31,31 + .set f0,0 + .set f1,1 + .set f2,2 + .set f3,3 + .set f4,4 + .set f5,5 + .set f6,6 + .set f7,7 + .set f8,8 + .set f9,9 + .set f10,10 + .set f11,11 + .set f12,12 + .set f13,13 + .set f14,14 + .set f15,15 + .set f16,16 + .set f17,17 + .set f18,18 + .set f19,19 + .set f20,20 + .set f21,21 + + .extern .ffi_closure_helper_DARWIN + .extern .ffi_go_closure_helper_DARWIN + +#define LIBFFI_ASM +#define JUMPTARGET(name) name +#define L(x) x + .file "aix_closure.S" + .toc +LC..60: + .tc L..60[TC],L..60 + .csect .text[PR] + .align 2 + +.csect .text[PR] + .align 2 + .globl ffi_closure_ASM + .globl .ffi_closure_ASM +.csect ffi_closure_ASM[DS] +ffi_closure_ASM: +#ifdef __64BIT__ + .llong .ffi_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_closure_ASM: + .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + std r3, 48+(0*8)(r1) + std r4, 48+(1*8)(r1) + std r5, 48+(2*8)(r1) + std r6, 48+(3*8)(r1) + mflr r0 + + std r7, 48+(4*8)(r1) + std r8, 48+(5*8)(r1) + std r9, 48+(6*8)(r1) + std r10, 48+(7*8)(r1) + std r0, 16(r1) /* save the return address */ +LCFI..0: + /* 48 Bytes (Linkage Area) */ + /* 64 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 8 Bytes (alignment) */ + /* 240 Bytes */ + + stdu r1, -240(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..1: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 128+(0*8)(r1) + stfd f2, 128+(1*8)(r1) + stfd f3, 128+(2*8)(r1) + stfd f4, 128+(3*8)(r1) + stfd f5, 128+(4*8)(r1) + stfd f6, 128+(5*8)(r1) + stfd f7, 128+(6*8)(r1) + stfd f8, 128+(7*8)(r1) + stfd f9, 128+(8*8)(r1) + stfd f10, 128+(9*8)(r1) + stfd f11, 128+(10*8)(r1) + stfd f12, 128+(11*8)(r1) + stfd f13, 128+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + /* get the context pointer from the trampoline */ + mr r3, r11 + + /* now load up the pointer to the result storage */ + addi r4, r1, 112 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 288 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 128 + + /* make the call */ + bl .ffi_closure_helper_DARWIN + nop + +.Ldoneclosure: + + /* now r3 contains the return type */ + /* so use it to look up in a table */ + /* so we know how to deal with each type */ + + /* look up the proper starting point in table */ + /* by using return type as offset */ + lhz r3, 10(r3) /* load type from return type */ + ld r4, LC..60(2) /* get address of jump table */ + sldi r3, r3, 4 /* now multiply return type by 16 */ + ld r0, 240+16(r1) /* load return address */ + add r3, r3, r4 /* add contents of table to table address */ + mtctr r3 + bctr /* jump to it */ + +/* Each fragment must be exactly 16 bytes long (4 instructions). + Align to 16 byte boundary for cache and dispatch efficiency. */ + .align 4 + +L..60: +/* case FFI_TYPE_VOID */ + mtlr r0 + addi r1, r1, 240 + blr + nop + +/* case FFI_TYPE_INT */ + lwa r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_FLOAT */ + lfs f1, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_DOUBLE */ + lfd f1, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_LONGDOUBLE */ + lfd f1, 112+0(r1) + mtlr r0 + lfd f2, 112+8(r1) + b L..finish + +/* case FFI_TYPE_UINT8 */ + lbz r3, 112+7(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT8 */ + lbz r3, 112+7(r1) + mtlr r0 + extsb r3, r3 + b L..finish + +/* case FFI_TYPE_UINT16 */ + lhz r3, 112+6(r1) + mtlr r0 +L..finish: + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT16 */ + lha r3, 112+6(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_UINT32 */ + lwz r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT32 */ + lwa r3, 112+4(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_UINT64 */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_SINT64 */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr + +/* case FFI_TYPE_STRUCT */ + mtlr r0 + addi r1, r1, 240 + blr + nop + +/* case FFI_TYPE_POINTER */ + ld r3, 112+0(r1) + mtlr r0 + addi r1, r1, 240 + blr +LFE..0: + +#else /* ! __64BIT__ */ + + .long .ffi_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_closure_ASM: + .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0 + .bf __LINE__ + .line 1 +LFB..0: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + stw r3, 24+(0*4)(r1) + stw r4, 24+(1*4)(r1) + stw r5, 24+(2*4)(r1) + stw r6, 24+(3*4)(r1) + mflr r0 + + stw r7, 24+(4*4)(r1) + stw r8, 24+(5*4)(r1) + stw r9, 24+(6*4)(r1) + stw r10, 24+(7*4)(r1) + stw r0, 8(r1) +LCFI..0: + /* 24 Bytes (Linkage Area) */ + /* 32 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 176 Bytes */ + + stwu r1, -176(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..1: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 72+(0*8)(r1) + stfd f2, 72+(1*8)(r1) + stfd f3, 72+(2*8)(r1) + stfd f4, 72+(3*8)(r1) + stfd f5, 72+(4*8)(r1) + stfd f6, 72+(5*8)(r1) + stfd f7, 72+(6*8)(r1) + stfd f8, 72+(7*8)(r1) + stfd f9, 72+(8*8)(r1) + stfd f10, 72+(9*8)(r1) + stfd f11, 72+(10*8)(r1) + stfd f12, 72+(11*8)(r1) + stfd f13, 72+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + /* get the context pointer from the trampoline */ + mr r3, r11 + + /* now load up the pointer to the result storage */ + addi r4, r1, 56 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 200 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 72 + + /* make the call */ + bl .ffi_closure_helper_DARWIN + nop + +.Ldoneclosure: + + /* now r3 contains the return type */ + /* so use it to look up in a table */ + /* so we know how to deal with each type */ + + /* look up the proper starting point in table */ + /* by using return type as offset */ + lhz r3, 6(r3) /* load type from return type */ + lwz r4, LC..60(2) /* get address of jump table */ + slwi r3, r3, 4 /* now multiply return type by 16 */ + lwz r0, 176+8(r1) /* load return address */ + add r3, r3, r4 /* add contents of table to table address */ + mtctr r3 + bctr /* jump to it */ + +/* Each fragment must be exactly 16 bytes long (4 instructions). + Align to 16 byte boundary for cache and dispatch efficiency. */ + .align 4 + +L..60: +/* case FFI_TYPE_VOID */ + mtlr r0 + addi r1, r1, 176 + blr + nop + +/* case FFI_TYPE_INT */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_FLOAT */ + lfs f1, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_DOUBLE */ + lfd f1, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_LONGDOUBLE */ + lfd f1, 56+0(r1) + mtlr r0 + lfd f2, 56+8(r1) + b L..finish + +/* case FFI_TYPE_UINT8 */ + lbz r3, 56+3(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT8 */ + lbz r3, 56+3(r1) + mtlr r0 + extsb r3, r3 + b L..finish + +/* case FFI_TYPE_UINT16 */ + lhz r3, 56+2(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT16 */ + lha r3, 56+2(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_UINT32 */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_SINT32 */ + lwz r3, 56+0(r1) + mtlr r0 + addi r1, r1, 176 + blr + +/* case FFI_TYPE_UINT64 */ + lwz r3, 56+0(r1) + mtlr r0 + lwz r4, 56+4(r1) + b L..finish + +/* case FFI_TYPE_SINT64 */ + lwz r3, 56+0(r1) + mtlr r0 + lwz r4, 56+4(r1) + b L..finish + +/* case FFI_TYPE_STRUCT */ + mtlr r0 + addi r1, r1, 176 + blr + nop + +/* case FFI_TYPE_POINTER */ + lwz r3, 56+0(r1) + mtlr r0 +L..finish: + addi r1, r1, 176 + blr +LFE..0: +#endif + .ef __LINE__ +/* END(ffi_closure_ASM) */ + + +.csect .text[PR] + .align 2 + .globl ffi_go_closure_ASM + .globl .ffi_go_closure_ASM +.csect ffi_go_closure_ASM[DS] +ffi_go_closure_ASM: +#ifdef __64BIT__ + .llong .ffi_go_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_go_closure_ASM: + .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + std r3, 48+(0*8)(r1) + std r4, 48+(1*8)(r1) + std r5, 48+(2*8)(r1) + std r6, 48+(3*8)(r1) + mflr r0 + + std r7, 48+(4*8)(r1) + std r8, 48+(5*8)(r1) + std r9, 48+(6*8)(r1) + std r10, 48+(7*8)(r1) + std r0, 16(r1) /* save the return address */ +LCFI..2: + /* 48 Bytes (Linkage Area) */ + /* 64 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 8 Bytes (alignment) */ + /* 240 Bytes */ + + stdu r1, -240(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..3: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 128+(0*8)(r1) + stfd f2, 128+(1*8)(r1) + stfd f3, 128+(2*8)(r1) + stfd f4, 128+(3*8)(r1) + stfd f5, 128+(4*8)(r1) + stfd f6, 128+(5*8)(r1) + stfd f7, 128+(6*8)(r1) + stfd f8, 128+(7*8)(r1) + stfd f9, 128+(8*8)(r1) + stfd f10, 128+(9*8)(r1) + stfd f11, 128+(10*8)(r1) + stfd f12, 128+(11*8)(r1) + stfd f13, 128+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + mr r3, r11 /* go closure */ + + /* now load up the pointer to the result storage */ + addi r4, r1, 112 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 288 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 128 + + /* make the call */ + bl .ffi_go_closure_helper_DARWIN + nop + + b .Ldoneclosure +LFE..1: + +#else /* ! __64BIT__ */ + + .long .ffi_go_closure_ASM, TOC[tc0], 0 + .csect .text[PR] +.ffi_go_closure_ASM: + .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1 + .bf __LINE__ + .line 1 +LFB..1: +/* we want to build up an area for the parameters passed */ +/* in registers (both floating point and integer) */ + + /* we store gpr 3 to gpr 10 (aligned to 4) + in the parents outgoing area */ + stw r3, 24+(0*4)(r1) + stw r4, 24+(1*4)(r1) + stw r5, 24+(2*4)(r1) + stw r6, 24+(3*4)(r1) + mflr r0 + + stw r7, 24+(4*4)(r1) + stw r8, 24+(5*4)(r1) + stw r9, 24+(6*4)(r1) + stw r10, 24+(7*4)(r1) + stw r0, 8(r1) +LCFI..2: + /* 24 Bytes (Linkage Area) */ + /* 32 Bytes (params) */ + /* 16 Bytes (result) */ + /* 104 Bytes (13*8 from FPR) */ + /* 176 Bytes */ + + stwu r1, -176(r1) /* skip over caller save area + keep stack aligned to 16 */ +LCFI..3: + + /* next save fpr 1 to fpr 13 (aligned to 8) */ + stfd f1, 72+(0*8)(r1) + stfd f2, 72+(1*8)(r1) + stfd f3, 72+(2*8)(r1) + stfd f4, 72+(3*8)(r1) + stfd f5, 72+(4*8)(r1) + stfd f6, 72+(5*8)(r1) + stfd f7, 72+(6*8)(r1) + stfd f8, 72+(7*8)(r1) + stfd f9, 72+(8*8)(r1) + stfd f10, 72+(9*8)(r1) + stfd f11, 72+(10*8)(r1) + stfd f12, 72+(11*8)(r1) + stfd f13, 72+(12*8)(r1) + + /* set up registers for the routine that actually does the work */ + mr r3, 11 /* go closure */ + + /* now load up the pointer to the result storage */ + addi r4, r1, 56 + + /* now load up the pointer to the saved gpr registers */ + addi r5, r1, 200 + + /* now load up the pointer to the saved fpr registers */ + addi r6, r1, 72 + + /* make the call */ + bl .ffi_go_closure_helper_DARWIN + nop + + b .Ldoneclosure +LFE..1: +#endif + .ef __LINE__ +/* END(ffi_go_closure_ASM) */ + +/* EH frame stuff. */ + +#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */ +#ifdef __64BIT__ +#define PTRSIZE 8 +#define LOG2_PTRSIZE 3 +#define CFA_OFFSET 0xf0,0x01 /* LEB128 240 */ +#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */ +#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */ +#else +#define PTRSIZE 4 +#define LOG2_PTRSIZE 2 +#define CFA_OFFSET 0xb0,0x01 /* LEB128 176 */ +#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */ +#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */ +#endif + + .csect _unwind.ro_[RO],4 + .align LOG2_PTRSIZE + .globl _GLOBAL__F_libffi_src_powerpc_aix_closure +_GLOBAL__F_libffi_src_powerpc_aix_closure: +Lframe..1: + .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */ +LSCIE..1: + .vbyte 4,0 /* CIE Identifier Tag */ + .byte 0x3 /* CIE Version */ + .byte "zR" /* CIE Augmentation */ + .byte 0 + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */ + .byte LR_REGNO /* CIE RA Column */ + .byte 0x1 /* uleb128 0x1; Augmentation size */ + .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */ + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0x1 /* uleb128 0x1; Register r1 */ + .byte 0 /* uleb128 0x0; Offset 0 */ + .align LOG2_PTRSIZE +LECIE..1: +LSFDE..1: + .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */ +LASFDE..1: + .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..1-LCFI..0 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte CFA_OFFSET /* uleb128 176/240 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..0-LFB..0 + .byte 0x11 /* DW_CFA_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .align LOG2_PTRSIZE +LEFDE..1: +LSFDE..2: + .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */ +LASFDE..2: + .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */ + .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */ + .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */ + .byte 0 /* uleb128 0x0; Augmentation size */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..3-LCFI..2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte CFA_OFFSET /* uleb128 176/240 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .vbyte 4,LCFI..2-LFB..1 + .byte 0x11 /* DW_CFA_offset_extended_sf */ + .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */ + .byte 0x7e /* leb128 -2; Offset -2 (8/16) */ + .align LOG2_PTRSIZE +LEFDE..2: + .vbyte 4,0 /* End of FDEs */ + + .csect .text[PR] + .ref _GLOBAL__F_libffi_src_powerpc_aix_closure /* Prevents garbage collection by AIX linker */ + diff --git a/deps/libffi/src/powerpc/asm.h b/deps/libffi/src/powerpc/asm.h new file mode 100644 index 00000000000000..27b22f670a2328 --- /dev/null +++ b/deps/libffi/src/powerpc/asm.h @@ -0,0 +1,125 @@ +/* ----------------------------------------------------------------------- + asm.h - Copyright (c) 1998 Geoffrey Keating + + PowerPC Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define ASM_GLOBAL_DIRECTIVE .globl + + +#define C_SYMBOL_NAME(name) name +/* Macro for a label. */ +#ifdef __STDC__ +#define C_LABEL(name) name##: +#else +#define C_LABEL(name) name/**/: +#endif + +/* This seems to always be the case on PPC. */ +#define ALIGNARG(log2) log2 +/* For ELF we need the `.type' directive to make shared libs work right. */ +#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; +#define ASM_SIZE_DIRECTIVE(name) .size name,.-name + +/* If compiled for profiling, call `_mcount' at the start of each function. */ +#ifdef PROF +/* The mcount code relies on the return address being on the stack + to locate our caller and so it can restore it; so store one just + for its benefit. */ +#ifdef PIC +#define CALL_MCOUNT \ + .pushsection; \ + .section ".data"; \ + .align ALIGNARG(2); \ +0:.long 0; \ + .previous; \ + mflr %r0; \ + stw %r0,4(%r1); \ + bl _GLOBAL_OFFSET_TABLE_@local-4; \ + mflr %r11; \ + lwz %r0,0b@got(%r11); \ + bl JUMPTARGET(_mcount); +#else /* PIC */ +#define CALL_MCOUNT \ + .section ".data"; \ + .align ALIGNARG(2); \ +0:.long 0; \ + .previous; \ + mflr %r0; \ + lis %r11,0b@ha; \ + stw %r0,4(%r1); \ + addi %r0,%r11,0b@l; \ + bl JUMPTARGET(_mcount); +#endif /* PIC */ +#else /* PROF */ +#define CALL_MCOUNT /* Do nothing. */ +#endif /* PROF */ + +#define ENTRY(name) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(2); \ + C_LABEL(name) \ + CALL_MCOUNT + +#define EALIGN_W_0 /* No words to insert. */ +#define EALIGN_W_1 nop +#define EALIGN_W_2 nop;nop +#define EALIGN_W_3 nop;nop;nop +#define EALIGN_W_4 EALIGN_W_3;nop +#define EALIGN_W_5 EALIGN_W_4;nop +#define EALIGN_W_6 EALIGN_W_5;nop +#define EALIGN_W_7 EALIGN_W_6;nop + +/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes + past a 2^align boundary. */ +#ifdef PROF +#define EFFI_ALIGN(name, alignt, words) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(2); \ + C_LABEL(name) \ + CALL_MCOUNT \ + b 0f; \ + .align ALIGNARG(alignt); \ + EALIGN_W_##words; \ + 0: +#else /* PROF */ +#define EFFI_ALIGN(name, alignt, words) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(alignt); \ + EALIGN_W_##words; \ + C_LABEL(name) +#endif + +#define END(name) \ + ASM_SIZE_DIRECTIVE(name) + +#ifdef PIC +#define JUMPTARGET(name) name##@plt +#else +#define JUMPTARGET(name) name +#endif + +/* Local labels stripped out by the linker. */ +#define L(x) .L##x diff --git a/deps/libffi/src/powerpc/darwin.S b/deps/libffi/src/powerpc/darwin.S new file mode 100644 index 00000000000000..066eb82efe9381 --- /dev/null +++ b/deps/libffi/src/powerpc/darwin.S @@ -0,0 +1,378 @@ +/* ----------------------------------------------------------------------- + darwin.S - Copyright (c) 2000 John Hornkvist + Copyright (c) 2004, 2010 Free Software Foundation, Inc. + + PowerPC Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#if defined(__ppc64__) +#define MODE_CHOICE(x, y) y +#else +#define MODE_CHOICE(x, y) x +#endif + +#define machine_choice MODE_CHOICE(ppc7400,ppc64) + +; Define some pseudo-opcodes for size-independent load & store of GPRs ... +#define lgu MODE_CHOICE(lwzu, ldu) +#define lg MODE_CHOICE(lwz,ld) +#define sg MODE_CHOICE(stw,std) +#define sgu MODE_CHOICE(stwu,stdu) +#define sgux MODE_CHOICE(stwux,stdux) + +; ... and the size of GPRs and their storage indicator. +#define GPR_BYTES MODE_CHOICE(4,8) +#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ +#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ + +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. +#define LINKAGE_SIZE MODE_CHOICE(24,48) +#define PARAM_AREA MODE_CHOICE(32,64) +#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ + +/* If there is any FP stuff we make space for all of the regs. */ +#define SAVED_FPR_COUNT 13 +#define FPR_SIZE 8 +#define RESULT_BYTES 16 + +/* This should be kept in step with the same value in ffi_darwin.c. */ +#define ASM_NEEDS_REGISTERS 4 +#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES) + +#include +#include + +#define JUMPTARGET(name) name +#define L(x) x + + .text + .align 2 + .globl _ffi_prep_args + + .align 2 + .globl _ffi_call_DARWIN + + /* We arrive here with: + r3 = ptr to extended cif. + r4 = -bytes. + r5 = cif flags. + r6 = ptr to return value. + r7 = fn pointer (user func). + r8 = fn pointer (ffi_prep_args). + r9 = ffi_type* for the ret val. */ + +_ffi_call_DARWIN: +Lstartcode: + mr r12,r8 /* We only need r12 until the call, + so it does not have to be saved. */ +LFB1: + /* Save the old stack pointer as AP. */ + mr r8,r1 +LCFI0: + + /* Save the retval type in parents frame. */ + sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8) + + /* Allocate the stack space we need. */ + sgux r1,r1,r4 + + /* Save registers we use. */ + mflr r9 + sg r9,SAVED_LR_OFFSET(r8) + + sg r28,-(4 * GPR_BYTES)(r8) + sg r29,-(3 * GPR_BYTES)(r8) + sg r30,-(2 * GPR_BYTES)(r8) + sg r31,-( GPR_BYTES)(r8) + +#if !defined(POWERPC_DARWIN) + /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ + sg r2,(5 * GPR_BYTES)(r1) +#endif + +LCFI1: + + /* Save arguments over call. */ + mr r31,r5 /* flags, */ + mr r30,r6 /* rvalue, */ + mr r29,r7 /* function address, */ + mr r28,r8 /* our AP. */ +LCFI2: + /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */ + mr r4,r1 + li r9,0 + + mtctr r12 /* r12 holds address of _ffi_prep_args. */ + bctrl + +#if !defined(POWERPC_DARWIN) + /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */ + lg r2,(5 * GPR_BYTES)(r1) +#endif + /* Now do the call. + Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40,r31 + /* Get the address to call into CTR. */ + mtctr r29 + /* Load all those argument registers. + We have set up a nice stack frame, just load it into registers. */ + lg r3, (LINKAGE_SIZE )(r1) + lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1) + lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1) + lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1) + nop + lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1) + lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1) + lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1) + lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1) + +L1: + /* ... Load all the FP registers. */ + bf 6,L2 /* No floats to load. */ + lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) + lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) + lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) + lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) + nop + lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) + lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) + lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) + lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) + nop + lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) + lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) + lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) + lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) + nop + lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) + +L2: + mr r12,r29 /* Put the target address in r12 as specified. */ + mtctr r12 + nop + nop + + /* Make the call. */ + bctrl + + /* Now, deal with the return value. */ + + /* m64 structure returns can occupy the same set of registers as + would be used to pass such a structure as arg0 - so take care + not to step on any possibly hot regs. */ + + /* Get the flags.. */ + mtcrf 0x03,r31 ; we need c6 & cr7 now. + ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref. + bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING + bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT + + /* OK, so we have a struct. */ +#if defined(__ppc64__) + bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case + + /* OK, we have to map the return back to a mem struct. + We are about to trample the parents param area, so recover the + return type. r29 is free, since the call is done. */ + lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28) + + sg r3, (LINKAGE_SIZE )(r28) + sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28) + sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28) + sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28) + nop + sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28) + sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28) + sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28) + sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) + /* OK, so do the block move - we trust that memcpy will not trample + the fprs... */ + mr r3,r30 ; dest + addi r4,r28,LINKAGE_SIZE ; source + /* The size is a size_t, should be long. */ + lg r5,0(r29) + /* Figure out small structs */ + cmpi 0,r5,4 + bgt L3 ; 1, 2 and 4 bytes have special rules. + cmpi 0,r5,3 + beq L3 ; not 3 + addi r4,r4,8 + subf r4,r5,r4 +L3: + bl _memcpy + + /* ... do we need the FP registers? - recover the flags.. */ + mtcrf 0x03,r31 ; we need c6 & cr7 now. + bf 29,L(done_return_value) /* No floats in the struct. */ + stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28) + stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28) + stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28) + stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28) + nop + stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28) + stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28) + stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28) + stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28) + nop + stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28) + stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28) + stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28) + stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28) + nop + stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28) + + mr r3,r29 ; ffi_type * + mr r4,r30 ; dest + addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs + xor r6,r6,r6 + sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28) + addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter. + bl _darwin64_struct_floats_to_mem + + b L(done_return_value) +#else + stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes. +#endif + b L(done_return_value) + +L(fp_return_value): + /* Do we have long double to store? */ + bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS + stfd f1,0(r30) + stfd f2,FPR_SIZE(r30) + b L(done_return_value) + +L(fd_return_value): + /* Do we have double to store? */ + bf 28,L(float_return_value) + stfd f1,0(r30) + b L(done_return_value) + +L(float_return_value): + /* We only have a float to store. */ + stfs f1,0(r30) + b L(done_return_value) + +L(scalar_return_value): + bt 29,L(fp_return_value) ; FLAG_RETURNS_FP + ; ffi_arg is defined as unsigned long. + sg r3,0(r30) ; Save the reg. + bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS + +#if defined(__ppc64__) +L(maybe_return_128): + std r3,0(r30) + bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS + std r4,8(r30) +#else + stw r4,4(r30) +#endif + + /* Fall through. */ + /* We want this at the end to simplify eh epilog computation. */ + +L(done_return_value): + /* Restore the registers we used and return. */ + lg r29,SAVED_LR_OFFSET(r28) + ; epilog + lg r31,-(1 * GPR_BYTES)(r28) + mtlr r29 + lg r30,-(2 * GPR_BYTES)(r28) + lg r29,-(3 * GPR_BYTES)(r28) + lg r28,-(4 * GPR_BYTES)(r28) + lg r1,0(r1) + blr +LFE1: + .align 1 +/* END(_ffi_call_DARWIN) */ + +/* Provide a null definition of _ffi_call_AIX. */ + .text + .globl _ffi_call_AIX + .align 2 +_ffi_call_AIX: + blr +/* END(_ffi_call_AIX) */ + +/* EH stuff. */ + +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) + + .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$0,LECIE1-LSCIE1 + .long L$set$0 ; Length of Common Information Entry +LSCIE1: + .long 0x0 ; CIE Identifier Tag + .byte 0x1 ; CIE Version + .ascii "zR\0" ; CIE Augmentation + .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor + .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor + .byte 0x41 ; CIE RA Column + .byte 0x1 ; uleb128 0x1; Augmentation size + .byte 0x10 ; FDE Encoding (pcrel) + .byte 0xc ; DW_CFA_def_cfa + .byte 0x1 ; uleb128 0x1 + .byte 0x0 ; uleb128 0x0 + .align LOG2_GPR_BYTES +LECIE1: + + .globl _ffi_call_DARWIN.eh +_ffi_call_DARWIN.eh: +LSFDE1: + .set L$set$1,LEFDE1-LASFDE1 + .long L$set$1 ; FDE Length +LASFDE1: + .long LASFDE1-EH_frame1 ; FDE CIE offset + .g_long Lstartcode-. ; FDE initial location + .set L$set$3,LFE1-Lstartcode + .g_long L$set$3 ; FDE address range + .byte 0x0 ; uleb128 0x0; Augmentation size + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$4,LCFI0-Lstartcode + .long L$set$4 + .byte 0xd ; DW_CFA_def_cfa_register + .byte 0x08 ; uleb128 0x08 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$5,LCFI1-LCFI0 + .long L$set$5 + .byte 0x11 ; DW_CFA_offset_extended_sf + .byte 0x41 ; uleb128 0x41 + .byte 0x7e ; sleb128 -2 + .byte 0x9f ; DW_CFA_offset, column 0x1f + .byte 0x1 ; uleb128 0x1 + .byte 0x9e ; DW_CFA_offset, column 0x1e + .byte 0x2 ; uleb128 0x2 + .byte 0x9d ; DW_CFA_offset, column 0x1d + .byte 0x3 ; uleb128 0x3 + .byte 0x9c ; DW_CFA_offset, column 0x1c + .byte 0x4 ; uleb128 0x4 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$6,LCFI2-LCFI1 + .long L$set$6 + .byte 0xd ; DW_CFA_def_cfa_register + .byte 0x1c ; uleb128 0x1c + .align LOG2_GPR_BYTES +LEFDE1: + .align 1 + diff --git a/deps/libffi/src/powerpc/darwin_closure.S b/deps/libffi/src/powerpc/darwin_closure.S new file mode 100644 index 00000000000000..3121e6ac26d319 --- /dev/null +++ b/deps/libffi/src/powerpc/darwin_closure.S @@ -0,0 +1,571 @@ +/* ----------------------------------------------------------------------- + darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, + Free Software Foundation, Inc. + based on ppc_closure.S + + PowerPC Assembly glue. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#define L(x) x + +#if defined(__ppc64__) +#define MODE_CHOICE(x, y) y +#else +#define MODE_CHOICE(x, y) x +#endif + +#define machine_choice MODE_CHOICE(ppc7400,ppc64) + +; Define some pseudo-opcodes for size-independent load & store of GPRs ... +#define lgu MODE_CHOICE(lwzu, ldu) +#define lg MODE_CHOICE(lwz,ld) +#define sg MODE_CHOICE(stw,std) +#define sgu MODE_CHOICE(stwu,stdu) + +; ... and the size of GPRs and their storage indicator. +#define GPR_BYTES MODE_CHOICE(4,8) +#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ +#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ + +; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04. +#define LINKAGE_SIZE MODE_CHOICE(24,48) +#define PARAM_AREA MODE_CHOICE(32,64) + +#define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */ +#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */ + +/* WARNING: if ffi_type is changed... here be monsters. + Offsets of items within the result type. */ +#define FFI_TYPE_TYPE MODE_CHOICE(6,10) +#define FFI_TYPE_ELEM MODE_CHOICE(8,16) + +#define SAVED_FPR_COUNT 13 +#define FPR_SIZE 8 +/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */ +#define RESULT_BYTES MODE_CHOICE(16,176) + +; The whole stack frame **MUST** be 16byte-aligned. +#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL) +#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)) + +#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE) +#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA) + +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 +; We no longer need the pic symbol stub for Darwin >= 9. +#define BLCLS_HELP _ffi_closure_helper_DARWIN +#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p +#define PASS_STR_FLOATS _darwin64_pass_struct_floats +#undef WANT_STUB +#else +#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub +#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub +#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub +#define WANT_STUB +#endif + +/* m32/m64 + + The stack layout looks like this: + + | Additional params... | | Higher address + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | + | Reserved 2*4/8 | | + |--------------------------------------------| | + | Space for callee`s LR 4/8 | | + |--------------------------------------------| | + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | + | Current backchain pointer 4/8 |-/ Parent`s frame. + |--------------------------------------------| <+ <<< on entry to + | Result Bytes 16/176 | | + |--------------------------------------------| | + ~ padding to 16-byte alignment ~ ~ + |--------------------------------------------| | + | NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 13*8 | | + |--------------------------------------------| | + | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved [compiler,binder] 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callees LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< call. + +*/ + + .file "darwin_closure.S" + + .machine machine_choice + + .text + .globl _ffi_closure_ASM + .align LOG2_GPR_BYTES +_ffi_closure_ASM: +LFB1: +Lstartcode: + mflr r0 /* extract return address */ + sg r0,SAVED_LR_OFFSET(r1) /* save the return address */ +LCFI0: + sgu r1,-SAVE_SIZE(r1) /* skip over caller save area + keep stack aligned to 16. */ +LCFI1: + /* We want to build up an area for the parameters passed + in registers. (both floating point and integer) */ + + /* Put gpr 3 to gpr 10 in the parents outgoing area... + ... the remainder of any params that overflowed the regs will + follow here. */ + sg r3, (PARENT_PARM_BASE )(r1) + sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1) + sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1) + sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1) + sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1) + sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1) + sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1) + sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1) + + /* We save fpr 1 to fpr 14 in our own save frame. */ + stfd f1, (FP_SAVE_BASE )(r1) + stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) + stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) + stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) + stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) + stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) + stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) + stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) + stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) + stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) + stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) + stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) + stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) + + /* Set up registers for the routine that actually does the work + get the context pointer from the trampoline. */ + mr r3,r11 + + /* Now load up the pointer to the result storage. */ + addi r4,r1,(SAVE_SIZE-RESULT_BYTES) + + /* Now load up the pointer to the saved gpr registers. */ + addi r5,r1,PARENT_PARM_BASE + + /* Now load up the pointer to the saved fpr registers. */ + addi r6,r1,FP_SAVE_BASE + + /* Make the call. */ + bl BLCLS_HELP + + /* r3 contains the rtype pointer... save it since we will need + it later. */ + sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type + lg r0,0(r3) ; size => r0 + lhz r3,FFI_TYPE_TYPE(r3) ; type => r3 + + /* The helper will have intercepted structure returns and inserted + the caller`s destination address for structs returned by ref. */ + + /* r3 contains the return type so use it to look up in a table + so we know how to deal with each type. */ + + addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */ + bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */ + mflr r4 /* Move to r4. */ + slwi r3,r3,4 /* Now multiply return type by 16. */ + add r3,r3,r4 /* Add contents of table to table address. */ + mtctr r3 + bctr /* Jump to it. */ +LFE1: +/* Each of the ret_typeX code fragments has to be exactly 16 bytes long + (4 instructions). For cache effectiveness we align to a 16 byte boundary + first. */ + + .align 4 + + nop + nop + nop +Lget_ret_type0_addr: + blrl + +/* case FFI_TYPE_VOID */ +Lret_type0: + b Lfinish + nop + nop + nop + +/* case FFI_TYPE_INT */ +Lret_type1: + lg r3,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_FLOAT */ +Lret_type2: + lfs f1,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_DOUBLE */ +Lret_type3: + lfd f1,0(r5) + b Lfinish + nop + nop + +/* case FFI_TYPE_LONGDOUBLE */ +Lret_type4: + lfd f1,0(r5) + lfd f2,8(r5) + b Lfinish + nop + +/* case FFI_TYPE_UINT8 */ +Lret_type5: +#if defined(__ppc64__) + lbz r3,7(r5) +#else + lbz r3,3(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT8 */ +Lret_type6: +#if defined(__ppc64__) + lbz r3,7(r5) +#else + lbz r3,3(r5) +#endif + extsb r3,r3 + b Lfinish + nop + +/* case FFI_TYPE_UINT16 */ +Lret_type7: +#if defined(__ppc64__) + lhz r3,6(r5) +#else + lhz r3,2(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT16 */ +Lret_type8: +#if defined(__ppc64__) + lha r3,6(r5) +#else + lha r3,2(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_UINT32 */ +Lret_type9: +#if defined(__ppc64__) + lwz r3,4(r5) +#else + lwz r3,0(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_SINT32 */ +Lret_type10: +#if defined(__ppc64__) + lwz r3,4(r5) +#else + lwz r3,0(r5) +#endif + b Lfinish + nop + nop + +/* case FFI_TYPE_UINT64 */ +Lret_type11: +#if defined(__ppc64__) + lg r3,0(r5) + b Lfinish + nop +#else + lwz r3,0(r5) + lwz r4,4(r5) + b Lfinish +#endif + nop + +/* case FFI_TYPE_SINT64 */ +Lret_type12: +#if defined(__ppc64__) + lg r3,0(r5) + b Lfinish + nop +#else + lwz r3,0(r5) + lwz r4,4(r5) + b Lfinish +#endif + nop + +/* case FFI_TYPE_STRUCT */ +Lret_type13: +#if defined(__ppc64__) + lg r3,0(r5) ; we need at least this... + cmpi 0,r0,4 + bgt Lstructend ; not a special small case + b Lsmallstruct ; see if we need more. +#else + cmpwi 0,r0,4 + bgt Lfinish ; not by value + lg r3,0(r5) + b Lfinish +#endif +/* case FFI_TYPE_POINTER */ +Lret_type14: + lg r3,0(r5) + b Lfinish + nop + nop + +#if defined(__ppc64__) +Lsmallstruct: + beq Lfour ; continuation of Lret13. + cmpi 0,r0,3 + beq Lfinish ; don`t adjust this - can`t be any floats here... + srdi r3,r3,48 + cmpi 0,r0,2 + beq Lfinish ; .. or here .. + srdi r3,r3,8 + b Lfinish ; .. or here. + +Lfour: + lg r6,LINKAGE_SIZE(r1) ; get the result type + lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer + lg r6,0(r6) ; first element + lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type + cmpi 0,r0,2 ; FFI_TYPE_FLOAT + bne Lfourint + lfs f1,0(r5) ; just one float in the struct. + b Lfinish + +Lfourint: + srdi r3,r3,32 ; four bytes. + b Lfinish + +Lstructend: + lg r3,LINKAGE_SIZE(r1) ; get the result type + bl STRUCT_RETVALUE_P + cmpi 0,r3,0 + beq Lfinish ; nope. + /* Recover a pointer to the results. */ + addi r11,r1,(SAVE_SIZE-RESULT_BYTES) + lg r3,0(r11) ; we need at least this... + lg r4,8(r11) + cmpi 0,r0,16 + beq Lfinish ; special case 16 bytes we don't consider floats. + + /* OK, frustratingly, the process of saving the struct to mem might have + messed with the FPRs, so we have to re-load them :(. + We`ll use our FPRs space again - calling: + void darwin64_pass_struct_floats (ffi_type *s, char *src, + unsigned *nfpr, double **fprs) + We`ll temporarily pinch the first two slots of the param area for local + vars used by the routine. */ + xor r6,r6,r6 + addi r5,r1,PARENT_PARM_BASE ; some space + sg r6,0(r5) ; *nfpr zeroed. + addi r6,r5,8 ; **fprs + addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space + sg r3,0(r6) + mr r4,r11 ; the struct is here... + lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type. + bl PASS_STR_FLOATS ; get struct floats into FPR save space. + /* See if we used any floats */ + lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1) + cmpi 0,r0,0 + beq Lstructints ; nope. + /* OK load `em up... */ + lfd f1, (FP_SAVE_BASE )(r1) + lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1) + lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1) + lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1) + lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1) + lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1) + lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1) + lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1) + lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1) + lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1) + lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1) + lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1) + lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1) + + /* point back at our saved struct. */ +Lstructints: + addi r11,r1,(SAVE_SIZE-RESULT_BYTES) + lg r3,0(r11) ; we end up picking the + lg r4,8(r11) ; first two again. + lg r5,16(r11) + lg r6,24(r11) + lg r7,32(r11) + lg r8,40(r11) + lg r9,48(r11) + lg r10,56(r11) +#endif + +/* case done */ +Lfinish: + addi r1,r1,SAVE_SIZE /* Restore stack pointer. */ + lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */ + mtlr r0 /* Reset link register. */ + blr +Lendcode: + .align 1 + +/* END(ffi_closure_ASM) */ + +/* EH frame stuff. */ +#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78) +/* 176, 400 */ +#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90) +#define EH_FRAME_OFFSETB MODE_CHOICE(1,3) + + .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$0,LECIE1-LSCIE1 + .long L$set$0 ; Length of Common Information Entry +LSCIE1: + .long 0x0 ; CIE Identifier Tag + .byte 0x1 ; CIE Version + .ascii "zR\0" ; CIE Augmentation + .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor + .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor + .byte 0x41 ; CIE RA Column + .byte 0x1 ; uleb128 0x1; Augmentation size + .byte 0x10 ; FDE Encoding (pcrel) + .byte 0xc ; DW_CFA_def_cfa + .byte 0x1 ; uleb128 0x1 + .byte 0x0 ; uleb128 0x0 + .align LOG2_GPR_BYTES +LECIE1: + .globl _ffi_closure_ASM.eh +_ffi_closure_ASM.eh: +LSFDE1: + .set L$set$1,LEFDE1-LASFDE1 + .long L$set$1 ; FDE Length + +LASFDE1: + .long LASFDE1-EH_frame1 ; FDE CIE offset + .g_long Lstartcode-. ; FDE initial location + .set L$set$2,LFE1-Lstartcode + .g_long L$set$2 ; FDE address range + .byte 0x0 ; uleb128 0x0; Augmentation size + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$3,LCFI1-LCFI0 + .long L$set$3 + .byte 0xe ; DW_CFA_def_cfa_offset + .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3 + .byte 0x4 ; DW_CFA_advance_loc4 + .set L$set$4,LCFI0-Lstartcode + .long L$set$4 + .byte 0x11 ; DW_CFA_offset_extended_sf + .byte 0x41 ; uleb128 0x41 + .byte 0x7e ; sleb128 -2 + .align LOG2_GPR_BYTES +LEFDE1: + .align 1 + +#ifdef WANT_STUB + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_ffi_closure_helper_DARWIN$stub: + .indirect_symbol _ffi_closure_helper_DARWIN + mflr r0 + bcl 20,31,"L1$spb" +"L1$spb": + mflr r11 + addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb") + mtlr r0 + lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_ffi_closure_helper_DARWIN$lazy_ptr: + .indirect_symbol _ffi_closure_helper_DARWIN + .g_long dyld_stub_binding_helper + +#if defined(__ppc64__) + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_darwin64_struct_ret_by_value_p$stub: + .indirect_symbol _darwin64_struct_ret_by_value_p + mflr r0 + bcl 20,31,"L2$spb" +"L2$spb": + mflr r11 + addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb") + mtlr r0 + lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_darwin64_struct_ret_by_value_p$lazy_ptr: + .indirect_symbol _darwin64_struct_ret_by_value_p + .g_long dyld_stub_binding_helper + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_darwin64_pass_struct_floats$stub: + .indirect_symbol _darwin64_pass_struct_floats + mflr r0 + bcl 20,31,"L3$spb" +"L3$spb": + mflr r11 + addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb") + mtlr r0 + lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_darwin64_pass_struct_floats$lazy_ptr: + .indirect_symbol _darwin64_pass_struct_floats + .g_long dyld_stub_binding_helper +# endif +#endif diff --git a/deps/libffi/src/powerpc/ffi.c b/deps/libffi/src/powerpc/ffi.c new file mode 100644 index 00000000000000..3601cc4ab1e2aa --- /dev/null +++ b/deps/libffi/src/powerpc/ffi.c @@ -0,0 +1,194 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#include "ffi.h" +#include "ffi_common.h" +#include "ffi_powerpc.h" +#include "internal.h" +#include + +#if HAVE_LONG_DOUBLE_VARIANT +/* Adjust ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types (ffi_abi abi) +{ +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# ifdef POWERPC64 + ffi_prep_types_linux64 (abi); +# else + ffi_prep_types_sysv (abi); +# endif +# endif +} +#endif + +/* Perform machine dependent cif processing */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep (ffi_cif *cif) +{ +#ifdef POWERPC64 + return ffi_prep_cif_linux64 (cif); +#else + return ffi_prep_cif_sysv (cif); +#endif +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var (ffi_cif *cif, + unsigned int nfixedargs MAYBE_UNUSED, + unsigned int ntotalargs MAYBE_UNUSED) +{ +#ifdef POWERPC64 + return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs); +#else + return ffi_prep_cif_sysv (cif); +#endif +} + +static void +ffi_call_int (ffi_cif *cif, + void (*fn) (void), + void *rvalue, + void **avalue, + void *closure) +{ + /* The final SYSV ABI says that structures smaller or equal 8 bytes + are returned in r3/r4. A draft ABI used by linux instead returns + them in memory. + + We bounce-buffer SYSV small struct return values so that sysv.S + can write r3 and r4 to memory without worrying about struct size. + + For ELFv2 ABI, use a bounce buffer for homogeneous structs too, + for similar reasons. This bounce buffer must be aligned to 16 + bytes for use with homogeneous structs of vectors (float128). */ + float128 smst_buffer[8]; + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + ecif.rvalue = rvalue; + if ((cif->flags & FLAG_RETURNS_SMST) != 0) + ecif.rvalue = smst_buffer; + /* Ensure that we have a valid struct return value. + FIXME: Isn't this just papering over a user problem? */ + else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT) + ecif.rvalue = alloca (cif->rtype->size); + +#ifdef POWERPC64 + ffi_call_LINUX64 (&ecif, fn, ecif.rvalue, cif->flags, closure, + -(long) cif->bytes); +#else + ffi_call_SYSV (&ecif, fn, ecif.rvalue, cif->flags, closure, -cif->bytes); +#endif + + /* Check for a bounce-buffered return value */ + if (rvalue && ecif.rvalue == smst_buffer) + { + unsigned int rsize = cif->rtype->size; +#ifndef __LITTLE_ENDIAN__ + /* The SYSV ABI returns a structure of up to 4 bytes in size + left-padded in r3. */ +# ifndef POWERPC64 + if (rsize <= 4) + memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize); + else +# endif + /* The SYSV ABI returns a structure of up to 8 bytes in size + left-padded in r3/r4, and the ELFv2 ABI similarly returns a + structure of up to 8 bytes in size left-padded in r3. But + note that a structure of a single float is not paddded. */ + if (rsize <= 8 && (cif->flags & FLAG_RETURNS_FP) == 0) + memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize); + else +#endif + memcpy (rvalue, smst_buffer, rsize); + } +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ +#ifdef POWERPC64 + return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc); +#else + return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc); +#endif +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ +#ifdef POWERPC64 + closure->tramp = ffi_go_closure_linux64; +#else + closure->tramp = ffi_go_closure_sysv; +#endif + closure->cif = cif; + closure->fun = fun; + return FFI_OK; +} + +#ifdef FFI_EXEC_STATIC_TRAMP +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + *tramp_size = PPC_TRAMP_SIZE; + *map_size = PPC_TRAMP_MAP_SIZE; +#if defined (_CALL_AIX) || _CALL_ELF == 1 + /* The caller wants the entry point address of the trampoline code, + not the address of the function descriptor. */ + return *(void **)trampoline_code_table; +#else + return &trampoline_code_table; +#endif +} +#endif diff --git a/deps/libffi/src/powerpc/ffi_darwin.c b/deps/libffi/src/powerpc/ffi_darwin.c new file mode 100644 index 00000000000000..afb6750a5bbfb5 --- /dev/null +++ b/deps/libffi/src/powerpc/ffi_darwin.c @@ -0,0 +1,1464 @@ +/* ----------------------------------------------------------------------- + ffi_darwin.c + + Copyright (C) 1998 Geoffrey Keating + Copyright (C) 2001 John Hornkvist + Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. + + FFI support for Darwin and AIX. + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +extern void ffi_closure_ASM (void); + +#if defined (FFI_GO_CLOSURES) +extern void ffi_go_closure_ASM (void); +#endif + +enum { + /* The assembly depends on these exact flags. + For Darwin64 (when FLAG_RETURNS_STRUCT is set): + FLAG_RETURNS_FP indicates that the structure embeds FP data. + FLAG_RETURNS_128BITS signals a special struct size that is not + expanded for float content. */ + FLAG_RETURNS_128BITS = 1 << (31-31), /* These go in cr7 */ + FLAG_RETURNS_NOTHING = 1 << (31-30), + FLAG_RETURNS_FP = 1 << (31-29), + FLAG_RETURNS_64BITS = 1 << (31-28), + + FLAG_RETURNS_STRUCT = 1 << (31-27), /* This goes in cr6 */ + + FLAG_ARG_NEEDS_COPY = 1 << (31- 7), + FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ + FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), + FLAG_RETVAL_REFERENCE = 1 << (31- 4) +}; + +/* About the DARWIN ABI. */ +enum { + NUM_GPR_ARG_REGISTERS = 8, + NUM_FPR_ARG_REGISTERS = 13, + LINKAGE_AREA_GPRS = 6 +}; + +enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */ + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments. + + m32/m64 + + The stack layout we want looks like this: + + | Return address from ffi_call_DARWIN | higher addresses + |--------------------------------------------| + | Previous backchain pointer 4/8 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | ASM_NEEDS_REGISTERS=r28-r31 4*(4/8) | | ffi_call_DARWIN + |--------------------------------------------| | + | When we have any FP activity... the | | + | FPRs occupy NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 from high to low addr. | | + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callee's LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< ffi_call_DARWIN + + */ + +#if defined(POWERPC_DARWIN64) +static void +darwin64_pass_struct_by_value + (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **); +#endif + +/* This depends on GPR_SIZE = sizeof (unsigned long) */ + +void +ffi_prep_args (extended_cif *ecif, unsigned long *const stack) +{ + const unsigned bytes = ecif->cif->bytes; + const unsigned flags = ecif->cif->flags; + const unsigned nargs = ecif->cif->nargs; +#if !defined(POWERPC_DARWIN64) + const ffi_abi abi = ecif->cif->abi; +#endif + + /* 'stacktop' points at the previous backchain pointer. */ + unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long)); + + /* 'fpr_base' points at the space for fpr1, and grows upwards as + we use FPR registers. */ + double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS; + int gp_count = 0, fparg_count = 0; + + /* 'next_arg' grows up as we put parameters in it. */ + unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions. */ + + int i; + double double_tmp; + void **p_argv = ecif->avalue; + unsigned long gprvalue; + ffi_type** ptr = ecif->cif->arg_types; +#if !defined(POWERPC_DARWIN64) + char *dest_cpy; +#endif + unsigned size_al = 0; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0); + FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0); + FFI_ASSERT((bytes & 0xF) == 0); + + /* Deal with return values that are actually pass-by-reference. + Rule: + Return values are referenced by r3, so r4 is the first parameter. */ + + if (flags & FLAG_RETVAL_REFERENCE) + *next_arg++ = (unsigned long) (char *) ecif->rvalue; + + /* Now for the arguments. */ + for (i = nargs; i > 0; i--, ptr++, p_argv++) + { + switch ((*ptr)->type) + { + /* If a floating-point parameter appears before all of the general- + purpose registers are filled, the corresponding GPRs that match + the size of the floating-point parameter are skipped. */ + case FFI_TYPE_FLOAT: + double_tmp = *(float *) *p_argv; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; +#if defined(POWERPC_DARWIN) + *(float *)next_arg = *(float *) *p_argv; +#else + *(double *)next_arg = double_tmp; +#endif + next_arg++; + gp_count++; + fparg_count++; + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_DOUBLE: + double_tmp = *(double *) *p_argv; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *)next_arg = double_tmp; +#ifdef POWERPC64 + next_arg++; + gp_count++; +#else + next_arg += 2; + gp_count += 2; +#endif + fparg_count++; + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + + case FFI_TYPE_LONGDOUBLE: +# if defined(POWERPC64) && !defined(POWERPC_DARWIN64) + /* ??? This will exceed the regs count when the value starts at fp13 + and it will not put the extra bit on the stack. */ + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *(long double *) fpr_base++ = *(long double *) *p_argv; + else + *(long double *) next_arg = *(long double *) *p_argv; + next_arg += 2; + fparg_count += 2; +# else + double_tmp = ((double *) *p_argv)[0]; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *) next_arg = double_tmp; +# if defined(POWERPC_DARWIN64) + next_arg++; + gp_count++; +# else + next_arg += 2; + gp_count += 2; +# endif + fparg_count++; + double_tmp = ((double *) *p_argv)[1]; + if (fparg_count < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = double_tmp; + *(double *) next_arg = double_tmp; +# if defined(POWERPC_DARWIN64) + next_arg++; + gp_count++; +# else + next_arg += 2; + gp_count += 2; +# endif + fparg_count++; +# endif + FFI_ASSERT(flags & FLAG_FP_ARGUMENTS); + break; +#endif + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef POWERPC64 + gprvalue = *(long long *) *p_argv; + goto putgpr; +#else + *(long long *) next_arg = *(long long *) *p_argv; + next_arg += 2; + gp_count += 2; +#endif + break; + case FFI_TYPE_POINTER: + gprvalue = *(unsigned long *) *p_argv; + goto putgpr; + case FFI_TYPE_UINT8: + gprvalue = *(unsigned char *) *p_argv; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = *(signed char *) *p_argv; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = *(unsigned short *) *p_argv; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = *(signed short *) *p_argv; + goto putgpr; + + case FFI_TYPE_STRUCT: + size_al = (*ptr)->size; +#if defined(POWERPC_DARWIN64) + next_arg = (unsigned long *)FFI_ALIGN((char *)next_arg, (*ptr)->alignment); + darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, + (unsigned) size_al, + (unsigned int *) &fparg_count, + &fpr_base, &next_arg); +#else + dest_cpy = (char *) next_arg; + + /* If the first member of the struct is a double, then include enough + padding in the struct size to align it to double-word. */ + if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN((*ptr)->size, 8); + +# if defined(POWERPC64) + FFI_ASSERT (abi != FFI_DARWIN); + memcpy ((char *) dest_cpy, (char *) *p_argv, size_al); + next_arg += (size_al + 7) / 8; +# else + /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, + SI 4 bytes) are aligned as if they were those modes. + Structures with 3 byte in size are padded upwards. */ + if (size_al < 3 && abi == FFI_DARWIN) + dest_cpy += 4 - size_al; + + memcpy((char *) dest_cpy, (char *) *p_argv, size_al); + next_arg += (size_al + 3) / 4; +# endif +#endif + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + gprvalue = *(signed int *) *p_argv; + goto putgpr; + + case FFI_TYPE_UINT32: + gprvalue = *(unsigned int *) *p_argv; + putgpr: + *next_arg++ = gprvalue; + gp_count++; + break; + default: + break; + } + } + + /* Check that we didn't overrun the stack... */ + /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS); + FFI_ASSERT((unsigned *)fpr_base + <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS); + FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4); */ +} + +#if defined(POWERPC_DARWIN64) + +/* See if we can put some of the struct into fprs. + This should not be called for structures of size 16 bytes, since these are not + broken out this way. */ +static void +darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr) +{ + int i; + + FFI_ASSERT (s->type == FFI_TYPE_STRUCT) + + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p = s->elements[i]; + switch (p->type) + { + case FFI_TYPE_STRUCT: + darwin64_scan_struct_for_floats (p, nfpr); + break; + case FFI_TYPE_LONGDOUBLE: + (*nfpr) += 2; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_FLOAT: + (*nfpr) += 1; + break; + default: + break; + } + } +} + +static int +darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr) +{ + unsigned struct_offset=0, i; + + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + + item_base = src + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr)) + return 1; + break; + case FFI_TYPE_LONGDOUBLE: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + break; + case FFI_TYPE_FLOAT: + if (*nfpr >= NUM_FPR_ARG_REGISTERS) + return 1; + (*nfpr) += 1; + break; + default: + /* If we try and place any item, that is non-float, once we've + exceeded the 8 GPR mark, then we can't fit the struct. */ + if ((unsigned long)item_base >= 8*8) + return 1; + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + return 0; +} + +/* Can this struct be returned by value? */ +int +darwin64_struct_ret_by_value_p (ffi_type *s) +{ + unsigned nfp = 0; + + FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT); + + /* The largest structure we can return is 8long + 13 doubles. */ + if (s->size > 168) + return 0; + + /* We can't pass more than 13 floats. */ + darwin64_scan_struct_for_floats (s, &nfp); + if (nfp > 13) + return 0; + + /* If there are not too many floats, and the struct is + small enough to accommodate in the GPRs, then it must be OK. */ + if (s->size <= 64) + return 1; + + /* Well, we have to look harder. */ + nfp = 0; + if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp)) + return 0; + + return 1; +} + +void +darwin64_pass_struct_floats (ffi_type *s, char *src, + unsigned *nfpr, double **fprs) +{ + int i; + double *fpr_base = *fprs; + unsigned struct_offset = 0; + + /* We don't assume anything about the alignment of the source. */ + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + item_base = src + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + darwin64_pass_struct_floats (p, item_base, nfpr, + &fpr_base); + break; + case FFI_TYPE_LONGDOUBLE: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = *(double *)item_base; + (*nfpr) += 1; + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = *(double *)item_base; + (*nfpr) += 1; + break; + case FFI_TYPE_FLOAT: + if (*nfpr < NUM_FPR_ARG_REGISTERS) + *fpr_base++ = (double) *(float *)item_base; + (*nfpr) += 1; + break; + default: + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + /* Update the scores. */ + *fprs = fpr_base; +} + +/* Darwin64 special rules. + Break out a struct into params and float registers. */ +static void +darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size, + unsigned *nfpr, double **fprs, unsigned long **arg) +{ + unsigned long *next_arg = *arg; + char *dest_cpy = (char *)next_arg; + + FFI_ASSERT (s->type == FFI_TYPE_STRUCT) + + if (!size) + return; + + /* First... special cases. */ + if (size < 3 + || (size == 4 + && s->elements[0] + && s->elements[0]->type != FFI_TYPE_FLOAT)) + { + /* Must be at least one GPR, padding is unspecified in value, + let's make it zero. */ + *next_arg = 0UL; + dest_cpy += 8 - size; + memcpy ((char *) dest_cpy, src, size); + next_arg++; + } + else if (size == 16) + { + memcpy ((char *) dest_cpy, src, size); + next_arg += 2; + } + else + { + /* now the general case, we consider embedded floats. */ + memcpy ((char *) dest_cpy, src, size); + darwin64_pass_struct_floats (s, src, nfpr, fprs); + next_arg += (size+7)/8; + } + + *arg = next_arg; +} + +double * +darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf) +{ + int i; + unsigned struct_offset = 0; + + /* We don't assume anything about the alignment of the source. */ + for (i = 0; s->elements[i] != NULL; i++) + { + char *item_base; + ffi_type *p = s->elements[i]; + /* Find the start of this item (0 for the first one). */ + if (i > 0) + struct_offset = FFI_ALIGN(struct_offset, p->alignment); + item_base = dest + struct_offset; + + switch (p->type) + { + case FFI_TYPE_STRUCT: + fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf); + break; + case FFI_TYPE_LONGDOUBLE: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(double *)item_base = *fprs++ ; + (*nf) += 1; + } + item_base += 8; + /* FALL THROUGH */ + case FFI_TYPE_DOUBLE: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(double *)item_base = *fprs++ ; + (*nf) += 1; + } + break; + case FFI_TYPE_FLOAT: + if (*nf < NUM_FPR_ARG_REGISTERS) + { + *(float *)item_base = (float) *fprs++ ; + (*nf) += 1; + } + break; + default: + break; + } + /* now count the size of what we just used. */ + struct_offset += p->size; + } + return fprs; +} + +#endif + +/* Adjust the size of S to be correct for Darwin. + On Darwin m32, the first field of a structure has natural alignment. + On Darwin m64, all fields have natural alignment. */ + +static void +darwin_adjust_aggregate_sizes (ffi_type *s) +{ + int i; + + if (s->type != FFI_TYPE_STRUCT) + return; + + s->size = 0; + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type *p; + int align; + + p = s->elements[i]; + if (p->type == FFI_TYPE_STRUCT) + darwin_adjust_aggregate_sizes (p); +#if defined(POWERPC_DARWIN64) + /* Natural alignment for all items. */ + align = p->alignment; +#else + /* Natural alignment for the first item... */ + if (i == 0) + align = p->alignment; + else if (p->alignment == 16 || p->alignment < 4) + /* .. subsequent items with vector or align < 4 have natural align. */ + align = p->alignment; + else + /* .. or align is 4. */ + align = 4; +#endif + /* Pad, if necessary, before adding the current item. */ + s->size = FFI_ALIGN(s->size, align) + p->size; + } + + s->size = FFI_ALIGN(s->size, s->alignment); + + /* This should not be necessary on m64, but harmless. */ + if (s->elements[0]->type == FFI_TYPE_UINT64 + || s->elements[0]->type == FFI_TYPE_SINT64 + || s->elements[0]->type == FFI_TYPE_DOUBLE + || s->elements[0]->alignment == 8) + s->alignment = s->alignment > 8 ? s->alignment : 8; + /* Do not add additional tail padding. */ +} + +/* Adjust the size of S to be correct for AIX. + Word-align double unless it is the first member of a structure recursively. + Return non-zero if we found a recursive first member aggregate of interest. */ + +static int +aix_adjust_aggregate_sizes (ffi_type *s, int outer_most_type_or_first_member) +{ + int i, nested_first_member=0, final_align, rc=0; + + if (s->type != FFI_TYPE_STRUCT) + return 0; + + s->size = 0; + for (i = 0; s->elements[i] != NULL; i++) + { + ffi_type p; + int align; + + /* nested aggregates layout differently on AIX, so take a copy of the type */ + p = *(s->elements[i]); + if (i == 0) + nested_first_member = aix_adjust_aggregate_sizes(&p, outer_most_type_or_first_member); + else + aix_adjust_aggregate_sizes(&p, 0); + align = p.alignment; + if (i != 0 && p.type == FFI_TYPE_DOUBLE) + align = 4; + s->size = FFI_ALIGN(s->size, align) + p.size; + } + + final_align=s->alignment; + if ((s->elements[0]->type == FFI_TYPE_UINT64 + || s->elements[0]->type == FFI_TYPE_SINT64 + || s->elements[0]->type == FFI_TYPE_DOUBLE + || s->elements[0]->alignment == 8 || nested_first_member)) { + final_align = s->alignment > 8 ? s->alignment : 8; + rc=1; + /* still use the adjusted alignment to calculate tail padding, but don't adjust the types alignment if + we aren't in the recursive first position */ + if (outer_most_type_or_first_member) + s->alignment=final_align; + } + + s->size = FFI_ALIGN(s->size, final_align); + return rc; +} + +/* Perform machine dependent cif processing. */ +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* All this is for the DARWIN ABI. */ + unsigned i; + ffi_type **ptr; + unsigned bytes; + unsigned fparg_count = 0, intarg_count = 0; + unsigned flags = 0; + unsigned size_al = 0; + + /* All the machine-independent calculation of cif->bytes will be wrong. + All the calculation of structure sizes will also be wrong. + Redo the calculation for DARWIN. */ + + if (cif->abi == FFI_DARWIN) + { + darwin_adjust_aggregate_sizes (cif->rtype); + for (i = 0; i < cif->nargs; i++) + darwin_adjust_aggregate_sizes (cif->arg_types[i]); + } + + if (cif->abi == FFI_AIX) + { + aix_adjust_aggregate_sizes (cif->rtype, 1); + for (i = 0; i < cif->nargs; i++) + aix_adjust_aggregate_sizes (cif->arg_types[i], 1); + } + + /* Space for the frame pointer, callee's LR, CR, etc, and for + the asm's temp regs. */ + + bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long); + + /* Return value handling. + The rules m32 are as follows: + - 32-bit (or less) integer values are returned in gpr3; + - structures of size <= 4 bytes also returned in gpr3; + - 64-bit integer values [??? and structures between 5 and 8 bytes] are + returned in gpr3 and gpr4; + - Single/double FP values are returned in fpr1; + - Long double FP (if not equivalent to double) values are returned in + fpr1 and fpr2; + m64: + - 64-bit or smaller integral values are returned in GPR3 + - Single/double FP values are returned in fpr1; + - Long double FP values are returned in fpr1 and fpr2; + m64 Structures: + - If the structure could be accommodated in registers were it to be the + first argument to a routine, then it is returned in those registers. + m32/m64 structures otherwise: + - Larger structures values are allocated space and a pointer is passed + as the first argument. */ + switch (cif->rtype->type) + { + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags |= FLAG_RETURNS_128BITS; + flags |= FLAG_RETURNS_FP; + break; +#endif + + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef POWERPC64 + case FFI_TYPE_POINTER: +#endif + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: +#if defined(POWERPC_DARWIN64) + { + /* Can we fit the struct into regs? */ + if (darwin64_struct_ret_by_value_p (cif->rtype)) + { + unsigned nfpr = 0; + flags |= FLAG_RETURNS_STRUCT; + if (cif->rtype->size != 16) + darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ; + else + flags |= FLAG_RETURNS_128BITS; + /* Will be 0 for 16byte struct. */ + if (nfpr) + flags |= FLAG_RETURNS_FP; + } + else /* By ref. */ + { + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; + } + } +#elif defined(DARWIN_PPC) + if (cif->rtype->size <= 4) + flags |= FLAG_RETURNS_STRUCT; + else /* else by reference. */ + { + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; + } +#else /* assume we pass by ref. */ + flags |= FLAG_RETVAL_REFERENCE; + flags |= FLAG_RETURNS_NOTHING; + intarg_count++; +#endif + break; + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the + first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest + goes on the stack. + ??? Structures are passed as a pointer to a copy of the structure. + Stuff on the stack needs to keep proper alignment. + For m64 the count is effectively of half-GPRs. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned align_words; + switch ((*ptr)->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + fparg_count++; +#if !defined(POWERPC_DARWIN64) + /* If this FP arg is going on the stack, it must be + 8-byte-aligned. */ + if (fparg_count > NUM_FPR_ARG_REGISTERS + && (intarg_count & 0x01) != 0) + intarg_count++; +#endif + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + fparg_count += 2; + /* If this FP arg is going on the stack, it must be + 16-byte-aligned. */ + if (fparg_count >= NUM_FPR_ARG_REGISTERS) +#if defined (POWERPC64) + intarg_count = FFI_ALIGN(intarg_count, 2); +#else + intarg_count = FFI_ALIGN(intarg_count, 4); +#endif + break; +#endif + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#if defined(POWERPC64) + intarg_count++; +#else + /* 'long long' arguments are passed as two words, but + either both words must fit in registers or both go + on the stack. If they go on the stack, they must + be 8-byte-aligned. */ + if (intarg_count == NUM_GPR_ARG_REGISTERS-1 + || (intarg_count >= NUM_GPR_ARG_REGISTERS + && (intarg_count & 0x01) != 0)) + intarg_count++; + intarg_count += 2; +#endif + break; + + case FFI_TYPE_STRUCT: + size_al = (*ptr)->size; +#if defined(POWERPC_DARWIN64) + align_words = (*ptr)->alignment >> 3; + if (align_words) + intarg_count = FFI_ALIGN(intarg_count, align_words); + /* Base size of the struct. */ + intarg_count += (size_al + 7) / 8; + /* If 16 bytes then don't worry about floats. */ + if (size_al != 16) + /* Scan through for floats to be placed in regs. */ + darwin64_scan_struct_for_floats (*ptr, &fparg_count) ; +#else + align_words = (*ptr)->alignment >> 2; + if (align_words) + intarg_count = FFI_ALIGN(intarg_count, align_words); + /* If the first member of the struct is a double, then align + the struct to double-word. + if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN((*ptr)->size, 8); */ +# ifdef POWERPC64 + intarg_count += (size_al + 7) / 8; +# else + intarg_count += (size_al + 3) / 4; +# endif +#endif + break; + + default: + /* Everything else is passed as a 4-byte word in a GPR, either + the object itself or a pointer to it. */ + intarg_count++; + break; + } + } + + if (fparg_count != 0) + flags |= FLAG_FP_ARGUMENTS; + +#if defined(POWERPC_DARWIN64) + /* Space to image the FPR registers, if needed - which includes when they might be + used in a struct return. */ + if (fparg_count != 0 + || ((flags & FLAG_RETURNS_STRUCT) + && (flags & FLAG_RETURNS_FP))) + bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); +#else + /* Space for the FPR registers, if needed. */ + if (fparg_count != 0) + bytes += NUM_FPR_ARG_REGISTERS * sizeof(double); +#endif + + /* Stack space. */ +#ifdef POWERPC64 + if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS) + bytes += (intarg_count + fparg_count) * sizeof(long); +#else + if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS) + bytes += (intarg_count + 2 * fparg_count) * sizeof(long); +#endif + else + bytes += NUM_GPR_ARG_REGISTERS * sizeof(long); + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = FFI_ALIGN(bytes, 16) ; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void)); + +#if defined (FFI_GO_CLOSURES) +extern void ffi_call_go_AIX(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void), void *closure); +#endif + +extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *, + void (*fn)(void), void (*fn2)(void), ffi_type*); + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_AIX: + ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args)); + break; + case FFI_DARWIN: + ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args), cif->rtype); + break; + default: + FFI_ASSERT(0); + break; + } +} + +#if defined (FFI_GO_CLOSURES) +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return + value address then we need to make one. */ + + if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_AIX: + ffi_call_go_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn, + FFI_FN(ffi_prep_args), closure); + break; + default: + FFI_ASSERT(0); + break; + } +} +#endif + +static void flush_icache(char *); +static void flush_range(char *, int); + +/* The layout of a function descriptor. A C function pointer really + points to one of these. */ + +typedef struct aix_fd_struct { + void *code_pointer; + void *toc; +} aix_fd; + +/* here I'd like to add the stack frame layout we use in darwin_closure.S + and aix_closure.S + + m32/m64 + + The stack layout looks like this: + + | Additional params... | | Higher address + ~ ~ ~ + | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | + | Reserved 2*4/8 | | + |--------------------------------------------| | + | Space for callee's LR 4/8 | | + |--------------------------------------------| | + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | + | Current backchain pointer 4/8 |-/ Parent's frame. + |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM + | Result Bytes 16 | | + |--------------------------------------------| | + ~ padding to 16-byte alignment ~ ~ + |--------------------------------------------| | + | NUM_FPR_ARG_REGISTERS slots | | + | here fp13 .. fp1 13*8 | | + |--------------------------------------------| | + | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS + |--------------------------------------------| | + | TOC=R2 (AIX) Reserved (Darwin) 4/8 | | + |--------------------------------------------| | stack | + | Reserved [compiler,binder] 2*4/8 | | grows | + |--------------------------------------------| | down V + | Space for callee's LR 4/8 | | + |--------------------------------------------| | lower addresses + | Saved CR [low word for m64] 4/8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4/8 |-/ during + |--------------------------------------------| <<< ffi_closure_ASM. + +*/ + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + struct ffi_aix_trampoline_struct *tramp_aix; + aix_fd *fd; + + switch (cif->abi) + { + case FFI_DARWIN: + + FFI_ASSERT (cif->abi == FFI_DARWIN); + + tramp = (unsigned int *) &closure->tramp[0]; +#if defined(POWERPC_DARWIN64) + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f0015; /* bcl- 20,4*cr7+so, +0x18 (L1) */ + /* We put the addresses here. */ + tramp[6] = 0x7d6802a6; /*L1: mflr r11 */ + tramp[7] = 0xe98b0000; /* ld r12,0(r11) function address */ + tramp[8] = 0x7c0803a6; /* mtlr r0 */ + tramp[9] = 0x7d8903a6; /* mtctr r12 */ + tramp[10] = 0xe96b0008; /* lwz r11,8(r11) static chain */ + tramp[11] = 0x4e800420; /* bctr */ + + *((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function */ + *((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context */ +#else + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f000d; /* bcl- 20,4*cr7+so,0x10 */ + tramp[4] = 0x7d6802a6; /* mflr r11 */ + tramp[5] = 0x818b0000; /* lwz r12,0(r11) function address */ + tramp[6] = 0x7c0803a6; /* mtlr r0 */ + tramp[7] = 0x7d8903a6; /* mtctr r12 */ + tramp[8] = 0x816b0004; /* lwz r11,4(r11) static chain */ + tramp[9] = 0x4e800420; /* bctr */ + tramp[2] = (unsigned long) ffi_closure_ASM; /* function */ + tramp[3] = (unsigned long) codeloc; /* context */ +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the icache. Only necessary on Darwin. */ + flush_range(codeloc, FFI_TRAMPOLINE_SIZE); + + break; + + case FFI_AIX: + + tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp); + fd = (aix_fd *)(void *)ffi_closure_ASM; + + FFI_ASSERT (cif->abi == FFI_AIX); + + tramp_aix->code_pointer = fd->code_pointer; + tramp_aix->toc = fd->toc; + tramp_aix->static_chain = codeloc; + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + break; + + default: + return FFI_BAD_ABI; + break; + } + return FFI_OK; +} + +#if defined (FFI_GO_CLOSURES) +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + switch (cif->abi) + { + case FFI_AIX: + + FFI_ASSERT (cif->abi == FFI_AIX); + + closure->tramp = (void *)ffi_go_closure_ASM; + closure->cif = cif; + closure->fun = fun; + return FFI_OK; + + // For now, ffi_prep_go_closure is only implemented for AIX, not for Darwin + default: + return FFI_BAD_ABI; + break; + } + return FFI_OK; +} +#endif + +static void +flush_icache(char *addr) +{ +#ifndef _AIX + __asm__ volatile ( + "dcbf 0,%0\n" + "\tsync\n" + "\ticbi 0,%0\n" + "\tsync\n" + "\tisync" + : : "r"(addr) : "memory"); +#endif +} + +static void +flush_range(char * addr1, int size) +{ +#define MIN_LINE_SIZE 32 + int i; + for (i = 0; i < size; i += MIN_LINE_SIZE) + flush_icache(addr1+i); + flush_icache(addr1+size-1); +} + +typedef union +{ + float f; + double d; +} ffi_dblfl; + +ffi_type * +ffi_closure_helper_DARWIN (ffi_closure *, void *, + unsigned long *, ffi_dblfl *); + +#if defined (FFI_GO_CLOSURES) +ffi_type * +ffi_go_closure_helper_DARWIN (ffi_go_closure*, void *, + unsigned long *, ffi_dblfl *); +#endif + +/* Basically the trampoline invokes ffi_closure_ASM, and on + entry, r11 holds the address of the closure. + After storing the registers that could possibly contain + parameters to be passed into the stack frame and setting + up space for a return value, ffi_closure_ASM invokes the + following helper function to do most of the work. */ + +static ffi_type * +ffi_closure_helper_common (ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + /* rvalue is the pointer to space for return value in closure assembly + pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM + pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM. */ + + typedef double ldbits[2]; + + union ldu + { + ldbits lb; + long double ld; + }; + + void ** avalue; + ffi_type ** arg_types; + long i, avn; + ffi_dblfl * end_pfr = pfr + NUM_FPR_ARG_REGISTERS; + unsigned size_al; +#if defined(POWERPC_DARWIN64) + unsigned fpsused = 0; +#endif + + avalue = alloca (cif->nargs * sizeof(void *)); + + if (cif->rtype->type == FFI_TYPE_STRUCT) + { +#if defined(POWERPC_DARWIN64) + if (!darwin64_struct_ret_by_value_p (cif->rtype)) + { + /* Won't fit into the regs - return by ref. */ + rvalue = (void *) *pgr; + pgr++; + } +#elif defined(DARWIN_PPC) + if (cif->rtype->size > 4) + { + rvalue = (void *) *pgr; + pgr++; + } +#else /* assume we return by ref. */ + rvalue = (void *) *pgr; + pgr++; +#endif + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) + { + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 7; +#else + avalue[i] = (char *) pgr + 3; +#endif + pgr++; + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 6; +#else + avalue[i] = (char *) pgr + 2; +#endif + pgr++; + break; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#if defined(POWERPC64) + avalue[i] = (char *) pgr + 4; +#else + case FFI_TYPE_POINTER: + avalue[i] = pgr; +#endif + pgr++; + break; + + case FFI_TYPE_STRUCT: + size_al = arg_types[i]->size; +#if defined(POWERPC_DARWIN64) + pgr = (unsigned long *)FFI_ALIGN((char *)pgr, arg_types[i]->alignment); + if (size_al < 3 || size_al == 4) + { + avalue[i] = ((char *)pgr)+8-size_al; + if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT + && fpsused < NUM_FPR_ARG_REGISTERS) + { + *(float *)pgr = (float) *(double *)pfr; + pfr++; + fpsused++; + } + } + else + { + if (size_al != 16) + pfr = (ffi_dblfl *) + darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr, + (double *)pfr, &fpsused); + avalue[i] = pgr; + } + pgr += (size_al + 7) / 8; +#else + /* If the first member of the struct is a double, then align + the struct to double-word. */ + if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) + size_al = FFI_ALIGN(arg_types[i]->size, 8); +# if defined(POWERPC64) + FFI_ASSERT (cif->abi != FFI_DARWIN); + avalue[i] = pgr; + pgr += (size_al + 7) / 8; +# else + /* Structures that match the basic modes (QI 1 byte, HI 2 bytes, + SI 4 bytes) are aligned as if they were those modes. */ + if (size_al < 3 && cif->abi == FFI_DARWIN) + avalue[i] = (char*) pgr + 4 - size_al; + else + avalue[i] = pgr; + pgr += (size_al + 3) / 4; +# endif +#endif + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: +#if defined(POWERPC64) + case FFI_TYPE_POINTER: + avalue[i] = pgr; + pgr++; + break; +#else + /* Long long ints are passed in two gpr's. */ + avalue[i] = pgr; + pgr += 2; + break; +#endif + + case FFI_TYPE_FLOAT: + /* A float value consumes a GPR. + There are 13 64bit floating point registers. */ + if (pfr < end_pfr) + { + double temp = pfr->d; + pfr->f = (float) temp; + avalue[i] = pfr; + pfr++; + } + else + { + avalue[i] = pgr; + } + pgr++; + break; + + case FFI_TYPE_DOUBLE: + /* A double value consumes two GPRs. + There are 13 64bit floating point registers. */ + if (pfr < end_pfr) + { + avalue[i] = pfr; + pfr++; + } + else + { + avalue[i] = pgr; + } +#ifdef POWERPC64 + pgr++; +#else + pgr += 2; +#endif + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + + case FFI_TYPE_LONGDOUBLE: +#ifdef POWERPC64 + if (pfr + 1 < end_pfr) + { + avalue[i] = pfr; + pfr += 2; + } + else + { + if (pfr < end_pfr) + { + *pgr = *(unsigned long *) pfr; + pfr++; + } + avalue[i] = pgr; + } + pgr += 2; +#else /* POWERPC64 */ + /* A long double value consumes four GPRs and two FPRs. + There are 13 64bit floating point registers. */ + if (pfr + 1 < end_pfr) + { + avalue[i] = pfr; + pfr += 2; + } + /* Here we have the situation where one part of the long double + is stored in fpr13 and the other part is already on the stack. + We use a union to pass the long double to avalue[i]. */ + else if (pfr + 1 == end_pfr) + { + union ldu temp_ld; + memcpy (&temp_ld.lb[0], pfr, sizeof(ldbits)); + memcpy (&temp_ld.lb[1], pgr + 2, sizeof(ldbits)); + avalue[i] = &temp_ld.ld; + pfr++; + } + else + { + avalue[i] = pgr; + } + pgr += 4; +#endif /* POWERPC64 */ + break; +#endif + default: + FFI_ASSERT(0); + } + i++; + } + + (fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_ASM to perform return type promotions. */ + return cif->rtype; +} + +ffi_type * +ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + return ffi_closure_helper_common (closure->cif, closure->fun, + closure->user_data, rvalue, pgr, pfr); +} + +#if defined (FFI_GO_CLOSURES) +ffi_type * +ffi_go_closure_helper_DARWIN (ffi_go_closure *closure, void *rvalue, + unsigned long *pgr, ffi_dblfl *pfr) +{ + return ffi_closure_helper_common (closure->cif, closure->fun, + closure, rvalue, pgr, pfr); +} +#endif diff --git a/deps/libffi/src/powerpc/ffi_linux64.c b/deps/libffi/src/powerpc/ffi_linux64.c new file mode 100644 index 00000000000000..90100a4d8b8b5f --- /dev/null +++ b/deps/libffi/src/powerpc/ffi_linux64.c @@ -0,0 +1,1160 @@ +/* ----------------------------------------------------------------------- + ffi_linux64.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#include "ffi.h" +#include + +#ifdef POWERPC64 +#include "ffi_common.h" +#include "ffi_powerpc.h" + + +/* About the LINUX64 ABI. */ +enum { + NUM_GPR_ARG_REGISTERS64 = 8, + NUM_FPR_ARG_REGISTERS64 = 13, + NUM_VEC_ARG_REGISTERS64 = 12, +}; +enum { ASM_NEEDS_REGISTERS64 = 4 }; + + +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +/* Adjust size of ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types_linux64 (ffi_abi abi) +{ + if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX) + { + ffi_type_longdouble.size = 8; + ffi_type_longdouble.alignment = 8; + } + else + { + ffi_type_longdouble.size = 16; + ffi_type_longdouble.alignment = 16; + } +} +#endif + + +static unsigned int +discover_homogeneous_aggregate (ffi_abi abi, + const ffi_type *t, + unsigned int *elnum) +{ + switch (t->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + /* 64-bit long doubles are equivalent to doubles. */ + if ((abi & FFI_LINUX_LONG_DOUBLE_128) == 0) + { + *elnum = 1; + return FFI_TYPE_DOUBLE; + } + /* IBM extended precision values use unaligned pairs + of FPRs, but according to the ABI must be considered + distinct from doubles. They are also limited to a + maximum of four members in a homogeneous aggregate. */ + else if ((abi & FFI_LINUX_LONG_DOUBLE_IEEE128) == 0) + { + *elnum = 2; + return FFI_TYPE_LONGDOUBLE; + } + /* Fall through. */ +#endif + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + *elnum = 1; + return (int) t->type; + + case FFI_TYPE_STRUCT:; + { + unsigned int base_elt = 0, total_elnum = 0; + ffi_type **el = t->elements; + while (*el) + { + unsigned int el_elt, el_elnum = 0; + el_elt = discover_homogeneous_aggregate (abi, *el, &el_elnum); + if (el_elt == 0 + || (base_elt && base_elt != el_elt)) + return 0; + base_elt = el_elt; + total_elnum += el_elnum; +#if _CALL_ELF == 2 + if (total_elnum > 8) + return 0; +#else + if (total_elnum > 1) + return 0; +#endif + el++; + } + *elnum = total_elnum; + return base_elt; + } + + default: + return 0; + } +} + + +/* Perform machine dependent cif processing */ +static ffi_status +ffi_prep_cif_linux64_core (ffi_cif *cif) +{ + ffi_type **ptr; + unsigned bytes; + unsigned i, fparg_count = 0, intarg_count = 0, vecarg_count = 0; + unsigned flags = cif->flags; + unsigned elt, elnum, rtype; + +#if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE + /* If compiled without long double support... */ + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0 || + (cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + return FFI_BAD_ABI; +#elif !defined(__VEC__) + /* If compiled without vector register support (used by assembly)... */ + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + return FFI_BAD_ABI; +#else + /* If the IEEE128 flag is set, but long double is only 64 bits wide... */ + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) == 0 && + (cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + return FFI_BAD_ABI; +#endif + + /* The machine-independent calculation of cif->bytes doesn't work + for us. Redo the calculation. */ +#if _CALL_ELF == 2 + /* Space for backchain, CR, LR, TOC and the asm's temp regs. */ + bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long); + + /* Space for the general registers. */ + bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long); +#else + /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp + regs. */ + bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long); + + /* Space for the mandatory parm save area and general registers. */ + bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long); +#endif + + /* Return value handling. */ + rtype = cif->rtype->type; +#if _CALL_ELF == 2 +homogeneous: +#endif + switch (rtype) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + flags |= FLAG_RETURNS_VEC; + break; + } + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; + break; + + case FFI_TYPE_UINT128: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: +#if _CALL_ELF == 2 + elt = discover_homogeneous_aggregate (cif->abi, cif->rtype, &elnum); + if (elt) + { + flags |= FLAG_RETURNS_SMST; + rtype = elt; + goto homogeneous; + } + if (cif->rtype->size <= 16) + { + flags |= FLAG_RETURNS_SMST; + break; + } +#endif + intarg_count++; + flags |= FLAG_RETVAL_REFERENCE; + /* Fall through. */ + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned int align; + + switch ((*ptr)->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + vecarg_count++; + /* Align to 16 bytes, plus the 16-byte argument. */ + intarg_count = (intarg_count + 3) & ~0x1; + if (vecarg_count > NUM_VEC_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + } + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + fparg_count++; + intarg_count++; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + case FFI_TYPE_FLOAT: + fparg_count++; + intarg_count++; + if (fparg_count > NUM_FPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + + case FFI_TYPE_STRUCT: + if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = (*ptr)->alignment; + if (align > 16) + align = 16; + align = align / 8; + if (align > 1) + intarg_count = FFI_ALIGN (intarg_count, align); + } + intarg_count += ((*ptr)->size + 7) / 8; + elt = discover_homogeneous_aggregate (cif->abi, *ptr, &elnum); +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (elt == FFI_TYPE_LONGDOUBLE && + (cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + vecarg_count += elnum; + if (vecarg_count > NUM_VEC_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + } + else +#endif + if (elt) + { + fparg_count += elnum; + if (fparg_count > NUM_FPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + } + else + { + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + } + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* Everything else is passed as a 8-byte word in a GPR, either + the object itself or a pointer to it. */ + intarg_count++; + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + flags |= FLAG_ARG_NEEDS_PSAVE; + break; + default: + FFI_ASSERT (0); + } + } + + if (fparg_count != 0) + flags |= FLAG_FP_ARGUMENTS; + if (intarg_count > 4) + flags |= FLAG_4_GPR_ARGUMENTS; + if (vecarg_count != 0) + flags |= FLAG_VEC_ARGUMENTS; + + /* Space for the FPR registers, if needed. */ + if (fparg_count != 0) + bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double); + /* Space for the vector registers, if needed, aligned to 16 bytes. */ + if (vecarg_count != 0) { + bytes = (bytes + 15) & ~0xF; + bytes += NUM_VEC_ARG_REGISTERS64 * sizeof (float128); + } + + /* Stack space. */ +#if _CALL_ELF == 2 + if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0) + bytes += intarg_count * sizeof (long); +#else + if (intarg_count > NUM_GPR_ARG_REGISTERS64) + bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long); +#endif + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = (bytes + 15) & ~0xF; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_linux64 (ffi_cif *cif) +{ + if ((cif->abi & FFI_LINUX) != 0) + cif->nfixedargs = cif->nargs; +#if _CALL_ELF != 2 + else if (cif->abi == FFI_COMPAT_LINUX64) + { + /* This call is from old code. Don't touch cif->nfixedargs + since old code will be using a smaller cif. */ + cif->flags |= FLAG_COMPAT; + /* Translate to new abi value. */ + cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; + } +#endif + else + return FFI_BAD_ABI; + return ffi_prep_cif_linux64_core (cif); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_linux64_var (ffi_cif *cif, + unsigned int nfixedargs, + unsigned int ntotalargs MAYBE_UNUSED) +{ + if ((cif->abi & FFI_LINUX) != 0) + cif->nfixedargs = nfixedargs; +#if _CALL_ELF != 2 + else if (cif->abi == FFI_COMPAT_LINUX64) + { + /* This call is from old code. Don't touch cif->nfixedargs + since old code will be using a smaller cif. */ + cif->flags |= FLAG_COMPAT; + /* Translate to new abi value. */ + cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128; + } +#endif + else + return FFI_BAD_ABI; +#if _CALL_ELF == 2 + cif->flags |= FLAG_ARG_NEEDS_PSAVE; +#endif + return ffi_prep_cif_linux64_core (cif); +} + + +/* ffi_prep_args64 is called by the assembly routine once stack space + has been allocated for the function's arguments. + + The stack layout we want looks like this: + + | Ret addr from ffi_call_LINUX64 8bytes | higher addresses + |--------------------------------------------| + | CR save area 8bytes | + |--------------------------------------------| + | Previous backchain pointer 8 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | Saved r28-r31 4*8 | | ffi_call_LINUX64 + |--------------------------------------------| | + | GPR registers r3-r10 8*8 | | + |--------------------------------------------| | + | FPR registers f1-f13 (optional) 13*8 | | + |--------------------------------------------| | + | VEC registers v2-v13 (optional) 12*16 | | + |--------------------------------------------| | + | Parameter save area | | + |--------------------------------------------| | + | TOC save area 8 | | + |--------------------------------------------| | stack | + | Linker doubleword 8 | | grows | + |--------------------------------------------| | down V + | Compiler doubleword 8 | | + |--------------------------------------------| | lower addresses + | Space for callee's LR 8 | | + |--------------------------------------------| | + | CR save area 8 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 8 |-/ during + |--------------------------------------------| <<< ffi_call_LINUX64 + +*/ + +void FFI_HIDDEN +ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) +{ + const unsigned long bytes = ecif->cif->bytes; + const unsigned long flags = ecif->cif->flags; + + typedef union + { + char *c; + unsigned long *ul; + float *f; + double *d; + float128 *f128; + size_t p; + } valp; + + /* 'stacktop' points at the previous backchain pointer. */ + valp stacktop; + + /* 'next_arg' points at the space for gpr3, and grows upwards as + we use GPR registers, then continues at rest. */ + valp gpr_base; + valp gpr_end; + valp rest; + valp next_arg; + + /* 'fpr_base' points at the space for f1, and grows upwards as + we use FPR registers. */ + valp fpr_base; + unsigned int fparg_count; + + /* 'vec_base' points at the space for v2, and grows upwards as + we use vector registers. */ + valp vec_base; + unsigned int vecarg_count; + + unsigned int i, words, nargs, nfixedargs; + ffi_type **ptr; + double double_tmp; + union + { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + signed int **si; + unsigned int **ui; + unsigned long **ul; + float **f; + double **d; + float128 **f128; + } p_argv; + unsigned long gprvalue; + unsigned long align; + + stacktop.c = (char *) stack + bytes; + gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64; + gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64; +#if _CALL_ELF == 2 + rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64; +#else + rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64; +#endif + fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64; + fparg_count = 0; + /* Place the vector args below the FPRs, if used, else the GPRs. */ + if (ecif->cif->flags & FLAG_FP_ARGUMENTS) + vec_base.p = fpr_base.p & ~0xF; + else + vec_base.p = gpr_base.p; + vec_base.f128 -= NUM_VEC_ARG_REGISTERS64; + vecarg_count = 0; + next_arg.ul = gpr_base.ul; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); + FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); + FFI_ASSERT (((unsigned long) gpr_base.c & 0xF) == 0); + FFI_ASSERT (((unsigned long) gpr_end.c & 0xF) == 0); + FFI_ASSERT (((unsigned long) vec_base.c & 0xF) == 0); + FFI_ASSERT ((bytes & 0xF) == 0); + + /* Deal with return values that are actually pass-by-reference. */ + if (flags & FLAG_RETVAL_REFERENCE) + *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue; + + /* Now for the arguments. */ + p_argv.v = ecif->avalue; + nargs = ecif->cif->nargs; +#if _CALL_ELF != 2 + nfixedargs = (unsigned) -1; + if ((flags & FLAG_COMPAT) == 0) +#endif + nfixedargs = ecif->cif->nfixedargs; + for (ptr = ecif->cif->arg_types, i = 0; + i < nargs; + i++, ptr++, p_argv.v++) + { + unsigned int elt, elnum; + + switch ((*ptr)->type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + next_arg.p = FFI_ALIGN (next_arg.p, 16); + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + if (vecarg_count < NUM_VEC_ARG_REGISTERS64 && i < nfixedargs) + memcpy (vec_base.f128++, *p_argv.f128, sizeof (float128)); + else + memcpy (next_arg.f128, *p_argv.f128, sizeof (float128)); + if (++next_arg.f128 == gpr_end.f128) + next_arg.f128 = rest.f128; + vecarg_count++; + FFI_ASSERT (__LDBL_MANT_DIG__ == 113); + FFI_ASSERT (flags & FLAG_VEC_ARGUMENTS); + break; + } + if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + double_tmp = (*p_argv.d)[0]; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +# if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +# endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + double_tmp = (*p_argv.d)[1]; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +# if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +# endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (__LDBL_MANT_DIG__ == 106); + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: +#if _CALL_ELF != 2 + do_double: +#endif + double_tmp = **p_argv.d; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +#if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + *next_arg.d = double_tmp; +#endif + } + else + *next_arg.d = double_tmp; + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_FLOAT: +#if _CALL_ELF != 2 + do_float: +#endif + double_tmp = **p_argv.f; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + { + *fpr_base.d++ = double_tmp; +#if _CALL_ELF != 2 + if ((flags & FLAG_COMPAT) != 0) + { +# ifndef __LITTLE_ENDIAN__ + next_arg.f[1] = (float) double_tmp; +# else + next_arg.f[0] = (float) double_tmp; +# endif + } +#endif + } + else + { +# ifndef __LITTLE_ENDIAN__ + next_arg.f[1] = (float) double_tmp; +# else + next_arg.f[0] = (float) double_tmp; +# endif + } + if (++next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + fparg_count++; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_STRUCT: + if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = (*ptr)->alignment; + if (align > 16) + align = 16; + if (align > 1) + { + next_arg.p = FFI_ALIGN (next_arg.p, align); + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + } + } + elt = discover_homogeneous_aggregate (ecif->cif->abi, *ptr, &elnum); + if (elt) + { +#if _CALL_ELF == 2 + union { + void *v; + float *f; + double *d; + float128 *f128; + } arg; + + arg.v = *p_argv.v; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (elt == FFI_TYPE_LONGDOUBLE && + (ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + do + { + if (vecarg_count < NUM_VEC_ARG_REGISTERS64 + && i < nfixedargs) + memcpy (vec_base.f128++, arg.f128++, sizeof (float128)); + else + memcpy (next_arg.f128, arg.f128++, sizeof (float128)); + if (++next_arg.f128 == gpr_end.f128) + next_arg.f128 = rest.f128; + vecarg_count++; + } + while (--elnum != 0); + } + else +#endif + if (elt == FFI_TYPE_FLOAT) + { + do + { + double_tmp = *arg.f++; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 + && i < nfixedargs) + *fpr_base.d++ = double_tmp; + else + *next_arg.f = (float) double_tmp; + if (++next_arg.f == gpr_end.f) + next_arg.f = rest.f; + fparg_count++; + } + while (--elnum != 0); + if ((next_arg.p & 7) != 0) + if (++next_arg.f == gpr_end.f) + next_arg.f = rest.f; + } + else + do + { + double_tmp = *arg.d++; + if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs) + *fpr_base.d++ = double_tmp; + else + *next_arg.d = double_tmp; + if (++next_arg.d == gpr_end.d) + next_arg.d = rest.d; + fparg_count++; + } + while (--elnum != 0); +#else + if (elt == FFI_TYPE_FLOAT) + goto do_float; + else + goto do_double; +#endif + } + else + { + words = ((*ptr)->size + 7) / 8; + if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul) + { + size_t first = gpr_end.c - next_arg.c; + memcpy (next_arg.c, *p_argv.c, first); + memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first); + next_arg.c = rest.c + words * 8 - first; + } + else + { + char *where = next_arg.c; + +#ifndef __LITTLE_ENDIAN__ + /* Structures with size less than eight bytes are passed + left-padded. */ + if ((*ptr)->size < 8) + where += 8 - (*ptr)->size; +#endif + memcpy (where, *p_argv.c, (*ptr)->size); + next_arg.ul += words; + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + } + } + break; + + case FFI_TYPE_UINT8: + gprvalue = **p_argv.uc; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = **p_argv.sc; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = **p_argv.us; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = **p_argv.ss; + goto putgpr; + case FFI_TYPE_UINT32: + gprvalue = **p_argv.ui; + goto putgpr; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + gprvalue = **p_argv.si; + goto putgpr; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + gprvalue = **p_argv.ul; + putgpr: + *next_arg.ul++ = gprvalue; + if (next_arg.ul == gpr_end.ul) + next_arg.ul = rest.ul; + break; + } + } + + FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS + || (next_arg.ul >= gpr_base.ul + && next_arg.ul <= gpr_base.ul + 4)); +} + + +#if _CALL_ELF == 2 +#define MIN_CACHE_LINE_SIZE 8 + +static void +flush_icache (char *wraddr, char *xaddr, int size) +{ + int i; + for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" + : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" + : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) + : "memory"); +} +#endif + + +ffi_status FFI_HIDDEN +ffi_prep_closure_loc_linux64 (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ + if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + +#ifdef FFI_EXEC_STATIC_TRAMP + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + void (*dest)(void) = ffi_closure_LINUX64; + ffi_tramp_set_parms (closure->ftramp, dest, closure); + } + else +#endif + { +#if _CALL_ELF == 2 + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + tramp[0] = 0xe96c0018; /* 0: ld 11,2f-0b(12) */ + tramp[1] = 0xe98c0010; /* ld 12,1f-0b(12) */ + tramp[2] = 0x7d8903a6; /* mtctr 12 */ + tramp[3] = 0x4e800420; /* bctr */ + /* 1: .quad function_addr */ + /* 2: .quad context */ + *(void **) &tramp[4] = (void *) ffi_closure_LINUX64; + *(void **) &tramp[6] = codeloc; + flush_icache ((char *) tramp, (char *) codeloc, 4 * 4); +#else + /* Copy function address and TOC from ffi_closure_LINUX64 OPD. */ + void **tramp = (void **) &closure->tramp[0]; + memcpy (&tramp[0], (void **) ffi_closure_LINUX64, sizeof (void *)); + tramp[1] = codeloc; + memcpy (&tramp[2], (void **) ffi_closure_LINUX64 + 1, sizeof (void *)); +#endif + } + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + + +int FFI_HIDDEN +ffi_closure_helper_LINUX64 (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *rvalue, + unsigned long *pst, + ffi_dblfl *pfr, + float128 *pvec) +{ + /* rvalue is the pointer to space for return value in closure assembly */ + /* pst is the pointer to parameter save area + (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */ + /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */ + /* pvec is the pointer to where v2-v13 are stored in ffi_closure_LINUX64 */ + + void **avalue; + ffi_type **arg_types; + unsigned long i, avn, nfixedargs; + ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64; + float128 *end_pvec = pvec + NUM_VEC_ARG_REGISTERS64; + unsigned long align; + + avalue = alloca (cif->nargs * sizeof (void *)); + + /* Copy the caller's structure return value address so that the + closure returns the data directly to the caller. */ + if (cif->rtype->type == FFI_TYPE_STRUCT + && (cif->flags & FLAG_RETURNS_SMST) == 0) + { + rvalue = (void *) *pst; + pst++; + } + + i = 0; + avn = cif->nargs; +#if _CALL_ELF != 2 + nfixedargs = (unsigned) -1; + if ((cif->flags & FLAG_COMPAT) == 0) +#endif + nfixedargs = cif->nfixedargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) + { + unsigned int elt, elnum; + + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 7; + pst++; + break; +#endif + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 6; + pst++; + break; +#endif + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 4; + pst++; + break; +#endif + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + avalue[i] = pst; + pst++; + break; + + case FFI_TYPE_STRUCT: + if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0) + { + align = arg_types[i]->alignment; + if (align > 16) + align = 16; + if (align > 1) + pst = (unsigned long *) FFI_ALIGN ((size_t) pst, align); + } + elt = discover_homogeneous_aggregate (cif->abi, arg_types[i], &elnum); + if (elt) + { +#if _CALL_ELF == 2 + union { + void *v; + unsigned long *ul; + float *f; + double *d; + float128 *f128; + size_t p; + } to, from; + + /* Repackage the aggregate from its parts. The + aggregate size is not greater than the space taken by + the registers so store back to the register/parameter + save arrays. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (elt == FFI_TYPE_LONGDOUBLE && + (cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + if (pvec + elnum <= end_pvec) + to.v = pvec; + else + to.v = pst; + } + else +#endif + if (pfr + elnum <= end_pfr) + to.v = pfr; + else + to.v = pst; + + avalue[i] = to.v; + from.ul = pst; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (elt == FFI_TYPE_LONGDOUBLE && + (cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + do + { + if (pvec < end_pvec && i < nfixedargs) + memcpy (to.f128, pvec++, sizeof (float128)); + else + memcpy (to.f128, from.f128, sizeof (float128)); + to.f128++; + from.f128++; + } + while (--elnum != 0); + } + else +#endif + if (elt == FFI_TYPE_FLOAT) + { + do + { + if (pfr < end_pfr && i < nfixedargs) + { + *to.f = (float) pfr->d; + pfr++; + } + else + *to.f = *from.f; + to.f++; + from.f++; + } + while (--elnum != 0); + } + else + { + do + { + if (pfr < end_pfr && i < nfixedargs) + { + *to.d = pfr->d; + pfr++; + } + else + *to.d = *from.d; + to.d++; + from.d++; + } + while (--elnum != 0); + } +#else + if (elt == FFI_TYPE_FLOAT) + goto do_float; + else + goto do_double; +#endif + } + else + { +#ifndef __LITTLE_ENDIAN__ + /* Structures with size less than eight bytes are passed + left-padded. */ + if (arg_types[i]->size < 8) + avalue[i] = (char *) pst + 8 - arg_types[i]->size; + else +#endif + avalue[i] = pst; + } + pst += (arg_types[i]->size + 7) / 8; + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if ((cif->abi & FFI_LINUX_LONG_DOUBLE_IEEE128) != 0) + { + if (((unsigned long) pst & 0xF) != 0) + ++pst; + if (pvec < end_pvec && i < nfixedargs) + avalue[i] = pvec++; + else + avalue[i] = pst; + pst += 2; + break; + } + else if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0) + { + if (pfr + 1 < end_pfr && i + 1 < nfixedargs) + { + avalue[i] = pfr; + pfr += 2; + } + else + { + if (pfr < end_pfr && i < nfixedargs) + { + /* Passed partly in f13 and partly on the stack. + Move it all to the stack. */ + *pst = *(unsigned long *) pfr; + pfr++; + } + avalue[i] = pst; + } + pst += 2; + break; + } + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: +#if _CALL_ELF != 2 + do_double: +#endif + /* On the outgoing stack all values are aligned to 8 */ + /* there are 13 64bit floating point registers */ + + if (pfr < end_pfr && i < nfixedargs) + { + avalue[i] = pfr; + pfr++; + } + else + avalue[i] = pst; + pst++; + break; + + case FFI_TYPE_FLOAT: +#if _CALL_ELF != 2 + do_float: +#endif + if (pfr < end_pfr && i < nfixedargs) + { + /* Float values are stored as doubles in the + ffi_closure_LINUX64 code. Fix them here. */ + pfr->f = (float) pfr->d; + avalue[i] = pfr; + pfr++; + } + else + { +#ifndef __LITTLE_ENDIAN__ + avalue[i] = (char *) pst + 4; +#else + avalue[i] = pst; +#endif + } + pst++; + break; + + default: + FFI_ASSERT (0); + } + + i++; + } + + (*fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_LINUX64 how to perform return type promotions. */ + if ((cif->flags & FLAG_RETURNS_SMST) != 0) + { + if ((cif->flags & (FLAG_RETURNS_FP | FLAG_RETURNS_VEC)) == 0) + return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1; + else if ((cif->flags & FLAG_RETURNS_VEC) != 0) + return FFI_V2_TYPE_VECTOR_HOMOG; + else if ((cif->flags & FLAG_RETURNS_64BITS) != 0) + return FFI_V2_TYPE_DOUBLE_HOMOG; + else + return FFI_V2_TYPE_FLOAT_HOMOG; + } + if ((cif->flags & FLAG_RETURNS_VEC) != 0) + return FFI_V2_TYPE_VECTOR; + return cif->rtype->type; +} +#endif diff --git a/deps/libffi/src/powerpc/ffi_powerpc.h b/deps/libffi/src/powerpc/ffi_powerpc.h new file mode 100644 index 00000000000000..960a5c42213a0d --- /dev/null +++ b/deps/libffi/src/powerpc/ffi_powerpc.h @@ -0,0 +1,105 @@ +/* ----------------------------------------------------------------------- + ffi_powerpc.h - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +enum { + /* The assembly depends on these exact flags. */ + /* These go in cr7 */ + FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */ + FLAG_RETURNS_NOTHING = 1 << (31-30), + FLAG_RETURNS_FP = 1 << (31-29), + FLAG_RETURNS_VEC = 1 << (31-28), + + /* These go in cr6 */ + FLAG_RETURNS_64BITS = 1 << (31-27), + FLAG_RETURNS_128BITS = 1 << (31-26), + + FLAG_COMPAT = 1 << (31- 8), /* Not used by assembly */ + + /* These go in cr1 */ + FLAG_ARG_NEEDS_COPY = 1 << (31- 7), /* Used by sysv code */ + FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */ + FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */ + FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), + FLAG_RETVAL_REFERENCE = 1 << (31- 4), + FLAG_VEC_ARGUMENTS = 1 << (31- 3), +}; + +typedef union +{ + float f; + double d; +} ffi_dblfl; + +#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128) +typedef _Float128 float128; +#elif defined(__FLOAT128__) +typedef __float128 float128; +#else +typedef char float128[16] __attribute__((aligned(16))); +#endif + +void FFI_HIDDEN ffi_closure_SYSV (void); +void FFI_HIDDEN ffi_go_closure_sysv (void); +void FFI_HIDDEN ffi_call_SYSV(extended_cif *, void (*)(void), void *, + unsigned, void *, int); + +void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi); +ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *); +ffi_status FFI_HIDDEN ffi_prep_closure_loc_sysv (ffi_closure *, + ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *); +int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *, unsigned long *, + ffi_dblfl *, unsigned long *); + +void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, void (*) (void), void *, + unsigned long, void *, long); +void FFI_HIDDEN ffi_closure_LINUX64 (void); +void FFI_HIDDEN ffi_go_closure_linux64 (void); + +void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi); +ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *); +ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int, + unsigned int); +void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const); +ffi_status FFI_HIDDEN ffi_prep_closure_loc_linux64 (ffi_closure *, ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *); +int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_cif *, + void (*) (ffi_cif *, void *, + void **, void *), + void *, void *, + unsigned long *, ffi_dblfl *, + float128 *); diff --git a/deps/libffi/src/powerpc/ffi_sysv.c b/deps/libffi/src/powerpc/ffi_sysv.c new file mode 100644 index 00000000000000..5d7c5c82365899 --- /dev/null +++ b/deps/libffi/src/powerpc/ffi_sysv.c @@ -0,0 +1,933 @@ +/* ----------------------------------------------------------------------- + ffi_sysv.c - Copyright (C) 2013 IBM + Copyright (C) 2011 Anthony Green + Copyright (C) 2011 Kyle Moffett + Copyright (C) 2008 Red Hat, Inc + Copyright (C) 2007, 2008 Free Software Foundation, Inc + Copyright (c) 1998 Geoffrey Keating + + PowerPC Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ + +#include "ffi.h" +#include + +#ifndef POWERPC64 +#include "ffi_common.h" +#include "ffi_powerpc.h" + + +/* About the SYSV ABI. */ +#define ASM_NEEDS_REGISTERS 6 +#define NUM_GPR_ARG_REGISTERS 8 +#define NUM_FPR_ARG_REGISTERS 8 + + +#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +/* Adjust size of ffi_type_longdouble. */ +void FFI_HIDDEN +ffi_prep_types_sysv (ffi_abi abi) +{ + if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV) + { + ffi_type_longdouble.size = 8; + ffi_type_longdouble.alignment = 8; + } + else + { + ffi_type_longdouble.size = 16; + ffi_type_longdouble.alignment = 16; + } +} +#endif + +/* Transform long double, double and float to other types as per abi. */ +static int +translate_float (int abi, int type) +{ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (type == FFI_TYPE_LONGDOUBLE + && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0) + type = FFI_TYPE_DOUBLE; +#endif + if ((abi & FFI_SYSV_SOFT_FLOAT) != 0) + { + if (type == FFI_TYPE_FLOAT) + type = FFI_TYPE_UINT32; + else if (type == FFI_TYPE_DOUBLE) + type = FFI_TYPE_UINT64; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + else if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_UINT128; + } + else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0) + { + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + } + return type; +} + +/* Perform machine dependent cif processing */ +static ffi_status +ffi_prep_cif_sysv_core (ffi_cif *cif) +{ + ffi_type **ptr; + unsigned bytes; + unsigned i, fpr_count = 0, gpr_count = 0, stack_count = 0; + unsigned flags = cif->flags; + unsigned struct_copy_size = 0; + unsigned type = cif->rtype->type; + unsigned size = cif->rtype->size; + + /* The machine-independent calculation of cif->bytes doesn't work + for us. Redo the calculation. */ + + /* Space for the frame pointer, callee's LR, and the asm's temp regs. */ + bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int); + + /* Space for the GPR registers. */ + bytes += NUM_GPR_ARG_REGISTERS * sizeof (int); + + /* Return value handling. The rules for SYSV are as follows: + - 32-bit (or less) integer values are returned in gpr3; + - Structures of size <= 4 bytes also returned in gpr3; + - 64-bit integer values and structures between 5 and 8 bytes are returned + in gpr3 and gpr4; + - Larger structures are allocated space and a pointer is passed as + the first argument. + - Single/double FP values are returned in fpr1; + - long doubles (if not equivalent to double) are returned in + fpr1,fpr2 for Linux and as for large structs for SysV. */ + + type = translate_float (cif->abi, type); + + switch (type) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ +#endif + case FFI_TYPE_DOUBLE: + flags |= FLAG_RETURNS_64BITS; + /* Fall through. */ + case FFI_TYPE_FLOAT: + flags |= FLAG_RETURNS_FP; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_UINT128: + flags |= FLAG_RETURNS_128BITS; + /* Fall through. */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags |= FLAG_RETURNS_64BITS; + break; + + case FFI_TYPE_STRUCT: + /* The final SYSV ABI says that structures smaller or equal 8 bytes + are returned in r3/r4. A draft ABI used by linux instead + returns them in memory. */ + if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) + { + flags |= FLAG_RETURNS_SMST; + break; + } + gpr_count++; + flags |= FLAG_RETVAL_REFERENCE; + /* Fall through. */ + case FFI_TYPE_VOID: + flags |= FLAG_RETURNS_NOTHING; + break; + + default: + /* Returns 32-bit integer, or similar. Nothing to do here. */ + break; + } + + /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the + first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest + goes on the stack. Structures and long doubles (if not equivalent + to double) are passed as a pointer to a copy of the structure. + Stuff on the stack needs to keep proper alignment. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + unsigned short typenum = (*ptr)->type; + + typenum = translate_float (cif->abi, typenum); + + switch (typenum) + { +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (fpr_count >= NUM_FPR_ARG_REGISTERS - 1) + { + fpr_count = NUM_FPR_ARG_REGISTERS; + /* 8-byte align long doubles. */ + stack_count += stack_count & 1; + stack_count += 4; + } + else + fpr_count += 2; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; +#endif + + case FFI_TYPE_DOUBLE: + if (fpr_count >= NUM_FPR_ARG_REGISTERS) + { + /* 8-byte align doubles. */ + stack_count += stack_count & 1; + stack_count += 2; + } + else + fpr_count += 1; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_FLOAT: + if (fpr_count >= NUM_FPR_ARG_REGISTERS) + /* Yes, we don't follow the ABI, but neither does gcc. */ + stack_count += 1; + else + fpr_count += 1; +#ifdef __NO_FPRS__ + return FFI_BAD_ABI; +#endif + break; + + case FFI_TYPE_UINT128: + /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set + of four consecutive gprs. If we do not have enough, we + have to adjust the gpr_count value. */ + if (gpr_count >= NUM_GPR_ARG_REGISTERS - 3) + gpr_count = NUM_GPR_ARG_REGISTERS; + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + stack_count += 4; + else + gpr_count += 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + /* 'long long' arguments are passed as two words, but + either both words must fit in registers or both go + on the stack. If they go on the stack, they must + be 8-byte-aligned. + + Also, only certain register pairs can be used for + passing long long int -- specifically (r3,r4), (r5,r6), + (r7,r8), (r9,r10). */ + gpr_count += gpr_count & 1; + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + { + stack_count += stack_count & 1; + stack_count += 2; + } + else + gpr_count += 2; + break; + + case FFI_TYPE_STRUCT: + /* We must allocate space for a copy of these to enforce + pass-by-value. Pad the space up to a multiple of 16 + bytes (the maximum alignment required for anything under + the SYSV ABI). */ + struct_copy_size += ((*ptr)->size + 15) & ~0xF; + /* Fall through (allocate space for the pointer). */ + + case FFI_TYPE_POINTER: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* Everything else is passed as a 4-byte word in a GPR, either + the object itself or a pointer to it. */ + if (gpr_count >= NUM_GPR_ARG_REGISTERS) + stack_count += 1; + else + gpr_count += 1; + break; + + default: + FFI_ASSERT (0); + } + } + + if (fpr_count != 0) + flags |= FLAG_FP_ARGUMENTS; + if (gpr_count > 4) + flags |= FLAG_4_GPR_ARGUMENTS; + if (struct_copy_size != 0) + flags |= FLAG_ARG_NEEDS_COPY; + + /* Space for the FPR registers, if needed. */ + if (fpr_count != 0) + bytes += NUM_FPR_ARG_REGISTERS * sizeof (double); + + /* Stack space. */ + bytes += stack_count * sizeof (int); + + /* The stack space allocated needs to be a multiple of 16 bytes. */ + bytes = (bytes + 15) & ~0xF; + + /* Add in the space for the copied structures. */ + bytes += struct_copy_size; + + cif->flags = flags; + cif->bytes = bytes; + + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_sysv (ffi_cif *cif) +{ + if ((cif->abi & FFI_SYSV) == 0) + { + /* This call is from old code. Translate to new ABI values. */ + cif->flags |= FLAG_COMPAT; + switch (cif->abi) + { + default: + return FFI_BAD_ABI; + + case FFI_COMPAT_SYSV: + cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128; + break; + + case FFI_COMPAT_GCC_SYSV: + cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128; + break; + + case FFI_COMPAT_LINUX: + cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE + | FFI_SYSV_LONG_DOUBLE_128); + break; + + case FFI_COMPAT_LINUX_SOFT_FLOAT: + cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE + | FFI_SYSV_LONG_DOUBLE_128); + break; + } + } + return ffi_prep_cif_sysv_core (cif); +} + +/* ffi_prep_args_SYSV is called by the assembly routine once stack space + has been allocated for the function's arguments. + + The stack layout we want looks like this: + + | Return address from ffi_call_SYSV 4bytes | higher addresses + |--------------------------------------------| + | Previous backchain pointer 4 | stack pointer here + |--------------------------------------------|<+ <<< on entry to + | Saved r28-r31 4*4 | | ffi_call_SYSV + |--------------------------------------------| | + | GPR registers r3-r10 8*4 | | ffi_call_SYSV + |--------------------------------------------| | + | FPR registers f1-f8 (optional) 8*8 | | + |--------------------------------------------| | stack | + | Space for copied structures | | grows | + |--------------------------------------------| | down V + | Parameters that didn't fit in registers | | + |--------------------------------------------| | lower addresses + | Space for callee's LR 4 | | + |--------------------------------------------| | stack pointer here + | Current backchain pointer 4 |-/ during + |--------------------------------------------| <<< ffi_call_SYSV + +*/ + +void FFI_HIDDEN +ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) +{ + const unsigned bytes = ecif->cif->bytes; + const unsigned flags = ecif->cif->flags; + + typedef union + { + char *c; + unsigned *u; + long long *ll; + float *f; + double *d; + } valp; + + /* 'stacktop' points at the previous backchain pointer. */ + valp stacktop; + + /* 'gpr_base' points at the space for gpr3, and grows upwards as + we use GPR registers. */ + valp gpr_base; + valp gpr_end; + +#ifndef __NO_FPRS__ + /* 'fpr_base' points at the space for fpr1, and grows upwards as + we use FPR registers. */ + valp fpr_base; + valp fpr_end; +#endif + + /* 'copy_space' grows down as we put structures in it. It should + stay 16-byte aligned. */ + valp copy_space; + + /* 'next_arg' grows up as we put parameters in it. */ + valp next_arg; + + int i; + ffi_type **ptr; +#ifndef __NO_FPRS__ + double double_tmp; +#endif + union + { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + unsigned int **ui; + long long **ll; + float **f; + double **d; + } p_argv; + size_t struct_copy_size; + unsigned gprvalue; + + stacktop.c = (char *) stack + bytes; + gpr_end.u = stacktop.u - ASM_NEEDS_REGISTERS; + gpr_base.u = gpr_end.u - NUM_GPR_ARG_REGISTERS; +#ifndef __NO_FPRS__ + fpr_end.d = gpr_base.d; + fpr_base.d = fpr_end.d - NUM_FPR_ARG_REGISTERS; + copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c); +#else + copy_space.c = gpr_base.c; +#endif + next_arg.u = stack + 2; + + /* Check that everything starts aligned properly. */ + FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0); + FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0); + FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0); + FFI_ASSERT ((bytes & 0xF) == 0); + FFI_ASSERT (copy_space.c >= next_arg.c); + + /* Deal with return values that are actually pass-by-reference. */ + if (flags & FLAG_RETVAL_REFERENCE) + *gpr_base.u++ = (unsigned) (char *) ecif->rvalue; + + /* Now for the arguments. */ + p_argv.v = ecif->avalue; + for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; + i > 0; + i--, ptr++, p_argv.v++) + { + unsigned int typenum = (*ptr)->type; + + typenum = translate_float (ecif->cif->abi, typenum); + + /* Now test the translated value */ + switch (typenum) + { +#ifndef __NO_FPRS__ +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + double_tmp = (*p_argv.d)[0]; + + if (fpr_base.d >= fpr_end.d - 1) + { + fpr_base.d = fpr_end.d; + if (((next_arg.u - stack) & 1) != 0) + next_arg.u += 1; + *next_arg.d = double_tmp; + next_arg.u += 2; + double_tmp = (*p_argv.d)[1]; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + { + *fpr_base.d++ = double_tmp; + double_tmp = (*p_argv.d)[1]; + *fpr_base.d++ = double_tmp; + } + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; +# endif + case FFI_TYPE_DOUBLE: + double_tmp = **p_argv.d; + + if (fpr_base.d >= fpr_end.d) + { + if (((next_arg.u - stack) & 1) != 0) + next_arg.u += 1; + *next_arg.d = double_tmp; + next_arg.u += 2; + } + else + *fpr_base.d++ = double_tmp; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; + + case FFI_TYPE_FLOAT: + double_tmp = **p_argv.f; + if (fpr_base.d >= fpr_end.d) + { + *next_arg.f = (float) double_tmp; + next_arg.u += 1; + } + else + *fpr_base.d++ = double_tmp; + FFI_ASSERT (flags & FLAG_FP_ARGUMENTS); + break; +#endif /* have FPRs */ + + case FFI_TYPE_UINT128: + /* The soft float ABI for long doubles works like this, a long double + is passed in four consecutive GPRs if available. A maximum of 2 + long doubles can be passed in gprs. If we do not have 4 GPRs + left, the long double is passed on the stack, 4-byte aligned. */ + if (gpr_base.u >= gpr_end.u - 3) + { + unsigned int ii; + gpr_base.u = gpr_end.u; + for (ii = 0; ii < 4; ii++) + { + unsigned int int_tmp = (*p_argv.ui)[ii]; + *next_arg.u++ = int_tmp; + } + } + else + { + unsigned int ii; + for (ii = 0; ii < 4; ii++) + { + unsigned int int_tmp = (*p_argv.ui)[ii]; + *gpr_base.u++ = int_tmp; + } + } + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (gpr_base.u >= gpr_end.u - 1) + { + gpr_base.u = gpr_end.u; + if (((next_arg.u - stack) & 1) != 0) + next_arg.u++; + *next_arg.ll = **p_argv.ll; + next_arg.u += 2; + } + else + { + /* The abi states only certain register pairs can be + used for passing long long int specifically (r3,r4), + (r5,r6), (r7,r8), (r9,r10). If next arg is long long + but not correct starting register of pair then skip + until the proper starting register. */ + if (((gpr_end.u - gpr_base.u) & 1) != 0) + gpr_base.u++; + *gpr_base.ll++ = **p_argv.ll; + } + break; + + case FFI_TYPE_STRUCT: + struct_copy_size = ((*ptr)->size + 15) & ~0xF; + copy_space.c -= struct_copy_size; + memcpy (copy_space.c, *p_argv.c, (*ptr)->size); + + gprvalue = (unsigned long) copy_space.c; + + FFI_ASSERT (copy_space.c > next_arg.c); + FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY); + goto putgpr; + + case FFI_TYPE_UINT8: + gprvalue = **p_argv.uc; + goto putgpr; + case FFI_TYPE_SINT8: + gprvalue = **p_argv.sc; + goto putgpr; + case FFI_TYPE_UINT16: + gprvalue = **p_argv.us; + goto putgpr; + case FFI_TYPE_SINT16: + gprvalue = **p_argv.ss; + goto putgpr; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + + gprvalue = **p_argv.ui; + + putgpr: + if (gpr_base.u >= gpr_end.u) + *next_arg.u++ = gprvalue; + else + *gpr_base.u++ = gprvalue; + break; + } + } + + /* Check that we didn't overrun the stack... */ + FFI_ASSERT (copy_space.c >= next_arg.c); + FFI_ASSERT (gpr_base.u <= gpr_end.u); +#ifndef __NO_FPRS__ + FFI_ASSERT (fpr_base.u <= fpr_end.u); +#endif + FFI_ASSERT (((flags & FLAG_4_GPR_ARGUMENTS) != 0) + == (gpr_end.u - gpr_base.u < 4)); +} + +#define MIN_CACHE_LINE_SIZE 8 + +static void +flush_icache (char *wraddr, char *xaddr, int size) +{ + int i; + for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" + : : "r" (xaddr + i), "r" (wraddr + i) : "memory"); + __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" + : : "r"(xaddr + size - 1), "r"(wraddr + size - 1) + : "memory"); +} + +ffi_status FFI_HIDDEN +ffi_prep_closure_loc_sysv (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ + if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + +#ifdef FFI_EXEC_STATIC_TRAMP + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + void (*dest)(void) = ffi_closure_SYSV; + ffi_tramp_set_parms (closure->ftramp, dest, closure); + } + else +#endif + { + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + tramp[0] = 0x7c0802a6; /* mflr r0 */ + tramp[1] = 0x429f0005; /* bcl 20,31,.+4 */ + tramp[2] = 0x7d6802a6; /* mflr r11 */ + tramp[3] = 0x7c0803a6; /* mtlr r0 */ + tramp[4] = 0x800b0018; /* lwz r0,24(r11) */ + tramp[5] = 0x816b001c; /* lwz r11,28(r11) */ + tramp[6] = 0x7c0903a6; /* mtctr r0 */ + tramp[7] = 0x4e800420; /* bctr */ + *(void **) &tramp[8] = (void *) ffi_closure_SYSV; /* function */ + *(void **) &tramp[9] = codeloc; /* context */ + + /* Flush the icache. */ + flush_icache ((char *)tramp, (char *)codeloc, 8 * 4); + } + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + entry, r11 holds the address of the closure. + After storing the registers that could possibly contain + parameters to be passed into the stack frame and setting + up space for a return value, ffi_closure_SYSV invokes the + following helper function to do most of the work. */ + +int +ffi_closure_helper_SYSV (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *rvalue, + unsigned long *pgr, + ffi_dblfl *pfr, + unsigned long *pst) +{ + /* rvalue is the pointer to space for return value in closure assembly */ + /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */ + /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */ + /* pst is the pointer to outgoing parameter stack in original caller */ + + void ** avalue; + ffi_type ** arg_types; + long i, avn; +#ifndef __NO_FPRS__ + long nf = 0; /* number of floating registers already used */ +#endif + long ng = 0; /* number of general registers already used */ + + unsigned size = cif->rtype->size; + unsigned short rtypenum = cif->rtype->type; + + avalue = alloca (cif->nargs * sizeof (void *)); + + /* First translate for softfloat/nonlinux */ + rtypenum = translate_float (cif->abi, rtypenum); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. + For FFI_SYSV the result is passed in r3/r4 if the struct size is less + or equal 8 bytes. */ + if (rtypenum == FFI_TYPE_STRUCT + && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)) + { + rvalue = (void *) *pgr; + ng++; + pgr++; + } + + i = 0; + avn = cif->nargs; + arg_types = cif->arg_types; + + /* Grab the addresses of the arguments from the stack frame. */ + while (i < avn) { + unsigned short typenum = arg_types[i]->type; + + /* We may need to handle some values depending on ABI. */ + typenum = translate_float (cif->abi, typenum); + + switch (typenum) + { +#ifndef __NO_FPRS__ + case FFI_TYPE_FLOAT: + /* Unfortunately float values are stored as doubles + in the ffi_closure_SYSV code (since we don't check + the type in that routine). */ + if (nf < NUM_FPR_ARG_REGISTERS) + { + /* FIXME? here we are really changing the values + stored in the original calling routines outgoing + parameter stack. This is probably a really + naughty thing to do but... */ + double temp = pfr->d; + pfr->f = (float) temp; + avalue[i] = pfr; + nf++; + pfr++; + } + else + { + avalue[i] = pst; + pst += 1; + } + break; + + case FFI_TYPE_DOUBLE: + if (nf < NUM_FPR_ARG_REGISTERS) + { + avalue[i] = pfr; + nf++; + pfr++; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 2; + } + break; + +# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + if (nf < NUM_FPR_ARG_REGISTERS - 1) + { + avalue[i] = pfr; + pfr += 2; + nf += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 4; + nf = 8; + } + break; +# endif +#endif + + case FFI_TYPE_UINT128: + /* Test if for the whole long double, 4 gprs are available. + otherwise the stuff ends up on the stack. */ + if (ng < NUM_GPR_ARG_REGISTERS - 3) + { + avalue[i] = pgr; + pgr += 4; + ng += 4; + } + else + { + avalue[i] = pst; + pst += 4; + ng = 8+4; + } + break; + + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: +#ifndef __LITTLE_ENDIAN__ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (char *) pgr + 3; + ng++; + pgr++; + } + else + { + avalue[i] = (char *) pst + 3; + pst++; + } + break; +#endif + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: +#ifndef __LITTLE_ENDIAN__ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (char *) pgr + 2; + ng++; + pgr++; + } + else + { + avalue[i] = (char *) pst + 2; + pst++; + } + break; +#endif + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = pgr; + ng++; + pgr++; + } + else + { + avalue[i] = pst; + pst++; + } + break; + + case FFI_TYPE_STRUCT: + /* Structs are passed by reference. The address will appear in a + gpr if it is one of the first 8 arguments. */ + if (ng < NUM_GPR_ARG_REGISTERS) + { + avalue[i] = (void *) *pgr; + ng++; + pgr++; + } + else + { + avalue[i] = (void *) *pst; + pst++; + } + break; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + /* Passing long long ints are complex, they must + be passed in suitable register pairs such as + (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10) + and if the entire pair aren't available then the outgoing + parameter stack is used for both but an alignment of 8 + must will be kept. So we must either look in pgr + or pst to find the correct address for this type + of parameter. */ + if (ng < NUM_GPR_ARG_REGISTERS - 1) + { + if (ng & 1) + { + /* skip r4, r6, r8 as starting points */ + ng++; + pgr++; + } + avalue[i] = pgr; + ng += 2; + pgr += 2; + } + else + { + if (((long) pst) & 4) + pst++; + avalue[i] = pst; + pst += 2; + ng = NUM_GPR_ARG_REGISTERS; + } + break; + + default: + FFI_ASSERT (0); + } + + i++; + } + + (*fun) (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. + Because the FFI_SYSV ABI returns the structures <= 8 bytes in + r3/r4 we have to tell ffi_closure_SYSV how to treat them. We + combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of + the struct less one. We never have a struct with size zero. + See the comment in ffitarget.h about ordering. */ + if (rtypenum == FFI_TYPE_STRUCT + && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8) + return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size; + return rtypenum; +} +#endif diff --git a/deps/libffi/src/powerpc/ffitarget.h b/deps/libffi/src/powerpc/ffitarget.h new file mode 100644 index 00000000000000..7fb9a939082710 --- /dev/null +++ b/deps/libffi/src/powerpc/ffitarget.h @@ -0,0 +1,204 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc + Copyright (c) 1996-2003 Red Hat, Inc. + + Target configuration macros for PowerPC. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#ifndef POWERPC_DARWIN64 +#define POWERPC_DARWIN64 +#endif +#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */ +#ifndef POWERPC64 +#define POWERPC64 +#endif +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + +#if defined (POWERPC_AIX) + FFI_AIX, + FFI_DARWIN, + FFI_DEFAULT_ABI = FFI_AIX, + FFI_LAST_ABI + +#elif defined (POWERPC_DARWIN) + FFI_AIX, + FFI_DARWIN, + FFI_DEFAULT_ABI = FFI_DARWIN, + FFI_LAST_ABI + +#else + /* The FFI_COMPAT values are used by old code. Since libffi may be + a shared library we have to support old values for backwards + compatibility. */ + FFI_COMPAT_SYSV, + FFI_COMPAT_GCC_SYSV, + FFI_COMPAT_LINUX64, + FFI_COMPAT_LINUX, + FFI_COMPAT_LINUX_SOFT_FLOAT, + +# if defined (POWERPC64) + /* This bit, always set in new code, must not be set in any of the + old FFI_COMPAT values that might be used for 64-bit linux. We + only need worry about FFI_COMPAT_LINUX64, but to be safe avoid + all old values. */ + FFI_LINUX = 8, + /* This and following bits can reuse FFI_COMPAT values. */ + FFI_LINUX_STRUCT_ALIGN = 1, + FFI_LINUX_LONG_DOUBLE_128 = 2, + FFI_LINUX_LONG_DOUBLE_IEEE128 = 4, + FFI_DEFAULT_ABI = (FFI_LINUX +# ifdef __STRUCT_PARM_ALIGN__ + | FFI_LINUX_STRUCT_ALIGN +# endif +# ifdef __LONG_DOUBLE_128__ + | FFI_LINUX_LONG_DOUBLE_128 +# ifdef __LONG_DOUBLE_IEEE128__ + | FFI_LINUX_LONG_DOUBLE_IEEE128 +# endif +# endif + ), + FFI_LAST_ABI = 16 + +# else + /* This bit, always set in new code, must not be set in any of the + old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */ + FFI_SYSV = 8, + /* This and following bits can reuse FFI_COMPAT values. */ + FFI_SYSV_SOFT_FLOAT = 1, + FFI_SYSV_STRUCT_RET = 2, + FFI_SYSV_IBM_LONG_DOUBLE = 4, + FFI_SYSV_LONG_DOUBLE_128 = 16, + + FFI_DEFAULT_ABI = (FFI_SYSV +# ifdef __NO_FPRS__ + | FFI_SYSV_SOFT_FLOAT +# endif +# if (defined (__SVR4_STRUCT_RETURN) \ + || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN)) + | FFI_SYSV_STRUCT_RET +# endif +# if __LDBL_MANT_DIG__ == 106 + | FFI_SYSV_IBM_LONG_DOUBLE +# endif +# ifdef __LONG_DOUBLE_128__ + | FFI_SYSV_LONG_DOUBLE_128 +# endif + ), + FFI_LAST_ABI = 32 +# endif +#endif + +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#if defined (POWERPC) || defined (POWERPC_FREEBSD) +# define FFI_GO_CLOSURES 1 +# define FFI_TARGET_SPECIFIC_VARIADIC 1 +# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs +#endif +#if defined (POWERPC_AIX) +# define FFI_GO_CLOSURES 1 +#endif + +/* ppc_closure.S and linux64_closure.S expect this. */ +#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER + +/* We define additional types below. If generic types are added that + must be supported by powerpc libffi then it is likely that + FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in + ppc_closure.S and linux64_closure.S be extended. */ + +#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \ + || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \ + && !defined FFI_TARGET_HAS_COMPLEX_TYPE)) +# error "You likely have a broken powerpc libffi" +#endif + +/* Needed for soft-float long-double-128 support. */ +#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1) + +/* Needed for FFI_SYSV small structure returns. */ +#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2) + +/* Used by ELFv2 for homogenous structure returns. */ +#define FFI_V2_TYPE_VECTOR (FFI_PPC_TYPE_LAST + 1) +#define FFI_V2_TYPE_VECTOR_HOMOG (FFI_PPC_TYPE_LAST + 2) +#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 3) +#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 4) +#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 5) + +#if _CALL_ELF == 2 +# define FFI_TRAMPOLINE_SIZE 32 +#else +# if defined(POWERPC64) || defined(POWERPC_AIX) +# if defined(POWERPC_DARWIN64) +# define FFI_TRAMPOLINE_SIZE 48 +# else +# define FFI_TRAMPOLINE_SIZE 24 +# endif +# else /* POWERPC || POWERPC_AIX */ +# define FFI_TRAMPOLINE_SIZE 40 +# endif +#endif + +#ifndef LIBFFI_ASM +#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX) +struct ffi_aix_trampoline_struct { + void * code_pointer; /* Pointer to ffi_closure_ASM */ + void * toc; /* TOC */ + void * static_chain; /* Pointer to closure */ +}; +#endif +#endif + +#endif diff --git a/deps/libffi/src/powerpc/internal.h b/deps/libffi/src/powerpc/internal.h new file mode 100644 index 00000000000000..b3db5f014a179b --- /dev/null +++ b/deps/libffi/src/powerpc/internal.h @@ -0,0 +1,10 @@ +#ifdef FFI_EXEC_STATIC_TRAMP +/* For the trampoline code table mapping, a mapping size of 64K is chosen. */ +#define PPC_TRAMP_MAP_SHIFT 16 +#define PPC_TRAMP_MAP_SIZE (1 << PPC_TRAMP_MAP_SHIFT) +# ifdef __PCREL__ +# define PPC_TRAMP_SIZE 24 +# else +# define PPC_TRAMP_SIZE 40 +# endif /* __PCREL__ */ +#endif /* FFI_EXEC_STATIC_TRAMP */ diff --git a/deps/libffi/src/powerpc/linux64.S b/deps/libffi/src/powerpc/linux64.S new file mode 100644 index 00000000000000..1f876ea39eddc2 --- /dev/null +++ b/deps/libffi/src/powerpc/linux64.S @@ -0,0 +1,293 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC64 Assembly glue. + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + + .machine altivec + +#ifdef POWERPC64 + .hidden ffi_call_LINUX64 + .globl ffi_call_LINUX64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_call_LINUX64: +# ifndef __PCREL__ + addis %r2, %r12, .TOC.-ffi_call_LINUX64@ha + addi %r2, %r2, .TOC.-ffi_call_LINUX64@l +# endif + .localentry ffi_call_LINUX64, . - ffi_call_LINUX64 +# else + .section ".opd","aw" + .align 3 +ffi_call_LINUX64: +# ifdef _CALL_LINUX + .quad .L.ffi_call_LINUX64,.TOC.@tocbase,0 + .type ffi_call_LINUX64,@function + .text +.L.ffi_call_LINUX64: +# else + .hidden .ffi_call_LINUX64 + .globl .ffi_call_LINUX64 + .quad .ffi_call_LINUX64,.TOC.@tocbase,0 + .size ffi_call_LINUX64,24 + .type .ffi_call_LINUX64,@function + .text +.ffi_call_LINUX64: +# endif +# endif + mflr %r0 + std %r28, -32(%r1) + std %r29, -24(%r1) + std %r30, -16(%r1) + std %r31, -8(%r1) + std %r7, 8(%r1) /* closure, saved in cr field. */ + std %r0, 16(%r1) + + mr %r28, %r1 /* our AP. */ + .cfi_def_cfa_register 28 + .cfi_offset 65, 16 + .cfi_offset 31, -8 + .cfi_offset 30, -16 + .cfi_offset 29, -24 + .cfi_offset 28, -32 + + stdux %r1, %r1, %r8 + mr %r31, %r6 /* flags, */ + mr %r30, %r5 /* rvalue, */ + mr %r29, %r4 /* function address. */ +/* Save toc pointer, not for the ffi_prep_args64 call, but for the later + bctrl function call. */ +# if _CALL_ELF == 2 + std %r2, 24(%r1) +# else + std %r2, 40(%r1) +# endif + + /* Call ffi_prep_args64. */ + mr %r4, %r1 +# if defined _CALL_LINUX || _CALL_ELF == 2 +# ifdef __PCREL__ + bl ffi_prep_args64@notoc +# else + bl ffi_prep_args64 + nop +# endif +# else + bl .ffi_prep_args64 + nop +# endif + +# if _CALL_ELF == 2 + mr %r12, %r29 +# else + ld %r12, 0(%r29) + ld %r2, 8(%r29) +# endif + /* Now do the call. */ + /* Set up cr1 with bits 3-7 of the flags. */ + mtcrf 0xc0, %r31 + + /* Get the address to call into CTR. */ + mtctr %r12 + /* Load all those argument registers. */ + addi %r29, %r28, -32-(8*8) + ld %r3, (0*8)(%r29) + ld %r4, (1*8)(%r29) + ld %r5, (2*8)(%r29) + ld %r6, (3*8)(%r29) + bf- 5, 1f + ld %r7, (4*8)(%r29) + ld %r8, (5*8)(%r29) + ld %r9, (6*8)(%r29) + ld %r10, (7*8)(%r29) +1: + + /* Load all the FP registers. */ + bf- 6, 2f + addi %r29, %r29, -(14*8) + lfd %f1, ( 1*8)(%r29) + lfd %f2, ( 2*8)(%r29) + lfd %f3, ( 3*8)(%r29) + lfd %f4, ( 4*8)(%r29) + lfd %f5, ( 5*8)(%r29) + lfd %f6, ( 6*8)(%r29) + lfd %f7, ( 7*8)(%r29) + lfd %f8, ( 8*8)(%r29) + lfd %f9, ( 9*8)(%r29) + lfd %f10, (10*8)(%r29) + lfd %f11, (11*8)(%r29) + lfd %f12, (12*8)(%r29) + lfd %f13, (13*8)(%r29) +2: + + /* Load all the vector registers. */ + bf- 3, 3f + addi %r29, %r29, -16 + lvx %v13, 0, %r29 + addi %r29, %r29, -16 + lvx %v12, 0, %r29 + addi %r29, %r29, -16 + lvx %v11, 0, %r29 + addi %r29, %r29, -16 + lvx %v10, 0, %r29 + addi %r29, %r29, -16 + lvx %v9, 0, %r29 + addi %r29, %r29, -16 + lvx %v8, 0, %r29 + addi %r29, %r29, -16 + lvx %v7, 0, %r29 + addi %r29, %r29, -16 + lvx %v6, 0, %r29 + addi %r29, %r29, -16 + lvx %v5, 0, %r29 + addi %r29, %r29, -16 + lvx %v4, 0, %r29 + addi %r29, %r29, -16 + lvx %v3, 0, %r29 + addi %r29, %r29, -16 + lvx %v2, 0, %r29 +3: + + /* Make the call. */ + ld %r11, 8(%r28) + bctrl + + /* This must follow the call immediately, the unwinder + uses this to find out if r2 has been saved or not. */ +# if _CALL_ELF == 2 + ld %r2, 24(%r1) +# else + ld %r2, 40(%r1) +# endif + + /* Now, deal with the return value. */ + mtcrf 0x01, %r31 + bt 31, .Lstruct_return_value + bt 30, .Ldone_return_value + bt 29, .Lfp_return_value + bt 28, .Lvec_return_value + std %r3, 0(%r30) + /* Fall through... */ + +.Ldone_return_value: + /* Restore the registers we used and return. */ + mr %r1, %r28 + .cfi_def_cfa_register 1 + ld %r0, 16(%r28) + ld %r28, -32(%r28) + mtlr %r0 + ld %r29, -24(%r1) + ld %r30, -16(%r1) + ld %r31, -8(%r1) + blr + +.Lvec_return_value: + stvx %v2, 0, %r30 + b .Ldone_return_value + +.Lfp_return_value: + .cfi_def_cfa_register 28 + mtcrf 0x02, %r31 /* cr6 */ + bf 27, .Lfloat_return_value + stfd %f1, 0(%r30) + bf 26, .Ldone_return_value + stfd %f2, 8(%r30) + b .Ldone_return_value +.Lfloat_return_value: + stfs %f1, 0(%r30) + b .Ldone_return_value + +.Lstruct_return_value: + bf 29, .Lvec_homog_or_small_struct + mtcrf 0x02, %r31 /* cr6 */ + bf 27, .Lfloat_homog_return_value + stfd %f1, 0(%r30) + stfd %f2, 8(%r30) + stfd %f3, 16(%r30) + stfd %f4, 24(%r30) + stfd %f5, 32(%r30) + stfd %f6, 40(%r30) + stfd %f7, 48(%r30) + stfd %f8, 56(%r30) + b .Ldone_return_value + +.Lfloat_homog_return_value: + stfs %f1, 0(%r30) + stfs %f2, 4(%r30) + stfs %f3, 8(%r30) + stfs %f4, 12(%r30) + stfs %f5, 16(%r30) + stfs %f6, 20(%r30) + stfs %f7, 24(%r30) + stfs %f8, 28(%r30) + b .Ldone_return_value + +.Lvec_homog_or_small_struct: + bf 28, .Lsmall_struct + stvx %v2, 0, %r30 + addi %r30, %r30, 16 + stvx %v3, 0, %r30 + addi %r30, %r30, 16 + stvx %v4, 0, %r30 + addi %r30, %r30, 16 + stvx %v5, 0, %r30 + addi %r30, %r30, 16 + stvx %v6, 0, %r30 + addi %r30, %r30, 16 + stvx %v7, 0, %r30 + addi %r30, %r30, 16 + stvx %v8, 0, %r30 + addi %r30, %r30, 16 + stvx %v9, 0, %r30 + b .Ldone_return_value + +.Lsmall_struct: + std %r3, 0(%r30) + std %r4, 8(%r30) + b .Ldone_return_value + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_call_LINUX64,.-ffi_call_LINUX64 +# else +# ifdef _CALL_LINUX + .size ffi_call_LINUX64,.-.L.ffi_call_LINUX64 +# else + .long 0 + .byte 0,12,0,1,128,4,0,0 + .size .ffi_call_LINUX64,.-.ffi_call_LINUX64 +# endif +# endif + +#endif + +#if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/powerpc/linux64_closure.S b/deps/libffi/src/powerpc/linux64_closure.S new file mode 100644 index 00000000000000..d9e5cff64fd07f --- /dev/null +++ b/deps/libffi/src/powerpc/linux64_closure.S @@ -0,0 +1,613 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC64 Assembly glue. + + 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. + ----------------------------------------------------------------------- */ +#define LIBFFI_ASM +#include +#include +#include "internal.h" + + .file "linux64_closure.S" + + .machine altivec + +#ifdef POWERPC64 + FFI_HIDDEN (ffi_closure_LINUX64) + .globl ffi_closure_LINUX64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_closure_LINUX64: +# ifndef __PCREL__ + addis %r2, %r12, .TOC.-ffi_closure_LINUX64@ha + addi %r2, %r2, .TOC.-ffi_closure_LINUX64@l +# endif + .localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64 +# else + .section ".opd","aw" + .align 3 +ffi_closure_LINUX64: +# ifdef _CALL_LINUX + .quad .L.ffi_closure_LINUX64,.TOC.@tocbase,0 + .type ffi_closure_LINUX64,@function + .text +.L.ffi_closure_LINUX64: +# else + FFI_HIDDEN (.ffi_closure_LINUX64) + .globl .ffi_closure_LINUX64 + .quad .ffi_closure_LINUX64,.TOC.@tocbase,0 + .size ffi_closure_LINUX64,24 + .type .ffi_closure_LINUX64,@function + .text +.ffi_closure_LINUX64: +# endif +# endif + +# if _CALL_ELF == 2 +# ifdef __VEC__ +# 32 byte special reg save area + 64 byte parm save area +# + 128 byte retval area + 13*8 fpr save area + 12*16 vec save area + round to 16 +# define STACKFRAME 528 +# else +# 32 byte special reg save area + 64 byte parm save area +# + 64 byte retval area + 13*8 fpr save area + round to 16 +# define STACKFRAME 272 +# endif +# define PARMSAVE 32 +# define RETVAL PARMSAVE+64 +# else +# 48 bytes special reg save area + 64 bytes parm save area +# + 16 bytes retval area + 13*8 bytes fpr save area + round to 16 +# define STACKFRAME 240 +# define PARMSAVE 48 +# define RETVAL PARMSAVE+64 +# endif + +# if _CALL_ELF == 2 + ld %r12, FFI_TRAMPOLINE_SIZE(%r11) # closure->cif + mflr %r0 + lwz %r12, 28(%r12) # cif->flags + mtcrf 0x40, %r12 + addi %r12, %r1, PARMSAVE + bt 7, 0f + # Our caller has not allocated a parameter save area. + # We need to allocate one here and use it to pass gprs to + # ffi_closure_helper_LINUX64. + addi %r12, %r1, -STACKFRAME+PARMSAVE +0: + # Save general regs into parm save area + std %r3, 0(%r12) + std %r4, 8(%r12) + std %r5, 16(%r12) + std %r6, 24(%r12) + std %r7, 32(%r12) + std %r8, 40(%r12) + std %r9, 48(%r12) + std %r10, 56(%r12) + + # load up the pointer to the parm save area + mr %r7, %r12 +# else + # copy r2 to r11 and load TOC into r2 + mr %r11, %r2 + ld %r2, 16(%r2) + + mflr %r0 + # Save general regs into parm save area + # This is the parameter save area set up by our caller. + std %r3, PARMSAVE+0(%r1) + std %r4, PARMSAVE+8(%r1) + std %r5, PARMSAVE+16(%r1) + std %r6, PARMSAVE+24(%r1) + std %r7, PARMSAVE+32(%r1) + std %r8, PARMSAVE+40(%r1) + std %r9, PARMSAVE+48(%r1) + std %r10, PARMSAVE+56(%r1) + + # load up the pointer to the parm save area + addi %r7, %r1, PARMSAVE +# endif + std %r0, 16(%r1) + + # closure->cif + ld %r3, FFI_TRAMPOLINE_SIZE(%r11) + # closure->fun + ld %r4, FFI_TRAMPOLINE_SIZE+8(%r11) + # closure->user_data + ld %r5, FFI_TRAMPOLINE_SIZE+16(%r11) + +.Ldoclosure: + # next save fpr 1 to fpr 13 + stfd %f1, -104+(0*8)(%r1) + stfd %f2, -104+(1*8)(%r1) + stfd %f3, -104+(2*8)(%r1) + stfd %f4, -104+(3*8)(%r1) + stfd %f5, -104+(4*8)(%r1) + stfd %f6, -104+(5*8)(%r1) + stfd %f7, -104+(6*8)(%r1) + stfd %f8, -104+(7*8)(%r1) + stfd %f9, -104+(8*8)(%r1) + stfd %f10, -104+(9*8)(%r1) + stfd %f11, -104+(10*8)(%r1) + stfd %f12, -104+(11*8)(%r1) + stfd %f13, -104+(12*8)(%r1) + + # load up the pointer to the saved fpr registers + addi %r8, %r1, -104 + +# ifdef __VEC__ + # load up the pointer to the saved vector registers + # 8 bytes padding for 16-byte alignment at -112(%r1) + addi %r9, %r8, -24 + stvx %v13, 0, %r9 + addi %r9, %r9, -16 + stvx %v12, 0, %r9 + addi %r9, %r9, -16 + stvx %v11, 0, %r9 + addi %r9, %r9, -16 + stvx %v10, 0, %r9 + addi %r9, %r9, -16 + stvx %v9, 0, %r9 + addi %r9, %r9, -16 + stvx %v8, 0, %r9 + addi %r9, %r9, -16 + stvx %v7, 0, %r9 + addi %r9, %r9, -16 + stvx %v6, 0, %r9 + addi %r9, %r9, -16 + stvx %v5, 0, %r9 + addi %r9, %r9, -16 + stvx %v4, 0, %r9 + addi %r9, %r9, -16 + stvx %v3, 0, %r9 + addi %r9, %r9, -16 + stvx %v2, 0, %r9 +# endif + + # load up the pointer to the result storage + addi %r6, %r1, -STACKFRAME+RETVAL + + stdu %r1, -STACKFRAME(%r1) + .cfi_def_cfa_offset STACKFRAME + .cfi_offset 65, 16 + + # make the call +# if defined _CALL_LINUX || _CALL_ELF == 2 +# ifdef __PCREL__ + bl ffi_closure_helper_LINUX64@notoc +.Lret: +# else + bl ffi_closure_helper_LINUX64 +.Lret: + nop +# endif +# else + bl .ffi_closure_helper_LINUX64 +.Lret: + nop +# endif + + # now r3 contains the return type + # so use it to look up in a table + # so we know how to deal with each type + + # look up the proper starting point in table + # by using return type as offset + ld %r0, STACKFRAME+16(%r1) + cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT + bge .Lsmall + mflr %r4 # move address of .Lret to r4 + sldi %r3, %r3, 4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + add %r3, %r3, %r4 # add contents of table to table address + mtctr %r3 + bctr # jump to it + +# Each of the ret_typeX code fragments has to be exactly 16 bytes long +# (4 instructions). For cache effectiveness we align to a 16 byte boundary +# first. + .align 4 + +.Lret_type0: +# case FFI_TYPE_VOID + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME + nop +# case FFI_TYPE_INT +# ifdef __LITTLE_ENDIAN__ + lwa %r3, RETVAL+0(%r1) +# else + lwa %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_FLOAT + lfs %f1, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_DOUBLE + lfd %f1, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_LONGDOUBLE + lfd %f1, RETVAL+0(%r1) + mtlr %r0 + lfd %f2, RETVAL+8(%r1) + b .Lfinish +# case FFI_TYPE_UINT8 +# ifdef __LITTLE_ENDIAN__ + lbz %r3, RETVAL+0(%r1) +# else + lbz %r3, RETVAL+7(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT8 +# ifdef __LITTLE_ENDIAN__ + lbz %r3, RETVAL+0(%r1) +# else + lbz %r3, RETVAL+7(%r1) +# endif + extsb %r3,%r3 + mtlr %r0 + b .Lfinish +# case FFI_TYPE_UINT16 +# ifdef __LITTLE_ENDIAN__ + lhz %r3, RETVAL+0(%r1) +# else + lhz %r3, RETVAL+6(%r1) +# endif + mtlr %r0 +.Lfinish: + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT16 +# ifdef __LITTLE_ENDIAN__ + lha %r3, RETVAL+0(%r1) +# else + lha %r3, RETVAL+6(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_UINT32 +# ifdef __LITTLE_ENDIAN__ + lwz %r3, RETVAL+0(%r1) +# else + lwz %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT32 +# ifdef __LITTLE_ENDIAN__ + lwa %r3, RETVAL+0(%r1) +# else + lwa %r3, RETVAL+4(%r1) +# endif + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_UINT64 + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_SINT64 + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_TYPE_STRUCT + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME + nop +# case FFI_TYPE_POINTER + ld %r3, RETVAL+0(%r1) + mtlr %r0 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +# case FFI_V2_TYPE_VECTOR + addi %r3, %r1, RETVAL + lvx %v2, 0, %r3 + mtlr %r0 + b .Lfinish +# case FFI_V2_TYPE_VECTOR_HOMOG + addi %r3, %r1, RETVAL + lvx %v2, 0, %r3 + addi %r3, %r3, 16 + b .Lmorevector +# case FFI_V2_TYPE_FLOAT_HOMOG + lfs %f1, RETVAL+0(%r1) + lfs %f2, RETVAL+4(%r1) + lfs %f3, RETVAL+8(%r1) + b .Lmorefloat +# case FFI_V2_TYPE_DOUBLE_HOMOG + lfd %f1, RETVAL+0(%r1) + lfd %f2, RETVAL+8(%r1) + lfd %f3, RETVAL+16(%r1) + lfd %f4, RETVAL+24(%r1) + mtlr %r0 + lfd %f5, RETVAL+32(%r1) + lfd %f6, RETVAL+40(%r1) + lfd %f7, RETVAL+48(%r1) + lfd %f8, RETVAL+56(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lmorevector: + lvx %v3, 0, %r3 + addi %r3, %r3, 16 + lvx %v4, 0, %r3 + addi %r3, %r3, 16 + lvx %v5, 0, %r3 + mtlr %r0 + addi %r3, %r3, 16 + lvx %v6, 0, %r3 + addi %r3, %r3, 16 + lvx %v7, 0, %r3 + addi %r3, %r3, 16 + lvx %v8, 0, %r3 + addi %r3, %r3, 16 + lvx %v9, 0, %r3 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lmorefloat: + lfs %f4, RETVAL+12(%r1) + mtlr %r0 + lfs %f5, RETVAL+16(%r1) + lfs %f6, RETVAL+20(%r1) + lfs %f7, RETVAL+24(%r1) + lfs %f8, RETVAL+28(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lsmall: +# ifdef __LITTLE_ENDIAN__ + ld %r3,RETVAL+0(%r1) + mtlr %r0 + ld %r4,RETVAL+8(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr +# else + # A struct smaller than a dword is returned in the low bits of r3 + # ie. right justified. Larger structs are passed left justified + # in r3 and r4. The return value area on the stack will have + # the structs as they are usually stored in memory. + cmpldi %r3, FFI_V2_TYPE_SMALL_STRUCT + 7 # size 8 bytes? + neg %r5, %r3 + ld %r3,RETVAL+0(%r1) + blt .Lsmalldown + mtlr %r0 + ld %r4,RETVAL+8(%r1) + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset STACKFRAME +.Lsmalldown: + addi %r5, %r5, FFI_V2_TYPE_SMALL_STRUCT + 7 + mtlr %r0 + sldi %r5, %r5, 3 + addi %r1, %r1, STACKFRAME + .cfi_def_cfa_offset 0 + srd %r3, %r3, %r5 + blr +# endif + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_closure_LINUX64,.-ffi_closure_LINUX64 +# else +# ifdef _CALL_LINUX + .size ffi_closure_LINUX64,.-.L.ffi_closure_LINUX64 +# else + .long 0 + .byte 0,12,0,1,128,0,0,0 + .size .ffi_closure_LINUX64,.-.ffi_closure_LINUX64 +# endif +# endif + + + FFI_HIDDEN (ffi_go_closure_linux64) + .globl ffi_go_closure_linux64 + .text + .cfi_startproc +# if _CALL_ELF == 2 +ffi_go_closure_linux64: +# ifndef __PCREL__ + addis %r2, %r12, .TOC.-ffi_go_closure_linux64@ha + addi %r2, %r2, .TOC.-ffi_go_closure_linux64@l +# endif + .localentry ffi_go_closure_linux64, . - ffi_go_closure_linux64 +# else + .section ".opd","aw" + .align 3 +ffi_go_closure_linux64: +# ifdef _CALL_LINUX + .quad .L.ffi_go_closure_linux64,.TOC.@tocbase,0 + .type ffi_go_closure_linux64,@function + .text +.L.ffi_go_closure_linux64: +# else + FFI_HIDDEN (.ffi_go_closure_linux64) + .globl .ffi_go_closure_linux64 + .quad .ffi_go_closure_linux64,.TOC.@tocbase,0 + .size ffi_go_closure_linux64,24 + .type .ffi_go_closure_linux64,@function + .text +.ffi_go_closure_linux64: +# endif +# endif + +# if _CALL_ELF == 2 + ld %r12, 8(%r11) # closure->cif + mflr %r0 + lwz %r12, 28(%r12) # cif->flags + mtcrf 0x40, %r12 + addi %r12, %r1, PARMSAVE + bt 7, 0f + # Our caller has not allocated a parameter save area. + # We need to allocate one here and use it to pass gprs to + # ffi_closure_helper_LINUX64. + addi %r12, %r1, -STACKFRAME+PARMSAVE +0: + # Save general regs into parm save area + std %r3, 0(%r12) + std %r4, 8(%r12) + std %r5, 16(%r12) + std %r6, 24(%r12) + std %r7, 32(%r12) + std %r8, 40(%r12) + std %r9, 48(%r12) + std %r10, 56(%r12) + + # load up the pointer to the parm save area + mr %r7, %r12 +# else + mflr %r0 + # Save general regs into parm save area + # This is the parameter save area set up by our caller. + std %r3, PARMSAVE+0(%r1) + std %r4, PARMSAVE+8(%r1) + std %r5, PARMSAVE+16(%r1) + std %r6, PARMSAVE+24(%r1) + std %r7, PARMSAVE+32(%r1) + std %r8, PARMSAVE+40(%r1) + std %r9, PARMSAVE+48(%r1) + std %r10, PARMSAVE+56(%r1) + + # load up the pointer to the parm save area + addi %r7, %r1, PARMSAVE +# endif + std %r0, 16(%r1) + + # closure->cif + ld %r3, 8(%r11) + # closure->fun + ld %r4, 16(%r11) + # user_data + mr %r5, %r11 + b .Ldoclosure + + .cfi_endproc +# if _CALL_ELF == 2 + .size ffi_go_closure_linux64,.-ffi_go_closure_linux64 +# else +# ifdef _CALL_LINUX + .size ffi_go_closure_linux64,.-.L.ffi_go_closure_linux64 +# else + .long 0 + .byte 0,12,0,1,128,0,0,0 + .size .ffi_go_closure_linux64,.-.ffi_go_closure_linux64 +# endif +# endif + +#ifdef FFI_EXEC_STATIC_TRAMP + .text + .align PPC_TRAMP_MAP_SHIFT + FFI_HIDDEN (trampoline_code_table) + .globl trampoline_code_table +# if _CALL_ELF == 2 + .type trampoline_code_table,@function +trampoline_code_table: + .localentry trampoline_code_table,.-trampoline_code_table +# else + .section ".opd","aw" + .align 3 +trampoline_code_table: + .quad .L.trampoline_code_table,.TOC.@tocbase,0 + .type trampoline_code_table,@function + .text +.L.trampoline_code_table: +# endif + .rept PPC_TRAMP_MAP_SIZE / PPC_TRAMP_SIZE +#ifdef __PCREL__ + pla %r2,PPC_TRAMP_MAP_SIZE + ld %r11,0(%r2) + ld %r12,8(%r2) + mtctr %r12 + bctr +#else + mflr %r0 + bcl 20,31,$+4 + mflr %r11 + addis %r11,%r11,PPC_TRAMP_MAP_SIZE@ha + mtlr %r0 + ld %r12,(PPC_TRAMP_MAP_SIZE+0)@l(%r11) + mtctr %r12 + ld %r11,(PPC_TRAMP_MAP_SIZE-8)@l(%r11) + bctr + nop +#endif + .endr + .align PPC_TRAMP_MAP_SHIFT +#if _CALL_ELF == 2 + .size trampoline_code_table,.-trampoline_code_table +#else + .size trampoline_code_table,.-.L.trampoline_code_table +#endif +#endif /* FFI_EXEC_STATIC_TRAMP */ +#endif /* POWERPC64 */ + +#if (defined __ELF__ && defined __linux__) || _CALL_ELF == 2 + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/powerpc/ppc_closure.S b/deps/libffi/src/powerpc/ppc_closure.S new file mode 100644 index 00000000000000..d3556ebadbab98 --- /dev/null +++ b/deps/libffi/src/powerpc/ppc_closure.S @@ -0,0 +1,421 @@ +/* ----------------------------------------------------------------------- + sysv.h - Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2008 Red Hat, Inc. + + PowerPC Assembly glue. + + 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. + ----------------------------------------------------------------------- */ +#define LIBFFI_ASM +#include +#include +#include "internal.h" +#include + + .file "ppc_closure.S" + +#ifndef POWERPC64 + +FFI_HIDDEN(ffi_closure_SYSV) +ENTRY(ffi_closure_SYSV) + .cfi_startproc + stwu %r1,-144(%r1) + .cfi_def_cfa_offset 144 + mflr %r0 + stw %r0,148(%r1) + .cfi_offset 65, 4 + +# we want to build up an areas for the parameters passed +# in registers (both floating point and integer) + + # so first save gpr 3 to gpr 10 (aligned to 4) + stw %r3, 16(%r1) + stw %r4, 20(%r1) + stw %r5, 24(%r1) + + # set up registers for the routine that does the work + + # closure->cif + lwz %r3,FFI_TRAMPOLINE_SIZE(%r11) + # closure->fun + lwz %r4,FFI_TRAMPOLINE_SIZE+4(%r11) + # closure->user_data + lwz %r5,FFI_TRAMPOLINE_SIZE+8(%r11) + +.Ldoclosure: + stw %r6, 28(%r1) + stw %r7, 32(%r1) + stw %r8, 36(%r1) + stw %r9, 40(%r1) + stw %r10,44(%r1) + +#ifndef __NO_FPRS__ + # next save fpr 1 to fpr 8 (aligned to 8) + stfd %f1, 48(%r1) + stfd %f2, 56(%r1) + stfd %f3, 64(%r1) + stfd %f4, 72(%r1) + stfd %f5, 80(%r1) + stfd %f6, 88(%r1) + stfd %f7, 96(%r1) + stfd %f8, 104(%r1) +#endif + + # pointer to the result storage + addi %r6,%r1,112 + + # pointer to the saved gpr registers + addi %r7,%r1,16 + + # pointer to the saved fpr registers + addi %r8,%r1,48 + + # pointer to the outgoing parameter save area in the previous frame + # i.e. the previous frame pointer + 8 + addi %r9,%r1,152 + + # make the call + bl ffi_closure_helper_SYSV@local +.Lret: + # now r3 contains the return type + # so use it to look up in a table + # so we know how to deal with each type + + # look up the proper starting point in table + # by using return type as offset + + mflr %r4 # move address of .Lret to r4 + slwi %r3,%r3,4 # now multiply return type by 16 + addi %r4, %r4, .Lret_type0 - .Lret + lwz %r0,148(%r1) + add %r3,%r3,%r4 # add contents of table to table address + mtctr %r3 + bctr # jump to it + +# Each of the ret_typeX code fragments has to be exactly 16 bytes long +# (4 instructions). For cache effectiveness we align to a 16 byte boundary +# first. + .align 4 +# case FFI_TYPE_VOID +.Lret_type0: + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop + +# case FFI_TYPE_INT + lwz %r3,112+0(%r1) + mtlr %r0 +.Lfinish: + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_FLOAT +#ifndef __NO_FPRS__ + lfs %f1,112+0(%r1) +#else + nop +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_DOUBLE +#ifndef __NO_FPRS__ + lfd %f1,112+0(%r1) +#else + nop +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_LONGDOUBLE +#ifndef __NO_FPRS__ + lfd %f1,112+0(%r1) + lfd %f2,112+8(%r1) + mtlr %r0 + b .Lfinish +#else + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop +#endif + +# case FFI_TYPE_UINT8 +#ifdef __LITTLE_ENDIAN__ + lbz %r3,112+0(%r1) +#else + lbz %r3,112+3(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT8 +#ifdef __LITTLE_ENDIAN__ + lbz %r3,112+0(%r1) +#else + lbz %r3,112+3(%r1) +#endif + extsb %r3,%r3 + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_UINT16 +#ifdef __LITTLE_ENDIAN__ + lhz %r3,112+0(%r1) +#else + lhz %r3,112+2(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT16 +#ifdef __LITTLE_ENDIAN__ + lha %r3,112+0(%r1) +#else + lha %r3,112+2(%r1) +#endif + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT32 + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_SINT32 + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT64 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_SINT64 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +# case FFI_TYPE_STRUCT + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + nop + +# case FFI_TYPE_POINTER + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_TYPE_UINT128 + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + lwz %r5,112+8(%r1) + b .Luint128 + +# The return types below are only used when the ABI type is FFI_SYSV. +# case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct. + lbz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct. + lhz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct. + lwz %r3,112+0(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 +#else + srwi %r3,%r3,8 + mtlr %r0 + b .Lfinish +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct. + lwz %r3,112+0(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,24 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,16 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) +#ifdef __LITTLE_ENDIAN__ + mtlr %r0 + b .Lfinish +#else + li %r5,8 + b .Lstruct567 +#endif + +# case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct. + lwz %r3,112+0(%r1) + lwz %r4,112+4(%r1) + mtlr %r0 + b .Lfinish + +#ifndef __LITTLE_ENDIAN__ +.Lstruct567: + subfic %r6,%r5,32 + srw %r4,%r4,%r5 + slw %r6,%r3,%r6 + srw %r3,%r3,%r5 + or %r4,%r6,%r4 + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_def_cfa_offset 144 +#endif + +.Luint128: + lwz %r6,112+12(%r1) + mtlr %r0 + addi %r1,%r1,144 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +END(ffi_closure_SYSV) + + +FFI_HIDDEN(ffi_go_closure_sysv) +ENTRY(ffi_go_closure_sysv) + .cfi_startproc + stwu %r1,-144(%r1) + .cfi_def_cfa_offset 144 + mflr %r0 + stw %r0,148(%r1) + .cfi_offset 65, 4 + + stw %r3, 16(%r1) + stw %r4, 20(%r1) + stw %r5, 24(%r1) + + # closure->cif + lwz %r3,4(%r11) + # closure->fun + lwz %r4,8(%r11) + # user_data + mr %r5,%r11 + b .Ldoclosure + .cfi_endproc +END(ffi_go_closure_sysv) + +#ifdef FFI_EXEC_STATIC_TRAMP + .text + .align PPC_TRAMP_MAP_SHIFT + FFI_HIDDEN (trampoline_code_table) + .globl trampoline_code_table + .type trampoline_code_table,@function +trampoline_code_table: + .rept PPC_TRAMP_MAP_SIZE / PPC_TRAMP_SIZE + mflr %r0 + bcl 20,31,$+4 + mflr %r11 + addis %r11,%r11,PPC_TRAMP_MAP_SIZE@ha + mtlr %r0 + lwz %r0,(PPC_TRAMP_MAP_SIZE-4)@l(%r11) + mtctr %r0 + lwz %r11,(PPC_TRAMP_MAP_SIZE-8)@l(%r11) + bctr + nop + .endr + .size trampoline_code_table,.-trampoline_code_table + .align PPC_TRAMP_MAP_SHIFT +#endif /* FFI_EXEC_STATIC_TRAMP */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +#endif diff --git a/deps/libffi/src/powerpc/sysv.S b/deps/libffi/src/powerpc/sysv.S new file mode 100644 index 00000000000000..df9773427cba5c --- /dev/null +++ b/deps/libffi/src/powerpc/sysv.S @@ -0,0 +1,173 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 1998 Geoffrey Keating + Copyright (C) 2007 Free Software Foundation, Inc + + PowerPC Assembly glue. + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include + +#ifndef POWERPC64 +FFI_HIDDEN(ffi_call_SYSV) +ENTRY(ffi_call_SYSV) + .cfi_startproc + /* Save the old stack pointer as AP. */ + mr %r10,%r1 + .cfi_def_cfa_register 10 + + /* Allocate the stack space we need. */ + stwux %r1,%r1,%r8 + /* Save registers we use. */ + mflr %r9 + stw %r28,-16(%r10) + stw %r29,-12(%r10) + stw %r30, -8(%r10) + stw %r31, -4(%r10) + stw %r9, 4(%r10) + .cfi_offset 65, 4 + .cfi_offset 31, -4 + .cfi_offset 30, -8 + .cfi_offset 29, -12 + .cfi_offset 28, -16 + + /* Save arguments over call... */ + stw %r7, -20(%r10) /* closure, */ + mr %r31,%r6 /* flags, */ + mr %r30,%r5 /* rvalue, */ + mr %r29,%r4 /* function address, */ + mr %r28,%r10 /* our AP. */ + .cfi_def_cfa_register 28 + + /* Call ffi_prep_args_SYSV. */ + mr %r4,%r1 + bl ffi_prep_args_SYSV@local + + /* Now do the call. */ + /* Set up cr1 with bits 4-7 of the flags. */ + mtcrf 0x40,%r31 + /* Get the address to call into CTR. */ + mtctr %r29 + /* Load all those argument registers. */ + lwz %r3,-24-(8*4)(%r28) + lwz %r4,-24-(7*4)(%r28) + lwz %r5,-24-(6*4)(%r28) + lwz %r6,-24-(5*4)(%r28) + bf- 5,1f + nop + lwz %r7,-24-(4*4)(%r28) + lwz %r8,-24-(3*4)(%r28) + lwz %r9,-24-(2*4)(%r28) + lwz %r10,-24-(1*4)(%r28) + nop +1: + +#ifndef __NO_FPRS__ + /* Load all the FP registers. */ + bf- 6,2f + lfd %f1,-24-(8*4)-(8*8)(%r28) + lfd %f2,-24-(8*4)-(7*8)(%r28) + lfd %f3,-24-(8*4)-(6*8)(%r28) + lfd %f4,-24-(8*4)-(5*8)(%r28) + nop + lfd %f5,-24-(8*4)-(4*8)(%r28) + lfd %f6,-24-(8*4)-(3*8)(%r28) + lfd %f7,-24-(8*4)-(2*8)(%r28) + lfd %f8,-24-(8*4)-(1*8)(%r28) +#endif +2: + + /* Make the call. */ + lwz %r11, -20(%r28) + bctrl + + /* Now, deal with the return value. */ + mtcrf 0x03,%r31 /* cr6-cr7 */ + bt- 31,L(small_struct_return_value) + bt- 30,L(done_return_value) +#ifndef __NO_FPRS__ + bt- 29,L(fp_return_value) +#endif + stw %r3,0(%r30) + bf+ 27,L(done_return_value) + stw %r4,4(%r30) + bf 26,L(done_return_value) + stw %r5,8(%r30) + stw %r6,12(%r30) + /* Fall through... */ + +L(done_return_value): + /* Restore the registers we used and return. */ + lwz %r9, 4(%r28) + lwz %r31, -4(%r28) + mtlr %r9 + lwz %r30, -8(%r28) + lwz %r29,-12(%r28) + lwz %r28,-16(%r28) + .cfi_remember_state + /* At this point we don't have a cfa register. Say all our + saved regs have been restored. */ + .cfi_same_value 65 + .cfi_same_value 31 + .cfi_same_value 30 + .cfi_same_value 29 + .cfi_same_value 28 + /* Hopefully this works.. */ + .cfi_def_cfa_register 1 + .cfi_offset 1, 0 + lwz %r1,0(%r1) + .cfi_same_value 1 + blr + +#ifndef __NO_FPRS__ +L(fp_return_value): + .cfi_restore_state + bf 27,L(float_return_value) + stfd %f1,0(%r30) + bf 26,L(done_return_value) + stfd %f2,8(%r30) + b L(done_return_value) +L(float_return_value): + stfs %f1,0(%r30) + b L(done_return_value) +#endif + +L(small_struct_return_value): + /* + * The C code always allocates a properly-aligned 8-byte bounce + * buffer to make this assembly code very simple. Just write out + * r3 and r4 to the buffer to allow the C code to handle the rest. + */ + stw %r3, 0(%r30) + stw %r4, 4(%r30) + b L(done_return_value) + .cfi_endproc + +END(ffi_call_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +#endif diff --git a/deps/libffi/src/powerpc/t-aix b/deps/libffi/src/powerpc/t-aix new file mode 100644 index 00000000000000..e7be1cafd38844 --- /dev/null +++ b/deps/libffi/src/powerpc/t-aix @@ -0,0 +1,5 @@ +# This file is needed by GCC in order to correctly build AIX FAT +# library for libffi. +# However, it has no sense to include this code here, as it depends +# on GCC multilib architecture. +# Thus, this file is a simple stub replaced in GCC repository. diff --git a/deps/libffi/src/prep_cif.c b/deps/libffi/src/prep_cif.c new file mode 100644 index 00000000000000..47c9259470c5ee --- /dev/null +++ b/deps/libffi/src/prep_cif.c @@ -0,0 +1,280 @@ +/* ----------------------------------------------------------------------- + prep_cif.c - Copyright (c) 2011, 2012, 2021, 2025 Anthony Green + Copyright (c) 1996, 1998, 2007 Red Hat, Inc. + Copyright (c) 2022 Oracle and/or its affiliates. + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include + +/* Round up to FFI_SIZEOF_ARG. */ + +#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG) + +/* Perform machine independent initialization of aggregate type + specifications. */ + +static ffi_status initialize_aggregate(ffi_type *arg, size_t *offsets) +{ + ffi_type **ptr; + + if (UNLIKELY(arg == NULL || arg->elements == NULL)) + return FFI_BAD_TYPEDEF; + + arg->size = 0; + arg->alignment = 0; + + ptr = &(arg->elements[0]); + + if (UNLIKELY(ptr == 0)) + return FFI_BAD_TYPEDEF; + + while ((*ptr) != NULL) + { + if (UNLIKELY(((*ptr)->size == 0) + && (initialize_aggregate((*ptr), NULL) != FFI_OK))) + return FFI_BAD_TYPEDEF; + + /* Perform a sanity check on the argument type */ + FFI_ASSERT_VALID_TYPE(*ptr); + + arg->size = FFI_ALIGN(arg->size, (*ptr)->alignment); + if (offsets) + *offsets++ = arg->size; + arg->size += (*ptr)->size; + + arg->alignment = (arg->alignment > (*ptr)->alignment) ? + arg->alignment : (*ptr)->alignment; + + ptr++; + } + + /* Structure size includes tail padding. This is important for + structures that fit in one register on ABIs like the PowerPC64 + Linux ABI that right justify small structs in a register. + It's also needed for nested structure layout, for example + struct A { long a; char b; }; struct B { struct A x; char y; }; + should find y at an offset of 2*sizeof(long) and result in a + total size of 3*sizeof(long). */ + arg->size = FFI_ALIGN (arg->size, arg->alignment); + + /* On some targets, the ABI defines that structures have an additional + alignment beyond the "natural" one based on their elements. */ +#ifdef FFI_AGGREGATE_ALIGNMENT + if (FFI_AGGREGATE_ALIGNMENT > arg->alignment) + arg->alignment = FFI_AGGREGATE_ALIGNMENT; +#endif + + if (arg->size == 0) + return FFI_BAD_TYPEDEF; + else + return FFI_OK; +} + +#ifndef __CRIS__ +/* The CRIS ABI specifies structure elements to have byte + alignment only, so it completely overrides this functions, + which assumes "natural" alignment and padding. */ + +/* Perform machine independent ffi_cif preparation, then call + machine dependent routine. */ + +/* For non variadic functions isvariadic should be 0 and + nfixedargs==ntotalargs. + + For variadic calls, isvariadic should be 1 and nfixedargs + and ntotalargs set as appropriate. nfixedargs must always be >=1 */ + + +ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, + unsigned int isvariadic, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, ffi_type **atypes) +{ + unsigned bytes = 0; + unsigned int i; + ffi_type **ptr; + + FFI_ASSERT(cif != NULL); + FFI_ASSERT((!isvariadic) || (nfixedargs >= 1)); + FFI_ASSERT(nfixedargs <= ntotalargs); + + if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) + return FFI_BAD_ABI; + + cif->abi = abi; + cif->arg_types = atypes; + cif->nargs = ntotalargs; + cif->rtype = rtype; + + cif->flags = 0; +#if (defined(_M_ARM64) || defined(__aarch64__)) && defined(_WIN32) + cif->is_variadic = isvariadic; +#endif +#if HAVE_LONG_DOUBLE_VARIANT + ffi_prep_types (abi); +#endif + + /* Initialize the return type if necessary */ + if ((cif->rtype->size == 0) + && (initialize_aggregate(cif->rtype, NULL) != FFI_OK)) + return FFI_BAD_TYPEDEF; + +#ifndef FFI_TARGET_HAS_COMPLEX_TYPE + if (rtype->type == FFI_TYPE_COMPLEX) + abort(); +#endif + /* Perform a sanity check on the return type */ + FFI_ASSERT_VALID_TYPE(cif->rtype); + + /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */ +#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + /* Make space for the return structure pointer */ + if (cif->rtype->type == FFI_TYPE_STRUCT +#ifdef TILE + && (cif->rtype->size > 10 * FFI_SIZEOF_ARG) +#endif +#ifdef XTENSA + && (cif->rtype->size > 16) +#endif + ) + bytes = STACK_ARG_SIZE(sizeof(void*)); +#endif + + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) + { + + /* Initialize any uninitialized aggregate type definitions */ + if (((*ptr)->size == 0) + && (initialize_aggregate((*ptr), NULL) != FFI_OK)) + return FFI_BAD_TYPEDEF; + +#ifndef FFI_TARGET_HAS_COMPLEX_TYPE + if ((*ptr)->type == FFI_TYPE_COMPLEX) + abort(); +#endif + /* Perform a sanity check on the argument type, do this + check after the initialization. */ + FFI_ASSERT_VALID_TYPE(*ptr); + +#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION + { + /* Add any padding if necessary */ + if (((*ptr)->alignment - 1) & bytes) + bytes = (unsigned)FFI_ALIGN(bytes, (*ptr)->alignment); + +#ifdef TILE + if (bytes < 10 * FFI_SIZEOF_ARG && + bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG) + { + /* An argument is never split between the 10 parameter + registers and the stack. */ + bytes = 10 * FFI_SIZEOF_ARG; + } +#endif +#ifdef XTENSA + if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4) + bytes = 6*4; +#endif + + bytes += (unsigned int)STACK_ARG_SIZE((*ptr)->size); + } +#endif + } + + cif->bytes = bytes; + + /* Perform machine dependent cif processing */ +#ifdef FFI_TARGET_SPECIFIC_VARIADIC + if (isvariadic) + return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs); +#endif + + return ffi_prep_cif_machdep(cif); +} +#endif /* not __CRIS__ */ + +ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, + ffi_type *rtype, ffi_type **atypes) +{ + return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes); +} + +ffi_status ffi_prep_cif_var(ffi_cif *cif, + ffi_abi abi, + unsigned int nfixedargs, + unsigned int ntotalargs, + ffi_type *rtype, + ffi_type **atypes) +{ + ffi_status rc; + size_t int_size = ffi_type_sint.size; + unsigned int i; + + rc = ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes); + + if (rc != FFI_OK) + return rc; + + for (i = nfixedargs; i < ntotalargs; i++) + { + ffi_type *arg_type = atypes[i]; + if (arg_type == &ffi_type_float + || ((arg_type->type != FFI_TYPE_STRUCT + && arg_type->type != FFI_TYPE_COMPLEX) + && arg_type->size < int_size)) + return FFI_BAD_ARGTYPE; + } + + return FFI_OK; +} + +#if FFI_CLOSURES + +ffi_status +ffi_prep_closure (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data) +{ + return ffi_prep_closure_loc (closure, cif, fun, user_data, closure); +} + +#endif + +ffi_status +ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets) +{ + if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)) + return FFI_BAD_ABI; + if (struct_type->type != FFI_TYPE_STRUCT) + return FFI_BAD_TYPEDEF; + +#if HAVE_LONG_DOUBLE_VARIANT + ffi_prep_types (abi); +#endif + + return initialize_aggregate(struct_type, offsets); +} diff --git a/deps/libffi/src/raw_api.c b/deps/libffi/src/raw_api.c new file mode 100644 index 00000000000000..be156116cb0d99 --- /dev/null +++ b/deps/libffi/src/raw_api.c @@ -0,0 +1,267 @@ +/* ----------------------------------------------------------------------- + raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc. + + Author: Kresten Krab Thorup + + 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. + ----------------------------------------------------------------------- */ + +/* This file defines generic functions for use with the raw api. */ + +#include +#include + +#if !FFI_NO_RAW_API + +size_t +ffi_raw_size (ffi_cif *cif) +{ + size_t result = 0; + int i; + + ffi_type **at = cif->arg_types; + + for (i = cif->nargs-1; i >= 0; i--, at++) + { +#if !FFI_NO_STRUCTS + if ((*at)->type == FFI_TYPE_STRUCT) + result += FFI_ALIGN (sizeof (void*), FFI_SIZEOF_ARG); + else +#endif + result += FFI_ALIGN ((*at)->size, FFI_SIZEOF_ARG); + } + + return result; +} + + +void +ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + +#if WORDS_BIGENDIAN + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 1); + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 2); + break; + +#if FFI_SIZEOF_ARG >= 4 + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 4); + break; +#endif + +#if !FFI_NO_STRUCTS + case FFI_TYPE_STRUCT: + *args = (raw++)->ptr; + break; +#endif + + case FFI_TYPE_COMPLEX: + *args = (raw++)->ptr; + break; + + case FFI_TYPE_POINTER: + *args = (void*) &(raw++)->ptr; + break; + + default: + *args = raw; + raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + } + } + +#else /* WORDS_BIGENDIAN */ + +#if !PDP + + /* then assume little endian */ + for (i = 0; i < cif->nargs; i++, tp++, args++) + { +#if !FFI_NO_STRUCTS + if ((*tp)->type == FFI_TYPE_STRUCT) + { + *args = (raw++)->ptr; + } + else +#endif + if ((*tp)->type == FFI_TYPE_COMPLEX) + { + *args = (raw++)->ptr; + } + else + { + *args = (void*) raw; + raw += FFI_ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*); + } + } + +#else +#error "pdp endian not supported" +#endif /* ! PDP */ + +#endif /* WORDS_BIGENDIAN */ +} + +void +ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw) +{ + unsigned i; + ffi_type **tp = cif->arg_types; + + for (i = 0; i < cif->nargs; i++, tp++, args++) + { + switch ((*tp)->type) + { + case FFI_TYPE_UINT8: + (raw++)->uint = *(UINT8*) (*args); + break; + + case FFI_TYPE_SINT8: + (raw++)->sint = *(SINT8*) (*args); + break; + + case FFI_TYPE_UINT16: + (raw++)->uint = *(UINT16*) (*args); + break; + + case FFI_TYPE_SINT16: + (raw++)->sint = *(SINT16*) (*args); + break; + +#if FFI_SIZEOF_ARG >= 4 + case FFI_TYPE_UINT32: + (raw++)->uint = *(UINT32*) (*args); + break; + + case FFI_TYPE_SINT32: + (raw++)->sint = *(SINT32*) (*args); + break; +#endif + +#if !FFI_NO_STRUCTS + case FFI_TYPE_STRUCT: + (raw++)->ptr = *args; + break; +#endif + + case FFI_TYPE_COMPLEX: + (raw++)->ptr = *args; + break; + + case FFI_TYPE_POINTER: + (raw++)->ptr = **(void***) args; + break; + + default: + memcpy ((void*) raw->data, (void*)*args, (*tp)->size); + raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + } + } +} + +#if !FFI_NATIVE_RAW_API + + +/* This is a generic definition of ffi_raw_call, to be used if the + * native system does not provide a machine-specific implementation. + * Having this, allows code to be written for the raw API, without + * the need for system-specific code to handle input in that format; + * these following couple of functions will handle the translation forth + * and back automatically. */ + +void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *raw) +{ + void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); + ffi_raw_to_ptrarray (cif, raw, avalue); + ffi_call (cif, fn, rvalue, avalue); +} + +#if FFI_CLOSURES /* base system provides closures */ + +static void +ffi_translate_args (ffi_cif *cif, void *rvalue, + void **avalue, void *user_data) +{ + ffi_raw *raw = (ffi_raw*)alloca (ffi_raw_size (cif)); + ffi_raw_closure *cl = (ffi_raw_closure*)user_data; + + ffi_ptrarray_to_raw (cif, avalue, raw); + (*cl->fun) (cif, rvalue, raw, cl->user_data); +} + +ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc) +{ + ffi_status status; + + status = ffi_prep_closure_loc ((ffi_closure*) cl, + cif, + &ffi_translate_args, + codeloc, + codeloc); + if (status == FFI_OK) + { + cl->fun = fun; + cl->user_data = user_data; + } + + return status; +} + +#endif /* FFI_CLOSURES */ +#endif /* !FFI_NATIVE_RAW_API */ + +#if FFI_CLOSURES + +/* Again, here is the generic version of ffi_prep_raw_closure, which + * will install an intermediate "hub" for translation of arguments from + * the pointer-array format, to the raw format */ + +ffi_status +ffi_prep_raw_closure (ffi_raw_closure* cl, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data) +{ + return ffi_prep_raw_closure_loc (cl, cif, fun, user_data, cl); +} + +#endif /* FFI_CLOSURES */ + +#endif /* !FFI_NO_RAW_API */ diff --git a/deps/libffi/src/riscv/ffi.c b/deps/libffi/src/riscv/ffi.c new file mode 100644 index 00000000000000..b455b12ae75ca5 --- /dev/null +++ b/deps/libffi/src/riscv/ffi.c @@ -0,0 +1,514 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2015 Michael Knyszek + 2015 Andrew Waterman + 2018 Stef O'Rear + Based on MIPS N32/64 port + + RISC-V Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#if __riscv_float_abi_double +#define ABI_FLEN 64 +#define ABI_FLOAT double +#elif __riscv_float_abi_single +#define ABI_FLEN 32 +#define ABI_FLOAT float +#endif + +#define NARGREG 8 +#define STKALIGN 16 +#define MAXCOPYARG (2 * sizeof(double)) + +typedef struct call_context +{ +#if ABI_FLEN + ABI_FLOAT fa[8]; +#endif + size_t a[8]; + /* used by the assembly code to in-place construct its own stack frame */ + char frame[16]; +} call_context; + +typedef struct call_builder +{ + call_context *aregs; + int used_integer; + int used_float; + size_t *used_stack; + void *struct_stack; +} call_builder; + +/* integer (not pointer) less than ABI XLEN */ +/* FFI_TYPE_INT does not appear to be used */ +#if __SIZEOF_POINTER__ == 8 +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) +#else +#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) +#endif + +#if ABI_FLEN +typedef struct { + char as_elements, type1, offset2, type2; +} float_struct_info; + +#if ABI_FLEN >= 64 +#define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) +#else +#define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) +#endif + +static ffi_type **flatten_struct(ffi_type *in, ffi_type **out, ffi_type **out_end) { + int i; + if (out == out_end) return out; + if (in->type != FFI_TYPE_STRUCT) { + *(out++) = in; + } else { + for (i = 0; in->elements[i]; i++) + out = flatten_struct(in->elements[i], out, out_end); + } + return out; +} + +/* Structs with at most two fields after flattening, one of which is of + floating point type, are passed in multiple registers if sufficient + registers are available. */ +static float_struct_info struct_passed_as_elements(call_builder *cb, ffi_type *top) { + float_struct_info ret = {0, 0, 0, 0}; + ffi_type *fields[3]; + int num_floats, num_ints; + int num_fields = flatten_struct(top, fields, fields + 3) - fields; + + if (num_fields == 1) { + if (IS_FLOAT(fields[0]->type)) { + ret.as_elements = 1; + ret.type1 = fields[0]->type; + } + } else if (num_fields == 2) { + num_floats = IS_FLOAT(fields[0]->type) + IS_FLOAT(fields[1]->type); + num_ints = IS_INT(fields[0]->type) + IS_INT(fields[1]->type); + if (num_floats == 0 || num_floats + num_ints != 2) + return ret; + if (cb->used_float + num_floats > NARGREG || cb->used_integer + (2 - num_floats) > NARGREG) + return ret; + if (!IS_FLOAT(fields[0]->type) && !IS_FLOAT(fields[1]->type)) + return ret; + + ret.type1 = fields[0]->type; + ret.type2 = fields[1]->type; + ret.offset2 = FFI_ALIGN(fields[0]->size, fields[1]->alignment); + ret.as_elements = 1; + } + + return ret; +} +#endif + +/* allocates a single register, float register, or XLEN-sized stack slot to a datum */ +static void marshal_atom(call_builder *cb, int type, void *data) { + size_t value = 0; + switch (type) { + case FFI_TYPE_UINT8: value = *(uint8_t *)data; break; + case FFI_TYPE_SINT8: value = *(int8_t *)data; break; + case FFI_TYPE_UINT16: value = *(uint16_t *)data; break; + case FFI_TYPE_SINT16: value = *(int16_t *)data; break; + /* 32-bit quantities are always sign-extended in the ABI */ + case FFI_TYPE_UINT32: value = *(int32_t *)data; break; + case FFI_TYPE_SINT32: value = *(int32_t *)data; break; +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: value = *(uint64_t *)data; break; + case FFI_TYPE_SINT64: value = *(int64_t *)data; break; +#endif + case FFI_TYPE_POINTER: value = *(size_t *)data; break; + + /* float values may be recoded in an implementation-defined way + by hardware conforming to 2.1 or earlier, so use asm to + reinterpret floats as doubles */ +#if ABI_FLEN >= 32 + case FFI_TYPE_FLOAT: + asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(float *)data)); + return; +#endif +#if ABI_FLEN >= 64 + case FFI_TYPE_DOUBLE: + asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(double *)data)); + return; +#endif + default: FFI_ASSERT(0); break; + } + + if (cb->used_integer == NARGREG) { + *cb->used_stack++ = value; + } else { + cb->aregs->a[cb->used_integer++] = value; + } +} + +static void unmarshal_atom(call_builder *cb, int type, void *data) { + size_t value; + switch (type) { +#if ABI_FLEN >= 32 + case FFI_TYPE_FLOAT: + asm("" : "=f"(*(float *)data) : "0"(cb->aregs->fa[cb->used_float++])); + return; +#endif +#if ABI_FLEN >= 64 + case FFI_TYPE_DOUBLE: + asm("" : "=f"(*(double *)data) : "0"(cb->aregs->fa[cb->used_float++])); + return; +#endif + } + + if (cb->used_integer == NARGREG) { + value = *cb->used_stack++; + } else { + value = cb->aregs->a[cb->used_integer++]; + } + + switch (type) { + case FFI_TYPE_UINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_SINT8: *(uint8_t *)data = value; break; + case FFI_TYPE_UINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_SINT16: *(uint16_t *)data = value; break; + case FFI_TYPE_UINT32: *(uint32_t *)data = value; break; + case FFI_TYPE_SINT32: *(uint32_t *)data = value; break; +#if __SIZEOF_POINTER__ == 8 + case FFI_TYPE_UINT64: *(uint64_t *)data = value; break; + case FFI_TYPE_SINT64: *(uint64_t *)data = value; break; +#endif + case FFI_TYPE_POINTER: *(size_t *)data = value; break; + default: FFI_ASSERT(0); break; + } +} + +/* adds an argument to a call, or a not by reference return value */ +static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) { + marshal_atom(cb, fsi.type1, data); + if (fsi.offset2) + marshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); + return; + } + } + + if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { + marshal_atom(cb, type->type, data); + return; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) { + /* copy to stack and pass by reference */ + data = memcpy (cb->struct_stack, data, type->size); + cb->struct_stack = (size_t *) FFI_ALIGN ((char *) cb->struct_stack + type->size, __SIZEOF_POINTER__); + marshal_atom(cb, FFI_TYPE_POINTER, &data); + } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + marshal_atom(cb, type->type, data); + } else { + /* overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on */ + + /* variadics are aligned even in registers */ + if (type->alignment > __SIZEOF_POINTER__) { + if (var) + cb->used_integer = FFI_ALIGN(cb->used_integer, 2); + cb->used_stack = (size_t *)FFI_ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); + } + + memcpy(realign, data, type->size); + if (type->size > 0) + marshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + marshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + } +} + +/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ +static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { + size_t realign[2]; + void *pointer; + +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) { + unmarshal_atom(cb, fsi.type1, data); + if (fsi.offset2) + unmarshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); + return data; + } + } + + if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { + unmarshal_atom(cb, type->type, data); + return data; + } +#endif + + if (type->size > 2 * __SIZEOF_POINTER__) { + /* pass by reference */ + unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); + return pointer; + } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + unmarshal_atom(cb, type->type, data); + return data; + } else { + /* overlong integers, soft-float floats, and structs without special + float handling are treated identically from this point on */ + + /* variadics are aligned even in registers */ + if (type->alignment > __SIZEOF_POINTER__) { + if (var) + cb->used_integer = FFI_ALIGN(cb->used_integer, 2); + cb->used_stack = (size_t *)FFI_ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); + } + + if (type->size > 0) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign); + if (type->size > __SIZEOF_POINTER__) + unmarshal_atom(cb, FFI_TYPE_POINTER, realign + 1); + memcpy(data, realign, type->size); + return data; + } +} + +static int passed_by_ref(call_builder *cb, ffi_type *type, int var) { +#if ABI_FLEN + if (!var && type->type == FFI_TYPE_STRUCT) { + float_struct_info fsi = struct_passed_as_elements(cb, type); + if (fsi.as_elements) return 0; + } +#endif + + return type->size > 2 * __SIZEOF_POINTER__; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { + cif->riscv_nfixedargs = cif->nargs; + return FFI_OK; +} + +/* Perform machine dependent cif processing when we have a variadic function */ + +ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { + cif->riscv_nfixedargs = nfixedargs; + return FFI_OK; +} + +/* Low level routine for calling functions */ +extern void ffi_call_asm (void *stack, struct call_context *regs, + void (*fn) (void), void *closure) FFI_HIDDEN; + +static void +ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + void *closure) +{ + /* this is a conservative estimate, assuming a complex return value and + that all remaining arguments are long long / __int128 */ + size_t arg_bytes = cif->nargs <= 3 ? 0 : + FFI_ALIGN(2 * sizeof(size_t) * (cif->nargs - 3), STKALIGN); + /* Allocate space for copies of big structures. */ + size_t struct_bytes = FFI_ALIGN (cif->bytes, STKALIGN); + size_t rval_bytes = 0; + if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) + rval_bytes = FFI_ALIGN(cif->rtype->size, STKALIGN); + size_t alloc_size = arg_bytes + rval_bytes + struct_bytes + sizeof(call_context); + + /* the assembly code will deallocate all stack data at lower addresses + than the argument region, so we need to allocate the frame and the + return value after the arguments in a single allocation */ + size_t alloc_base; + /* Argument region must be 16-byte aligned */ + if (_Alignof(max_align_t) >= STKALIGN) { + /* since sizeof long double is normally 16, the compiler will + guarantee alloca alignment to at least that much */ + alloc_base = (size_t)alloca(alloc_size); + } else { + alloc_base = FFI_ALIGN(alloca(alloc_size + STKALIGN - 1), STKALIGN); + } + + if (rval_bytes) + rvalue = (void*)(alloc_base + arg_bytes); + + call_builder cb; + cb.used_float = cb.used_integer = 0; + cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes + struct_bytes); + cb.used_stack = (void*)alloc_base; + cb.struct_stack = (void *) (alloc_base + arg_bytes + rval_bytes); + + int return_by_ref = passed_by_ref(&cb, cif->rtype, 0); + if (return_by_ref) + marshal(&cb, &ffi_type_pointer, 0, &rvalue); + + int i; + for (i = 0; i < cif->nargs; i++) + marshal(&cb, cif->arg_types[i], i >= cif->riscv_nfixedargs, avalue[i]); + + ffi_call_asm ((void *) alloc_base, cb.aregs, fn, closure); + + cb.used_float = cb.used_integer = 0; + if (!return_by_ref && rvalue) + { + if (IS_INT(cif->rtype->type) + && cif->rtype->size < sizeof (ffi_arg)) + { + /* Integer types smaller than ffi_arg need to be extended. */ + switch (cif->rtype->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT32: + unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 + ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32), + rvalue); + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT32: + unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 + ? FFI_TYPE_UINT64 : FFI_TYPE_UINT32), + rvalue); + break; + } + } + else + unmarshal(&cb, cif->rtype, 0, rvalue); + } +} + +void +ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +extern void ffi_closure_asm(void) FFI_HIDDEN; + +ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) +{ + uint32_t *tramp = (uint32_t *) &closure->tramp[0]; + uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; + + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + /* we will call ffi_closure_inner with codeloc, not closure, but as long + as the memory is readable it should work */ + + tramp[0] = 0x00000317; /* auipc t1, 0 (i.e. t0 <- codeloc) */ +#if __SIZEOF_POINTER__ == 8 + tramp[1] = 0x01033383; /* ld t2, 16(t1) */ +#else + tramp[1] = 0x01032383; /* lw t2, 16(t1) */ +#endif + tramp[2] = 0x00038067; /* jr t2 */ + tramp[3] = 0x00000013; /* nop */ + tramp[4] = fn; + tramp[5] = fn >> 32; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + +#if !defined(__FreeBSD__) + __builtin___clear_cache(codeloc, codeloc + FFI_TRAMPOLINE_SIZE); +#endif + + return FFI_OK; +} + +extern void ffi_go_closure_asm (void) FFI_HIDDEN; + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *)) +{ + if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) + return FFI_BAD_ABI; + + closure->tramp = (void *) ffi_go_closure_asm; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +/* Called by the assembly code with aregs pointing to saved argument registers + and stack pointing to the stacked arguments. Return values passed in + registers will be reloaded from aregs. */ +void FFI_HIDDEN +ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stack, call_context *aregs) +{ + void **avalue = alloca(cif->nargs * sizeof(void*)); + /* storage for arguments which will be copied by unmarshal(). We could + theoretically avoid the copies in many cases and use at most 128 bytes + of memory, but allocating disjoint storage for each argument is + simpler. */ + char *astorage = alloca(cif->nargs * MAXCOPYARG); + void *rvalue; + call_builder cb; + int return_by_ref; + int i; + + cb.aregs = aregs; + cb.used_integer = cb.used_float = 0; + cb.used_stack = stack; + + return_by_ref = passed_by_ref(&cb, cif->rtype, 0); + if (return_by_ref) + unmarshal(&cb, &ffi_type_pointer, 0, &rvalue); + else + rvalue = alloca(cif->rtype->size); + + for (i = 0; i < cif->nargs; i++) + avalue[i] = unmarshal(&cb, cif->arg_types[i], + i >= cif->riscv_nfixedargs, astorage + i*MAXCOPYARG); + + fun (cif, rvalue, avalue, user_data); + + if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) { + cb.used_integer = cb.used_float = 0; + marshal(&cb, cif->rtype, 0, rvalue); + } +} diff --git a/deps/libffi/src/riscv/ffitarget.h b/deps/libffi/src/riscv/ffitarget.h new file mode 100644 index 00000000000000..75e6462f5bbccd --- /dev/null +++ b/deps/libffi/src/riscv/ffitarget.h @@ -0,0 +1,69 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - 2014 Michael Knyszek + + Target configuration macros for RISC-V. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef __riscv +#error "libffi was configured for a RISC-V target but this does not appear to be a RISC-V compiler." +#endif + +#ifndef LIBFFI_ASM + +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +/* FFI_UNUSED_NN and riscv_unused are to maintain ABI compatibility with a + distributed Berkeley patch from 2014, and can be removed at SONAME bump */ +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_UNUSED_1, + FFI_UNUSED_2, + FFI_UNUSED_3, + FFI_LAST_ABI, + + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; + +#endif /* LIBFFI_ASM */ + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 24 +#define FFI_NATIVE_RAW_API 0 +#define FFI_EXTRA_CIF_FIELDS unsigned riscv_nfixedargs; unsigned riscv_unused; +#define FFI_TARGET_SPECIFIC_VARIADIC + +#endif + diff --git a/deps/libffi/src/riscv/sysv.S b/deps/libffi/src/riscv/sysv.S new file mode 100644 index 00000000000000..522d0b0055004b --- /dev/null +++ b/deps/libffi/src/riscv/sysv.S @@ -0,0 +1,293 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2015 Michael Knyszek + 2015 Andrew Waterman + 2018 Stef O'Rear + + RISC-V Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Define aliases so that we can handle all ABIs uniformly */ + +#if __SIZEOF_POINTER__ == 8 +#define PTRS 8 +#define LARG ld +#define SARG sd +#else +#define PTRS 4 +#define LARG lw +#define SARG sw +#endif + +#if __riscv_float_abi_double +#define FLTS 8 +#define FLARG fld +#define FSARG fsd +#elif __riscv_float_abi_single +#define FLTS 4 +#define FLARG flw +#define FSARG fsw +#else +#define FLTS 0 +#endif + +#define fp s0 + + .text + .globl ffi_call_asm + .type ffi_call_asm, @function + .hidden ffi_call_asm +/* + struct call_context { + floatreg fa[8]; + intreg a[8]; + intreg pad[rv32 ? 2 : 0]; + intreg save_fp, save_ra; + } + void ffi_call_asm (size_t *stackargs, struct call_context *regargs, + void (*fn) (void), void *closure); +*/ + +#define FRAME_LEN (8 * FLTS + 8 * PTRS + 16) + +ffi_call_asm: + .cfi_startproc + + /* + We are NOT going to set up an ordinary stack frame. In order to pass + the stacked args to the called function, we adjust our stack pointer to + a0, which is in the _caller's_ alloca area. We establish our own stack + frame at the end of the call_context. + + Anything below the arguments will be freed at this point, although we + preserve the call_context so that it can be read back in the caller. + */ + + .cfi_def_cfa 11, FRAME_LEN # interim CFA based on a1 + SARG fp, FRAME_LEN - 2*PTRS(a1) + .cfi_offset 8, -2*PTRS + SARG ra, FRAME_LEN - 1*PTRS(a1) + .cfi_offset 1, -1*PTRS + + addi fp, a1, FRAME_LEN + mv sp, a0 + .cfi_def_cfa 8, 0 # our frame is fully set up + + # Load arguments + mv t1, a2 + mv t2, a3 + +#if FLTS + FLARG fa0, -FRAME_LEN+0*FLTS(fp) + FLARG fa1, -FRAME_LEN+1*FLTS(fp) + FLARG fa2, -FRAME_LEN+2*FLTS(fp) + FLARG fa3, -FRAME_LEN+3*FLTS(fp) + FLARG fa4, -FRAME_LEN+4*FLTS(fp) + FLARG fa5, -FRAME_LEN+5*FLTS(fp) + FLARG fa6, -FRAME_LEN+6*FLTS(fp) + FLARG fa7, -FRAME_LEN+7*FLTS(fp) +#endif + + LARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) + LARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) + LARG a2, -FRAME_LEN+8*FLTS+2*PTRS(fp) + LARG a3, -FRAME_LEN+8*FLTS+3*PTRS(fp) + LARG a4, -FRAME_LEN+8*FLTS+4*PTRS(fp) + LARG a5, -FRAME_LEN+8*FLTS+5*PTRS(fp) + LARG a6, -FRAME_LEN+8*FLTS+6*PTRS(fp) + LARG a7, -FRAME_LEN+8*FLTS+7*PTRS(fp) + + /* Call */ + jalr t1 + + /* Save return values - only a0/a1 (fa0/fa1) are used */ +#if FLTS + FSARG fa0, -FRAME_LEN+0*FLTS(fp) + FSARG fa1, -FRAME_LEN+1*FLTS(fp) +#endif + + SARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) + SARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) + + /* Restore and return */ + addi sp, fp, -FRAME_LEN + .cfi_def_cfa 2, FRAME_LEN + LARG ra, -1*PTRS(fp) + .cfi_restore 1 + LARG fp, -2*PTRS(fp) + .cfi_restore 8 + ret + .cfi_endproc + .size ffi_call_asm, .-ffi_call_asm + + +/* + ffi_closure_asm. Expects address of the passed-in ffi_closure in t1. + void ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) +*/ + + .globl ffi_closure_asm + .hidden ffi_closure_asm + .type ffi_closure_asm, @function +ffi_closure_asm: + .cfi_startproc + + addi sp, sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* make a frame */ + SARG fp, FRAME_LEN - 2*PTRS(sp) + .cfi_offset 8, -2*PTRS + SARG ra, FRAME_LEN - 1*PTRS(sp) + .cfi_offset 1, -1*PTRS + addi fp, sp, FRAME_LEN + + /* save arguments */ +#if FLTS + FSARG fa0, 0*FLTS(sp) + FSARG fa1, 1*FLTS(sp) + FSARG fa2, 2*FLTS(sp) + FSARG fa3, 3*FLTS(sp) + FSARG fa4, 4*FLTS(sp) + FSARG fa5, 5*FLTS(sp) + FSARG fa6, 6*FLTS(sp) + FSARG fa7, 7*FLTS(sp) +#endif + + SARG a0, 8*FLTS+0*PTRS(sp) + SARG a1, 8*FLTS+1*PTRS(sp) + SARG a2, 8*FLTS+2*PTRS(sp) + SARG a3, 8*FLTS+3*PTRS(sp) + SARG a4, 8*FLTS+4*PTRS(sp) + SARG a5, 8*FLTS+5*PTRS(sp) + SARG a6, 8*FLTS+6*PTRS(sp) + SARG a7, 8*FLTS+7*PTRS(sp) + + /* enter C */ + LARG a0, FFI_TRAMPOLINE_SIZE+0*PTRS(t1) + LARG a1, FFI_TRAMPOLINE_SIZE+1*PTRS(t1) + LARG a2, FFI_TRAMPOLINE_SIZE+2*PTRS(t1) + addi a3, sp, FRAME_LEN + mv a4, sp + + call ffi_closure_inner + + /* return values */ +#if FLTS + FLARG fa0, 0*FLTS(sp) + FLARG fa1, 1*FLTS(sp) +#endif + + LARG a0, 8*FLTS+0*PTRS(sp) + LARG a1, 8*FLTS+1*PTRS(sp) + + /* restore and return */ + LARG ra, FRAME_LEN-1*PTRS(sp) + .cfi_restore 1 + LARG fp, FRAME_LEN-2*PTRS(sp) + .cfi_restore 8 + addi sp, sp, FRAME_LEN + .cfi_def_cfa_offset 0 + ret + .cfi_endproc + .size ffi_closure_asm, .-ffi_closure_asm + +/* + ffi_go_closure_asm. Expects address of the passed-in ffi_go_closure in t2. + void ffi_closure_inner (ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + size_t *stackargs, struct call_context *regargs) +*/ + + .globl ffi_go_closure_asm + .hidden ffi_go_closure_asm + .type ffi_go_closure_asm, @function +ffi_go_closure_asm: + .cfi_startproc + + addi sp, sp, -FRAME_LEN + .cfi_def_cfa_offset FRAME_LEN + + /* make a frame */ + SARG fp, FRAME_LEN - 2*PTRS(sp) + .cfi_offset 8, -2*PTRS + SARG ra, FRAME_LEN - 1*PTRS(sp) + .cfi_offset 1, -1*PTRS + addi fp, sp, FRAME_LEN + + /* save arguments */ +#if FLTS + FSARG fa0, 0*FLTS(sp) + FSARG fa1, 1*FLTS(sp) + FSARG fa2, 2*FLTS(sp) + FSARG fa3, 3*FLTS(sp) + FSARG fa4, 4*FLTS(sp) + FSARG fa5, 5*FLTS(sp) + FSARG fa6, 6*FLTS(sp) + FSARG fa7, 7*FLTS(sp) +#endif + + SARG a0, 8*FLTS+0*PTRS(sp) + SARG a1, 8*FLTS+1*PTRS(sp) + SARG a2, 8*FLTS+2*PTRS(sp) + SARG a3, 8*FLTS+3*PTRS(sp) + SARG a4, 8*FLTS+4*PTRS(sp) + SARG a5, 8*FLTS+5*PTRS(sp) + SARG a6, 8*FLTS+6*PTRS(sp) + SARG a7, 8*FLTS+7*PTRS(sp) + + /* enter C */ + LARG a0, 1*PTRS(t2) + LARG a1, 2*PTRS(t2) + mv a2, t2 + addi a3, sp, FRAME_LEN + mv a4, sp + + call ffi_closure_inner + + /* return values */ +#if FLTS + FLARG fa0, 0*FLTS(sp) + FLARG fa1, 1*FLTS(sp) +#endif + + LARG a0, 8*FLTS+0*PTRS(sp) + LARG a1, 8*FLTS+1*PTRS(sp) + + /* restore and return */ + LARG ra, FRAME_LEN-1*PTRS(sp) + .cfi_restore 1 + LARG fp, FRAME_LEN-2*PTRS(sp) + .cfi_restore 8 + addi sp, sp, FRAME_LEN + .cfi_def_cfa_offset 0 + ret + .cfi_endproc + .size ffi_go_closure_asm, .-ffi_go_closure_asm diff --git a/deps/libffi/src/s390/ffi.c b/deps/libffi/src/s390/ffi.c new file mode 100644 index 00000000000000..b197cd5fa609ca --- /dev/null +++ b/deps/libffi/src/s390/ffi.c @@ -0,0 +1,783 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2000, 2007 Software AG + Copyright (c) 2008 Red Hat, Inc + + S390 Foreign Function Interface + + 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 AUTHOR 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. + ----------------------------------------------------------------------- */ +/*====================================================================*/ +/* Includes */ +/* -------- */ +/*====================================================================*/ + +#include +#include +#include +#include "internal.h" +#include + +/*====================== End of Includes =============================*/ + +/*====================================================================*/ +/* Defines */ +/* ------- */ +/*====================================================================*/ + +/* Maximum number of GPRs available for argument passing. */ +#define MAX_GPRARGS 5 + +/* Maximum number of FPRs available for argument passing. */ +#ifdef __s390x__ +#define MAX_FPRARGS 4 +#else +#define MAX_FPRARGS 2 +#endif + +/* Round to multiple of 16. */ +#define ROUND_SIZE(size) (((size) + 15) & ~15) + +/*===================== End of Defines ===============================*/ + +/*====================================================================*/ +/* Externals */ +/* --------- */ +/*====================================================================*/ + +struct call_frame +{ + void *back_chain; + void *eos; + unsigned long gpr_args[5]; + unsigned long gpr_save[9]; + unsigned long long fpr_args[4]; +}; + +extern void FFI_HIDDEN ffi_call_SYSV(struct call_frame *, unsigned, void *, + void (*fn)(void), void *); + +extern void ffi_closure_SYSV(void); +extern void ffi_go_closure_SYSV(void); + +/*====================== End of Externals ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_check_struct_type. */ +/* */ +/* Function - Determine if a structure can be passed within a */ +/* general purpose or floating point register. */ +/* */ +/*====================================================================*/ + +static int +ffi_check_struct_type (ffi_type *arg) +{ + size_t size = arg->size; + + /* If the struct has just one element, look at that element + to find out whether to consider the struct as floating point. */ + while (arg->type == FFI_TYPE_STRUCT + && arg->elements[0] && !arg->elements[1]) + arg = arg->elements[0]; + + /* Structs of size 1, 2, 4, and 8 are passed in registers, + just like the corresponding int/float types. */ + switch (size) + { + case 1: + return FFI_TYPE_UINT8; + + case 2: + return FFI_TYPE_UINT16; + + case 4: + if (arg->type == FFI_TYPE_FLOAT) + return FFI_TYPE_FLOAT; + else + return FFI_TYPE_UINT32; + + case 8: + if (arg->type == FFI_TYPE_DOUBLE) + return FFI_TYPE_DOUBLE; + else + return FFI_TYPE_UINT64; + + default: + break; + } + + /* Other structs are passed via a pointer to the data. */ + return FFI_TYPE_POINTER; +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_prep_cif_machdep. */ +/* */ +/* Function - Perform machine dependent CIF processing. */ +/* */ +/*====================================================================*/ + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t struct_size = 0; + int n_gpr = 0; + int n_fpr = 0; + int n_ov = 0; + + ffi_type **ptr; + int i; + + /* Determine return value handling. */ + + switch (cif->rtype->type) + { + /* Void is easy. */ + case FFI_TYPE_VOID: + cif->flags = FFI390_RET_VOID; + break; + + /* Structures and complex are returned via a hidden pointer. */ + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + cif->flags = FFI390_RET_STRUCT; + n_gpr++; /* We need one GPR to pass the pointer. */ + break; + + /* Floating point values are returned in fpr 0. */ + case FFI_TYPE_FLOAT: + cif->flags = FFI390_RET_FLOAT; + break; + + case FFI_TYPE_DOUBLE: + cif->flags = FFI390_RET_DOUBLE; + break; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + cif->flags = FFI390_RET_STRUCT; + n_gpr++; + break; +#endif + /* Integer values are returned in gpr 2 (and gpr 3 + for 64-bit values on 31-bit machines). */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI390_RET_INT64; + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + /* These are to be extended to word size. */ +#ifdef __s390x__ + cif->flags = FFI390_RET_INT64; +#else + cif->flags = FFI390_RET_INT32; +#endif + break; + + default: + FFI_ASSERT (0); + break; + } + + /* Now for the arguments. */ + + for (ptr = cif->arg_types, i = cif->nargs; + i > 0; + i--, ptr++) + { + int type = (*ptr)->type; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + + /* Check how a structure type is passed. */ + if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) + { + if (type == FFI_TYPE_COMPLEX) + type = FFI_TYPE_POINTER; + else + type = ffi_check_struct_type (*ptr); + + /* If we pass the struct via pointer, we must reserve space + to copy its data for proper call-by-value semantics. */ + if (type == FFI_TYPE_POINTER) + struct_size += ROUND_SIZE ((*ptr)->size); + } + + /* Now handle all primitive int/float data types. */ + switch (type) + { + /* The first MAX_FPRARGS floating point arguments + go in FPRs, the rest overflow to the stack. */ + + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + n_fpr++; + else + n_ov += sizeof (double) / sizeof (long); + break; + + case FFI_TYPE_FLOAT: + if (n_fpr < MAX_FPRARGS) + n_fpr++; + else + n_ov++; + break; + + /* On 31-bit machines, 64-bit integers are passed in GPR pairs, + if one is still available, or else on the stack. If only one + register is free, skip the register (it won't be used for any + subsequent argument either). */ + +#ifndef __s390x__ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + n_gpr += 2; + else + n_ov += 2; + break; +#endif + + /* Everything else is passed in GPRs (until MAX_GPRARGS + have been used) or overflows to the stack. */ + + default: + if (n_gpr < MAX_GPRARGS) + n_gpr++; + else + n_ov++; + break; + } + } + + /* Total stack space as required for overflow arguments + and temporary structure copies. */ + + cif->bytes = ROUND_SIZE (n_ov * sizeof (long)) + struct_size; + + return FFI_OK; +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_call. */ +/* */ +/* Function - Call the FFI routine. */ +/* */ +/*====================================================================*/ + +static void +ffi_call_int(ffi_cif *cif, + void (*fn)(void), + void *rvalue, + void **avalue, + void *closure) +{ + int ret_type = cif->flags; + size_t rsize = 0, bytes = cif->bytes; + unsigned char *stack, *p_struct; + struct call_frame *frame; + unsigned long *p_ov, *p_gpr; + unsigned long long *p_fpr; + int n_fpr, n_gpr, n_ov, i, n; + ffi_type **arg_types; + + FFI_ASSERT (cif->abi == FFI_SYSV); + + /* If we don't have a return value, we need to fake one. */ + if (rvalue == NULL) + { + if (ret_type & FFI390_RET_IN_MEM) + rsize = cif->rtype->size; + else + ret_type = FFI390_RET_VOID; + } + + /* The stack space will be filled with those areas: + + dummy structure return (highest addresses) + FPR argument register save area + GPR argument register save area + stack frame for ffi_call_SYSV + temporary struct copies + overflow argument area (lowest addresses) + + We set up the following pointers: + + p_fpr: bottom of the FPR area (growing upwards) + p_gpr: bottom of the GPR area (growing upwards) + p_ov: bottom of the overflow area (growing upwards) + p_struct: top of the struct copy area (growing downwards) + + All areas are kept aligned to twice the word size. + + Note that we're going to create the stack frame for both + ffi_call_SYSV _and_ the target function right here. This + works because we don't make any function calls with more + than 5 arguments (indeed only memcpy and ffi_call_SYSV), + and thus we don't have any stacked outgoing parameters. */ + + stack = alloca (bytes + sizeof(struct call_frame) + rsize); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + /* Link the new frame back to the one from this function. */ + frame->back_chain = __builtin_frame_address (0); + + /* Fill in all of the argument stuff. */ + p_ov = (unsigned long *)stack; + p_struct = (unsigned char *)frame; + p_gpr = frame->gpr_args; + p_fpr = frame->fpr_args; + n_fpr = n_gpr = n_ov = 0; + + /* If we returning a structure then we set the first parameter register + to the address of where we are returning this structure. */ + if (cif->flags & FFI390_RET_IN_MEM) + p_gpr[n_gpr++] = (uintptr_t) rvalue; + + /* Now for the arguments. */ + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = arg_types[i]; + void *arg = avalue[i]; + int type = ty->type; + ffi_arg val; + + restart: + switch (type) + { + case FFI_TYPE_SINT8: + val = *(SINT8 *)arg; + goto do_int; + case FFI_TYPE_UINT8: + val = *(UINT8 *)arg; + goto do_int; + case FFI_TYPE_SINT16: + val = *(SINT16 *)arg; + goto do_int; + case FFI_TYPE_UINT16: + val = *(UINT16 *)arg; + goto do_int; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + val = *(SINT32 *)arg; + goto do_int; + case FFI_TYPE_UINT32: + val = *(UINT32 *)arg; + goto do_int; + case FFI_TYPE_POINTER: + val = *(uintptr_t *)arg; + do_int: + *(n_gpr < MAX_GPRARGS ? p_gpr + n_gpr++ : p_ov + n_ov++) = val; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + val = *(UINT64 *)arg; + goto do_int; +#else + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + p_gpr[n_gpr++] = ((UINT32 *) arg)[0], + p_gpr[n_gpr++] = ((UINT32 *) arg)[1]; + else + p_ov[n_ov++] = ((UINT32 *) arg)[0], + p_ov[n_ov++] = ((UINT32 *) arg)[1]; +#endif + break; + + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + p_fpr[n_fpr++] = *(UINT64 *) arg; + else + { +#ifdef __s390x__ + p_ov[n_ov++] = *(UINT64 *) arg; +#else + p_ov[n_ov++] = ((UINT32 *) arg)[0], + p_ov[n_ov++] = ((UINT32 *) arg)[1]; +#endif + } + break; + + case FFI_TYPE_FLOAT: + val = *(UINT32 *)arg; + if (n_fpr < MAX_FPRARGS) + p_fpr[n_fpr++] = (UINT64)val << 32; + else + p_ov[n_ov++] = val; + break; + + case FFI_TYPE_STRUCT: + /* Check how a structure type is passed. */ + type = ffi_check_struct_type (ty); + /* Some structures are passed via a type they contain. */ + if (type != FFI_TYPE_POINTER) + goto restart; + /* ... otherwise, passed by reference. fallthru. */ + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + /* 16-byte long double is passed via reference. */ +#endif + case FFI_TYPE_COMPLEX: + /* Complex types are passed via reference. */ + p_struct -= ROUND_SIZE (ty->size); + memcpy (p_struct, arg, ty->size); + val = (uintptr_t)p_struct; + goto do_int; + + default: + FFI_ASSERT (0); + break; + } + } + + ffi_call_SYSV (frame, ret_type & FFI360_RET_MASK, rvalue, fn, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_closure_helper_SYSV. */ +/* */ +/* Function - Call a FFI closure target function. */ +/* */ +/*====================================================================*/ + +void FFI_HIDDEN +ffi_closure_helper_SYSV (ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + unsigned long *p_gpr, + unsigned long long *p_fpr, + unsigned long *p_ov) +{ + unsigned long long ret_buffer; + + void *rvalue = &ret_buffer; + void **avalue; + void **p_arg; + + int n_gpr = 0; + int n_fpr = 0; + int n_ov = 0; + + ffi_type **ptr; + int i; + + /* Allocate buffer for argument list pointers. */ + p_arg = avalue = alloca (cif->nargs * sizeof (void *)); + + /* If we returning a structure, pass the structure address + directly to the target function. Otherwise, have the target + function store the return value to the GPR save area. */ + if (cif->flags & FFI390_RET_IN_MEM) + rvalue = (void *) p_gpr[n_gpr++]; + + /* Now for the arguments. */ + for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, p_arg++, ptr++) + { + int deref_struct_pointer = 0; + int type = (*ptr)->type; + +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + /* 16-byte long double is passed like a struct. */ + if (type == FFI_TYPE_LONGDOUBLE) + type = FFI_TYPE_STRUCT; +#endif + + /* Check how a structure type is passed. */ + if (type == FFI_TYPE_STRUCT || type == FFI_TYPE_COMPLEX) + { + if (type == FFI_TYPE_COMPLEX) + type = FFI_TYPE_POINTER; + else + type = ffi_check_struct_type (*ptr); + + /* If we pass the struct via pointer, remember to + retrieve the pointer later. */ + if (type == FFI_TYPE_POINTER) + deref_struct_pointer = 1; + } + + /* Pointers are passed like UINTs of the same size. */ + if (type == FFI_TYPE_POINTER) + { +#ifdef __s390x__ + type = FFI_TYPE_UINT64; +#else + type = FFI_TYPE_UINT32; +#endif + } + + /* Now handle all primitive int/float data types. */ + switch (type) + { + case FFI_TYPE_DOUBLE: + if (n_fpr < MAX_FPRARGS) + *p_arg = &p_fpr[n_fpr++]; + else + *p_arg = &p_ov[n_ov], + n_ov += sizeof (double) / sizeof (long); + break; + + case FFI_TYPE_FLOAT: + if (n_fpr < MAX_FPRARGS) + *p_arg = &p_fpr[n_fpr++]; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + if (n_gpr < MAX_GPRARGS) + *p_arg = &p_gpr[n_gpr++]; + else + *p_arg = &p_ov[n_ov++]; +#else + if (n_gpr == MAX_GPRARGS-1) + n_gpr = MAX_GPRARGS; + if (n_gpr < MAX_GPRARGS) + *p_arg = &p_gpr[n_gpr], n_gpr += 2; + else + *p_arg = &p_ov[n_ov], n_ov += 2; +#endif + break; + + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 4; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; + break; + + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 2; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 2; + break; + + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + if (n_gpr < MAX_GPRARGS) + *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 1; + else + *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 1; + break; + + default: + FFI_ASSERT (0); + break; + } + + /* If this is a struct passed via pointer, we need to + actually retrieve that pointer. */ + if (deref_struct_pointer) + *p_arg = *(void **)*p_arg; + } + + + /* Call the target function. */ + (fun) (cif, rvalue, avalue, user_data); + + /* Convert the return value. */ + switch (cif->rtype->type) + { + /* Void is easy, and so is struct. */ + case FFI_TYPE_VOID: + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: +#endif + break; + + /* Floating point values are returned in fpr 0. */ + case FFI_TYPE_FLOAT: + p_fpr[0] = (long long) *(unsigned int *) rvalue << 32; + break; + + case FFI_TYPE_DOUBLE: + p_fpr[0] = *(unsigned long long *) rvalue; + break; + + /* Integer values are returned in gpr 2 (and gpr 3 + for 64-bit values on 31-bit machines). */ + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +#ifdef __s390x__ + p_gpr[0] = *(unsigned long *) rvalue; +#else + p_gpr[0] = ((unsigned long *) rvalue)[0], + p_gpr[1] = ((unsigned long *) rvalue)[1]; +#endif + break; + + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT32: + case FFI_TYPE_UINT16: + case FFI_TYPE_UINT8: + p_gpr[0] = *(unsigned long *) rvalue; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_SINT16: + case FFI_TYPE_SINT8: + p_gpr[0] = *(signed long *) rvalue; + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/*======================== End of Routine ============================*/ + +/*====================================================================*/ +/* */ +/* Name - ffi_prep_closure_loc. */ +/* */ +/* Function - Prepare a FFI closure. */ +/* */ +/*====================================================================*/ + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun) (ffi_cif *, void *, void **, void *), + void *user_data, + void *codeloc) +{ + static unsigned short const template[] = { + 0x0d10, /* basr %r1,0 */ +#ifndef __s390x__ + 0x9801, 0x1006, /* lm %r0,%r1,6(%r1) */ +#else + 0xeb01, 0x100e, 0x0004, /* lmg %r0,%r1,14(%r1) */ +#endif + 0x07f1 /* br %r1 */ + }; + void (*dest)(void); + unsigned long *tramp = (unsigned long *)&closure->tramp; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + +#if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + dest = ffi_closure_SYSV; + ffi_tramp_set_parms (closure->ftramp, dest, closure); + goto out; + } +#endif + + memcpy (tramp, template, sizeof(template)); + tramp[2] = (unsigned long)codeloc; + tramp[3] = (unsigned long)&ffi_closure_SYSV; + +#if defined(FFI_EXEC_STATIC_TRAMP) +out: +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +/*======================== End of Routine ============================*/ + +/* Build a Go language closure. */ + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_SYSV; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *tramp_size = FFI390_TRAMP_SIZE; + *map_size = FFI390_TRAMP_MAP_SIZE; + return &trampoline_code_table; +} +#endif \ No newline at end of file diff --git a/deps/libffi/src/s390/ffitarget.h b/deps/libffi/src/s390/ffitarget.h new file mode 100644 index 00000000000000..d8a4ee4bf10360 --- /dev/null +++ b/deps/libffi/src/s390/ffitarget.h @@ -0,0 +1,70 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for S390. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#if defined (__s390x__) +#ifndef S390X +#define S390X +#endif +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#define FFI_TARGET_HAS_COMPLEX_TYPE + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#ifdef S390X +#define FFI_TRAMPOLINE_SIZE 32 +#else +#define FFI_TRAMPOLINE_SIZE 16 +#endif +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/deps/libffi/src/s390/internal.h b/deps/libffi/src/s390/internal.h new file mode 100644 index 00000000000000..eba8e86d439cf6 --- /dev/null +++ b/deps/libffi/src/s390/internal.h @@ -0,0 +1,22 @@ +/* If these values change, sysv.S must be adapted! */ +#define FFI390_RET_DOUBLE 0 +#define FFI390_RET_FLOAT 1 +#define FFI390_RET_INT64 2 +#define FFI390_RET_INT32 3 +#define FFI390_RET_VOID 4 + +#define FFI360_RET_MASK 7 +#define FFI390_RET_IN_MEM 8 + +#define FFI390_RET_STRUCT (FFI390_RET_VOID | FFI390_RET_IN_MEM) + + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * For the trampoline code table mapping, a mapping size of 4K is chosen. + */ +#define FFI390_TRAMP_MAP_SHIFT 12 +#define FFI390_TRAMP_MAP_SIZE (1 << FFI390_TRAMP_MAP_SHIFT) +#define FFI390_TRAMP_SIZE 16 + +#endif diff --git a/deps/libffi/src/s390/sysv.S b/deps/libffi/src/s390/sysv.S new file mode 100644 index 00000000000000..d603218e6e200d --- /dev/null +++ b/deps/libffi/src/s390/sysv.S @@ -0,0 +1,363 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2000 Software AG + Copyright (c) 2008 Red Hat, Inc. + + S390 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + + .text + +#ifndef __s390x__ + + # r2: frame + # r3: ret_type + # r4: ret_addr + # r5: fun + # r6: closure + + # This assumes we are using gas. + .balign 8 + .globl ffi_call_SYSV + FFI_HIDDEN(ffi_call_SYSV) + .type ffi_call_SYSV,%function +ffi_call_SYSV: + .cfi_startproc + st %r6,44(%r2) # Save registers + stm %r12,%r14,48(%r2) + lr %r13,%r2 # Install frame pointer + .cfi_rel_offset r6, 44 + .cfi_rel_offset r12, 48 + .cfi_rel_offset r13, 52 + .cfi_rel_offset r14, 56 + .cfi_def_cfa_register r13 + st %r2,0(%r15) # Set up back chain + sla %r3,3 # ret_type *= 8 + lr %r12,%r4 # Save ret_addr + lr %r1,%r5 # Save fun + lr %r0,%r6 # Install static chain + + # Set return address, so that there is only one indirect jump. +#ifdef HAVE_AS_S390_ZARCH + larl %r14,.Ltable + ar %r14,%r3 +#else + basr %r14,0 +0: la %r14,.Ltable-0b(%r14,%r3) +#endif + + lm %r2,%r6,8(%r13) # Load arguments + ld %f0,64(%r13) + ld %f2,72(%r13) + br %r1 # ... and call function + + .balign 8 +.Ltable: +# FFI390_RET_DOUBLE + std %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_FLOAT + ste %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_INT64 + st %r3,4(%r12) + nop + # fallthru + + .balign 8 +# FFI390_RET_INT32 + st %r2,0(%r12) + nop + # fallthru + + .balign 8 +# FFI390_RET_VOID +.Ldone: + l %r14,56(%r13) + l %r12,48(%r13) + l %r6,44(%r13) + l %r13,52(%r13) + .cfi_restore 14 + .cfi_restore 13 + .cfi_restore 12 + .cfi_restore 6 + .cfi_def_cfa r15, 96 + br %r14 + .cfi_endproc + .size ffi_call_SYSV,.-ffi_call_SYSV + + + .balign 8 + .globl ffi_go_closure_SYSV + FFI_HIDDEN(ffi_go_closure_SYSV) + .type ffi_go_closure_SYSV,%function +ffi_go_closure_SYSV: + .cfi_startproc + stm %r2,%r6,8(%r15) # Save arguments + lr %r4,%r0 # Load closure -> user_data + l %r2,4(%r4) # ->cif + l %r3,8(%r4) # ->fun + j .Ldoclosure + .cfi_endproc + + .balign 8 + .globl ffi_closure_SYSV + FFI_HIDDEN(ffi_closure_SYSV) + .type ffi_closure_SYSV,%function +ffi_closure_SYSV: + .cfi_startproc + stm %r2,%r6,8(%r15) # Save arguments + lr %r4,%r0 # Closure + l %r2,16(%r4) # ->cif + l %r3,20(%r4) # ->fun + l %r4,24(%r4) # ->user_data +.Ldoclosure: + stm %r12,%r15,48(%r15) # Save registers + lr %r12,%r15 + .cfi_def_cfa_register r12 + .cfi_rel_offset r6, 24 + .cfi_rel_offset r12, 48 + .cfi_rel_offset r13, 52 + .cfi_rel_offset r14, 56 + .cfi_rel_offset r15, 60 +#ifndef HAVE_AS_S390_ZARCH + basr %r13,0 # Set up base register +.Lcbase: + l %r1,.Lchelper-.Lcbase(%r13) # Get helper function +#endif + ahi %r15,-96-8 # Set up stack frame + st %r12,0(%r15) # Set up back chain + + std %f0,64(%r12) # Save fp arguments + std %f2,72(%r12) + + la %r5,96(%r12) # Overflow + st %r5,96(%r15) + la %r6,64(%r12) # FPRs + la %r5,8(%r12) # GPRs +#ifdef HAVE_AS_S390_ZARCH + brasl %r14,ffi_closure_helper_SYSV +#else + bas %r14,0(%r1,%r13) # Call helper +#endif + + lr %r15,%r12 + .cfi_def_cfa_register r15 + lm %r12,%r14,48(%r12) # Restore saved registers + l %r6,24(%r15) + ld %f0,64(%r15) # Load return registers + lm %r2,%r3,8(%r15) + br %r14 + .cfi_endproc + +#ifndef HAVE_AS_S390_ZARCH + .align 4 +.Lchelper: + .long ffi_closure_helper_SYSV-.Lcbase +#endif + + .size ffi_closure_SYSV,.-ffi_closure_SYSV + +#else + + # r2: frame + # r3: ret_type + # r4: ret_addr + # r5: fun + # r6: closure + + # This assumes we are using gas. + .balign 8 + .globl ffi_call_SYSV + FFI_HIDDEN(ffi_call_SYSV) + .type ffi_call_SYSV,%function +ffi_call_SYSV: + .cfi_startproc + stg %r6,88(%r2) # Save registers + stmg %r12,%r14,96(%r2) + lgr %r13,%r2 # Install frame pointer + .cfi_rel_offset r6, 88 + .cfi_rel_offset r12, 96 + .cfi_rel_offset r13, 104 + .cfi_rel_offset r14, 112 + .cfi_def_cfa_register r13 + stg %r2,0(%r15) # Set up back chain + larl %r14,.Ltable # Set up return address + slag %r3,%r3,3 # ret_type *= 8 + lgr %r12,%r4 # Save ret_addr + lgr %r1,%r5 # Save fun + lgr %r0,%r6 # Install static chain + agr %r14,%r3 + lmg %r2,%r6,16(%r13) # Load arguments + ld %f0,128(%r13) + ld %f2,136(%r13) + ld %f4,144(%r13) + ld %f6,152(%r13) + br %r1 # ... and call function + + .balign 8 +.Ltable: +# FFI390_RET_DOUBLE + std %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_DOUBLE + ste %f0,0(%r12) + j .Ldone + + .balign 8 +# FFI390_RET_INT64 + stg %r2,0(%r12) + + .balign 8 +# FFI390_RET_INT32 + # Never used, as we always store type ffi_arg. + # But the stg above is 6 bytes and we cannot + # jump around this case, so fall through. + nop + nop + + .balign 8 +# FFI390_RET_VOID +.Ldone: + lg %r14,112(%r13) + lg %r12,96(%r13) + lg %r6,88(%r13) + lg %r13,104(%r13) + .cfi_restore r14 + .cfi_restore r13 + .cfi_restore r12 + .cfi_restore r6 + .cfi_def_cfa r15, 160 + br %r14 + .cfi_endproc + .size ffi_call_SYSV,.-ffi_call_SYSV + + + .balign 8 + .globl ffi_go_closure_SYSV + FFI_HIDDEN(ffi_go_closure_SYSV) + .type ffi_go_closure_SYSV,%function +ffi_go_closure_SYSV: + .cfi_startproc + stmg %r2,%r6,16(%r15) # Save arguments + lgr %r4,%r0 # Load closure -> user_data + lg %r2,8(%r4) # ->cif + lg %r3,16(%r4) # ->fun + j .Ldoclosure + .cfi_endproc + .size ffi_go_closure_SYSV,.-ffi_go_closure_SYSV + + + .balign 8 + .globl ffi_closure_SYSV + FFI_HIDDEN(ffi_closure_SYSV) + .type ffi_closure_SYSV,%function +ffi_closure_SYSV: + .cfi_startproc + stmg %r2,%r6,16(%r15) # Save arguments + lgr %r4,%r0 # Load closure + lg %r2,32(%r4) # ->cif + lg %r3,40(%r4) # ->fun + lg %r4,48(%r4) # ->user_data +.Ldoclosure: + stmg %r13,%r15,104(%r15) # Save registers + lgr %r13,%r15 + .cfi_def_cfa_register r13 + .cfi_rel_offset r6, 48 + .cfi_rel_offset r13, 104 + .cfi_rel_offset r14, 112 + .cfi_rel_offset r15, 120 + aghi %r15,-160-16 # Set up stack frame + stg %r13,0(%r15) # Set up back chain + + std %f0,128(%r13) # Save fp arguments + std %f2,136(%r13) + std %f4,144(%r13) + std %f6,152(%r13) + la %r5,160(%r13) # Overflow + stg %r5,160(%r15) + la %r6,128(%r13) # FPRs + la %r5,16(%r13) # GPRs + brasl %r14,ffi_closure_helper_SYSV # Call helper + + lgr %r15,%r13 + .cfi_def_cfa_register r15 + lmg %r13,%r14,104(%r13) # Restore saved registers + lg %r6,48(%r15) + ld %f0,128(%r15) # Load return registers + lg %r2,16(%r15) + br %r14 + .cfi_endproc + .size ffi_closure_SYSV,.-ffi_closure_SYSV + + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * Below is the definition of the trampoline code table. Each element in + * the code table is a trampoline. + */ +/* + * The trampoline uses the volatile register r0 and r1. As the registers are + * marked volatile in the ABI, the original values are not saved. + * + * The trampoline has two parameters - target code to jump to and data for + * the target code. The trampoline extracts the parameters from its parameter + * block (see tramp_table_map()). The trampoline saves the data address in r0. + * Finally, it jumps to the target code. + */ + + .align FFI390_TRAMP_MAP_SIZE +trampoline_code_table: + .rept FFI390_TRAMP_MAP_SIZE / FFI390_TRAMP_SIZE + basr %r1,0 # load next instruction address to r1 + lmg %r0,%r1,4094(%r1) # load parameter block + # r0 -> data + # r1 -> code + br %r1 # jump to r1/code + .balign 8 + .endr + + .globl trampoline_code_table + FFI_HIDDEN(trampoline_code_table) +#ifdef __ELF__ + .type trampoline_code_table, @function + .size trampoline_code_table,.- trampoline_code_table +#endif + .align FFI390_TRAMP_MAP_SIZE +#endif /* FFI_EXEC_STATIC_TRAMP */ + +#endif /* !s390x */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/sh/ffi.c b/deps/libffi/src/sh/ffi.c new file mode 100644 index 00000000000000..9ec86bfb205c8f --- /dev/null +++ b/deps/libffi/src/sh/ffi.c @@ -0,0 +1,717 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima + Copyright (c) 2008 Red Hat, Inc. + + SuperH Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define NGREGARG 4 +#if defined(__SH4__) +#define NFREGARG 8 +#endif + +#if defined(__HITACHI__) +#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 +#else +#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 +#endif + +/* If the structure has essentially an unique element, return its type. */ +static int +simple_type (ffi_type *arg) +{ + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + else if (arg->elements[1]) + return FFI_TYPE_STRUCT; + + return simple_type (arg->elements[0]); +} + +static int +return_type (ffi_type *arg) +{ + unsigned short type; + + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + + type = simple_type (arg->elements[0]); + if (! arg->elements[1]) + { + switch (type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + return FFI_TYPE_INT; + + default: + return type; + } + } + + /* gcc uses r0/r1 pair for some kind of structures. */ + if (arg->size <= 2 * sizeof (int)) + { + int i = 0; + ffi_type *e; + + while ((e = arg->elements[i++])) + { + type = simple_type (e); + switch (type) + { + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + return FFI_TYPE_UINT64; + + default: + break; + } + } + } + + return FFI_TYPE_STRUCT; +} + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register int tmp; + register unsigned int avn; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + int greg, ireg; +#if defined(__SH4__) + int freg = 0; +#endif + + tmp = 0; + argp = stack; + + if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += 4; + ireg = STRUCT_VALUE_ADDRESS_WITH_ARG ? 1 : 0; + } + else + ireg = 0; + + /* Set arguments for registers. */ + greg = ireg; + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ >= NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + argp += z; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ >= NFREGARG) + continue; + } + else +#endif + { + if (greg++ >= NGREGARG) + continue; + } + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + argp += z; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + continue; + freg = (freg + 1) & ~1; + freg += 2; + memcpy (argp, *p_argv, z); + argp += z; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); +#if defined(__SH4__) + if (greg + n - 1 >= NGREGARG) + continue; +#else + if (greg >= NGREGARG) + continue; +#endif + greg += n; + memcpy (argp, *p_argv, z); + argp += n * sizeof (int); + } + } + + /* Set arguments on stack. */ + greg = ireg; +#if defined(__SH4__) + freg = 0; +#endif + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ < NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; + + case FFI_TYPE_STRUCT: + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + break; + + default: + FFI_ASSERT(0); + } + argp += z; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ < NFREGARG) + continue; + } + else +#endif + { + if (greg++ < NGREGARG) + continue; + } + *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); + argp += z; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 < NFREGARG) + { + freg = (freg + 1) & ~1; + freg += 2; + continue; + } + memcpy (argp, *p_argv, z); + argp += z; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 < NGREGARG) + { + greg += n; + continue; + } +#if (! defined(__SH4__)) + else if (greg < NGREGARG) + { + greg = NGREGARG; + continue; + } +#endif + memcpy (argp, *p_argv, z); + argp += n * sizeof (int); + } + } + + return; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + int i, j; + int size, type; + int n, m; + int greg; +#if defined(__SH4__) + int freg = 0; +#endif + + cif->flags = 0; + + greg = ((return_type (cif->rtype) == FFI_TYPE_STRUCT) && + STRUCT_VALUE_ADDRESS_WITH_ARG) ? 1 : 0; + +#if defined(__SH4__) + for (i = j = 0; i < cif->nargs && j < 12; i++) + { + type = (cif->arg_types)[i]->type; + switch (type) + { + case FFI_TYPE_FLOAT: + if (freg >= NFREGARG) + continue; + freg++; + cif->flags += ((cif->arg_types)[i]->type) << (2 * j); + j++; + break; + + case FFI_TYPE_DOUBLE: + if ((freg + 1) >= NFREGARG) + continue; + freg = (freg + 1) & ~1; + freg += 2; + cif->flags += ((cif->arg_types)[i]->type) << (2 * j); + j++; + break; + + default: + size = (cif->arg_types)[i]->size; + n = (size + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 >= NGREGARG) + continue; + greg += n; + for (m = 0; m < n; m++) + cif->flags += FFI_TYPE_INT << (2 * j++); + break; + } + } +#else + for (i = j = 0; i < cif->nargs && j < 4; i++) + { + size = (cif->arg_types)[i]->size; + n = (size + sizeof (int) - 1) / sizeof (int); + if (greg >= NGREGARG) + continue; + else if (greg + n - 1 >= NGREGARG) + n = NGREGARG - greg; + greg += n; + for (m = 0; m < n; m++) + cif->flags += FFI_TYPE_INT << (2 * j++); + } +#endif + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + cif->flags += (unsigned) (return_type (cif->rtype)) << 24; + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags += (unsigned) cif->rtype->type << 24; + break; + + default: + cif->flags += FFI_TYPE_INT << 24; + break; + } + + return FFI_OK; +} + +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + unsigned, unsigned, unsigned *, void (*fn)(void)); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + UINT64 trvalue; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if (cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + ecif.rvalue = &trvalue; + else if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, + fn); + break; + default: + FFI_ASSERT(0); + break; + } + + if (rvalue + && cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + memcpy (rvalue, &trvalue, cif->rtype->size); +} + +extern void ffi_closure_SYSV (void); +#if defined(__SH4__) +extern void __ic_invalidate (void *line); +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + unsigned int insn; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + /* Set T bit if the function returns a struct pointed with R2. */ + insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT + ? 0x0018 /* sett */ + : 0x0008 /* clrt */); + +#ifdef __LITTLE_ENDIAN__ + tramp[0] = 0xd301d102; + tramp[1] = 0x0000412b | (insn << 16); +#else + tramp[0] = 0xd102d301; + tramp[1] = 0x412b0000 | insn; +#endif + *(void **) &tramp[2] = (void *)codeloc; /* ctx */ + *(void **) &tramp[3] = (void *)ffi_closure_SYSV; /* funaddr */ + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + +#if defined(__SH4__) + /* Flush the icache. */ + __ic_invalidate(codeloc); +#endif + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + * entry, r3 holds the address of the closure. + * After storing the registers that could possibly contain + * parameters to be passed into the stack frame and setting + * up space for a return value, ffi_closure_SYSV invokes the + * following helper function to do most of the work. + */ + +#ifdef __LITTLE_ENDIAN__ +#define OFS_INT8 0 +#define OFS_INT16 0 +#else +#define OFS_INT8 3 +#define OFS_INT16 2 +#endif + +int +ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, + unsigned long *pgr, unsigned long *pfr, + unsigned long *pst) +{ + void **avalue; + ffi_type **p_arg; + int i, avn; + int ireg, greg = 0; +#if defined(__SH4__) + int freg = 0; +#endif + ffi_cif *cif; + + cif = closure->cif; + avalue = alloca(cif->nargs * sizeof(void *)); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. */ + if (cif->rtype->type == FFI_TYPE_STRUCT && STRUCT_VALUE_ADDRESS_WITH_ARG) + { + rvalue = (void *) *pgr++; + ireg = 1; + } + else + ireg = 0; + + cif = closure->cif; + greg = ireg; + avn = cif->nargs; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ >= NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = (((char *)pgr) + OFS_INT8); + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = (((char *)pgr) + OFS_INT16); + break; + + case FFI_TYPE_STRUCT: + avalue[i] = pgr; + break; + + default: + FFI_ASSERT(0); + } + pgr++; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ >= NFREGARG) + continue; + avalue[i] = pfr; + pfr++; + } + else +#endif + { + if (greg++ >= NGREGARG) + continue; + avalue[i] = pgr; + pgr++; + } + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + continue; + if (freg & 1) + pfr++; + freg = (freg + 1) & ~1; + freg += 2; + avalue[i] = pfr; + pfr += 2; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); +#if defined(__SH4__) + if (greg + n - 1 >= NGREGARG) + continue; +#else + if (greg >= NGREGARG) + continue; +#endif + greg += n; + avalue[i] = pgr; + pgr += n; + } + } + + greg = ireg; +#if defined(__SH4__) + freg = 0; +#endif + + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof(int)) + { + if (greg++ < NGREGARG) + continue; + + z = sizeof(int); + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + avalue[i] = (((char *)pst) + OFS_INT8); + break; + + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + avalue[i] = (((char *)pst) + OFS_INT16); + break; + + case FFI_TYPE_STRUCT: + avalue[i] = pst; + break; + + default: + FFI_ASSERT(0); + } + pst++; + } + else if (z == sizeof(int)) + { +#if defined(__SH4__) + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg++ < NFREGARG) + continue; + } + else +#endif + { + if (greg++ < NGREGARG) + continue; + } + avalue[i] = pst; + pst++; + } +#if defined(__SH4__) + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 < NFREGARG) + { + freg = (freg + 1) & ~1; + freg += 2; + continue; + } + avalue[i] = pst; + pst += 2; + } +#endif + else + { + int n = (z + sizeof (int) - 1) / sizeof (int); + if (greg + n - 1 < NGREGARG) + { + greg += n; + continue; + } +#if (! defined(__SH4__)) + else if (greg < NGREGARG) + { + greg += n; + pst += greg - NGREGARG; + continue; + } +#endif + avalue[i] = pst; + pst += n; + } + } + + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. */ + return return_type (cif->rtype); +} diff --git a/deps/libffi/src/sh/ffitarget.h b/deps/libffi/src/sh/ffitarget.h new file mode 100644 index 00000000000000..a36bf4207046d7 --- /dev/null +++ b/deps/libffi/src/sh/ffitarget.h @@ -0,0 +1,54 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SuperH. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 16 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/deps/libffi/src/sh/sysv.S b/deps/libffi/src/sh/sysv.S new file mode 100644 index 00000000000000..5be7516d6559e3 --- /dev/null +++ b/deps/libffi/src/sh/sysv.S @@ -0,0 +1,850 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima + + SuperH Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): +#endif + +#if defined(__HITACHI__) +#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 +#else +#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 +#endif + +.text + + # r4: ffi_prep_args + # r5: &ecif + # r6: bytes + # r7: flags + # sp+0: rvalue + # sp+4: fn + + # This assumes we are using gas. +ENTRY(ffi_call_SYSV) + # Save registers +.LFB1: + mov.l r8,@-r15 +.LCFI0: + mov.l r9,@-r15 +.LCFI1: + mov.l r10,@-r15 +.LCFI2: + mov.l r12,@-r15 +.LCFI3: + mov.l r14,@-r15 +.LCFI4: + sts.l pr,@-r15 +.LCFI5: + mov r15,r14 +.LCFI6: +#if defined(__SH4__) + mov r6,r8 + mov r7,r9 + + sub r6,r15 + add #-16,r15 + mov #~7,r0 + and r0,r15 + + mov r4,r0 + jsr @r0 + mov r15,r4 + + mov r9,r1 + shlr8 r9 + shlr8 r9 + shlr8 r9 + + mov #FFI_TYPE_STRUCT,r2 + cmp/eq r2,r9 + bf 1f +#if STRUCT_VALUE_ADDRESS_WITH_ARG + mov.l @r15+,r4 + bra 2f + mov #5,r2 +#else + mov.l @r15+,r10 +#endif +1: + mov #4,r2 +2: + mov #4,r3 + +L_pass: + cmp/pl r8 + bf L_call_it + + mov r1,r0 + and #3,r0 + +L_pass_d: + cmp/eq #FFI_TYPE_DOUBLE,r0 + bf L_pass_f + + mov r3,r0 + and #1,r0 + tst r0,r0 + bt 1f + add #1,r3 +1: + mov #12,r0 + cmp/hs r0,r3 + bt/s 3f + shlr2 r1 + bsr L_pop_d + nop +3: + add #2,r3 + bra L_pass + add #-8,r8 + +L_pop_d: + mov r3,r0 + add r0,r0 + add r3,r0 + add #-12,r0 + braf r0 + nop +#ifdef __LITTLE_ENDIAN__ + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr4 + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr6 + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr8 + fmov.s @r15+,fr11 + rts + fmov.s @r15+,fr10 +#else + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr5 + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr7 + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr9 + fmov.s @r15+,fr10 + rts + fmov.s @r15+,fr11 +#endif + +L_pass_f: + cmp/eq #FFI_TYPE_FLOAT,r0 + bf L_pass_i + + mov #12,r0 + cmp/hs r0,r3 + bt/s 2f + shlr2 r1 + bsr L_pop_f + nop +2: + add #1,r3 + bra L_pass + add #-4,r8 + +L_pop_f: + mov r3,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop +#ifdef __LITTLE_ENDIAN__ + rts + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr11 + rts + fmov.s @r15+,fr10 +#else + rts + fmov.s @r15+,fr4 + rts + fmov.s @r15+,fr5 + rts + fmov.s @r15+,fr6 + rts + fmov.s @r15+,fr7 + rts + fmov.s @r15+,fr8 + rts + fmov.s @r15+,fr9 + rts + fmov.s @r15+,fr10 + rts + fmov.s @r15+,fr11 +#endif + +L_pass_i: + cmp/eq #FFI_TYPE_INT,r0 + bf L_call_it + + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r1 + bsr L_pop_i + nop +2: + add #1,r2 + bra L_pass + add #-4,r8 + +L_pop_i: + mov r2,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop + rts + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + +L_call_it: + # call function +#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) + mov r10, r2 +#endif + mov.l @(28,r14),r1 + jsr @r1 + nop + +L_ret_d: + mov #FFI_TYPE_DOUBLE,r2 + cmp/eq r2,r9 + bf L_ret_ll + + mov.l @(24,r14),r1 +#ifdef __LITTLE_ENDIAN__ + fmov.s fr1,@r1 + add #4,r1 + bra L_epilogue + fmov.s fr0,@r1 +#else + fmov.s fr0,@r1 + add #4,r1 + bra L_epilogue + fmov.s fr1,@r1 +#endif + +L_ret_ll: + mov #FFI_TYPE_SINT64,r2 + cmp/eq r2,r9 + bt/s 1f + mov #FFI_TYPE_UINT64,r2 + cmp/eq r2,r9 + bf L_ret_f + +1: + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_f: + mov #FFI_TYPE_FLOAT,r2 + cmp/eq r2,r9 + bf L_ret_i + + mov.l @(24,r14),r1 + bra L_epilogue + fmov.s fr0,@r1 + +L_ret_i: + mov #FFI_TYPE_INT,r2 + cmp/eq r2,r9 + bf L_epilogue + + mov.l @(24,r14),r1 + bra L_epilogue + mov.l r0,@r1 + +L_epilogue: + # Remove the space we pushed for the args + mov r14,r15 + + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r12 + mov.l @r15+,r10 + mov.l @r15+,r9 + rts + mov.l @r15+,r8 +#else + mov r6,r8 + mov r7,r9 + + sub r6,r15 + add #-16,r15 + mov #~7,r0 + and r0,r15 + + mov r4,r0 + jsr @r0 + mov r15,r4 + + mov r9,r3 + shlr8 r9 + shlr8 r9 + shlr8 r9 + + mov #FFI_TYPE_STRUCT,r2 + cmp/eq r2,r9 + bf 1f +#if STRUCT_VALUE_ADDRESS_WITH_ARG + mov.l @r15+,r4 + bra 2f + mov #5,r2 +#else + mov.l @r15+,r10 +#endif +1: + mov #4,r2 +2: + +L_pass: + cmp/pl r8 + bf L_call_it + + mov r3,r0 + and #3,r0 + +L_pass_d: + cmp/eq #FFI_TYPE_DOUBLE,r0 + bf L_pass_i + + mov r15,r0 + and #7,r0 + tst r0,r0 + bt 1f + add #4,r15 +1: + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r3 + bsr L_pop_d + nop +2: + add #2,r2 + bra L_pass + add #-8,r8 + +L_pop_d: + mov r2,r0 + add r0,r0 + add r2,r0 + add #-12,r0 + add r0,r0 + braf r0 + nop + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + rts + mov.l @r15+,r7 + +L_pass_i: + cmp/eq #FFI_TYPE_INT,r0 + bf L_call_it + + mov #8,r0 + cmp/hs r0,r2 + bt/s 2f + shlr2 r3 + bsr L_pop_i + nop +2: + add #1,r2 + bra L_pass + add #-4,r8 + +L_pop_i: + mov r2,r0 + shll2 r0 + add #-16,r0 + braf r0 + nop + rts + mov.l @r15+,r4 + rts + mov.l @r15+,r5 + rts + mov.l @r15+,r6 + rts + mov.l @r15+,r7 + +L_call_it: + # call function +#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) + mov r10, r2 +#endif + mov.l @(28,r14),r1 + jsr @r1 + nop + +L_ret_d: + mov #FFI_TYPE_DOUBLE,r2 + cmp/eq r2,r9 + bf L_ret_ll + + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_ll: + mov #FFI_TYPE_SINT64,r2 + cmp/eq r2,r9 + bt/s 1f + mov #FFI_TYPE_UINT64,r2 + cmp/eq r2,r9 + bf L_ret_i + +1: + mov.l @(24,r14),r2 + mov.l r0,@r2 + bra L_epilogue + mov.l r1,@(4,r2) + +L_ret_i: + mov #FFI_TYPE_FLOAT,r2 + cmp/eq r2,r9 + bt 1f + mov #FFI_TYPE_INT,r2 + cmp/eq r2,r9 + bf L_epilogue +1: + mov.l @(24,r14),r1 + bra L_epilogue + mov.l r0,@r1 + +L_epilogue: + # Remove the space we pushed for the args + mov r14,r15 + + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r12 + mov.l @r15+,r10 + mov.l @r15+,r9 + rts + mov.l @r15+,r8 +#endif +.LFE1: +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + +.globl ffi_closure_helper_SYSV + +ENTRY(ffi_closure_SYSV) +.LFB2: + mov.l r7,@-r15 +.LCFI7: + mov.l r6,@-r15 +.LCFI8: + mov.l r5,@-r15 +.LCFI9: + mov.l r4,@-r15 +.LCFIA: + mov.l r14,@-r15 +.LCFIB: + sts.l pr,@-r15 + + /* Stack layout: + xx bytes (on stack parameters) + 16 bytes (register parameters) + 4 bytes (saved frame pointer) + 4 bytes (saved return address) + 32 bytes (floating register parameters, SH-4 only) + 8 bytes (result) + 4 bytes (pad) + 4 bytes (5th arg) + <- new stack pointer + */ +.LCFIC: +#if defined(__SH4__) + add #-48,r15 +#else + add #-16,r15 +#endif +.LCFID: + mov r15,r14 +.LCFIE: + +#if defined(__SH4__) + mov r14,r1 + add #48,r1 +#ifdef __LITTLE_ENDIAN__ + fmov.s fr10,@-r1 + fmov.s fr11,@-r1 + fmov.s fr8,@-r1 + fmov.s fr9,@-r1 + fmov.s fr6,@-r1 + fmov.s fr7,@-r1 + fmov.s fr4,@-r1 + fmov.s fr5,@-r1 +#else + fmov.s fr11,@-r1 + fmov.s fr10,@-r1 + fmov.s fr9,@-r1 + fmov.s fr8,@-r1 + fmov.s fr7,@-r1 + fmov.s fr6,@-r1 + fmov.s fr5,@-r1 + fmov.s fr4,@-r1 +#endif + mov r1,r7 + mov r14,r6 + add #56,r6 +#else + mov r14,r6 + add #24,r6 +#endif + + bt/s 10f + mov r2, r5 + mov r14,r1 + add #8,r1 + mov r1,r5 +10: + + mov r14,r1 +#if defined(__SH4__) + add #72,r1 +#else + add #40,r1 +#endif + mov.l r1,@r14 + +#ifdef PIC + mov.l L_got,r1 + mova L_got,r0 + add r0,r1 + mov.l L_helper,r0 + add r1,r0 +#else + mov.l L_helper,r0 +#endif + jsr @r0 + mov r3,r4 + + shll r0 + mov r0,r1 + mova L_table,r0 + add r1,r0 + mov.w @r0,r0 + mov r14,r2 + braf r0 + add #8,r2 +0: + .align 2 +#ifdef PIC +L_got: + .long _GLOBAL_OFFSET_TABLE_ +L_helper: + .long ffi_closure_helper_SYSV@GOTOFF +#else +L_helper: + .long ffi_closure_helper_SYSV +#endif +L_table: + .short L_case_v - 0b /* FFI_TYPE_VOID */ + .short L_case_i - 0b /* FFI_TYPE_INT */ +#if defined(__SH4__) + .short L_case_f - 0b /* FFI_TYPE_FLOAT */ + .short L_case_d - 0b /* FFI_TYPE_DOUBLE */ + .short L_case_d - 0b /* FFI_TYPE_LONGDOUBLE */ +#else + .short L_case_i - 0b /* FFI_TYPE_FLOAT */ + .short L_case_ll - 0b /* FFI_TYPE_DOUBLE */ + .short L_case_ll - 0b /* FFI_TYPE_LONGDOUBLE */ +#endif + .short L_case_uq - 0b /* FFI_TYPE_UINT8 */ + .short L_case_q - 0b /* FFI_TYPE_SINT8 */ + .short L_case_uh - 0b /* FFI_TYPE_UINT16 */ + .short L_case_h - 0b /* FFI_TYPE_SINT16 */ + .short L_case_i - 0b /* FFI_TYPE_UINT32 */ + .short L_case_i - 0b /* FFI_TYPE_SINT32 */ + .short L_case_ll - 0b /* FFI_TYPE_UINT64 */ + .short L_case_ll - 0b /* FFI_TYPE_SINT64 */ + .short L_case_v - 0b /* FFI_TYPE_STRUCT */ + .short L_case_i - 0b /* FFI_TYPE_POINTER */ + +#if defined(__SH4__) +L_case_d: +#ifdef __LITTLE_ENDIAN__ + fmov.s @r2+,fr1 + bra L_case_v + fmov.s @r2,fr0 +#else + fmov.s @r2+,fr0 + bra L_case_v + fmov.s @r2,fr1 +#endif + +L_case_f: + bra L_case_v + fmov.s @r2,fr0 +#endif + +L_case_ll: + mov.l @r2+,r0 + bra L_case_v + mov.l @r2,r1 + +L_case_i: + bra L_case_v + mov.l @r2,r0 + +L_case_q: +#ifdef __LITTLE_ENDIAN__ +#else + add #3,r2 +#endif + bra L_case_v + mov.b @r2,r0 + +L_case_uq: +#ifdef __LITTLE_ENDIAN__ +#else + add #3,r2 +#endif + mov.b @r2,r0 + bra L_case_v + extu.b r0,r0 + +L_case_h: +#ifdef __LITTLE_ENDIAN__ +#else + add #2,r2 +#endif + bra L_case_v + mov.w @r2,r0 + +L_case_uh: +#ifdef __LITTLE_ENDIAN__ +#else + add #2,r2 +#endif + mov.w @r2,r0 + extu.w r0,r0 + /* fall through */ + +L_case_v: +#if defined(__SH4__) + add #48,r15 +#else + add #16,r15 +#endif + lds.l @r15+,pr + mov.l @r15+,r14 + rts + add #16,r15 +.LFE2: +.ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif + + .section ".eh_frame","aw",@progbits +__FRAME_BEGIN__: + .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ +.LSCIE1: + .4byte 0x0 /* CIE Identifier Tag */ + .byte 0x1 /* CIE Version */ +#ifdef PIC + .ascii "zR\0" /* CIE Augmentation */ +#else + .byte 0x0 /* CIE Augmentation */ +#endif + .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ + .byte 0x7c /* sleb128 -4; CIE Data Alignment Factor */ + .byte 0x11 /* CIE RA Column */ +#ifdef PIC + .uleb128 0x1 /* Augmentation size */ + .byte 0x10 /* FDE Encoding (pcrel) */ +#endif + .byte 0xc /* DW_CFA_def_cfa */ + .byte 0xf /* uleb128 0xf */ + .byte 0x0 /* uleb128 0x0 */ + .align 2 +.LECIE1: +.LSFDE1: + .4byte .LEFDE1-.LASFDE1 /* FDE Length */ +.LASFDE1: + .4byte .LASFDE1-__FRAME_BEGIN__ /* FDE CIE offset */ +#ifdef PIC + .4byte .LFB1-. /* FDE initial location */ +#else + .4byte .LFB1 /* FDE initial location */ +#endif + .4byte .LFE1-.LFB1 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI0-.LFB1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI1-.LCFI0 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x8 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI2-.LCFI1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0xc /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI3-.LCFI2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x10 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI4-.LCFI3 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x14 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI5-.LCFI4 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x18 /* uleb128 0x4 */ + .byte 0x91 /* DW_CFA_offset, column 0x11 */ + .byte 0x6 /* uleb128 0x6 */ + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .byte 0x5 /* uleb128 0x5 */ + .byte 0x8c /* DW_CFA_offset, column 0xc */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x8a /* DW_CFA_offset, column 0xa */ + .byte 0x3 /* uleb128 0x3 */ + .byte 0x89 /* DW_CFA_offset, column 0x9 */ + .byte 0x2 /* uleb128 0x2 */ + .byte 0x88 /* DW_CFA_offset, column 0x8 */ + .byte 0x1 /* uleb128 0x1 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI6-.LCFI5 + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0xe /* uleb128 0xe */ + .align 2 +.LEFDE1: + +.LSFDE3: + .4byte .LEFDE3-.LASFDE3 /* FDE Length */ +.LASFDE3: + .4byte .LASFDE3-__FRAME_BEGIN__ /* FDE CIE offset */ +#ifdef PIC + .4byte .LFB2-. /* FDE initial location */ +#else + .4byte .LFB2 /* FDE initial location */ +#endif + .4byte .LFE2-.LFB2 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI7-.LFB2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI8-.LCFI7 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x8 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFI9-.LCFI8 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0xc /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIA-.LCFI9 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x10 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIB-.LCFIA + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x14 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIC-.LCFIB + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte 0x18 /* uleb128 0x4 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFID-.LCFIC + .byte 0xe /* DW_CFA_def_cfa_offset */ +#if defined(__SH4__) + .byte 24+48 /* uleb128 24+48 */ +#else + .byte 24+16 /* uleb128 24+16 */ +#endif + .byte 0x91 /* DW_CFA_offset, column 0x11 */ + .byte 0x6 /* uleb128 0x6 */ + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .byte 0x5 /* uleb128 0x5 */ + .byte 0x84 /* DW_CFA_offset, column 0x4 */ + .byte 0x4 /* uleb128 0x4 */ + .byte 0x85 /* DW_CFA_offset, column 0x5 */ + .byte 0x3 /* uleb128 0x3 */ + .byte 0x86 /* DW_CFA_offset, column 0x6 */ + .byte 0x2 /* uleb128 0x2 */ + .byte 0x87 /* DW_CFA_offset, column 0x7 */ + .byte 0x1 /* uleb128 0x1 */ + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte .LCFIE-.LCFID + .byte 0xd /* DW_CFA_def_cfa_register */ + .byte 0xe /* uleb128 0xe */ + .align 2 +.LEFDE3: diff --git a/deps/libffi/src/sh64/ffi.c b/deps/libffi/src/sh64/ffi.c new file mode 100644 index 00000000000000..123b87ace92f45 --- /dev/null +++ b/deps/libffi/src/sh64/ffi.c @@ -0,0 +1,469 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima + Copyright (c) 2008 Anthony Green + + SuperH SHmedia Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include + +#define NGREGARG 8 +#define NFREGARG 12 + +static int +return_type (ffi_type *arg) +{ + + if (arg->type != FFI_TYPE_STRUCT) + return arg->type; + + /* gcc uses r2 if the result can be packed in on register. */ + if (arg->size <= sizeof (UINT8)) + return FFI_TYPE_UINT8; + else if (arg->size <= sizeof (UINT16)) + return FFI_TYPE_UINT16; + else if (arg->size <= sizeof (UINT32)) + return FFI_TYPE_UINT32; + else if (arg->size <= sizeof (UINT64)) + return FFI_TYPE_UINT64; + + return FFI_TYPE_STRUCT; +} + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +void ffi_prep_args(char *stack, extended_cif *ecif) +{ + register unsigned int i; + register unsigned int avn; + register void **p_argv; + register char *argp; + register ffi_type **p_arg; + + argp = stack; + + if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) + { + *(void **) argp = ecif->rvalue; + argp += sizeof (UINT64); + } + + avn = ecif->cif->nargs; + p_argv = ecif->avalue; + + for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) + { + size_t z; + int align; + + z = (*p_arg)->size; + align = (*p_arg)->alignment; + if (z < sizeof (UINT32)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(SINT64 *) argp = (SINT64) *(SINT8 *)(*p_argv); + break; + + case FFI_TYPE_UINT8: + *(UINT64 *) argp = (UINT64) *(UINT8 *)(*p_argv); + break; + + case FFI_TYPE_SINT16: + *(SINT64 *) argp = (SINT64) *(SINT16 *)(*p_argv); + break; + + case FFI_TYPE_UINT16: + *(UINT64 *) argp = (UINT64) *(UINT16 *)(*p_argv); + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT(0); + } + argp += sizeof (UINT64); + } + else if (z == sizeof (UINT32) && align == sizeof (UINT32)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + *(SINT64 *) argp = (SINT64) *(SINT32 *) (*p_argv); + break; + + case FFI_TYPE_FLOAT: + case FFI_TYPE_POINTER: + case FFI_TYPE_UINT32: + case FFI_TYPE_STRUCT: + *(UINT64 *) argp = (UINT64) *(UINT32 *) (*p_argv); + break; + + default: + FFI_ASSERT(0); + break; + } + argp += sizeof (UINT64); + } + else if (z == sizeof (UINT64) + && align == sizeof (UINT64) + && ((int) *p_argv & (sizeof (UINT64) - 1)) == 0) + { + *(UINT64 *) argp = *(UINT64 *) (*p_argv); + argp += sizeof (UINT64); + } + else + { + int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); + + memcpy (argp, *p_argv, z); + argp += n * sizeof (UINT64); + } + } + + return; +} + +/* Perform machine dependent cif processing */ +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + int i, j; + int size, type; + int n, m; + int greg; + int freg; + int fpair = -1; + + greg = (return_type (cif->rtype) == FFI_TYPE_STRUCT ? 1 : 0); + freg = 0; + cif->flags2 = 0; + + for (i = j = 0; i < cif->nargs; i++) + { + type = (cif->arg_types)[i]->type; + switch (type) + { + case FFI_TYPE_FLOAT: + greg++; + cif->bytes += sizeof (UINT64) - sizeof (float); + if (freg >= NFREGARG - 1) + continue; + if (fpair < 0) + { + fpair = freg; + freg += 2; + } + else + fpair = -1; + cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); + break; + + case FFI_TYPE_DOUBLE: + if (greg++ >= NGREGARG && (freg + 1) >= NFREGARG) + continue; + if ((freg + 1) < NFREGARG) + { + freg += 2; + cif->flags2 += ((cif->arg_types)[i]->type) << (2 * j++); + } + else + cif->flags2 += FFI_TYPE_INT << (2 * j++); + break; + + default: + size = (cif->arg_types)[i]->size; + if (size < sizeof (UINT64)) + cif->bytes += sizeof (UINT64) - size; + n = (size + sizeof (UINT64) - 1) / sizeof (UINT64); + if (greg >= NGREGARG) + continue; + else if (greg + n - 1 >= NGREGARG) + greg = NGREGARG; + else + greg += n; + for (m = 0; m < n; m++) + cif->flags2 += FFI_TYPE_INT << (2 * j++); + break; + } + } + + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_STRUCT: + cif->flags = return_type (cif->rtype); + break; + + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + cif->flags = cif->rtype->type; + break; + + default: + cif->flags = FFI_TYPE_INT; + break; + } + + return FFI_OK; +} + +/*@-declundef@*/ +/*@-exportheader@*/ +extern void ffi_call_SYSV(void (*)(char *, extended_cif *), + /*@out@*/ extended_cif *, + unsigned, unsigned, long long, + /*@out@*/ unsigned *, + void (*fn)(void)); +/*@=declundef@*/ +/*@=exportheader@*/ + +void ffi_call(/*@dependent@*/ ffi_cif *cif, + void (*fn)(void), + /*@out@*/ void *rvalue, + /*@dependent@*/ void **avalue) +{ + extended_cif ecif; + UINT64 trvalue; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + + if (cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + ecif.rvalue = &trvalue; + else if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); + } + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, cif->flags2, + ecif.rvalue, fn); + break; + default: + FFI_ASSERT(0); + break; + } + + if (rvalue + && cif->rtype->type == FFI_TYPE_STRUCT + && return_type (cif->rtype) != FFI_TYPE_STRUCT) + memcpy (rvalue, &trvalue, cif->rtype->size); +} + +extern void ffi_closure_SYSV (void); +extern void __ic_invalidate (void *line); + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp; + + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + tramp = (unsigned int *) &closure->tramp[0]; + /* Since ffi_closure is an aligned object, the ffi trampoline is + called as an SHcompact code. Sigh. + SHcompact part: + mova @(1,pc),r0; add #1,r0; jmp @r0; nop; + SHmedia part: + movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0 + movi cxt >> 16,r1; shori cxt,r1; blink tr0,r63 */ +#ifdef __LITTLE_ENDIAN__ + tramp[0] = 0x7001c701; + tramp[1] = 0x0009402b; +#else + tramp[0] = 0xc7017001; + tramp[1] = 0x402b0009; +#endif + tramp[2] = 0xcc000010 | (((UINT32) ffi_closure_SYSV) >> 16) << 10; + tramp[3] = 0xc8000010 | (((UINT32) ffi_closure_SYSV) & 0xffff) << 10; + tramp[4] = 0x6bf10600; + tramp[5] = 0xcc000010 | (((UINT32) codeloc) >> 16) << 10; + tramp[6] = 0xc8000010 | (((UINT32) codeloc) & 0xffff) << 10; + tramp[7] = 0x4401fff0; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + /* Flush the icache. */ + asm volatile ("ocbwb %0,0; synco; icbi %1,0; synci" : : "r" (tramp), + "r"(codeloc)); + + return FFI_OK; +} + +/* Basically the trampoline invokes ffi_closure_SYSV, and on + * entry, r3 holds the address of the closure. + * After storing the registers that could possibly contain + * parameters to be passed into the stack frame and setting + * up space for a return value, ffi_closure_SYSV invokes the + * following helper function to do most of the work. + */ + +int +ffi_closure_helper_SYSV (ffi_closure *closure, UINT64 *rvalue, + UINT64 *pgr, UINT64 *pfr, UINT64 *pst) +{ + void **avalue; + ffi_type **p_arg; + int i, avn; + int greg, freg; + ffi_cif *cif; + int fpair = -1; + + cif = closure->cif; + avalue = alloca (cif->nargs * sizeof (void *)); + + /* Copy the caller's structure return value address so that the closure + returns the data directly to the caller. */ + if (return_type (cif->rtype) == FFI_TYPE_STRUCT) + { + rvalue = (UINT64 *) *pgr; + greg = 1; + } + else + greg = 0; + + freg = 0; + cif = closure->cif; + avn = cif->nargs; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) + { + size_t z; + void *p; + + z = (*p_arg)->size; + if (z < sizeof (UINT32)) + { + p = pgr + greg++; + + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + case FFI_TYPE_STRUCT: +#ifdef __LITTLE_ENDIAN__ + avalue[i] = p; +#else + avalue[i] = ((char *) p) + sizeof (UINT32) - z; +#endif + break; + + default: + FFI_ASSERT(0); + } + } + else if (z == sizeof (UINT32)) + { + if ((*p_arg)->type == FFI_TYPE_FLOAT) + { + if (freg < NFREGARG - 1) + { + if (fpair >= 0) + { + avalue[i] = (UINT32 *) pfr + fpair; + fpair = -1; + } + else + { +#ifdef __LITTLE_ENDIAN__ + fpair = freg; + avalue[i] = (UINT32 *) pfr + (1 ^ freg); +#else + fpair = 1 ^ freg; + avalue[i] = (UINT32 *) pfr + freg; +#endif + freg += 2; + } + } + else +#ifdef __LITTLE_ENDIAN__ + avalue[i] = pgr + greg; +#else + avalue[i] = (UINT32 *) (pgr + greg) + 1; +#endif + } + else +#ifdef __LITTLE_ENDIAN__ + avalue[i] = pgr + greg; +#else + avalue[i] = (UINT32 *) (pgr + greg) + 1; +#endif + greg++; + } + else if ((*p_arg)->type == FFI_TYPE_DOUBLE) + { + if (freg + 1 >= NFREGARG) + avalue[i] = pgr + greg; + else + { + avalue[i] = pfr + (freg >> 1); + freg += 2; + } + greg++; + } + else + { + int n = (z + sizeof (UINT64) - 1) / sizeof (UINT64); + + avalue[i] = pgr + greg; + greg += n; + } + } + + (closure->fun) (cif, rvalue, avalue, closure->user_data); + + /* Tell ffi_closure_SYSV how to perform return type promotions. */ + return return_type (cif->rtype); +} + diff --git a/deps/libffi/src/sh64/ffitarget.h b/deps/libffi/src/sh64/ffitarget.h new file mode 100644 index 00000000000000..08a6fe96cc71d7 --- /dev/null +++ b/deps/libffi/src/sh64/ffitarget.h @@ -0,0 +1,58 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SuperH - SHmedia. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; + +#define FFI_EXTRA_CIF_FIELDS long long flags2 +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 32 +#define FFI_NATIVE_RAW_API 0 + +#endif + diff --git a/deps/libffi/src/sh64/sysv.S b/deps/libffi/src/sh64/sysv.S new file mode 100644 index 00000000000000..c4587d5f3e732b --- /dev/null +++ b/deps/libffi/src/sh64/sysv.S @@ -0,0 +1,539 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2003, 2004, 2006, 2008 Kaz Kojima + + SuperH SHmedia Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#ifdef HAVE_MACHINE_ASM_H +#include +#else +/* XXX these lose for some platforms, I'm sure. */ +#define CNAME(x) x +#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): +#endif + +#ifdef __LITTLE_ENDIAN__ +#define OFS_FLT 0 +#else +#define OFS_FLT 4 +#endif + + .section .text..SHmedia32,"ax" + + # r2: ffi_prep_args + # r3: &ecif + # r4: bytes + # r5: flags + # r6: flags2 + # r7: rvalue + # r8: fn + + # This assumes we are using gas. + .align 5 +ENTRY(ffi_call_SYSV) + # Save registers +.LFB1: + addi.l r15, -48, r15 +.LCFI0: + st.q r15, 40, r32 + st.q r15, 32, r31 + st.q r15, 24, r30 + st.q r15, 16, r29 + st.q r15, 8, r28 + st.l r15, 4, r18 + st.l r15, 0, r14 +.LCFI1: + add.l r15, r63, r14 +.LCFI2: +# add r4, r63, r28 + add r5, r63, r29 + add r6, r63, r30 + add r7, r63, r31 + add r8, r63, r32 + + addi r4, (64 + 7), r4 + andi r4, ~7, r4 + sub.l r15, r4, r15 + + ptabs/l r2, tr0 + add r15, r63, r2 + blink tr0, r18 + + addi r15, 64, r22 + movi 0, r0 + movi 0, r1 + movi -1, r23 + + pt/l 1f, tr1 + bnei/l r29, FFI_TYPE_STRUCT, tr1 + ld.l r15, 0, r19 + addi r15, 8, r15 + addi r0, 1, r0 +1: + +.L_pass: + andi r30, 3, r20 + shlri r30, 2, r30 + + pt/l .L_call_it, tr0 + pt/l .L_pass_i, tr1 + pt/l .L_pass_f, tr2 + + beqi/l r20, FFI_TYPE_VOID, tr0 + beqi/l r20, FFI_TYPE_INT, tr1 + beqi/l r20, FFI_TYPE_FLOAT, tr2 + +.L_pass_d: + addi r0, 1, r0 + pt/l 3f, tr0 + movi 12, r20 + bge/l r1, r20, tr0 + + pt/l .L_pop_d, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + addi r1, 2, r1 + blink tr0, r63 + +.L_pop_d: + pt/l .L_pop_d_tbl, tr1 + gettr tr1, r20 + shlli r1, 2, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_d_tbl: + fld.d r15, 0, dr0 + blink tr0, r63 + fld.d r15, 0, dr2 + blink tr0, r63 + fld.d r15, 0, dr4 + blink tr0, r63 + fld.d r15, 0, dr6 + blink tr0, r63 + fld.d r15, 0, dr8 + blink tr0, r63 + fld.d r15, 0, dr10 + blink tr0, r63 + +.L_pass_f: + addi r0, 1, r0 + pt/l 3f, tr0 + movi 12, r20 + bge/l r1, r20, tr0 + + pt/l .L_pop_f, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + blink tr0, r63 + +.L_pop_f: + pt/l .L_pop_f_tbl, tr1 + pt/l 5f, tr2 + gettr tr1, r20 + bge/l r23, r63, tr2 + add r1, r63, r23 + shlli r1, 3, r21 + addi r1, 2, r1 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 +5: + addi r23, 1, r21 + movi -1, r23 + shlli r21, 3, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_f_tbl: + fld.s r15, OFS_FLT, fr0 + blink tr0, r63 + fld.s r15, OFS_FLT, fr1 + blink tr0, r63 + fld.s r15, OFS_FLT, fr2 + blink tr0, r63 + fld.s r15, OFS_FLT, fr3 + blink tr0, r63 + fld.s r15, OFS_FLT, fr4 + blink tr0, r63 + fld.s r15, OFS_FLT, fr5 + blink tr0, r63 + fld.s r15, OFS_FLT, fr6 + blink tr0, r63 + fld.s r15, OFS_FLT, fr7 + blink tr0, r63 + fld.s r15, OFS_FLT, fr8 + blink tr0, r63 + fld.s r15, OFS_FLT, fr9 + blink tr0, r63 + fld.s r15, OFS_FLT, fr10 + blink tr0, r63 + fld.s r15, OFS_FLT, fr11 + blink tr0, r63 + +.L_pass_i: + pt/l 3f, tr0 + movi 8, r20 + bge/l r0, r20, tr0 + + pt/l .L_pop_i, tr1 + pt/l 2f, tr0 + blink tr1, r63 +2: + addi.l r15, 8, r15 +3: + pt/l .L_pass, tr0 + addi r0, 1, r0 + blink tr0, r63 + +.L_pop_i: + pt/l .L_pop_i_tbl, tr1 + gettr tr1, r20 + shlli r0, 3, r21 + add r20, r21, r20 + ptabs/l r20, tr1 + blink tr1, r63 + +.L_pop_i_tbl: + ld.q r15, 0, r2 + blink tr0, r63 + ld.q r15, 0, r3 + blink tr0, r63 + ld.q r15, 0, r4 + blink tr0, r63 + ld.q r15, 0, r5 + blink tr0, r63 + ld.q r15, 0, r6 + blink tr0, r63 + ld.q r15, 0, r7 + blink tr0, r63 + ld.q r15, 0, r8 + blink tr0, r63 + ld.q r15, 0, r9 + blink tr0, r63 + +.L_call_it: + # call function + pt/l 1f, tr1 + bnei/l r29, FFI_TYPE_STRUCT, tr1 + add r19, r63, r2 +1: + add r22, r63, r15 + ptabs/l r32, tr0 + blink tr0, r18 + + pt/l .L_ret_i, tr0 + pt/l .L_ret_ll, tr1 + pt/l .L_ret_d, tr2 + pt/l .L_ret_f, tr3 + pt/l .L_epilogue, tr4 + + beqi/l r29, FFI_TYPE_INT, tr0 + beqi/l r29, FFI_TYPE_UINT32, tr0 + beqi/l r29, FFI_TYPE_SINT64, tr1 + beqi/l r29, FFI_TYPE_UINT64, tr1 + beqi/l r29, FFI_TYPE_DOUBLE, tr2 + beqi/l r29, FFI_TYPE_FLOAT, tr3 + + pt/l .L_ret_q, tr0 + pt/l .L_ret_h, tr1 + + beqi/l r29, FFI_TYPE_UINT8, tr0 + beqi/l r29, FFI_TYPE_UINT16, tr1 + blink tr4, r63 + +.L_ret_d: + fst.d r31, 0, dr0 + blink tr4, r63 + +.L_ret_ll: + st.q r31, 0, r2 + blink tr4, r63 + +.L_ret_f: + fst.s r31, OFS_FLT, fr0 + blink tr4, r63 + +.L_ret_q: + st.b r31, 0, r2 + blink tr4, r63 + +.L_ret_h: + st.w r31, 0, r2 + blink tr4, r63 + +.L_ret_i: + st.l r31, 0, r2 + # Fall + +.L_epilogue: + # Remove the space we pushed for the args + add r14, r63, r15 + + ld.l r15, 0, r14 + ld.l r15, 4, r18 + ld.q r15, 8, r28 + ld.q r15, 16, r29 + ld.q r15, 24, r30 + ld.q r15, 32, r31 + ld.q r15, 40, r32 + addi.l r15, 48, r15 + ptabs r18, tr0 + blink tr0, r63 + +.LFE1: +.ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + + .align 5 +ENTRY(ffi_closure_SYSV) +.LFB2: + addi.l r15, -136, r15 +.LCFI3: + st.l r15, 12, r18 + st.l r15, 8, r14 + st.l r15, 4, r12 +.LCFI4: + add r15, r63, r14 +.LCFI5: + /* Stack layout: + ... + 64 bytes (register parameters) + 48 bytes (floating register parameters) + 8 bytes (result) + 4 bytes (r18) + 4 bytes (r14) + 4 bytes (r12) + 4 bytes (for align) + <- new stack pointer + */ + fst.d r14, 24, dr0 + fst.d r14, 32, dr2 + fst.d r14, 40, dr4 + fst.d r14, 48, dr6 + fst.d r14, 56, dr8 + fst.d r14, 64, dr10 + st.q r14, 72, r2 + st.q r14, 80, r3 + st.q r14, 88, r4 + st.q r14, 96, r5 + st.q r14, 104, r6 + st.q r14, 112, r7 + st.q r14, 120, r8 + st.q r14, 128, r9 + + add r1, r63, r2 + addi r14, 16, r3 + addi r14, 72, r4 + addi r14, 24, r5 + addi r14, 136, r6 +#ifdef PIC + movi (((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) >> 16) & 65535), r12 + shori ((datalabel _GLOBAL_OFFSET_TABLE_-(.LPCS0-.)) & 65535), r12 +.LPCS0: ptrel/u r12, tr0 + movi ((ffi_closure_helper_SYSV@GOTPLT) & 65535), r1 + gettr tr0, r12 + ldx.l r1, r12, r1 + ptabs r1, tr0 +#else + pt/l ffi_closure_helper_SYSV, tr0 +#endif + blink tr0, r18 + + shlli r2, 1, r1 + movi (((datalabel .L_table) >> 16) & 65535), r2 + shori ((datalabel .L_table) & 65535), r2 + ldx.w r2, r1, r1 + add r1, r2, r1 + pt/l .L_case_v, tr1 + ptabs r1, tr0 + blink tr0, r63 + + .align 2 +.L_table: + .word .L_case_v - datalabel .L_table /* FFI_TYPE_VOID */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_INT */ + .word .L_case_f - datalabel .L_table /* FFI_TYPE_FLOAT */ + .word .L_case_d - datalabel .L_table /* FFI_TYPE_DOUBLE */ + .word .L_case_d - datalabel .L_table /* FFI_TYPE_LONGDOUBLE */ + .word .L_case_uq - datalabel .L_table /* FFI_TYPE_UINT8 */ + .word .L_case_q - datalabel .L_table /* FFI_TYPE_SINT8 */ + .word .L_case_uh - datalabel .L_table /* FFI_TYPE_UINT16 */ + .word .L_case_h - datalabel .L_table /* FFI_TYPE_SINT16 */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_UINT32 */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_SINT32 */ + .word .L_case_ll - datalabel .L_table /* FFI_TYPE_UINT64 */ + .word .L_case_ll - datalabel .L_table /* FFI_TYPE_SINT64 */ + .word .L_case_v - datalabel .L_table /* FFI_TYPE_STRUCT */ + .word .L_case_i - datalabel .L_table /* FFI_TYPE_POINTER */ + + .align 2 +.L_case_d: + fld.d r14, 16, dr0 + blink tr1, r63 +.L_case_f: + fld.s r14, 16, fr0 + blink tr1, r63 +.L_case_ll: + ld.q r14, 16, r2 + blink tr1, r63 +.L_case_i: + ld.l r14, 16, r2 + blink tr1, r63 +.L_case_q: + ld.b r14, 16, r2 + blink tr1, r63 +.L_case_uq: + ld.ub r14, 16, r2 + blink tr1, r63 +.L_case_h: + ld.w r14, 16, r2 + blink tr1, r63 +.L_case_uh: + ld.uw r14, 16, r2 + blink tr1, r63 +.L_case_v: + add.l r14, r63, r15 + ld.l r15, 4, r12 + ld.l r15, 8, r14 + ld.l r15, 12, r18 + addi.l r15, 136, r15 + ptabs r18, tr0 + blink tr0, r63 + +.LFE2: +.ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif + + .section ".eh_frame","aw",@progbits +__FRAME_BEGIN__: + .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ +.LSCIE1: + .4byte 0x0 /* CIE Identifier Tag */ + .byte 0x1 /* CIE Version */ +#ifdef PIC + .ascii "zR\0" /* CIE Augmentation */ +#else + .byte 0x0 /* CIE Augmentation */ +#endif + .uleb128 0x1 /* CIE Code Alignment Factor */ + .sleb128 -4 /* CIE Data Alignment Factor */ + .byte 0x12 /* CIE RA Column */ +#ifdef PIC + .uleb128 0x1 /* Augmentation size */ + .byte 0x10 /* FDE Encoding (pcrel) */ +#endif + .byte 0xc /* DW_CFA_def_cfa */ + .uleb128 0xf + .uleb128 0x0 + .align 2 +.LECIE1: +.LSFDE1: + .4byte datalabel .LEFDE1-datalabel .LASFDE1 /* FDE Length */ +.LASFDE1: + .4byte datalabel .LASFDE1-datalabel __FRAME_BEGIN__ +#ifdef PIC + .4byte .LFB1-. /* FDE initial location */ +#else + .4byte .LFB1 /* FDE initial location */ +#endif + .4byte datalabel .LFE1-datalabel .LFB1 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI0-datalabel .LFB1 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .uleb128 0x30 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI1-datalabel .LCFI0 + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .uleb128 0xc + .byte 0x92 /* DW_CFA_offset, column 0x12 */ + .uleb128 0xb + .byte 0x9c /* DW_CFA_offset, column 0x1c */ + .uleb128 0xa + .byte 0x9d /* DW_CFA_offset, column 0x1d */ + .uleb128 0x8 + .byte 0x9e /* DW_CFA_offset, column 0x1e */ + .uleb128 0x6 + .byte 0x9f /* DW_CFA_offset, column 0x1f */ + .uleb128 0x4 + .byte 0xa0 /* DW_CFA_offset, column 0x20 */ + .uleb128 0x2 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI2-datalabel .LCFI1 + .byte 0xd /* DW_CFA_def_cfa_register */ + .uleb128 0xe + .align 2 +.LEFDE1: + +.LSFDE3: + .4byte datalabel .LEFDE3-datalabel .LASFDE3 /* FDE Length */ +.LASFDE3: + .4byte datalabel .LASFDE3-datalabel __FRAME_BEGIN__ +#ifdef PIC + .4byte .LFB2-. /* FDE initial location */ +#else + .4byte .LFB2 /* FDE initial location */ +#endif + .4byte datalabel .LFE2-datalabel .LFB2 /* FDE address range */ +#ifdef PIC + .uleb128 0x0 /* Augmentation size */ +#endif + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI3-datalabel .LFB2 + .byte 0xe /* DW_CFA_def_cfa_offset */ + .uleb128 0x88 + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI4-datalabel .LCFI3 + .byte 0x8c /* DW_CFA_offset, column 0xc */ + .uleb128 0x21 + .byte 0x8e /* DW_CFA_offset, column 0xe */ + .uleb128 0x20 + .byte 0x92 /* DW_CFA_offset, column 0x12 */ + .uleb128 0x1f + .byte 0x4 /* DW_CFA_advance_loc4 */ + .4byte datalabel .LCFI5-datalabel .LCFI4 + .byte 0xd /* DW_CFA_def_cfa_register */ + .uleb128 0xe + .align 2 +.LEFDE3: diff --git a/deps/libffi/src/sparc/ffi.c b/deps/libffi/src/sparc/ffi.c new file mode 100644 index 00000000000000..cf819ee673889d --- /dev/null +++ b/deps/libffi/src/sparc/ffi.c @@ -0,0 +1,484 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011, 2013 Anthony Green + Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +#ifndef SPARC64 + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +/* Perform machine dependent cif processing */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + int rtt = rtype->type; + size_t bytes; + int i, n, flags; + + /* Set the return type flag */ + switch (rtt) + { + case FFI_TYPE_VOID: + flags = SPARC_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_1; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_STRUCT: + flags = (rtype->size & 0xfff) << SPARC_SIZEMASK_SHIFT; + flags |= SPARC_RET_STRUCT; + break; + case FFI_TYPE_SINT8: + flags = SPARC_RET_SINT8; + break; + case FFI_TYPE_UINT8: + flags = SPARC_RET_UINT8; + break; + case FFI_TYPE_SINT16: + flags = SPARC_RET_SINT16; + break; + case FFI_TYPE_UINT16: + flags = SPARC_RET_UINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + flags = SPARC_RET_UINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = SPARC_RET_INT64; + break; + case FFI_TYPE_COMPLEX: + rtt = rtype->elements[0]->type; + switch (rtt) + { + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_4; + break; + case FFI_TYPE_LONGDOUBLE: + flags = SPARC_RET_F_8; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = SPARC_RET_INT128; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + flags = SPARC_RET_INT64; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + flags = SP_V8_RET_CPLX16; + break; + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + flags = SP_V8_RET_CPLX8; + break; + default: + abort(); + } + break; + default: + abort(); + } + cif->flags = flags; + + bytes = 0; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = cif->arg_types[i]; + size_t z = ty->size; + int tt = ty->type; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Passed by reference. */ + z = 4; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + /* FALLTHRU */ + + default: + z = FFI_ALIGN(z, 4); + } + bytes += z; + } + + /* Sparc call frames require that space is allocated for 6 args, + even if they aren't used. Make that space if necessary. */ + if (bytes < 6 * 4) + bytes = 6 * 4; + + /* The ABI always requires space for the struct return pointer. */ + bytes += 4; + + /* The stack must be 2 word aligned, so round bytes up appropriately. */ + bytes = FFI_ALIGN(bytes, 2 * 4); + + /* Include the call frame to prep_args. */ + bytes += 4*16 + 4*8; + cif->bytes = bytes; + + return FFI_OK; +} + +extern void ffi_call_v8(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, size_t bytes, void *closure) FFI_HIDDEN; + +int FFI_HIDDEN +ffi_prep_args_v8(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue) +{ + ffi_type **p_arg; + int flags = cif->flags; + int i, nargs; + + if (rvalue == NULL) + { + if ((flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + { + /* Since we pass the pointer to the callee, we need a value. + We allowed for this space in ffi_call, before ffi_call_v8 + alloca'd the space. */ + rvalue = (char *)argp + cif->bytes; + } + else + { + /* Otherwise, we can ignore the return value. */ + flags = SPARC_RET_VOID; + } + } + + /* This could only really be done when we are returning a structure. + However, the space is reserved so we can do it unconditionally. */ + *argp++ = (unsigned long)rvalue; + +#ifdef USING_PURIFY + /* Purify will probably complain in our assembly routine, + unless we zero out this memory. */ + memset(argp, 0, 6*4); +#endif + + p_arg = cif->arg_types; + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = p_arg[i]; + void *a = avalue[i]; + int tt = ty->type; + size_t z; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + *argp++ = (unsigned long)a; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + memcpy(argp, a, 8); + argp += 2; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *argp++ = *(unsigned *)a; + break; + + case FFI_TYPE_UINT8: + *argp++ = *(UINT8 *)a; + break; + case FFI_TYPE_SINT8: + *argp++ = *(SINT8 *)a; + break; + case FFI_TYPE_UINT16: + *argp++ = *(UINT16 *)a; + break; + case FFI_TYPE_SINT16: + *argp++ = *(SINT16 *)a; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + z = ty->size; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + if (z < 4) + { + memcpy((char *)argp + 4 - z, a, z); + argp++; + } + else + { + memcpy(argp, a, z); + argp += z / 4; + } + break; + + default: + abort(); + } + } + + return flags; +} + +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t bytes = cif->bytes; + size_t i, nargs = cif->nargs; + ffi_type **arg_types = cif->arg_types; + + FFI_ASSERT (cif->abi == FFI_V8); + + /* If we've not got a return value, we need to create one if we've + got to pass the return value to the callee. Otherwise ignore it. */ + if (rvalue == NULL + && (cif->flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + bytes += FFI_ALIGN (cif->rtype->size, 8); + + /* If we have any structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + ffi_call_v8(cif, fn, rvalue, avalue, -bytes, closure); +} + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +#ifdef __GNUC__ +static inline void +ffi_flush_icache (void *p) +{ + /* SPARC v8 requires 5 instructions for flush to be visible */ + asm volatile ("iflush %0; iflush %0+8; nop; nop; nop; nop; nop" + : : "r" (p) : "memory"); +} +#else +extern void ffi_flush_icache (void *) FFI_HIDDEN; +#endif + +extern void ffi_closure_v8(void) FFI_HIDDEN; +extern void ffi_go_closure_v8(void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long ctx = (unsigned long) closure; + unsigned long fn = (unsigned long) ffi_closure_v8; + + if (cif->abi != FFI_V8) + return FFI_BAD_ABI; + + tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ + tramp[1] = 0x05000000 | ctx >> 10; /* sethi %hi(ctx), %g2 */ + tramp[2] = 0x81c06000 | (fn & 0x3ff); /* jmp %g1+%lo(fn) */ + tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or %g2, %lo(ctx) */ + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + ffi_flush_icache (closure); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_V8) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_v8; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_sparc_inner_v8(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *argp) +{ + ffi_type **arg_types; + void **avalue; + int i, nargs, flags; + + arg_types = cif->arg_types; + nargs = cif->nargs; + flags = cif->flags; + avalue = alloca(nargs * sizeof(void *)); + + /* Copy the caller's structure return address so that the closure + returns the data directly to the caller. Also install it so we + can return the address in %o0. */ + if ((flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) + { + void *new_rvalue = (void *)*argp; + *(void **)rvalue = new_rvalue; + rvalue = new_rvalue; + } + + /* Always skip the structure return address. */ + argp++; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0; i < nargs; i++) + { + ffi_type *ty = arg_types[i]; + int tt = ty->type; + void *a = argp; + size_t z; + + switch (tt) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + by_reference: + /* Straight copy of invisible reference. */ + a = (void *)*argp; + break; + + case FFI_TYPE_DOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + if ((unsigned long)a & 7) + { + /* Align on a 8-byte boundary. */ + UINT64 *tmp = alloca(8); + *tmp = ((UINT64)argp[0] << 32) | argp[1]; + a = tmp; + } + argp++; + break; + + case FFI_TYPE_INT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + a += 2; + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + a += 3; + break; + + case FFI_TYPE_COMPLEX: + tt = ty->elements[0]->type; + z = ty->size; + if (tt == FFI_TYPE_FLOAT || z > 8) + goto by_reference; + if (z < 4) + a += 4 - z; + else if (z > 4) + argp++; + break; + + default: + abort(); + } + argp++; + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_sparc how to perform return type promotions. */ + return flags; +} +#endif /* !SPARC64 */ diff --git a/deps/libffi/src/sparc/ffi64.c b/deps/libffi/src/sparc/ffi64.c new file mode 100644 index 00000000000000..7a9dc3283b5717 --- /dev/null +++ b/deps/libffi/src/sparc/ffi64.c @@ -0,0 +1,630 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2011, 2013 Anthony Green + Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 128-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +#ifdef SPARC64 + +/* Flatten the contents of a structure to the parts that are passed in + floating point registers. The return is a bit mask wherein bit N + set means bytes [4*n, 4*n+3] are passed in %fN. + + We encode both the (running) size (maximum 32) and mask (maxumum 255) + into one integer. The size is placed in the low byte, so that align + and addition work correctly. The mask is placed in the second byte. */ + +static int +ffi_struct_float_mask (ffi_type *outer_type, int size_mask) +{ + ffi_type **elts; + ffi_type *t; + + if (outer_type->type == FFI_TYPE_COMPLEX) + { + int m = 0, tt = outer_type->elements[0]->type; + size_t z = outer_type->size; + + if (tt == FFI_TYPE_FLOAT + || tt == FFI_TYPE_DOUBLE + || tt == FFI_TYPE_LONGDOUBLE) + m = (1 << (z / 4)) - 1; + return (m << 8) | z; + } + FFI_ASSERT (outer_type->type == FFI_TYPE_STRUCT); + + for (elts = outer_type->elements; (t = *elts) != NULL; elts++) + { + size_t z = t->size; + int o, m, tt; + + size_mask = FFI_ALIGN(size_mask, t->alignment); + switch (t->type) + { + case FFI_TYPE_STRUCT: + size_mask = ffi_struct_float_mask (t, size_mask); + continue; + case FFI_TYPE_COMPLEX: + tt = t->elements[0]->type; + if (tt != FFI_TYPE_FLOAT + && tt != FFI_TYPE_DOUBLE + && tt != FFI_TYPE_LONGDOUBLE) + break; + /* FALLTHRU */ + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + m = (1 << (z / 4)) - 1; /* compute mask for type */ + o = (size_mask >> 2) & 0x3f; /* extract word offset */ + size_mask |= m << (o + 8); /* insert mask into place */ + break; + } + size_mask += z; + } + + size_mask = FFI_ALIGN(size_mask, outer_type->alignment); + FFI_ASSERT ((size_mask & 0xff) == outer_type->size); + + return size_mask; +} + +/* Merge floating point data into integer data. If the structure is + entirely floating point, simply return a pointer to the fp data. */ + +static void * +ffi_struct_float_merge (int size_mask, void *vi, void *vf) +{ + int size = size_mask & 0xff; + int mask = size_mask >> 8; + int n = size >> 2; + + if (mask == 0) + return vi; + else if (mask == (1 << n) - 1) + return vf; + else + { + unsigned int *wi = vi, *wf = vf; + int i; + + for (i = 0; i < n; ++i) + if ((mask >> i) & 1) + wi[i] = wf[i]; + + return vi; + } +} + +/* Similar, but place the data into VD in the end. */ + +void FFI_HIDDEN +ffi_struct_float_copy (int size_mask, void *vd, void *vi, void *vf) +{ + int size = size_mask & 0xff; + int mask = size_mask >> 8; + int n = size >> 2; + + if (mask == 0) + ; + else if (mask == (1 << n) - 1) + vi = vf; + else + { + unsigned int *wd = vd, *wi = vi, *wf = vf; + int i; + + for (i = 0; i < n; ++i) + wd[i] = ((mask >> i) & 1 ? wf : wi)[i]; + return; + } + memcpy (vd, vi, size); +} + +/* Perform machine dependent cif processing */ + +static ffi_status +ffi_prep_cif_machdep_core(ffi_cif *cif) +{ + ffi_type *rtype = cif->rtype; + int rtt = rtype->type; + size_t bytes = 0; + int i, n, flags; + + /* Set the return type flag */ + switch (rtt) + { + case FFI_TYPE_VOID: + flags = SPARC_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = SPARC_RET_F_1; + break; + case FFI_TYPE_DOUBLE: + flags = SPARC_RET_F_2; + break; + case FFI_TYPE_LONGDOUBLE: + flags = SPARC_RET_F_4; + break; + + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + if (rtype->size > 32) + { + flags = SPARC_RET_VOID | SPARC_FLAG_RET_IN_MEM; + bytes = 8; + } + else + { + int size_mask = ffi_struct_float_mask (rtype, 0); + int word_size = (size_mask >> 2) & 0x3f; + int all_mask = (1 << word_size) - 1; + int fp_mask = size_mask >> 8; + + flags = (size_mask << SPARC_SIZEMASK_SHIFT) | SPARC_RET_STRUCT; + + /* For special cases of all-int or all-fp, we can return + the value directly without popping through a struct copy. */ + if (fp_mask == 0) + { + if (rtype->alignment >= 8) + { + if (rtype->size == 8) + flags = SPARC_RET_INT64; + else if (rtype->size == 16) + flags = SPARC_RET_INT128; + } + } + else if (fp_mask == all_mask) + switch (word_size) + { + case 1: flags = SPARC_RET_F_1; break; + case 2: flags = SPARC_RET_F_2; break; + case 3: flags = SP_V9_RET_F_3; break; + case 4: flags = SPARC_RET_F_4; break; + /* 5 word structures skipped; handled via RET_STRUCT. */ + case 6: flags = SPARC_RET_F_6; break; + /* 7 word structures skipped; handled via RET_STRUCT. */ + case 8: flags = SPARC_RET_F_8; break; + } + } + break; + + case FFI_TYPE_SINT8: + flags = SPARC_RET_SINT8; + break; + case FFI_TYPE_UINT8: + flags = SPARC_RET_UINT8; + break; + case FFI_TYPE_SINT16: + flags = SPARC_RET_SINT16; + break; + case FFI_TYPE_UINT16: + flags = SPARC_RET_UINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = SP_V9_RET_SINT32; + break; + case FFI_TYPE_UINT32: + flags = SPARC_RET_UINT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + flags = SPARC_RET_INT64; + break; + + default: + abort(); + } + + bytes = 0; + for (i = 0, n = cif->nargs; i < n; ++i) + { + ffi_type *ty = cif->arg_types[i]; + size_t z = ty->size; + size_t a = ty->alignment; + + switch (ty->type) + { + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + /* Large structs passed by reference. */ + if (z > 16) + { + a = z = 8; + break; + } + /* Small structs may be passed in integer or fp regs or both. */ + if (bytes >= 16*8) + break; + if ((ffi_struct_float_mask (ty, 0) & 0xff00) == 0) + break; + /* FALLTHRU */ + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + flags |= SPARC_FLAG_FP_ARGS; + break; + } + bytes = FFI_ALIGN(bytes, a); + bytes += FFI_ALIGN(z, 8); + } + + /* Sparc call frames require that space is allocated for 6 args, + even if they aren't used. Make that space if necessary. */ + if (bytes < 6 * 8) + bytes = 6 * 8; + + /* The stack must be 2 word aligned, so round bytes up appropriately. */ + bytes = FFI_ALIGN(bytes, 16); + + /* Include the call frame to prep_args. */ + bytes += 8*16 + 8*8; + + cif->bytes = bytes; + cif->flags = flags; + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + cif->nfixedargs = cif->nargs; + return ffi_prep_cif_machdep_core(cif); +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned nfixedargs, unsigned ntotalargs) +{ + cif->nfixedargs = nfixedargs; + return ffi_prep_cif_machdep_core(cif); +} + +extern void ffi_call_v9(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, size_t bytes, void *closure) FFI_HIDDEN; + +/* ffi_prep_args is called by the assembly routine once stack space + has been allocated for the function's arguments */ + +int FFI_HIDDEN +ffi_prep_args_v9(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue) +{ + ffi_type **p_arg; + int flags = cif->flags; + int i, nargs; + + if (rvalue == NULL) + { + if (flags & SPARC_FLAG_RET_IN_MEM) + { + /* Since we pass the pointer to the callee, we need a value. + We allowed for this space in ffi_call, before ffi_call_v8 + alloca'd the space. */ + rvalue = (char *)argp + cif->bytes; + } + else + { + /* Otherwise, we can ignore the return value. */ + flags = SPARC_RET_VOID; + } + } + +#ifdef USING_PURIFY + /* Purify will probably complain in our assembly routine, + unless we zero out this memory. */ + memset(argp, 0, 6*8); +#endif + + if (flags & SPARC_FLAG_RET_IN_MEM) + *argp++ = (unsigned long)rvalue; + + p_arg = cif->arg_types; + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = p_arg[i]; + void *a = avalue[i]; + size_t z; + + switch (ty->type) + { + case FFI_TYPE_SINT8: + *argp++ = *(SINT8 *)a; + break; + case FFI_TYPE_UINT8: + *argp++ = *(UINT8 *)a; + break; + case FFI_TYPE_SINT16: + *argp++ = *(SINT16 *)a; + break; + case FFI_TYPE_UINT16: + *argp++ = *(UINT16 *)a; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + *argp++ = *(SINT32 *)a; + break; + case FFI_TYPE_UINT32: + *argp++ = *(UINT32 *)a; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_POINTER: + *argp++ = *(UINT64 *)a; + break; + case FFI_TYPE_FLOAT: + flags |= SPARC_FLAG_FP_ARGS; + *argp++ = *(UINT32 *)a; + break; + case FFI_TYPE_DOUBLE: + flags |= SPARC_FLAG_FP_ARGS; + *argp++ = *(UINT64 *)a; + break; + + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + z = ty->size; + if (z > 16) + { + /* For structures larger than 16 bytes we pass reference. */ + *argp++ = (unsigned long)a; + break; + } + if (((unsigned long)argp & 15) && ty->alignment > 8) + argp++; + memcpy(argp, a, z); + argp += FFI_ALIGN(z, 8) / 8; + break; + + default: + abort(); + } + } + + return flags; +} + +static void +ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t bytes = cif->bytes; + size_t i, nargs = cif->nargs; + ffi_type **arg_types = cif->arg_types; + + FFI_ASSERT (cif->abi == FFI_V9); + + if (rvalue == NULL && (cif->flags & SPARC_FLAG_RET_IN_MEM)) + bytes += FFI_ALIGN (cif->rtype->size, 16); + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT && size > 4) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + ffi_call_v9(cif, fn, rvalue, avalue, -bytes, closure); +} + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int(cif, fn, rvalue, avalue, NULL); +} + +void +ffi_call_go(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int(cif, fn, rvalue, avalue, closure); +} + +#ifdef __GNUC__ +static inline void +ffi_flush_icache (void *p) +{ + asm volatile ("flush %0; flush %0+8" : : "r" (p) : "memory"); +} +#else +extern void ffi_flush_icache (void *) FFI_HIDDEN; +#endif + +extern void ffi_closure_v9(void) FFI_HIDDEN; +extern void ffi_go_closure_v9(void) FFI_HIDDEN; + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + unsigned int *tramp = (unsigned int *) &closure->tramp[0]; + unsigned long fn; + + if (cif->abi != FFI_V9) + return FFI_BAD_ABI; + + /* Trampoline address is equal to the closure address. We take advantage + of that to reduce the trampoline size by 8 bytes. */ + fn = (unsigned long) ffi_closure_v9; + tramp[0] = 0x83414000; /* rd %pc, %g1 */ + tramp[1] = 0xca586010; /* ldx [%g1+16], %g5 */ + tramp[2] = 0x81c14000; /* jmp %g5 */ + tramp[3] = 0x01000000; /* nop */ + *((unsigned long *) &tramp[4]) = fn; + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + ffi_flush_icache (closure); + + return FFI_OK; +} + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + if (cif->abi != FFI_V9) + return FFI_BAD_ABI; + + closure->tramp = ffi_go_closure_v9; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_sparc_inner_v9(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, void *rvalue, + unsigned long *gpr, unsigned long *fpr) +{ + ffi_type **arg_types; + void **avalue; + int i, argn, argx, nargs, flags, nfixedargs; + + arg_types = cif->arg_types; + nargs = cif->nargs; + flags = cif->flags; + nfixedargs = cif->nfixedargs; + + avalue = alloca(nargs * sizeof(void *)); + + /* Copy the caller's structure return address so that the closure + returns the data directly to the caller. */ + if (flags & SPARC_FLAG_RET_IN_MEM) + { + rvalue = (void *) gpr[0]; + /* Skip the structure return address. */ + argn = 1; + } + else + argn = 0; + + /* Grab the addresses of the arguments from the stack frame. */ + for (i = 0; i < nargs; i++, argn = argx) + { + int named = i < nfixedargs; + ffi_type *ty = arg_types[i]; + void *a = &gpr[argn]; + size_t z; + + argx = argn + 1; + switch (ty->type) + { + case FFI_TYPE_COMPLEX: + case FFI_TYPE_STRUCT: + z = ty->size; + if (z > 16) + a = *(void **)a; + else + { + argx = argn + FFI_ALIGN (z, 8) / 8; + if (named && argn < 16) + { + int size_mask = ffi_struct_float_mask (ty, 0); + int argn_mask = (0xffff00 >> argn) & 0xff00; + + /* Eliminate fp registers off the end. */ + size_mask = (size_mask & 0xff) | (size_mask & argn_mask); + a = ffi_struct_float_merge (size_mask, gpr+argn, fpr+argn); + } + } + break; + + case FFI_TYPE_LONGDOUBLE: + argn = FFI_ALIGN (argn, 2); + a = (named && argn < 16 ? fpr : gpr) + argn; + argx = argn + 2; + break; + case FFI_TYPE_DOUBLE: + if (named && argn < 16) + a = fpr + argn; + break; + case FFI_TYPE_FLOAT: + if (named && argn < 16) + a = fpr + argn; + a += 4; + break; + + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + a += 4; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + a += 6; + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + a += 7; + break; + + default: + abort(); + } + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell ffi_closure_sparc how to perform return type promotions. */ + return flags; +} +#endif /* SPARC64 */ diff --git a/deps/libffi/src/sparc/ffitarget.h b/deps/libffi/src/sparc/ffitarget.h new file mode 100644 index 00000000000000..2f4cd9a7a93369 --- /dev/null +++ b/deps/libffi/src/sparc/ffitarget.h @@ -0,0 +1,81 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Anthony Green + Copyright (c) 1996-2003 Red Hat, Inc. + Target configuration macros for SPARC. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +#if defined(__arch64__) || defined(__sparcv9) +#ifndef SPARC64 +#define SPARC64 +#endif +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, +#ifdef SPARC64 + FFI_V9, + FFI_DEFAULT_ABI = FFI_V9, +#else + FFI_V8, + FFI_DEFAULT_ABI = FFI_V8, +#endif + FFI_LAST_ABI +} ffi_abi; +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION 1 +#define FFI_TARGET_HAS_COMPLEX_TYPE 1 + +#ifdef SPARC64 +# define FFI_TARGET_SPECIFIC_VARIADIC 1 +# define FFI_EXTRA_CIF_FIELDS unsigned int nfixedargs +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 + +#ifdef SPARC64 +#define FFI_TRAMPOLINE_SIZE 24 +#else +#define FFI_TRAMPOLINE_SIZE 16 +#endif + +#endif + diff --git a/deps/libffi/src/sparc/internal.h b/deps/libffi/src/sparc/internal.h new file mode 100644 index 00000000000000..0a66472bade87c --- /dev/null +++ b/deps/libffi/src/sparc/internal.h @@ -0,0 +1,26 @@ +#define SPARC_RET_VOID 0 +#define SPARC_RET_STRUCT 1 +#define SPARC_RET_UINT8 2 +#define SPARC_RET_SINT8 3 +#define SPARC_RET_UINT16 4 +#define SPARC_RET_SINT16 5 +#define SPARC_RET_UINT32 6 +#define SP_V9_RET_SINT32 7 /* v9 only */ +#define SP_V8_RET_CPLX16 7 /* v8 only */ +#define SPARC_RET_INT64 8 +#define SPARC_RET_INT128 9 + +/* Note that F_7 is missing, and is handled by SPARC_RET_STRUCT. */ +#define SPARC_RET_F_8 10 +#define SPARC_RET_F_6 11 +#define SPARC_RET_F_4 12 +#define SPARC_RET_F_2 13 +#define SP_V9_RET_F_3 14 /* v9 only */ +#define SP_V8_RET_CPLX8 14 /* v8 only */ +#define SPARC_RET_F_1 15 + +#define SPARC_FLAG_RET_MASK 15 +#define SPARC_FLAG_RET_IN_MEM 32 +#define SPARC_FLAG_FP_ARGS 64 + +#define SPARC_SIZEMASK_SHIFT 8 diff --git a/deps/libffi/src/sparc/v8.S b/deps/libffi/src/sparc/v8.S new file mode 100644 index 00000000000000..a2e4908fd417a7 --- /dev/null +++ b/deps/libffi/src/sparc/v8.S @@ -0,0 +1,443 @@ +/* ----------------------------------------------------------------------- + v8.S - Copyright (c) 2013 The Written Word, Inc. + Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc. + + SPARC Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#ifndef SPARC64 + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) + +#ifdef __USER_LABEL_PREFIX__ +# define C(Y) C1(__USER_LABEL_PREFIX__, Y) +#else +# define C(Y) Y +#endif +#define L(Y) C1(.L, Y) + + .text + +#ifndef __GNUC__ + .align 8 + .globl C(ffi_flush_icache) + .type C(ffi_flush_icache),#function + FFI_HIDDEN(C(ffi_flush_icache)) + +C(ffi_flush_icache): +1: iflush %o0 + iflush %o+8 + nop + nop + nop + nop + nop + retl + nop + .size C(ffi_flush_icache), . - C(ffi_flush_icache) +#endif + +#if defined(__sun__) && defined(__svr4__) +# define E(INDEX) .align 16 +#else +# define E(INDEX) .align 16; .org 2b + INDEX * 16 +#endif + + .align 8 + .globl C(ffi_call_v8) + .type C(ffi_call_v8),#function + FFI_HIDDEN(C(ffi_call_v8)) + +C(ffi_call_v8): +.LUW0: + ! Allocate a stack frame sized by ffi_call. + save %sp, %o4, %sp +.LUW1: + mov %i0, %o0 ! copy cif + add %sp, 64+32, %o1 ! load args area + mov %i2, %o2 ! copy rvalue + call C(ffi_prep_args_v8) + mov %i3, %o3 ! copy avalue + + add %sp, 32, %sp ! deallocate prep frame + and %o0, SPARC_FLAG_RET_MASK, %l0 ! save return type + srl %o0, SPARC_SIZEMASK_SHIFT, %l1 ! save return size + ld [%sp+64+4], %o0 ! load all argument registers + ld [%sp+64+8], %o1 + ld [%sp+64+12], %o2 + ld [%sp+64+16], %o3 + cmp %l0, SPARC_RET_STRUCT ! struct return needs an unimp 4 + ld [%sp+64+20], %o4 + be 8f + ld [%sp+64+24], %o5 + + ! Call foreign function + call %i1 + mov %i5, %g2 ! load static chain + +0: call 1f ! load pc in %o7 + sll %l0, 4, %l0 +1: add %o7, %l0, %o7 ! o7 = 0b + ret_type*16 + jmp %o7+(2f-0b) + nop + + ! Note that each entry is 4 insns, enforced by the E macro. + .align 16 +2: +E(SPARC_RET_VOID) + ret + restore +E(SPARC_RET_STRUCT) + unimp +E(SPARC_RET_UINT8) + and %o0, 0xff, %o0 + st %o0, [%i2] + ret + restore +E(SPARC_RET_SINT8) + sll %o0, 24, %o0 + b 7f + sra %o0, 24, %o0 +E(SPARC_RET_UINT16) + sll %o0, 16, %o0 + b 7f + srl %o0, 16, %o0 +E(SPARC_RET_SINT16) + sll %o0, 16, %o0 + b 7f + sra %o0, 16, %o0 +E(SPARC_RET_UINT32) +7: st %o0, [%i2] + ret + restore +E(SP_V8_RET_CPLX16) + sth %o0, [%i2+2] + b 9f + srl %o0, 16, %o0 +E(SPARC_RET_INT64) + st %o0, [%i2] + st %o1, [%i2+4] + ret + restore +E(SPARC_RET_INT128) + std %o0, [%i2] + std %o2, [%i2+8] + ret + restore +E(SPARC_RET_F_8) + st %f7, [%i2+7*4] + nop + st %f6, [%i2+6*4] + nop +E(SPARC_RET_F_6) + st %f5, [%i2+5*4] + nop + st %f4, [%i2+4*4] + nop +E(SPARC_RET_F_4) + st %f3, [%i2+3*4] + nop + st %f2, [%i2+2*4] + nop +E(SPARC_RET_F_2) + st %f1, [%i2+4] + st %f0, [%i2] + ret + restore +E(SP_V8_RET_CPLX8) + stb %o0, [%i2+1] + b 0f + srl %o0, 8, %o0 +E(SPARC_RET_F_1) + st %f0, [%i2] + ret + restore + + .align 8 +9: sth %o0, [%i2] + ret + restore + .align 8 +0: stb %o0, [%i2] + ret + restore + + ! Struct returning functions expect and skip the unimp here. + ! To make it worse, conforming callees examine the unimp and + ! make sure the low 12 bits of the unimp match the size of + ! the struct being returned. + .align 8 +8: call 1f ! load pc in %o7 + sll %l1, 2, %l0 ! size * 4 +1: sll %l1, 4, %l1 ! size * 16 + add %l0, %l1, %l0 ! size * 20 + add %o7, %l0, %o7 ! o7 = 8b + size*20 + jmp %o7+(2f-8b) + mov %i5, %g2 ! load static chain +2: + +/* The Sun assembler doesn't understand .rept 0x1000. */ +#define rept1 \ + call %i1; \ + nop; \ + unimp (. - 2b) / 20; \ + ret; \ + restore + +#define rept16 \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1; \ + rept1; rept1; rept1; rept1 + +#define rept256 \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16; \ + rept16; rept16; rept16; rept16 + + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + rept256; rept256; rept256; rept256 + +.LUW2: + .size C(ffi_call_v8),. - C(ffi_call_v8) + + +/* 16*4 register window + 1*4 struct return + 6*4 args backing store + + 8*4 return storage + 1*4 alignment. */ +#define STACKFRAME (16*4 + 4 + 6*4 + 8*4 + 4) + +/* ffi_closure_v8(...) + + Receives the closure argument in %g2. */ + +#ifdef HAVE_AS_REGISTER_PSEUDO_OP + .register %g2, #scratch +#endif + + .align 8 + .globl C(ffi_go_closure_v8) + .type C(ffi_go_closure_v8),#function + FFI_HIDDEN(C(ffi_go_closure_v8)) + +C(ffi_go_closure_v8): +.LUW3: + save %sp, -STACKFRAME, %sp +.LUW4: + ld [%g2+4], %o0 ! load cif + ld [%g2+8], %o1 ! load fun + b 0f + mov %g2, %o2 ! load user_data +.LUW5: + .size C(ffi_go_closure_v8), . - C(ffi_go_closure_v8) + + .align 8 + .globl C(ffi_closure_v8) + .type C(ffi_closure_v8),#function + FFI_HIDDEN(C(ffi_closure_v8)) + +C(ffi_closure_v8): +.LUW6: + save %sp, -STACKFRAME, %sp +.LUW7: + ld [%g2+FFI_TRAMPOLINE_SIZE], %o0 ! load cif + ld [%g2+FFI_TRAMPOLINE_SIZE+4], %o1 ! load fun + ld [%g2+FFI_TRAMPOLINE_SIZE+8], %o2 ! load user_data +0: + ! Store all of the potential argument registers in va_list format. + st %i0, [%fp+68+0] + st %i1, [%fp+68+4] + st %i2, [%fp+68+8] + st %i3, [%fp+68+12] + st %i4, [%fp+68+16] + st %i5, [%fp+68+20] + + ! Call ffi_closure_sparc_inner to do the bulk of the work. + add %fp, -8*4, %o3 + call ffi_closure_sparc_inner_v8 + add %fp, 64, %o4 + +0: call 1f + and %o0, SPARC_FLAG_RET_MASK, %o0 +1: sll %o0, 4, %o0 ! o0 = o0 * 16 + add %o7, %o0, %o7 ! o7 = 0b + o0*16 + jmp %o7+(2f-0b) + add %fp, -8*4, %i2 + + ! Note that each entry is 4 insns, enforced by the E macro. + .align 16 +2: +E(SPARC_RET_VOID) + ret + restore +E(SPARC_RET_STRUCT) + ld [%i2], %i0 + jmp %i7+12 + restore +E(SPARC_RET_UINT8) + ldub [%i2+3], %i0 + ret + restore +E(SPARC_RET_SINT8) + ldsb [%i2+3], %i0 + ret + restore +E(SPARC_RET_UINT16) + lduh [%i2+2], %i0 + ret + restore +E(SPARC_RET_SINT16) + ldsh [%i2+2], %i0 + ret + restore +E(SPARC_RET_UINT32) + ld [%i2], %i0 + ret + restore +E(SP_V8_RET_CPLX16) + ld [%i2], %i0 + ret + restore +E(SPARC_RET_INT64) + ldd [%i2], %i0 + ret + restore +E(SPARC_RET_INT128) + ldd [%i2], %i0 + ldd [%i2+8], %i2 + ret + restore +E(SPARC_RET_F_8) + ld [%i2+7*4], %f7 + nop + ld [%i2+6*4], %f6 + nop +E(SPARC_RET_F_6) + ld [%i2+5*4], %f5 + nop + ld [%i2+4*4], %f4 + nop +E(SPARC_RET_F_4) + ld [%i2+3*4], %f3 + nop + ld [%i2+2*4], %f2 + nop +E(SPARC_RET_F_2) + ldd [%i2], %f0 + ret + restore +E(SP_V8_RET_CPLX8) + lduh [%i2], %i0 + ret + restore +E(SPARC_RET_F_1) + ld [%i2], %f0 + ret + restore + +.LUW8: + .size C(ffi_closure_v8), . - C(ffi_closure_v8) + +#ifdef HAVE_RO_EH_FRAME + .section ".eh_frame",#alloc +#else + .section ".eh_frame",#alloc,#write +#endif + +#ifdef HAVE_AS_SPARC_UA_PCREL +# define FDE_ADDR(X) %r_disp32(X) +#else +# define FDE_ADDR(X) X +#endif + + .align 4 +.LCIE: + .long .LECIE - .LSCIE ! CIE Length +.LSCIE: + .long 0 ! CIE Identifier Tag + .byte 1 ! CIE Version + .ascii "zR\0" ! CIE Augmentation + .byte 4 ! CIE Code Alignment Factor + .byte 0x7c ! CIE Data Alignment Factor + .byte 15 ! CIE RA Column + .byte 1 ! Augmentation size +#ifdef HAVE_AS_SPARC_UA_PCREL + .byte 0x1b ! FDE Encoding (pcrel sdata4) +#else + .byte 0x50 ! FDE Encoding (aligned absolute) +#endif + .byte 0xc, 14, 0 ! DW_CFA_def_cfa, %o6, offset 0 + .align 4 +.LECIE: + + .long .LEFDE1 - .LSFDE1 ! FDE Length +.LSFDE1: + .long .LSFDE1 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW0) ! Initial location + .long .LUW2 - .LUW0 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE1: + + .long .LEFDE2 - .LSFDE2 ! FDE Length +.LSFDE2: + .long .LSFDE2 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW3) ! Initial location + .long .LUW5 - .LUW3 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE2: + + .long .LEFDE3 - .LSFDE3 ! FDE Length +.LSFDE3: + .long .LSFDE3 - .LCIE ! FDE CIE offset + .long FDE_ADDR(.LUW6) ! Initial location + .long .LUW8 - .LUW6 ! Address range + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 4 +.LEFDE3: + +#endif /* !SPARC64 */ +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/sparc/v9.S b/deps/libffi/src/sparc/v9.S new file mode 100644 index 00000000000000..55f8f4324cfeba --- /dev/null +++ b/deps/libffi/src/sparc/v9.S @@ -0,0 +1,440 @@ +/* ----------------------------------------------------------------------- + v9.S - Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc. + + SPARC 64-bit Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#ifdef SPARC64 + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) + +#ifdef __USER_LABEL_PREFIX__ +# define C(Y) C1(__USER_LABEL_PREFIX__, Y) +#else +# define C(Y) Y +#endif +#define L(Y) C1(.L, Y) + +#if defined(__sun__) && defined(__svr4__) +# define E(INDEX) .align 16 +#else +# define E(INDEX) .align 16; .org 2b + INDEX * 16 +#endif + +#define STACK_BIAS 2047 + + .text + .align 8 + .globl C(ffi_call_v9) + .type C(ffi_call_v9),#function + FFI_HIDDEN(C(ffi_call_v9)) + +C(ffi_call_v9): +.LUW0: + save %sp, %o4, %sp +.LUW1: + mov %i0, %o0 ! copy cif + add %sp, STACK_BIAS+128+48, %o1 ! load args area + mov %i2, %o2 ! copy rvalue + call C(ffi_prep_args_v9) + mov %i3, %o3 ! copy avalue + + andcc %o0, SPARC_FLAG_FP_ARGS, %g0 ! need fp regs? + add %sp, 48, %sp ! deallocate prep frame + be,pt %xcc, 1f + mov %o0, %l0 ! save flags + + ldd [%sp+STACK_BIAS+128], %f0 ! load all fp arg regs + ldd [%sp+STACK_BIAS+128+8], %f2 + ldd [%sp+STACK_BIAS+128+16], %f4 + ldd [%sp+STACK_BIAS+128+24], %f6 + ldd [%sp+STACK_BIAS+128+32], %f8 + ldd [%sp+STACK_BIAS+128+40], %f10 + ldd [%sp+STACK_BIAS+128+48], %f12 + ldd [%sp+STACK_BIAS+128+56], %f14 + ldd [%sp+STACK_BIAS+128+64], %f16 + ldd [%sp+STACK_BIAS+128+72], %f18 + ldd [%sp+STACK_BIAS+128+80], %f20 + ldd [%sp+STACK_BIAS+128+88], %f22 + ldd [%sp+STACK_BIAS+128+96], %f24 + ldd [%sp+STACK_BIAS+128+104], %f26 + ldd [%sp+STACK_BIAS+128+112], %f28 + ldd [%sp+STACK_BIAS+128+120], %f30 + +1: ldx [%sp+STACK_BIAS+128], %o0 ! load all int arg regs + ldx [%sp+STACK_BIAS+128+8], %o1 + ldx [%sp+STACK_BIAS+128+16], %o2 + ldx [%sp+STACK_BIAS+128+24], %o3 + ldx [%sp+STACK_BIAS+128+32], %o4 + ldx [%sp+STACK_BIAS+128+40], %o5 + call %i1 + mov %i5, %g5 ! load static chain + +0: call 1f ! load pc in %o7 + and %l0, SPARC_FLAG_RET_MASK, %l1 +1: sll %l1, 4, %l1 + add %o7, %l1, %o7 ! o7 = 0b + ret_type*16 + jmp %o7+(2f-0b) + nop + + .align 16 +2: +E(SPARC_RET_VOID) + return %i7+8 + nop +E(SPARC_RET_STRUCT) + add %sp, STACK_BIAS-64+128+48, %l2 + sub %sp, 64, %sp + b 8f + stx %o0, [%l2] +E(SPARC_RET_UINT8) + and %o0, 0xff, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_SINT8) + sll %o0, 24, %o0 + sra %o0, 24, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_UINT16) + sll %o0, 16, %o0 + srl %o0, 16, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_SINT16) + sll %o0, 16, %o0 + sra %o0, 16, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_UINT32) + srl %o0, 0, %i0 + return %i7+8 + stx %o0, [%o2] +E(SP_V9_RET_SINT32) + sra %o0, 0, %i0 + return %i7+8 + stx %o0, [%o2] +E(SPARC_RET_INT64) + stx %o0, [%i2] + return %i7+8 + nop +E(SPARC_RET_INT128) + stx %o0, [%i2] + stx %o1, [%i2+8] + return %i7+8 + nop +E(SPARC_RET_F_8) + st %f7, [%i2+7*4] + nop + st %f6, [%i2+6*4] + nop +E(SPARC_RET_F_6) + st %f5, [%i2+5*4] + nop + st %f4, [%i2+4*4] + nop +E(SPARC_RET_F_4) + std %f2, [%i2+2*4] + return %i7+8 + std %f0, [%o2] +E(SPARC_RET_F_2) + return %i7+8 + std %f0, [%o2] +E(SP_V9_RET_F_3) + st %f2, [%i2+2*4] + nop + st %f1, [%i2+1*4] + nop +E(SPARC_RET_F_1) + return %i7+8 + st %f0, [%o2] + + ! Finish the SPARC_RET_STRUCT sequence. + .align 8 +8: stx %o1, [%l2+8] + stx %o2, [%l2+16] + stx %o3, [%l2+24] + std %f0, [%l2+32] + std %f2, [%l2+40] + std %f4, [%l2+48] + std %f6, [%l2+56] + + ! Copy the structure into place. + srl %l0, SPARC_SIZEMASK_SHIFT, %o0 ! load size_mask + mov %i2, %o1 ! load dst + mov %l2, %o2 ! load src_gp + call C(ffi_struct_float_copy) + add %l2, 32, %o3 ! load src_fp + + return %i7+8 + nop + +.LUW2: + .size C(ffi_call_v9), . - C(ffi_call_v9) + + +#undef STACKFRAME +#define STACKFRAME 336 /* 16*8 register window + + 6*8 args backing store + + 20*8 locals */ +#define FP %fp+STACK_BIAS + +/* ffi_closure_v9(...) + + Receives the closure argument in %g1. */ + + .align 8 + .globl C(ffi_go_closure_v9) + .type C(ffi_go_closure_v9),#function + FFI_HIDDEN(C(ffi_go_closure_v9)) + +C(ffi_go_closure_v9): +.LUW3: + save %sp, -STACKFRAME, %sp +.LUW4: + ldx [%g5+8], %o0 + ldx [%g5+16], %o1 + b 0f + mov %g5, %o2 + +.LUW5: + .size C(ffi_go_closure_v9), . - C(ffi_go_closure_v9) + + .align 8 + .globl C(ffi_closure_v9) + .type C(ffi_closure_v9),#function + FFI_HIDDEN(C(ffi_closure_v9)) + +C(ffi_closure_v9): +.LUW6: + save %sp, -STACKFRAME, %sp +.LUW7: + ldx [%g1+FFI_TRAMPOLINE_SIZE], %o0 + ldx [%g1+FFI_TRAMPOLINE_SIZE+8], %o1 + ldx [%g1+FFI_TRAMPOLINE_SIZE+16], %o2 +0: + ! Store all of the potential argument registers in va_list format. + stx %i0, [FP+128+0] + stx %i1, [FP+128+8] + stx %i2, [FP+128+16] + stx %i3, [FP+128+24] + stx %i4, [FP+128+32] + stx %i5, [FP+128+40] + + ! Store possible floating point argument registers too. + std %f0, [FP-128] + std %f2, [FP-120] + std %f4, [FP-112] + std %f6, [FP-104] + std %f8, [FP-96] + std %f10, [FP-88] + std %f12, [FP-80] + std %f14, [FP-72] + std %f16, [FP-64] + std %f18, [FP-56] + std %f20, [FP-48] + std %f22, [FP-40] + std %f24, [FP-32] + std %f26, [FP-24] + std %f28, [FP-16] + std %f30, [FP-8] + + ! Call ffi_closure_sparc_inner to do the bulk of the work. + add %fp, STACK_BIAS-160, %o3 + add %fp, STACK_BIAS+128, %o4 + call C(ffi_closure_sparc_inner_v9) + add %fp, STACK_BIAS-128, %o5 + +0: call 1f ! load pc in %o7 + and %o0, SPARC_FLAG_RET_MASK, %o0 +1: sll %o0, 4, %o0 ! o2 = i2 * 16 + add %o7, %o0, %o7 ! o7 = 0b + i2*16 + jmp %o7+(2f-0b) + nop + + ! Note that we cannot load the data in the delay slot of + ! the return insn because the data is in the stack frame + ! that is deallocated by the return. + .align 16 +2: +E(SPARC_RET_VOID) + return %i7+8 + nop +E(SPARC_RET_STRUCT) + ldx [FP-160], %i0 + ldd [FP-160], %f0 + b 8f + ldx [FP-152], %i1 +E(SPARC_RET_UINT8) + ldub [FP-160+7], %i0 + return %i7+8 + nop +E(SPARC_RET_SINT8) + ldsb [FP-160+7], %i0 + return %i7+8 + nop +E(SPARC_RET_UINT16) + lduh [FP-160+6], %i0 + return %i7+8 + nop +E(SPARC_RET_SINT16) + ldsh [FP-160+6], %i0 + return %i7+8 + nop +E(SPARC_RET_UINT32) + lduw [FP-160+4], %i0 + return %i7+8 + nop +E(SP_V9_RET_SINT32) + ldsw [FP-160+4], %i0 + return %i7+8 + nop +E(SPARC_RET_INT64) + ldx [FP-160], %i0 + return %i7+8 + nop +E(SPARC_RET_INT128) + ldx [FP-160], %i0 + ldx [FP-160+8], %i1 + return %i7+8 + nop +E(SPARC_RET_F_8) + ld [FP-160+7*4], %f7 + nop + ld [FP-160+6*4], %f6 + nop +E(SPARC_RET_F_6) + ld [FP-160+5*4], %f5 + nop + ld [FP-160+4*4], %f4 + nop +E(SPARC_RET_F_4) + ldd [FP-160], %f0 + ldd [FP-160+8], %f2 + return %i7+8 + nop +E(SPARC_RET_F_2) + ldd [FP-160], %f0 + return %i7+8 + nop +E(SP_V9_RET_F_3) + ld [FP-160+2*4], %f2 + nop + ld [FP-160+1*4], %f1 + nop +E(SPARC_RET_F_1) + ld [FP-160], %f0 + return %i7+8 + nop + + ! Finish the SPARC_RET_STRUCT sequence. + .align 8 +8: ldd [FP-152], %f2 + ldx [FP-144], %i2 + ldd [FP-144], %f4 + ldx [FP-136], %i3 + ldd [FP-136], %f6 + return %i7+8 + nop + +.LUW8: + .size C(ffi_closure_v9), . - C(ffi_closure_v9) + +#ifdef HAVE_RO_EH_FRAME + .section ".eh_frame",#alloc +#else + .section ".eh_frame",#alloc,#write +#endif + +#ifdef HAVE_AS_SPARC_UA_PCREL +# define FDE_RANGE(B, E) .long %r_disp32(B), E - B +#else +# define FDE_RANGE(B, E) .align 8; .xword B, E - B +#endif + + .align 8 +.LCIE: + .long .LECIE - .LSCIE ! CIE Length +.LSCIE: + .long 0 ! CIE Identifier Tag + .byte 1 ! CIE Version + .ascii "zR\0" ! CIE Augmentation + .byte 4 ! CIE Code Alignment Factor + .byte 0x78 ! CIE Data Alignment Factor + .byte 15 ! CIE RA Column + .byte 1 ! Augmentation size +#ifdef HAVE_AS_SPARC_UA_PCREL + .byte 0x1b ! FDE Encoding (pcrel sdata4) +#else + .byte 0x50 ! FDE Encoding (aligned absolute) +#endif + .byte 0xc, 14, 0xff, 0xf ! DW_CFA_def_cfa, %o6, offset 0x7ff + .align 8 +.LECIE: + + .long .LEFDE1 - .LSFDE1 ! FDE Length +.LSFDE1: + .long .LSFDE1 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW0, .LUW2) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE1: + + .long .LEFDE2 - .LSFDE2 ! FDE Length +.LSFDE2: + .long .LSFDE2 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW3, .LUW5) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE2: + + .long .LEFDE3 - .LSFDE3 ! FDE Length +.LSFDE3: + .long .LSFDE3 - .LCIE ! FDE CIE offset + FDE_RANGE(.LUW6, .LUW8) + .byte 0 ! Augmentation size + .byte 0x40+1 ! DW_CFA_advance_loc 4 + .byte 0xd, 30 ! DW_CFA_def_cfa_register, %i6 + .byte 0x2d ! DW_CFA_GNU_window_save + .byte 0x9, 15, 31 ! DW_CFA_register, %o7, %i7 + .align 8 +.LEFDE3: + +#endif /* SPARC64 */ +#ifdef __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/tile/ffi.c b/deps/libffi/src/tile/ffi.c new file mode 100644 index 00000000000000..3a94469c7fafd9 --- /dev/null +++ b/deps/libffi/src/tile/ffi.c @@ -0,0 +1,355 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2012 Tilera Corp. + + TILE Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +/* The first 10 registers are used to pass arguments and return values. */ +#define NUM_ARG_REGS 10 + +/* Performs a raw function call with the given NUM_ARG_REGS register arguments + and the specified additional stack arguments (if any). */ +extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS], + const ffi_sarg *stack_args, + size_t stack_args_bytes, + void (*fnaddr)(void)) + FFI_HIDDEN; + +/* This handles the raw call from the closure stub, cleaning up the + parameters and delegating to ffi_closure_tile_inner. */ +extern void ffi_closure_tile(void) FFI_HIDDEN; + + +ffi_status +ffi_prep_cif_machdep(ffi_cif *cif) +{ + /* We always allocate room for all registers. Even if we don't + use them as parameters, they get returned in the same array + as struct return values so we need to make room. */ + if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG) + cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG; + + if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG) + cif->flags = FFI_TYPE_STRUCT; + else + cif->flags = FFI_TYPE_INT; + + /* Nothing to do. */ + return FFI_OK; +} + + +static long +assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type, + int write_to_reg) +{ + switch (type->type) + { + case FFI_TYPE_SINT8: + *out = *(SINT8 *)in; + return 1; + + case FFI_TYPE_UINT8: + *out = *(UINT8 *)in; + return 1; + + case FFI_TYPE_SINT16: + *out = *(SINT16 *)in; + return 1; + + case FFI_TYPE_UINT16: + *out = *(UINT16 *)in; + return 1; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: +#ifndef __LP64__ + case FFI_TYPE_POINTER: +#endif + /* Note that even unsigned 32-bit quantities are sign extended + on tilegx when stored in a register. */ + *out = *(SINT32 *)in; + return 1; + + case FFI_TYPE_FLOAT: +#ifdef __tilegx__ + if (write_to_reg) + { + /* Properly sign extend the value. */ + union { float f; SINT32 s32; } val; + val.f = *(float *)in; + *out = val.s32; + } + else +#endif + { + *(float *)out = *(float *)in; + } + return 1; + + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + case FFI_TYPE_DOUBLE: +#ifdef __LP64__ + case FFI_TYPE_POINTER: +#endif + *(UINT64 *)out = *(UINT64 *)in; + return sizeof(UINT64) / FFI_SIZEOF_ARG; + + case FFI_TYPE_STRUCT: + memcpy(out, in, type->size); + return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + + case FFI_TYPE_VOID: + /* Must be a return type. Nothing to do. */ + return 0; + + default: + FFI_ASSERT(0); + return -1; + } +} + + +void +ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_sarg * const arg_mem = alloca(cif->bytes); + ffi_sarg * const reg_args = arg_mem; + ffi_sarg * const stack_args = ®_args[NUM_ARG_REGS]; + ffi_sarg *argp = arg_mem; + ffi_type ** const arg_types = cif->arg_types; + const long num_args = cif->nargs; + long i; + + if (cif->flags == FFI_TYPE_STRUCT) + { + /* Pass a hidden pointer to the return value. We make sure there + is scratch space for the callee to store the return value even if + our caller doesn't care about it. */ + *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size)); + + /* No more work needed to return anything. */ + rvalue = NULL; + } + + for (i = 0; i < num_args; i++) + { + ffi_type *type = arg_types[i]; + void * const arg_in = avalue[i]; + ptrdiff_t arg_word = argp - arg_mem; + +#ifndef __tilegx__ + /* Doubleword-aligned values are always in an even-number register + pair, or doubleword-aligned stack slot if out of registers. */ + long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); + argp += align; + arg_word += align; +#endif + + if (type->type == FFI_TYPE_STRUCT) + { + const size_t arg_size_in_words = + (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + + if (arg_word < NUM_ARG_REGS && + arg_word + arg_size_in_words > NUM_ARG_REGS) + { + /* Args are not allowed to span registers and the stack. */ + argp = stack_args; + } + + memcpy(argp, arg_in, type->size); + argp += arg_size_in_words; + } + else + { + argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1); + } + } + + /* Actually do the call. */ + ffi_call_tile(reg_args, stack_args, + cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn); + + if (rvalue != NULL) + assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0); +} + + +/* Template code for closure. */ +extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN; + + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ +#ifdef __tilegx__ + /* TILE-Gx */ + SINT64 c; + SINT64 h; + int s; + UINT64 *out; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + out = (UINT64 *)closure->tramp; + + c = (intptr_t)closure; + h = (intptr_t)ffi_closure_tile; + s = 0; + + /* Find the smallest shift count that doesn't lose information + (i.e. no need to explicitly insert high bits of the address that + are just the sign extension of the low bits). */ + while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s)) + s += 16; + +#define OPS(a, b, shift) \ + (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift))) + + /* Emit the moveli. */ + *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s); + for (s -= 16; s >= 0; s -= 16) + *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s); + +#undef OPS + + *out++ = ffi_template_tramp_tile[2]; + +#else + /* TILEPro */ + UINT64 *out; + intptr_t delta; + + if (cif->abi != FFI_UNIX) + return FFI_BAD_ABI; + + out = (UINT64 *)closure->tramp; + delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc; + + *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3); +#endif + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + invalidate_icache(closure->tramp, (char *)out - closure->tramp, + getpagesize()); + + return FFI_OK; +} + + +/* This is called by the assembly wrapper for closures. This does + all of the work. On entry reg_args[0] holds the values the registers + had when the closure was invoked. On return reg_args[1] holds the register + values to be returned to the caller (many of which may be garbage). */ +void FFI_HIDDEN +ffi_closure_tile_inner(ffi_closure *closure, + ffi_sarg reg_args[2][NUM_ARG_REGS], + ffi_sarg *stack_args) +{ + ffi_cif * const cif = closure->cif; + void ** const avalue = alloca(cif->nargs * sizeof(void *)); + void *rvalue; + ffi_type ** const arg_types = cif->arg_types; + ffi_sarg * const reg_args_in = reg_args[0]; + ffi_sarg * const reg_args_out = reg_args[1]; + ffi_sarg * argp; + long i, arg_word, nargs = cif->nargs; + /* Use a union to guarantee proper alignment for double. */ + union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret; + + /* Start out reading register arguments. */ + argp = reg_args_in; + + /* Copy the caller's structure return address to that the closure + returns the data directly to the caller. */ + if (cif->flags == FFI_TYPE_STRUCT) + { + /* Return by reference via hidden pointer. */ + rvalue = (void *)(intptr_t)*argp++; + arg_word = 1; + } + else + { + /* Return the value in registers. */ + rvalue = &closure_ret; + arg_word = 0; + } + + /* Grab the addresses of the arguments. */ + for (i = 0; i < nargs; i++) + { + ffi_type * const type = arg_types[i]; + const size_t arg_size_in_words = + (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG; + +#ifndef __tilegx__ + /* Doubleword-aligned values are always in an even-number register + pair, or doubleword-aligned stack slot if out of registers. */ + long align = arg_word & (type->alignment > FFI_SIZEOF_ARG); + argp += align; + arg_word += align; +#endif + + if (arg_word == NUM_ARG_REGS || + (arg_word < NUM_ARG_REGS && + arg_word + arg_size_in_words > NUM_ARG_REGS)) + { + /* Switch to reading arguments from the stack. */ + argp = stack_args; + arg_word = NUM_ARG_REGS; + } + + avalue[i] = argp; + argp += arg_size_in_words; + arg_word += arg_size_in_words; + } + + /* Invoke the closure. */ + closure->fun(cif, rvalue, avalue, closure->user_data); + + if (cif->flags != FFI_TYPE_STRUCT) + { + /* Canonicalize for register representation. */ + assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1); + } +} diff --git a/deps/libffi/src/tile/ffitarget.h b/deps/libffi/src/tile/ffitarget.h new file mode 100644 index 00000000000000..679fb5d904b4a1 --- /dev/null +++ b/deps/libffi/src/tile/ffitarget.h @@ -0,0 +1,65 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012 Tilera Corp. + Target configuration macros for TILE. + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM + +#include + +typedef uint_reg_t ffi_arg; +typedef int_reg_t ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_UNIX, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ +#define FFI_CLOSURES 1 + +#ifdef __tilegx__ +/* We always pass 8-byte values, even in -m32 mode. */ +# define FFI_SIZEOF_ARG 8 +# ifdef __LP64__ +# define FFI_TRAMPOLINE_SIZE (8 * 5) /* 5 bundles */ +# else +# define FFI_TRAMPOLINE_SIZE (8 * 3) /* 3 bundles */ +# endif +#else +# define FFI_SIZEOF_ARG 4 +# define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */ +#endif +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/tile/tile.S b/deps/libffi/src/tile/tile.S new file mode 100644 index 00000000000000..d1f82cb3dbfa85 --- /dev/null +++ b/deps/libffi/src/tile/tile.S @@ -0,0 +1,360 @@ +/* ----------------------------------------------------------------------- + tile.S - Copyright (c) 2011 Tilera Corp. + + Tilera TILEPro and TILE-Gx Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +/* Number of bytes in a register. */ +#define REG_SIZE FFI_SIZEOF_ARG + +/* Number of bytes in stack linkage area for backtracing. + + A note about the ABI: on entry to a procedure, sp points to a stack + slot where it must spill the return address if it's not a leaf. + REG_SIZE bytes beyond that is a slot owned by the caller which + contains the sp value that the caller had when it was originally + entered (i.e. the caller's frame pointer). */ +#define LINKAGE_SIZE (2 * REG_SIZE) + +/* The first 10 registers are used to pass arguments and return values. */ +#define NUM_ARG_REGS 10 + +#ifdef __tilegx__ +#define SW st +#define LW ld +#define BGZT bgtzt +#else +#define SW sw +#define LW lw +#define BGZT bgzt +#endif + + +/* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS], + const int_reg_t *stack_args, + unsigned long stack_args_bytes, + void (*fnaddr)(void)); + + On entry, REG_ARGS contain the outgoing register values, + and STACK_ARGS contains STACK_ARG_BYTES of additional values + to be passed on the stack. If STACK_ARG_BYTES is zero, then + STACK_ARGS is ignored. + + When the invoked function returns, the values of r0-r9 are + blindly stored back into REG_ARGS for the caller to examine. */ + + .section .text.ffi_call_tile, "ax", @progbits + .align 8 + .globl ffi_call_tile + FFI_HIDDEN(ffi_call_tile) +ffi_call_tile: + +/* Incoming arguments. */ +#define REG_ARGS r0 +#define INCOMING_STACK_ARGS r1 +#define STACK_ARG_BYTES r2 +#define ORIG_FNADDR r3 + +/* Temporary values. */ +#define FRAME_SIZE r10 +#define TMP r11 +#define TMP2 r12 +#define OUTGOING_STACK_ARGS r13 +#define REG_ADDR_PTR r14 +#define RETURN_REG_ADDR r15 +#define FNADDR r16 + + .cfi_startproc + { + /* Save return address. */ + SW sp, lr + .cfi_offset lr, 0 + /* Prepare to spill incoming r52. */ + addi TMP, sp, -REG_SIZE + /* Increase frame size to have room to spill r52 and REG_ARGS. + The +7 is to round up mod 8. */ + addi FRAME_SIZE, STACK_ARG_BYTES, \ + REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7 + } + { + /* Round stack frame size to a multiple of 8 to satisfy ABI. */ + andi FRAME_SIZE, FRAME_SIZE, -8 + /* Compute where to spill REG_ARGS value. */ + addi TMP2, sp, -(REG_SIZE * 2) + } + { + /* Spill incoming r52. */ + SW TMP, r52 + .cfi_offset r52, -REG_SIZE + /* Set up our frame pointer. */ + move r52, sp + .cfi_def_cfa_register r52 + /* Push stack frame. */ + sub sp, sp, FRAME_SIZE + } + { + /* Prepare to set up stack linkage. */ + addi TMP, sp, REG_SIZE + /* Prepare to memcpy stack args. */ + addi OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE + /* Save REG_ARGS which we will need after we call the subroutine. */ + SW TMP2, REG_ARGS + } + { + /* Set up linkage info to hold incoming stack pointer. */ + SW TMP, r52 + } + { + /* Skip stack args memcpy if we don't have any stack args (common). */ + blezt STACK_ARG_BYTES, .Ldone_stack_args_memcpy + } + +.Lmemcpy_stack_args: + { + /* Load incoming argument from stack_args. */ + LW TMP, INCOMING_STACK_ARGS + addi INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE + } + { + /* Store stack argument into outgoing stack argument area. */ + SW OUTGOING_STACK_ARGS, TMP + addi OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE + addi STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE + } + { + BGZT STACK_ARG_BYTES, .Lmemcpy_stack_args + } +.Ldone_stack_args_memcpy: + + { + /* Copy aside ORIG_FNADDR so we can overwrite its register. */ + move FNADDR, ORIG_FNADDR + /* Prepare to load argument registers. */ + addi REG_ADDR_PTR, r0, REG_SIZE + /* Load outgoing r0. */ + LW r0, r0 + } + + /* Load up argument registers from the REG_ARGS array. */ +#define LOAD_REG(REG, PTR) \ + { \ + LW REG, PTR ; \ + addi PTR, PTR, REG_SIZE \ + } + + LOAD_REG(r1, REG_ADDR_PTR) + LOAD_REG(r2, REG_ADDR_PTR) + LOAD_REG(r3, REG_ADDR_PTR) + LOAD_REG(r4, REG_ADDR_PTR) + LOAD_REG(r5, REG_ADDR_PTR) + LOAD_REG(r6, REG_ADDR_PTR) + LOAD_REG(r7, REG_ADDR_PTR) + LOAD_REG(r8, REG_ADDR_PTR) + LOAD_REG(r9, REG_ADDR_PTR) + + { + /* Call the subroutine. */ + jalr FNADDR + } + + { + /* Restore original lr. */ + LW lr, r52 + /* Prepare to recover ARGS, which we spilled earlier. */ + addi TMP, r52, -(2 * REG_SIZE) + } + { + /* Restore ARGS, so we can fill it in with the return regs r0-r9. */ + LW RETURN_REG_ADDR, TMP + /* Prepare to restore original r52. */ + addi TMP, r52, -REG_SIZE + } + + { + /* Pop stack frame. */ + move sp, r52 + /* Restore original r52. */ + LW r52, TMP + } + +#define STORE_REG(REG, PTR) \ + { \ + SW PTR, REG ; \ + addi PTR, PTR, REG_SIZE \ + } + + /* Return all register values by reference. */ + STORE_REG(r0, RETURN_REG_ADDR) + STORE_REG(r1, RETURN_REG_ADDR) + STORE_REG(r2, RETURN_REG_ADDR) + STORE_REG(r3, RETURN_REG_ADDR) + STORE_REG(r4, RETURN_REG_ADDR) + STORE_REG(r5, RETURN_REG_ADDR) + STORE_REG(r6, RETURN_REG_ADDR) + STORE_REG(r7, RETURN_REG_ADDR) + STORE_REG(r8, RETURN_REG_ADDR) + STORE_REG(r9, RETURN_REG_ADDR) + + { + jrp lr + } + + .cfi_endproc + .size ffi_call_tile, .-ffi_call_tile + +/* ffi_closure_tile(...) + + On entry, lr points to the closure plus 8 bytes, and r10 + contains the actual return address. + + This function simply dumps all register parameters into a stack array + and passes the closure, the registers array, and the stack arguments + to C code that does all of the actual closure processing. */ + + .section .text.ffi_closure_tile, "ax", @progbits + .align 8 + .globl ffi_closure_tile + FFI_HIDDEN(ffi_closure_tile) + + .cfi_startproc +/* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */ +#define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8) +ffi_closure_tile: + { +#ifdef __tilegx__ + st sp, lr + .cfi_offset lr, 0 +#else + /* Save return address (in r10 due to closure stub wrapper). */ + SW sp, r10 + .cfi_return_column r10 + .cfi_offset r10, 0 +#endif + /* Compute address for stack frame linkage. */ + addli r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) + } + { + /* Save incoming stack pointer in linkage area. */ + SW r10, sp + .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE) + /* Push a new stack frame. */ + addli sp, sp, -CLOSURE_FRAME_SIZE + .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE + } + + { + /* Create pointer to where to start spilling registers. */ + addi r10, sp, LINKAGE_SIZE + } + + /* Spill all the incoming registers. */ + STORE_REG(r0, r10) + STORE_REG(r1, r10) + STORE_REG(r2, r10) + STORE_REG(r3, r10) + STORE_REG(r4, r10) + STORE_REG(r5, r10) + STORE_REG(r6, r10) + STORE_REG(r7, r10) + STORE_REG(r8, r10) + { + /* Save r9. */ + SW r10, r9 +#ifdef __tilegx__ + /* Pointer to closure is passed in r11. */ + move r0, r11 +#else + /* Compute pointer to the closure object. Because the closure + starts with a "jal ffi_closure_tile", we can just take the + value of lr (a phony return address pointing into the closure) + and subtract 8. */ + addi r0, lr, -8 +#endif + /* Compute a pointer to the register arguments we just spilled. */ + addi r1, sp, LINKAGE_SIZE + } + { + /* Compute a pointer to the extra stack arguments (if any). */ + addli r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE + /* Call C code to deal with all of the grotty details. */ + jal ffi_closure_tile_inner + } + { + addli r10, sp, CLOSURE_FRAME_SIZE + } + { + /* Restore the return address. */ + LW lr, r10 + /* Compute pointer to registers array. */ + addli r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE) + } + /* Return all the register values, which C code may have set. */ + LOAD_REG(r0, r10) + LOAD_REG(r1, r10) + LOAD_REG(r2, r10) + LOAD_REG(r3, r10) + LOAD_REG(r4, r10) + LOAD_REG(r5, r10) + LOAD_REG(r6, r10) + LOAD_REG(r7, r10) + LOAD_REG(r8, r10) + LOAD_REG(r9, r10) + { + /* Pop the frame. */ + addli sp, sp, CLOSURE_FRAME_SIZE + jrp lr + } + + .cfi_endproc + .size ffi_closure_tile, . - ffi_closure_tile + + +/* What follows are code template instructions that get copied to the + closure trampoline by ffi_prep_closure_loc. The zeroed operands + get replaced by their proper values at runtime. */ + + .section .text.ffi_template_tramp_tile, "ax", @progbits + .align 8 + .globl ffi_template_tramp_tile + FFI_HIDDEN(ffi_template_tramp_tile) +ffi_template_tramp_tile: +#ifdef __tilegx__ + { + moveli r11, 0 /* backpatched to address of containing closure. */ + moveli r10, 0 /* backpatched to ffi_closure_tile. */ + } + /* Note: the following bundle gets generated multiple times + depending on the pointer value (esp. useful for -m32 mode). */ + { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 } + { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 } +#else + /* 'jal .' yields a PC-relative offset of zero so we can OR in the + right offset at runtime. */ + { move r10, lr ; jal . /* ffi_closure_tile */ } +#endif + + .size ffi_template_tramp_tile, . - ffi_template_tramp_tile diff --git a/deps/libffi/src/tramp.c b/deps/libffi/src/tramp.c new file mode 100644 index 00000000000000..76a9dfe75c2c3b --- /dev/null +++ b/deps/libffi/src/tramp.c @@ -0,0 +1,721 @@ +/* ----------------------------------------------------------------------- + tramp.c - Copyright (c) 2020 Madhavan T. Venkataraman + Copyright (c) 2022 Anthony Green + + API and support functions for managing statically defined closure + trampolines. + + 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. + ----------------------------------------------------------------------- */ + +#include + +#ifdef FFI_EXEC_STATIC_TRAMP + +/* -------------------------- Headers and Definitions ---------------------*/ +/* + * Add support for other OSes later. For now, it is just Linux and Cygwin. + */ + +#if defined (__linux__) || defined (__CYGWIN__) +#ifdef __linux__ +#define _GNU_SOURCE 1 +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef __linux__ +#include +#include +#endif +#ifdef __CYGWIN__ +#include +#endif +#endif + +/* + * Each architecture defines static code for a trampoline code table. The + * trampoline code table is mapped into the address space of a process. + * + * The following architecture specific function returns: + * + * - the address of the trampoline code table in the text segment + * - the size of each trampoline in the trampoline code table + * - the size of the mapping for the whole trampoline code table + */ +void __attribute__((weak)) *ffi_tramp_arch (size_t *tramp_size, + size_t *map_size); + +/* ------------------------- Trampoline Data Structures --------------------*/ + +struct tramp; + +/* + * Trampoline table. Manages one trampoline code table and one trampoline + * parameter table. + * + * prev, next Links in the global trampoline table list. + * code_table Trampoline code table mapping. + * parm_table Trampoline parameter table mapping. + * array Array of trampolines malloced. + * free List of free trampolines. + * nfree Number of free trampolines. + */ +struct tramp_table +{ + struct tramp_table *prev; + struct tramp_table *next; + void *code_table; + void *parm_table; + struct tramp *array; + struct tramp *free; + int nfree; +}; + +/* + * Parameters for each trampoline. + * + * data + * Data for the target code that the trampoline jumps to. + * target + * Target code that the trampoline jumps to. + */ +struct tramp_parm +{ + void *data; + void *target; +}; + +/* + * Trampoline structure for each trampoline. + * + * prev, next Links in the trampoline free list of a trampoline table. + * table Trampoline table to which this trampoline belongs. + * code Address of this trampoline in the code table mapping. + * parm Address of this trampoline's parameters in the parameter + * table mapping. + */ +struct tramp +{ + struct tramp *prev; + struct tramp *next; + struct tramp_table *table; + void *code; + struct tramp_parm *parm; +}; + +enum tramp_globals_status { + TRAMP_GLOBALS_UNINITIALIZED = 0, + TRAMP_GLOBALS_PASSED, + TRAMP_GLOBALS_FAILED, +}; + +/* + * Trampoline globals. + * + * fd + * File descriptor of binary file that contains the trampoline code table. + * offset + * Offset of the trampoline code table in that file. + * text + * Address of the trampoline code table in the text segment. + * map_size + * Size of the trampoline code table mapping. + * size + * Size of one trampoline in the trampoline code table. + * ntramp + * Total number of trampolines in the trampoline code table. + * free_tables + * List of trampoline tables that contain free trampolines. + * nfree_tables + * Number of trampoline tables that contain free trampolines. + * status + * Initialization status. + */ +struct tramp_globals +{ + int fd; + off_t offset; + void *text; + size_t map_size; + size_t size; + int ntramp; + struct tramp_table *free_tables; + int nfree_tables; + enum tramp_globals_status status; +}; + +static struct tramp_globals tramp_globals; + +/* --------------------- Trampoline File Initialization --------------------*/ + +/* + * The trampoline file is the file used to map the trampoline code table into + * the address space of a process. There are two ways to get this file: + * + * - From the OS. E.g., on Linux, /proc//maps lists all the memory + * mappings for . For file-backed mappings, maps supplies the file name + * and the file offset. Using this, we can locate the mapping that maps + * libffi and get the path to the libffi binary. And, we can compute the + * offset of the trampoline code table within that binary. + * + * - Else, if we can create a temporary file, we can write the trampoline code + * table from the text segment into the temporary file. + * + * The first method is the preferred one. If the OS security subsystem + * disallows mapping unsigned files with PROT_EXEC, then the second method + * will fail. + * + * If an OS allows the trampoline code table in the text segment to be + * directly remapped (e.g., MACH vm_remap ()), then we don't need the + * trampoline file. + */ +static int tramp_table_alloc (void); + +#if defined (__linux__) || defined (__CYGWIN__) + +static int +ffi_tramp_get_libffi (void) +{ + FILE *fp; + char file[PATH_MAX], line[PATH_MAX+100], perm[10], dev[10]; + unsigned long start, end, offset, inode; + uintptr_t addr = (uintptr_t) tramp_globals.text; + int nfields, found; + int open_flags = O_RDONLY; + +#ifdef O_CLOEXEC + open_flags |= O_CLOEXEC; +#endif + + snprintf (file, PATH_MAX, "/proc/%d/maps", getpid()); + fp = fopen (file, "r"); + if (fp == NULL) + return 0; + + found = 0; + while (feof (fp) == 0) { + if (fgets (line, sizeof (line), fp) == 0) + break; + + nfields = sscanf (line, "%lx-%lx %9s %lx %9s %ld %s", + &start, &end, perm, &offset, dev, &inode, file); + if (nfields != 7) + continue; + + if (addr >= start && addr < end) { + tramp_globals.offset = offset + (addr - start); + found = 1; + break; + } + } + fclose (fp); + + if (!found) + return 0; + + tramp_globals.fd = open (file, open_flags); + if (tramp_globals.fd == -1) + return 0; + + /* + * Allocate a trampoline table just to make sure that the trampoline code + * table can be mapped. + */ + if (!tramp_table_alloc ()) + { + close (tramp_globals.fd); + tramp_globals.fd = -1; + return 0; + } + return 1; +} + +#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +#if defined (__linux__) || defined (__CYGWIN__) + +static int +ffi_tramp_get_temp_file (void) +{ + ssize_t count; + + tramp_globals.offset = 0; + tramp_globals.fd = open_temp_exec_file (); + + /* + * Write the trampoline code table into the temporary file and allocate a + * trampoline table to make sure that the temporary file can be mapped. + */ + count = write(tramp_globals.fd, tramp_globals.text, tramp_globals.map_size); + if (count >=0 && (size_t)count == tramp_globals.map_size && tramp_table_alloc ()) + return 1; + + close (tramp_globals.fd); + tramp_globals.fd = -1; + return 0; +} + +#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +/* ------------------------ OS-specific Initialization ----------------------*/ + +#if defined (__linux__) || defined (__CYGWIN__) + +static int +ffi_tramp_init_os (void) +{ + if (ffi_tramp_get_libffi ()) + return 1; + return ffi_tramp_get_temp_file (); +} + +#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +/* --------------------------- OS-specific Locking -------------------------*/ + +#if defined (__linux__) || defined (__CYGWIN__) + +static pthread_mutex_t tramp_globals_mutex = PTHREAD_MUTEX_INITIALIZER; + +static void +ffi_tramp_lock(void) +{ + pthread_mutex_lock (&tramp_globals_mutex); +} + +static void +ffi_tramp_unlock(void) +{ + pthread_mutex_unlock (&tramp_globals_mutex); +} + +#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +/* ------------------------ OS-specific Memory Mapping ----------------------*/ + +/* + * Create a trampoline code table mapping and a trampoline parameter table + * mapping. The two mappings must be adjacent to each other for PC-relative + * access. + * + * For each trampoline in the code table, there is a corresponding parameter + * block in the parameter table. The size of the parameter block is the same + * as the size of the trampoline. This means that the parameter block is at + * a fixed offset from its trampoline making it easy for a trampoline to find + * its parameters using PC-relative access. + * + * The parameter block will contain a struct tramp_parm. This means that + * sizeof (struct tramp_parm) cannot exceed the size of a parameter block. + */ + +#if defined (__linux__) || defined (__CYGWIN__) + +static int +tramp_table_map (struct tramp_table *table) +{ + char *addr; + + /* + * Create an anonymous mapping twice the map size. The top half will be used + * for the code table. The bottom half will be used for the parameter table. + */ + addr = mmap (NULL, tramp_globals.map_size * 2, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (addr == MAP_FAILED) + return 0; + + /* + * Replace the top half of the anonymous mapping with the code table mapping. + */ + table->code_table = mmap (addr, tramp_globals.map_size, PROT_READ | PROT_EXEC, + MAP_PRIVATE | MAP_FIXED, tramp_globals.fd, tramp_globals.offset); + if (table->code_table == MAP_FAILED) + { + (void) munmap (addr, tramp_globals.map_size * 2); + return 0; + } + table->parm_table = table->code_table + tramp_globals.map_size; + return 1; +} + +static void +tramp_table_unmap (struct tramp_table *table) +{ + (void) munmap (table->code_table, tramp_globals.map_size); + (void) munmap (table->parm_table, tramp_globals.map_size); +} + +#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +/* ------------------------ Trampoline Initialization ----------------------*/ + +/* + * Initialize the static trampoline feature. + */ +static int +ffi_tramp_init (void) +{ + long page_size; + + if (tramp_globals.status == TRAMP_GLOBALS_PASSED) + return 1; + + if (tramp_globals.status == TRAMP_GLOBALS_FAILED) + return 0; + + if (ffi_tramp_arch == NULL) + { + tramp_globals.status = TRAMP_GLOBALS_FAILED; + return 0; + } + + tramp_globals.free_tables = NULL; + tramp_globals.nfree_tables = 0; + + /* + * Get trampoline code table information from the architecture. + */ + tramp_globals.text = ffi_tramp_arch (&tramp_globals.size, + &tramp_globals.map_size); + tramp_globals.ntramp = tramp_globals.map_size / tramp_globals.size; + + page_size = sysconf (_SC_PAGESIZE); + if (page_size >= 0 && (size_t)page_size > tramp_globals.map_size) + return 0; + + if (ffi_tramp_init_os ()) + { + tramp_globals.status = TRAMP_GLOBALS_PASSED; + return 1; + } + + tramp_globals.status = TRAMP_GLOBALS_FAILED; + return 0; +} + +/* ---------------------- Trampoline Table functions ---------------------- */ + +/* This code assumes that malloc () is available on all OSes. */ + +static void tramp_add (struct tramp *tramp); + +/* + * Allocate and initialize a trampoline table. + */ +static int +tramp_table_alloc (void) +{ + struct tramp_table *table; + struct tramp *tramp_array, *tramp; + size_t size; + char *code, *parm; + int i; + + /* + * If we already have tables with free trampolines, there is no need to + * allocate a new table. + */ + if (tramp_globals.nfree_tables > 0) + return 1; + + /* + * Allocate a new trampoline table structure. + */ + table = malloc (sizeof (*table)); + if (table == NULL) + return 0; + + /* + * Allocate new trampoline structures. + */ + tramp_array = malloc (sizeof (*tramp) * tramp_globals.ntramp); + if (tramp_array == NULL) + goto free_table; + + /* + * Map a code table and a parameter table into the caller's address space. + */ + if (!tramp_table_map (table)) + { + /* + * Failed to map the code and parameter tables. + */ + goto free_tramp_array; + } + + /* + * Initialize the trampoline table. + */ + table->array = tramp_array; + table->free = NULL; + table->nfree = 0; + + /* + * Populate the trampoline table free list. This will also add the trampoline + * table to the global list of trampoline tables. + */ + size = tramp_globals.size; + code = table->code_table; + parm = table->parm_table; + for (i = 0; i < tramp_globals.ntramp; i++) + { + tramp = &tramp_array[i]; + tramp->table = table; + tramp->code = code; + tramp->parm = (struct tramp_parm *) parm; + tramp_add (tramp); + + code += size; + parm += size; + } + /* Success */ + return 1; + +/* Failure */ +free_tramp_array: + free (tramp_array); +free_table: + free (table); + return 0; +} + +/* + * Free a trampoline table. + */ +static void +tramp_table_free (struct tramp_table *table) +{ + tramp_table_unmap (table); + free (table->array); + free (table); +} + +/* + * Add a new trampoline table to the global table list. + */ +static void +tramp_table_add (struct tramp_table *table) +{ + table->next = tramp_globals.free_tables; + table->prev = NULL; + if (tramp_globals.free_tables != NULL) + tramp_globals.free_tables->prev = table; + tramp_globals.free_tables = table; + tramp_globals.nfree_tables++; +} + +/* + * Delete a trampoline table from the global table list. + */ +static void +tramp_table_del (struct tramp_table *table) +{ + tramp_globals.nfree_tables--; + if (table->prev != NULL) + table->prev->next = table->next; + if (table->next != NULL) + table->next->prev = table->prev; + if (tramp_globals.free_tables == table) + tramp_globals.free_tables = table->next; +} + +/* ------------------------- Trampoline functions ------------------------- */ + +/* + * Add a trampoline to its trampoline table. + */ +static void +tramp_add (struct tramp *tramp) +{ + struct tramp_table *table = tramp->table; + + tramp->next = table->free; + tramp->prev = NULL; + if (table->free != NULL) + table->free->prev = tramp; + table->free = tramp; + table->nfree++; + + if (table->nfree == 1) + tramp_table_add (table); + + /* + * We don't want to keep too many free trampoline tables lying around. + */ + if (table->nfree == tramp_globals.ntramp && + tramp_globals.nfree_tables > 1) + { + tramp_table_del (table); + tramp_table_free (table); + } +} + +/* + * Remove a trampoline from its trampoline table. + */ +static void +tramp_del (struct tramp *tramp) +{ + struct tramp_table *table = tramp->table; + + table->nfree--; + if (tramp->prev != NULL) + tramp->prev->next = tramp->next; + if (tramp->next != NULL) + tramp->next->prev = tramp->prev; + if (table->free == tramp) + table->free = tramp->next; + + if (table->nfree == 0) + tramp_table_del (table); +} + +/* ------------------------ Trampoline API functions ------------------------ */ + +int +ffi_tramp_is_supported(void) +{ + int ret; + + ffi_tramp_lock(); + ret = ffi_tramp_init (); + ffi_tramp_unlock(); + return ret; +} + +/* + * Allocate a trampoline and return its opaque address. + */ +void * +ffi_tramp_alloc (int flags) +{ + struct tramp *tramp; + + ffi_tramp_lock(); + + if (!ffi_tramp_init () || flags != 0) + { + ffi_tramp_unlock(); + return NULL; + } + + if (!tramp_table_alloc ()) + { + ffi_tramp_unlock(); + return NULL; + } + + tramp = tramp_globals.free_tables->free; + tramp_del (tramp); + + ffi_tramp_unlock(); + + return tramp; +} + +/* + * Set the parameters for a trampoline. + */ +void +ffi_tramp_set_parms (void *arg, void *target, void *data) +{ + struct tramp *tramp = arg; + + ffi_tramp_lock(); + tramp->parm->target = target; + tramp->parm->data = data; + ffi_tramp_unlock(); +} + +/* + * Get the invocation address of a trampoline. + */ +void * +ffi_tramp_get_addr (void *arg) +{ + struct tramp *tramp = arg; + void *addr; + + ffi_tramp_lock(); + addr = tramp->code; + ffi_tramp_unlock(); + + return addr; +} + +/* + * Free a trampoline. + */ +void +ffi_tramp_free (void *arg) +{ + struct tramp *tramp = arg; + + ffi_tramp_lock(); + tramp_add (tramp); + ffi_tramp_unlock(); +} + +/* ------------------------------------------------------------------------- */ + +#else /* !FFI_EXEC_STATIC_TRAMP */ + +#include + +int +ffi_tramp_is_supported(void) +{ + return 0; +} + +void * +ffi_tramp_alloc (int flags) +{ + return NULL; +} + +void +ffi_tramp_set_parms (void *arg, void *target, void *data) +{ +} + +void * +ffi_tramp_get_addr (void *arg) +{ + return NULL; +} + +void +ffi_tramp_free (void *arg) +{ +} + +#endif /* FFI_EXEC_STATIC_TRAMP */ diff --git a/deps/libffi/src/types.c b/deps/libffi/src/types.c new file mode 100644 index 00000000000000..8b2dec98eafafb --- /dev/null +++ b/deps/libffi/src/types.c @@ -0,0 +1,128 @@ +/* ----------------------------------------------------------------------- + types.c - Copyright (c) 1996, 1998, 2024, 2025 Red Hat, Inc. + + Predefined ffi_types needed by libffi. + + 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. + ----------------------------------------------------------------------- */ + +/* Hide the basic type definitions from the header file, so that we + can redefine them here as "const". */ +#define LIBFFI_HIDE_BASIC_TYPES + +#include +#include + +/* Return a version string. */ +const char *ffi_get_version (void) +{ + return FFI_VERSION_STRING; +} + +/* Return the version as an unsigned long value: (x * 10000 + y * 100 + z) */ +unsigned long ffi_get_version_number (void) +{ + return FFI_VERSION_NUMBER; +} + +unsigned int ffi_get_default_abi (void) +{ + return FFI_DEFAULT_ABI; +} + +size_t ffi_get_closure_size (void) +{ + return sizeof(ffi_closure); +} + +/* Type definitions */ + +#define FFI_TYPEDEF(name, type, id, maybe_const)\ +struct struct_align_##name { \ + char c; \ + type x; \ +}; \ +FFI_EXTERN \ +maybe_const ffi_type ffi_type_##name = { \ + sizeof(type), \ + offsetof(struct struct_align_##name, x), \ + id, NULL \ +} + +#define FFI_COMPLEX_TYPEDEF(name, type, maybe_const) \ +static ffi_type *ffi_elements_complex_##name [2] = { \ + (ffi_type *)(&ffi_type_##name), NULL \ +}; \ +struct struct_align_complex_##name { \ + char c; \ + _Complex type x; \ +}; \ +FFI_EXTERN \ +maybe_const ffi_type ffi_type_complex_##name = { \ + sizeof(_Complex type), \ + offsetof(struct struct_align_complex_##name, x), \ + FFI_TYPE_COMPLEX, \ + (ffi_type **)ffi_elements_complex_##name \ +} + +/* Size and alignment are fake here. They must not be 0. */ +FFI_EXTERN const ffi_type ffi_type_void = { + 1, 1, FFI_TYPE_VOID, NULL +}; + +FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8, const); +FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8, const); +FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16, const); +FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16, const); +FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32, const); +FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32, const); +FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64, const); +FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64, const); + +FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER, const); + +FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT, const); +FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const); + +#if !defined HAVE_LONG_DOUBLE_VARIANT || defined __alpha__ +#define FFI_LDBL_CONST const +#else +#define FFI_LDBL_CONST +#endif + +#ifdef __alpha__ +/* Even if we're not configured to default to 128-bit long double, + maintain binary compatibility, as -mlong-double-128 can be used + at any time. */ +/* Validate the hard-coded number below. */ +# if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL }; +#else +FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST); +#endif + +#ifdef FFI_TARGET_HAS_COMPLEX_TYPE +FFI_COMPLEX_TYPEDEF(float, float, const); +FFI_COMPLEX_TYPEDEF(double, double, const); +FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST); +#endif diff --git a/deps/libffi/src/vax/elfbsd.S b/deps/libffi/src/vax/elfbsd.S new file mode 100644 index 00000000000000..01ca313402b20e --- /dev/null +++ b/deps/libffi/src/vax/elfbsd.S @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * vax Foreign Function Interface + */ + +#define LIBFFI_ASM +#include +#include + + .text + +/* + * void * %r0 + * ffi_call_elfbsd(extended_cif *ecif, 4(%ap) + * unsigned bytes, 8(%ap) + * unsigned flags, 12(%ap) + * void *rvalue, 16(%ap) + * void (*fn)()); 20(%ap) + */ + .globl ffi_call_elfbsd + .type ffi_call_elfbsd,@function + .align 2 +ffi_call_elfbsd: + .word 0x00c # save R2 and R3 + + # Allocate stack space for the args + subl2 8(%ap), %sp + + # Call ffi_prep_args + pushl %sp + pushl 4(%ap) + calls $2, ffi_prep_args + + # Get function pointer + movl 20(%ap), %r1 + + # Build a CALLS frame + ashl $-2, 8(%ap), %r0 + pushl %r0 # argument stack usage + movl %sp, %r0 # future %ap + # saved registers + bbc $11, 0(%r1), 1f + pushl %r11 +1: bbc $10, 0(%r1), 1f + pushl %r10 +1: bbc $9, 0(%r1), 1f + pushl %r9 +1: bbc $8, 0(%r1), 1f + pushl %r8 +1: bbc $7, 0(%r1), 1f + pushl %r7 +1: bbc $6, 0(%r1), 1f + pushl %r6 +1: bbc $5, 0(%r1), 1f + pushl %r5 +1: bbc $4, 0(%r1), 1f + pushl %r4 +1: bbc $3, 0(%r1), 1f + pushl %r3 +1: bbc $2, 0(%r1), 1f + pushl %r2 +1: + pushal 9f + pushl %fp + pushl %ap + movl 16(%ap), %r3 # struct return address, if needed + movl %r0, %ap + movzwl 4(%fp), %r0 # previous PSW, without the saved registers mask + bisl2 $0x20000000, %r0 # calls frame + movzwl 0(%r1), %r2 + bicw2 $0xf003, %r2 # only keep R11-R2 + ashl $16, %r2, %r2 + bisl2 %r2, %r0 # saved register mask of the called function + pushl %r0 + pushl $0 + movl %sp, %fp + + # Invoke the function + pushal 2(%r1) # skip procedure entry mask + movl %r3, %r1 + bicpsw $0x000f + rsb + +9: + # Copy return value if necessary + tstl 16(%ap) + jeql 9f + movl 16(%ap), %r2 + + bbc $0, 12(%ap), 1f # CIF_FLAGS_CHAR + movb %r0, 0(%r2) + brb 9f +1: + bbc $1, 12(%ap), 1f # CIF_FLAGS_SHORT + movw %r0, 0(%r2) + brb 9f +1: + bbc $2, 12(%ap), 1f # CIF_FLAGS_INT + movl %r0, 0(%r2) + brb 9f +1: + bbc $3, 12(%ap), 1f # CIF_FLAGS_DINT + movq %r0, 0(%r2) + brb 9f +1: + movl %r1, %r0 # might have been a struct + #brb 9f + +9: + ret + +/* + * ffi_closure_elfbsd(void); + * invoked with %r0: ffi_closure *closure + */ + .globl ffi_closure_elfbsd + .type ffi_closure_elfbsd, @function + .align 2 +ffi_closure_elfbsd: + .word 0 + + # Allocate room on stack for return value + subl2 $8, %sp + + # Invoke the closure function + pushal 4(%ap) # calling stack + pushal 4(%sp) # return value + pushl %r0 # closure + calls $3, ffi_closure_elfbsd_inner + + # Copy return value if necessary + bitb $1, %r0 # CIF_FLAGS_CHAR + beql 1f + movb 0(%sp), %r0 + brb 9f +1: + bitb $2, %r0 # CIF_FLAGS_SHORT + beql 1f + movw 0(%sp), %r0 + brb 9f +1: + bitb $4, %r0 # CIF_FLAGS_INT + beql 1f + movl 0(%sp), %r0 + brb 9f +1: + bitb $8, %r0 # CIF_FLAGS_DINT + beql 1f + movq 0(%sp), %r0 + #brb 9f +1: + +9: + ret + +/* + * ffi_closure_struct_elfbsd(void); + * invoked with %r0: ffi_closure *closure + * %r1: struct return address + */ + .globl ffi_closure_struct_elfbsd + .type ffi_closure_struct_elfbsd, @function + .align 2 +ffi_closure_struct_elfbsd: + .word 0 + + # Invoke the closure function + pushal 4(%ap) # calling stack + pushl %r1 # return value + pushl %r0 # closure + calls $3, ffi_closure_elfbsd_inner + + ret diff --git a/deps/libffi/src/vax/ffi.c b/deps/libffi/src/vax/ffi.c new file mode 100644 index 00000000000000..e52caec86da2e8 --- /dev/null +++ b/deps/libffi/src/vax/ffi.c @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * vax Foreign Function Interface + * + * This file attempts to provide all the FFI entry points which can reliably + * be implemented in C. + */ + +#include +#include + +#include +#include + +#define CIF_FLAGS_CHAR 1 /* for struct only */ +#define CIF_FLAGS_SHORT 2 /* for struct only */ +#define CIF_FLAGS_INT 4 +#define CIF_FLAGS_DINT 8 + +/* + * Foreign Function Interface API + */ + +void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *, + void (*) ()); +void *ffi_prep_args (extended_cif *ecif, void *stack); + +void * +ffi_prep_args (extended_cif *ecif, void *stack) +{ + unsigned int i; + void **p_argv; + char *argp; + ffi_type **p_arg; + void *struct_value_ptr; + + argp = stack; + + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT + && !ecif->cif->flags) + struct_value_ptr = ecif->rvalue; + else + struct_value_ptr = NULL; + + p_argv = ecif->avalue; + + for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; + i != 0; + i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + if (z < sizeof (int)) + { + switch ((*p_arg)->type) + { + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int) *(SINT8 *) *p_argv; + break; + + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv; + break; + + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int) *(SINT16 *) *p_argv; + break; + + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv; + break; + + case FFI_TYPE_STRUCT: + memcpy (argp, *p_argv, z); + break; + + default: + FFI_ASSERT (0); + } + z = sizeof (int); + } + else + { + memcpy (argp, *p_argv, z); + + /* Align if necessary. */ + if ((sizeof(int) - 1) & z) + z = FFI_ALIGN(z, sizeof(int)); + } + + p_argv++; + argp += z; + } + + return struct_value_ptr; +} + +ffi_status +ffi_prep_cif_machdep (ffi_cif *cif) +{ + /* Set the return type flag */ + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + cif->flags = 0; + break; + + case FFI_TYPE_STRUCT: + if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT && + cif->rtype->elements[1]) + { + cif->flags = 0; + break; + } + + if (cif->rtype->size == sizeof (char)) + cif->flags = CIF_FLAGS_CHAR; + else if (cif->rtype->size == sizeof (short)) + cif->flags = CIF_FLAGS_SHORT; + else if (cif->rtype->size == sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else if (cif->rtype->size == 2 * sizeof (int)) + cif->flags = CIF_FLAGS_DINT; + else + cif->flags = 0; + break; + + default: + if (cif->rtype->size <= sizeof (int)) + cif->flags = CIF_FLAGS_INT; + else + cif->flags = CIF_FLAGS_DINT; + break; + } + + return FFI_OK; +} + +void +ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue) +{ + extended_cif ecif; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* If the return value is a struct and we don't have a return value + address then we need to make one. */ + + if (rvalue == NULL + && cif->rtype->type == FFI_TYPE_STRUCT + && cif->flags == 0) + ecif.rvalue = alloca (cif->rtype->size); + else + ecif.rvalue = rvalue; + + switch (cif->abi) + { + case FFI_ELFBSD: + ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn); + break; + + default: + FFI_ASSERT (0); + break; + } +} + +/* + * Closure API + */ + +void ffi_closure_elfbsd (void); +void ffi_closure_struct_elfbsd (void); +unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *); + +static void +ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp) +{ + unsigned int i; + void **p_argv; + ffi_type **p_arg; + + p_argv = avalue; + + for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) + { + size_t z; + + z = (*p_arg)->size; + *p_argv = stackp; + + /* Align if necessary */ + if ((sizeof (int) - 1) & z) + z = FFI_ALIGN(z, sizeof (int)); + + p_argv++; + stackp += z; + } +} + +unsigned int +ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack) +{ + ffi_cif *cif; + void **arg_area; + + cif = closure->cif; + arg_area = (void **) alloca (cif->nargs * sizeof (void *)); + + ffi_prep_closure_elfbsd (cif, arg_area, stack); + + (closure->fun) (cif, resp, arg_area, closure->user_data); + + return cif->flags; +} + +ffi_status +ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) +{ + char *tramp = (char *) codeloc; + void *fn; + + FFI_ASSERT (cif->abi == FFI_ELFBSD); + + /* entry mask */ + *(unsigned short *)(tramp + 0) = 0x0000; + /* movl #closure, r0 */ + tramp[2] = 0xd0; + tramp[3] = 0x8f; + *(unsigned int *)(tramp + 4) = (unsigned int) closure; + tramp[8] = 0x50; + + if (cif->rtype->type == FFI_TYPE_STRUCT + && !cif->flags) + fn = &ffi_closure_struct_elfbsd; + else + fn = &ffi_closure_elfbsd; + + /* jmpl #fn */ + tramp[9] = 0x17; + tramp[10] = 0xef; + *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 - + (unsigned int)tramp - 9 - 6; + + closure->cif = cif; + closure->user_data = user_data; + closure->fun = fun; + + return FFI_OK; +} diff --git a/deps/libffi/src/vax/ffitarget.h b/deps/libffi/src/vax/ffitarget.h new file mode 100644 index 00000000000000..2fc94881abbc35 --- /dev/null +++ b/deps/libffi/src/vax/ffitarget.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2013 Miodrag Vallat. + * + * 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. + */ + +/* + * vax Foreign Function Interface + */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_ELFBSD, + FFI_DEFAULT_ABI = FFI_ELFBSD, + FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_TRAMPOLINE_SIZE 15 +#define FFI_NATIVE_RAW_API 0 + +#endif diff --git a/deps/libffi/src/wasm/ffi.c b/deps/libffi/src/wasm/ffi.c new file mode 100644 index 00000000000000..486ffa7856aa82 --- /dev/null +++ b/deps/libffi/src/wasm/ffi.c @@ -0,0 +1,798 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2018-2023 Hood Chatham, Brion Vibber, Kleis Auke Wolthuizen, and others. + + wasm32/emscripten Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include + +#include + +#ifdef DEBUG_F +#define LOG_DEBUG(args...) \ + console.warn(`====LIBFFI(line __LINE__)`, args) +#else +#define LOG_DEBUG(args...) 0 +#endif + +#define EM_JS_MACROS(ret, name, args, body...) EM_JS(ret, name, args, body) + +EM_JS_DEPS(libffi, "$getWasmTableEntry,$setWasmTableEntry,$getEmptyTableSlot,$convertJsFunctionToWasm"); + +#define DEREF_U8(addr, offset) HEAPU8[addr + offset] +#define DEREF_S8(addr, offset) HEAP8[addr + offset] +#define DEREF_U16(addr, offset) HEAPU16[(addr >> 1) + offset] +#define DEREF_S16(addr, offset) HEAP16[(addr >> 1) + offset] +#define DEREF_U32(addr, offset) HEAPU32[(addr >> 2) + offset] +#define DEREF_S32(addr, offset) HEAP32[(addr >> 2) + offset] + +#define DEREF_F32(addr, offset) HEAPF32[(addr >> 2) + offset] +#define DEREF_F64(addr, offset) HEAPF64[(addr >> 3) + offset] +#define DEREF_U64(addr, offset) HEAPU64[(addr >> 3) + offset] + +#define CHECK_FIELD_OFFSET(struct, field, offset) \ + _Static_assert( \ + offsetof(struct, field) == offset, \ + "Memory layout of '" #struct "' has changed: '" #field "' is in an unexpected location"); + +#if __SIZEOF_POINTER__ == 4 + +#define FFI_EMSCRIPTEN_ABI FFI_WASM32_EMSCRIPTEN +#define PTR_SIG 'i' + +#define DEC_PTR(p) p +#define ENC_PTR(p) p + +#define DEREF_PTR(addr, offset) DEREF_U32(addr, offset) +#define DEREF_PTR_NUMBER(addr, offset) DEREF_PTR(addr, offset) + +CHECK_FIELD_OFFSET(ffi_cif, abi, 4*0); +CHECK_FIELD_OFFSET(ffi_cif, nargs, 4*1); +CHECK_FIELD_OFFSET(ffi_cif, arg_types, 4*2); +CHECK_FIELD_OFFSET(ffi_cif, rtype, 4*3); +CHECK_FIELD_OFFSET(ffi_cif, flags, 4*5); +CHECK_FIELD_OFFSET(ffi_cif, nfixedargs, 4*6); + +#define CIF__ABI(addr) DEREF_U32(addr, 0) +#define CIF__NARGS(addr) DEREF_U32(addr, 1) +#define CIF__ARGTYPES(addr) DEREF_U32(addr, 2) +#define CIF__RTYPE(addr) DEREF_U32(addr, 3) +#define CIF__FLAGS(addr) DEREF_U32(addr, 5) +#define CIF__NFIXEDARGS(addr) DEREF_U32(addr, 6) + +CHECK_FIELD_OFFSET(ffi_type, size, 0); +CHECK_FIELD_OFFSET(ffi_type, alignment, 4); +CHECK_FIELD_OFFSET(ffi_type, type, 6); +CHECK_FIELD_OFFSET(ffi_type, elements, 8); + +#define FFI_TYPE__SIZE(addr) DEREF_U32(addr, 0) +#define FFI_TYPE__ALIGN(addr) DEREF_U16(addr + 4, 0) +#define FFI_TYPE__TYPEID(addr) DEREF_U16(addr + 6, 0) +#define FFI_TYPE__ELEMENTS(addr) DEREF_U32(addr + 8, 0) + +#elif __SIZEOF_POINTER__ == 8 + +#define FFI_EMSCRIPTEN_ABI FFI_WASM64_EMSCRIPTEN +#define PTR_SIG 'j' + +// DEC_PTR casts a pointer value (comming from Wasm) represented as BigInt (i64) to Number (i53). +// This should be used for a pointer that is expected to be within the i53 range. If the pointer +// value is outside the Number's range, the value will become NaN. +#define DEC_PTR(p) bigintToI53Checked(p) +// ENC_PTR casts a pointer value represented as Number to BigInt (i64) +#define ENC_PTR(p) BigInt(p) + +#define DEREF_PTR(addr, offset) DEREF_U64(addr, offset) +#define DEREF_PTR_NUMBER(addr, offset) DEC_PTR(DEREF_PTR(addr, offset)) + +CHECK_FIELD_OFFSET(ffi_cif, abi, 0); +CHECK_FIELD_OFFSET(ffi_cif, nargs, 4); +CHECK_FIELD_OFFSET(ffi_cif, arg_types, 8); +CHECK_FIELD_OFFSET(ffi_cif, rtype, 16); +CHECK_FIELD_OFFSET(ffi_cif, flags, 28); +CHECK_FIELD_OFFSET(ffi_cif, nfixedargs, 32); + +#define CIF__ABI(addr) DEREF_U32(addr, 0) +#define CIF__NARGS(addr) DEREF_U32(addr + 4, 0) +#define CIF__ARGTYPES(addr) DEREF_U64(addr + 8, 0) +#define CIF__RTYPE(addr) DEREF_U64(addr + 16, 0) +#define CIF__FLAGS(addr) DEREF_U32(addr + 28, 0) +#define CIF__NFIXEDARGS(addr) DEREF_U32(addr + 32, 0) + +CHECK_FIELD_OFFSET(ffi_type, size, 0); +CHECK_FIELD_OFFSET(ffi_type, alignment, 8); +CHECK_FIELD_OFFSET(ffi_type, type, 10); +CHECK_FIELD_OFFSET(ffi_type, elements, 16); + +#define FFI_TYPE__SIZE(addr) DEREF_U64(addr, 0) +#define FFI_TYPE__ALIGN(addr) DEREF_U16(addr + 8, 0) +#define FFI_TYPE__TYPEID(addr) DEREF_U16(addr + 10, 0) +#define FFI_TYPE__ELEMENTS(addr) DEREF_U64(addr + 16, 0) + +#else +#error "Unknown pointer size" +#endif + +#define ALIGN_ADDRESS(addr, align) (addr &= (~((align) - 1))) +#define STACK_ALLOC(stack, size, align) ((stack -= (size)), ALIGN_ADDRESS(stack, align)) + +// Most wasm runtimes support at most 1000 Js trampoline args. +#define MAX_ARGS 1000 + +#include + +#define VARARGS_FLAG 1 + +#define FFI_OK_MACRO 0 +_Static_assert(FFI_OK_MACRO == FFI_OK, "FFI_OK must be 0"); + +#define FFI_BAD_TYPEDEF_MACRO 1 +_Static_assert(FFI_BAD_TYPEDEF_MACRO == FFI_BAD_TYPEDEF, "FFI_BAD_TYPEDEF must be 1"); + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + if (cif->abi != FFI_EMSCRIPTEN_ABI) + return FFI_BAD_ABI; + // This is called after ffi_prep_cif_machdep_var so we need to avoid + // overwriting cif->nfixedargs. + if (!(cif->flags & VARARGS_FLAG)) + cif->nfixedargs = cif->nargs; + if (cif->nargs > MAX_ARGS) + return FFI_BAD_TYPEDEF; + if (cif->rtype->type == FFI_TYPE_COMPLEX) + return FFI_BAD_TYPEDEF; + // If they put the COMPLEX type into a struct we won't notice, but whatever. + for (int i = 0; i < cif->nargs; i++) + if (cif->arg_types[i]->type == FFI_TYPE_COMPLEX) + return FFI_BAD_TYPEDEF; + return FFI_OK; +} + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned nfixedargs, unsigned ntotalargs) +{ + cif->flags |= VARARGS_FLAG; + cif->nfixedargs = nfixedargs; + // The varargs takes up one extra argument + if (cif->nfixedargs + 1 > MAX_ARGS) + return FFI_BAD_TYPEDEF; + return FFI_OK; +} + +/** + * A Javascript helper function. This takes an argument typ which is a wasm + * pointer to an ffi_type object. It returns a pair a type and a type id. + * + * - If it is not a struct, return its type and its typeid field. + * - If it is a struct of size >= 2, return the type and its typeid (which + * will be FFI_TYPE_STRUCT) + * - If it is a struct of size 0, return FFI_TYPE_VOID (????? this is broken) + * - If it is a struct of size 1, replace it with the single field and apply + * the same logic again to that. + * + * By always unboxing structs up front, we can avoid messy casework later. + */ +EM_JS_MACROS( +void, +unbox_small_structs, (ffi_type type_ptr), { + type_ptr = DEC_PTR(type_ptr); + var type_id = FFI_TYPE__TYPEID(type_ptr); + while (type_id === FFI_TYPE_STRUCT) { + // Don't unbox single element structs if they are bigger than 16 bytes. This + // is a work around for the fact that Python will give incorrect values for + // the size of the field in these cases: it says that the struct has pointer + // size and alignment and are of type pointer, even though it is more + // accurately a struct and has a larger size. Keeping it as a struct here + // will let us get the ABI right (which is in fact that the true argument is + // a pointer to the stack... so maybe Python issn't so wrong??) + // + // See the Python comment here: + // https://github.com/python/cpython/blob/a16a9f978f42b8a09297c1efbf33877f6388c403/Modules/_ctypes/stgdict.c#L718-L779 + if (DEC_PTR(FFI_TYPE__SIZE(type_ptr)) > 16) { + break; + } + var elements = DEC_PTR(FFI_TYPE__ELEMENTS(type_ptr)); + var first_element = DEREF_PTR_NUMBER(elements, 0); + if (first_element === 0) { + type_id = FFI_TYPE_VOID; + break; + } else if (DEREF_PTR_NUMBER(elements, 1) === 0) { + type_ptr = first_element; + type_id = FFI_TYPE__TYPEID(first_element); + } else { + break; + } + } + return [type_ptr, type_id]; +}) + +EM_JS_MACROS( +void, +ffi_call_js, (ffi_cif *cif, ffi_fp fn, void *rvalue, void **avalue), +{ + cif = DEC_PTR(cif); + fn = DEC_PTR(fn); + rvalue = DEC_PTR(rvalue); + avalue = DEC_PTR(avalue); + var abi = CIF__ABI(cif); + var nargs = CIF__NARGS(cif); + var nfixedargs = CIF__NFIXEDARGS(cif); + var arg_types_ptr = DEC_PTR(CIF__ARGTYPES(cif)); + var flags = CIF__FLAGS(cif); + var rtype_unboxed = unbox_small_structs(CIF__RTYPE(cif)); + var rtype_ptr = rtype_unboxed[0]; + var rtype_id = rtype_unboxed[1]; + var orig_stack_ptr = stackSave(); + var cur_stack_ptr = orig_stack_ptr; + + var args = []; + // Does our onwards call return by argument or normally? We return by argument + // no matter what. + var ret_by_arg = false; + + if (rtype_id === FFI_TYPE_COMPLEX) { + throw new Error('complex ret marshalling nyi'); + } + if (rtype_id < 0 || rtype_id > FFI_TYPE_LAST) { + throw new Error('Unexpected rtype ' + rtype_id); + } + // If the return type is a struct with multiple entries or a long double, the + // function takes an extra first argument which is a pointer to return value. + // Conveniently, we've already received a pointer to return value, so we can + // just use this. We also mark a flag that we don't need to convert the return + // value of the dynamic call back to C. + if (rtype_id === FFI_TYPE_LONGDOUBLE || rtype_id === FFI_TYPE_STRUCT) { + args.push(ENC_PTR(rvalue)); + ret_by_arg = true; + } + + // Accumulate a Javascript list of arguments for the Javascript wrapper for + // the wasm function. The Javascript wrapper does a type conversion from + // Javascript to C automatically, here we manually do the inverse conversion + // from C to Javascript. + for (var i = 0; i < nfixedargs; i++) { + var arg_ptr = DEREF_PTR_NUMBER(avalue, i); + var arg_unboxed = unbox_small_structs(DEREF_PTR(arg_types_ptr, i)); + var arg_type_ptr = arg_unboxed[0]; + var arg_type_id = arg_unboxed[1]; + + // It's okay here to always use unsigned integers as long as the size is 32 + // or 64 bits. Smaller sizes get extended to 32 bits differently according + // to whether they are signed or unsigned. + switch (arg_type_id) { + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + args.push(DEREF_U32(arg_ptr, 0)); + break; + case FFI_TYPE_FLOAT: + args.push(DEREF_F32(arg_ptr, 0)); + break; + case FFI_TYPE_DOUBLE: + args.push(DEREF_F64(arg_ptr, 0)); + break; + case FFI_TYPE_UINT8: + args.push(DEREF_U8(arg_ptr, 0)); + break; + case FFI_TYPE_SINT8: + args.push(DEREF_S8(arg_ptr, 0)); + break; + case FFI_TYPE_UINT16: + args.push(DEREF_U16(arg_ptr, 0)); + break; + case FFI_TYPE_SINT16: + args.push(DEREF_S16(arg_ptr, 0)); + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + args.push(DEREF_U64(arg_ptr, 0)); + break; + case FFI_TYPE_LONGDOUBLE: + // long double is passed as a pair of BigInts. + args.push(DEREF_U64(arg_ptr, 0)); + args.push(DEREF_U64(arg_ptr, 1)); + break; + case FFI_TYPE_STRUCT: + // Nontrivial structs are passed by pointer. + // Have to copy the struct onto the stack though because C ABI says it's + // call by value. + var size = DEC_PTR(FFI_TYPE__SIZE(arg_type_ptr)); + var align = FFI_TYPE__ALIGN(arg_type_ptr); + STACK_ALLOC(cur_stack_ptr, size, align); + HEAP8.subarray(cur_stack_ptr, cur_stack_ptr+size).set(HEAP8.subarray(arg_ptr, arg_ptr + size)); + args.push(ENC_PTR(cur_stack_ptr)); + break; + case FFI_TYPE_POINTER: + args.push(DEREF_PTR(arg_ptr, 0)); + break; + case FFI_TYPE_COMPLEX: + throw new Error('complex marshalling nyi'); + default: + throw new Error('Unexpected type ' + arg_type_id); + } + } + + // Wasm functions can't directly manipulate the callstack, so varargs + // arguments have to go on a separate stack. A varags function takes one extra + // argument which is a pointer to where on the separate stack the args are + // located. Because stacks are allocated backwards, we have to loop over the + // varargs backwards. + // + // We don't have any way of knowing how many args were actually passed, so we + // just always copy extra nonsense past the end. The ownwards call will know + // not to look at it. + if (flags & VARARGS_FLAG) { + var struct_arg_info = []; + for (var i = nargs - 1; i >= nfixedargs; i--) { + var arg_ptr = DEREF_PTR_NUMBER(avalue, i); + var arg_unboxed = unbox_small_structs(DEREF_PTR(arg_types_ptr, i)); + var arg_type_ptr = arg_unboxed[0]; + var arg_type_id = arg_unboxed[1]; + switch (arg_type_id) { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + STACK_ALLOC(cur_stack_ptr, 1, 1); + DEREF_U8(cur_stack_ptr, 0) = DEREF_U8(arg_ptr, 0); + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + STACK_ALLOC(cur_stack_ptr, 2, 2); + DEREF_U16(cur_stack_ptr, 0) = DEREF_U16(arg_ptr, 0); + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_FLOAT: + STACK_ALLOC(cur_stack_ptr, 4, 4); + DEREF_U32(cur_stack_ptr, 0) = DEREF_U32(arg_ptr, 0); + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + STACK_ALLOC(cur_stack_ptr, 8, 8); + DEREF_U32(cur_stack_ptr, 0) = DEREF_U32(arg_ptr, 0); + DEREF_U32(cur_stack_ptr, 1) = DEREF_U32(arg_ptr, 1); + break; + case FFI_TYPE_LONGDOUBLE: + STACK_ALLOC(cur_stack_ptr, 16, 8); + DEREF_U32(cur_stack_ptr, 0) = DEREF_U32(arg_ptr, 0); + DEREF_U32(cur_stack_ptr, 1) = DEREF_U32(arg_ptr, 1); + DEREF_U32(cur_stack_ptr, 2) = DEREF_U32(arg_ptr, 2); + DEREF_U32(cur_stack_ptr, 3) = DEREF_U32(arg_ptr, 3); + break; + case FFI_TYPE_STRUCT: + // Again, struct must be passed by pointer. + // But ABI is by value, so have to copy struct onto stack. + // Currently arguments are going onto stack so we can't put it there now. Come back for this. + STACK_ALLOC(cur_stack_ptr, __SIZEOF_POINTER__, __SIZEOF_POINTER__); + struct_arg_info.push([cur_stack_ptr, arg_ptr, DEC_PTR(FFI_TYPE__SIZE(arg_type_ptr)), FFI_TYPE__ALIGN(arg_type_ptr)]); + break; + case FFI_TYPE_POINTER: + STACK_ALLOC(cur_stack_ptr, __SIZEOF_POINTER__, __SIZEOF_POINTER__); + DEREF_PTR(cur_stack_ptr, 0) = DEREF_PTR(arg_ptr, 0); + break; + case FFI_TYPE_COMPLEX: + throw new Error('complex arg marshalling nyi'); + default: + throw new Error('Unexpected argtype ' + arg_type_id); + } + } + // extra normal argument which is the pointer to the varargs. + args.push(ENC_PTR(cur_stack_ptr)); + // Now allocate variable struct args on stack too. + for (var i = 0; i < struct_arg_info.length; i++) { + var struct_info = struct_arg_info[i]; + var arg_target = struct_info[0]; + var arg_ptr = struct_info[1]; + var size = struct_info[2]; + var align = struct_info[3]; + STACK_ALLOC(cur_stack_ptr, size, align); + HEAP8.subarray(cur_stack_ptr, cur_stack_ptr+size).set(HEAP8.subarray(arg_ptr, arg_ptr + size)); + DEREF_PTR(arg_target, 0) = ENC_PTR(cur_stack_ptr); + } + } + stackRestore(cur_stack_ptr); + stackAlloc(0); // stackAlloc enforces alignment invariants on the stack pointer + LOG_DEBUG("CALL_FUNC_PTR", "fn:", fn, "args:", args); + var result = getWasmTableEntry(fn).apply(null, args); + // Put the stack pointer back (we moved it if there were any struct args or we + // made a varargs call) + stackRestore(orig_stack_ptr); + + // We need to return by argument. If return value was a nontrivial struct or + // long double, the onwards call already put the return value in rvalue + if (ret_by_arg) { + return; + } + + // Otherwise the result was automatically converted from C into Javascript and + // we need to manually convert it back to C. + switch (rtype_id) { + case FFI_TYPE_VOID: + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + DEREF_U32(rvalue, 0) = result; + break; + case FFI_TYPE_FLOAT: + DEREF_F32(rvalue, 0) = result; + break; + case FFI_TYPE_DOUBLE: + DEREF_F64(rvalue, 0) = result; + break; + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + DEREF_U8(rvalue, 0) = result; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + DEREF_U16(rvalue, 0) = result; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + DEREF_U64(rvalue, 0) = result; + break; + case FFI_TYPE_POINTER: + DEREF_PTR(rvalue, 0) = result; + break; + case FFI_TYPE_COMPLEX: + throw new Error('complex ret marshalling nyi'); + default: + throw new Error('Unexpected rtype ' + rtype_id); + } +}); + +void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { + ffi_call_js(cif, fn, rvalue, avalue); +} + +#if __SIZEOF_POINTER__ == 4 + +CHECK_FIELD_OFFSET(ffi_closure, ftramp, 4*0); +CHECK_FIELD_OFFSET(ffi_closure, cif, 4*1); +CHECK_FIELD_OFFSET(ffi_closure, fun, 4*2); +CHECK_FIELD_OFFSET(ffi_closure, user_data, 4*3); + +#define CLOSURE__wrapper(addr) DEREF_U32(addr, 0) +#define CLOSURE__cif(addr) DEREF_U32(addr, 1) +#define CLOSURE__fun(addr) DEREF_U32(addr, 2) +#define CLOSURE__user_data(addr) DEREF_U32(addr, 3) + +#elif __SIZEOF_POINTER__ == 8 + +CHECK_FIELD_OFFSET(ffi_closure, ftramp, 0); +CHECK_FIELD_OFFSET(ffi_closure, cif, 8); +CHECK_FIELD_OFFSET(ffi_closure, fun, 16); +CHECK_FIELD_OFFSET(ffi_closure, user_data, 24); + +#define CLOSURE__wrapper(addr) DEREF_U64(addr, 0) +#define CLOSURE__cif(addr) DEREF_U64(addr, 1) +#define CLOSURE__fun(addr) DEREF_U64(addr, 2) +#define CLOSURE__user_data(addr) DEREF_U64(addr, 3) + +#else +#error "Unknown pointer size" +#endif + +EM_JS_MACROS(void *, ffi_closure_alloc_js, (size_t size, void **code), { + size = DEC_PTR(size); + code = DEC_PTR(code); + var closure = _malloc(size); + var index = getEmptyTableSlot(); + DEREF_PTR(code, 0) = ENC_PTR(index); + CLOSURE__wrapper(closure) = ENC_PTR(index); + return ENC_PTR(closure); +}) + +void * __attribute__ ((visibility ("default"))) +ffi_closure_alloc(size_t size, void **code) { + return ffi_closure_alloc_js(size, code); +} + +EM_JS_MACROS(void, ffi_closure_free_js, (void *closure), { + closure = DEC_PTR(closure); + var index = DEC_PTR(CLOSURE__wrapper(closure)); + freeTableIndexes.push(index); + _free(closure); +}) + +void __attribute__ ((visibility ("default"))) +ffi_closure_free(void *closure) { + return ffi_closure_free_js(closure); +} + +EM_JS_MACROS( +ffi_status, +ffi_prep_closure_loc_js, +(ffi_closure *closure, ffi_cif *cif, void *fun, void *user_data, void *codeloc), +{ + closure = DEC_PTR(closure); + cif = DEC_PTR(cif); + fun = DEC_PTR(fun); + user_data = DEC_PTR(user_data); + codeloc = DEC_PTR(codeloc); + var abi = CIF__ABI(cif); + var nargs = CIF__NARGS(cif); + var nfixedargs = CIF__NFIXEDARGS(cif); + var arg_types_ptr = DEC_PTR(CIF__ARGTYPES(cif)); + var rtype_unboxed = unbox_small_structs(CIF__RTYPE(cif)); + var rtype_ptr = rtype_unboxed[0]; + var rtype_id = rtype_unboxed[1]; + + // First construct the signature of the javascript trampoline we are going to create. + // Important: this is the signature for calling us, the onward call always has sig viiii. + var sig; + var ret_by_arg = false; + switch (rtype_id) { + case FFI_TYPE_VOID: + sig = 'v'; + break; + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + // Return via a first pointer argument. + sig = 'v' + PTR_SIG; + ret_by_arg = true; + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + sig = 'i'; + break; + case FFI_TYPE_FLOAT: + sig = 'f'; + break; + case FFI_TYPE_DOUBLE: + sig = 'd'; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + sig = 'j'; + break; + case FFI_TYPE_POINTER: + sig = PTR_SIG; + break; + case FFI_TYPE_COMPLEX: + throw new Error('complex ret marshalling nyi'); + default: + throw new Error('Unexpected rtype ' + rtype_id); + } + var unboxed_arg_type_id_list = []; + var unboxed_arg_type_info_list = []; + for (var i = 0; i < nargs; i++) { + var arg_unboxed = unbox_small_structs(DEREF_PTR(arg_types_ptr, i)); + var arg_type_ptr = arg_unboxed[0]; + var arg_type_id = arg_unboxed[1]; + unboxed_arg_type_id_list.push(arg_type_id); + unboxed_arg_type_info_list.push([DEC_PTR(FFI_TYPE__SIZE(arg_type_ptr)), FFI_TYPE__ALIGN(arg_type_ptr)]); + } + for (var i = 0; i < nfixedargs; i++) { + switch (unboxed_arg_type_id_list[i]) { + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + sig += 'i'; + break; + case FFI_TYPE_FLOAT: + sig += 'f'; + break; + case FFI_TYPE_DOUBLE: + sig += 'd'; + break; + case FFI_TYPE_LONGDOUBLE: + sig += 'jj'; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + sig += 'j'; + break; + case FFI_TYPE_STRUCT: + case FFI_TYPE_POINTER: + sig += PTR_SIG; + break; + case FFI_TYPE_COMPLEX: + throw new Error('complex marshalling nyi'); + default: + throw new Error('Unexpected argtype ' + arg_type_id); + } + } + if (nfixedargs < nargs) { + // extra pointer to varargs stack + sig += PTR_SIG; + } + LOG_DEBUG("CREATE_CLOSURE", "sig:", sig); + function trampoline() { + var args = Array.prototype.slice.call(arguments); + var size = 0; + var orig_stack_ptr = stackSave(); + var cur_ptr = orig_stack_ptr; + var ret_ptr; + var jsarg_idx = 0; + // Should we return by argument or not? The onwards call returns by argument + // no matter what. (Warning: ret_by_arg means the opposite in ffi_call) + if (ret_by_arg) { + ret_ptr = args[jsarg_idx++]; + } else { + // We might return 4 bytes or 8 bytes, allocate 8 just in case. + STACK_ALLOC(cur_ptr, 8, 8); + ret_ptr = cur_ptr; + } + cur_ptr -= __SIZEOF_POINTER__ * nargs; + var args_ptr = cur_ptr; + var carg_idx = 0; + // Here we either have the actual argument, or a pair of BigInts for long + // double, or a pointer to struct. We have to store into args_ptr[i] a + // pointer to the ith argument. If the argument is a struct, just store the + // pointer. Otherwise allocate stack space and copy the js argument onto the + // stack. + for (; carg_idx < nfixedargs; carg_idx++) { + // jsarg_idx might start out as 0 or 1 depending on ret_by_arg + // it advances an extra time for long double + var cur_arg = args[jsarg_idx++]; + var arg_type_info = unboxed_arg_type_info_list[carg_idx]; + var arg_size = arg_type_info[0]; + var arg_align = arg_type_info[1]; + var arg_type_id = unboxed_arg_type_id_list[carg_idx]; + switch (arg_type_id) { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + // Bad things happen if we don't align to 4 here + STACK_ALLOC(cur_ptr, 1, 4); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_U8(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + // Bad things happen if we don't align to 4 here + STACK_ALLOC(cur_ptr, 2, 4); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_U16(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + STACK_ALLOC(cur_ptr, 4, 4); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_U32(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_STRUCT: + // cur_arg is already a pointer to struct + // copy it onto stack to pass by value + STACK_ALLOC(cur_ptr, arg_size, arg_align); + HEAP8.subarray(cur_ptr, cur_ptr + arg_size).set(HEAP8.subarray(DEC_PTR(cur_arg), DEC_PTR(cur_arg) + arg_size)); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + break; + case FFI_TYPE_FLOAT: + STACK_ALLOC(cur_ptr, 4, 4); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_F32(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_DOUBLE: + STACK_ALLOC(cur_ptr, 8, 8); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_F64(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + STACK_ALLOC(cur_ptr, 8, 8); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_U64(cur_ptr, 0) = cur_arg; + break; + case FFI_TYPE_LONGDOUBLE: + STACK_ALLOC(cur_ptr, 16, 8); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_U64(cur_ptr, 0) = cur_arg; + cur_arg = args[jsarg_idx++]; + DEREF_U64(cur_ptr, 1) = cur_arg; + break; + case FFI_TYPE_POINTER: + STACK_ALLOC(cur_ptr, __SIZEOF_POINTER__, __SIZEOF_POINTER__); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + DEREF_PTR(cur_ptr, 0) = cur_arg; + break; + } + } + // If its a varargs call, last js argument is a pointer to the varargs. + var varargs = DEC_PTR(args[args.length - 1]); + // We have no way of knowing how many varargs were actually provided, this + // fills the rest of the stack space allocated with nonsense. The onward + // call will know to ignore the nonsense. + + // We either have a pointer to the argument if the argument is not a struct + // or a pointer to pointer to struct. We need to store a pointer to the + // argument into args_ptr[i] + for (; carg_idx < nargs; carg_idx++) { + var arg_type_id = unboxed_arg_type_id_list[carg_idx]; + var arg_type_info = unboxed_arg_type_info_list[carg_idx]; + var arg_size = arg_type_info[0]; + var arg_align = arg_type_info[1]; + if (arg_type_id === FFI_TYPE_STRUCT) { + // In this case varargs is a pointer to pointer to struct so we need to + // deref once + var struct_ptr = DEREF_PTR_NUMBER(varargs, 0); + STACK_ALLOC(cur_ptr, arg_size, arg_align); + HEAP8.subarray(cur_ptr, cur_ptr + arg_size).set(HEAP8.subarray(struct_ptr, struct_ptr + arg_size)); + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(cur_ptr); + } else { + DEREF_PTR(args_ptr, carg_idx) = ENC_PTR(varargs); + } + varargs += __SIZEOF_POINTER__; + } + stackRestore(cur_ptr); + stackAlloc(0); // stackAlloc enforces alignment invariants on the stack pointer + LOG_DEBUG("CALL_CLOSURE", "closure:", closure, "fptr", CLOSURE__fun(closure), "cif", CLOSURE__cif(closure)); + getWasmTableEntry(CLOSURE__fun(closure))( + CLOSURE__cif(closure), ENC_PTR(ret_ptr), ENC_PTR(args_ptr), + CLOSURE__user_data(closure) + ); + stackRestore(orig_stack_ptr); + + // If we aren't supposed to return by argument, figure out what to return. + if (!ret_by_arg) { + switch (sig[0]) { + case 'i': + return DEREF_U32(ret_ptr, 0); + case 'j': + return DEREF_U64(ret_ptr, 0); + case 'd': + return DEREF_F64(ret_ptr, 0); + case 'f': + return DEREF_F32(ret_ptr, 0); + } + } + } + try { + var wasm_trampoline = convertJsFunctionToWasm(trampoline, sig); + } catch(e) { + return FFI_BAD_TYPEDEF_MACRO; + } + setWasmTableEntry(codeloc, wasm_trampoline); + CLOSURE__cif(closure) = ENC_PTR(cif); + CLOSURE__fun(closure) = ENC_PTR(fun); + CLOSURE__user_data(closure) = ENC_PTR(user_data); + return FFI_OK_MACRO; +}) + +// EM_JS does not correctly handle function pointer arguments, so we need a +// helper +ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, + void (*fun)(ffi_cif *, void *, void **, void *), + void *user_data, void *codeloc) { + if (cif->abi != FFI_EMSCRIPTEN_ABI) + return FFI_BAD_ABI; + return ffi_prep_closure_loc_js(closure, cif, (void *)fun, user_data, + codeloc); +} diff --git a/deps/libffi/src/wasm/ffitarget.h b/deps/libffi/src/wasm/ffitarget.h new file mode 100644 index 00000000000000..10041c00d74f66 --- /dev/null +++ b/deps/libffi/src/wasm/ffitarget.h @@ -0,0 +1,79 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2018-2023 Hood Chatham, Brion Vibber, Kleis Auke Wolthuizen, and others. + + Target configuration macros for wasm32. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +// TODO: https://github.com/emscripten-core/emscripten/issues/9868 +typedef void (*ffi_fp)(void); + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, +#if __SIZEOF_POINTER__ == 4 + FFI_WASM32, // "raw", no structures, varargs, or closures (not implemented!) + FFI_WASM32_EMSCRIPTEN, // structures, varargs, and split 64-bit params +#elif __SIZEOF_POINTER__ == 8 + FFI_WASM64, + FFI_WASM64_EMSCRIPTEN, +#else +#error "Unknown pointer size" +#endif + FFI_LAST_ABI, +#if __SIZEOF_POINTER__ == 4 +#ifdef __EMSCRIPTEN__ + FFI_DEFAULT_ABI = FFI_WASM32_EMSCRIPTEN +#else + FFI_DEFAULT_ABI = FFI_WASM32 +#endif +#elif __SIZEOF_POINTER__ == 8 +#ifdef __EMSCRIPTEN__ + FFI_DEFAULT_ABI = FFI_WASM64_EMSCRIPTEN +#else + FFI_DEFAULT_ABI = FFI_WASM64 +#endif +#else +#error "Unknown pointer size" +#endif +} ffi_abi; + +#define FFI_CLOSURES 1 +// #define FFI_GO_CLOSURES 0 +#define FFI_TRAMPOLINE_SIZE 4 +// #define FFI_NATIVE_RAW_API 0 +#define FFI_TARGET_SPECIFIC_VARIADIC 1 +#define FFI_EXTRA_CIF_FIELDS unsigned int nfixedargs + +#endif diff --git a/deps/libffi/src/x86/asmnames.h b/deps/libffi/src/x86/asmnames.h new file mode 100644 index 00000000000000..7551021e17ebab --- /dev/null +++ b/deps/libffi/src/x86/asmnames.h @@ -0,0 +1,30 @@ +#ifndef ASMNAMES_H +#define ASMNAMES_H + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) +#ifdef __USER_LABEL_PREFIX__ +# define C(X) C1(__USER_LABEL_PREFIX__, X) +#else +# define C(X) X +#endif + +#ifdef __APPLE__ +# define L(X) C1(L, X) +#else +# define L(X) C1(.L, X) +#endif + +#if defined(__ELF__) && defined(__PIC__) +# define PLT(X) X@PLT +#else +# define PLT(X) X +#endif + +#ifdef __ELF__ +# define ENDF(X) .type X,@function; .size X, . - X +#else +# define ENDF(X) +#endif + +#endif /* ASMNAMES_H */ diff --git a/deps/libffi/src/x86/ffi.c b/deps/libffi/src/x86/ffi.c new file mode 100644 index 00000000000000..6862533f282a29 --- /dev/null +++ b/deps/libffi/src/x86/ffi.c @@ -0,0 +1,835 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2017, 2022 Anthony Green + Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. + Copyright (c) 2002 Ranjit Mathew + Copyright (c) 2002 Bo Thorsen + Copyright (c) 2002 Roger Sayle + Copyright (C) 2008, 2010 Free Software Foundation, Inc. + + x86 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#if defined(__i386__) || defined(_M_IX86) +#include +#include +#include +#include +#include +#include "internal.h" + +/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE; + all further uses in this file will refer to the 80-bit type. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE +# if FFI_TYPE_LONGDOUBLE != 4 +# error FFI_TYPE_LONGDOUBLE out of date +# endif +#else +# undef FFI_TYPE_LONGDOUBLE +# define FFI_TYPE_LONGDOUBLE 4 +#endif + +#if defined(__GNUC__) && !defined(__declspec) +# define __declspec(x) __attribute__((x)) +#endif + +#if defined(_MSC_VER) && defined(_M_IX86) +/* Stack is not 16-byte aligned on Windows. */ +#define STACK_ALIGN(bytes) (bytes) +#else +#define STACK_ALIGN(bytes) FFI_ALIGN (bytes, 16) +#endif + +/* Perform machine dependent cif processing. */ +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep(ffi_cif *cif) +{ + size_t bytes = 0; + int i, n, flags, cabi = cif->abi; + + switch (cabi) + { + case FFI_SYSV: + case FFI_STDCALL: + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_MS_CDECL: + case FFI_PASCAL: + case FFI_REGISTER: + break; + default: + return FFI_BAD_ABI; + } + + switch (cif->rtype->type) + { + case FFI_TYPE_VOID: + flags = X86_RET_VOID; + break; + case FFI_TYPE_FLOAT: + flags = X86_RET_FLOAT; + break; + case FFI_TYPE_DOUBLE: + flags = X86_RET_DOUBLE; + break; + case FFI_TYPE_LONGDOUBLE: + flags = X86_RET_LDOUBLE; + break; + case FFI_TYPE_UINT8: + flags = X86_RET_UINT8; + break; + case FFI_TYPE_UINT16: + flags = X86_RET_UINT16; + break; + case FFI_TYPE_SINT8: + flags = X86_RET_SINT8; + break; + case FFI_TYPE_SINT16: + flags = X86_RET_SINT16; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + flags = X86_RET_INT32; + break; + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + flags = X86_RET_INT64; + break; + case FFI_TYPE_STRUCT: + { +#if defined(X86_WIN32) || defined(X86_DARWIN) + size_t size = cif->rtype->size; + if (size == 1) + flags = X86_RET_STRUCT_1B; + else if (size == 2) + flags = X86_RET_STRUCT_2B; + else if (size == 4) + flags = X86_RET_INT32; + else if (size == 8) + flags = X86_RET_INT64; + else +#endif + { + do_struct: + switch (cabi) + { + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_STDCALL: + case FFI_MS_CDECL: + flags = X86_RET_STRUCTARG; + break; + default: + flags = X86_RET_STRUCTPOP; + break; + } + /* Allocate space for return value pointer. */ + bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG); + } + } + break; + case FFI_TYPE_COMPLEX: + switch (cif->rtype->elements[0]->type) + { + case FFI_TYPE_DOUBLE: + case FFI_TYPE_LONGDOUBLE: + case FFI_TYPE_SINT64: + case FFI_TYPE_UINT64: + goto do_struct; + case FFI_TYPE_FLOAT: + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + flags = X86_RET_INT64; + break; + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + flags = X86_RET_INT32; + break; + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + flags = X86_RET_STRUCT_2B; + break; + default: + return FFI_BAD_TYPEDEF; + } + break; + default: + return FFI_BAD_TYPEDEF; + } + cif->flags = flags; + + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *t = cif->arg_types[i]; + +#if defined(X86_WIN32) + if (cabi == FFI_STDCALL) + bytes = FFI_ALIGN (bytes, FFI_SIZEOF_ARG); + else +#endif + bytes = FFI_ALIGN (bytes, t->alignment); + bytes += FFI_ALIGN (t->size, FFI_SIZEOF_ARG); + } + cif->bytes = bytes; + + return FFI_OK; +} + +static ffi_arg +extend_basic_type(void *arg, int type) +{ + switch (type) + { + case FFI_TYPE_SINT8: + return *(SINT8 *)arg; + case FFI_TYPE_UINT8: + return *(UINT8 *)arg; + case FFI_TYPE_SINT16: + return *(SINT16 *)arg; + case FFI_TYPE_UINT16: + return *(UINT16 *)arg; + + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT32: + case FFI_TYPE_POINTER: + case FFI_TYPE_FLOAT: + return *(UINT32 *)arg; + + default: + abort(); + } +} + +struct call_frame +{ + void *ebp; /* 0 */ + void *retaddr; /* 4 */ + void (*fn)(void); /* 8 */ + int flags; /* 12 */ + void *rvalue; /* 16 */ + unsigned regs[3]; /* 20-28 */ +}; + +struct abi_params +{ + int dir; /* parameter growth direction */ + int static_chain; /* the static chain register used by gcc */ + int nregs; /* number of register parameters */ + int regs[3]; +}; + +static const struct abi_params abi_params[FFI_LAST_ABI] = { + [FFI_SYSV] = { 1, R_ECX, 0 }, + [FFI_THISCALL] = { 1, R_EAX, 1, { R_ECX } }, + [FFI_FASTCALL] = { 1, R_EAX, 2, { R_ECX, R_EDX } }, + [FFI_STDCALL] = { 1, R_ECX, 0 }, + [FFI_PASCAL] = { -1, R_ECX, 0 }, + /* ??? No defined static chain; gcc does not support REGISTER. */ + [FFI_REGISTER] = { -1, R_ECX, 3, { R_EAX, R_EDX, R_ECX } }, + [FFI_MS_CDECL] = { 1, R_ECX, 0 } +}; + +#ifdef HAVE_FASTCALL + #ifdef _MSC_VER + #define FFI_DECLARE_FASTCALL __fastcall + #else + #define FFI_DECLARE_FASTCALL __declspec(fastcall) + #endif +#else + #define FFI_DECLARE_FASTCALL +#endif + +extern void FFI_DECLARE_FASTCALL ffi_call_i386(struct call_frame *, char *) FFI_HIDDEN; + +/* We perform some black magic here to use some of the parent's stack frame in + * ffi_call_i386() that breaks with the MSVC compiler with the /RTCs or /GZ + * flags. Disable the 'Stack frame run time error checking' for this function + * so we don't hit weird exceptions in debug builds. */ +#if defined(_MSC_VER) +#pragma runtime_checks("s", off) +#endif +/* n.b. ffi_call_unix64 will steal the alloca'd `stack` variable here for use + _as its own stack_ - so we need to compile this function without ASAN */ +FFI_ASAN_NO_SANITIZE +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + size_t rsize, bytes; + struct call_frame *frame; + char *stack, *argp; + ffi_type **arg_types; + int flags, cabi, i, n, dir, narg_reg; + const struct abi_params *pabi; + + flags = cif->flags; + cabi = cif->abi; + pabi = &abi_params[cabi]; + dir = pabi->dir; + + rsize = 0; + if (rvalue == NULL) + { + switch (flags) + { + case X86_RET_FLOAT: + case X86_RET_DOUBLE: + case X86_RET_LDOUBLE: + case X86_RET_STRUCTPOP: + case X86_RET_STRUCTARG: + /* The float cases need to pop the 387 stack. + The struct cases need to pass a valid pointer to the callee. */ + rsize = cif->rtype->size; + break; + default: + /* We can pretend that the callee returns nothing. */ + flags = X86_RET_VOID; + break; + } + } + + bytes = STACK_ALIGN (cif->bytes); + stack = alloca(bytes + sizeof(*frame) + rsize); + argp = (dir < 0 ? stack + bytes : stack); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = fn; + frame->flags = flags; + frame->rvalue = rvalue; + frame->regs[pabi->static_chain] = (unsigned)closure; + + narg_reg = 0; + switch (flags) + { + case X86_RET_STRUCTARG: + /* The pointer is passed as the first argument. */ + if (pabi->nregs > 0) + { + frame->regs[pabi->regs[0]] = (unsigned)rvalue; + narg_reg = 1; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + *(void **)argp = rvalue; + argp += sizeof(void *); + break; + } + + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = arg_types[i]; + void *valp = avalue[i]; + size_t z = ty->size; + int t = ty->type; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT) + { + ffi_arg val = extend_basic_type (valp, t); + + if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs) + frame->regs[pabi->regs[narg_reg++]] = val; + else if (dir < 0) + { + argp -= 4; + *(ffi_arg *)argp = val; + } + else + { + *(ffi_arg *)argp = val; + argp += 4; + } + } + else + { + size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG); + size_t align = FFI_SIZEOF_ARG; + + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer parameters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + + /* Alignment rules for arguments are quite complex. Vectors and + structures with 16 byte alignment get it. Note that long double + on Darwin does have 16 byte alignment, and does not get this + alignment if passed directly; a structure with a long double + inside, however, would get 16 byte alignment. Since libffi does + not support vectors, we need non concern ourselves with other + cases. */ + if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) + align = 16; + + if (dir < 0) + { + /* ??? These reverse argument ABIs are probably too old + to have cared about alignment. Someone should check. */ + argp -= za; + memcpy (argp, valp, z); + } + else + { + argp = (char *)FFI_ALIGN (argp, align); + memcpy (argp, valp, z); + argp += za; + } + } + } + FFI_ASSERT (dir > 0 || argp == stack); + + ffi_call_i386 (frame, stack); +} +#if defined(_MSC_VER) +#pragma runtime_checks("s", restore) +#endif + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#ifdef FFI_GO_CLOSURES +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} +#endif + +/** private members **/ + +void FFI_HIDDEN ffi_closure_i386(void); +void FFI_HIDDEN ffi_closure_STDCALL(void); +void FFI_HIDDEN ffi_closure_REGISTER(void); +#if defined(FFI_EXEC_STATIC_TRAMP) +void FFI_HIDDEN ffi_closure_i386_alt(void); +void FFI_HIDDEN ffi_closure_STDCALL_alt(void); +void FFI_HIDDEN ffi_closure_REGISTER_alt(void); +#endif + +struct closure_frame +{ + unsigned rettemp[4]; /* 0 */ + unsigned regs[3]; /* 16-24 */ + ffi_cif *cif; /* 28 */ + void (*fun)(ffi_cif*,void*,void**,void*); /* 32 */ + void *user_data; /* 36 */ +}; + +int FFI_HIDDEN FFI_DECLARE_FASTCALL +ffi_closure_inner (struct closure_frame *frame, char *stack) +{ + ffi_cif *cif = frame->cif; + int cabi, i, n, flags, dir, narg_reg; + const struct abi_params *pabi; + ffi_type **arg_types; + char *argp; + void *rvalue; + void **avalue; + + cabi = cif->abi; + flags = cif->flags; + narg_reg = 0; + rvalue = frame->rettemp; + pabi = &abi_params[cabi]; + dir = pabi->dir; + argp = (dir < 0 ? stack + STACK_ALIGN (cif->bytes) : stack); + + switch (flags) + { + case X86_RET_STRUCTARG: + if (pabi->nregs > 0) + { + rvalue = (void *)frame->regs[pabi->regs[0]]; + narg_reg = 1; + frame->rettemp[0] = (unsigned)rvalue; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + rvalue = *(void **)argp; + argp += sizeof(void *); + frame->rettemp[0] = (unsigned)rvalue; + break; + } + + n = cif->nargs; + avalue = alloca(sizeof(void *) * n); + + arg_types = cif->arg_types; + for (i = 0; i < n; ++i) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + int t = ty->type; + void *valp; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT) + { + if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs) + valp = &frame->regs[pabi->regs[narg_reg++]]; + else if (dir < 0) + { + argp -= 4; + valp = argp; + } + else + { + valp = argp; + argp += 4; + } + } + else + { + size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG); + size_t align = FFI_SIZEOF_ARG; + + /* See the comment in ffi_call_int. */ + if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) + align = 16; + + /* Issue 434: For thiscall and fastcall, if the paramter passed + as 64-bit integer or struct, all following integer parameters + will be passed on stack. */ + if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL) + && (t == FFI_TYPE_SINT64 + || t == FFI_TYPE_UINT64 + || t == FFI_TYPE_STRUCT)) + narg_reg = 2; + + if (dir < 0) + { + /* ??? These reverse argument ABIs are probably too old + to have cared about alignment. Someone should check. */ + argp -= za; + valp = argp; + } + else + { + argp = (char *)FFI_ALIGN (argp, align); + valp = argp; + argp += za; + } + } + + avalue[i] = valp; + } + + frame->fun (cif, rvalue, avalue, frame->user_data); + + switch (cabi) + { + case FFI_STDCALL: + return flags | (cif->bytes << X86_RET_POP_SHIFT); + case FFI_THISCALL: + case FFI_FASTCALL: + return flags | ((cif->bytes - (narg_reg * FFI_SIZEOF_ARG)) + << X86_RET_POP_SHIFT); + default: + return flags; + } +} + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, + void *codeloc) +{ + char *tramp = closure->tramp; + void (*dest)(void); + int op = 0xb8; /* movl imm, %eax */ + + switch (cif->abi) + { + case FFI_SYSV: + case FFI_MS_CDECL: + dest = ffi_closure_i386; + break; + case FFI_STDCALL: + case FFI_THISCALL: + case FFI_FASTCALL: + case FFI_PASCAL: + dest = ffi_closure_STDCALL; + break; + case FFI_REGISTER: + dest = ffi_closure_REGISTER; + op = 0x68; /* pushl imm */ + break; + default: + return FFI_BAD_ABI; + } + +#if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + if (dest == ffi_closure_i386) + dest = ffi_closure_i386_alt; + else if (dest == ffi_closure_STDCALL) + dest = ffi_closure_STDCALL_alt; + else + dest = ffi_closure_REGISTER_alt; + ffi_tramp_set_parms (closure->ftramp, dest, closure); + goto out; + } +#endif + + /* Initialize the dynamic trampoline. */ + /* endbr32. */ + *(UINT32 *) tramp = 0xfb1e0ff3; + + /* movl or pushl immediate. */ + tramp[4] = op; + *(void **)(tramp + 5) = codeloc; + + /* jmp dest */ + tramp[9] = 0xe9; + *(unsigned *)(tramp + 10) = (unsigned)dest - ((unsigned)codeloc + 14); + +#if defined(FFI_EXEC_STATIC_TRAMP) +out: +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +#ifdef FFI_GO_CLOSURES + +void FFI_HIDDEN ffi_go_closure_EAX(void); +void FFI_HIDDEN ffi_go_closure_ECX(void); +void FFI_HIDDEN ffi_go_closure_STDCALL(void); + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*,void*,void**,void*)) +{ + void (*dest)(void); + + switch (cif->abi) + { + case FFI_SYSV: + case FFI_MS_CDECL: + dest = ffi_go_closure_ECX; + break; + case FFI_THISCALL: + case FFI_FASTCALL: + dest = ffi_go_closure_EAX; + break; + case FFI_STDCALL: + case FFI_PASCAL: + dest = ffi_go_closure_STDCALL; + break; + case FFI_REGISTER: + default: + return FFI_BAD_ABI; + } + + closure->tramp = dest; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#endif /* FFI_GO_CLOSURES */ + +/* ------- Native raw API support -------------------------------- */ + +#if !FFI_NO_RAW_API + +void FFI_HIDDEN ffi_closure_raw_SYSV(void); +void FFI_HIDDEN ffi_closure_raw_THISCALL(void); + +ffi_status +ffi_prep_raw_closure_loc (ffi_raw_closure *closure, + ffi_cif *cif, + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), + void *user_data, + void *codeloc) +{ + char *tramp = closure->tramp; + void (*dest)(void); + int i; + + /* We currently don't support certain kinds of arguments for raw + closures. This should be implemented by a separate assembly + language routine, since it would require argument processing, + something we don't do now for performance. */ + for (i = cif->nargs-1; i >= 0; i--) + switch (cif->arg_types[i]->type) + { + case FFI_TYPE_STRUCT: + case FFI_TYPE_LONGDOUBLE: + return FFI_BAD_TYPEDEF; + } + + switch (cif->abi) + { + case FFI_THISCALL: + dest = ffi_closure_raw_THISCALL; + break; + case FFI_SYSV: + dest = ffi_closure_raw_SYSV; + break; + default: + return FFI_BAD_ABI; + } + + /* movl imm, %eax. */ + tramp[0] = 0xb8; + *(void **)(tramp + 1) = codeloc; + + /* jmp dest */ + tramp[5] = 0xe9; + *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +void +ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue) +{ + size_t rsize, bytes; + struct call_frame *frame; + char *stack, *argp; + ffi_type **arg_types; + int flags, cabi, i, n, narg_reg; + const struct abi_params *pabi; + + flags = cif->flags; + cabi = cif->abi; + pabi = &abi_params[cabi]; + + rsize = 0; + if (rvalue == NULL) + { + switch (flags) + { + case X86_RET_FLOAT: + case X86_RET_DOUBLE: + case X86_RET_LDOUBLE: + case X86_RET_STRUCTPOP: + case X86_RET_STRUCTARG: + /* The float cases need to pop the 387 stack. + The struct cases need to pass a valid pointer to the callee. */ + rsize = cif->rtype->size; + break; + default: + /* We can pretend that the callee returns nothing. */ + flags = X86_RET_VOID; + break; + } + } + + bytes = STACK_ALIGN (cif->bytes); + argp = stack = + (void *)((uintptr_t)alloca(bytes + sizeof(*frame) + rsize + 15) & ~16); + frame = (struct call_frame *)(stack + bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = fn; + frame->flags = flags; + frame->rvalue = rvalue; + + narg_reg = 0; + switch (flags) + { + case X86_RET_STRUCTARG: + /* The pointer is passed as the first argument. */ + if (pabi->nregs > 0) + { + frame->regs[pabi->regs[0]] = (unsigned)rvalue; + narg_reg = 1; + break; + } + /* fallthru */ + case X86_RET_STRUCTPOP: + *(void **)argp = rvalue; + argp += sizeof(void *); + bytes -= sizeof(void *); + break; + } + + arg_types = cif->arg_types; + for (i = 0, n = cif->nargs; narg_reg < pabi->nregs && i < n; i++) + { + ffi_type *ty = arg_types[i]; + size_t z = ty->size; + int t = ty->type; + + if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT && t != FFI_TYPE_FLOAT) + { + ffi_arg val = extend_basic_type (avalue, t); + frame->regs[pabi->regs[narg_reg++]] = val; + z = FFI_SIZEOF_ARG; + } + else + { + memcpy (argp, avalue, z); + z = FFI_ALIGN (z, FFI_SIZEOF_ARG); + argp += z; + } + avalue += z; + bytes -= z; + } + if (i < n) + memcpy (argp, avalue, bytes); + + ffi_call_i386 (frame, stack); +} +#endif /* !FFI_NO_RAW_API */ + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *map_size = X86_TRAMP_MAP_SIZE; + *tramp_size = X86_TRAMP_SIZE; + return &trampoline_code_table; +} +#endif + +#endif /* __i386__ */ diff --git a/deps/libffi/src/x86/ffi64.c b/deps/libffi/src/x86/ffi64.c new file mode 100644 index 00000000000000..1d1b88e049d5e6 --- /dev/null +++ b/deps/libffi/src/x86/ffi64.c @@ -0,0 +1,953 @@ +/* ----------------------------------------------------------------------- + ffi64.c - Copyright (c) 2011, 2018, 2022 Anthony Green + Copyright (c) 2013 The Written Word, Inc. + Copyright (c) 2008, 2010 Red Hat, Inc. + Copyright (c) 2002, 2007 Bo Thorsen + + x86-64 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +#include +#include +#include +#include +#include "internal64.h" + +#ifdef __x86_64__ + +#define MAX_GPR_REGS 6 +#define MAX_SSE_REGS 8 + +#if defined(__INTEL_COMPILER) +#include "xmmintrin.h" +#define UINT128 __m128 +#else +#if defined(__SUNPRO_C) +#include +#define UINT128 __m128i +#else +#define UINT128 __int128_t +#endif +#endif + +union big_int_union +{ + UINT32 i32; + UINT64 i64; + UINT128 i128; +}; + +struct register_args +{ + /* Registers for argument passing. */ + UINT64 gpr[MAX_GPR_REGS]; + union big_int_union sse[MAX_SSE_REGS]; + UINT64 rax; /* ssecount */ + UINT64 r10; /* static chain */ +}; + +extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, + void *raddr, void (*fnaddr)(void)) FFI_HIDDEN; + +/* All reference to register classes here is identical to the code in + gcc/config/i386/i386.c. Do *not* change one without the other. */ + +/* Register class used for passing given 64bit part of the argument. + These represent classes as documented by the PS ABI, with the + exception of SSESF, SSEDF classes, that are basically SSE class, + just gcc will use SF or DFmode move instead of DImode to avoid + reformatting penalties. + + Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves + whenever possible (upper half does contain padding). */ +enum x86_64_reg_class + { + X86_64_NO_CLASS, + X86_64_INTEGER_CLASS, + X86_64_INTEGERSI_CLASS, + X86_64_SSE_CLASS, + X86_64_SSESF_CLASS, + X86_64_SSEDF_CLASS, + X86_64_SSEUP_CLASS, + X86_64_X87_CLASS, + X86_64_X87UP_CLASS, + X86_64_COMPLEX_X87_CLASS, + X86_64_MEMORY_CLASS + }; + +#define MAX_CLASSES 4 + +#define SSE_CLASS_P(X) ((X) >= X86_64_SSE_CLASS && X <= X86_64_SSEUP_CLASS) + +/* x86-64 register passing implementation. See x86-64 ABI for details. Goal + of this code is to classify each 8bytes of incoming argument by the register + class and assign registers accordingly. */ + +/* Return the union class of CLASS1 and CLASS2. + See the x86-64 PS ABI for details. */ + +static enum x86_64_reg_class +merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) +{ + /* Rule #1: If both classes are equal, this is the resulting class. */ + if (class1 == class2) + return class1; + + /* Rule #2: If one of the classes is NO_CLASS, the resulting class is + the other class. */ + if (class1 == X86_64_NO_CLASS) + return class2; + if (class2 == X86_64_NO_CLASS) + return class1; + + /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ + if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) + return X86_64_MEMORY_CLASS; + + /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ + if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) + || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) + return X86_64_INTEGERSI_CLASS; + if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS + || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) + return X86_64_INTEGER_CLASS; + + /* Rule #5: If one of the classes is X87, X87UP, or COMPLEX_X87 class, + MEMORY is used. */ + if (class1 == X86_64_X87_CLASS + || class1 == X86_64_X87UP_CLASS + || class1 == X86_64_COMPLEX_X87_CLASS + || class2 == X86_64_X87_CLASS + || class2 == X86_64_X87UP_CLASS + || class2 == X86_64_COMPLEX_X87_CLASS) + return X86_64_MEMORY_CLASS; + + /* Rule #6: Otherwise class SSE is used. */ + return X86_64_SSE_CLASS; +} + +/* Classify the argument of type TYPE and mode MODE. + CLASSES will be filled by the register class used to pass each word + of the operand. The number of words is returned. In case the parameter + should be passed in memory, 0 is returned. As a special case for zero + sized containers, classes[0] will be NO_CLASS and 1 is returned. + + See the x86-64 PS ABI for details. +*/ +static size_t +classify_argument (ffi_type *type, enum x86_64_reg_class classes[], + size_t byte_offset) +{ + switch (type->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + case FFI_TYPE_POINTER: + do_integer: + { + size_t size = byte_offset + type->size; + + if (size <= 4) + { + classes[0] = X86_64_INTEGERSI_CLASS; + return 1; + } + else if (size <= 8) + { + classes[0] = X86_64_INTEGER_CLASS; + return 1; + } + else if (size <= 12) + { + classes[0] = X86_64_INTEGER_CLASS; + classes[1] = X86_64_INTEGERSI_CLASS; + return 2; + } + else if (size <= 16) + { + classes[0] = classes[1] = X86_64_INTEGER_CLASS; + return 2; + } + else + FFI_ASSERT (0); + } + case FFI_TYPE_FLOAT: + if (!(byte_offset % 8)) + classes[0] = X86_64_SSESF_CLASS; + else + classes[0] = X86_64_SSE_CLASS; + return 1; + case FFI_TYPE_DOUBLE: + classes[0] = X86_64_SSEDF_CLASS; + return 1; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + classes[0] = X86_64_X87_CLASS; + classes[1] = X86_64_X87UP_CLASS; + return 2; +#endif + case FFI_TYPE_STRUCT: + { + const size_t UNITS_PER_WORD = 8; + size_t words = (type->size + byte_offset + UNITS_PER_WORD - 1) + / UNITS_PER_WORD; + ffi_type **ptr; + unsigned int i; + enum x86_64_reg_class subclasses[MAX_CLASSES]; + + /* If the struct is larger than 32 bytes, pass it on the stack. */ + if (type->size > 32) + return 0; + + for (i = 0; i < words; i++) + classes[i] = X86_64_NO_CLASS; + + /* Zero sized arrays or structures are NO_CLASS. We return 0 to + signalize memory class, so handle it as special case. */ + if (!words) + { + case FFI_TYPE_VOID: + classes[0] = X86_64_NO_CLASS; + return 1; + } + + /* Merge the fields of structure. */ + for (ptr = type->elements; *ptr != NULL; ptr++) + { + size_t num, pos; + + byte_offset = FFI_ALIGN (byte_offset, (*ptr)->alignment); + + num = classify_argument (*ptr, subclasses, byte_offset % 8); + if (num == 0) + return 0; + pos = byte_offset / 8; + for (i = 0; i < num && (i + pos) < words; i++) + { + size_t pos = byte_offset / 8; + classes[i + pos] = + merge_classes (subclasses[i], classes[i + pos]); + } + + byte_offset += (*ptr)->size; + } + + if (words > 2) + { + /* When size > 16 bytes, if the first one isn't + X86_64_SSE_CLASS or any other ones aren't + X86_64_SSEUP_CLASS, everything should be passed in + memory. */ + if (classes[0] != X86_64_SSE_CLASS) + return 0; + + for (i = 1; i < words; i++) + if (classes[i] != X86_64_SSEUP_CLASS) + return 0; + } + + /* Final merger cleanup. */ + for (i = 0; i < words; i++) + { + /* If one class is MEMORY, everything should be passed in + memory. */ + if (classes[i] == X86_64_MEMORY_CLASS) + return 0; + + /* The X86_64_SSEUP_CLASS should be always preceded by + X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */ + if (i > 1 && classes[i] == X86_64_SSEUP_CLASS + && classes[i - 1] != X86_64_SSE_CLASS + && classes[i - 1] != X86_64_SSEUP_CLASS) + { + /* The first one should never be X86_64_SSEUP_CLASS. */ + FFI_ASSERT (i != 0); + classes[i] = X86_64_SSE_CLASS; + } + + /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS, + everything should be passed in memory. */ + if (i > 1 && classes[i] == X86_64_X87UP_CLASS + && (classes[i - 1] != X86_64_X87_CLASS)) + { + /* The first one should never be X86_64_X87UP_CLASS. */ + FFI_ASSERT (i != 0); + return 0; + } + } + return words; + } + case FFI_TYPE_COMPLEX: + { + ffi_type *inner = type->elements[0]; + switch (inner->type) + { + case FFI_TYPE_INT: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + goto do_integer; + + case FFI_TYPE_FLOAT: + classes[0] = X86_64_SSE_CLASS; + if (byte_offset % 8) + { + classes[1] = X86_64_SSESF_CLASS; + return 2; + } + return 1; + case FFI_TYPE_DOUBLE: + classes[0] = classes[1] = X86_64_SSEDF_CLASS; + return 2; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + classes[0] = X86_64_COMPLEX_X87_CLASS; + return 1; +#endif + } + } + } + abort(); +} + +/* Examine the argument and return set number of register required in each + class. Return zero iff parameter should be passed in memory, otherwise + the number of registers. */ + +static size_t +examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES], + _Bool in_return, int *pngpr, int *pnsse) +{ + size_t n; + unsigned int i; + int ngpr, nsse; + + n = classify_argument (type, classes, 0); + if (n == 0) + return 0; + + ngpr = nsse = 0; + for (i = 0; i < n; ++i) + switch (classes[i]) + { + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + ngpr++; + break; + case X86_64_SSE_CLASS: + case X86_64_SSESF_CLASS: + case X86_64_SSEDF_CLASS: + nsse++; + break; + case X86_64_NO_CLASS: + case X86_64_SSEUP_CLASS: + break; + case X86_64_X87_CLASS: + case X86_64_X87UP_CLASS: + case X86_64_COMPLEX_X87_CLASS: + return in_return != 0; + default: + abort (); + } + + *pngpr = ngpr; + *pnsse = nsse; + + return n; +} + +/* Perform machine dependent cif processing. */ + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_cif_machdep_efi64(ffi_cif *cif); +#endif + +ffi_status FFI_HIDDEN +ffi_prep_cif_machdep (ffi_cif *cif) +{ + int gprcount, ssecount, i, avn, ngpr, nsse; + unsigned flags; + enum x86_64_reg_class classes[MAX_CLASSES]; + size_t bytes, n, rtype_size; + ffi_type *rtype; + +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_cif_machdep_efi64(cif); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + gprcount = ssecount = 0; + + rtype = cif->rtype; + rtype_size = rtype->size; + switch (rtype->type) + { + case FFI_TYPE_VOID: + flags = UNIX64_RET_VOID; + break; + case FFI_TYPE_UINT8: + flags = UNIX64_RET_UINT8; + break; + case FFI_TYPE_SINT8: + flags = UNIX64_RET_SINT8; + break; + case FFI_TYPE_UINT16: + flags = UNIX64_RET_UINT16; + break; + case FFI_TYPE_SINT16: + flags = UNIX64_RET_SINT16; + break; + case FFI_TYPE_UINT32: + flags = UNIX64_RET_UINT32; + break; + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: + flags = UNIX64_RET_SINT32; + break; + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags = UNIX64_RET_INT64; + break; + case FFI_TYPE_POINTER: + flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64); + break; + case FFI_TYPE_FLOAT: + flags = UNIX64_RET_XMM32; + break; + case FFI_TYPE_DOUBLE: + flags = UNIX64_RET_XMM64; + break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags = UNIX64_RET_X87; + break; +#endif + case FFI_TYPE_STRUCT: + n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse); + if (n == 0) + { + /* The return value is passed in memory. A pointer to that + memory is the first argument. Allocate a register for it. */ + gprcount++; + /* We don't have to do anything in asm for the return. */ + flags = UNIX64_RET_VOID | UNIX64_FLAG_RET_IN_MEM; + } + else + { + _Bool sse0 = SSE_CLASS_P (classes[0]); + + if (rtype_size == 4 && sse0) + flags = UNIX64_RET_XMM32; + else if (rtype_size == 8) + flags = sse0 ? UNIX64_RET_XMM64 : UNIX64_RET_INT64; + else + { + _Bool sse1 = n == 2 && SSE_CLASS_P (classes[1]); + if (sse0 && sse1) + flags = UNIX64_RET_ST_XMM0_XMM1; + else if (sse0) + flags = UNIX64_RET_ST_XMM0_RAX; + else if (sse1) + flags = UNIX64_RET_ST_RAX_XMM0; + else + flags = UNIX64_RET_ST_RAX_RDX; + flags |= rtype_size << UNIX64_SIZE_SHIFT; + } + } + break; + case FFI_TYPE_COMPLEX: + switch (rtype->elements[0]->type) + { + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT16: + case FFI_TYPE_SINT16: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + flags = UNIX64_RET_ST_RAX_RDX | ((unsigned) rtype_size << UNIX64_SIZE_SHIFT); + break; + case FFI_TYPE_FLOAT: + flags = UNIX64_RET_XMM64; + break; + case FFI_TYPE_DOUBLE: + flags = UNIX64_RET_ST_XMM0_XMM1 | (16 << UNIX64_SIZE_SHIFT); + break; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + case FFI_TYPE_LONGDOUBLE: + flags = UNIX64_RET_X87_2; + break; +#endif + default: + return FFI_BAD_TYPEDEF; + } + break; + default: + return FFI_BAD_TYPEDEF; + } + + /* Go over all arguments and determine the way they should be passed. + If it's in a register and there is space for it, let that be so. If + not, add it's size to the stack byte count. */ + for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++) + { + if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = cif->arg_types[i]->alignment; + + if (align < 8) + align = 8; + + bytes = FFI_ALIGN (bytes, align); + bytes += cif->arg_types[i]->size; + } + else + { + gprcount += ngpr; + ssecount += nsse; + } + } + if (ssecount) + flags |= UNIX64_FLAG_XMM_ARGS; + + cif->flags = flags; + cif->bytes = (unsigned) FFI_ALIGN (bytes, 8); + + return FFI_OK; +} + +/* n.b. ffi_call_unix64 will steal the alloca'd `stack` variable here for use + _as its own stack_ - so we need to compile this function without ASAN */ +FFI_ASAN_NO_SANITIZE +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + enum x86_64_reg_class classes[MAX_CLASSES]; + char *stack, *argp; + ffi_type **arg_types; + int gprcount, ssecount, ngpr, nsse, i, avn, flags; + struct register_args *reg_args; + + /* Can't call 32-bit mode from 64-bit mode. */ + FFI_ASSERT (cif->abi == FFI_UNIX64); + + /* If the return value is a struct and we don't have a return value + address then we need to make one. Otherwise we can ignore it. */ + flags = cif->flags; + if (rvalue == NULL) + { + if (flags & UNIX64_FLAG_RET_IN_MEM) + rvalue = alloca (cif->rtype->size); + else + flags = UNIX64_RET_VOID; + } + + arg_types = cif->arg_types; + avn = cif->nargs; + + /* Allocate the space for the arguments, plus 4 words of temp space. */ + stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8); + reg_args = (struct register_args *) stack; + argp = stack + sizeof (struct register_args); + + reg_args->r10 = (uintptr_t) closure; + + gprcount = ssecount = 0; + + /* If the return value is passed in memory, add the pointer as the + first integer argument. */ + if (flags & UNIX64_FLAG_RET_IN_MEM) + reg_args->gpr[gprcount++] = (unsigned long) rvalue; + + for (i = 0; i < avn; ++i) + { + size_t n, size = arg_types[i]->size; + + n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); + if (n == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = arg_types[i]->alignment; + + /* Stack arguments are *always* at least 8 byte aligned. */ + if (align < 8) + align = 8; + + /* Pass this argument in memory. */ + argp = (void *) FFI_ALIGN (argp, align); + memcpy (argp, avalue[i], size); + + argp += size; + } + else + { + /* The argument is passed entirely in registers. */ + char *a = (char *) avalue[i]; + unsigned int j; + + for (j = 0; j < n; j++, a += 8, size -= 8) + { + switch (classes[j]) + { + case X86_64_NO_CLASS: + case X86_64_SSEUP_CLASS: + break; + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + /* Sign-extend integer arguments passed in general + purpose registers, to cope with the fact that + LLVM incorrectly assumes that this will be done + (the x86-64 PS ABI does not specify this). */ + switch (arg_types[i]->type) + { + case FFI_TYPE_SINT8: + reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a); + break; + case FFI_TYPE_SINT16: + reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a); + break; + case FFI_TYPE_SINT32: + reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a); + break; + default: + reg_args->gpr[gprcount] = 0; + memcpy (®_args->gpr[gprcount], a, size <= 8 ? size : 8); + } + gprcount++; + break; + case X86_64_SSE_CLASS: + case X86_64_SSEDF_CLASS: + memcpy (®_args->sse[ssecount++].i64, a, sizeof(UINT64)); + break; + case X86_64_SSESF_CLASS: + memcpy (®_args->sse[ssecount++].i32, a, sizeof(UINT32)); + break; + default: + abort(); + } + } + } + } + reg_args->rax = ssecount; + + ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args), + flags, rvalue, fn); +} + +#ifndef __ILP32__ +extern void +ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); +#endif + +void +ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_type **arg_types = cif->arg_types; + int i, nargs = cif->nargs; + const int max_reg_struct_size = cif->abi == FFI_GNUW64 ? 8 : 16; + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT && size > max_reg_struct_size) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + { + ffi_call_efi64(cif, fn, rvalue, avalue); + return; + } +#endif + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +#ifdef FFI_GO_CLOSURES + +#ifndef __ILP32__ +extern void +ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure); +#endif + +void +ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + { + ffi_call_go_efi64(cif, fn, rvalue, avalue, closure); + return; + } +#endif + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + +#endif /* FFI_GO_CLOSURES */ + +extern void ffi_closure_unix64(void) FFI_HIDDEN; +extern void ffi_closure_unix64_sse(void) FFI_HIDDEN; +#if defined(FFI_EXEC_STATIC_TRAMP) +extern void ffi_closure_unix64_alt(void) FFI_HIDDEN; +extern void ffi_closure_unix64_sse_alt(void) FFI_HIDDEN; +#endif + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_closure_loc_efi64(ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc); +#endif + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + static const unsigned char trampoline[24] = { + /* endbr64 */ + 0xf3, 0x0f, 0x1e, 0xfa, + /* leaq -0xb(%rip),%r10 # 0x0 */ + 0x4c, 0x8d, 0x15, 0xf5, 0xff, 0xff, 0xff, + /* jmpq *0x7(%rip) # 0x18 */ + 0xff, 0x25, 0x07, 0x00, 0x00, 0x00, + /* nopl 0(%rax) */ + 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 + }; + void (*dest)(void); + char *tramp = closure->tramp; + +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_closure_loc_efi64(closure, cif, fun, user_data, codeloc); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + if (cif->flags & UNIX64_FLAG_XMM_ARGS) + dest = ffi_closure_unix64_sse; + else + dest = ffi_closure_unix64; + +#if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + if (dest == ffi_closure_unix64_sse) + dest = ffi_closure_unix64_sse_alt; + else + dest = ffi_closure_unix64_alt; + ffi_tramp_set_parms (closure->ftramp, dest, closure); + goto out; + } +#endif + + /* Initialize the dynamic trampoline. */ + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + sizeof (trampoline)) = (uintptr_t)dest; + +#if defined(FFI_EXEC_STATIC_TRAMP) +out: +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +int FFI_HIDDEN +ffi_closure_unix64_inner(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *rvalue, + struct register_args *reg_args, + char *argp) +{ + void **avalue; + ffi_type **arg_types; + long i, avn; + int gprcount, ssecount, ngpr, nsse; + int flags; + + avn = cif->nargs; + flags = cif->flags; + avalue = alloca(avn * sizeof(void *)); + gprcount = ssecount = 0; + + if (flags & UNIX64_FLAG_RET_IN_MEM) + { + /* On return, %rax will contain the address that was passed + by the caller in %rdi. */ + void *r = (void *)(uintptr_t)reg_args->gpr[gprcount++]; + *(void **)rvalue = r; + rvalue = r; + flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64); + } + + arg_types = cif->arg_types; + for (i = 0; i < avn; ++i) + { + enum x86_64_reg_class classes[MAX_CLASSES]; + size_t n; + + n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse); + if (n == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = arg_types[i]->alignment; + + /* Stack arguments are *always* at least 8 byte aligned. */ + if (align < 8) + align = 8; + + /* Pass this argument in memory. */ + argp = (void *) FFI_ALIGN (argp, align); + avalue[i] = argp; + argp += arg_types[i]->size; + } + /* If the argument is in a single register, or two consecutive + integer registers, then we can use that address directly. */ + else if (n == 1 + || (n == 2 && !(SSE_CLASS_P (classes[0]) + || SSE_CLASS_P (classes[1])))) + { + /* The argument is in a single register. */ + if (SSE_CLASS_P (classes[0])) + { + avalue[i] = ®_args->sse[ssecount]; + ssecount += n; + } + else + { + avalue[i] = ®_args->gpr[gprcount]; + gprcount += n; + } + } + /* Otherwise, allocate space to make them consecutive. */ + else + { + char *a = alloca (16); + unsigned int j; + + avalue[i] = a; + for (j = 0; j < n; j++, a += 8) + { + if (SSE_CLASS_P (classes[j])) + memcpy (a, ®_args->sse[ssecount++], 8); + else + memcpy (a, ®_args->gpr[gprcount++], 8); + } + } + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + + /* Tell assembly how to perform return type promotions. */ + return flags; +} + +#ifdef FFI_GO_CLOSURES + +extern void ffi_go_closure_unix64(void) FFI_HIDDEN; +extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN; + +#ifndef __ILP32__ +extern ffi_status +ffi_prep_go_closure_efi64(ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)); +#endif + +ffi_status +ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ +#ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + return ffi_prep_go_closure_efi64(closure, cif, fun); +#endif + if (cif->abi != FFI_UNIX64) + return FFI_BAD_ABI; + + closure->tramp = (cif->flags & UNIX64_FLAG_XMM_ARGS + ? ffi_go_closure_unix64_sse + : ffi_go_closure_unix64); + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} + +#endif /* FFI_GO_CLOSURES */ + +#if defined(FFI_EXEC_STATIC_TRAMP) +void * +ffi_tramp_arch (size_t *tramp_size, size_t *map_size) +{ + extern void *trampoline_code_table; + + *map_size = UNIX64_TRAMP_MAP_SIZE; + *tramp_size = UNIX64_TRAMP_SIZE; + return &trampoline_code_table; +} +#endif + +#endif /* __x86_64__ */ diff --git a/deps/libffi/src/x86/ffitarget.h b/deps/libffi/src/x86/ffitarget.h new file mode 100644 index 00000000000000..5a3399d80982b1 --- /dev/null +++ b/deps/libffi/src/x86/ffitarget.h @@ -0,0 +1,164 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green + Copyright (c) 1996-2003, 2010 Red Hat, Inc. + Copyright (C) 2008 Free Software Foundation, Inc. + + Target configuration macros for x86 and x86-64. + + 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. + + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +/* ---- System specific configurations ----------------------------------- */ + +/* For code common to all platforms on x86 and x86_64. */ +#define X86_ANY + +#if defined (X86_64) && defined (__i386__) +#undef X86_64 +#warning ****************************************************** +#warning ********** X86 IS DEFINED **************************** +#warning ****************************************************** +#define X86 +#endif + +#ifdef X86_WIN64 +#define FFI_SIZEOF_ARG 8 +#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */ +#endif + +#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION +#ifndef _MSC_VER +#define FFI_TARGET_HAS_COMPLEX_TYPE +#endif + +/* ---- Generic type definitions ----------------------------------------- */ + +#ifndef LIBFFI_ASM +#ifdef X86_WIN64 +#ifdef _MSC_VER +typedef unsigned __int64 ffi_arg; +typedef __int64 ffi_sarg; +#else +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#endif +#else +#if defined __x86_64__ && defined __ILP32__ +#define FFI_SIZEOF_ARG 8 +#define FFI_SIZEOF_JAVA_RAW 4 +typedef unsigned long long ffi_arg; +typedef long long ffi_sarg; +#else +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; +#endif +#endif + +typedef enum ffi_abi { +#if defined(X86_WIN64) + FFI_FIRST_ABI = 0, + FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */ + FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */ + FFI_LAST_ABI, +#ifdef __GNUC__ + FFI_DEFAULT_ABI = FFI_GNUW64 +#else + FFI_DEFAULT_ABI = FFI_WIN64 +#endif + +#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) + FFI_FIRST_ABI = 1, + FFI_UNIX64, + FFI_WIN64, + FFI_EFI64 = FFI_WIN64, + FFI_GNUW64, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_UNIX64 + +#elif defined(X86_WIN32) + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_STDCALL = 2, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_MS_CDECL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_MS_CDECL +#else + FFI_FIRST_ABI = 0, + FFI_SYSV = 1, + FFI_THISCALL = 3, + FFI_FASTCALL = 4, + FFI_STDCALL = 5, + FFI_PASCAL = 6, + FFI_REGISTER = 7, + FFI_MS_CDECL = 8, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +#endif +} ffi_abi; +#endif + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_GO_CLOSURES 1 + +#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1) +#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2) +#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3) +#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4) + +#if defined (X86_64) || defined(X86_WIN64) \ + || (defined (__x86_64__) && defined (X86_DARWIN)) +/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP + + 8 bytes of pointer. */ +# define FFI_TRAMPOLINE_SIZE 32 +# define FFI_NATIVE_RAW_API 0 +#else +/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused + bytes. */ +# define FFI_TRAMPOLINE_SIZE 16 +# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */ +#endif + +#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__) +# include +# if (__CET__ & 1) != 0 +# define ENDBR_PRESENT +# endif +# define _CET_NOTRACK notrack +#else +# define _CET_ENDBR +# define _CET_NOTRACK +#endif + +#endif diff --git a/deps/libffi/src/x86/ffiw64.c b/deps/libffi/src/x86/ffiw64.c new file mode 100644 index 00000000000000..2be8b99279ab8e --- /dev/null +++ b/deps/libffi/src/x86/ffiw64.c @@ -0,0 +1,361 @@ +/* ----------------------------------------------------------------------- + ffiw64.c - Copyright (c) 2018 Anthony Green + Copyright (c) 2014 Red Hat, Inc. + + x86 win64 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#if defined(__x86_64__) || defined(_M_AMD64) +#include +#include +#include +#include +#include + +#ifdef X86_WIN64 +#define EFI64(name) name +#else +#define EFI64(name) FFI_HIDDEN name##_efi64 +#endif + +struct win64_call_frame +{ + UINT64 rbp; /* 0 */ + UINT64 retaddr; /* 8 */ + UINT64 fn; /* 16 */ + UINT64 flags; /* 24 */ + UINT64 rvalue; /* 32 */ +}; + +extern void ffi_call_win64 (void *stack, struct win64_call_frame *, + void *closure) FFI_HIDDEN; + +ffi_status FFI_HIDDEN +EFI64(ffi_prep_cif_machdep)(ffi_cif *cif) +{ + int flags, n; + + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + + flags = cif->rtype->type; + switch (flags) + { + default: + break; + case FFI_TYPE_LONGDOUBLE: + /* GCC returns long double values by reference, like a struct */ + if (cif->abi == FFI_GNUW64) + flags = FFI_TYPE_STRUCT; + break; + case FFI_TYPE_COMPLEX: + flags = FFI_TYPE_STRUCT; + /* FALLTHRU */ + case FFI_TYPE_STRUCT: + switch (cif->rtype->size) + { + case 8: + flags = FFI_TYPE_UINT64; + break; + case 4: + flags = FFI_TYPE_SMALL_STRUCT_4B; + break; + case 2: + flags = FFI_TYPE_SMALL_STRUCT_2B; + break; + case 1: + flags = FFI_TYPE_SMALL_STRUCT_1B; + break; + } + break; + } + cif->flags = flags; + + /* Each argument either fits in a register, an 8 byte slot, or is + passed by reference with the pointer in the 8 byte slot. */ + n = cif->nargs; + n += (flags == FFI_TYPE_STRUCT); + if (n < 4) + n = 4; + cif->bytes = n * 8; + + return FFI_OK; +} + +/* We perform some black magic here to use some of the parent's stack frame in + * ffi_call_win64() that breaks with the MSVC compiler with the /RTCs or /GZ + * flags. Disable the 'Stack frame run time error checking' for this function + * so we don't hit weird exceptions in debug builds. */ +#if defined(_MSC_VER) +#pragma runtime_checks("s", off) +#endif +static void +ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + int i, j, n, flags; + UINT64 *stack; + size_t rsize; + struct win64_call_frame *frame; + ffi_type **arg_types = cif->arg_types; + int nargs = cif->nargs; + + FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64); + + /* If we have any large structure arguments, make a copy so we are passing + by value. */ + for (i = 0; i < nargs; i++) + { + ffi_type *at = arg_types[i]; + int size = at->size; + if (at->type == FFI_TYPE_STRUCT && size > 8) + { + char *argcopy = alloca (size); + memcpy (argcopy, avalue[i], size); + avalue[i] = argcopy; + } + } + + flags = cif->flags; + rsize = 0; + + /* If we have no return value for a structure, we need to create one. + Otherwise we can ignore the return type entirely. */ + if (rvalue == NULL) + { + if (flags == FFI_TYPE_STRUCT) + rsize = cif->rtype->size; + else + flags = FFI_TYPE_VOID; + } + + stack = alloca(cif->bytes + sizeof(struct win64_call_frame) + rsize); + frame = (struct win64_call_frame *)((char *)stack + cif->bytes); + if (rsize) + rvalue = frame + 1; + + frame->fn = (uintptr_t)fn; + frame->flags = flags; + frame->rvalue = (uintptr_t)rvalue; + + j = 0; + if (flags == FFI_TYPE_STRUCT) + { + stack[0] = (uintptr_t)rvalue; + j = 1; + } + + for (i = 0, n = cif->nargs; i < n; ++i, ++j) + { + switch (cif->arg_types[i]->size) + { + case 8: + stack[j] = *(UINT64 *)avalue[i]; + break; + case 4: + stack[j] = *(UINT32 *)avalue[i]; + break; + case 2: + stack[j] = *(UINT16 *)avalue[i]; + break; + case 1: + stack[j] = *(UINT8 *)avalue[i]; + break; + default: + stack[j] = (uintptr_t)avalue[i]; + break; + } + } + + ffi_call_win64 (stack, frame, closure); +} +#if defined(_MSC_VER) +#pragma runtime_checks("s", restore) +#endif + +void +EFI64(ffi_call)(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) +{ + ffi_call_int (cif, fn, rvalue, avalue, NULL); +} + +void +EFI64(ffi_call_go)(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) +{ + ffi_call_int (cif, fn, rvalue, avalue, closure); +} + + +extern void ffi_closure_win64(void) FFI_HIDDEN; +#if defined(FFI_EXEC_STATIC_TRAMP) +extern void ffi_closure_win64_alt(void) FFI_HIDDEN; +#endif + +#ifdef FFI_GO_CLOSURES +extern void ffi_go_closure_win64(void) FFI_HIDDEN; +#endif + +ffi_status +EFI64(ffi_prep_closure_loc)(ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc MAYBE_UNUSED) +{ + static const unsigned char trampoline[FFI_TRAMPOLINE_SIZE - 8] = { + /* endbr64 */ + 0xf3, 0x0f, 0x1e, 0xfa, + /* leaq -0xb(%rip),%r10 # 0x0 */ + 0x4c, 0x8d, 0x15, 0xf5, 0xff, 0xff, 0xff, + /* jmpq *0x7(%rip) # 0x18 */ + 0xff, 0x25, 0x07, 0x00, 0x00, 0x00, + /* nopl 0(%rax) */ + 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 + }; + char *tramp = closure->tramp; + + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + +#if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ + ffi_tramp_set_parms (closure->ftramp, ffi_closure_win64_alt, closure); + goto out; + } +#endif + + /* Initialize the dynamic trampoline. */ + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + sizeof (trampoline)) = (uintptr_t)ffi_closure_win64; + +#if defined(FFI_EXEC_STATIC_TRAMP) +out: +#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + + return FFI_OK; +} + +#ifdef FFI_GO_CLOSURES +ffi_status +EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*)) +{ + switch (cif->abi) + { + case FFI_WIN64: + case FFI_GNUW64: + break; + default: + return FFI_BAD_ABI; + } + + closure->tramp = ffi_go_closure_win64; + closure->cif = cif; + closure->fun = fun; + + return FFI_OK; +} +#endif + +struct win64_closure_frame +{ + UINT64 rvalue[2]; + UINT64 fargs[4]; + UINT64 retaddr; + UINT64 args[]; +}; + +/* Force the inner function to use the MS ABI. When compiling on win64 + this is a nop. When compiling on unix, this simplifies the assembly, + and places the burden of saving the extra call-saved registers on + the compiler. */ +int FFI_HIDDEN __attribute__((ms_abi)) +ffi_closure_win64_inner(ffi_cif *cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + struct win64_closure_frame *frame) +{ + void **avalue; + void *rvalue; + int i, n, nreg, flags; + + avalue = alloca(cif->nargs * sizeof(void *)); + rvalue = frame->rvalue; + nreg = 0; + + /* When returning a structure, the address is in the first argument. + We must also be prepared to return the same address in eax, so + install that address in the frame and pretend we return a pointer. */ + flags = cif->flags; + if (flags == FFI_TYPE_STRUCT) + { + rvalue = (void *)(uintptr_t)frame->args[0]; + frame->rvalue[0] = frame->args[0]; + nreg = 1; + } + + for (i = 0, n = cif->nargs; i < n; ++i, ++nreg) + { + size_t size = cif->arg_types[i]->size; + size_t type = cif->arg_types[i]->type; + void *a; + + if (type == FFI_TYPE_DOUBLE || type == FFI_TYPE_FLOAT) + { + if (nreg < 4) + a = &frame->fargs[nreg]; + else + a = &frame->args[nreg]; + } + else if (size == 1 || size == 2 || size == 4 || size == 8) + a = &frame->args[nreg]; + else + a = (void *)(uintptr_t)frame->args[nreg]; + + avalue[i] = a; + } + + /* Invoke the closure. */ + fun (cif, rvalue, avalue, user_data); + return flags; +} + +#endif /* __x86_64__ */ diff --git a/deps/libffi/src/x86/internal.h b/deps/libffi/src/x86/internal.h new file mode 100644 index 00000000000000..23be7a2232692d --- /dev/null +++ b/deps/libffi/src/x86/internal.h @@ -0,0 +1,43 @@ +#define X86_RET_FLOAT 0 +#define X86_RET_DOUBLE 1 +#define X86_RET_LDOUBLE 2 +#define X86_RET_SINT8 3 +#define X86_RET_SINT16 4 +#define X86_RET_UINT8 5 +#define X86_RET_UINT16 6 +#define X86_RET_INT64 7 +#define X86_RET_INT32 8 +#define X86_RET_VOID 9 +#define X86_RET_STRUCTPOP 10 +#define X86_RET_STRUCTARG 11 +#define X86_RET_STRUCT_1B 12 +#define X86_RET_STRUCT_2B 13 +#define X86_RET_UNUSED14 14 +#define X86_RET_UNUSED15 15 + +#define X86_RET_TYPE_MASK 15 +#define X86_RET_POP_SHIFT 4 + +#define R_EAX 0 +#define R_EDX 1 +#define R_ECX 2 + +#ifdef __PCC__ +# define HAVE_FASTCALL 0 +#else +# define HAVE_FASTCALL 1 +#endif + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * For the trampoline code table mapping, a mapping size of 4K (base page size) + * is chosen. + */ +#define X86_TRAMP_MAP_SHIFT 12 +#define X86_TRAMP_MAP_SIZE (1 << X86_TRAMP_MAP_SHIFT) +#ifdef ENDBR_PRESENT +#define X86_TRAMP_SIZE 44 +#else +#define X86_TRAMP_SIZE 40 +#endif +#endif diff --git a/deps/libffi/src/x86/internal64.h b/deps/libffi/src/x86/internal64.h new file mode 100644 index 00000000000000..282b408027444e --- /dev/null +++ b/deps/libffi/src/x86/internal64.h @@ -0,0 +1,36 @@ +#define UNIX64_RET_VOID 0 +#define UNIX64_RET_UINT8 1 +#define UNIX64_RET_UINT16 2 +#define UNIX64_RET_UINT32 3 +#define UNIX64_RET_SINT8 4 +#define UNIX64_RET_SINT16 5 +#define UNIX64_RET_SINT32 6 +#define UNIX64_RET_INT64 7 +#define UNIX64_RET_XMM32 8 +#define UNIX64_RET_XMM64 9 +#define UNIX64_RET_X87 10 +#define UNIX64_RET_X87_2 11 +#define UNIX64_RET_ST_XMM0_RAX 12 +#define UNIX64_RET_ST_RAX_XMM0 13 +#define UNIX64_RET_ST_XMM0_XMM1 14 +#define UNIX64_RET_ST_RAX_RDX 15 + +#define UNIX64_RET_LAST 15 + +#define UNIX64_FLAG_RET_IN_MEM (1 << 10) +#define UNIX64_FLAG_XMM_ARGS (1 << 11) +#define UNIX64_SIZE_SHIFT 12 + +#if defined(FFI_EXEC_STATIC_TRAMP) +/* + * For the trampoline code table mapping, a mapping size of 4K (base page size) + * is chosen. + */ +#define UNIX64_TRAMP_MAP_SHIFT 12 +#define UNIX64_TRAMP_MAP_SIZE (1 << UNIX64_TRAMP_MAP_SHIFT) +#ifdef ENDBR_PRESENT +#define UNIX64_TRAMP_SIZE 40 +#else +#define UNIX64_TRAMP_SIZE 32 +#endif +#endif diff --git a/deps/libffi/src/x86/sysv.S b/deps/libffi/src/x86/sysv.S new file mode 100644 index 00000000000000..c7a0fb51b48cd9 --- /dev/null +++ b/deps/libffi/src/x86/sysv.S @@ -0,0 +1,1272 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2017 Anthony Green + - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. + + X86 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#ifdef __i386__ +#ifndef _MSC_VER + +#define LIBFFI_ASM +#include +#include +#include "internal.h" + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) +#ifdef __USER_LABEL_PREFIX__ +# define C(X) C1(__USER_LABEL_PREFIX__, X) +#else +# define C(X) X +#endif + +#ifdef X86_DARWIN +# define L(X) C1(L, X) +#else +# define L(X) C1(.L, X) +#endif + +#ifdef __ELF__ +# define ENDF(X) .type X,@function; .size X, . - X +#else +# define ENDF(X) +#endif + +/* Handle win32 fastcall name mangling. */ +#ifdef X86_WIN32 +# define ffi_call_i386 "@ffi_call_i386@8" +# define ffi_closure_inner "@ffi_closure_inner@8" +#else +# define ffi_call_i386 C(ffi_call_i386) +# define ffi_closure_inner C(ffi_closure_inner) +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + X * 8 +#endif + + .text + .balign 16 + .globl ffi_call_i386 + FFI_HIDDEN(ffi_call_i386) + +/* This is declared as + + void ffi_call_i386(struct call_frame *frame, char *argp) + __attribute__((fastcall)); + + Thus the arguments are present in + + ecx: frame + edx: argp +*/ + +ffi_call_i386: +L(UW0): + # cfi_startproc + _CET_ENDBR +#if !HAVE_FASTCALL + movl 4(%esp), %ecx + movl 8(%esp), %edx +#endif + movl (%esp), %eax /* move the return address */ + movl %ebp, (%ecx) /* store %ebp into local frame */ + movl %eax, 4(%ecx) /* store retaddr into local frame */ + + /* New stack frame based off ebp. This is a itty bit of unwind + trickery in that the CFA *has* changed. There is no easy way + to describe it correctly on entry to the function. Fortunately, + it doesn't matter too much since at all points we can correctly + unwind back to ffi_call. Note that the location to which we + moved the return address is (the new) CFA-4, so from the + perspective of the unwind info, it hasn't moved. */ + movl %ecx, %ebp +L(UW1): + # cfi_def_cfa(%ebp, 8) + # cfi_rel_offset(%ebp, 0) + + movl %edx, %esp /* set outgoing argument stack */ + movl 20+R_EAX*4(%ebp), %eax /* set register arguments */ + movl 20+R_EDX*4(%ebp), %edx + movl 20+R_ECX*4(%ebp), %ecx + + call *8(%ebp) + + movl 12(%ebp), %ecx /* load return type code */ + movl %ebx, 8(%ebp) /* preserve %ebx */ +L(UW2): + # cfi_rel_offset(%ebx, 8) + + andl $X86_RET_TYPE_MASK, %ecx +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc1): + leal L(store_table)-L(pc1)(%ebx, %ecx, 8), %ebx +#else + leal L(store_table)(,%ecx, 8), %ebx +#endif + movl 16(%ebp), %ecx /* load result address */ + _CET_NOTRACK jmp *%ebx + + .balign 8 +L(store_table): +E(L(store_table), X86_RET_FLOAT) + fstps (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_DOUBLE) + fstpl (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_LDOUBLE) + fstpt (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_SINT8) + movsbl %al, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_SINT16) + movswl %ax, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_UINT8) + movzbl %al, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_UINT16) + movzwl %ax, %eax + mov %eax, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_INT64) + movl %edx, 4(%ecx) + /* fallthru */ +E(L(store_table), X86_RET_INT32) + movl %eax, (%ecx) + /* fallthru */ +E(L(store_table), X86_RET_VOID) +L(e1): + movl 8(%ebp), %ebx + movl %ebp, %esp + popl %ebp +L(UW3): + # cfi_remember_state + # cfi_def_cfa(%esp, 4) + # cfi_restore(%ebx) + # cfi_restore(%ebp) + ret +L(UW4): + # cfi_restore_state + +E(L(store_table), X86_RET_STRUCTPOP) + jmp L(e1) +E(L(store_table), X86_RET_STRUCTARG) + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_1B) + movb %al, (%ecx) + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_2B) + movw %ax, (%ecx) + jmp L(e1) + + /* Fill out the table so that bad values are predictable. */ +E(L(store_table), X86_RET_UNUSED14) + ud2 +E(L(store_table), X86_RET_UNUSED15) + ud2 + +L(UW5): + # cfi_endproc +ENDF(ffi_call_i386) + +/* The inner helper is declared as + + void ffi_closure_inner(struct closure_frame *frame, char *argp) + __attribute_((fastcall)) + + Thus the arguments are placed in + + ecx: frame + edx: argp +*/ + +/* Macros to help setting up the closure_data structure. */ + +#if HAVE_FASTCALL +# define closure_FS (40 + 4) +# define closure_CF 0 +#else +# define closure_FS (8 + 40 + 12) +# define closure_CF 8 +#endif + +#define FFI_CLOSURE_SAVE_REGS \ + movl %eax, closure_CF+16+R_EAX*4(%esp); \ + movl %edx, closure_CF+16+R_EDX*4(%esp); \ + movl %ecx, closure_CF+16+R_ECX*4(%esp) + +#define FFI_CLOSURE_COPY_TRAMP_DATA \ + movl FFI_TRAMPOLINE_SIZE(%eax), %edx; /* copy cif */ \ + movl FFI_TRAMPOLINE_SIZE+4(%eax), %ecx; /* copy fun */ \ + movl FFI_TRAMPOLINE_SIZE+8(%eax), %eax; /* copy user_data */ \ + movl %edx, closure_CF+28(%esp); \ + movl %ecx, closure_CF+32(%esp); \ + movl %eax, closure_CF+36(%esp) + +#if HAVE_FASTCALL +# define FFI_CLOSURE_PREP_CALL \ + movl %esp, %ecx; /* load closure_data */ \ + leal closure_FS+4(%esp), %edx; /* load incoming stack */ +#else +# define FFI_CLOSURE_PREP_CALL \ + leal closure_CF(%esp), %ecx; /* load closure_data */ \ + leal closure_FS+4(%esp), %edx; /* load incoming stack */ \ + movl %ecx, (%esp); \ + movl %edx, 4(%esp) +#endif + +#define FFI_CLOSURE_CALL_INNER(UWN) \ + call ffi_closure_inner + +#define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \ + andl $X86_RET_TYPE_MASK, %eax; \ + leal L(C1(load_table,N))(, %eax, 8), %edx; \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + _CET_NOTRACK jmp *%edx + +#ifdef __PIC__ +# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +# undef FFI_CLOSURE_MASK_AND_JUMP +# define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \ + andl $X86_RET_TYPE_MASK, %eax; \ + call C(__x86.get_pc_thunk.dx); \ +L(C1(pc,N)): \ + leal L(C1(load_table,N))-L(C1(pc,N))(%edx, %eax, 8), %edx; \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + _CET_NOTRACK jmp *%edx +# else +# define FFI_CLOSURE_CALL_INNER_SAVE_EBX +# undef FFI_CLOSURE_CALL_INNER +# define FFI_CLOSURE_CALL_INNER(UWN) \ + movl %ebx, 40(%esp); /* save ebx */ \ +L(C1(UW,UWN)): \ + /* cfi_rel_offset(%ebx, 40); */ \ + call C(__x86.get_pc_thunk.bx); /* load got register */ \ + addl $C(_GLOBAL_OFFSET_TABLE_), %ebx; \ + call ffi_closure_inner@PLT +# undef FFI_CLOSURE_MASK_AND_JUMP +# define FFI_CLOSURE_MASK_AND_JUMP(N, UWN) \ + andl $X86_RET_TYPE_MASK, %eax; \ + leal L(C1(load_table,N))@GOTOFF(%ebx, %eax, 8), %edx; \ + movl 40(%esp), %ebx; /* restore ebx */ \ +L(C1(UW,UWN)): \ + /* cfi_restore(%ebx); */ \ + movl closure_CF(%esp), %eax; /* optimiztic load */ \ + _CET_NOTRACK jmp *%edx +# endif /* DARWIN || HIDDEN */ +#endif /* __PIC__ */ + + .balign 16 + .globl C(ffi_go_closure_EAX) + FFI_HIDDEN(C(ffi_go_closure_EAX)) +C(ffi_go_closure_EAX): +L(UW6): + # cfi_startproc + _CET_ENDBR + subl $closure_FS, %esp +L(UW7): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%eax), %edx /* copy cif */ + movl 8(%eax), %ecx /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %ecx, closure_CF+32(%esp) + movl %eax, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_i386) +L(UW8): + # cfi_endproc +ENDF(C(ffi_go_closure_EAX)) + + .balign 16 + .globl C(ffi_go_closure_ECX) + FFI_HIDDEN(C(ffi_go_closure_ECX)) +C(ffi_go_closure_ECX): +L(UW9): + # cfi_startproc + _CET_ENDBR + subl $closure_FS, %esp +L(UW10): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%ecx), %edx /* copy cif */ + movl 8(%ecx), %eax /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %eax, closure_CF+32(%esp) + movl %ecx, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_i386) +L(UW11): + # cfi_endproc +ENDF(C(ffi_go_closure_ECX)) + +/* The closure entry points are reached from the ffi_closure trampoline. + On entry, %eax contains the address of the ffi_closure. */ + + .balign 16 + .globl C(ffi_closure_i386) + FFI_HIDDEN(C(ffi_closure_i386)) + +C(ffi_closure_i386): +L(UW12): + # cfi_startproc + _CET_ENDBR + subl $closure_FS, %esp +L(UW13): + # cfi_def_cfa_offset(closure_FS + 4) + + FFI_CLOSURE_SAVE_REGS + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closures. */ +L(do_closure_i386): + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(14) + FFI_CLOSURE_MASK_AND_JUMP(2, 15) + + .balign 8 +L(load_table2): +E(L(load_table2), X86_RET_FLOAT) + flds closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_DOUBLE) + fldl closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_LDOUBLE) + fldt closure_CF(%esp) + jmp L(e2) +E(L(load_table2), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e2) +E(L(load_table2), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e2) +E(L(load_table2), X86_RET_INT64) + movl closure_CF+4(%esp), %edx + jmp L(e2) +E(L(load_table2), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table2), X86_RET_VOID) +L(e2): + addl $closure_FS, %esp +L(UW16): + # cfi_adjust_cfa_offset(-closure_FS) + ret +L(UW17): + # cfi_adjust_cfa_offset(closure_FS) +E(L(load_table2), X86_RET_STRUCTPOP) + addl $closure_FS, %esp +L(UW18): + # cfi_adjust_cfa_offset(-closure_FS) + ret $4 +L(UW19): + # cfi_adjust_cfa_offset(closure_FS) +E(L(load_table2), X86_RET_STRUCTARG) + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e2) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table2), X86_RET_UNUSED14) + ud2 +E(L(load_table2), X86_RET_UNUSED15) + ud2 + +L(UW20): + # cfi_endproc +ENDF(C(ffi_closure_i386)) + + .balign 16 + .globl C(ffi_go_closure_STDCALL) + FFI_HIDDEN(C(ffi_go_closure_STDCALL)) +C(ffi_go_closure_STDCALL): +L(UW21): + # cfi_startproc + _CET_ENDBR + subl $closure_FS, %esp +L(UW22): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl 4(%ecx), %edx /* copy cif */ + movl 8(%ecx), %eax /* copy fun */ + movl %edx, closure_CF+28(%esp) + movl %eax, closure_CF+32(%esp) + movl %ecx, closure_CF+36(%esp) /* closure is user_data */ + jmp L(do_closure_STDCALL) +L(UW23): + # cfi_endproc +ENDF(C(ffi_go_closure_STDCALL)) + +/* For REGISTER, we have no available parameter registers, and so we + enter here having pushed the closure onto the stack. */ + + .balign 16 + .globl C(ffi_closure_REGISTER) + FFI_HIDDEN(C(ffi_closure_REGISTER)) +C(ffi_closure_REGISTER): +L(UW24): + # cfi_startproc + # cfi_def_cfa(%esp, 8) + # cfi_offset(%eip, -8) + _CET_ENDBR + subl $closure_FS-4, %esp +L(UW25): + # cfi_def_cfa_offset(closure_FS + 4) + FFI_CLOSURE_SAVE_REGS + movl closure_FS-4(%esp), %ecx /* load retaddr */ + movl closure_FS(%esp), %eax /* load closure */ + movl %ecx, closure_FS(%esp) /* move retaddr */ + jmp L(do_closure_REGISTER) +L(UW26): + # cfi_endproc +ENDF(C(ffi_closure_REGISTER)) + +/* For STDCALL (and others), we need to pop N bytes of arguments off + the stack following the closure. The amount needing to be popped + is returned to us from ffi_closure_inner. */ + + .balign 16 + .globl C(ffi_closure_STDCALL) + FFI_HIDDEN(C(ffi_closure_STDCALL)) +C(ffi_closure_STDCALL): +L(UW27): + # cfi_startproc + _CET_ENDBR + subl $closure_FS, %esp +L(UW28): + # cfi_def_cfa_offset(closure_FS + 4) + + FFI_CLOSURE_SAVE_REGS + + /* Entry point from ffi_closure_REGISTER. */ +L(do_closure_REGISTER): + + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closure. */ +L(do_closure_STDCALL): + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(29) + + movl %eax, %ecx + shrl $X86_RET_POP_SHIFT, %ecx /* isolate pop count */ + leal closure_FS(%esp, %ecx), %ecx /* compute popped esp */ + movl closure_FS(%esp), %edx /* move return address */ + movl %edx, (%ecx) + + /* From this point on, the value of %esp upon return is %ecx+4, + and we've copied the return address to %ecx to make return easy. + There's no point in representing this in the unwind info, as + there is always a window between the mov and the ret which + will be wrong from one point of view or another. */ + + FFI_CLOSURE_MASK_AND_JUMP(3, 30) + + .balign 8 +L(load_table3): +E(L(load_table3), X86_RET_FLOAT) + flds closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_DOUBLE) + fldl closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_LDOUBLE) + fldt closure_CF(%esp) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_SINT8) + movsbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_SINT16) + movswl %ax, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_UINT8) + movzbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_UINT16) + movzwl %ax, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_INT64) + movl closure_CF+4(%esp), %edx + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_INT32) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_VOID) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCTPOP) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCTARG) + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCT_1B) + movzbl %al, %eax + movl %ecx, %esp + ret +E(L(load_table3), X86_RET_STRUCT_2B) + movzwl %ax, %eax + movl %ecx, %esp + ret + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table3), X86_RET_UNUSED14) + ud2 +E(L(load_table3), X86_RET_UNUSED15) + ud2 + +L(UW31): + # cfi_endproc +ENDF(C(ffi_closure_STDCALL)) + +#if defined(FFI_EXEC_STATIC_TRAMP) + .balign 16 + .globl C(ffi_closure_i386_alt) + FFI_HIDDEN(C(ffi_closure_i386_alt)) +C(ffi_closure_i386_alt): + /* See the comments above trampoline_code_table. */ + _CET_ENDBR + movl 4(%esp), %eax /* Load closure in eax */ + add $8, %esp /* Restore the stack */ + jmp C(ffi_closure_i386) +ENDF(C(ffi_closure_i386_alt)) + + .balign 16 + .globl C(ffi_closure_REGISTER_alt) + FFI_HIDDEN(C(ffi_closure_REGISTER_alt)) +C(ffi_closure_REGISTER_alt): + /* See the comments above trampoline_code_table. */ + _CET_ENDBR + movl (%esp), %eax /* Restore eax */ + add $4, %esp /* Leave closure on stack */ + jmp C(ffi_closure_REGISTER) +ENDF(C(ffi_closure_REGISTER_alt)) + + .balign 16 + .globl C(ffi_closure_STDCALL_alt) + FFI_HIDDEN(C(ffi_closure_STDCALL_alt)) +C(ffi_closure_STDCALL_alt): + /* See the comments above trampoline_code_table. */ + _CET_ENDBR + movl 4(%esp), %eax /* Load closure in eax */ + add $8, %esp /* Restore the stack */ + jmp C(ffi_closure_STDCALL) +ENDF(C(ffi_closure_STDCALL_alt)) + +/* + * Below is the definition of the trampoline code table. Each element in + * the code table is a trampoline. + * + * Because we jump to the trampoline, we place a _CET_ENDBR at the + * beginning of the trampoline to mark it as a valid branch target. This is + * part of the the Intel CET (Control Flow Enforcement Technology). + */ +/* + * The trampoline uses register eax. It saves the original value of eax on + * the stack. + * + * The trampoline has two parameters - target code to jump to and data for + * the target code. The trampoline extracts the parameters from its parameter + * block (see tramp_table_map()). The trampoline saves the data address on + * the stack. Finally, it jumps to the target code. + * + * The target code can choose to: + * + * - restore the value of eax + * - load the data address in a register + * - restore the stack pointer to what it was when the trampoline was invoked. + */ +#ifdef ENDBR_PRESENT +#define X86_DATA_OFFSET 4081 +#define X86_CODE_OFFSET 4070 +#else +#define X86_DATA_OFFSET 4085 +#define X86_CODE_OFFSET 4074 +#endif + + .align X86_TRAMP_MAP_SIZE + .globl C(trampoline_code_table) + FFI_HIDDEN(C(trampoline_code_table)) +C(trampoline_code_table): + .rept X86_TRAMP_MAP_SIZE / X86_TRAMP_SIZE + _CET_ENDBR + sub $8, %esp + movl %eax, (%esp) /* Save %eax on stack */ + call 1f /* Get next PC into %eax */ + movl X86_DATA_OFFSET(%eax), %eax /* Copy data into %eax */ + movl %eax, 4(%esp) /* Save data on stack */ + call 1f /* Get next PC into %eax */ + movl X86_CODE_OFFSET(%eax), %eax /* Copy code into %eax */ + jmp *%eax /* Jump to code */ +1: + mov (%esp), %eax + ret + .align 4 + .endr +ENDF(C(trampoline_code_table)) + .align X86_TRAMP_MAP_SIZE +#endif /* FFI_EXEC_STATIC_TRAMP */ + +#if !FFI_NO_RAW_API + +#define raw_closure_S_FS (16+16+12) + + .balign 16 + .globl C(ffi_closure_raw_SYSV) + FFI_HIDDEN(C(ffi_closure_raw_SYSV)) +C(ffi_closure_raw_SYSV): +L(UW32): + # cfi_startproc + _CET_ENDBR + subl $raw_closure_S_FS, %esp +L(UW33): + # cfi_def_cfa_offset(raw_closure_S_FS + 4) + movl %ebx, raw_closure_S_FS-4(%esp) +L(UW34): + # cfi_rel_offset(%ebx, raw_closure_S_FS-4) + + movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */ + movl %edx, 12(%esp) + leal raw_closure_S_FS+4(%esp), %edx /* load raw_args */ + movl %edx, 8(%esp) + leal 16(%esp), %edx /* load &res */ + movl %edx, 4(%esp) + movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */ + movl %ebx, (%esp) + call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */ + + movl 20(%ebx), %eax /* load cif->flags */ + andl $X86_RET_TYPE_MASK, %eax +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc4): + leal L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx +#else + leal L(load_table4)(,%eax, 8), %ecx +#endif + movl raw_closure_S_FS-4(%esp), %ebx +L(UW35): + # cfi_restore(%ebx) + movl 16(%esp), %eax /* Optimistic load */ + jmp *%ecx + + .balign 8 +L(load_table4): +E(L(load_table4), X86_RET_FLOAT) + flds 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_DOUBLE) + fldl 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_LDOUBLE) + fldt 16(%esp) + jmp L(e4) +E(L(load_table4), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e4) +E(L(load_table4), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e4) +E(L(load_table4), X86_RET_INT64) + movl 16+4(%esp), %edx + jmp L(e4) +E(L(load_table4), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table4), X86_RET_VOID) +L(e4): + addl $raw_closure_S_FS, %esp +L(UW36): + # cfi_adjust_cfa_offset(-raw_closure_S_FS) + ret +L(UW37): + # cfi_adjust_cfa_offset(raw_closure_S_FS) +E(L(load_table4), X86_RET_STRUCTPOP) + addl $raw_closure_S_FS, %esp +L(UW38): + # cfi_adjust_cfa_offset(-raw_closure_S_FS) + ret $4 +L(UW39): + # cfi_adjust_cfa_offset(raw_closure_S_FS) +E(L(load_table4), X86_RET_STRUCTARG) + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e4) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table4), X86_RET_UNUSED14) + ud2 +E(L(load_table4), X86_RET_UNUSED15) + ud2 + +L(UW40): + # cfi_endproc +ENDF(C(ffi_closure_raw_SYSV)) + +#define raw_closure_T_FS (16+16+8) + + .balign 16 + .globl C(ffi_closure_raw_THISCALL) + FFI_HIDDEN(C(ffi_closure_raw_THISCALL)) +C(ffi_closure_raw_THISCALL): +L(UW41): + # cfi_startproc + _CET_ENDBR + /* Rearrange the stack such that %ecx is the first argument. + This means moving the return address. */ + popl %edx +L(UW42): + # cfi_def_cfa_offset(0) + # cfi_register(%eip, %edx) + pushl %ecx +L(UW43): + # cfi_adjust_cfa_offset(4) + pushl %edx +L(UW44): + # cfi_adjust_cfa_offset(4) + # cfi_rel_offset(%eip, 0) + subl $raw_closure_T_FS, %esp +L(UW45): + # cfi_adjust_cfa_offset(raw_closure_T_FS) + movl %ebx, raw_closure_T_FS-4(%esp) +L(UW46): + # cfi_rel_offset(%ebx, raw_closure_T_FS-4) + + movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */ + movl %edx, 12(%esp) + leal raw_closure_T_FS+4(%esp), %edx /* load raw_args */ + movl %edx, 8(%esp) + leal 16(%esp), %edx /* load &res */ + movl %edx, 4(%esp) + movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */ + movl %ebx, (%esp) + call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */ + + movl 20(%ebx), %eax /* load cif->flags */ + andl $X86_RET_TYPE_MASK, %eax +#ifdef __PIC__ + call C(__x86.get_pc_thunk.bx) +L(pc5): + leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx +#else + leal L(load_table5)(,%eax, 8), %ecx +#endif + movl raw_closure_T_FS-4(%esp), %ebx +L(UW47): + # cfi_restore(%ebx) + movl 16(%esp), %eax /* Optimistic load */ + jmp *%ecx + + .balign 8 +L(load_table5): +E(L(load_table5), X86_RET_FLOAT) + flds 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_DOUBLE) + fldl 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_LDOUBLE) + fldt 16(%esp) + jmp L(e5) +E(L(load_table5), X86_RET_SINT8) + movsbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_SINT16) + movswl %ax, %eax + jmp L(e5) +E(L(load_table5), X86_RET_UINT8) + movzbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_UINT16) + movzwl %ax, %eax + jmp L(e5) +E(L(load_table5), X86_RET_INT64) + movl 16+4(%esp), %edx + jmp L(e5) +E(L(load_table5), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table5), X86_RET_VOID) +L(e5): + addl $raw_closure_T_FS, %esp +L(UW48): + # cfi_adjust_cfa_offset(-raw_closure_T_FS) + /* Remove the extra %ecx argument we pushed. */ + ret $4 +L(UW49): + # cfi_adjust_cfa_offset(raw_closure_T_FS) +E(L(load_table5), X86_RET_STRUCTPOP) + addl $raw_closure_T_FS, %esp +L(UW50): + # cfi_adjust_cfa_offset(-raw_closure_T_FS) + ret $8 +L(UW51): + # cfi_adjust_cfa_offset(raw_closure_T_FS) +E(L(load_table5), X86_RET_STRUCTARG) + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_1B) + movzbl %al, %eax + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_2B) + movzwl %ax, %eax + jmp L(e5) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table5), X86_RET_UNUSED14) + ud2 +E(L(load_table5), X86_RET_UNUSED15) + ud2 + +L(UW52): + # cfi_endproc +ENDF(C(ffi_closure_raw_THISCALL)) + +#endif /* !FFI_NO_RAW_API */ + +#ifdef X86_DARWIN +/* The linker in use on earlier Darwin needs weak definitions to be + placed in a coalesced section. That section should not be called + __TEXT,__text since that would be re-defining the attributes of the + .text section (which is an error for earlier tools). Here we use + '__textcoal_nt' which is what GCC emits for this. + Later linker versions are happy to use a normal section and, after + Darwin12 / OSX 10.8, the tools warn that using coalesced sections + for this is deprecated so we must switch to avoid build fails and/or + deprecation warnings. */ +# if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1080 +# define COMDAT(X) \ + .section __TEXT,__textcoal_nt,coalesced,pure_instructions; \ + .weak_definition X; \ + FFI_HIDDEN(X) +# else +# define COMDAT(X) \ + .text; \ + .weak_definition X; \ + FFI_HIDDEN(X) +# endif +#elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__)) +# define COMDAT(X) \ + .section .text.X,"axG",@progbits,X,comdat; \ + .globl X; \ + FFI_HIDDEN(X) +#else +# define COMDAT(X) +#endif + +#if defined(__PIC__) + COMDAT(C(__x86.get_pc_thunk.bx)) +C(__x86.get_pc_thunk.bx): + movl (%esp), %ebx + ret +ENDF(C(__x86.get_pc_thunk.bx)) +# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE + COMDAT(C(__x86.get_pc_thunk.dx)) +C(__x86.get_pc_thunk.dx): + movl (%esp), %edx + ret +ENDF(C(__x86.get_pc_thunk.dx)) +#endif /* DARWIN || HIDDEN */ +#endif /* __PIC__ */ + +/* Sadly, OSX cctools-as does not understand .cfi directives at all so + we build an eh frame by hand. */ + +#ifdef __APPLE__ +/* The cctools assembler will try to make a difference between two local + symbols into a relocation against, which will not work in the eh (produces + link-time fails). + To avoid this, we compute the symbol difference with a .set directive and + then substitute this value. */ +# define LEN(N, P) .set Llen$N$P,L(N)-L(P); .long Llen$N$P +/* Note, this assume DW_CFA_advance_loc1 fits into 7 bits. */ +# define ADV(N, P) .set Ladv$N$P,L(N)-L(P); .byte 2, Ladv$N$P +/* For historical reasons, the EH reg numbers for SP and FP are swapped from + the DWARF ones for 32b Darwin. */ +# define SP 5 +# define FP 4 +# define ENC 0x10 +#else +# define LEN(N, P) .long L(N)-L(P) +/* Assume DW_CFA_advance_loc1 fits. */ +# define ADV(N, P) .byte 2, L(N)-L(P) +# define SP 4 +# define FP 5 +# define ENC 0x1b +#endif + +#ifdef HAVE_AS_X86_PCREL +# define PCREL(X) X-. +#else +# define PCREL(X) X@rel +#endif + +#ifdef __APPLE__ +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EHFrame0: +#elif defined(X86_WIN32) +.section .eh_frame,"r" +#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE) +.section .eh_frame,EH_FRAME_FLAGS,@unwind +#else +.section .eh_frame,EH_FRAME_FLAGS,@progbits +#endif +#ifndef __APPLE__ +/* EH sections are already suitably aligned on Darwin. */ + .balign 4 +#endif + +L(CIE): + .set L(set0),L(ECIE)-L(SCIE) + .long L(set0) /* CIE Length */ +L(SCIE): + .long 0 /* CIE Identifier Tag */ + .byte 1 /* CIE Version */ + .ascii "zR\0" /* CIE Augmentation */ + .byte 1 /* CIE Code Alignment Factor */ + .byte 0x7c /* CIE Data Alignment Factor */ + .byte 0x8 /* CIE RA Column */ + .byte 1 /* Augmentation size */ + .byte ENC /* FDE Encoding (pcrel abs/4byte) */ + .byte 0xc, SP, 4 /* DW_CFA_def_cfa, %esp offset 4 */ + .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */ + .balign 4 +L(ECIE): + + .set L(set1),L(EFDE1)-L(SFDE1) + .long L(set1) /* FDE Length */ +L(SFDE1): + LEN(SFDE1, CIE) /* FDE CIE offset */ + .long PCREL(L(UW0)) /* Initial location */ + LEN(UW5, UW0) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW1, UW0) + .byte 0xc, FP, 8 /* DW_CFA_def_cfa, %ebp 8 */ + .byte 0x80+FP, 2 /* DW_CFA_offset, %ebp 2*-4 */ + ADV(UW2, UW1) + .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */ + ADV(UW3, UW2) + .byte 0xa /* DW_CFA_remember_state */ + .byte 0xc, SP, 4 /* DW_CFA_def_cfa, %esp 4 */ + .byte 0xc0+3 /* DW_CFA_restore, %ebx */ + .byte 0xc0+FP /* DW_CFA_restore, %ebp */ + ADV(UW4, UW3) + .byte 0xb /* DW_CFA_restore_state */ + .balign 4 +L(EFDE1): + + .set L(set2),L(EFDE2)-L(SFDE2) + .long L(set2) /* FDE Length */ +L(SFDE2): + LEN(SFDE2, CIE) /* FDE CIE offset */ + .long PCREL(L(UW6)) /* Initial location */ + LEN(UW8,UW6) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW7, UW6) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE2): + + .set L(set3),L(EFDE3)-L(SFDE3) + .long L(set3) /* FDE Length */ +L(SFDE3): + LEN(SFDE3, CIE) /* FDE CIE offset */ + .long PCREL(L(UW9)) /* Initial location */ + LEN(UW11, UW9) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW10, UW9) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE3): + + .set L(set4),L(EFDE4)-L(SFDE4) + .long L(set4) /* FDE Length */ +L(SFDE4): + LEN(SFDE4, CIE) /* FDE CIE offset */ + .long PCREL(L(UW12)) /* Initial location */ + LEN(UW20, UW12) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW13, UW12) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW14, UW13) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW15, UW14) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW16, UW15) +#else + ADV(UW16, UW13) +#endif + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW17, UW16) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW18, UW17) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW19, UW18) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE4): + + .set L(set5),L(EFDE5)-L(SFDE5) + .long L(set5) /* FDE Length */ +L(SFDE5): + LEN(SFDE5, CIE) /* FDE CIE offset */ + .long PCREL(L(UW21)) /* Initial location */ + LEN(UW23, UW21) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW22, UW21) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE5): + + .set L(set6),L(EFDE6)-L(SFDE6) + .long L(set6) /* FDE Length */ +L(SFDE6): + LEN(SFDE6, CIE) /* FDE CIE offset */ + .long PCREL(L(UW24)) /* Initial location */ + LEN(UW26, UW24) /* Address range */ + .byte 0 /* Augmentation size */ + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */ + ADV(UW25, UW24) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE6): + + .set L(set7),L(EFDE7)-L(SFDE7) + .long L(set7) /* FDE Length */ +L(SFDE7): + LEN(SFDE7, CIE) /* FDE CIE offset */ + .long PCREL(L(UW27)) /* Initial location */ + LEN(UW31, UW27) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW28, UW27) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW29, UW28) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW30, UW29) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ +#endif + .balign 4 +L(EFDE7): +#if !FFI_NO_RAW_API + .set L(set8),L(EFDE8)-L(SFDE8) + .long L(set8) /* FDE Length */ +L(SFDE8): + LEN(SFDE8, CIE) /* FDE CIE offset */ + .long PCREL(L(UW32)) /* Initial location */ + LEN(UW40, UW32) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW33, UW32) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW34, UW33) + .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */ + ADV(UW35, UW34) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW36, UW35) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW37, UW36) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW38, UW37) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW39, UW38) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE8): + + .set L(set9),L(EFDE9)-L(SFDE9) + .long L(set9) /* FDE Length */ +L(SFDE9): + LEN(SFDE9, CIE) /* FDE CIE offset */ + .long PCREL(L(UW41)) /* Initial location */ + LEN(UW52, UW41) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW42, UW41) + .byte 0xe, 0 /* DW_CFA_def_cfa_offset */ + .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */ + ADV(UW43, UW42) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW44, UW43) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */ + ADV(UW45, UW44) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW46, UW45) + .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */ + ADV(UW47, UW46) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW48, UW47) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW49, UW48) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW50, UW49) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW51, UW50) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE9): +#endif /* !FFI_NO_RAW_API */ + +#ifdef _WIN32 + .def @feat.00; + .scl 3; + .type 0; + .endef + .globl @feat.00 +@feat.00 = 1 +#endif + +#if defined(__APPLE__) + .subsections_via_symbols +# if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070 && __clang__ +/* compact unwind is not used with GCC at present, was not present before 10.6 + but has some bugs there, so do not emit until 10.7. */ + .section __LD,__compact_unwind,regular,debug + + /* compact unwind for ffi_call_i386 */ + .long C(ffi_call_i386) + .set L1,L(UW5)-L(UW0) + .long L1 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_go_closure_EAX */ + .long C(ffi_go_closure_EAX) + .set L2,L(UW8)-L(UW6) + .long L2 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_go_closure_ECX */ + .long C(ffi_go_closure_ECX) + .set L3,L(UW11)-L(UW9) + .long L3 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_closure_i386 */ + .long C(ffi_closure_i386) + .set L4,L(UW20)-L(UW12) + .long L4 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_go_closure_STDCALL */ + .long C(ffi_go_closure_STDCALL) + .set L5,L(UW23)-L(UW21) + .long L5 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_closure_REGISTER */ + .long C(ffi_closure_REGISTER) + .set L6,L(UW26)-L(UW24) + .long L6 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_closure_STDCALL */ + .long C(ffi_closure_STDCALL) + .set L7,L(UW31)-L(UW27) + .long L7 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_closure_raw_SYSV */ + .long C(ffi_closure_raw_SYSV) + .set L8,L(UW40)-L(UW32) + .long L8 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 + + /* compact unwind for ffi_closure_raw_THISCALL */ + .long C(ffi_closure_raw_THISCALL) + .set L9,L(UW52)-L(UW41) + .long L9 + .long 0x04000000 /* use dwarf unwind info */ + .long 0 + .long 0 +#endif /* use compact unwind */ +#endif /* __APPLE__ */ + +#endif /* ifndef _MSC_VER */ + +#endif /* ifdef __i386__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/x86/sysv_intel.S b/deps/libffi/src/x86/sysv_intel.S new file mode 100644 index 00000000000000..cccdf7d7683f07 --- /dev/null +++ b/deps/libffi/src/x86/sysv_intel.S @@ -0,0 +1,998 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2017, 2022 Anthony Green + - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. + + X86 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#ifndef __x86_64__ +#ifdef _MSC_VER + +#define LIBFFI_ASM +#include +#include +#include +#include "internal.h" + +#define C2(X, Y) X ## Y +#define C1(X, Y) C2(X, Y) +#define L(X) C1(L, X) +# define ENDF(X) X ENDP + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) ALIGN 8 +#else +# define E(BASE, X) ALIGN 8; ORG BASE + X * 8 +#endif + + .686P + .MODEL FLAT + +EXTRN @ffi_closure_inner@8:PROC +_TEXT SEGMENT + +/* This is declared as + + void ffi_call_i386(struct call_frame *frame, char *argp) + __attribute__((fastcall)); + + Thus the arguments are present in + + ecx: frame + edx: argp +*/ + +ALIGN 16 +PUBLIC @ffi_call_i386@8 +@ffi_call_i386@8 PROC +L(UW0): + cfi_startproc + #if !HAVE_FASTCALL + mov ecx, [esp+4] + mov edx, [esp+8] + #endif + mov eax, [esp] /* move the return address */ + mov [ecx], ebp /* store ebp into local frame */ + mov [ecx+4], eax /* store retaddr into local frame */ + + /* New stack frame based off ebp. This is a itty bit of unwind + trickery in that the CFA *has* changed. There is no easy way + to describe it correctly on entry to the function. Fortunately, + it doesn't matter too much since at all points we can correctly + unwind back to ffi_call. Note that the location to which we + moved the return address is (the new) CFA-4, so from the + perspective of the unwind info, it hasn't moved. */ + mov ebp, ecx +L(UW1): + /* cfi_def_cfa(%ebp, 8) */ + /* cfi_rel_offset(%ebp, 0) */ + + mov esp, edx /* set outgoing argument stack */ + mov eax, [20+R_EAX*4+ebp] /* set register arguments */ + mov edx, [20+R_EDX*4+ebp] + mov ecx, [20+R_ECX*4+ebp] + + call dword ptr [ebp+8] + + mov ecx, [12+ebp] /* load return type code */ + mov [ebp+8], ebx /* preserve %ebx */ +L(UW2): + /* cfi_rel_offset(%ebx, 8) */ + + and ecx, X86_RET_TYPE_MASK + lea ebx, [L(store_table) + ecx * 8] + mov ecx, [ebp+16] /* load result address */ + jmp ebx + + ALIGN 8 +L(store_table): +E(L(store_table), X86_RET_FLOAT) + fstp DWORD PTR [ecx] + jmp L(e1) +E(L(store_table), X86_RET_DOUBLE) + fstp QWORD PTR [ecx] + jmp L(e1) +E(L(store_table), X86_RET_LDOUBLE) + fstp QWORD PTR [ecx] + jmp L(e1) +E(L(store_table), X86_RET_SINT8) + movsx eax, al + mov [ecx], eax + jmp L(e1) +E(L(store_table), X86_RET_SINT16) + movsx eax, ax + mov [ecx], eax + jmp L(e1) +E(L(store_table), X86_RET_UINT8) + movzx eax, al + mov [ecx], eax + jmp L(e1) +E(L(store_table), X86_RET_UINT16) + movzx eax, ax + mov [ecx], eax + jmp L(e1) +E(L(store_table), X86_RET_INT64) + mov [ecx+4], edx + /* fallthru */ +E(L(store_table), X86_RET_int 32) + mov [ecx], eax + /* fallthru */ +E(L(store_table), X86_RET_VOID) +L(e1): + mov ebx, [ebp+8] + mov esp, ebp + pop ebp +L(UW3): + /* cfi_remember_state */ + /* cfi_def_cfa(%esp, 4) */ + /* cfi_restore(%ebx) */ + /* cfi_restore(%ebp) */ + ret +L(UW4): + /* cfi_restore_state */ + +E(L(store_table), X86_RET_STRUCTPOP) + jmp L(e1) +E(L(store_table), X86_RET_STRUCTARG) + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_1B) + mov [ecx], al + jmp L(e1) +E(L(store_table), X86_RET_STRUCT_2B) + mov [ecx], ax + jmp L(e1) + + /* Fill out the table so that bad values are predictable. */ +E(L(store_table), X86_RET_UNUSED14) + int 3 +E(L(store_table), X86_RET_UNUSED15) + int 3 + +L(UW5): + /* cfi_endproc */ +ENDF(@ffi_call_i386@8) + +/* The inner helper is declared as + + void ffi_closure_inner(struct closure_frame *frame, char *argp) + __attribute_((fastcall)) + + Thus the arguments are placed in + + ecx: frame + edx: argp +*/ + +/* Macros to help setting up the closure_data structure. */ + +#if HAVE_FASTCALL +# define closure_FS (40 + 4) +# define closure_CF 0 +#else +# define closure_FS (8 + 40 + 12) +# define closure_CF 8 +#endif + +FFI_CLOSURE_SAVE_REGS MACRO + mov [esp + closure_CF+16+R_EAX*4], eax + mov [esp + closure_CF+16+R_EDX*4], edx + mov [esp + closure_CF+16+R_ECX*4], ecx +ENDM + +FFI_CLOSURE_COPY_TRAMP_DATA MACRO + mov edx, [eax+FFI_TRAMPOLINE_SIZE] /* copy cif */ + mov ecx, [eax+FFI_TRAMPOLINE_SIZE+4] /* copy fun */ + mov eax, [eax+FFI_TRAMPOLINE_SIZE+8]; /* copy user_data */ + mov [esp+closure_CF+28], edx + mov [esp+closure_CF+32], ecx + mov [esp+closure_CF+36], eax +ENDM + +#if HAVE_FASTCALL +FFI_CLOSURE_PREP_CALL MACRO + mov ecx, esp /* load closure_data */ + lea edx, [esp+closure_FS+4] /* load incoming stack */ +ENDM +#else +FFI_CLOSURE_PREP_CALL MACRO + lea ecx, [esp+closure_CF] /* load closure_data */ + lea edx, [esp+closure_FS+4] /* load incoming stack */ + mov [esp], ecx + mov [esp+4], edx +ENDM +#endif + +FFI_CLOSURE_CALL_INNER MACRO UWN + call @ffi_closure_inner@8 +ENDM + +FFI_CLOSURE_MASK_AND_JUMP MACRO LABEL + and eax, X86_RET_TYPE_MASK + lea edx, [LABEL+eax*8] + mov eax, [esp+closure_CF] /* optimiztic load */ + jmp edx +ENDM + +ALIGN 16 +PUBLIC ffi_go_closure_EAX +ffi_go_closure_EAX PROC C +L(UW6): + /* cfi_startproc */ + sub esp, closure_FS +L(UW7): + /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [eax+4] /* copy cif */ + mov ecx, [eax +8] /* copy fun */ + mov [esp+closure_CF+28], edx + mov [esp+closure_CF+32], ecx + mov [esp+closure_CF+36], eax /* closure is user_data */ + jmp L(do_closure_i386) +L(UW8): + /* cfi_endproc */ +ENDF(ffi_go_closure_EAX) + +ALIGN 16 +PUBLIC ffi_go_closure_ECX +ffi_go_closure_ECX PROC C +L(UW9): + /* cfi_startproc */ + sub esp, closure_FS +L(UW10): + /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] /* copy cif */ + mov eax, [ecx+8] /* copy fun */ + mov [esp+closure_CF+28], edx + mov [esp+closure_CF+32], eax + mov [esp+closure_CF+36], ecx /* closure is user_data */ + jmp L(do_closure_i386) +L(UW11): + /* cfi_endproc */ +ENDF(ffi_go_closure_ECX) + +/* The closure entry points are reached from the ffi_closure trampoline. + On entry, %eax contains the address of the ffi_closure. */ + +ALIGN 16 +PUBLIC ffi_closure_i386 +ffi_closure_i386 PROC C +L(UW12): + /* cfi_startproc */ + sub esp, closure_FS +L(UW13): + /* cfi_def_cfa_offset(closure_FS + 4) */ + + FFI_CLOSURE_SAVE_REGS + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closures. */ +L(do_closure_i386):: + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(14) + FFI_CLOSURE_MASK_AND_JUMP L(C1(load_table,2)) + + ALIGN 8 +L(load_table2): +E(L(load_table2), X86_RET_FLOAT) + fld dword ptr [esp+closure_CF] + jmp L(e2) +E(L(load_table2), X86_RET_DOUBLE) + fld qword ptr [esp+closure_CF] + jmp L(e2) +E(L(load_table2), X86_RET_LDOUBLE) + fld qword ptr [esp+closure_CF] + jmp L(e2) +E(L(load_table2), X86_RET_SINT8) + movsx eax, al + jmp L(e2) +E(L(load_table2), X86_RET_SINT16) + movsx eax, ax + jmp L(e2) +E(L(load_table2), X86_RET_UINT8) + movzx eax, al + jmp L(e2) +E(L(load_table2), X86_RET_UINT16) + movzx eax, ax + jmp L(e2) +E(L(load_table2), X86_RET_INT64) + mov edx, [esp+closure_CF+4] + jmp L(e2) +E(L(load_table2), X86_RET_INT32) + nop + /* fallthru */ +E(L(load_table2), X86_RET_VOID) +L(e2): + add esp, closure_FS +L(UW16): + /* cfi_adjust_cfa_offset(-closure_FS) */ + ret +L(UW17): + /* cfi_adjust_cfa_offset(closure_FS) */ +E(L(load_table2), X86_RET_STRUCTPOP) + add esp, closure_FS +L(UW18): + /* cfi_adjust_cfa_offset(-closure_FS) */ + ret 4 +L(UW19): + /* cfi_adjust_cfa_offset(closure_FS) */ +E(L(load_table2), X86_RET_STRUCTARG) + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_1B) + movzx eax, al + jmp L(e2) +E(L(load_table2), X86_RET_STRUCT_2B) + movzx eax, ax + jmp L(e2) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table2), X86_RET_UNUSED14) + int 3 +E(L(load_table2), X86_RET_UNUSED15) + int 3 + +L(UW20): + /* cfi_endproc */ +ENDF(ffi_closure_i386) + +ALIGN 16 +PUBLIC ffi_go_closure_STDCALL +ffi_go_closure_STDCALL PROC C +L(UW21): + /* cfi_startproc */ + sub esp, closure_FS +L(UW22): + /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] /* copy cif */ + mov eax, [ecx+8] /* copy fun */ + mov [esp+closure_CF+28], edx + mov [esp+closure_CF+32], eax + mov [esp+closure_CF+36], ecx /* closure is user_data */ + jmp L(do_closure_STDCALL) +L(UW23): + /* cfi_endproc */ +ENDF(ffi_go_closure_STDCALL) + +/* For REGISTER, we have no available parameter registers, and so we + enter here having pushed the closure onto the stack. */ + +ALIGN 16 +PUBLIC ffi_closure_REGISTER +ffi_closure_REGISTER PROC C +L(UW24): + /* cfi_startproc */ + /* cfi_def_cfa(%esp, 8) */ + /* cfi_offset(%eip, -8) */ + sub esp, closure_FS-4 +L(UW25): + /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov ecx, [esp+closure_FS-4] /* load retaddr */ + mov eax, [esp+closure_FS] /* load closure */ + mov [esp+closure_FS], ecx /* move retaddr */ + jmp L(do_closure_REGISTER) +L(UW26): + /* cfi_endproc */ +ENDF(ffi_closure_REGISTER) + +/* For STDCALL (and others), we need to pop N bytes of arguments off + the stack following the closure. The amount needing to be popped + is returned to us from ffi_closure_inner. */ + +ALIGN 16 +PUBLIC ffi_closure_STDCALL +ffi_closure_STDCALL PROC C +L(UW27): + /* cfi_startproc */ + sub esp, closure_FS +L(UW28): + /* cfi_def_cfa_offset(closure_FS + 4) */ + + FFI_CLOSURE_SAVE_REGS + + /* Entry point from ffi_closure_REGISTER. */ +L(do_closure_REGISTER):: + + FFI_CLOSURE_COPY_TRAMP_DATA + + /* Entry point from preceeding Go closure. */ +L(do_closure_STDCALL):: + + FFI_CLOSURE_PREP_CALL + FFI_CLOSURE_CALL_INNER(29) + + mov ecx, eax + shr ecx, X86_RET_POP_SHIFT /* isolate pop count */ + lea ecx, [esp+closure_FS+ecx] /* compute popped esp */ + mov edx, [esp+closure_FS] /* move return address */ + mov [ecx], edx + + /* From this point on, the value of %esp upon return is %ecx+4, + and we've copied the return address to %ecx to make return easy. + There's no point in representing this in the unwind info, as + there is always a window between the mov and the ret which + will be wrong from one point of view or another. */ + + FFI_CLOSURE_MASK_AND_JUMP L(C1(load_table,3)) + + ALIGN 8 +L(load_table3): +E(L(load_table3), X86_RET_FLOAT) + fld DWORD PTR [esp+closure_CF] + mov esp, ecx + ret +E(L(load_table3), X86_RET_DOUBLE) + fld QWORD PTR [esp+closure_CF] + mov esp, ecx + ret +E(L(load_table3), X86_RET_LDOUBLE) + fld QWORD PTR [esp+closure_CF] + mov esp, ecx + ret +E(L(load_table3), X86_RET_SINT8) + movsx eax, al + mov esp, ecx + ret +E(L(load_table3), X86_RET_SINT16) + movsx eax, ax + mov esp, ecx + ret +E(L(load_table3), X86_RET_UINT8) + movzx eax, al + mov esp, ecx + ret +E(L(load_table3), X86_RET_UINT16) + movzx eax, ax + mov esp, ecx + ret +E(L(load_table3), X86_RET_INT64) + mov edx, [esp+closure_CF+4] + mov esp, ecx + ret +E(L(load_table3), X86_RET_int 32) + mov esp, ecx + ret +E(L(load_table3), X86_RET_VOID) + mov esp, ecx + ret +E(L(load_table3), X86_RET_STRUCTPOP) + mov esp, ecx + ret +E(L(load_table3), X86_RET_STRUCTARG) + mov esp, ecx + ret +E(L(load_table3), X86_RET_STRUCT_1B) + movzx eax, al + mov esp, ecx + ret +E(L(load_table3), X86_RET_STRUCT_2B) + movzx eax, ax + mov esp, ecx + ret + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table3), X86_RET_UNUSED14) + int 3 +E(L(load_table3), X86_RET_UNUSED15) + int 3 + +L(UW31): + /* cfi_endproc */ +ENDF(ffi_closure_STDCALL) + +#if !FFI_NO_RAW_API + +#define raw_closure_S_FS (16+16+12) + +ALIGN 16 +PUBLIC ffi_closure_raw_SYSV +ffi_closure_raw_SYSV PROC C +L(UW32): + /* cfi_startproc */ + sub esp, raw_closure_S_FS +L(UW33): + /* cfi_def_cfa_offset(raw_closure_S_FS + 4) */ + mov [esp+raw_closure_S_FS-4], ebx +L(UW34): + /* cfi_rel_offset(%ebx, raw_closure_S_FS-4) */ + + mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */ + mov [esp+12], edx + lea edx, [esp+raw_closure_S_FS+4] /* load raw_args */ + mov [esp+8], edx + lea edx, [esp+16] /* load &res */ + mov [esp+4], edx + mov ebx, [eax+FFI_TRAMPOLINE_SIZE] /* load cl->cif */ + mov [esp], ebx + call DWORD PTR [eax+FFI_TRAMPOLINE_SIZE+4] /* call cl->fun */ + + mov eax, [ebx+20] /* load cif->flags */ + and eax, X86_RET_TYPE_MASK +/* #ifdef __PIC__ */ +/* call __x86.get_pc_thunk.bx */ +/* L(pc4): */ +/* lea ecx, L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx */ +/* #else */ + lea ecx, [L(load_table4)+eax+8] +/* #endif */ + mov ebx, [esp+raw_closure_S_FS-4] +L(UW35): + /* cfi_restore(%ebx) */ + mov eax, [esp+16] /* Optimistic load */ + jmp dword ptr [ecx] + + ALIGN 8 +L(load_table4): +E(L(load_table4), X86_RET_FLOAT) + fld DWORD PTR [esp +16] + jmp L(e4) +E(L(load_table4), X86_RET_DOUBLE) + fld QWORD PTR [esp +16] + jmp L(e4) +E(L(load_table4), X86_RET_LDOUBLE) + fld QWORD PTR [esp +16] + jmp L(e4) +E(L(load_table4), X86_RET_SINT8) + movsx eax, al + jmp L(e4) +E(L(load_table4), X86_RET_SINT16) + movsx eax, ax + jmp L(e4) +E(L(load_table4), X86_RET_UINT8) + movzx eax, al + jmp L(e4) +E(L(load_table4), X86_RET_UINT16) + movzx eax, ax + jmp L(e4) +E(L(load_table4), X86_RET_INT64) + mov edx, [esp+16+4] + jmp L(e4) +E(L(load_table4), X86_RET_int 32) + nop + /* fallthru */ +E(L(load_table4), X86_RET_VOID) +L(e4): + add esp, raw_closure_S_FS +L(UW36): + /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */ + ret +L(UW37): + /* cfi_adjust_cfa_offset(raw_closure_S_FS) */ +E(L(load_table4), X86_RET_STRUCTPOP) + add esp, raw_closure_S_FS +L(UW38): + /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */ + ret 4 +L(UW39): + /* cfi_adjust_cfa_offset(raw_closure_S_FS) */ +E(L(load_table4), X86_RET_STRUCTARG) + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_1B) + movzx eax, al + jmp L(e4) +E(L(load_table4), X86_RET_STRUCT_2B) + movzx eax, ax + jmp L(e4) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table4), X86_RET_UNUSED14) + int 3 +E(L(load_table4), X86_RET_UNUSED15) + int 3 + +L(UW40): + /* cfi_endproc */ +ENDF(ffi_closure_raw_SYSV) + +#define raw_closure_T_FS (16+16+8) + +ALIGN 16 +PUBLIC ffi_closure_raw_THISCALL +ffi_closure_raw_THISCALL PROC C +L(UW41): + /* cfi_startproc */ + /* Rearrange the stack such that %ecx is the first argument. + This means moving the return address. */ + pop edx +L(UW42): + /* cfi_def_cfa_offset(0) */ + /* cfi_register(%eip, %edx) */ + push ecx +L(UW43): + /* cfi_adjust_cfa_offset(4) */ + push edx +L(UW44): + /* cfi_adjust_cfa_offset(4) */ + /* cfi_rel_offset(%eip, 0) */ + sub esp, raw_closure_T_FS +L(UW45): + /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ + mov [esp+raw_closure_T_FS-4], ebx +L(UW46): + /* cfi_rel_offset(%ebx, raw_closure_T_FS-4) */ + + mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */ + mov [esp+12], edx + lea edx, [esp+raw_closure_T_FS+4] /* load raw_args */ + mov [esp+8], edx + lea edx, [esp+16] /* load &res */ + mov [esp+4], edx + mov ebx, [eax+FFI_TRAMPOLINE_SIZE] /* load cl->cif */ + mov [esp], ebx + call DWORD PTR [eax+FFI_TRAMPOLINE_SIZE+4] /* call cl->fun */ + + mov eax, [ebx+20] /* load cif->flags */ + and eax, X86_RET_TYPE_MASK +/* #ifdef __PIC__ */ +/* call __x86.get_pc_thunk.bx */ +/* L(pc5): */ +/* leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx */ +/* #else */ + lea ecx, [L(load_table5)+eax*8] +/*#endif */ + mov ebx, [esp+raw_closure_T_FS-4] +L(UW47): + /* cfi_restore(%ebx) */ + mov eax, [esp+16] /* Optimistic load */ + jmp DWORD PTR [ecx] + + AlIGN 4 +L(load_table5): +E(L(load_table5), X86_RET_FLOAT) + fld DWORD PTR [esp +16] + jmp L(e5) +E(L(load_table5), X86_RET_DOUBLE) + fld QWORD PTR [esp +16] + jmp L(e5) +E(L(load_table5), X86_RET_LDOUBLE) + fld QWORD PTR [esp+16] + jmp L(e5) +E(L(load_table5), X86_RET_SINT8) + movsx eax, al + jmp L(e5) +E(L(load_table5), X86_RET_SINT16) + movsx eax, ax + jmp L(e5) +E(L(load_table5), X86_RET_UINT8) + movzx eax, al + jmp L(e5) +E(L(load_table5), X86_RET_UINT16) + movzx eax, ax + jmp L(e5) +E(L(load_table5), X86_RET_INT64) + mov edx, [esp+16+4] + jmp L(e5) +E(L(load_table5), X86_RET_int 32) + nop + /* fallthru */ +E(L(load_table5), X86_RET_VOID) +L(e5): + add esp, raw_closure_T_FS +L(UW48): + /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */ + /* Remove the extra %ecx argument we pushed. */ + ret 4 +L(UW49): + /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ +E(L(load_table5), X86_RET_STRUCTPOP) + add esp, raw_closure_T_FS +L(UW50): + /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */ + ret 8 +L(UW51): + /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ +E(L(load_table5), X86_RET_STRUCTARG) + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_1B) + movzx eax, al + jmp L(e5) +E(L(load_table5), X86_RET_STRUCT_2B) + movzx eax, ax + jmp L(e5) + + /* Fill out the table so that bad values are predictable. */ +E(L(load_table5), X86_RET_UNUSED14) + int 3 +E(L(load_table5), X86_RET_UNUSED15) + int 3 + +L(UW52): + /* cfi_endproc */ +ENDF(ffi_closure_raw_THISCALL) + +#endif /* !FFI_NO_RAW_API */ + +#ifdef X86_DARWIN +# define COMDAT(X) \ + .section __TEXT,__text,coalesced,pure_instructions; \ + .weak_definition X; \ + FFI_HIDDEN(X) +#elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__)) +# define COMDAT(X) \ + .section .text.X,"axG",@progbits,X,comdat; \ + PUBLIC X; \ + FFI_HIDDEN(X) +#else +# define COMDAT(X) +#endif + +#if 0 +#if defined(__PIC__) + COMDAT(C(__x86.get_pc_thunk.bx)) +C(__x86.get_pc_thunk.bx): + movl (%esp), %ebx + ret +ENDF(C(__x86.get_pc_thunk.bx)) +# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE + COMDAT(C(__x86.get_pc_thunk.dx)) +C(__x86.get_pc_thunk.dx): + movl (%esp), %edx + ret +ENDF(C(__x86.get_pc_thunk.dx)) +#endif /* DARWIN || HIDDEN */ +#endif /* __PIC__ */ +#endif + + +#if 0 +/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ + +#ifdef __APPLE__ +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EHFrame0: +#elif defined(X86_WIN32) +.section .eh_frame,"r" +#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE) +.section .eh_frame,EH_FRAME_FLAGS,@unwind +#else +.section .eh_frame,EH_FRAME_FLAGS,@progbits +#endif + +#ifdef HAVE_AS_X86_PCREL +# define PCREL(X) X - . +#else +# define PCREL(X) X@rel +#endif + +/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */ +#define ADV(N, P) .byte 2, L(N)-L(P) + + .balign 4 +L(CIE): + .set L(set0),L(ECIE)-L(SCIE) + .long L(set0) /* CIE Length */ +L(SCIE): + .long 0 /* CIE Identifier Tag */ + .byte 1 /* CIE Version */ + .ascii "zR\0" /* CIE Augmentation */ + .byte 1 /* CIE Code Alignment Factor */ + .byte 0x7c /* CIE Data Alignment Factor */ + .byte 0x8 /* CIE RA Column */ + .byte 1 /* Augmentation size */ + .byte 0x1b /* FDE Encoding (pcrel sdata4) */ + .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp offset 4 */ + .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */ + .balign 4 +L(ECIE): + + .set L(set1),L(EFDE1)-L(SFDE1) + .long L(set1) /* FDE Length */ +L(SFDE1): + .long L(SFDE1)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW0)) /* Initial location */ + .long L(UW5)-L(UW0) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW1, UW0) + .byte 0xc, 5, 8 /* DW_CFA_def_cfa, %ebp 8 */ + .byte 0x80+5, 2 /* DW_CFA_offset, %ebp 2*-4 */ + ADV(UW2, UW1) + .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */ + ADV(UW3, UW2) + .byte 0xa /* DW_CFA_remember_state */ + .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp 4 */ + .byte 0xc0+3 /* DW_CFA_restore, %ebx */ + .byte 0xc0+5 /* DW_CFA_restore, %ebp */ + ADV(UW4, UW3) + .byte 0xb /* DW_CFA_restore_state */ + .balign 4 +L(EFDE1): + + .set L(set2),L(EFDE2)-L(SFDE2) + .long L(set2) /* FDE Length */ +L(SFDE2): + .long L(SFDE2)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW6)) /* Initial location */ + .long L(UW8)-L(UW6) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW7, UW6) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE2): + + .set L(set3),L(EFDE3)-L(SFDE3) + .long L(set3) /* FDE Length */ +L(SFDE3): + .long L(SFDE3)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW9)) /* Initial location */ + .long L(UW11)-L(UW9) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW10, UW9) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE3): + + .set L(set4),L(EFDE4)-L(SFDE4) + .long L(set4) /* FDE Length */ +L(SFDE4): + .long L(SFDE4)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW12)) /* Initial location */ + .long L(UW20)-L(UW12) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW13, UW12) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW14, UW13) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW15, UW14) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW16, UW15) +#else + ADV(UW16, UW13) +#endif + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW17, UW16) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW18, UW17) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW19, UW18) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE4): + + .set L(set5),L(EFDE5)-L(SFDE5) + .long L(set5) /* FDE Length */ +L(SFDE5): + .long L(SFDE5)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW21)) /* Initial location */ + .long L(UW23)-L(UW21) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW22, UW21) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE5): + + .set L(set6),L(EFDE6)-L(SFDE6) + .long L(set6) /* FDE Length */ +L(SFDE6): + .long L(SFDE6)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW24)) /* Initial location */ + .long L(UW26)-L(UW24) /* Address range */ + .byte 0 /* Augmentation size */ + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */ + ADV(UW25, UW24) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE6): + + .set L(set7),L(EFDE7)-L(SFDE7) + .long L(set7) /* FDE Length */ +L(SFDE7): + .long L(SFDE7)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW27)) /* Initial location */ + .long L(UW31)-L(UW27) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW28, UW27) + .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */ +#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX + ADV(UW29, UW28) + .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */ + ADV(UW30, UW29) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ +#endif + .balign 4 +L(EFDE7): + +#if !FFI_NO_RAW_API + .set L(set8),L(EFDE8)-L(SFDE8) + .long L(set8) /* FDE Length */ +L(SFDE8): + .long L(SFDE8)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW32)) /* Initial location */ + .long L(UW40)-L(UW32) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW33, UW32) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW34, UW33) + .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */ + ADV(UW35, UW34) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW36, UW35) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW37, UW36) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + ADV(UW38, UW37) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW39, UW38) + .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE8): + + .set L(set9),L(EFDE9)-L(SFDE9) + .long L(set9) /* FDE Length */ +L(SFDE9): + .long L(SFDE9)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW41)) /* Initial location */ + .long L(UW52)-L(UW41) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW42, UW41) + .byte 0xe, 0 /* DW_CFA_def_cfa_offset */ + .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */ + ADV(UW43, UW42) + .byte 0xe, 4 /* DW_CFA_def_cfa_offset */ + ADV(UW44, UW43) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */ + ADV(UW45, UW44) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW46, UW45) + .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */ + ADV(UW47, UW46) + .byte 0xc0+3 /* DW_CFA_restore %ebx */ + ADV(UW48, UW47) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW49, UW48) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + ADV(UW50, UW49) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset */ + ADV(UW51, UW50) + .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */ + .balign 4 +L(EFDE9): +#endif /* !FFI_NO_RAW_API */ + +#ifdef _WIN32 + .def @feat.00; + .scl 3; + .type 0; + .endef + PUBLIC @feat.00 +@feat.00 = 1 +#endif + +#endif /* ifndef _MSC_VER */ +#endif /* ifndef __x86_64__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +#endif + +END diff --git a/deps/libffi/src/x86/unix64.S b/deps/libffi/src/x86/unix64.S new file mode 100644 index 00000000000000..d9c5bd4c720db1 --- /dev/null +++ b/deps/libffi/src/x86/unix64.S @@ -0,0 +1,711 @@ +/* ----------------------------------------------------------------------- + unix64.S - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 2008 Red Hat, Inc + - Copyright (c) 2002 Bo Thorsen + + x86-64 Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#ifdef __x86_64__ +#define LIBFFI_ASM +#include +#include +#include "internal64.h" +#include "asmnames.h" + + .text + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#ifdef __CET__ +/* Double slot size to 16 byte to add 4 bytes of ENDBR64. */ +# define E(BASE, X) .balign 8; .org BASE + X * 16 +#elif defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + X * 8 +#endif + +/* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, + void *raddr, void (*fnaddr)(void)); + + Bit o trickiness here -- ARGS+BYTES is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .balign 8 + .globl C(ffi_call_unix64) + FFI_HIDDEN(C(ffi_call_unix64)) + +C(ffi_call_unix64): +L(UW0): + _CET_ENDBR + movq (%rsp), %r10 /* Load return address. */ + leaq (%rdi, %rsi), %rax /* Find local stack base. */ + movq %rdx, (%rax) /* Save flags. */ + movq %rcx, 8(%rax) /* Save raddr. */ + movq %rbp, 16(%rax) /* Save old frame pointer. */ + movq %r10, 24(%rax) /* Relocate return address. */ + movq %rax, %rbp /* Finalize local stack frame. */ + + /* New stack frame based off rbp. This is a itty bit of unwind + trickery in that the CFA *has* changed. There is no easy way + to describe it correctly on entry to the function. Fortunately, + it doesn't matter too much since at all points we can correctly + unwind back to ffi_call. Note that the location to which we + moved the return address is (the new) CFA-8, so from the + perspective of the unwind info, it hasn't moved. */ +L(UW1): + /* cfi_def_cfa(%rbp, 32) */ + /* cfi_rel_offset(%rbp, 16) */ + + movq %rdi, %r10 /* Save a copy of the register area. */ + movq %r8, %r11 /* Save a copy of the target fn. */ + + /* Load up all argument registers. */ + movq (%r10), %rdi + movq 0x08(%r10), %rsi + movq 0x10(%r10), %rdx + movq 0x18(%r10), %rcx + movq 0x20(%r10), %r8 + movq 0x28(%r10), %r9 + movl 0xb0(%r10), %eax /* Set number of SSE registers. */ + testl %eax, %eax + jnz L(load_sse) +L(ret_from_load_sse): + + /* Deallocate the reg arg area, except for r10, then load via pop. */ + leaq 0xb8(%r10), %rsp + popq %r10 + + /* Call the user function. */ + call *%r11 + + /* Deallocate stack arg area; local stack frame in redzone. */ + leaq 24(%rbp), %rsp + + movq 0(%rbp), %rcx /* Reload flags. */ + movq 8(%rbp), %rdi /* Reload raddr. */ + movq 16(%rbp), %rbp /* Reload old frame pointer. */ +L(UW2): + /* cfi_remember_state */ + /* cfi_def_cfa(%rsp, 8) */ + /* cfi_restore(%rbp) */ + + /* The first byte of the flags contains the FFI_TYPE. */ + cmpb $UNIX64_RET_LAST, %cl + movzbl %cl, %r10d + leaq L(store_table)(%rip), %r11 + ja L(sa) +#ifdef __CET__ + /* NB: Originally, each slot is 8 byte. 4 bytes of ENDBR64 + + 4 bytes NOP padding double slot size to 16 bytes. */ + addl %r10d, %r10d +#endif + leaq (%r11, %r10, 8), %r10 + + /* Prep for the structure cases: scratch area in redzone. */ + leaq -20(%rsp), %rsi + jmp *%r10 + + .balign 8 +L(store_table): +E(L(store_table), UNIX64_RET_VOID) + _CET_ENDBR + ret +E(L(store_table), UNIX64_RET_UINT8) + _CET_ENDBR + movzbl %al, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_UINT16) + _CET_ENDBR + movzwl %ax, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_UINT32) + _CET_ENDBR + movl %eax, %eax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT8) + _CET_ENDBR + movsbq %al, %rax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT16) + _CET_ENDBR + movswq %ax, %rax + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_SINT32) + _CET_ENDBR + cltq + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_INT64) + _CET_ENDBR + movq %rax, (%rdi) + ret +E(L(store_table), UNIX64_RET_XMM32) + _CET_ENDBR + movd %xmm0, (%rdi) + ret +E(L(store_table), UNIX64_RET_XMM64) + _CET_ENDBR + movq %xmm0, (%rdi) + ret +E(L(store_table), UNIX64_RET_X87) + _CET_ENDBR + fstpt (%rdi) + ret +E(L(store_table), UNIX64_RET_X87_2) + _CET_ENDBR + fstpt (%rdi) + fstpt 16(%rdi) + ret +E(L(store_table), UNIX64_RET_ST_XMM0_RAX) + _CET_ENDBR + movq %rax, 8(%rsi) + jmp L(s3) +E(L(store_table), UNIX64_RET_ST_RAX_XMM0) + _CET_ENDBR + movq %xmm0, 8(%rsi) + jmp L(s2) +E(L(store_table), UNIX64_RET_ST_XMM0_XMM1) + _CET_ENDBR + movq %xmm1, 8(%rsi) + jmp L(s3) +E(L(store_table), UNIX64_RET_ST_RAX_RDX) + _CET_ENDBR + movq %rdx, 8(%rsi) +L(s2): + movq %rax, (%rsi) + shrl $UNIX64_SIZE_SHIFT, %ecx + rep movsb + ret + .balign 8 +L(s3): + movq %xmm0, (%rsi) + shrl $UNIX64_SIZE_SHIFT, %ecx + rep movsb + ret + +L(sa): call PLT(C(abort)) + + /* Many times we can avoid loading any SSE registers at all. + It's not worth an indirect jump to load the exact set of + SSE registers needed; zero or all is a good compromise. */ + .balign 2 +L(UW3): + /* cfi_restore_state */ +L(load_sse): + movdqa 0x30(%r10), %xmm0 + movdqa 0x40(%r10), %xmm1 + movdqa 0x50(%r10), %xmm2 + movdqa 0x60(%r10), %xmm3 + movdqa 0x70(%r10), %xmm4 + movdqa 0x80(%r10), %xmm5 + movdqa 0x90(%r10), %xmm6 + movdqa 0xa0(%r10), %xmm7 + jmp L(ret_from_load_sse) + +L(UW4): +ENDF(C(ffi_call_unix64)) + +/* 6 general registers, 8 vector registers, + 32 bytes of rvalue, 8 bytes of alignment. */ +#define ffi_closure_OFS_G 0 +#define ffi_closure_OFS_V (6*8) +#define ffi_closure_OFS_RVALUE (ffi_closure_OFS_V + 8*16) +#define ffi_closure_FS (ffi_closure_OFS_RVALUE + 32 + 8) + +/* The location of rvalue within the red zone after deallocating the frame. */ +#define ffi_closure_RED_RVALUE (ffi_closure_OFS_RVALUE - ffi_closure_FS) + + .balign 2 + .globl C(ffi_closure_unix64_sse) + FFI_HIDDEN(C(ffi_closure_unix64_sse)) + +C(ffi_closure_unix64_sse): +L(UW5): + _CET_ENDBR + subq $ffi_closure_FS, %rsp +L(UW6): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ + + movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp) + movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp) + movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp) + movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp) + movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp) + movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp) + movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp) + movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp) + jmp L(sse_entry1) + +L(UW7): +ENDF(C(ffi_closure_unix64_sse)) + + .balign 2 + .globl C(ffi_closure_unix64) + FFI_HIDDEN(C(ffi_closure_unix64)) + +C(ffi_closure_unix64): +L(UW8): + _CET_ENDBR + subq $ffi_closure_FS, %rsp +L(UW9): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ +L(sse_entry1): + movq %rdi, ffi_closure_OFS_G+0x00(%rsp) + movq %rsi, ffi_closure_OFS_G+0x08(%rsp) + movq %rdx, ffi_closure_OFS_G+0x10(%rsp) + movq %rcx, ffi_closure_OFS_G+0x18(%rsp) + movq %r8, ffi_closure_OFS_G+0x20(%rsp) + movq %r9, ffi_closure_OFS_G+0x28(%rsp) + +#ifdef __ILP32__ + movl FFI_TRAMPOLINE_SIZE(%r10), %edi /* Load cif */ + movl FFI_TRAMPOLINE_SIZE+4(%r10), %esi /* Load fun */ + movl FFI_TRAMPOLINE_SIZE+8(%r10), %edx /* Load user_data */ +#else + movq FFI_TRAMPOLINE_SIZE(%r10), %rdi /* Load cif */ + movq FFI_TRAMPOLINE_SIZE+8(%r10), %rsi /* Load fun */ + movq FFI_TRAMPOLINE_SIZE+16(%r10), %rdx /* Load user_data */ +#endif +L(do_closure): + leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */ + movq %rsp, %r8 /* Load reg_args */ + leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */ + call PLT(C(ffi_closure_unix64_inner)) + + /* Deallocate stack frame early; return value is now in redzone. */ + addq $ffi_closure_FS, %rsp +L(UW10): + /* cfi_adjust_cfa_offset(-ffi_closure_FS) */ + + /* The first byte of the return value contains the FFI_TYPE. */ + cmpb $UNIX64_RET_LAST, %al + movzbl %al, %r10d + leaq L(load_table)(%rip), %r11 + ja L(la) +#ifdef __CET__ + /* NB: Originally, each slot is 8 byte. 4 bytes of ENDBR64 + + 4 bytes NOP padding double slot size to 16 bytes. */ + addl %r10d, %r10d +#endif + leaq (%r11, %r10, 8), %r10 + leaq ffi_closure_RED_RVALUE(%rsp), %rsi + jmp *%r10 + + .balign 8 +L(load_table): +E(L(load_table), UNIX64_RET_VOID) + _CET_ENDBR + ret +E(L(load_table), UNIX64_RET_UINT8) + _CET_ENDBR + movzbl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_UINT16) + _CET_ENDBR + movzwl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_UINT32) + _CET_ENDBR + movl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT8) + _CET_ENDBR + movsbl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT16) + _CET_ENDBR + movswl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_SINT32) + _CET_ENDBR + movl (%rsi), %eax + ret +E(L(load_table), UNIX64_RET_INT64) + _CET_ENDBR + movq (%rsi), %rax + ret +E(L(load_table), UNIX64_RET_XMM32) + _CET_ENDBR + movd (%rsi), %xmm0 + ret +E(L(load_table), UNIX64_RET_XMM64) + _CET_ENDBR + movq (%rsi), %xmm0 + ret +E(L(load_table), UNIX64_RET_X87) + _CET_ENDBR + fldt (%rsi) + ret +E(L(load_table), UNIX64_RET_X87_2) + _CET_ENDBR + fldt 16(%rsi) + fldt (%rsi) + ret +E(L(load_table), UNIX64_RET_ST_XMM0_RAX) + _CET_ENDBR + movq 8(%rsi), %rax + jmp L(l3) +E(L(load_table), UNIX64_RET_ST_RAX_XMM0) + _CET_ENDBR + movq 8(%rsi), %xmm0 + jmp L(l2) +E(L(load_table), UNIX64_RET_ST_XMM0_XMM1) + _CET_ENDBR + movq 8(%rsi), %xmm1 + jmp L(l3) +E(L(load_table), UNIX64_RET_ST_RAX_RDX) + _CET_ENDBR + movq 8(%rsi), %rdx +L(l2): + movq (%rsi), %rax + ret + .balign 8 +L(l3): + movq (%rsi), %xmm0 + ret + +L(la): call PLT(C(abort)) + +L(UW11): +ENDF(C(ffi_closure_unix64)) + + .balign 2 + .globl C(ffi_go_closure_unix64_sse) + FFI_HIDDEN(C(ffi_go_closure_unix64_sse)) + +C(ffi_go_closure_unix64_sse): +L(UW12): + _CET_ENDBR + subq $ffi_closure_FS, %rsp +L(UW13): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ + + movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp) + movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp) + movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp) + movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp) + movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp) + movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp) + movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp) + movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp) + jmp L(sse_entry2) + +L(UW14): +ENDF(C(ffi_go_closure_unix64_sse)) + + .balign 2 + .globl C(ffi_go_closure_unix64) + FFI_HIDDEN(C(ffi_go_closure_unix64)) + +C(ffi_go_closure_unix64): +L(UW15): + _CET_ENDBR + subq $ffi_closure_FS, %rsp +L(UW16): + /* cfi_adjust_cfa_offset(ffi_closure_FS) */ +L(sse_entry2): + movq %rdi, ffi_closure_OFS_G+0x00(%rsp) + movq %rsi, ffi_closure_OFS_G+0x08(%rsp) + movq %rdx, ffi_closure_OFS_G+0x10(%rsp) + movq %rcx, ffi_closure_OFS_G+0x18(%rsp) + movq %r8, ffi_closure_OFS_G+0x20(%rsp) + movq %r9, ffi_closure_OFS_G+0x28(%rsp) + +#ifdef __ILP32__ + movl 4(%r10), %edi /* Load cif */ + movl 8(%r10), %esi /* Load fun */ + movl %r10d, %edx /* Load closure (user_data) */ +#else + movq 8(%r10), %rdi /* Load cif */ + movq 16(%r10), %rsi /* Load fun */ + movq %r10, %rdx /* Load closure (user_data) */ +#endif + jmp L(do_closure) + +L(UW17): +ENDF(C(ffi_go_closure_unix64)) + +#if defined(FFI_EXEC_STATIC_TRAMP) + .balign 8 + .globl C(ffi_closure_unix64_sse_alt) + FFI_HIDDEN(C(ffi_closure_unix64_sse_alt)) + +C(ffi_closure_unix64_sse_alt): + /* See the comments above trampoline_code_table. */ + _CET_ENDBR + movq 8(%rsp), %r10 /* Load closure in r10 */ + addq $16, %rsp /* Restore the stack */ + jmp C(ffi_closure_unix64_sse) +ENDF(C(ffi_closure_unix64_sse_alt)) + + .balign 8 + .globl C(ffi_closure_unix64_alt) + FFI_HIDDEN(C(ffi_closure_unix64_alt)) + +C(ffi_closure_unix64_alt): + /* See the comments above trampoline_code_table. */ + _CET_ENDBR + movq 8(%rsp), %r10 /* Load closure in r10 */ + addq $16, %rsp /* Restore the stack */ + jmp C(ffi_closure_unix64) + ENDF(C(ffi_closure_unix64_alt)) + +/* + * Below is the definition of the trampoline code table. Each element in + * the code table is a trampoline. + * + * Because we jump to the trampoline, we place a _CET_ENDBR at the + * beginning of the trampoline to mark it as a valid branch target. This is + * part of the the Intel CET (Control Flow Enforcement Technology). + */ +/* + * The trampoline uses register r10. It saves the original value of r10 on + * the stack. + * + * The trampoline has two parameters - target code to jump to and data for + * the target code. The trampoline extracts the parameters from its parameter + * block (see tramp_table_map()). The trampoline saves the data address on + * the stack. Finally, it jumps to the target code. + * + * The target code can choose to: + * + * - restore the value of r10 + * - load the data address in a register + * - restore the stack pointer to what it was when the trampoline was invoked. + */ +#ifdef ENDBR_PRESENT +# define X86_DATA_OFFSET 4077 +# ifdef __ILP32__ +# define X86_CODE_OFFSET 4069 +# else +# define X86_CODE_OFFSET 4073 +# endif +#else +# define X86_DATA_OFFSET 4081 +# ifdef __ILP32__ +# define X86_CODE_OFFSET 4073 +# else +# define X86_CODE_OFFSET 4077 +# endif +#endif + + .align UNIX64_TRAMP_MAP_SIZE + .globl trampoline_code_table + FFI_HIDDEN(C(trampoline_code_table)) + +C(trampoline_code_table): + .rept UNIX64_TRAMP_MAP_SIZE / UNIX64_TRAMP_SIZE + _CET_ENDBR + subq $16, %rsp /* Make space on the stack */ + movq %r10, (%rsp) /* Save %r10 on stack */ +#ifdef __ILP32__ + movl X86_DATA_OFFSET(%rip), %r10d /* Copy data into %r10 */ +#else + movq X86_DATA_OFFSET(%rip), %r10 /* Copy data into %r10 */ +#endif + movq %r10, 8(%rsp) /* Save data on stack */ +#ifdef __ILP32__ + movl X86_CODE_OFFSET(%rip), %r10d /* Copy code into %r10 */ +#else + movq X86_CODE_OFFSET(%rip), %r10 /* Copy code into %r10 */ +#endif + jmp *%r10 /* Jump to code */ + .align 8 + .endr +ENDF(C(trampoline_code_table)) + .align UNIX64_TRAMP_MAP_SIZE +#endif /* FFI_EXEC_STATIC_TRAMP */ + +/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ + +#ifdef __APPLE__ +.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EHFrame0: +#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE) +.section .eh_frame,"a",@unwind +#else +.section .eh_frame,"a",@progbits +#endif + +#ifdef HAVE_AS_X86_PCREL +# define PCREL(X) X - . +#else +# define PCREL(X) X@rel +#endif + +/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */ +#ifdef __CET__ +/* Use DW_CFA_advance_loc2 when IBT is enabled. */ +# define ADV(N, P) .byte 3; .2byte L(N)-L(P) +#else +# define ADV(N, P) .byte 2, L(N)-L(P) +#endif + + .balign 8 +L(CIE): + .set L(set0),L(ECIE)-L(SCIE) + .long L(set0) /* CIE Length */ +L(SCIE): + .long 0 /* CIE Identifier Tag */ + .byte 1 /* CIE Version */ + .ascii "zR\0" /* CIE Augmentation */ + .byte 1 /* CIE Code Alignment Factor */ + .byte 0x78 /* CIE Data Alignment Factor */ + .byte 0x10 /* CIE RA Column */ + .byte 1 /* Augmentation size */ + .byte 0x1b /* FDE Encoding (pcrel sdata4) */ + .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp offset 8 */ + .byte 0x80+16, 1 /* DW_CFA_offset, %rip offset 1*-8 */ + .balign 8 +L(ECIE): + + .set L(set1),L(EFDE1)-L(SFDE1) + .long L(set1) /* FDE Length */ +L(SFDE1): + .long L(SFDE1)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW0)) /* Initial location */ + .long L(UW4)-L(UW0) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW1, UW0) + .byte 0xc, 6, 32 /* DW_CFA_def_cfa, %rbp 32 */ + .byte 0x80+6, 2 /* DW_CFA_offset, %rbp 2*-8 */ + ADV(UW2, UW1) + .byte 0xa /* DW_CFA_remember_state */ + .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp 8 */ + .byte 0xc0+6 /* DW_CFA_restore, %rbp */ + ADV(UW3, UW2) + .byte 0xb /* DW_CFA_restore_state */ + .balign 8 +L(EFDE1): + + .set L(set2),L(EFDE2)-L(SFDE2) + .long L(set2) /* FDE Length */ +L(SFDE2): + .long L(SFDE2)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW5)) /* Initial location */ + .long L(UW7)-L(UW5) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW6, UW5) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE2): + + .set L(set3),L(EFDE3)-L(SFDE3) + .long L(set3) /* FDE Length */ +L(SFDE3): + .long L(SFDE3)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW8)) /* Initial location */ + .long L(UW11)-L(UW8) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW9, UW8) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + ADV(UW10, UW9) + .byte 0xe, 8 /* DW_CFA_def_cfa_offset 8 */ +L(EFDE3): + + .set L(set4),L(EFDE4)-L(SFDE4) + .long L(set4) /* FDE Length */ +L(SFDE4): + .long L(SFDE4)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW12)) /* Initial location */ + .long L(UW14)-L(UW12) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW13, UW12) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE4): + + .set L(set5),L(EFDE5)-L(SFDE5) + .long L(set5) /* FDE Length */ +L(SFDE5): + .long L(SFDE5)-L(CIE) /* FDE CIE offset */ + .long PCREL(L(UW15)) /* Initial location */ + .long L(UW17)-L(UW15) /* Address range */ + .byte 0 /* Augmentation size */ + ADV(UW16, UW15) + .byte 0xe /* DW_CFA_def_cfa_offset */ + .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */ + .balign 8 +L(EFDE5): +#ifdef __APPLE__ + .subsections_via_symbols + .section __LD,__compact_unwind,regular,debug + + /* compact unwind for ffi_call_unix64 */ + .quad C(ffi_call_unix64) + .set L1,L(UW4)-L(UW0) + .long L1 + .long 0x04000000 /* use dwarf unwind info */ + .quad 0 + .quad 0 + + /* compact unwind for ffi_closure_unix64_sse */ + .quad C(ffi_closure_unix64_sse) + .set L2,L(UW7)-L(UW5) + .long L2 + .long 0x04000000 /* use dwarf unwind info */ + .quad 0 + .quad 0 + + /* compact unwind for ffi_closure_unix64 */ + .quad C(ffi_closure_unix64) + .set L3,L(UW11)-L(UW8) + .long L3 + .long 0x04000000 /* use dwarf unwind info */ + .quad 0 + .quad 0 + + /* compact unwind for ffi_go_closure_unix64_sse */ + .quad C(ffi_go_closure_unix64_sse) + .set L4,L(UW14)-L(UW12) + .long L4 + .long 0x04000000 /* use dwarf unwind info */ + .quad 0 + .quad 0 + + /* compact unwind for ffi_go_closure_unix64 */ + .quad C(ffi_go_closure_unix64) + .set L5,L(UW17)-L(UW15) + .long L5 + .long 0x04000000 /* use dwarf unwind info */ + .quad 0 + .quad 0 +#endif + +#endif /* __x86_64__ */ +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/x86/win64.S b/deps/libffi/src/x86/win64.S new file mode 100644 index 00000000000000..58ec6a155e3d07 --- /dev/null +++ b/deps/libffi/src/x86/win64.S @@ -0,0 +1,254 @@ +#ifdef __x86_64__ +#define LIBFFI_ASM +#include +#include +#include +#include "asmnames.h" + +#if defined(HAVE_AS_CFI_PSEUDO_OP) + .cfi_sections .debug_frame +#endif + +#ifdef X86_WIN64 +#define SEH(...) __VA_ARGS__ +#define arg0 %rcx +#define arg1 %rdx +#define arg2 %r8 +#define arg3 %r9 +#else +#define SEH(...) +#define arg0 %rdi +#define arg1 %rsi +#define arg2 %rdx +#define arg3 %rcx +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) .balign 8 +#else +# define E(BASE, X) .balign 8; .org BASE + (X) * 8 +#endif + + .text + +/* ffi_call_win64 (void *stack, struct win64_call_frame *frame, void *r10) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + .align 8 + .globl C(ffi_call_win64) + FFI_HIDDEN(C(ffi_call_win64)) + + SEH(.seh_proc ffi_call_win64) +C(ffi_call_win64): + cfi_startproc + _CET_ENDBR + /* Set up the local stack frame and install it in rbp/rsp. */ + movq (%rsp), %rax + movq %rbp, (arg1) + movq %rax, 8(arg1) + movq arg1, %rbp + cfi_def_cfa(%rbp, 16) + cfi_rel_offset(%rbp, 0) + SEH(.seh_pushreg %rbp) + SEH(.seh_setframe %rbp, 0) + SEH(.seh_endprologue) + movq arg0, %rsp + + movq arg2, %r10 + + /* Load all slots into both general and xmm registers. */ + movq (%rsp), %rcx + movsd (%rsp), %xmm0 + movq 8(%rsp), %rdx + movsd 8(%rsp), %xmm1 + movq 16(%rsp), %r8 + movsd 16(%rsp), %xmm2 + movq 24(%rsp), %r9 + movsd 24(%rsp), %xmm3 + + call *16(%rbp) + + movl 24(%rbp), %ecx + movq 32(%rbp), %r8 + leaq 0f(%rip), %r10 + cmpl $FFI_TYPE_SMALL_STRUCT_4B, %ecx + leaq (%r10, %rcx, 8), %r10 + ja 99f + _CET_NOTRACK jmp *%r10 + +/* Below, we're space constrained most of the time. Thus we eschew the + modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */ +#define epilogue \ + leaveq; \ + cfi_remember_state; \ + cfi_def_cfa(%rsp, 8); \ + cfi_restore(%rbp); \ + ret; \ + cfi_restore_state + + .align 8 +0: +E(0b, FFI_TYPE_VOID) + epilogue +E(0b, FFI_TYPE_INT) + movslq %eax, %rax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_FLOAT) + movss %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_DOUBLE) + movsd %xmm0, (%r8) + epilogue +// FFI_TYPE_LONGDOUBLE may be FFI_TYPE_DOUBLE but we need a different value here. +E(0b, FFI_TYPE_DOUBLE + 1) + call PLT(C(abort)) +E(0b, FFI_TYPE_UINT8) + movzbl %al, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT8) + movsbq %al, %rax + jmp 98f +E(0b, FFI_TYPE_UINT16) + movzwl %ax, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT16) + movswq %ax, %rax + jmp 98f +E(0b, FFI_TYPE_UINT32) + movl %eax, %eax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT32) + movslq %eax, %rax + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_UINT64) +98: movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT64) + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_STRUCT) + epilogue +E(0b, FFI_TYPE_POINTER) + movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_COMPLEX) + call PLT(C(abort)) +E(0b, FFI_TYPE_SMALL_STRUCT_1B) + movb %al, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_2B) + movw %ax, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_4B) + movl %eax, (%r8) + epilogue + + .align 8 +99: call PLT(C(abort)) + + epilogue + + cfi_endproc + SEH(.seh_endproc) + + +/* 32 bytes of outgoing register stack space, 8 bytes of alignment, + 16 bytes of result, 32 bytes of xmm registers. */ +#define ffi_clo_FS (32+8+16+32) +#define ffi_clo_OFF_R (32+8) +#define ffi_clo_OFF_X (32+8+16) + + .align 8 + .globl C(ffi_go_closure_win64) + FFI_HIDDEN(C(ffi_go_closure_win64)) + + SEH(.seh_proc ffi_go_closure_win64) +C(ffi_go_closure_win64): + cfi_startproc + _CET_ENDBR + /* Save all integer arguments into the incoming reg stack space. */ + movq %rcx, 8(%rsp) + movq %rdx, 16(%rsp) + movq %r8, 24(%rsp) + movq %r9, 32(%rsp) + + movq 8(%r10), %rcx /* load cif */ + movq 16(%r10), %rdx /* load fun */ + movq %r10, %r8 /* closure is user_data */ + jmp 0f + cfi_endproc + SEH(.seh_endproc) + + .align 8 + .globl C(ffi_closure_win64) + FFI_HIDDEN(C(ffi_closure_win64)) + + SEH(.seh_proc ffi_closure_win64) +C(ffi_closure_win64): + cfi_startproc + _CET_ENDBR + /* Save all integer arguments into the incoming reg stack space. */ + movq %rcx, 8(%rsp) + movq %rdx, 16(%rsp) + movq %r8, 24(%rsp) + movq %r9, 32(%rsp) + + movq FFI_TRAMPOLINE_SIZE(%r10), %rcx /* load cif */ + movq FFI_TRAMPOLINE_SIZE+8(%r10), %rdx /* load fun */ + movq FFI_TRAMPOLINE_SIZE+16(%r10), %r8 /* load user_data */ +0: + subq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(ffi_clo_FS) + SEH(.seh_stackalloc ffi_clo_FS) + SEH(.seh_endprologue) + + /* Save all sse arguments into the stack frame. */ + movsd %xmm0, ffi_clo_OFF_X(%rsp) + movsd %xmm1, ffi_clo_OFF_X+8(%rsp) + movsd %xmm2, ffi_clo_OFF_X+16(%rsp) + movsd %xmm3, ffi_clo_OFF_X+24(%rsp) + + leaq ffi_clo_OFF_R(%rsp), %r9 + call PLT(C(ffi_closure_win64_inner)) + + /* Load the result into both possible result registers. */ + movq ffi_clo_OFF_R(%rsp), %rax + movsd ffi_clo_OFF_R(%rsp), %xmm0 + + addq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(-ffi_clo_FS) + ret + + cfi_endproc + SEH(.seh_endproc) + +#if defined(FFI_EXEC_STATIC_TRAMP) + .align 8 + .globl C(ffi_closure_win64_alt) + FFI_HIDDEN(C(ffi_closure_win64_alt)) + + SEH(.seh_proc ffi_closure_win64_alt) +C(ffi_closure_win64_alt): + _CET_ENDBR + movq 8(%rsp), %r10 + addq $16, %rsp + jmp C(ffi_closure_win64) + SEH(.seh_endproc) +#endif +#endif /* __x86_64__ */ + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif diff --git a/deps/libffi/src/x86/win64_intel.S b/deps/libffi/src/x86/win64_intel.S new file mode 100644 index 00000000000000..970a4f997a9811 --- /dev/null +++ b/deps/libffi/src/x86/win64_intel.S @@ -0,0 +1,238 @@ +#define LIBFFI_ASM +#include +#include +#include +#include "asmnames.h" + +#if defined(HAVE_AS_CFI_PSEUDO_OP) + .cfi_sections .debug_frame +#endif + +#ifdef X86_WIN64 +#define SEH(...) __VA_ARGS__ +#define arg0 rcx +#define arg1 rdx +#define arg2 r8 +#define arg3 r9 +#else +#define SEH(...) +#define arg0 rdi +#define arg1 rsi +#define arg2 rdx +#define arg3 rcx +#endif + +/* This macro allows the safe creation of jump tables without an + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ +/* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) +# define E(BASE, X) ALIGN 8 +#else +# define E(BASE, X) ALIGN 8; ORG BASE + (X) * 8 +#endif + + .CODE + extern PLT(C(abort)):near + extern C(ffi_closure_win64_inner):near + +/* ffi_call_win64 (void *stack, struct win64_call_frame *frame, void *r10) + + Bit o trickiness here -- FRAME is the base of the stack frame + for this function. This has been allocated by ffi_call. We also + deallocate some of the stack that has been alloca'd. */ + + ALIGN 8 + PUBLIC C(ffi_call_win64) + + ; SEH(.safesh ffi_call_win64) +C(ffi_call_win64) proc SEH(frame) + cfi_startproc + /* Set up the local stack frame and install it in rbp/rsp. */ + mov RAX, [RSP] ; movq (%rsp), %rax + mov [arg1], RBP ; movq %rbp, (arg1) + mov [arg1 + 8], RAX; movq %rax, 8(arg1) + mov RBP, arg1; movq arg1, %rbp + cfi_def_cfa(rbp, 16) + cfi_rel_offset(rbp, 0) + SEH(.pushreg rbp) + SEH(.setframe rbp, 0) + SEH(.endprolog) + mov RSP, arg0 ; movq arg0, %rsp + + mov R10, arg2 ; movq arg2, %r10 + + /* Load all slots into both general and xmm registers. */ + mov RCX, [RSP] ; movq (%rsp), %rcx + movsd XMM0, qword ptr [RSP] ; movsd (%rsp), %xmm0 + mov RDX, [RSP + 8] ;movq 8(%rsp), %rdx + movsd XMM1, qword ptr [RSP + 8]; movsd 8(%rsp), %xmm1 + mov R8, [RSP + 16] ; movq 16(%rsp), %r8 + movsd XMM2, qword ptr [RSP + 16] ; movsd 16(%rsp), %xmm2 + mov R9, [RSP + 24] ; movq 24(%rsp), %r9 + movsd XMM3, qword ptr [RSP + 24] ;movsd 24(%rsp), %xmm3 + + CALL qword ptr [RBP + 16] ; call *16(%rbp) + + mov ECX, [RBP + 24] ; movl 24(%rbp), %ecx + mov R8, [RBP + 32] ; movq 32(%rbp), %r8 + LEA R10, ffi_call_win64_tab ; leaq 0f(%rip), %r10 + CMP ECX, FFI_TYPE_SMALL_STRUCT_4B ; cmpl $FFI_TYPE_SMALL_STRUCT_4B, %ecx + LEA R10, [R10 + RCX*8] ; leaq (%r10, %rcx, 8), %r10 + JA L99 ; ja 99f + JMP R10 ; jmp *%r10 + +/* Below, we're space constrained most of the time. Thus we eschew the + modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */ +epilogue macro + LEAVE + cfi_remember_state + cfi_def_cfa(rsp, 8) + cfi_restore(rbp) + RET + cfi_restore_state +endm + + ALIGN 8 +ffi_call_win64_tab LABEL NEAR +E(0b, FFI_TYPE_VOID) + epilogue +E(0b, FFI_TYPE_INT) + movsxd rax, eax ; movslq %eax, %rax + mov qword ptr [r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_FLOAT) + movss dword ptr [r8], xmm0 ; movss %xmm0, (%r8) + epilogue +E(0b, FFI_TYPE_DOUBLE) + movsd qword ptr[r8], xmm0; movsd %xmm0, (%r8) + epilogue +// FFI_TYPE_LONGDOUBLE may be FFI_TYPE_DOUBLE but we need a different value here. +E(0b, FFI_TYPE_DOUBLE + 1) + call PLT(C(abort)) +E(0b, FFI_TYPE_UINT8) + movzx eax, al ;movzbl %al, %eax + mov qword ptr[r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT8) + movsx rax, al ; movsbq %al, %rax + jmp L98 +E(0b, FFI_TYPE_UINT16) + movzx eax, ax ; movzwl %ax, %eax + mov qword ptr[r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT16) + movsx rax, ax; movswq %ax, %rax + jmp L98 +E(0b, FFI_TYPE_UINT32) + mov eax, eax; movl %eax, %eax + mov qword ptr[r8], rax ; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT32) + movsxd rax, eax; movslq %eax, %rax + mov qword ptr [r8], rax; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_UINT64) +L98 LABEL near + mov qword ptr [r8], rax ; movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_SINT64) + mov qword ptr [r8], rax;movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_STRUCT) + epilogue +E(0b, FFI_TYPE_POINTER) + mov qword ptr [r8], rax ;movq %rax, (%r8) + epilogue +E(0b, FFI_TYPE_COMPLEX) + call PLT(C(abort)) +E(0b, FFI_TYPE_SMALL_STRUCT_1B) + mov byte ptr [r8], al ; movb %al, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_2B) + mov word ptr [r8], ax ; movw %ax, (%r8) + epilogue +E(0b, FFI_TYPE_SMALL_STRUCT_4B) + mov dword ptr [r8], eax ; movl %eax, (%r8) + epilogue + + align 8 +L99 LABEL near + call PLT(C(abort)) + + epilogue + + cfi_endproc + C(ffi_call_win64) endp + + +/* 32 bytes of outgoing register stack space, 8 bytes of alignment, + 16 bytes of result, 32 bytes of xmm registers. */ +#define ffi_clo_FS (32+8+16+32) +#define ffi_clo_OFF_R (32+8) +#define ffi_clo_OFF_X (32+8+16) + + align 8 + PUBLIC C(ffi_go_closure_win64) + +C(ffi_go_closure_win64) proc + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + mov qword ptr [rsp + 8], rcx; movq %rcx, 8(%rsp) + mov qword ptr [rsp + 16], rdx; movq %rdx, 16(%rsp) + mov qword ptr [rsp + 24], r8; movq %r8, 24(%rsp) + mov qword ptr [rsp + 32], r9 ;movq %r9, 32(%rsp) + + mov rcx, qword ptr [r10 + 8]; movq 8(%r10), %rcx /* load cif */ + mov rdx, qword ptr [r10 + 16]; movq 16(%r10), %rdx /* load fun */ + mov r8, r10 ; movq %r10, %r8 /* closure is user_data */ + jmp ffi_closure_win64_2 + cfi_endproc + C(ffi_go_closure_win64) endp + + align 8 + +PUBLIC C(ffi_closure_win64) +C(ffi_closure_win64) PROC FRAME + cfi_startproc + /* Save all integer arguments into the incoming reg stack space. */ + mov qword ptr [rsp + 8], rcx; movq %rcx, 8(%rsp) + mov qword ptr [rsp + 16], rdx; movq %rdx, 16(%rsp) + mov qword ptr [rsp + 24], r8; movq %r8, 24(%rsp) + mov qword ptr [rsp + 32], r9; movq %r9, 32(%rsp) + + mov rcx, qword ptr [FFI_TRAMPOLINE_SIZE + r10] ;movq FFI_TRAMPOLINE_SIZE(%r10), %rcx /* load cif */ + mov rdx, qword ptr [FFI_TRAMPOLINE_SIZE + 8 + r10] ; movq FFI_TRAMPOLINE_SIZE+8(%r10), %rdx /* load fun */ + mov r8, qword ptr [FFI_TRAMPOLINE_SIZE+16+r10] ;movq FFI_TRAMPOLINE_SIZE+16(%r10), %r8 /* load user_data */ +ffi_closure_win64_2 LABEL near + sub rsp, ffi_clo_FS ;subq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(ffi_clo_FS) + SEH(.allocstack ffi_clo_FS) + SEH(.endprolog) + + /* Save all sse arguments into the stack frame. */ + movsd qword ptr [ffi_clo_OFF_X + rsp], xmm0 ; movsd %xmm0, ffi_clo_OFF_X(%rsp) + movsd qword ptr [ffi_clo_OFF_X+8+rsp], xmm1 ; movsd %xmm1, ffi_clo_OFF_X+8(%rsp) + movsd qword ptr [ffi_clo_OFF_X+16+rsp], xmm2 ; movsd %xmm2, ffi_clo_OFF_X+16(%rsp) + movsd qword ptr [ffi_clo_OFF_X+24+rsp], xmm3 ; movsd %xmm3, ffi_clo_OFF_X+24(%rsp) + + lea r9, [ffi_clo_OFF_R + rsp] ; leaq ffi_clo_OFF_R(%rsp), %r9 + call C(ffi_closure_win64_inner) + + /* Load the result into both possible result registers. */ + + mov rax, qword ptr [ffi_clo_OFF_R + rsp] ;movq ffi_clo_OFF_R(%rsp), %rax + movsd xmm0, qword ptr [rsp + ffi_clo_OFF_R] ;movsd ffi_clo_OFF_R(%rsp), %xmm0 + + add rsp, ffi_clo_FS ;addq $ffi_clo_FS, %rsp + cfi_adjust_cfa_offset(-ffi_clo_FS) + ret + + cfi_endproc + C(ffi_closure_win64) endp + +#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits +#endif +_text ends +end \ No newline at end of file diff --git a/deps/libffi/src/xtensa/ffi.c b/deps/libffi/src/xtensa/ffi.c new file mode 100644 index 00000000000000..82b42a16d25307 --- /dev/null +++ b/deps/libffi/src/xtensa/ffi.c @@ -0,0 +1,306 @@ +/* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2013 Tensilica, Inc. + + XTENSA Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#include +#include + +/* + |----------------------------------------| + | | + on entry to ffi_call ----> |----------------------------------------| + | caller stack frame for registers a0-a3 | + |----------------------------------------| + | | + | additional arguments | + entry of the function ---> |----------------------------------------| + | copy of function arguments a2-a7 | + | - - - - - - - - - - - - - | + | | + + The area below the entry line becomes the new stack frame for the function. + +*/ + + +#define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST + + +extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags, + void(*fn)(void), unsigned nbytes, extended_cif*); +extern void ffi_closure_SYSV(void) FFI_HIDDEN; + +ffi_status ffi_prep_cif_machdep(ffi_cif *cif) +{ + switch(cif->rtype->type) { + case FFI_TYPE_SINT8: + case FFI_TYPE_UINT8: + case FFI_TYPE_SINT16: + case FFI_TYPE_UINT16: + cif->flags = cif->rtype->type; + break; + case FFI_TYPE_VOID: + case FFI_TYPE_FLOAT: + cif->flags = FFI_TYPE_UINT32; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + cif->flags = FFI_TYPE_UINT64; // cif->rtype->type; + break; + case FFI_TYPE_STRUCT: + cif->flags = FFI_TYPE_STRUCT; //_REGS; + /* Up to 16 bytes are returned in registers */ + if (cif->rtype->size > 4 * 4) { + /* returned structure is referenced by a register; use 8 bytes + (including 4 bytes for potential additional alignment) */ + cif->flags = FFI_TYPE_STRUCT; + cif->bytes += 8; + } + break; + + default: + cif->flags = FFI_TYPE_UINT32; + break; + } + + /* Round up stack size needed for arguments. + Allocate FFI_REGISTER_ARGS_SPACE bytes when there are only arguments + passed in registers, round space reserved for arguments passed on stack + up to ABI-specified alignment. */ + if (cif->bytes < FFI_REGISTER_NARGS * 4) + cif->bytes = FFI_REGISTER_ARGS_SPACE; + else + cif->bytes = FFI_REGISTER_ARGS_SPACE + + FFI_ALIGN(cif->bytes - FFI_REGISTER_NARGS * 4, + XTENSA_STACK_ALIGNMENT); + return FFI_OK; +} + +void ffi_prep_args(extended_cif *ecif, unsigned char* stack) +{ + unsigned int i; + unsigned long *addr; + ffi_type **ptr; + + union { + void **v; + char **c; + signed char **sc; + unsigned char **uc; + signed short **ss; + unsigned short **us; + unsigned int **i; + long long **ll; + float **f; + double **d; + } p_argv; + + /* Verify that everything is aligned up properly */ + FFI_ASSERT (((unsigned long) stack & 0x7) == 0); + + p_argv.v = ecif->avalue; + addr = (unsigned long*)stack; + + /* structures with a size greater than 16 bytes are passed in memory */ + if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16) + { + *addr++ = (unsigned long)ecif->rvalue; + } + + for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types; + i > 0; + i--, ptr++, p_argv.v++) + { + switch ((*ptr)->type) + { + case FFI_TYPE_SINT8: + *addr++ = **p_argv.sc; + break; + case FFI_TYPE_UINT8: + *addr++ = **p_argv.uc; + break; + case FFI_TYPE_SINT16: + *addr++ = **p_argv.ss; + break; + case FFI_TYPE_UINT16: + *addr++ = **p_argv.us; + break; + case FFI_TYPE_FLOAT: + case FFI_TYPE_INT: + case FFI_TYPE_UINT32: + case FFI_TYPE_SINT32: + case FFI_TYPE_POINTER: + *addr++ = **p_argv.i; + break; + case FFI_TYPE_DOUBLE: + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: + if (((unsigned long)addr & 4) != 0) + addr++; + *(unsigned long long*)addr = **p_argv.ll; + addr += sizeof(unsigned long long) / sizeof (addr); + break; + + case FFI_TYPE_STRUCT: + { + unsigned long offs; + unsigned long size; + + if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4) + addr++; + + offs = (unsigned long) addr - (unsigned long) stack; + size = (*ptr)->size; + + /* Entire structure must fit the argument registers or referenced */ + if (offs < FFI_REGISTER_NARGS * 4 + && offs + size > FFI_REGISTER_NARGS * 4) + addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4); + + memcpy((char*) addr, *p_argv.c, size); + addr += (size + 3) / 4; + break; + } + + default: + FFI_ASSERT(0); + } + } +} + + +void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue) +{ + extended_cif ecif; + unsigned long rsize = cif->rtype->size; + int flags = cif->flags; + void *alloc = NULL; + + ecif.cif = cif; + ecif.avalue = avalue; + + /* Note that for structures that are returned in registers (size <= 16 bytes) + we allocate a temporary buffer and use memcpy to copy it to the final + destination. The reason is that the target address might be misaligned or + the length not a multiple of 4 bytes. Handling all those cases would be + very complex. */ + + if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL)) + { + alloc = alloca(FFI_ALIGN(rsize, 4)); + ecif.rvalue = alloc; + } + else + { + ecif.rvalue = rvalue; + } + + if (cif->abi != FFI_SYSV) + FFI_ASSERT(0); + + ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif); + + if (alloc != NULL && rvalue != NULL) + memcpy(rvalue, alloc, rsize); +} + +extern void ffi_trampoline(); +extern void ffi_cacheflush(void* start, void* end); + +ffi_status +ffi_prep_closure_loc (ffi_closure* closure, + ffi_cif* cif, + void (*fun)(ffi_cif*, void*, void**, void*), + void *user_data, + void *codeloc) +{ + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */ + memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE); + *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV; + + // Do we have this function? + // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE) + ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE); + + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; + return FFI_OK; +} + + +long FFI_HIDDEN +ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue) +{ + ffi_cif *cif; + ffi_type **arg_types; + void **avalue; + int i, areg; + + cif = closure->cif; + if (cif->abi != FFI_SYSV) + return FFI_BAD_ABI; + + areg = 0; + + int rtype = cif->rtype->type; + if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4) + { + rvalue = *values; + areg++; + } + + cif = closure->cif; + arg_types = cif->arg_types; + avalue = alloca(cif->nargs * sizeof(void *)); + + for (i = 0; i < cif->nargs; i++) + { + if (arg_types[i]->alignment == 8 && (areg & 1) != 0) + areg++; + + // skip the entry a1, * framework, see ffi_trampoline + if (areg == FFI_REGISTER_NARGS) + areg = (FFI_REGISTER_ARGS_SPACE + 32) / 4; + + if (arg_types[i]->type == FFI_TYPE_STRUCT) + { + int numregs = ((arg_types[i]->size + 3) & ~3) / 4; + if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS) + areg = (FFI_REGISTER_ARGS_SPACE + 32) / 4; + } + + avalue[i] = &values[areg]; + areg += (arg_types[i]->size + 3) / 4; + } + + (closure->fun)(cif, rvalue, avalue, closure->user_data); + + return rtype; +} diff --git a/deps/libffi/src/xtensa/ffitarget.h b/deps/libffi/src/xtensa/ffitarget.h new file mode 100644 index 00000000000000..4231ed374ebe47 --- /dev/null +++ b/deps/libffi/src/xtensa/ffitarget.h @@ -0,0 +1,57 @@ +/* -----------------------------------------------------------------*-C-*- + ffitarget.h - Copyright (c) 2013 Tensilica, Inc. + Target configuration macros for XTENSA. + + 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. + ----------------------------------------------------------------------- */ + +#ifndef LIBFFI_TARGET_H +#define LIBFFI_TARGET_H + +#ifndef LIBFFI_H +#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." +#endif + +#ifndef LIBFFI_ASM +typedef unsigned long ffi_arg; +typedef signed long ffi_sarg; + +typedef enum ffi_abi { + FFI_FIRST_ABI = 0, + FFI_SYSV, + FFI_LAST_ABI, + FFI_DEFAULT_ABI = FFI_SYSV +} ffi_abi; +#endif + +#define FFI_REGISTER_NARGS 6 +#define XTENSA_STACK_ALIGNMENT 16 +#define FFI_REGISTER_ARGS_SPACE ((FFI_REGISTER_NARGS * 4 + \ + XTENSA_STACK_ALIGNMENT - 1) & \ + -XTENSA_STACK_ALIGNMENT) + +/* ---- Definitions for closures ----------------------------------------- */ + +#define FFI_CLOSURES 1 +#define FFI_NATIVE_RAW_API 0 +#define FFI_TRAMPOLINE_SIZE 24 + +#endif diff --git a/deps/libffi/src/xtensa/sysv.S b/deps/libffi/src/xtensa/sysv.S new file mode 100644 index 00000000000000..70e83ac2283e2e --- /dev/null +++ b/deps/libffi/src/xtensa/sysv.S @@ -0,0 +1,268 @@ +/* ----------------------------------------------------------------------- + sysv.S - Copyright (c) 2013 Tensilica, Inc. + + XTENSA Foreign Function Interface + + 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. + ----------------------------------------------------------------------- */ + +#define LIBFFI_ASM +#include +#include + +#define ENTRY(name) .text; .globl name; .type name,@function; .align 4; name: +#define END(name) .size name , . - name + +/* Assert that the table below is in sync with ffi.h. */ + +#if FFI_TYPE_UINT8 != 5 \ + || FFI_TYPE_SINT8 != 6 \ + || FFI_TYPE_UINT16 != 7 \ + || FFI_TYPE_SINT16 != 8 \ + || FFI_TYPE_UINT32 != 9 \ + || FFI_TYPE_SINT32 != 10 \ + || FFI_TYPE_UINT64 != 11 +#error "xtensa/sysv.S out of sync with ffi.h" +#endif + +#define FFI_REGISTER_ARGS_OFFSET ((XTENSA_STACK_ALIGNMENT - \ + FFI_REGISTER_NARGS * 4) & \ + (XTENSA_STACK_ALIGNMENT - 1)) + +/* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif) + void *rvalue; a2 + unsigned long rbytes; a3 + unsigned flags; a4 + void (*fnaddr)(); a5 + unsigned long bytes; a6 + extended_cif* ecif) a7 +*/ + +ENTRY(ffi_call_SYSV) + + entry a1, 32 # 32 byte frame for using call8 below + + mov a10, a7 # a10(->arg0): ecif + sub a11, a1, a6 # a11(->arg1): stack pointer + mov a7, a1 # fp + movsp a1, a11 # set new sp = old_sp - bytes + + # align ffi_prep_args stack argument so that arguments + # passed on stack if any start on 16-byte aligned boundary + + addi a11, a11, FFI_REGISTER_ARGS_OFFSET + + movi a8, ffi_prep_args + callx8 a8 # ffi_prep_args(ecif, stack) + + # prepare to move stack pointer back + # to point to arguments passed on stack + + addi a6, a1, FFI_REGISTER_ARGS_SPACE + + # we can pass up to 6 arguments in registers + # for simplicity, just load 6 arguments + + l32i a10, a1, FFI_REGISTER_ARGS_OFFSET + 0 + l32i a11, a1, FFI_REGISTER_ARGS_OFFSET + 4 + l32i a12, a1, FFI_REGISTER_ARGS_OFFSET + 8 + l32i a13, a1, FFI_REGISTER_ARGS_OFFSET + 12 + l32i a14, a1, FFI_REGISTER_ARGS_OFFSET + 16 + l32i a15, a1, FFI_REGISTER_ARGS_OFFSET + 20 + + # move stack pointer + + movsp a1, a6 + + callx8 a5 # (*fn)(args...) + + # Handle return value(s) + + beqz a2, .Lexit + + movi a5, FFI_TYPE_STRUCT + bne a4, a5, .Lstore + movi a5, 16 + blt a5, a3, .Lexit + + s32i a10, a2, 0 + blti a3, 5, .Lexit + addi a3, a3, -1 + s32i a11, a2, 4 + blti a3, 8, .Lexit + s32i a12, a2, 8 + blti a3, 12, .Lexit + s32i a13, a2, 12 + +.Lexit: retw + +.Lstore: + addi a4, a4, -FFI_TYPE_UINT8 + bgei a4, 7, .Lexit # should never happen + movi a6, store_calls + add a4, a4, a4 + addx4 a6, a4, a6 # store_table + idx * 8 + jx a6 + + .align 8 +store_calls: + # UINT8 + s8i a10, a2, 0 + retw + + # SINT8 + .align 8 + s8i a10, a2, 0 + retw + + # UINT16 + .align 8 + s16i a10, a2, 0 + retw + + # SINT16 + .align 8 + s16i a10, a2, 0 + retw + + # UINT32 + .align 8 + s32i a10, a2, 0 + retw + + # SINT32 + .align 8 + s32i a10, a2, 0 + retw + + # UINT64 + .align 8 + s32i a10, a2, 0 + s32i a11, a2, 4 + retw + +END(ffi_call_SYSV) + + +/* + * void ffi_cacheflush (unsigned long start, unsigned long end) + */ + +#define EXTRA_ARGS_SIZE 24 + +ENTRY(ffi_cacheflush) + + entry a1, 32 + +1: +#if XCHAL_DCACHE_SIZE + dhwbi a2, 0 +#endif +#if XCHAL_ICACHE_SIZE + ihi a2, 0 +#endif + addi a2, a2, 4 + blt a2, a3, 1b + + retw + +END(ffi_cacheflush) + +/* ffi_trampoline is copied to the stack */ + +ENTRY(ffi_trampoline) + + /* 32 bytes for spill + spill overflow area of a frame that uses + call8, + FFI_REGISTER_NARGS * 4 bytes for arguments passed in registers, + aligned up to 4 to maintain 16 byte stack alignment, + 4 * 4 bytes for the result. + This size must be in sync with ffi_closure_SYSV_inner logic. + */ + entry a1, 32 + FFI_REGISTER_ARGS_SPACE + (4 * 4) # [ 0] + j 2f # [ 3] + .align 4 # [ 6] +1: .long 0 # [ 8] +2: l32r a15, 1b # [12] + _mov a14, a0 # [15] + callx0 a15 # [18] + # [21] +END(ffi_trampoline) + +/* + * ffi_closure() + * + * a0: closure + 21 + * a14: return address (a0) + */ + +ENTRY(ffi_closure_SYSV) + + /* intentionally omitting entry here */ + + # restore return address (a0) and move pointer to closure to a10 + addi a10, a0, -21 + mov a0, a14 + + # allow up to 4 arguments as return values + addi a11, a1, 4 * 4 + + # save up to 6 arguments to stack (allocated by entry below) + s32i a2, a11, 0 + s32i a3, a11, 4 + s32i a4, a11, 8 + s32i a5, a11, 12 + s32i a6, a11, 16 + s32i a7, a11, 20 + + movi a8, ffi_closure_SYSV_inner + mov a12, a1 + callx8 a8 # .._inner(*closure, **avalue, *rvalue) + + # load up to four return arguments + l32i a2, a1, 0 + l32i a3, a1, 4 + l32i a4, a1, 8 + l32i a5, a1, 12 + + # (sign-)extend return value + movi a11, FFI_TYPE_UINT8 + bne a10, a11, 1f + extui a2, a2, 0, 8 + retw + +1: movi a11, FFI_TYPE_SINT8 + bne a10, a11, 1f + sext a2, a2, 7 + retw + +1: movi a11, FFI_TYPE_UINT16 + bne a10, a11, 1f + extui a2, a2, 0, 16 + retw + +1: movi a11, FFI_TYPE_SINT16 + bne a10, a11, 1f + sext a2, a2, 15 + +1: retw + +END(ffi_closure_SYSV) diff --git a/deps/libffi/stamp-h.in b/deps/libffi/stamp-h.in new file mode 100644 index 00000000000000..9788f70238c918 --- /dev/null +++ b/deps/libffi/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/deps/llhttp/CMakeLists.txt b/deps/llhttp/CMakeLists.txt index 6398043145c879..ebcddbcd478210 100644 --- a/deps/llhttp/CMakeLists.txt +++ b/deps/llhttp/CMakeLists.txt @@ -1,8 +1,9 @@ cmake_minimum_required(VERSION 3.25.0) cmake_policy(SET CMP0069 NEW) -project(llhttp VERSION 9.3.1) +project(llhttp VERSION 9.4.1) include(GNUInstallDirs) +include(CMakePackageConfigHelpers) set(CMAKE_C_STANDARD 99) @@ -66,18 +67,6 @@ function(config_library target) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) - - install(FILES - ${CMAKE_CURRENT_SOURCE_DIR}/libllhttp.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig - ) - - # This is required to work with FetchContent - install(EXPORT llhttp - FILE llhttp-config.cmake - NAMESPACE llhttp:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llhttp - ) endfunction(config_library target) if(LLHTTP_BUILD_SHARED_LIBS) @@ -98,6 +87,36 @@ if(LLHTTP_BUILD_STATIC_LIBS) config_library(llhttp_static) endif() +if(TARGET llhttp_shared OR TARGET llhttp_static) + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/libllhttp.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) + + install(EXPORT llhttp + FILE llhttp-targets.cmake + NAMESPACE llhttp:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llhttp + ) + + configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/llhttpConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/llhttpConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llhttp + ) + + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/llhttpConfigVersion.cmake + COMPATIBILITY AnyNewerVersion + ) + + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/llhttpConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/llhttpConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llhttp + ) +endif() + # On windows with Visual Studio, add a debug postfix so that release # and debug libraries can coexist. if(MSVC) diff --git a/deps/llhttp/LICENSE b/deps/llhttp/LICENSE index 6c1512dd6bcd6d..23682c03875844 100644 --- a/deps/llhttp/LICENSE +++ b/deps/llhttp/LICENSE @@ -1,6 +1,6 @@ -This software is licensed under the MIT License. +MIT License -Copyright Fedor Indutny, 2018. +Copyright © 2018 Fedor Indutny Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/deps/llhttp/README.md b/deps/llhttp/README.md index 008b7e622bc962..019a1d15226510 100644 --- a/deps/llhttp/README.md +++ b/deps/llhttp/README.md @@ -112,7 +112,7 @@ The following callbacks can return `0` (proceed normally), `-1` (error) or `HPE_ * `on_message_complete`: Invoked when a request/response has been completedly parsed. * `on_url_complete`: Invoked after the URL has been parsed. * `on_method_complete`: Invoked after the HTTP method has been parsed. -* `on_protocol_complete`: Invoked after the HTTP version has been parsed. +* `on_protocol_complete`: Invoked after the protocol has been parsed. * `on_version_complete`: Invoked after the HTTP version has been parsed. * `on_status_complete`: Invoked after the status code has been parsed. * `on_header_field_complete`: Invoked after a header name has been parsed. @@ -397,6 +397,16 @@ With this flag this check is disabled. **Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!** +### `void llhttp_set_lenient_header_value_relaxed(llhttp_t* parser, int enabled)` + +Enables/disables relaxed handling of control characters in header values. + +Normally `llhttp` would error when header values contain characters not in the valid set (HTAB, SP, VCHAR, OBS_TEXT). With +this flag, control characters (except for NULL, CR & LF) will be accepted in header values. + +This does not create any known security issue, but does allow content considered 'invalid' by +[RFC 9110](https://www.rfc-editor.org/rfc/rfc9110#name-field-values) and so should be avoided by default. + ## Build Instructions Make sure you have [Node.js](https://nodejs.org/), npm and npx installed. Then under project directory run: diff --git a/deps/llhttp/cmake/llhttpConfig.cmake.in b/deps/llhttp/cmake/llhttpConfig.cmake.in new file mode 100644 index 00000000000000..4d7e02c775230e --- /dev/null +++ b/deps/llhttp/cmake/llhttpConfig.cmake.in @@ -0,0 +1,19 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/llhttp-targets.cmake") + +if(NOT TARGET llhttp::llhttp) + if(TARGET llhttp::llhttp_shared) + add_library(llhttp::llhttp INTERFACE IMPORTED) + set_property(TARGET llhttp::llhttp PROPERTY + INTERFACE_LINK_LIBRARIES llhttp::llhttp_shared + ) + elseif(TARGET llhttp::llhttp_static) + add_library(llhttp::llhttp INTERFACE IMPORTED) + set_property(TARGET llhttp::llhttp PROPERTY + INTERFACE_LINK_LIBRARIES llhttp::llhttp_static + ) + endif() +endif() + +check_required_components(llhttp) diff --git a/deps/llhttp/include/llhttp.h b/deps/llhttp/include/llhttp.h index 194fee8c906ed3..0ef2f64712af7b 100644 --- a/deps/llhttp/include/llhttp.h +++ b/deps/llhttp/include/llhttp.h @@ -3,7 +3,7 @@ #define INCLUDE_LLHTTP_H_ #define LLHTTP_VERSION_MAJOR 9 -#define LLHTTP_VERSION_MINOR 3 +#define LLHTTP_VERSION_MINOR 4 #define LLHTTP_VERSION_PATCH 1 #ifndef INCLUDE_LLHTTP_ITSELF_H_ @@ -118,7 +118,8 @@ enum llhttp_lenient_flags { LENIENT_OPTIONAL_LF_AFTER_CR = 0x40, LENIENT_OPTIONAL_CRLF_AFTER_CHUNK = 0x80, LENIENT_OPTIONAL_CR_BEFORE_LF = 0x100, - LENIENT_SPACES_AFTER_CHUNK_SIZE = 0x200 + LENIENT_SPACES_AFTER_CHUNK_SIZE = 0x200, + LENIENT_HEADER_VALUE_RELAXED = 0x400 }; typedef enum llhttp_lenient_flags llhttp_lenient_flags_t; @@ -898,6 +899,23 @@ void llhttp_set_lenient_optional_crlf_after_chunk(llhttp_t* parser, int enabled) LLHTTP_EXPORT void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, int enabled); +/* Enables/disables relaxed handling of unusual characters in header values. + * + * RFC 9110 describes NULL, CR and LF as 'dangerous' and says they MUST be + * rejected, while other control characters are merely 'invalid' and discouraged, + * and are explicitly allowed by other standards (e.g. WHATWG Fetch) and + * in surprisingly common use on the web. + * + * This flag enables these 'invalid but common' characters, aiming to + * maximize compatibility without enabling any potentially dangerous scenarios. + * + * Unlike `llhttp_set_lenient_headers()`, this does NOT enable any other + * potentially unsafe behaviors (like accepting whitespace before colons + * or after the start line). + */ +LLHTTP_EXPORT +void llhttp_set_lenient_header_value_relaxed(llhttp_t* parser, int enabled); + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/deps/llhttp/src/api.c b/deps/llhttp/src/api.c index 0245254177ac8c..ae5e862d98055a 100644 --- a/deps/llhttp/src/api.c +++ b/deps/llhttp/src/api.c @@ -316,6 +316,14 @@ void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, int enabled) { } } +void llhttp_set_lenient_header_value_relaxed(llhttp_t* parser, int enabled) { + if (enabled) { + parser->lenient_flags |= LENIENT_HEADER_VALUE_RELAXED; + } else { + parser->lenient_flags &= ~LENIENT_HEADER_VALUE_RELAXED; + } +} + /* Callbacks */ diff --git a/deps/llhttp/src/llhttp.c b/deps/llhttp/src/llhttp.c index 515ba512abbdb0..7e21348b2bc874 100644 --- a/deps/llhttp/src/llhttp.c +++ b/deps/llhttp/src/llhttp.c @@ -40,195 +40,201 @@ static const unsigned char llparse_blob1[] = { static const unsigned char llparse_blob2[] = { 'l', 'o', 's', 'e' }; -static const unsigned char llparse_blob3[] = { - 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e' +#ifdef __SSE4_2__ +static const unsigned char ALIGN(16) llparse_blob3[] = { + 0x1, 0x9, 0xb, 0xc, 0xe, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0 }; +#endif /* __SSE4_2__ */ static const unsigned char llparse_blob4[] = { - 'p', 'g', 'r', 'a', 'd', 'e' + 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e' }; static const unsigned char llparse_blob5[] = { + 'p', 'g', 'r', 'a', 'd', 'e' +}; +static const unsigned char llparse_blob6[] = { 'c', 'h', 'u', 'n', 'k', 'e', 'd' }; #ifdef __SSE4_2__ -static const unsigned char ALIGN(16) llparse_blob6[] = { +static const unsigned char ALIGN(16) llparse_blob7[] = { 0x9, 0x9, ' ', '~', 0x80, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; #endif /* __SSE4_2__ */ #ifdef __SSE4_2__ -static const unsigned char ALIGN(16) llparse_blob7[] = { +static const unsigned char ALIGN(16) llparse_blob8[] = { '!', '!', '#', '\'', '*', '+', '-', '.', '0', '9', 'A', 'Z', '^', 'z', '|', '|' }; #endif /* __SSE4_2__ */ #ifdef __SSE4_2__ -static const unsigned char ALIGN(16) llparse_blob8[] = { +static const unsigned char ALIGN(16) llparse_blob9[] = { '~', '~', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; #endif /* __SSE4_2__ */ -static const unsigned char llparse_blob9[] = { +static const unsigned char llparse_blob10[] = { 'e', 'n', 't', '-', 'l', 'e', 'n', 'g', 't', 'h' }; -static const unsigned char llparse_blob10[] = { +static const unsigned char llparse_blob11[] = { 'r', 'o', 'x', 'y', '-', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n' }; -static const unsigned char llparse_blob11[] = { +static const unsigned char llparse_blob12[] = { 'r', 'a', 'n', 's', 'f', 'e', 'r', '-', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g' }; -static const unsigned char llparse_blob12[] = { +static const unsigned char llparse_blob13[] = { 'p', 'g', 'r', 'a', 'd', 'e' }; -static const unsigned char llparse_blob13[] = { +static const unsigned char llparse_blob14[] = { 'T', 'T', 'P' }; -static const unsigned char llparse_blob14[] = { +static const unsigned char llparse_blob15[] = { 0xd, 0xa, 0xd, 0xa, 'S', 'M', 0xd, 0xa, 0xd, 0xa }; -static const unsigned char llparse_blob15[] = { +static const unsigned char llparse_blob16[] = { 'C', 'E' }; -static const unsigned char llparse_blob16[] = { +static const unsigned char llparse_blob17[] = { 'T', 'S', 'P' }; -static const unsigned char llparse_blob17[] = { +static const unsigned char llparse_blob18[] = { 'N', 'O', 'U', 'N', 'C', 'E' }; -static const unsigned char llparse_blob18[] = { +static const unsigned char llparse_blob19[] = { 'I', 'N', 'D' }; -static const unsigned char llparse_blob19[] = { +static const unsigned char llparse_blob20[] = { 'E', 'C', 'K', 'O', 'U', 'T' }; -static const unsigned char llparse_blob20[] = { +static const unsigned char llparse_blob21[] = { 'N', 'E', 'C', 'T' }; -static const unsigned char llparse_blob21[] = { +static const unsigned char llparse_blob22[] = { 'E', 'T', 'E' }; -static const unsigned char llparse_blob22[] = { +static const unsigned char llparse_blob23[] = { 'C', 'R', 'I', 'B', 'E' }; -static const unsigned char llparse_blob23[] = { +static const unsigned char llparse_blob24[] = { 'L', 'U', 'S', 'H' }; -static const unsigned char llparse_blob24[] = { +static const unsigned char llparse_blob25[] = { 'E', 'T' }; -static const unsigned char llparse_blob25[] = { +static const unsigned char llparse_blob26[] = { 'P', 'A', 'R', 'A', 'M', 'E', 'T', 'E', 'R' }; -static const unsigned char llparse_blob26[] = { +static const unsigned char llparse_blob27[] = { 'E', 'A', 'D' }; -static const unsigned char llparse_blob27[] = { +static const unsigned char llparse_blob28[] = { 'N', 'K' }; -static const unsigned char llparse_blob28[] = { +static const unsigned char llparse_blob29[] = { 'C', 'K' }; -static const unsigned char llparse_blob29[] = { +static const unsigned char llparse_blob30[] = { 'S', 'E', 'A', 'R', 'C', 'H' }; -static const unsigned char llparse_blob30[] = { +static const unsigned char llparse_blob31[] = { 'R', 'G', 'E' }; -static const unsigned char llparse_blob31[] = { +static const unsigned char llparse_blob32[] = { 'C', 'T', 'I', 'V', 'I', 'T', 'Y' }; -static const unsigned char llparse_blob32[] = { +static const unsigned char llparse_blob33[] = { 'L', 'E', 'N', 'D', 'A', 'R' }; -static const unsigned char llparse_blob33[] = { +static const unsigned char llparse_blob34[] = { 'V', 'E' }; -static const unsigned char llparse_blob34[] = { +static const unsigned char llparse_blob35[] = { 'O', 'T', 'I', 'F', 'Y' }; -static const unsigned char llparse_blob35[] = { +static const unsigned char llparse_blob36[] = { 'P', 'T', 'I', 'O', 'N', 'S' }; -static const unsigned char llparse_blob36[] = { +static const unsigned char llparse_blob37[] = { 'C', 'H' }; -static const unsigned char llparse_blob37[] = { +static const unsigned char llparse_blob38[] = { 'S', 'E' }; -static const unsigned char llparse_blob38[] = { +static const unsigned char llparse_blob39[] = { 'A', 'Y' }; -static const unsigned char llparse_blob39[] = { +static const unsigned char llparse_blob40[] = { 'S', 'T' }; -static const unsigned char llparse_blob40[] = { +static const unsigned char llparse_blob41[] = { 'I', 'N', 'D' }; -static const unsigned char llparse_blob41[] = { +static const unsigned char llparse_blob42[] = { 'A', 'T', 'C', 'H' }; -static const unsigned char llparse_blob42[] = { +static const unsigned char llparse_blob43[] = { 'G', 'E' }; -static const unsigned char llparse_blob43[] = { +static const unsigned char llparse_blob44[] = { 'U', 'E', 'R', 'Y' }; -static const unsigned char llparse_blob44[] = { +static const unsigned char llparse_blob45[] = { 'I', 'N', 'D' }; -static const unsigned char llparse_blob45[] = { +static const unsigned char llparse_blob46[] = { 'O', 'R', 'D' }; -static const unsigned char llparse_blob46[] = { +static const unsigned char llparse_blob47[] = { 'I', 'R', 'E', 'C', 'T' }; -static const unsigned char llparse_blob47[] = { +static const unsigned char llparse_blob48[] = { 'O', 'R', 'T' }; -static const unsigned char llparse_blob48[] = { +static const unsigned char llparse_blob49[] = { 'R', 'C', 'H' }; -static const unsigned char llparse_blob49[] = { +static const unsigned char llparse_blob50[] = { 'P', 'A', 'R', 'A', 'M', 'E', 'T', 'E', 'R' }; -static const unsigned char llparse_blob50[] = { +static const unsigned char llparse_blob51[] = { 'U', 'R', 'C', 'E' }; -static const unsigned char llparse_blob51[] = { +static const unsigned char llparse_blob52[] = { 'B', 'S', 'C', 'R', 'I', 'B', 'E' }; -static const unsigned char llparse_blob52[] = { +static const unsigned char llparse_blob53[] = { 'A', 'R', 'D', 'O', 'W', 'N' }; -static const unsigned char llparse_blob53[] = { +static const unsigned char llparse_blob54[] = { 'A', 'C', 'E' }; -static const unsigned char llparse_blob54[] = { +static const unsigned char llparse_blob55[] = { 'I', 'N', 'D' }; -static const unsigned char llparse_blob55[] = { +static const unsigned char llparse_blob56[] = { 'N', 'K' }; -static const unsigned char llparse_blob56[] = { +static const unsigned char llparse_blob57[] = { 'C', 'K' }; -static const unsigned char llparse_blob57[] = { +static const unsigned char llparse_blob58[] = { 'U', 'B', 'S', 'C', 'R', 'I', 'B', 'E' }; -static const unsigned char llparse_blob58[] = { +static const unsigned char llparse_blob59[] = { 'T', 'T', 'P' }; -static const unsigned char llparse_blob59[] = { +static const unsigned char llparse_blob60[] = { 'C', 'E' }; -static const unsigned char llparse_blob60[] = { +static const unsigned char llparse_blob61[] = { 'T', 'S', 'P' }; -static const unsigned char llparse_blob61[] = { +static const unsigned char llparse_blob62[] = { 'A', 'D' }; -static const unsigned char llparse_blob62[] = { +static const unsigned char llparse_blob63[] = { 'T', 'P', '/' }; @@ -395,6 +401,7 @@ enum llparse_state_e { s_n_llhttp__internal__n_header_value_almost_done, s_n_llhttp__internal__n_invoke_test_lenient_flags_17, s_n_llhttp__internal__n_header_value_lenient, + s_n_llhttp__internal__n_header_value_relaxed, s_n_llhttp__internal__n_error_54, s_n_llhttp__internal__n_header_value_otherwise, s_n_llhttp__internal__n_header_value_connection_token, @@ -560,7 +567,7 @@ enum llparse_state_e { s_n_llhttp__internal__n_after_start_req, s_n_llhttp__internal__n_span_start_llhttp__on_method_1, s_n_llhttp__internal__n_res_line_almost_done, - s_n_llhttp__internal__n_invoke_test_lenient_flags_30, + s_n_llhttp__internal__n_invoke_test_lenient_flags_31, s_n_llhttp__internal__n_res_status, s_n_llhttp__internal__n_span_start_llhttp__on_status, s_n_llhttp__internal__n_res_status_code_otherwise, @@ -924,7 +931,7 @@ int llhttp__internal__c_test_flags_4( return (state->flags & 512) == 512; } -int llhttp__internal__c_test_lenient_flags_22( +int llhttp__internal__c_test_lenient_flags_23( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -991,6 +998,13 @@ int llhttp__internal__c_update_header_state_1( return 0; } +int llhttp__internal__c_test_lenient_flags_20( + llhttp__internal_t* state, + const unsigned char* p, + const unsigned char* endp) { + return (state->lenient_flags & 1024) == 1024; +} + int llhttp__internal__c_update_header_state_6( llhttp__internal_t* state, const unsigned char* p, @@ -1055,7 +1069,7 @@ int llhttp__internal__c_test_flags_3( return (state->flags & 8) == 8; } -int llhttp__internal__c_test_lenient_flags_20( +int llhttp__internal__c_test_lenient_flags_21( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -1123,7 +1137,7 @@ int llhttp__internal__c_store_http_minor( return 0; } -int llhttp__internal__c_test_lenient_flags_24( +int llhttp__internal__c_test_lenient_flags_25( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -2247,6 +2261,145 @@ static llparse_state_t llhttp__internal__run( } UNREACHABLE; } + case s_n_llhttp__internal__n_header_value_relaxed: + s_n_llhttp__internal__n_header_value_relaxed: { + static uint8_t lookup_table[] = { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + }; + if (p == endp) { + return s_n_llhttp__internal__n_header_value_relaxed; + } + #ifdef __SSE4_2__ + if (endp - p >= 16) { + __m128i ranges; + __m128i input; + int match_len; + + /* Load input */ + input = _mm_loadu_si128((__m128i const*) p); + ranges = _mm_loadu_si128((__m128i const*) llparse_blob3); + + /* Find first character that does not match `ranges` */ + match_len = _mm_cmpestri(ranges, 6, + input, 16, + _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES | + _SIDD_NEGATIVE_POLARITY); + + if (match_len != 0) { + p += match_len; + goto s_n_llhttp__internal__n_header_value_relaxed; + } + goto s_n_llhttp__internal__n_header_value_otherwise; + } + #endif /* __SSE4_2__ */ + #if defined(__ARM_NEON__) || defined(__ARM_NEON) + while (endp - p >= 16) { + uint8x16_t input; + uint8x16_t single; + uint8x16_t mask; + uint8x8_t narrow; + uint64_t match_mask; + int match_len; + + /* Load input */ + input = vld1q_u8(p); + /* Find first character that does not match `ranges` */ + single = vandq_u8( + vcgeq_u8(input, vdupq_n_u8(0x1)), + vcleq_u8(input, vdupq_n_u8(0x9)) + ); + mask = single; + single = vandq_u8( + vcgeq_u8(input, vdupq_n_u8(0xb)), + vcleq_u8(input, vdupq_n_u8(0xc)) + ); + mask = vorrq_u8(mask, single); + single = vandq_u8( + vcgeq_u8(input, vdupq_n_u8(0xe)), + vcleq_u8(input, vdupq_n_u8(0xff)) + ); + mask = vorrq_u8(mask, single); + narrow = vshrn_n_u16(vreinterpretq_u16_u8(mask), 4); + match_mask = ~vget_lane_u64(vreinterpret_u64_u8(narrow), 0); + if (match_mask == 0) { + match_len = 16; + } else { + match_len = __builtin_ctzll(match_mask) >> 2; + } + if (match_len != 16) { + p += match_len; + goto s_n_llhttp__internal__n_header_value_otherwise; + } + p += 16; + } + if (p == endp) { + return s_n_llhttp__internal__n_header_value_relaxed; + } + #endif /* __ARM_NEON__ */ + #ifdef __wasm_simd128__ + while (endp - p >= 16) { + v128_t input; + v128_t mask; + v128_t single; + int match_len; + + /* Load input */ + input = wasm_v128_load(p); + /* Find first character that does not match `ranges` */ + single = wasm_v128_and( + wasm_i8x16_ge(input, wasm_u8x16_const_splat(0x1)), + wasm_i8x16_le(input, wasm_u8x16_const_splat(0x9)) + ); + mask = single; + single = wasm_v128_and( + wasm_i8x16_ge(input, wasm_u8x16_const_splat(0xb)), + wasm_i8x16_le(input, wasm_u8x16_const_splat(0xc)) + ); + mask = wasm_v128_or(mask, single); + single = wasm_v128_and( + wasm_i8x16_ge(input, wasm_u8x16_const_splat(0xe)), + wasm_i8x16_le(input, wasm_u8x16_const_splat(0xff)) + ); + mask = wasm_v128_or(mask, single); + match_len = __builtin_ctz( + ~wasm_i8x16_bitmask(mask) + ); + if (match_len != 16) { + p += match_len; + goto s_n_llhttp__internal__n_header_value_otherwise; + } + p += 16; + } + if (p == endp) { + return s_n_llhttp__internal__n_header_value_relaxed; + } + #endif /* __wasm_simd128__ */ + switch (lookup_table[(uint8_t) *p]) { + case 1: { + p++; + goto s_n_llhttp__internal__n_header_value_relaxed; + } + default: { + goto s_n_llhttp__internal__n_header_value_otherwise; + } + } + UNREACHABLE; + } case s_n_llhttp__internal__n_error_54: s_n_llhttp__internal__n_error_54: { state->error = 0xa; @@ -2368,7 +2521,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_value_connection_2; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob3, 9); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob4, 9); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -2391,7 +2544,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_value_connection_3; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob4, 6); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob5, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -2463,6 +2616,10 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_header_value_content_length_ws; } switch (*p) { + case 9: { + p++; + goto s_n_llhttp__internal__n_header_value_content_length_ws; + } case 10: { goto s_n_llhttp__internal__n_invoke_or_flags_17; } @@ -2610,7 +2767,7 @@ static llparse_state_t llhttp__internal__run( /* Load input */ input = _mm_loadu_si128((__m128i const*) p); - ranges = _mm_loadu_si128((__m128i const*) llparse_blob6); + ranges = _mm_loadu_si128((__m128i const*) llparse_blob7); /* Find first character that does not match `ranges` */ match_len = _mm_cmpestri(ranges, 6, @@ -2782,7 +2939,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_value_te_chunked; } - match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob5, 7); + match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob6, 7); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -2906,7 +3063,7 @@ static llparse_state_t llhttp__internal__run( /* Load input */ input = _mm_loadu_si128((__m128i const*) p); - ranges = _mm_loadu_si128((__m128i const*) llparse_blob7); + ranges = _mm_loadu_si128((__m128i const*) llparse_blob8); /* Find first character that does not match `ranges` */ match_len = _mm_cmpestri(ranges, 16, @@ -2918,7 +3075,7 @@ static llparse_state_t llhttp__internal__run( p += match_len; goto s_n_llhttp__internal__n_header_field_general; } - ranges = _mm_loadu_si128((__m128i const*) llparse_blob8); + ranges = _mm_loadu_si128((__m128i const*) llparse_blob9); /* Find first character that does not match `ranges` */ match_len = _mm_cmpestri(ranges, 2, @@ -2993,7 +3150,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_field_4; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob9, 10); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob10, 10); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3060,7 +3217,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_field_5; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob10, 15); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob11, 15); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3084,7 +3241,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_field_6; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob11, 16); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob12, 16); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3108,7 +3265,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_header_field_7; } - match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob12, 6); + match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob13, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3290,7 +3447,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_pri_upgrade; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob14, 10); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 10); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3317,7 +3474,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_headers_start; } default: { - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_26; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_27; } } UNREACHABLE; @@ -3330,7 +3487,7 @@ static llparse_state_t llhttp__internal__run( switch (*p) { case 10: { p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_25; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_26; } case 13: { p++; @@ -3674,7 +3831,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_after_http_start_1; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob13, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob14, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3719,7 +3876,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_after_http_start_2; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -3790,7 +3947,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_after_http_start_3; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4491,7 +4648,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_3; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4535,7 +4692,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_4; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4559,7 +4716,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_6; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4583,7 +4740,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_8; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 4); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 4); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4664,7 +4821,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_12; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4688,7 +4845,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_13; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 5); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 5); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4748,7 +4905,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_14; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 4); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 4); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4772,7 +4929,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_17; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 9); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 9); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4813,7 +4970,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_15; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4836,7 +4993,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_18; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4860,7 +5017,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_20; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4884,7 +5041,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_21; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4928,7 +5085,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_23; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4952,7 +5109,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_24; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -4976,7 +5133,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_26; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 7); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 7); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5000,7 +5157,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_28; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5081,7 +5238,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_30; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5133,7 +5290,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_31; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 5); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 5); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5157,7 +5314,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_32; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5181,7 +5338,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_35; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5205,7 +5362,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_36; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5249,7 +5406,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_37; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5273,7 +5430,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_38; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5297,7 +5454,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_42; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5321,7 +5478,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_43; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 4); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 4); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5402,7 +5559,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_45; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5479,7 +5636,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_46; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 4); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 4); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5503,7 +5660,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_49; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5527,7 +5684,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_50; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5551,7 +5708,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_51; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 5); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 5); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5575,7 +5732,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_52; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob48, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5643,7 +5800,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_55; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob48, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob49, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5684,7 +5841,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_58; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob49, 9); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob50, 9); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5748,7 +5905,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_59; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob50, 4); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob51, 4); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5772,7 +5929,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_60; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob51, 7); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob52, 7); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5820,7 +5977,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_62; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob52, 6); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob53, 6); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5844,7 +6001,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_63; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob53, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob54, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5888,7 +6045,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_66; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob54, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob55, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5912,7 +6069,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_68; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob55, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob56, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5936,7 +6093,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_69; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob56, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob57, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -5980,7 +6137,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_after_start_req_70; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob57, 8); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob58, 8); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -6142,13 +6299,13 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; } default: { - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_29; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_30; } } UNREACHABLE; } - case s_n_llhttp__internal__n_invoke_test_lenient_flags_30: - s_n_llhttp__internal__n_invoke_test_lenient_flags_30: { + case s_n_llhttp__internal__n_invoke_test_lenient_flags_31: + s_n_llhttp__internal__n_invoke_test_lenient_flags_31: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; @@ -6194,7 +6351,7 @@ static llparse_state_t llhttp__internal__run( switch (*p) { case 10: { p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_28; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_29; } case 13: { p++; @@ -6654,7 +6811,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_res_after_start_1; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob58, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob59, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -6677,7 +6834,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_res_after_start_2; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob59, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob60, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -6700,7 +6857,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_res_after_start_3; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob60, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob61, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -6769,7 +6926,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_or_res_method_2; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob61, 2); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob62, 2); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -6801,7 +6958,7 @@ static llparse_state_t llhttp__internal__run( if (p == endp) { return s_n_llhttp__internal__n_req_or_res_method_3; } - match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob62, 3); + match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob63, 3); p = match_seq.current; switch (match_seq.status) { case kMatchComplete: { @@ -8265,12 +8422,21 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_error_54; UNREACHABLE; } + s_n_llhttp__internal__n_invoke_test_lenient_flags_20: { + switch (llhttp__internal__c_test_lenient_flags_20(state, p, endp)) { + case 1: + goto s_n_llhttp__internal__n_header_value_relaxed; + default: + goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3; + } + UNREACHABLE; + } s_n_llhttp__internal__n_invoke_test_lenient_flags_19: { switch (llhttp__internal__c_test_lenient_flags(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_header_value_lenient; default: - goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_20; } UNREACHABLE; } @@ -8458,8 +8624,8 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_error_58; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_20: { - switch (llhttp__internal__c_test_lenient_flags_20(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_21: { + switch (llhttp__internal__c_test_lenient_flags_21(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_8; default: @@ -8470,7 +8636,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_load_type_1: { switch (llhttp__internal__c_load_type(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_20; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_21; default: goto s_n_llhttp__internal__n_header_value_te_chunked; } @@ -8497,8 +8663,8 @@ static llparse_state_t llhttp__internal__run( } UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_21: { - switch (llhttp__internal__c_test_lenient_flags_20(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_22: { + switch (llhttp__internal__c_test_lenient_flags_21(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_9; default: @@ -8509,7 +8675,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_load_type_2: { switch (llhttp__internal__c_load_type(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_21; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_22; default: goto s_n_llhttp__internal__n_invoke_or_flags_19; } @@ -8553,8 +8719,8 @@ static llparse_state_t llhttp__internal__run( } UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_22: { - switch (llhttp__internal__c_test_lenient_flags_22(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_23: { + switch (llhttp__internal__c_test_lenient_flags_23(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_error_60; default: @@ -8565,7 +8731,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_test_flags_4: { switch (llhttp__internal__c_test_flags_4(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_22; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_23; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } @@ -8579,8 +8745,8 @@ static llparse_state_t llhttp__internal__run( return s_error; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_23: { - switch (llhttp__internal__c_test_lenient_flags_22(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_24: { + switch (llhttp__internal__c_test_lenient_flags_23(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_error_61; default: @@ -8591,7 +8757,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_test_flags_5: { switch (llhttp__internal__c_test_flags_2(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_23; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_24; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } @@ -8798,7 +8964,7 @@ static llparse_state_t llhttp__internal__run( return s_error; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_26: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_27: { switch (llhttp__internal__c_test_lenient_flags_8(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_headers_start; @@ -8815,7 +8981,7 @@ static llparse_state_t llhttp__internal__run( return s_error; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_25: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_26: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_req_http_complete_crlf; @@ -8922,8 +9088,8 @@ static llparse_state_t llhttp__internal__run( } UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_24: { - switch (llhttp__internal__c_test_lenient_flags_24(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_25: { + switch (llhttp__internal__c_test_lenient_flags_25(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_span_end_llhttp__on_version_1; default: @@ -8934,7 +9100,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_store_http_minor: { switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) { default: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_24; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_25; } UNREACHABLE; } @@ -9567,7 +9733,7 @@ static llparse_state_t llhttp__internal__run( return s_error; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_28: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_29: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; @@ -9584,7 +9750,7 @@ static llparse_state_t llhttp__internal__run( return s_error; UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_29: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_30: { switch (llhttp__internal__c_test_lenient_flags_8(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; @@ -9611,11 +9777,11 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) (p + 1); - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_test_lenient_flags_30; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_test_lenient_flags_31; return s_error; } p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_30; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_31; UNREACHABLE; } s_n_llhttp__internal__n_span_end_llhttp__on_status_1: { @@ -9799,8 +9965,8 @@ static llparse_state_t llhttp__internal__run( } UNREACHABLE; } - s_n_llhttp__internal__n_invoke_test_lenient_flags_27: { - switch (llhttp__internal__c_test_lenient_flags_24(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_28: { + switch (llhttp__internal__c_test_lenient_flags_25(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_span_end_llhttp__on_version_6; default: @@ -9811,7 +9977,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_store_http_minor_1: { switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) { default: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_27; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_28; } UNREACHABLE; } diff --git a/deps/minimatch/README.md b/deps/minimatch/README.md index 2203ca6718fa18..1a068fab2a0fb2 100644 --- a/deps/minimatch/README.md +++ b/deps/minimatch/README.md @@ -15,7 +15,7 @@ objects. > you provide to this library in production systems. _Any_ library in JavaScript that deals with matching string -patterns using regular expressions will be subject to +patterns using regular expressions will be subject to [ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS) if the pattern is generated using untrusted input. diff --git a/deps/minimatch/dist/commonjs/ast.d.ts b/deps/minimatch/dist/commonjs/ast.d.ts index 27845ea71fb977..74f2cf9322b975 100644 --- a/deps/minimatch/dist/commonjs/ast.d.ts +++ b/deps/minimatch/dist/commonjs/ast.d.ts @@ -1,4 +1,4 @@ -import { MinimatchOptions, MMRegExp } from './index.js'; +import type { MinimatchOptions, MMRegExp } from './index.js'; export type ExtglobType = '!' | '?' | '+' | '*' | '@'; export declare class AST { #private; @@ -9,7 +9,7 @@ export declare class AST { get hasMagic(): boolean | undefined; toString(): string; push(...parts: (string | AST)[]): void; - toJSON(): any[]; + toJSON(): unknown[]; isStart(): boolean; isEnd(): boolean; copyIn(part: AST | string): void; diff --git a/deps/minimatch/dist/commonjs/ast.d.ts.map b/deps/minimatch/dist/commonjs/ast.d.ts.map index ec7f7898870ff2..8965fd6a99ff91 100644 --- a/deps/minimatch/dist/commonjs/ast.d.ts.map +++ b/deps/minimatch/dist/commonjs/ast.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AA6IrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAwQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"} \ No newline at end of file +{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwC5D,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAgJrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IAkDlB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"} \ No newline at end of file diff --git a/deps/minimatch/dist/commonjs/ast.js b/deps/minimatch/dist/commonjs/ast.js index 5e657838e669ce..33df3769f3ca06 100644 --- a/deps/minimatch/dist/commonjs/ast.js +++ b/deps/minimatch/dist/commonjs/ast.js @@ -192,15 +192,14 @@ class AST { } // reconstructs the pattern toString() { - if (this.#toString !== undefined) - return this.#toString; - if (!this.type) { - return (this.#toString = this.#parts.map(p => String(p)).join('')); - } - else { - return (this.#toString = - this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); - } + return (this.#toString !== undefined ? this.#toString + : !this.type ? + (this.#toString = this.#parts.map(p => String(p)).join('')) + : (this.#toString = + this.type + + '(' + + this.#parts.map(p => String(p)).join('|') + + ')')); } #fillNegs() { /* c8 ignore start */ @@ -480,7 +479,7 @@ class AST { } #canUsurpType(c) { const m = usurpMap.get(this.type); - return !!(m?.has(c)); + return !!m?.has(c); } #canUsurp(child) { if (!child || diff --git a/deps/minimatch/dist/commonjs/ast.js.map b/deps/minimatch/dist/commonjs/ast.js.map index 6affc8b7f647a8..3498fb2631bc29 100644 --- a/deps/minimatch/dist/commonjs/ast.js.map +++ b/deps/minimatch/dist/commonjs/ast.js.map @@ -1 +1 @@ -{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map>([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n #parent?: AST\n #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n id = ++ID\n\n get depth(): number {\n return (this.#parent?.depth ?? -1) + 1\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n }\n }\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n if (this.#toString !== undefined) return this.#toString\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''))\n } else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n }\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (\n typeof p !== 'string' &&\n !(p instanceof AST && p.#parent === this)\n ) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: any[] =\n this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions,\n extDepth: number,\n ): number {\n const maxDepth = opt.maxExtglobRecursion ?? 2\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth\n if (doRecurse) {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n #canAdoptWithSpace(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n return this.#canAdopt(child, adoptionWithSpaceMap)\n }\n\n #canAdopt(\n child?: AST | string,\n map: Map = adoptionMap,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canAdoptType(\n gc.type,\n map,\n )\n }\n #canAdoptType(\n c: string,\n map: Map = adoptionAnyMap,\n ): c is ExtglobType {\n return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n }\n\n #adoptWithSpace(\n this: AST & { type: ExtglobType },\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const blank = new AST(null, gc, this.options)\n blank.#parts.push('')\n gc.push(blank)\n this.#adopt(child, index)\n }\n\n #adopt(\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n this.#parts.splice(index, 1, ...gc.#parts)\n for (const p of gc.#parts) {\n if (typeof p === 'object') p.#parent = this\n }\n this.#toString = undefined\n }\n\n #canUsurpType(c: string): boolean {\n const m = usurpMap.get(this.type as ExtglobType)\n return !!(m?.has(c as ExtglobType))\n }\n\n #canUsurp (\n child?: AST | string,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n }\n\n #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n const m = usurpMap.get(this.type as ExtglobType)\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const nt = m?.get(gc.type)\n /* c8 ignore start - impossible */\n if (!nt) return false\n /* c8 ignore stop */\n this.#parts = gc.#parts\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this\n }\n }\n this.type = nt\n this.#toString = undefined\n this.#emptyExt = false\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options, 0)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n get options() {\n return this.#options\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) {\n this.#flatten()\n this.#fillNegs()\n }\n if (!isExtglobAST(this)) {\n const noEmpty =\n this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string')\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string' ?\n AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = this.#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n const me = this as AST\n me.#parts = [s]\n me.type = null\n me.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten()\n }\n }\n } else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0\n let done = false\n do {\n done = true\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i]\n if (typeof c === 'object') {\n c.#flatten()\n if (this.#canAdopt(c)) {\n done = false\n this.#adopt(c, i)\n } else if (this.#canAdoptWithSpace(c)) {\n done = false\n this.#adoptWithSpace(c, i)\n } else if (this.#canUsurp(c)) {\n done = false\n this.#usurp(c)\n }\n }\n }\n } while (!done && ++iterations < 10)\n }\n this.#toString = undefined\n }\n\n #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '*') {\n if (inStar) continue\n inStar = true\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n hasMagic = true\n continue\n } else {\n inStar = false\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n"]} \ No newline at end of file +{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;AAE9B,iEAAmD;AAEnD,+CAAwC;AAwCxC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC7D,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAC3D,KAAK,CAAC,GAAG,CAAC,CAAgB,CAAC,CAAA;AAC7B,MAAM,YAAY,GAAG,CAAC,CAAM,EAAoC,EAAE,CAChE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAEvB,wEAAwE;AACxE,EAAE;AACF,4CAA4C;AAC5C,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,EAAE;AACF,2DAA2D;AAC3D,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,EAAE;AACF,oDAAoD;AACpD,8BAA8B;AAC9B,EAAE;AACF,qDAAqD;AACrD,6CAA6C;AAC7C,6CAA6C;AAC7C,EAAE;AACF,qDAAqD;AACrD,6CAA6C;AAC7C,6CAA6C;AAC7C,EAAE;AACF,2CAA2C;AAC3C,8BAA8B;AAC9B,EAAE;AACF,2DAA2D;AAC3D,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,EAAE;AACF,6CAA6C;AAC7C,qEAAqE;AACrE,EAAE;AACF,gBAAgB;AAChB,8BAA8B;AAC9B,EAAE;AACF,mBAAmB;AACnB,8DAA8D;AAC9D,EAAE;AACF,mBAAmB;AACnB,8DAA8D;AAC9D,EAAE;AACF,mBAAmB;AACnB,wDAAwD;AACxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAA6B;IACtD,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAClB,CAAC,CAAA;AAEF,mEAAmE;AACnE,sBAAsB;AACtB,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAA6B;IAC/D,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAClB,CAAC,CAAA;AAEF,iCAAiC;AACjC,MAAM,cAAc,GAAG,IAAI,GAAG,CAA6B;IACzD,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC,CAAA;AAEF,sEAAsE;AACtE,uEAAuE;AACvE,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAGtB;IACA,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B;QACE,GAAG;QACH,IAAI,GAAG,CAAC;YACN,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC;KACH;IACD;QACE,GAAG;QACH,IAAI,GAAG,CAAC;YACN,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC;KACH;IACD;QACE,GAAG;QACH,IAAI,GAAG,CAAC;YACN,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC;KACH;CACF,CAAC,CAAA;AAEF,iEAAiE;AACjE,gEAAgE;AAChE,0CAA0C;AAC1C,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AACpD,MAAM,UAAU,GAAG,SAAS,CAAA;AAE5B,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC3C,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;AACrC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC7C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,gCAAgC;AAChC,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AACzB,0EAA0E;AAC1E,sCAAsC;AACtC,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAA;AAEhC,yEAAyE;AACzE,2DAA2D;AAE3D,IAAI,EAAE,GAAG,CAAC,CAAA;AACV,MAAa,GAAG;IACd,IAAI,CAAoB;IACf,KAAK,CAAK;IAEnB,SAAS,CAAU;IACnB,MAAM,GAAY,KAAK,CAAA;IACvB,MAAM,GAAqB,EAAE,CAAA;IAC7B,OAAO,CAAM;IACb,YAAY,CAAQ;IACpB,KAAK,CAAO;IACZ,WAAW,GAAY,KAAK,CAAA;IAC5B,QAAQ,CAAkB;IAC1B,SAAS,CAAS;IAClB,kDAAkD;IAClD,uCAAuC;IACvC,SAAS,GAAY,KAAK,CAAA;IAC1B,EAAE,GAAG,EAAE,EAAE,CAAA;IAET,IAAI,KAAK;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACxC,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC/B,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAA;IACH,CAAC;IAED,YACE,IAAwB,EACxB,MAAY,EACZ,UAA4B,EAAE;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,kCAAkC;QAClC,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QACxD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,QAAQ;QACV,qBAAqB;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvD,oBAAoB;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,SAAQ;YACnC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;QAC1D,CAAC;QACD,wEAAwE;QACxE,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QACN,OAAO,CACL,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACZ,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;oBACb,IAAI,CAAC,IAAI;wBACT,GAAG;wBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBACzC,GAAG,CAAC,CACT,CAAA;IACH,CAAC;IAED,SAAS;QACP,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACpE,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QACjC,oBAAoB;QAEpB,wCAAwC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAkB,CAAA;QACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;gBAAE,SAAQ;YAC5B,qEAAqE;YACrE,IAAI,CAAC,GAAoB,CAAC,CAAA;YAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;YAClB,OAAO,EAAE,EAAE,CAAC;gBACV,KACE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,EAC1B,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAChC,CAAC,EAAE,EACH,CAAC;oBACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC5B,qBAAqB;wBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;wBACjD,CAAC;wBACD,oBAAoB;wBACpB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC3B,CAAC;gBACH,CAAC;gBACD,CAAC,GAAG,EAAE,CAAA;gBACN,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,GAAG,KAAuB;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE;gBAAE,SAAQ;YACtB,qBAAqB;YACrB,IACE,OAAO,CAAC,KAAK,QAAQ;gBACrB,CAAC,CAAC,CAAC,YAAY,EAAG,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,EACzC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;YACvC,CAAC;YACD,oBAAoB;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM;iBACR,KAAK,EAAE;iBACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7D,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjD,IACE,IAAI,CAAC,KAAK,EAAE;YACZ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;gBAClB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EACzD,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;YAAE,OAAO,KAAK,CAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACxC,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC,EAAE,YAAY,EAAG,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC5C,0CAA0C;QAC1C,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,oBAAoB;QACpB,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,IAAkB;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,MAAW;QACf,MAAM,CAAC,GAAG,IAAI,EAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACb,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,SAAS,CACd,GAAW,EACX,GAAQ,EACR,GAAW,EACX,GAAqB,EACrB,QAAgB;QAEhB,MAAM,QAAQ,GAAG,GAAG,CAAC,mBAAmB,IAAI,CAAC,CAAA;QAC7C,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,qDAAqD;YACrD,IAAI,CAAC,GAAG,GAAG,CAAA;YACX,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;gBACzB,2DAA2D;gBAC3D,0BAA0B;gBAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC3B,QAAQ,GAAG,CAAC,QAAQ,CAAA;oBACpB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;gBACV,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;wBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;4BAC3B,QAAQ,GAAG,IAAI,CAAA;wBACjB,CAAC;oBACH,CAAC;yBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;wBAC5D,OAAO,GAAG,KAAK,CAAA;oBACjB,CAAC;oBACD,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;gBACV,CAAC;qBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACrB,OAAO,GAAG,IAAI,CAAA;oBACd,UAAU,GAAG,CAAC,CAAA;oBACd,QAAQ,GAAG,KAAK,CAAA;oBAChB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;gBACV,CAAC;gBAED,2DAA2D;gBAC3D,qCAAqC;gBACrC,MAAM,SAAS,GACb,CAAC,GAAG,CAAC,KAAK;oBACV,aAAa,CAAC,CAAC,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;oBACrB,QAAQ,IAAI,QAAQ,CAAA;gBACtB,IAAI,SAAS,EAAE,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,GAAG,GAAG,EAAE,CAAA;oBACR,MAAM,GAAG,GAAG,IAAI,EAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;oBAC3B,CAAC,GAAG,EAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;oBACjD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,SAAQ;gBACV,CAAC;gBACD,GAAG,IAAI,CAAC,CAAA;YACV,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,CAAC,CAAA;QACV,CAAC;QAED,wCAAwC;QACxC,uBAAuB;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACf,IAAI,IAAI,GAAG,IAAI,EAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7B,MAAM,KAAK,GAAU,EAAE,CAAA;QACvB,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;YACzB,2DAA2D;YAC3D,0BAA0B;YAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3B,QAAQ,GAAG,CAAC,QAAQ,CAAA;gBACpB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;YACV,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC3B,QAAQ,GAAG,IAAI,CAAA;oBACjB,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;oBAC5D,OAAO,GAAG,KAAK,CAAA;gBACjB,CAAC;gBACD,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;YACV,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrB,OAAO,GAAG,IAAI,CAAA;gBACd,UAAU,GAAG,CAAC,CAAA;gBACd,QAAQ,GAAG,KAAK,CAAA;gBAChB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;YACV,CAAC;YAED,MAAM,SAAS,GACb,CAAC,GAAG,CAAC,KAAK;gBACV,aAAa,CAAC,CAAC,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;gBACrB,uDAAuD;gBACvD,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzD,oBAAoB;YACpB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,MAAM,GAAG,GAAG,IAAI,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,CAAC,GAAG,EAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAA;gBACxD,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChB,IAAI,GAAG,IAAI,EAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACzB,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;gBACtB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAA;gBACxB,OAAO,CAAC,CAAA;YACV,CAAC;YACD,GAAG,IAAI,CAAC,CAAA;QACV,CAAC;QAED,qBAAqB;QACrB,kEAAkE;QAClE,iCAAiC;QACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;QACf,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QACzB,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACrC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,kBAAkB,CAAC,KAAoB;QAIrC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IACpD,CAAC;IAED,SAAS,CACP,KAAoB,EACpB,MAAuC,WAAW;QAKlD,IACE,CAAC,KAAK;YACN,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,IAAI,KAAK,IAAI;YACnB,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,KAAK,IAAI,EAClB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAQ,IAAoC,CAAC,aAAa,CACxD,EAAE,CAAC,IAAI,EACP,GAAG,CACJ,CAAA;IACH,CAAC;IACD,aAAa,CACX,CAAS,EACT,MAAuC,cAAc;QAErD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAmB,CAAC,EAAE,QAAQ,CAAC,CAAgB,CAAC,CAAA;IACxE,CAAC;IAED,eAAe,CAEb,KAEC,EACD,KAAa;QAEb,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAgC,CAAA;QACzD,MAAM,KAAK,GAAG,IAAI,EAAG,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,CACJ,KAEC,EACD,KAAa;QAEb,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAgC,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;QAC7C,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,aAAa,CAAC,CAAS;QACrB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAA;QAChD,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAgB,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,KAAoB;QAI5B,IACE,CAAC,KAAK;YACN,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,IAAI,KAAK,IAAI;YACnB,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,KAAK,IAAI;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EACxB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAQ,IAAoC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,CAAoC,KAA2B;QACnE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAA;QAChD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAgC,CAAA;QACzD,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAC1B,kCAAkC;QAClC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;QACrB,oBAAoB;QACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;QACvB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,UAA4B,EAAE;QAC7D,MAAM,GAAG,GAAG,IAAI,EAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7C,EAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAC1C,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,oEAAoE;IACpE,iBAAiB;IACjB,WAAW;QACT,gCAAgC;QAChC,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxD,oBAAoB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzD,+DAA+D;QAC/D,mEAAmE;QACnE,sCAAsC;QACtC,MAAM,QAAQ,GACZ,QAAQ;YACR,IAAI,CAAC,SAAS;YACd,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;gBACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;gBAC9B,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE;YACjD,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,oEAAoE;IACpE,0DAA0D;IAC1D,EAAE;IACF,uCAAuC;IACvC,4BAA4B;IAC5B,wDAAwD;IACxD,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,4BAA4B;IAC5B,YAAY;IACZ,EAAE;IACF,mEAAmE;IACnE,wBAAwB;IACxB,iDAAiD;IACjD,8BAA8B;IAC9B,8DAA8D;IAC9D,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,gDAAgD;IAChD,iBAAiB;IACjB,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,eAAe;IACf,EAAE;IACF,wEAAwE;IACxE,4DAA4D;IAC5D,iEAAiE;IACjE,4BAA4B;IAC5B,8DAA8D;IAC9D,6CAA6C;IAC7C,oDAAoD;IACpD,EAAE;IACF,uEAAuE;IACvE,gEAAgE;IAChE,EAAE;IACF,sEAAsE;IACtE,qCAAqC;IACrC,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,EAAE;IACF,kBAAkB;IAClB,+CAA+C;IAC/C,4CAA4C;IAC5C,uEAAuE;IACvE,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,sEAAsE;IACtE,sCAAsC;IACtC,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,0CAA0C;IAC1C,EAAE;IACF,2BAA2B;IAC3B,sEAAsE;IACtE,qEAAqE;IACrE,uEAAuE;IACvE,cAAc,CACZ,QAAkB;QAElB,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAA;YACf,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,KAAK,EAAE;gBACZ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE;gBACP,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAC5B,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;oBACrB,EAAG,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;oBAC5C,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;gBAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA;gBAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;gBAClC,OAAO,EAAE,CAAA;YACX,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;YAEX,IAAI,KAAK,GAAG,EAAE,CAAA;YACd,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACvC,+DAA+D;oBAC/D,+CAA+C;oBAE/C,gEAAgE;oBAChE,+CAA+C;oBAC/C,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,MAAM,GAAG,GAAG,eAAe,CAAA;wBAC3B,sDAAsD;wBACtD,oBAAoB;wBACpB,MAAM,UAAU;wBACd,uDAAuD;wBACvD,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC/B,8CAA8C;4BAC9C,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BACjD,gDAAgD;4BAChD,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACtD,2DAA2D;wBAC3D,4CAA4C;wBAC5C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;wBAE7D,KAAK;4BACH,UAAU,CAAC,CAAC,CAAC,gBAAgB;gCAC7B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;oCACxB,CAAC,CAAC,EAAE,CAAA;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,IACE,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,WAAW;gBACtB,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,EAC1B,CAAC;gBACD,GAAG,GAAG,WAAW,CAAA;YACnB,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;YAC/B,OAAO;gBACL,KAAK;gBACL,IAAA,sBAAQ,EAAC,GAAG,CAAC;gBACb,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,IAAI,CAAC,MAAM;aACZ,CAAA;QACH,CAAC;QAED,iEAAiE;QACjE,iEAAiE;QACjE,oCAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAA;QACvD,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;QACrD,IAAI,IAAI,GAAI,IAAoC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAEpE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjE,mEAAmE;YACnE,2BAA2B;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,MAAM,EAAE,GAAG,IAAW,CAAA;YACtB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YACf,EAAE,CAAC,IAAI,GAAG,IAAI,CAAA;YACd,EAAE,CAAC,SAAS,GAAG,SAAS,CAAA;YACxB,OAAO,CAAC,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,cAAc,GAChB,CAAC,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,cAAc,GAAG,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,GAAG,MAAM,IAAI,OAAO,cAAc,KAAK,CAAA;QAC7C,CAAC;QAED,sDAAsD;QACtD,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAA;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACjB,iDAAiD;gBACjD,IAAI;oBACJ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,IAAI;oBACJ,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG;oBACzB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI;wBAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;4BAC3C,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI;gCAC5C,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YACnB,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAA;QAC9B,CAAC;QACD,OAAO;YACL,KAAK;YACL,IAAA,sBAAQ,EAAC,IAAI,CAAC;YACd,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM;SACZ,CAAA;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC1B,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,IAAI,UAAU,GAAG,CAAC,CAAA;YAClB,IAAI,IAAI,GAAG,KAAK,CAAA;YAChB,GAAG,CAAC;gBACF,IAAI,GAAG,IAAI,CAAA;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;oBACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC1B,CAAC,CAAC,QAAQ,EAAE,CAAA;wBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;4BACtB,IAAI,GAAG,KAAK,CAAA;4BACZ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACnB,CAAC;6BAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;4BACtC,IAAI,GAAG,KAAK,CACX;4BAAC,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBAC9D,CAAC;6BAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7B,IAAI,GAAG,KAAK,CACX;4BAAC,IAAoC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;wBAClD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,UAAU,GAAG,EAAE,EAAC;QACtC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,cAAc,CAAoC,GAAY;QAC5D,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,+CAA+C;YAC/C,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;YACjD,CAAC;YACD,oBAAoB;YACpB,iEAAiE;YACjE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;YAClC,OAAO,EAAE,CAAA;QACX,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACrD,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,MAAM,CAAC,UAAU,CACf,IAAY,EACZ,QAA6B,EAC7B,UAAmB,KAAK;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,2DAA2D;QAC3D,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,GAAG,KAAK,CAAA;gBAChB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;gBACzC,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,IAAI,MAAM;oBAAE,SAAQ;gBACpB,MAAM,GAAG,IAAI,CAAA;gBACb,EAAE,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;gBACzD,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;YACV,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,EAAE,IAAI,MAAM,CAAA;gBACd,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAA,iCAAU,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC7D,IAAI,QAAQ,EAAE,CAAC;oBACb,EAAE,IAAI,GAAG,CAAA;oBACT,KAAK,GAAG,KAAK,IAAI,SAAS,CAAA;oBAC1B,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAA;oBACjB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAA;oBAC5B,SAAQ;gBACV,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,EAAE,IAAI,KAAK,CAAA;gBACX,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;YACV,CAAC;YACD,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,IAAA,sBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;CACF;AArxBD,kBAqxBC","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n ExtglobType,\n Map\n>([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n #parent?: AST\n #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n id = ++ID\n\n get depth(): number {\n return (this.#parent?.depth ?? -1) + 1\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n }\n }\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n return (\n this.#toString !== undefined ? this.#toString\n : !this.type ?\n (this.#toString = this.#parts.map(p => String(p)).join(''))\n : (this.#toString =\n this.type +\n '(' +\n this.#parts.map(p => String(p)).join('|') +\n ')')\n )\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (\n typeof p !== 'string' &&\n !(p instanceof AST && p.#parent === this)\n ) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: unknown[] =\n this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions,\n extDepth: number,\n ): number {\n const maxDepth = opt.maxExtglobRecursion ?? 2\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth\n if (doRecurse) {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n #canAdoptWithSpace(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n return this.#canAdopt(child, adoptionWithSpaceMap)\n }\n\n #canAdopt(\n child?: AST | string,\n map: Map = adoptionMap,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canAdoptType(\n gc.type,\n map,\n )\n }\n #canAdoptType(\n c: string,\n map: Map = adoptionAnyMap,\n ): c is ExtglobType {\n return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n }\n\n #adoptWithSpace(\n this: AST & { type: ExtglobType },\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const blank = new AST(null, gc, this.options)\n blank.#parts.push('')\n gc.push(blank)\n this.#adopt(child, index)\n }\n\n #adopt(\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n this.#parts.splice(index, 1, ...gc.#parts)\n for (const p of gc.#parts) {\n if (typeof p === 'object') p.#parent = this\n }\n this.#toString = undefined\n }\n\n #canUsurpType(c: string): boolean {\n const m = usurpMap.get(this.type as ExtglobType)\n return !!m?.has(c as ExtglobType)\n }\n\n #canUsurp(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n }\n\n #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n const m = usurpMap.get(this.type as ExtglobType)\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const nt = m?.get(gc.type)\n /* c8 ignore start - impossible */\n if (!nt) return false\n /* c8 ignore stop */\n this.#parts = gc.#parts\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this\n }\n }\n this.type = nt\n this.#toString = undefined\n this.#emptyExt = false\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options, 0)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n get options() {\n return this.#options\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) {\n this.#flatten()\n this.#fillNegs()\n }\n if (!isExtglobAST(this)) {\n const noEmpty =\n this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string')\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string' ?\n AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n const me = this as AST\n me.#parts = [s]\n me.type = null\n me.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten()\n }\n }\n } else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0\n let done = false\n do {\n done = true\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i]\n if (typeof c === 'object') {\n c.#flatten()\n if (this.#canAdopt(c)) {\n done = false\n this.#adopt(c, i)\n } else if (this.#canAdoptWithSpace(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n } else if (this.#canUsurp(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#usurp(c)\n }\n }\n }\n } while (!done && ++iterations < 10)\n }\n this.#toString = undefined\n }\n\n #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '*') {\n if (inStar) continue\n inStar = true\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n hasMagic = true\n continue\n } else {\n inStar = false\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n"]} \ No newline at end of file diff --git a/deps/minimatch/dist/commonjs/escape.d.ts b/deps/minimatch/dist/commonjs/escape.d.ts index 92e88c8f08825b..141024a06bdf74 100644 --- a/deps/minimatch/dist/commonjs/escape.d.ts +++ b/deps/minimatch/dist/commonjs/escape.d.ts @@ -1,4 +1,4 @@ -import { MinimatchOptions } from './index.js'; +import type { MinimatchOptions } from './index.js'; /** * Escape all magic characters in a glob pattern. * diff --git a/deps/minimatch/dist/commonjs/escape.d.ts.map b/deps/minimatch/dist/commonjs/escape.d.ts.map index e8d8a693fa4021..e167e30065a04e 100644 --- a/deps/minimatch/dist/commonjs/escape.d.ts.map +++ b/deps/minimatch/dist/commonjs/escape.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,GACjB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAazE,CAAA"} \ No newline at end of file +{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,GACjB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAazE,CAAA"} \ No newline at end of file diff --git a/deps/minimatch/dist/commonjs/escape.js.map b/deps/minimatch/dist/commonjs/escape.js.map index 442faeda338922..f963f0a14ae877 100644 --- a/deps/minimatch/dist/commonjs/escape.js.map +++ b/deps/minimatch/dist/commonjs/escape.js.map @@ -1 +1 @@ -{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AACI,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA;AAlBY,QAAA,MAAM,UAkBlB","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = false,\n }: Pick = {},\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]} \ No newline at end of file +{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AACI,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA;AAlBY,QAAA,MAAM,UAkBlB","sourcesContent":["import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = false,\n }: Pick = {},\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]} \ No newline at end of file diff --git a/deps/minimatch/dist/commonjs/index.d.ts b/deps/minimatch/dist/commonjs/index.d.ts index 137bd803690752..7e1fc2edaadbe0 100644 --- a/deps/minimatch/dist/commonjs/index.d.ts +++ b/deps/minimatch/dist/commonjs/index.d.ts @@ -150,7 +150,7 @@ export declare class Minimatch { regexp: false | null | MMRegExp; constructor(pattern: string, options?: MinimatchOptions); hasMagic(): boolean; - debug(..._: any[]): void; + debug(..._: unknown[]): void; make(): void; preprocess(globParts: string[][]): string[][]; adjascentGlobstarOptimize(globParts: string[][]): string[][]; diff --git a/deps/minimatch/dist/commonjs/index.d.ts.map b/deps/minimatch/dist/commonjs/index.d.ts.map index 1c65035ac63c5a..7620db91cc8185 100644 --- a/deps/minimatch/dist/commonjs/index.d.ts.map +++ b/deps/minimatch/dist/commonjs/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAA;AAI3C,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qEAAqE;IACrE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qDAAqD;IACrD,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,SAAS;QACjB,MAAM,WACA,MAAM,YACN,gBAAgB;;;sBA4Gf,MAAM,YAAW,gBAAgB,MAC1C,GAAG,MAAM;oBAOkB,gBAAgB,KAAG,OAAO,SAAS;2BAuFtD,MAAM,YACN,gBAAgB;sBA2BK,MAAM,YAAW,gBAAgB;kBAKzD,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB;;;;;CApO1B,CAAA;AAkED,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;AAQ5B,eAAO,MAAM,GAAG,KAC+C,CAAA;AAG/D,eAAO,MAAM,QAAQ,eAAwB,CAAA;AAmB7C,eAAO,MAAM,MAAM,GAChB,SAAS,MAAM,EAAE,UAAS,gBAAqB,MAC/C,GAAG,MAAM,YACsB,CAAA;AAMlC,eAAO,MAAM,QAAQ,GAAI,KAAK,gBAAgB,KAAG,OAAO,SAyEvD,CAAA;AAaD,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EACf,UAAS,gBAAqB,aAY/B,CAAA;AAeD,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,EAAE,UAAS,gBAAqB,qBAC5B,CAAA;AAG1C,eAAO,MAAM,KAAK,GAChB,MAAM,MAAM,EAAE,EACd,SAAS,MAAM,EACf,UAAS,gBAAqB,aAQ/B,CAAA;AAQD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,QAAQ,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,KAAK,CAAA;AAErD,qBAAa,SAAS;;IACpB,OAAO,EAAE,gBAAgB,CAAA;IACzB,GAAG,EAAE,mBAAmB,EAAE,EAAE,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,uBAAuB,EAAE,OAAO,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IAEf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAE5B,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;gBACnB,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAqC3D,QAAQ,IAAI,OAAO;IAYnB,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;IAEjB,IAAI;IA6FJ,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA8BhC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAiB/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAoBtC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA6D7C,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA0F1C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;IAkBxD,UAAU,CACR,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,KAAK,GAAG,MAAM,EAAE;IA+CnB,WAAW;IAqBX,QAAQ,CACN,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE,OAAe;IA8W1B,WAAW;IAIX,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IA6CnC,MAAM;IAuGN,UAAU,CAAC,CAAC,EAAE,MAAM;IAepB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,UAAe;IAiEvC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB;CAGtC;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/minimatch/dist/commonjs/index.js b/deps/minimatch/dist/commonjs/index.js index c176ffce042b01..5a6983481b7858 100644 --- a/deps/minimatch/dist/commonjs/index.js +++ b/deps/minimatch/dist/commonjs/index.js @@ -16,7 +16,7 @@ const minimatch = (p, pattern, options = {}) => { }; exports.minimatch = minimatch; // Optimized checking for the most common glob patterns. -const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; +const starDotExtRE = /^\*+([^+@!?*[(]*)$/; const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); const starDotExtTestNocase = (ext) => { @@ -35,7 +35,7 @@ const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); const starRE = /^\*+$/; const starTest = (f) => f.length !== 0 && !f.startsWith('.'); const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; -const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; +const qmarksRE = /^\?+([^+@!?*[(]*)?$/; const qmarksTestNocase = ([$0, ext = '']) => { const noext = qmarksTestNoExt([$0]); if (!ext) @@ -267,6 +267,7 @@ class Minimatch { // step 2: expand braces this.globSet = [...new Set(this.braceExpand())]; if (options.debug) { + //oxlint-disable-next-line no-console this.debug = (...args) => console.error(...args); } this.debug(this.pattern, this.globSet); @@ -329,10 +330,10 @@ class Minimatch { preprocess(globParts) { // if we're not in globstar mode, then turn ** into * if (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === '**') { - globParts[i][j] = '*'; + for (const partset of globParts) { + for (let j = 0; j < partset.length; j++) { + if (partset[j] === '**') { + partset[j] = '*'; } } } @@ -420,7 +421,11 @@ class Minimatch { let dd = 0; while (-1 !== (dd = parts.indexOf('..', dd + 1))) { const p = parts[dd - 1]; - if (p && p !== '.' && p !== '..' && p !== '**') { + if (p && + p !== '.' && + p !== '..' && + p !== '**' && + !(this.isWindows && /^[a-z]:$/i.test(p))) { didSomething = true; parts.splice(dd - 1, 2); dd -= 2; @@ -669,15 +674,17 @@ class Minimatch { // split the pattern up into globstar-delimited sections // the tail has to be at the end, and the others just have // to be found in order from the head. - const [head, body, tail] = partial ? [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1), - [], - ] : [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1, lastgs), - pattern.slice(lastgs + 1), - ]; + const [head, body, tail] = partial ? + [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1), + [], + ] + : [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1, lastgs), + pattern.slice(lastgs + 1), + ]; // check the head, from the current file/pattern index. if (head.length) { const fileHead = file.slice(fileIndex, fileIndex + head.length); @@ -1023,7 +1030,7 @@ class Minimatch { this.regexp = new RegExp(re, [...flags].join('')); /* c8 ignore start */ } - catch (ex) { + catch { // should be impossible this.regexp = false; } @@ -1038,7 +1045,7 @@ class Minimatch { if (this.preserveMultipleSlashes) { return p.split('/'); } - else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { + else if (this.isWindows && /^\/\/[^/]+/.test(p)) { // add an extra '' for the one we lose return ['', ...p.split(/\/+/)]; } @@ -1080,8 +1087,7 @@ class Minimatch { filename = ff[i]; } } - for (let i = 0; i < set.length; i++) { - const pattern = set[i]; + for (const pattern of set) { let file = ff; if (options.matchBase && pattern.length === 1) { file = [filename]; diff --git a/deps/minimatch/dist/commonjs/index.js.map b/deps/minimatch/dist/commonjs/index.js.map index fc4dea5d2f2ff8..f0b81f03f38174 100644 --- a/deps/minimatch/dist/commonjs/index.js.map +++ b/deps/minimatch/dist/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n /** do not expand `{x,y}` style braces */\n nobrace?: boolean\n /** do not treat patterns starting with `#` as a comment */\n nocomment?: boolean\n /** do not treat patterns starting with `!` as a negation */\n nonegate?: boolean\n /** print LOTS of debugging output */\n debug?: boolean\n /** treat `**` the same as `*` */\n noglobstar?: boolean\n /** do not expand extglobs like `+(a|b)` */\n noext?: boolean\n /** return the pattern if nothing matches */\n nonull?: boolean\n /** treat `\\\\` as a path separator, not an escape character */\n windowsPathsNoEscape?: boolean\n /**\n * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n * @deprecated\n */\n allowWindowsEscape?: boolean\n /**\n * Compare a partial path to a pattern. As long as the parts\n * of the path that are present are not contradicted by the\n * pattern, it will be treated as a match. This is useful in\n * applications where you're walking through a folder structure,\n * and don't yet have the full path, but want to ensure that you\n * do not walk down paths that can never be a match.\n */\n partial?: boolean\n /** allow matches that start with `.` even if the pattern does not */\n dot?: boolean\n /** ignore case */\n nocase?: boolean\n /** ignore case only in wildcard patterns */\n nocaseMagicOnly?: boolean\n /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n magicalBraces?: boolean\n /**\n * If set, then patterns without slashes will be matched\n * against the basename of the path if it contains slashes.\n * For example, `a?b` would match the path `/xyz/123/acb`, but\n * not `/xyz/acb/123`.\n */\n matchBase?: boolean\n /** invert the results of negated matches */\n flipNegate?: boolean\n /** do not collapse multiple `/` into a single `/` */\n preserveMultipleSlashes?: boolean\n /**\n * A number indicating the level of optimization that should be done\n * to the pattern prior to parsing and using it for matches.\n */\n optimizationLevel?: number\n /** operating system platform */\n platform?: Platform\n /**\n * When a pattern starts with a UNC path or drive letter, and in\n * `nocase:true` mode, do not convert the root portions of the\n * pattern into a case-insensitive regular expression, and instead\n * leave them as strings.\n *\n * This is the default when the platform is `win32` and\n * `nocase:true` is set.\n */\n windowsNoMagicRoot?: boolean\n /**\n * max number of `{...}` patterns to expand. Default 100_000.\n */\n braceExpandMax?: number\n /**\n * Max number of non-adjacent `**` patterns to recursively walk down.\n *\n * The default of 200 is almost certainly high enough for most purposes,\n * and can handle absurdly excessive patterns.\n */\n maxGlobstarRecursion?: number\n\n /**\n * Max depth to traverse for nested extglobs like `*(a|b|c)`\n *\n * Default is 2, which is quite low, but any higher value\n * swiftly results in punishing performance impacts. Note\n * that this is *not* relevant when the globstar types can\n * be safely coalesced into a single set.\n *\n * For example, `*(a|@(b|c)|d)` would be flattened into\n * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n * performance and never hit this limit, even if they are\n * excessively deep and complicated.\n *\n * If the limit is hit, then the extglob characters are simply\n * not parsed, and the pattern effectively switches into\n * `noextglob: true` mode for the contents of that nested\n * sub-pattern. This will typically _not_ result in a match,\n * but is considered a valid trade-off for security and\n * performance.\n */\n maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) =>\n orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n ) => orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n maxGlobstarRecursion: number\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: any[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n this.debug = (...args: any[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n do {\n didSomething = false\n //
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] = partial ? [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1),\n      [],\n    ] : [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1, lastgs),\n      pattern.slice(lastgs + 1),\n    ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: unknown[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      //oxlint-disable-next-line no-console\n      this.debug = (...args: unknown[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (const partset of globParts) {\n        for (let j = 0; j < partset.length; j++) {\n          if (partset[j] === '**') {\n            partset[j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/unescape.d.ts b/deps/minimatch/dist/commonjs/unescape.d.ts
index 30ec8292615b74..c4a14473afc706 100644
--- a/deps/minimatch/dist/commonjs/unescape.d.ts
+++ b/deps/minimatch/dist/commonjs/unescape.d.ts
@@ -1,4 +1,4 @@
-import { MinimatchOptions } from './index.js';
+import type { MinimatchOptions } from './index.js';
 /**
  * Un-escape a string that has been escaped with {@link escape}.
  *
diff --git a/deps/minimatch/dist/commonjs/unescape.d.ts.map b/deps/minimatch/dist/commonjs/unescape.d.ts.map
index 6b84d7538f8ce4..09d6eab4e6502c 100644
--- a/deps/minimatch/dist/commonjs/unescape.d.ts.map
+++ b/deps/minimatch/dist/commonjs/unescape.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAczE,CAAA"}
\ No newline at end of file
+{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAczE,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/unescape.js b/deps/minimatch/dist/commonjs/unescape.js
index db8d0c847d21b1..ad648fba64d40d 100644
--- a/deps/minimatch/dist/commonjs/unescape.js
+++ b/deps/minimatch/dist/commonjs/unescape.js
@@ -23,16 +23,16 @@ exports.unescape = void 0;
 const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
     if (magicalBraces) {
         return windowsPathsNoEscape ?
-            s.replace(/\[([^\/\\])\]/g, '$1')
+            s.replace(/\[([^/\\])\]/g, '$1')
             : s
-                .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
-                .replace(/\\([^\/])/g, '$1');
+                .replace(/((?!\\).|^)\[([^/\\])\]/g, '$1$2')
+                .replace(/\\([^/])/g, '$1');
     }
     return windowsPathsNoEscape ?
-        s.replace(/\[([^\/\\{}])\]/g, '$1')
+        s.replace(/\[([^/\\{}])\]/g, '$1')
         : s
-            .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
-            .replace(/\\([^\/{}])/g, '$1');
+            .replace(/((?!\\).|^)\[([^/\\{}])\]/g, '$1$2')
+            .replace(/\\([^/{}])/g, '$1');
 };
 exports.unescape = unescape;
 //# sourceMappingURL=unescape.js.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/commonjs/unescape.js.map b/deps/minimatch/dist/commonjs/unescape.js.map
index 8039823a097313..44387ec58d1bb4 100644
--- a/deps/minimatch/dist/commonjs/unescape.js.map
+++ b/deps/minimatch/dist/commonjs/unescape.js.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEI,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEI,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC;iBAC3C,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC;aAC7C,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;AACrC,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB","sourcesContent":["import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.d.ts b/deps/minimatch/dist/esm/ast.d.ts
index 27845ea71fb977..74f2cf9322b975 100644
--- a/deps/minimatch/dist/esm/ast.d.ts
+++ b/deps/minimatch/dist/esm/ast.d.ts
@@ -1,4 +1,4 @@
-import { MinimatchOptions, MMRegExp } from './index.js';
+import type { MinimatchOptions, MMRegExp } from './index.js';
 export type ExtglobType = '!' | '?' | '+' | '*' | '@';
 export declare class AST {
     #private;
@@ -9,7 +9,7 @@ export declare class AST {
     get hasMagic(): boolean | undefined;
     toString(): string;
     push(...parts: (string | AST)[]): void;
-    toJSON(): any[];
+    toJSON(): unknown[];
     isStart(): boolean;
     isEnd(): boolean;
     copyIn(part: AST | string): void;
diff --git a/deps/minimatch/dist/esm/ast.d.ts.map b/deps/minimatch/dist/esm/ast.d.ts.map
index ec7f7898870ff2..8965fd6a99ff91 100644
--- a/deps/minimatch/dist/esm/ast.d.ts.map
+++ b/deps/minimatch/dist/esm/ast.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AA6IrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAwQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"}
\ No newline at end of file
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwC5D,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAgJrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAexB,EAAE,SAAO;IAET,IAAI,KAAK,IAAI,MAAM,CAElB;gBAgBC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IAkDlB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAe/B,MAAM;IAkBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsQjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IA2BhC,IAAI,OAAO,qBAEV;IAuED,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CA6OjE"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/ast.js b/deps/minimatch/dist/esm/ast.js
index 943a86ceb43ac1..f639546593db64 100644
--- a/deps/minimatch/dist/esm/ast.js
+++ b/deps/minimatch/dist/esm/ast.js
@@ -189,15 +189,14 @@ export class AST {
     }
     // reconstructs the pattern
     toString() {
-        if (this.#toString !== undefined)
-            return this.#toString;
-        if (!this.type) {
-            return (this.#toString = this.#parts.map(p => String(p)).join(''));
-        }
-        else {
-            return (this.#toString =
-                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
-        }
+        return (this.#toString !== undefined ? this.#toString
+            : !this.type ?
+                (this.#toString = this.#parts.map(p => String(p)).join(''))
+                : (this.#toString =
+                    this.type +
+                        '(' +
+                        this.#parts.map(p => String(p)).join('|') +
+                        ')'));
     }
     #fillNegs() {
         /* c8 ignore start */
@@ -477,7 +476,7 @@ export class AST {
     }
     #canUsurpType(c) {
         const m = usurpMap.get(this.type);
-        return !!(m?.has(c));
+        return !!m?.has(c);
     }
     #canUsurp(child) {
         if (!child ||
diff --git a/deps/minimatch/dist/esm/ast.js.map b/deps/minimatch/dist/esm/ast.js.map
index abf30629460b79..f5cc3ee91a072b 100644
--- a/deps/minimatch/dist/esm/ast.js.map
+++ b/deps/minimatch/dist/esm/ast.js.map
@@ -1 +1 @@
-{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!(m?.has(c as ExtglobType))\n  }\n\n  #canUsurp (\n    child?: AST | string,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              this.#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              this.#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n  ExtglobType,\n  Map\n>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    return (\n      this.#toString !== undefined ? this.#toString\n      : !this.type ?\n        (this.#toString = this.#parts.map(p => String(p)).join(''))\n      : (this.#toString =\n          this.type +\n          '(' +\n          this.#parts.map(p => String(p)).join('|') +\n          ')')\n    )\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: unknown[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!m?.has(c as ExtglobType)\n  }\n\n  #canUsurp(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/escape.d.ts b/deps/minimatch/dist/esm/escape.d.ts
index 92e88c8f08825b..141024a06bdf74 100644
--- a/deps/minimatch/dist/esm/escape.d.ts
+++ b/deps/minimatch/dist/esm/escape.d.ts
@@ -1,4 +1,4 @@
-import { MinimatchOptions } from './index.js';
+import type { MinimatchOptions } from './index.js';
 /**
  * Escape all magic characters in a glob pattern.
  *
diff --git a/deps/minimatch/dist/esm/escape.d.ts.map b/deps/minimatch/dist/esm/escape.d.ts.map
index e8d8a693fa4021..e167e30065a04e 100644
--- a/deps/minimatch/dist/esm/escape.d.ts.map
+++ b/deps/minimatch/dist/esm/escape.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,GACjB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAazE,CAAA"}
\ No newline at end of file
+{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,GACjB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAazE,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/escape.js.map b/deps/minimatch/dist/esm/escape.js.map
index f6733c65f13df2..4740508f687a90 100644
--- a/deps/minimatch/dist/esm/escape.js.map
+++ b/deps/minimatch/dist/esm/escape.js.map
@@ -1 +1 @@
-{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,KAAK,MAC+C,EAAE,EACxE,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA","sourcesContent":["import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.d.ts b/deps/minimatch/dist/esm/index.d.ts
index 137bd803690752..7e1fc2edaadbe0 100644
--- a/deps/minimatch/dist/esm/index.d.ts
+++ b/deps/minimatch/dist/esm/index.d.ts
@@ -150,7 +150,7 @@ export declare class Minimatch {
     regexp: false | null | MMRegExp;
     constructor(pattern: string, options?: MinimatchOptions);
     hasMagic(): boolean;
-    debug(..._: any[]): void;
+    debug(..._: unknown[]): void;
     make(): void;
     preprocess(globParts: string[][]): string[][];
     adjascentGlobstarOptimize(globParts: string[][]): string[][];
diff --git a/deps/minimatch/dist/esm/index.d.ts.map b/deps/minimatch/dist/esm/index.d.ts.map
index 1c65035ac63c5a..7620db91cc8185 100644
--- a/deps/minimatch/dist/esm/index.d.ts.map
+++ b/deps/minimatch/dist/esm/index.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/index.js b/deps/minimatch/dist/esm/index.js
index a9e0602187c7fd..a5e6fa88fdc6d6 100644
--- a/deps/minimatch/dist/esm/index.js
+++ b/deps/minimatch/dist/esm/index.js
@@ -12,7 +12,7 @@ export const minimatch = (p, pattern, options = {}) => {
     return new Minimatch(pattern, options).match(p);
 };
 // Optimized checking for the most common glob patterns.
-const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
+const starDotExtRE = /^\*+([^+@!?*[(]*)$/;
 const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
 const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
 const starDotExtTestNocase = (ext) => {
@@ -31,7 +31,7 @@ const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
 const starRE = /^\*+$/;
 const starTest = (f) => f.length !== 0 && !f.startsWith('.');
 const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
-const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
+const qmarksRE = /^\?+([^+@!?*[(]*)?$/;
 const qmarksTestNocase = ([$0, ext = '']) => {
     const noext = qmarksTestNoExt([$0]);
     if (!ext)
@@ -258,6 +258,7 @@ export class Minimatch {
         // step 2: expand braces
         this.globSet = [...new Set(this.braceExpand())];
         if (options.debug) {
+            //oxlint-disable-next-line no-console
             this.debug = (...args) => console.error(...args);
         }
         this.debug(this.pattern, this.globSet);
@@ -320,10 +321,10 @@ export class Minimatch {
     preprocess(globParts) {
         // if we're not in globstar mode, then turn ** into *
         if (this.options.noglobstar) {
-            for (let i = 0; i < globParts.length; i++) {
-                for (let j = 0; j < globParts[i].length; j++) {
-                    if (globParts[i][j] === '**') {
-                        globParts[i][j] = '*';
+            for (const partset of globParts) {
+                for (let j = 0; j < partset.length; j++) {
+                    if (partset[j] === '**') {
+                        partset[j] = '*';
                     }
                 }
             }
@@ -411,7 +412,11 @@ export class Minimatch {
             let dd = 0;
             while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
                 const p = parts[dd - 1];
-                if (p && p !== '.' && p !== '..' && p !== '**') {
+                if (p &&
+                    p !== '.' &&
+                    p !== '..' &&
+                    p !== '**' &&
+                    !(this.isWindows && /^[a-z]:$/i.test(p))) {
                     didSomething = true;
                     parts.splice(dd - 1, 2);
                     dd -= 2;
@@ -660,15 +665,17 @@ export class Minimatch {
         // split the pattern up into globstar-delimited sections
         // the tail has to be at the end, and the others just have
         // to be found in order from the head.
-        const [head, body, tail] = partial ? [
-            pattern.slice(patternIndex, firstgs),
-            pattern.slice(firstgs + 1),
-            [],
-        ] : [
-            pattern.slice(patternIndex, firstgs),
-            pattern.slice(firstgs + 1, lastgs),
-            pattern.slice(lastgs + 1),
-        ];
+        const [head, body, tail] = partial ?
+            [
+                pattern.slice(patternIndex, firstgs),
+                pattern.slice(firstgs + 1),
+                [],
+            ]
+            : [
+                pattern.slice(patternIndex, firstgs),
+                pattern.slice(firstgs + 1, lastgs),
+                pattern.slice(lastgs + 1),
+            ];
         // check the head, from the current file/pattern index.
         if (head.length) {
             const fileHead = file.slice(fileIndex, fileIndex + head.length);
@@ -1014,7 +1021,7 @@ export class Minimatch {
             this.regexp = new RegExp(re, [...flags].join(''));
             /* c8 ignore start */
         }
-        catch (ex) {
+        catch {
             // should be impossible
             this.regexp = false;
         }
@@ -1029,7 +1036,7 @@ export class Minimatch {
         if (this.preserveMultipleSlashes) {
             return p.split('/');
         }
-        else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+        else if (this.isWindows && /^\/\/[^/]+/.test(p)) {
             // add an extra '' for the one we lose
             return ['', ...p.split(/\/+/)];
         }
@@ -1071,8 +1078,7 @@ export class Minimatch {
                 filename = ff[i];
             }
         }
-        for (let i = 0; i < set.length; i++) {
-            const pattern = set[i];
+        for (const pattern of set) {
             let file = ff;
             if (options.matchBase && pattern.length === 1) {
                 file = [filename];
diff --git a/deps/minimatch/dist/esm/index.js.map b/deps/minimatch/dist/esm/index.js.map
index 2dc46400d4755b..431b3a15a00c29 100644
--- a/deps/minimatch/dist/esm/index.js.map
+++ b/deps/minimatch/dist/esm/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] = partial ? [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1),\n      [],\n    ] : [\n      pattern.slice(patternIndex, firstgs),\n      pattern.slice(firstgs + 1, lastgs),\n      pattern.slice(lastgs + 1),\n    ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li  for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: unknown[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      //oxlint-disable-next-line no-console\n      this.debug = (...args: unknown[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (const partset of globParts) {\n        for (let j = 0; j < partset.length; j++) {\n          if (partset[j] === '**') {\n            partset[j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n\n    do {\n      didSomething = false\n      // 
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/unescape.d.ts b/deps/minimatch/dist/esm/unescape.d.ts
index 30ec8292615b74..c4a14473afc706 100644
--- a/deps/minimatch/dist/esm/unescape.d.ts
+++ b/deps/minimatch/dist/esm/unescape.d.ts
@@ -1,4 +1,4 @@
-import { MinimatchOptions } from './index.js';
+import type { MinimatchOptions } from './index.js';
 /**
  * Un-escape a string that has been escaped with {@link escape}.
  *
diff --git a/deps/minimatch/dist/esm/unescape.d.ts.map b/deps/minimatch/dist/esm/unescape.d.ts.map
index 6b84d7538f8ce4..09d6eab4e6502c 100644
--- a/deps/minimatch/dist/esm/unescape.d.ts.map
+++ b/deps/minimatch/dist/esm/unescape.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAczE,CAAA"}
\ No newline at end of file
+{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,EACT,2CAGG,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,eAAe,CAAM,WAczE,CAAA"}
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/unescape.js b/deps/minimatch/dist/esm/unescape.js
index b31bd40a028407..19ce86e7c86052 100644
--- a/deps/minimatch/dist/esm/unescape.js
+++ b/deps/minimatch/dist/esm/unescape.js
@@ -20,15 +20,15 @@
 export const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
     if (magicalBraces) {
         return windowsPathsNoEscape ?
-            s.replace(/\[([^\/\\])\]/g, '$1')
+            s.replace(/\[([^/\\])\]/g, '$1')
             : s
-                .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
-                .replace(/\\([^\/])/g, '$1');
+                .replace(/((?!\\).|^)\[([^/\\])\]/g, '$1$2')
+                .replace(/\\([^/])/g, '$1');
     }
     return windowsPathsNoEscape ?
-        s.replace(/\[([^\/\\{}])\]/g, '$1')
+        s.replace(/\[([^/\\{}])\]/g, '$1')
         : s
-            .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
-            .replace(/\\([^\/{}])/g, '$1');
+            .replace(/((?!\\).|^)\[([^/\\{}])\]/g, '$1$2')
+            .replace(/\\([^/{}])/g, '$1');
 };
 //# sourceMappingURL=unescape.js.map
\ No newline at end of file
diff --git a/deps/minimatch/dist/esm/unescape.js.map b/deps/minimatch/dist/esm/unescape.js.map
index 288321b86c686d..6d507391171b5f 100644
--- a/deps/minimatch/dist/esm/unescape.js.map
+++ b/deps/minimatch/dist/esm/unescape.js.map
@@ -1 +1 @@
-{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC;iBAC5C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC;aAC9C,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^\\/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^\\/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,EAC5B,aAAa,GAAG,IAAI,MACgD,EAAE,EACxE,EAAE;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,CAAC,CAAC;YACzB,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC;iBACE,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC;iBAC3C,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,oBAAoB,CAAC,CAAC;QACzB,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;aACE,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC;aAC7C,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;AACrC,CAAC,CAAA","sourcesContent":["import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^/{}])/g, '$1')\n}\n"]}
\ No newline at end of file
diff --git a/deps/minimatch/index.js b/deps/minimatch/index.js
index d28609b10808f9..c30673985f9b5d 100644
--- a/deps/minimatch/index.js
+++ b/deps/minimatch/index.js
@@ -183,7 +183,7 @@ var require_commonjs2 = __commonJS({
           const x = numeric(n[0]);
           const y = numeric(n[1]);
           const width = Math.max(n[0].length, n[1].length);
-          let incr = n.length === 3 && n[2] !== void 0 ? Math.abs(numeric(n[2])) : 1;
+          let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
           let test = lte;
           const reverse = y < x;
           if (reverse) {
@@ -379,9 +379,9 @@ var require_unescape = __commonJS({
     exports2.unescape = void 0;
     var unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true } = {}) => {
       if (magicalBraces) {
-        return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1");
+        return windowsPathsNoEscape ? s.replace(/\[([^/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\])\]/g, "$1$2").replace(/\\([^/])/g, "$1");
       }
-      return windowsPathsNoEscape ? s.replace(/\[([^\/\\{}])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\{}])\]/g, "$1$2").replace(/\\([^\/{}])/g, "$1");
+      return windowsPathsNoEscape ? s.replace(/\[([^/\\{}])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\{}])\]/g, "$1$2").replace(/\\([^/{}])/g, "$1");
     };
     exports2.unescape = unescape;
   }
@@ -511,13 +511,7 @@ var require_ast = __commonJS({
       }
       // reconstructs the pattern
       toString() {
-        if (this.#toString !== void 0)
-          return this.#toString;
-        if (!this.type) {
-          return this.#toString = this.#parts.map((p) => String(p)).join("");
-        } else {
-          return this.#toString = this.type + "(" + this.#parts.map((p) => String(p)).join("|") + ")";
-        }
+        return this.#toString !== void 0 ? this.#toString : !this.type ? this.#toString = this.#parts.map((p) => String(p)).join("") : this.#toString = this.type + "(" + this.#parts.map((p) => String(p)).join("|") + ")";
       }
       #fillNegs() {
         if (this !== this.#root)
@@ -1079,7 +1073,7 @@ var minimatch = (p, pattern, options = {}) => {
   return new Minimatch(pattern, options).match(p);
 };
 exports.minimatch = minimatch;
-var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
+var starDotExtRE = /^\*+([^+@!?*[(]*)$/;
 var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2);
 var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2);
 var starDotExtTestNocase = (ext2) => {
@@ -1098,7 +1092,7 @@ var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith(".");
 var starRE = /^\*+$/;
 var starTest = (f) => f.length !== 0 && !f.startsWith(".");
 var starTestDot = (f) => f.length !== 0 && f !== "." && f !== "..";
-var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
+var qmarksRE = /^\?+([^+@!?*[(]*)?$/;
 var qmarksTestNocase = ([$0, ext2 = ""]) => {
   const noext = qmarksTestNoExt([$0]);
   if (!ext2)
@@ -1322,10 +1316,10 @@ var Minimatch = class {
   // of patterns that we have to process.
   preprocess(globParts) {
     if (this.options.noglobstar) {
-      for (let i = 0; i < globParts.length; i++) {
-        for (let j = 0; j < globParts[i].length; j++) {
-          if (globParts[i][j] === "**") {
-            globParts[i][j] = "*";
+      for (const partset of globParts) {
+        for (let j = 0; j < partset.length; j++) {
+          if (partset[j] === "**") {
+            partset[j] = "*";
           }
         }
       }
@@ -1403,7 +1397,7 @@ var Minimatch = class {
       let dd = 0;
       while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
         const p = parts[dd - 1];
-        if (p && p !== "." && p !== ".." && p !== "**") {
+        if (p && p !== "." && p !== ".." && p !== "**" && !(this.isWindows && /^[a-z]:$/i.test(p))) {
           didSomething = true;
           parts.splice(dd - 1, 2);
           dd -= 2;
@@ -1819,7 +1813,7 @@ var Minimatch = class {
       re = "^(?!" + re + ").+$";
     try {
       this.regexp = new RegExp(re, [...flags].join(""));
-    } catch (ex) {
+    } catch {
       this.regexp = false;
     }
     return this.regexp;
@@ -1827,7 +1821,7 @@ var Minimatch = class {
   slashSplit(p) {
     if (this.preserveMultipleSlashes) {
       return p.split("/");
-    } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+    } else if (this.isWindows && /^\/\/[^/]+/.test(p)) {
       return ["", ...p.split(/\/+/)];
     } else {
       return p.split(/\/+/);
@@ -1858,8 +1852,7 @@ var Minimatch = class {
         filename = ff[i];
       }
     }
-    for (let i = 0; i < set.length; i++) {
-      const pattern = set[i];
+    for (const pattern of set) {
       let file = ff;
       if (options.matchBase && pattern.length === 1) {
         file = [filename];
diff --git a/deps/minimatch/package-lock.json b/deps/minimatch/package-lock.json
index 1022f59865f99d..78a7acf719f6b4 100644
--- a/deps/minimatch/package-lock.json
+++ b/deps/minimatch/package-lock.json
@@ -1,24 +1,26 @@
 {
   "name": "minimatch",
-  "version": "10.2.4",
+  "version": "10.2.5",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "minimatch",
-      "version": "10.2.4",
+      "version": "10.2.5",
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "brace-expansion": "^5.0.2"
+        "brace-expansion": "^5.0.5"
       },
       "devDependencies": {
-        "@types/node": "^25.3.0",
-        "esbuild": "^0.27.3",
+        "@types/node": "^25.5.0",
+        "esbuild": "^0.28.0",
         "mkdirp": "^3.0.1",
-        "prettier": "^3.6.2",
+        "oxlint": "^1.57.0",
+        "oxlint-tsgolint": "^0.18.1",
+        "prettier": "^3.8.1",
         "tap": "^21.6.2",
-        "tshy": "^3.0.2",
-        "typedoc": "^0.28.5"
+        "tshy": "^4.0.0",
+        "typedoc": "^0.28.18"
       },
       "engines": {
         "node": "18 || 20 || >=22"
@@ -72,9 +74,9 @@
       }
     },
     "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
-      "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz",
+      "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==",
       "cpu": [
         "ppc64"
       ],
@@ -89,9 +91,9 @@
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz",
-      "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz",
+      "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==",
       "cpu": [
         "arm"
       ],
@@ -106,9 +108,9 @@
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz",
-      "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz",
+      "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==",
       "cpu": [
         "arm64"
       ],
@@ -123,9 +125,9 @@
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz",
-      "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz",
+      "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==",
       "cpu": [
         "x64"
       ],
@@ -140,9 +142,9 @@
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz",
-      "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz",
+      "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==",
       "cpu": [
         "arm64"
       ],
@@ -157,9 +159,9 @@
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz",
-      "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz",
+      "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==",
       "cpu": [
         "x64"
       ],
@@ -174,9 +176,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz",
-      "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz",
+      "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==",
       "cpu": [
         "arm64"
       ],
@@ -191,9 +193,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz",
-      "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz",
+      "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==",
       "cpu": [
         "x64"
       ],
@@ -208,9 +210,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz",
-      "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz",
+      "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==",
       "cpu": [
         "arm"
       ],
@@ -225,9 +227,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz",
-      "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz",
+      "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==",
       "cpu": [
         "arm64"
       ],
@@ -242,9 +244,9 @@
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz",
-      "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz",
+      "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==",
       "cpu": [
         "ia32"
       ],
@@ -259,9 +261,9 @@
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz",
-      "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz",
+      "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==",
       "cpu": [
         "loong64"
       ],
@@ -276,9 +278,9 @@
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz",
-      "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz",
+      "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==",
       "cpu": [
         "mips64el"
       ],
@@ -293,9 +295,9 @@
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz",
-      "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz",
+      "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==",
       "cpu": [
         "ppc64"
       ],
@@ -310,9 +312,9 @@
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz",
-      "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz",
+      "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==",
       "cpu": [
         "riscv64"
       ],
@@ -327,9 +329,9 @@
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz",
-      "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz",
+      "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==",
       "cpu": [
         "s390x"
       ],
@@ -344,9 +346,9 @@
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz",
-      "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz",
+      "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==",
       "cpu": [
         "x64"
       ],
@@ -361,9 +363,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz",
-      "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz",
+      "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==",
       "cpu": [
         "arm64"
       ],
@@ -378,9 +380,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz",
-      "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz",
+      "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==",
       "cpu": [
         "x64"
       ],
@@ -395,9 +397,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz",
-      "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz",
+      "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==",
       "cpu": [
         "arm64"
       ],
@@ -412,9 +414,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz",
-      "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz",
+      "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==",
       "cpu": [
         "x64"
       ],
@@ -429,9 +431,9 @@
       }
     },
     "node_modules/@esbuild/openharmony-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz",
-      "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz",
+      "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==",
       "cpu": [
         "arm64"
       ],
@@ -446,9 +448,9 @@
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz",
-      "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz",
+      "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==",
       "cpu": [
         "x64"
       ],
@@ -463,9 +465,9 @@
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz",
-      "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz",
+      "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==",
       "cpu": [
         "arm64"
       ],
@@ -480,9 +482,9 @@
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz",
-      "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz",
+      "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==",
       "cpu": [
         "ia32"
       ],
@@ -497,9 +499,9 @@
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz",
-      "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz",
+      "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==",
       "cpu": [
         "x64"
       ],
@@ -514,14 +516,11 @@
       }
     },
     "node_modules/@gar/promise-retry": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz",
-      "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
+      "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==",
       "dev": true,
       "license": "MIT",
-      "dependencies": {
-        "retry": "^0.13.1"
-      },
       "engines": {
         "node": "^20.17.0 || >=22.9.0"
       }
@@ -801,6 +800,437 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
+    "node_modules/@oxlint-tsgolint/darwin-arm64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-0.18.1.tgz",
+      "integrity": "sha512-CxSd15ZwHn70UJFTXVvy76bZ9zwI097cVyjvUFmYRJwvkQF3VnrTf2oe1gomUacErksvtqLgn9OKvZhLMYwvog==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@oxlint-tsgolint/darwin-x64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-0.18.1.tgz",
+      "integrity": "sha512-LE7VW/T/VcKhl3Z1ev5BusrxdlQ3DWweSeOB+qpBeur2h8+vCWq+M7tCO29C7lveBDfx1+rNwj4aiUVlA+Qs+g==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@oxlint-tsgolint/linux-arm64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-0.18.1.tgz",
+      "integrity": "sha512-2AG8YIXVJJbnM0rcsJmzzWOjZXBu5REwowgUpbHZueF7OYM3wR7Xu8pXEpAojEHAtYYZ3X4rpPoetomkJx7kCw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@oxlint-tsgolint/linux-x64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-0.18.1.tgz",
+      "integrity": "sha512-f8vDYPEdiwpA2JaDEkadTXfuqIgweQ8zcL4SX75EN2kkW2oAynjN7cd8m86uXDgB0JrcyOywbRtwnXdiIzXn2A==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@oxlint-tsgolint/win32-arm64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-0.18.1.tgz",
+      "integrity": "sha512-fBdML05KMDAL9ebWeoHIzkyI86Eq6r9YH5UDRuXJ9vAIo1EnKo0ti7hLUxNdc2dy2FF/T4k98p5wkkXvLyXqfA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@oxlint-tsgolint/win32-x64": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-0.18.1.tgz",
+      "integrity": "sha512-cYZMhNrsq9ZZ3OUWHyawqiS+c8HfieYG0zuZP2LbEuWWPfdZM/22iAlo608J+27G1s9RXQhvgX6VekwWbXbD7A==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@oxlint/binding-android-arm-eabi": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.58.0.tgz",
+      "integrity": "sha512-1T7UN3SsWWxpWyWGn1cT3ASNJOo+pI3eUkmEl7HgtowapcV8kslYpFQcYn431VuxghXakPNlbjRwhqmR37PFOg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-android-arm64": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.58.0.tgz",
+      "integrity": "sha512-GryzujxuiRv2YFF7bRy8mKcxlbuAN+euVUtGJt9KKbLT8JBUIosamVhcthLh+VEr6KE6cjeVMAQxKAzJcoN7dg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-darwin-arm64": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.58.0.tgz",
+      "integrity": "sha512-7/bRSJIwl4GxeZL9rPZ11anNTyUO9epZrfEJH/ZMla3+/gbQ6xZixh9nOhsZ0QwsTW7/5J2A/fHbD1udC5DQQA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-darwin-x64": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.58.0.tgz",
+      "integrity": "sha512-EqdtJSiHweS2vfILNrpyJ6HUwpEq2g7+4Zx1FPi4hu3Hu7tC3znF6ufbXO8Ub2LD4mGgznjI7kSdku9NDD1Mkg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-freebsd-x64": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.58.0.tgz",
+      "integrity": "sha512-VQt5TH4M42mY20F545G637RKxV/yjwVtKk2vfXuazfReSIiuvWBnv+FVSvIV5fKVTJNjt3GSJibh6JecbhGdBw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-arm-gnueabihf": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.58.0.tgz",
+      "integrity": "sha512-fBYcj4ucwpAtjJT3oeBdFBYKvNyjRSK+cyuvBOTQjh0jvKp4yeA4S/D0IsCHus/VPaNG5L48qQkh+Vjy3HL2/Q==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-arm-musleabihf": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.58.0.tgz",
+      "integrity": "sha512-0BeuFfwlUHlJ1xpEdSD1YO3vByEFGPg36uLjK1JgFaxFb4W6w17F8ET8sz5cheZ4+x5f2xzdnRrrWv83E3Yd8g==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-arm64-gnu": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.58.0.tgz",
+      "integrity": "sha512-TXlZgnPTlxrQzxG9ZXU7BNwx1Ilrr17P3GwZY0If2EzrinqRH3zXPc3HrRcBJgcsoZNMuNL5YivtkJYgp467UQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-arm64-musl": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.58.0.tgz",
+      "integrity": "sha512-zSoYRo5dxHLcUx93Stl2hW3hSNjPt99O70eRVWt5A1zwJ+FPjeCCANCD2a9R4JbHsdcl11TIQOjyigcRVOH2mw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-ppc64-gnu": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.58.0.tgz",
+      "integrity": "sha512-NQ0U/lqxH2/VxBYeAIvMNUK1y0a1bJ3ZicqkF2c6wfakbEciP9jvIE4yNzCFpZaqeIeRYaV7AVGqEO1yrfVPjA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-riscv64-gnu": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.58.0.tgz",
+      "integrity": "sha512-X9J+kr3gIC9FT8GuZt0ekzpNUtkBVzMVU4KiKDSlocyQuEgi3gBbXYN8UkQiV77FTusLDPsovjo95YedHr+3yg==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-riscv64-musl": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.58.0.tgz",
+      "integrity": "sha512-CDze3pi1OO3Wvb/QsXjmLEY4XPKGM6kIo82ssNOgmcl1IdndF9VSGAE38YLhADWmOac7fjqhBw82LozuUVxD0Q==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-s390x-gnu": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.58.0.tgz",
+      "integrity": "sha512-b/89glbxFaEAcA6Uf1FvCNecBJEgcUTsV1quzrqXM/o4R1M4u+2KCVuyGCayN2UpsRWtGGLb+Ver0tBBpxaPog==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-x64-gnu": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.58.0.tgz",
+      "integrity": "sha512-0/yYpkq9VJFCEcuRlrViGj8pJUFFvNS4EkEREaN7CB1EcLXJIaVSSa5eCihwBGXtOZxhnblWgxks9juRdNQI7w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "glibc"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-linux-x64-musl": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.58.0.tgz",
+      "integrity": "sha512-hr6FNvmcAXiH+JxSvaJ4SJ1HofkdqEElXICW9sm3/Rd5eC3t7kzvmLyRAB3NngKO2wzXRCAm4Z/mGWfrsS4X8w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "libc": [
+        "musl"
+      ],
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-openharmony-arm64": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.58.0.tgz",
+      "integrity": "sha512-R+O368VXgRql1K6Xar+FEo7NEwfo13EibPMoTv3sesYQedRXd6m30Dh/7lZMxnrQVFfeo4EOfYIP4FpcgWQNHg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openharmony"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-win32-arm64-msvc": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.58.0.tgz",
+      "integrity": "sha512-Q0FZiAY/3c4YRj4z3h9K1PgaByrifrfbBoODSeX7gy97UtB7pySPUQfC2B/GbxWU6k7CzQrRy5gME10PltLAFQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-win32-ia32-msvc": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.58.0.tgz",
+      "integrity": "sha512-Y8FKBABrSPp9H0QkRLHDHOSUgM/309a3IvOVgPcVxYcX70wxJrk608CuTg7w+C6vEd724X5wJoNkBcGYfH7nNQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
+    "node_modules/@oxlint/binding-win32-x64-msvc": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.58.0.tgz",
+      "integrity": "sha512-bCn5rbiz5My+Bj7M09sDcnqW0QJyINRVxdZ65x1/Y2tGrMwherwK/lpk+HRQCKvXa8pcaQdF5KY5j54VGZLwNg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      }
+    },
     "node_modules/@pkgjs/parseargs": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -875,9 +1305,9 @@
       }
     },
     "node_modules/@sigstore/core": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz",
-      "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.0.tgz",
+      "integrity": "sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
@@ -895,27 +1325,27 @@
       }
     },
     "node_modules/@sigstore/sign": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz",
-      "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz",
+      "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
+        "@gar/promise-retry": "^1.0.2",
         "@sigstore/bundle": "^4.0.0",
-        "@sigstore/core": "^3.1.0",
+        "@sigstore/core": "^3.2.0",
         "@sigstore/protobuf-specs": "^0.5.0",
-        "make-fetch-happen": "^15.0.3",
-        "proc-log": "^6.1.0",
-        "promise-retry": "^2.0.1"
+        "make-fetch-happen": "^15.0.4",
+        "proc-log": "^6.1.0"
       },
       "engines": {
         "node": "^20.17.0 || >=22.9.0"
       }
     },
     "node_modules/@sigstore/tuf": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz",
-      "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz",
+      "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -1405,6 +1835,48 @@
         "@tapjs/core": "4.5.2"
       }
     },
+    "node_modules/@tapjs/test/node_modules/tshy": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz",
+      "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==",
+      "dev": true,
+      "license": "BlueOak-1.0.0",
+      "dependencies": {
+        "@typescript/native-preview": "^7.0.0-dev.20260218.1",
+        "chalk": "^5.6.2",
+        "chokidar": "^4.0.3",
+        "foreground-child": "^4.0.0",
+        "jsonc-simple-parser": "^3.0.0",
+        "minimatch": "^10.0.3",
+        "mkdirp": "^3.0.1",
+        "polite-json": "^5.0.0",
+        "resolve-import": "^2.4.0",
+        "rimraf": "^6.1.2",
+        "sync-content": "^2.0.3",
+        "typescript": "^5.9.3",
+        "walk-up-path": "^4.0.0"
+      },
+      "bin": {
+        "tshy": "dist/esm/bin-min.mjs"
+      },
+      "engines": {
+        "node": "20 || >=22"
+      }
+    },
+    "node_modules/@tapjs/test/node_modules/typescript": {
+      "version": "5.9.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+      "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
     "node_modules/@tapjs/typescript": {
       "version": "3.5.4",
       "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.4.tgz",
@@ -1504,9 +1976,9 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "25.3.3",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz",
-      "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==",
+      "version": "25.5.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz",
+      "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -1521,28 +1993,28 @@
       "license": "MIT"
     },
     "node_modules/@typescript/native-preview": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-kEUE54Shr4VfD1aVlxBkT9EVRkdSklINPxcUdFDwWQYh+uNRfgM/KmGUapbhCnoaat8ALRv30X6r6Eu3WiEhGg==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-XiZ31gvwWDnMSriMglmYsua2cIw+RsZ0pdqhIJs8jh+l7rNav3LJ+DQUe2jJYkHE0+xFOwyTUtuYlrFHsBsujw==",
       "dev": true,
       "license": "Apache-2.0",
       "bin": {
         "tsgo": "bin/tsgo.js"
       },
       "optionalDependencies": {
-        "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-linux-arm": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-linux-x64": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260228.1",
-        "@typescript/native-preview-win32-x64": "7.0.0-dev.20260228.1"
+        "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-linux-arm": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-linux-x64": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260404.1",
+        "@typescript/native-preview-win32-x64": "7.0.0-dev.20260404.1"
       }
     },
     "node_modules/@typescript/native-preview-darwin-arm64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-WzU0dbBNrEC/qS/axWxcxSosQNg422SdEq/aPf/98RDjYQVy1ILH0UU1aOyzROujPyUBPeVho71MrFEhb9uh6g==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-9pQFaF1SuYAfz81o87rtuuxWtVI3ws7lW1Rpc3TM1S4A1kV9BCePyeW1bA9fc4TUhRCsnFKElPWN36SnwAmMRg==",
       "cpu": [
         "arm64"
       ],
@@ -1554,9 +2026,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-darwin-x64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-6QJ3PApmZoc87exMhashVL/gjNG+1Ph5OkUT3GXblM5PucXdEuVr1d86TC0O31EBbqUWWKUbp+U/BiTko1gOHw==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-vS3+8FbgyyYlSq1wv5IGi5i3FIuoWet2BbQU3kfIhdVWN2d+Kcg75jrDVq6uSjbW4VFZDz2dBKAPi5YLinX2ig==",
       "cpu": [
         "x64"
       ],
@@ -1568,9 +2040,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-arm": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-H2rKa7vjt/kfzlz+sdXW5VU/f8PcemCbW4JLcAi4esSUSDYDNsOHYCgLdrOrvUA9IBK86kunkTsJVvKJLpy+jQ==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-7w6NQBUibFWRmS6SSwrIMoMoPpiXmeAPxelgDsIcCf08RLvujB0cWp91r+qF7N03QV9NHDiQHwowINdoxWR9gQ==",
       "cpu": [
         "arm"
       ],
@@ -1582,9 +2054,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-arm64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-oVJ689FnZuwm0+MEFtbWcI9kqCfU8+7/z23d2SgMl5M4NKYk5CqUsOtm6IGwZRRLJONKhmSdAzOCSbMN9UTLEg==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-CDjKhvTEsgSMP9/hr0NklVgzDhocGT7fALrgD9xHWbRwiYf+6hXZXIEcyvhJr7xvRdbrLF5zMHrY8/G7/mQLXA==",
       "cpu": [
         "arm64"
       ],
@@ -1596,9 +2068,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-linux-x64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-W4/N02tp9CSd+ZO5p6KyyKqXmqMA2vtVcvnjBLyPDZQ4KgUAeRMJFzH/7ME2BN3BxZCplX5WFXfmI6fkc+1z+w==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-AIxWszfp8xzvBRq+iSE+YmlJQRUWP50Qrq1N6PeQeeBR9uXl/1i972vSDkiO0lrSalgypDh4lLtTXK5VBwMOKg==",
       "cpu": [
         "x64"
       ],
@@ -1610,9 +2082,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-win32-arm64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-AB6NhxIInyeIzINJLhIzNo4qQOEHp/YvATptTK6vcngBq9syb2ST6UAMIAtl2Vj1m9wjMpUyHzzcJK/1c1MemA==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-AHD1xpkoAquap3Dcg7Mk1Bd1an7nw8ziPETgb1c/W80bVUGQ+Hzrhq8pLuU68LKR8Le2j5EkF/BYHI4VAztaKg==",
       "cpu": [
         "arm64"
       ],
@@ -1624,9 +2096,9 @@
       ]
     },
     "node_modules/@typescript/native-preview-win32-x64": {
-      "version": "7.0.0-dev.20260228.1",
-      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260228.1.tgz",
-      "integrity": "sha512-9Wq1d0ZbrJcF6NoODw4+SRNdcZtKMmm2w32Wlo+r6ZIziBF5HFWvJcwGXNE0pbFpX6H/Gs8dhLaDKZU2dLoWOA==",
+      "version": "7.0.0-dev.20260404.1",
+      "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260404.1.tgz",
+      "integrity": "sha512-G8yDp0kZOJbtClPhHe3RXywFVNkkQefAgbQI46bfNPrqfmflQia4fYHeIDVX2XEb0FKTmwaIGnhL1+BYT1f9AQ==",
       "cpu": [
         "x64"
       ],
@@ -1772,9 +2244,9 @@
       }
     },
     "node_modules/brace-expansion": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
-      "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
+      "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
       "license": "MIT",
       "dependencies": {
         "balanced-match": "^4.0.2"
@@ -1835,9 +2307,9 @@
       }
     },
     "node_modules/cacache": {
-      "version": "20.0.3",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz",
-      "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==",
+      "version": "20.0.4",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz",
+      "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -1850,8 +2322,7 @@
         "minipass-flush": "^1.0.5",
         "minipass-pipeline": "^1.2.4",
         "p-map": "^7.0.2",
-        "ssri": "^13.0.0",
-        "unique-filename": "^5.0.0"
+        "ssri": "^13.0.0"
       },
       "engines": {
         "node": "^20.17.0 || >=22.9.0"
@@ -2170,9 +2641,9 @@
       }
     },
     "node_modules/diff": {
-      "version": "8.0.3",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
-      "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
+      "version": "8.0.4",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+      "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
       "dev": true,
       "license": "BSD-3-Clause",
       "engines": {
@@ -2229,17 +2700,10 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/err-code": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
-      "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/es-toolkit": {
-      "version": "1.44.0",
-      "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz",
-      "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==",
+      "version": "1.45.1",
+      "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz",
+      "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==",
       "dev": true,
       "license": "MIT",
       "workspaces": [
@@ -2248,9 +2712,9 @@
       ]
     },
     "node_modules/esbuild": {
-      "version": "0.27.3",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
-      "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==",
+      "version": "0.28.0",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz",
+      "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
@@ -2261,32 +2725,32 @@
         "node": ">=18"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.27.3",
-        "@esbuild/android-arm": "0.27.3",
-        "@esbuild/android-arm64": "0.27.3",
-        "@esbuild/android-x64": "0.27.3",
-        "@esbuild/darwin-arm64": "0.27.3",
-        "@esbuild/darwin-x64": "0.27.3",
-        "@esbuild/freebsd-arm64": "0.27.3",
-        "@esbuild/freebsd-x64": "0.27.3",
-        "@esbuild/linux-arm": "0.27.3",
-        "@esbuild/linux-arm64": "0.27.3",
-        "@esbuild/linux-ia32": "0.27.3",
-        "@esbuild/linux-loong64": "0.27.3",
-        "@esbuild/linux-mips64el": "0.27.3",
-        "@esbuild/linux-ppc64": "0.27.3",
-        "@esbuild/linux-riscv64": "0.27.3",
-        "@esbuild/linux-s390x": "0.27.3",
-        "@esbuild/linux-x64": "0.27.3",
-        "@esbuild/netbsd-arm64": "0.27.3",
-        "@esbuild/netbsd-x64": "0.27.3",
-        "@esbuild/openbsd-arm64": "0.27.3",
-        "@esbuild/openbsd-x64": "0.27.3",
-        "@esbuild/openharmony-arm64": "0.27.3",
-        "@esbuild/sunos-x64": "0.27.3",
-        "@esbuild/win32-arm64": "0.27.3",
-        "@esbuild/win32-ia32": "0.27.3",
-        "@esbuild/win32-x64": "0.27.3"
+        "@esbuild/aix-ppc64": "0.28.0",
+        "@esbuild/android-arm": "0.28.0",
+        "@esbuild/android-arm64": "0.28.0",
+        "@esbuild/android-x64": "0.28.0",
+        "@esbuild/darwin-arm64": "0.28.0",
+        "@esbuild/darwin-x64": "0.28.0",
+        "@esbuild/freebsd-arm64": "0.28.0",
+        "@esbuild/freebsd-x64": "0.28.0",
+        "@esbuild/linux-arm": "0.28.0",
+        "@esbuild/linux-arm64": "0.28.0",
+        "@esbuild/linux-ia32": "0.28.0",
+        "@esbuild/linux-loong64": "0.28.0",
+        "@esbuild/linux-mips64el": "0.28.0",
+        "@esbuild/linux-ppc64": "0.28.0",
+        "@esbuild/linux-riscv64": "0.28.0",
+        "@esbuild/linux-s390x": "0.28.0",
+        "@esbuild/linux-x64": "0.28.0",
+        "@esbuild/netbsd-arm64": "0.28.0",
+        "@esbuild/netbsd-x64": "0.28.0",
+        "@esbuild/openbsd-arm64": "0.28.0",
+        "@esbuild/openbsd-x64": "0.28.0",
+        "@esbuild/openharmony-arm64": "0.28.0",
+        "@esbuild/sunos-x64": "0.28.0",
+        "@esbuild/win32-arm64": "0.28.0",
+        "@esbuild/win32-ia32": "0.28.0",
+        "@esbuild/win32-x64": "0.28.0"
       }
     },
     "node_modules/escalade": {
@@ -2562,16 +3026,6 @@
         "node": "^20.17.0 || >=22.9.0"
       }
     },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
     "node_modules/indent-string": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
@@ -2848,9 +3302,9 @@
       }
     },
     "node_modules/lru-cache": {
-      "version": "11.2.6",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
-      "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
+      "version": "11.2.7",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
+      "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "engines": {
@@ -2888,14 +3342,15 @@
       "license": "ISC"
     },
     "node_modules/make-fetch-happen": {
-      "version": "15.0.4",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz",
-      "integrity": "sha512-vM2sG+wbVeVGYcCm16mM3d5fuem9oC28n436HjsGO3LcxoTI8LNVa4rwZDn3f76+cWyT4GGJDxjTYU1I2nr6zw==",
+      "version": "15.0.5",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz",
+      "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
         "@gar/promise-retry": "^1.0.0",
         "@npmcli/agent": "^4.0.0",
+        "@npmcli/redact": "^4.0.0",
         "cacache": "^20.0.1",
         "http-cache-semantics": "^4.1.1",
         "minipass": "^7.0.2",
@@ -2946,13 +3401,13 @@
       }
     },
     "node_modules/minimatch": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
-      "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+      "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
-        "brace-expansion": "^5.0.2"
+        "brace-expansion": "^5.0.5"
       },
       "engines": {
         "node": "18 || 20 || >=22"
@@ -3003,11 +3458,11 @@
       }
     },
     "node_modules/minipass-flush": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
-      "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",
+      "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",
       "dev": true,
-      "license": "ISC",
+      "license": "BlueOak-1.0.0",
       "dependencies": {
         "minipass": "^3.0.0"
       },
@@ -3303,6 +3758,69 @@
         "opener": "bin/opener-bin.js"
       }
     },
+    "node_modules/oxlint": {
+      "version": "1.58.0",
+      "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.58.0.tgz",
+      "integrity": "sha512-t4s9leczDMqlvOSjnbCQe7gtoLkWgBGZ7sBdCJ9EOj5IXFSG/X7OAzK4yuH4iW+4cAYe8kLFbC8tuYMwWZm+Cg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "oxlint": "bin/oxlint"
+      },
+      "engines": {
+        "node": "^20.19.0 || >=22.12.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/Boshen"
+      },
+      "optionalDependencies": {
+        "@oxlint/binding-android-arm-eabi": "1.58.0",
+        "@oxlint/binding-android-arm64": "1.58.0",
+        "@oxlint/binding-darwin-arm64": "1.58.0",
+        "@oxlint/binding-darwin-x64": "1.58.0",
+        "@oxlint/binding-freebsd-x64": "1.58.0",
+        "@oxlint/binding-linux-arm-gnueabihf": "1.58.0",
+        "@oxlint/binding-linux-arm-musleabihf": "1.58.0",
+        "@oxlint/binding-linux-arm64-gnu": "1.58.0",
+        "@oxlint/binding-linux-arm64-musl": "1.58.0",
+        "@oxlint/binding-linux-ppc64-gnu": "1.58.0",
+        "@oxlint/binding-linux-riscv64-gnu": "1.58.0",
+        "@oxlint/binding-linux-riscv64-musl": "1.58.0",
+        "@oxlint/binding-linux-s390x-gnu": "1.58.0",
+        "@oxlint/binding-linux-x64-gnu": "1.58.0",
+        "@oxlint/binding-linux-x64-musl": "1.58.0",
+        "@oxlint/binding-openharmony-arm64": "1.58.0",
+        "@oxlint/binding-win32-arm64-msvc": "1.58.0",
+        "@oxlint/binding-win32-ia32-msvc": "1.58.0",
+        "@oxlint/binding-win32-x64-msvc": "1.58.0"
+      },
+      "peerDependencies": {
+        "oxlint-tsgolint": ">=0.18.0"
+      },
+      "peerDependenciesMeta": {
+        "oxlint-tsgolint": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/oxlint-tsgolint": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-0.18.1.tgz",
+      "integrity": "sha512-Hgb0wMfuXBYL0ddY+1hAG8IIfC40ADwPnBuUaC6ENAuCtTF4dHwsy7mCYtQ2e7LoGvfoSJRY0+kqQRiembJ/jQ==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "tsgolint": "bin/tsgolint.js"
+      },
+      "optionalDependencies": {
+        "@oxlint-tsgolint/darwin-arm64": "0.18.1",
+        "@oxlint-tsgolint/darwin-x64": "0.18.1",
+        "@oxlint-tsgolint/linux-arm64": "0.18.1",
+        "@oxlint-tsgolint/linux-x64": "0.18.1",
+        "@oxlint-tsgolint/win32-arm64": "0.18.1",
+        "@oxlint-tsgolint/win32-x64": "0.18.1"
+      }
+    },
     "node_modules/p-limit": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -3356,9 +3874,9 @@
       "license": "BlueOak-1.0.0"
     },
     "node_modules/pacote": {
-      "version": "21.4.0",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.4.0.tgz",
-      "integrity": "sha512-DR7mn7HUOomAX1BORnpYy678qVIidbvOojkBscqy27dRKN+s/hLeQT1MeYYrx1Cxh62jyKjiWiDV7RTTqB+ZEQ==",
+      "version": "21.5.0",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.0.tgz",
+      "integrity": "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==",
       "dev": true,
       "license": "ISC",
       "dependencies": {
@@ -3435,9 +3953,9 @@
       }
     },
     "node_modules/picomatch": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
-      "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+      "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -3537,30 +4055,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/promise-retry": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
-      "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "err-code": "^2.0.2",
-        "retry": "^0.12.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/promise-retry/node_modules/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
     "node_modules/punycode.js": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -3711,16 +4205,6 @@
       "dev": true,
       "license": "ISC"
     },
-    "node_modules/retry": {
-      "version": "0.13.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
-      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 4"
-      }
-    },
     "node_modules/rimraf": {
       "version": "6.1.3",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
@@ -4186,9 +4670,9 @@
       }
     },
     "node_modules/tar": {
-      "version": "7.5.9",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz",
-      "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==",
+      "version": "7.5.13",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz",
+      "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -4257,9 +4741,9 @@
       "license": "MIT"
     },
     "node_modules/test-exclude/node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
+      "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -4432,9 +4916,9 @@
       }
     },
     "node_modules/tshy": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz",
-      "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/tshy/-/tshy-4.1.0.tgz",
+      "integrity": "sha512-0aB7s1VIBSiMlEZIDJPG7NbDiLwqnp7zB7gMFt8ALV9HbtFDEC+Vv/+gjz2G/Eg1/lHxIlgwsPmuHRu542dGVw==",
       "dev": true,
       "license": "BlueOak-1.0.0",
       "dependencies": {
@@ -4449,7 +4933,7 @@
         "resolve-import": "^2.4.0",
         "rimraf": "^6.1.2",
         "sync-content": "^2.0.3",
-        "typescript": "^5.9.3",
+        "typescript": "^6.0.2",
         "walk-up-path": "^4.0.0"
       },
       "bin": {
@@ -4488,17 +4972,17 @@
       }
     },
     "node_modules/typedoc": {
-      "version": "0.28.17",
-      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.17.tgz",
-      "integrity": "sha512-ZkJ2G7mZrbxrKxinTQMjFqsCoYY6a5Luwv2GKbTnBCEgV2ihYm5CflA9JnJAwH0pZWavqfYxmDkFHPt4yx2oDQ==",
+      "version": "0.28.18",
+      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.18.tgz",
+      "integrity": "sha512-NTWTUOFRQ9+SGKKTuWKUioUkjxNwtS3JDRPVKZAXGHZy2wCA8bdv2iJiyeePn0xkmK+TCCqZFT0X7+2+FLjngA==",
       "dev": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@gerrit0/mini-shiki": "^3.17.0",
+        "@gerrit0/mini-shiki": "^3.23.0",
         "lunr": "^2.3.9",
-        "markdown-it": "^14.1.0",
-        "minimatch": "^9.0.5",
-        "yaml": "^2.8.1"
+        "markdown-it": "^14.1.1",
+        "minimatch": "^10.2.4",
+        "yaml": "^2.8.2"
       },
       "bin": {
         "typedoc": "bin/typedoc"
@@ -4508,46 +4992,13 @@
         "pnpm": ">= 10"
       },
       "peerDependencies": {
-        "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x"
-      }
-    },
-    "node_modules/typedoc/node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/typedoc/node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/typedoc/node_modules/minimatch": {
-      "version": "9.0.9",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
-      "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
+        "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x"
       }
     },
     "node_modules/typescript": {
-      "version": "5.9.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
-      "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+      "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
       "dev": true,
       "license": "Apache-2.0",
       "bin": {
@@ -4572,32 +5023,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/unique-filename": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz",
-      "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "unique-slug": "^6.0.0"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz",
-      "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      },
-      "engines": {
-        "node": "^20.17.0 || >=22.9.0"
-      }
-    },
     "node_modules/uuid": {
       "version": "8.3.2",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -4802,9 +5227,9 @@
       }
     },
     "node_modules/ws": {
-      "version": "8.19.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
-      "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
+      "version": "8.20.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+      "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -4844,9 +5269,9 @@
       }
     },
     "node_modules/yaml": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
-      "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+      "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
       "dev": true,
       "license": "ISC",
       "bin": {
diff --git a/deps/minimatch/package.json b/deps/minimatch/package.json
index d4d13530281b7e..92cf6a604773d6 100644
--- a/deps/minimatch/package.json
+++ b/deps/minimatch/package.json
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter  (http://blog.izs.me)",
   "name": "minimatch",
   "description": "a glob matcher in javascript",
-  "version": "10.2.4",
+  "version": "10.2.5",
   "repository": {
     "type": "git",
     "url": "git@github.com:isaacs/minimatch"
@@ -37,19 +37,24 @@
     "format": "prettier --write .",
     "benchmark": "node benchmark/index.js",
     "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts",
+    "lint": "oxlint --fix src test",
+    "postsnap": "npm run lint",
+    "postlint": "npm run format",
     "node-build": "esbuild ./dist/commonjs/index.js --bundle --platform=node --outfile=index.js"
   },
   "engines": {
     "node": "18 || 20 || >=22"
   },
   "devDependencies": {
-    "@types/node": "^25.3.0",
-    "esbuild": "^0.27.3",
+    "@types/node": "^25.5.0",
+    "esbuild": "^0.28.0",
     "mkdirp": "^3.0.1",
-    "prettier": "^3.6.2",
+    "oxlint": "^1.57.0",
+    "oxlint-tsgolint": "^0.18.1",
+    "prettier": "^3.8.1",
     "tap": "^21.6.2",
-    "tshy": "^3.0.2",
-    "typedoc": "^0.28.5"
+    "tshy": "^4.0.0",
+    "typedoc": "^0.28.18"
   },
   "funding": {
     "url": "https://github.com/sponsors/isaacs"
@@ -59,11 +64,12 @@
     "exports": {
       "./package.json": "./package.json",
       ".": "./src/index.ts"
-    }
+    },
+    "selfLink": false
   },
   "type": "module",
   "module": "./dist/esm/index.js",
   "dependencies": {
-    "brace-expansion": "^5.0.2"
+    "brace-expansion": "^5.0.5"
   }
 }
diff --git a/deps/nbytes/.release-please-manifest.json b/deps/nbytes/.release-please-manifest.json
index c05df9b5541987..88f7c73eadc71b 100644
--- a/deps/nbytes/.release-please-manifest.json
+++ b/deps/nbytes/.release-please-manifest.json
@@ -1,3 +1,3 @@
 {
-  ".": "0.1.3"
+  ".": "0.1.4"
 }
diff --git a/deps/nbytes/CHANGELOG.md b/deps/nbytes/CHANGELOG.md
index 067a946eb30cbd..5a740eb2350667 100644
--- a/deps/nbytes/CHANGELOG.md
+++ b/deps/nbytes/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Changelog
 
+## [0.1.4](https://github.com/nodejs/nbytes/compare/v0.1.3...v0.1.4) (2026-04-09)
+
+
+### Bug Fixes
+
+* **build:** add `NBYTES_ENABLE_TESTING` CMake option ([#15](https://github.com/nodejs/nbytes/issues/15)) ([e1c6be3](https://github.com/nodejs/nbytes/commit/e1c6be3ed112f2375207c7626e10961e92d3f69f))
+
 ## [0.1.3](https://github.com/nodejs/nbytes/compare/v0.1.2...v0.1.3) (2026-02-18)
 
 
diff --git a/deps/nbytes/CMakeLists.txt b/deps/nbytes/CMakeLists.txt
index 5ac0e31aaa4fce..b3d7c897b91ed4 100644
--- a/deps/nbytes/CMakeLists.txt
+++ b/deps/nbytes/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.28)
-project(nbytes VERSION 0.1.3) # x-release-please-version
+project(nbytes VERSION 0.1.4) # x-release-please-version
 
 set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -12,18 +12,26 @@ option(NBYTES_DEVELOPMENT_CHECKS "Enable development checks" OFF)
 
 include(GNUInstallDirs)
 include(FetchContent)
+include(CTest)
+
+option(NBYTES_ENABLE_TESTING "Enable testing" ${BUILD_TESTING})
 
-FetchContent_Declare(
-  googletest
-  URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
-)
-# For Windows: Prevent overriding the parent project's compiler/linker settings
-set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-FetchContent_MakeAvailable(googletest)
 
 add_subdirectory(src)
-enable_testing()
-add_subdirectory(tests)
+
+if (NBYTES_ENABLE_TESTING)
+  FetchContent_Declare(
+    googletest
+    URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
+    URL_HASH SHA256=edd885a1ab32b6999515a880f669efadb80b3f880215f315985fa3f6eca7c4d3
+    FIND_PACKAGE_ARGS NAMES GTest
+  )
+  # For Windows: Prevent overriding the parent project's compiler/linker settings
+  set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+  FetchContent_MakeAvailable(googletest)
+
+  add_subdirectory(tests)
+endif()
 
 install(
   FILES include/nbytes.h
diff --git a/deps/nbytes/include/nbytes.h b/deps/nbytes/include/nbytes.h
index 3a2bcc605bfa58..27f1449c620124 100644
--- a/deps/nbytes/include/nbytes.h
+++ b/deps/nbytes/include/nbytes.h
@@ -836,12 +836,12 @@ size_t SearchString(const char *haystack, size_t haystack_length,
 
 // ============================================================================
 // Version metadata
-#define NBYTES_VERSION "0.1.3"  // x-release-please-version
+#define NBYTES_VERSION "0.1.4"  // x-release-please-version
 
 enum {
   NBYTES_VERSION_MAJOR = 0,     // x-release-please-major
   NBYTES_VERSION_MINOR = 1,     // x-release-please-minor
-  NBYTES_VERSION_REVISION = 3,  // x-release-please-patch
+  NBYTES_VERSION_REVISION = 4,  // x-release-please-patch
 };
 
 }  // namespace nbytes
diff --git a/deps/ncrypto/ncrypto.cc b/deps/ncrypto/ncrypto.cc
index 07049405de6239..b7a0c96ee2ea60 100644
--- a/deps/ncrypto/ncrypto.cc
+++ b/deps/ncrypto/ncrypto.cc
@@ -147,7 +147,12 @@ DataPointer DataPointer::SecureAlloc(size_t len) {
 #ifndef OPENSSL_IS_BORINGSSL
   auto ptr = OPENSSL_secure_zalloc(len);
   if (ptr == nullptr) return {};
-  return DataPointer(ptr, len, true);
+  // OPENSSL_secure_zalloc transparently falls back to a regular allocation
+  // when the secure heap is not initialized or is exhausted. Reflect the
+  // actual provenance of the pointer so that reset() routes to the correct
+  // free function (OPENSSL_secure_clear_free vs. OPENSSL_clear_free) and
+  // callers of isSecure() get a truthful answer.
+  return DataPointer(ptr, len, CRYPTO_secure_allocated(ptr) == 1);
 #else
   // BoringSSL does not implement the OPENSSL_secure_zalloc API.
   auto ptr = OPENSSL_malloc(len);
@@ -3103,9 +3108,13 @@ const Cipher Cipher::AES_256_GCM = Cipher::FromNid(NID_aes_256_gcm);
 const Cipher Cipher::AES_128_KW = Cipher::FromNid(NID_id_aes128_wrap);
 const Cipher Cipher::AES_192_KW = Cipher::FromNid(NID_id_aes192_wrap);
 const Cipher Cipher::AES_256_KW = Cipher::FromNid(NID_id_aes256_wrap);
+
+#ifndef OPENSSL_IS_BORINGSSL
 const Cipher Cipher::AES_128_OCB = Cipher::FromNid(NID_aes_128_ocb);
 const Cipher Cipher::AES_192_OCB = Cipher::FromNid(NID_aes_192_ocb);
 const Cipher Cipher::AES_256_OCB = Cipher::FromNid(NID_aes_256_ocb);
+#endif
+
 const Cipher Cipher::CHACHA20_POLY1305 = Cipher::FromNid(NID_chacha20_poly1305);
 
 bool Cipher::isGcmMode() const {
diff --git a/deps/ncrypto/ncrypto.h b/deps/ncrypto/ncrypto.h
index 4f86702da88267..1f116169f57a27 100644
--- a/deps/ncrypto/ncrypto.h
+++ b/deps/ncrypto/ncrypto.h
@@ -309,9 +309,12 @@ class Cipher final {
 #else
   static constexpr size_t MAX_AUTH_TAG_LENGTH = 16;
 #endif
-  static_assert(EVP_GCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
-                EVP_CCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
-                EVP_CHACHAPOLY_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH);
+  static_assert(EVP_GCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH
+#ifndef OPENSSL_IS_BORINGSSL
+                && EVP_CCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
+                EVP_CHACHAPOLY_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH
+#endif
+  );  // NOLINT(whitespace/parens)
 
   Cipher() = default;
   Cipher(const EVP_CIPHER* cipher) : cipher_(cipher) {}
diff --git a/deps/nghttp2/lib/CMakeLists.txt b/deps/nghttp2/lib/CMakeLists.txt
index 98e3dbe7682fb0..3b6a4400305b31 100644
--- a/deps/nghttp2/lib/CMakeLists.txt
+++ b/deps/nghttp2/lib/CMakeLists.txt
@@ -51,7 +51,7 @@ set(NGHTTP2_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
 set(NGHTTP2_VERSION_CONFIG "${NGHTTP2_GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
 set(NGHTTP2_PROJECT_CONFIG "${NGHTTP2_GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
 set(NGHTTP2_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-set(NGHTTP2_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
+set(NGHTTP2_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
 set(NGHTTP2_NAMESPACE "${PROJECT_NAME}::")
 set(NGHTTP2_VERSION ${PROJECT_VERSION})
 
diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
index 19c1874f23a3ca..55baba71bdaf26 100644
--- a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
+++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
@@ -3252,7 +3252,7 @@ NGHTTP2_EXTERN void nghttp2_option_set_max_continuations(nghttp2_option *option,
  * regenerated per second.  When a suspicious activity is detected,
  * some amount of tokens are consumed.  If there is no token
  * available, GOAWAY is sent to tear down the connection.  |burst| and
- * |rate| default to 1000 and 33 respectively.
+ * |rate| default to 10000 and 330 respectively.
  */
 NGHTTP2_EXTERN void nghttp2_option_set_glitch_rate_limit(nghttp2_option *option,
                                                          uint64_t burst,
diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
index 8dfe536dec9ade..83fabdeeb95d6e 100644
--- a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
+++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
@@ -29,7 +29,7 @@
  * @macro
  * Version number of the nghttp2 library release
  */
-#define NGHTTP2_VERSION "1.68.0"
+#define NGHTTP2_VERSION "1.69.0"
 
 /**
  * @macro
@@ -37,6 +37,6 @@
  * release. This is a 24 bit number with 8 bits for major number, 8 bits
  * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
  */
-#define NGHTTP2_VERSION_NUM 0x014400
+#define NGHTTP2_VERSION_NUM 0x014500
 
 #endif /* NGHTTP2VER_H */
diff --git a/deps/nghttp2/lib/nghttp2_alpn.c b/deps/nghttp2/lib/nghttp2_alpn.c
index 33c5885f8d889f..025bd346594c65 100644
--- a/deps/nghttp2/lib/nghttp2_alpn.c
+++ b/deps/nghttp2/lib/nghttp2_alpn.c
@@ -26,6 +26,8 @@
 
 #include 
 
+#include "nghttp2_helper.h"
+
 static int select_alpn(const unsigned char **out, unsigned char *outlen,
                        const unsigned char *in, unsigned int inlen,
                        const char *key, unsigned int keylen) {
@@ -41,7 +43,7 @@ static int select_alpn(const unsigned char **out, unsigned char *outlen,
 }
 
 #define NGHTTP2_HTTP_1_1_ALPN "\x8http/1.1"
-#define NGHTTP2_HTTP_1_1_ALPN_LEN (sizeof(NGHTTP2_HTTP_1_1_ALPN) - 1)
+#define NGHTTP2_HTTP_1_1_ALPN_LEN nghttp2_strlen_lit(NGHTTP2_HTTP_1_1_ALPN)
 
 int nghttp2_select_next_protocol(unsigned char **out, unsigned char *outlen,
                                  const unsigned char *in, unsigned int inlen) {
diff --git a/deps/nghttp2/lib/nghttp2_frame.c b/deps/nghttp2/lib/nghttp2_frame.c
index edc2aaaae9ed75..264ae9d38e0260 100644
--- a/deps/nghttp2/lib/nghttp2_frame.c
+++ b/deps/nghttp2/lib/nghttp2_frame.c
@@ -750,6 +750,16 @@ void nghttp2_frame_unpack_altsvc_payload(nghttp2_extension *frame,
   uint8_t *p;
 
   altsvc = frame->payload;
+
+  if (payloadlen == 0) {
+    altsvc->origin = NULL;
+    altsvc->origin_len = 0;
+    altsvc->field_value = NULL;
+    altsvc->field_value_len = 0;
+
+    return;
+  }
+
   p = payload;
 
   altsvc->origin = p;
diff --git a/deps/nghttp2/lib/nghttp2_frame.h b/deps/nghttp2/lib/nghttp2_frame.h
index ed4ab2c6842e71..c0917c0df4cc9f 100644
--- a/deps/nghttp2/lib/nghttp2_frame.h
+++ b/deps/nghttp2/lib/nghttp2_frame.h
@@ -34,10 +34,7 @@
 #include "nghttp2_buf.h"
 
 #define NGHTTP2_STREAM_ID_MASK ((1u << 31) - 1)
-#define NGHTTP2_PRI_GROUP_ID_MASK ((1u << 31) - 1)
-#define NGHTTP2_PRIORITY_MASK ((1u << 31) - 1)
 #define NGHTTP2_WINDOW_SIZE_INCREMENT_MASK ((1u << 31) - 1)
-#define NGHTTP2_SETTINGS_ID_MASK ((1 << 24) - 1)
 
 /* The number of bytes of frame header. */
 #define NGHTTP2_FRAME_HDLEN 9
diff --git a/deps/nghttp2/lib/nghttp2_hd.c b/deps/nghttp2/lib/nghttp2_hd.c
index ad85eed1e13e7b..5ac77dbc0ea554 100644
--- a/deps/nghttp2/lib/nghttp2_hd.c
+++ b/deps/nghttp2/lib/nghttp2_hd.c
@@ -35,9 +35,10 @@
 /* Make scalar initialization form of nghttp2_hd_entry */
 #define MAKE_STATIC_ENT(N, V, T, H)                                            \
   {                                                                            \
-    {NULL, NULL, (uint8_t *)(N), sizeof((N)) - 1, -1},                         \
-    {NULL, NULL, (uint8_t *)(V), sizeof((V)) - 1, -1},                         \
-    {(uint8_t *)(N), (uint8_t *)(V), sizeof((N)) - 1, sizeof((V)) - 1, 0},     \
+    {NULL, NULL, (uint8_t *)(N), nghttp2_strlen_lit((N)), -1},                 \
+    {NULL, NULL, (uint8_t *)(V), nghttp2_strlen_lit((V)), -1},                 \
+    {(uint8_t *)(N), (uint8_t *)(V), nghttp2_strlen_lit((N)),                  \
+     nghttp2_strlen_lit((V)), 0},                                              \
     T,                                                                         \
     H,                                                                         \
   }
@@ -2058,8 +2059,9 @@ nghttp2_ssize nghttp2_hd_inflate_hd_nv(nghttp2_hd_inflater *inflater,
 
         inflater->state = NGHTTP2_HD_STATE_NEWNAME_READ_NAMEHUFF;
 
-        rv =
-          nghttp2_rcbuf_new(&inflater->namercbuf, inflater->left * 2 + 1, mem);
+        rv = nghttp2_rcbuf_new(
+          &inflater->namercbuf,
+          nghttp2_huff_estimate_decode_length(inflater->left) + 1, mem);
       } else {
         inflater->state = NGHTTP2_HD_STATE_NEWNAME_READ_NAME;
         rv = nghttp2_rcbuf_new(&inflater->namercbuf, inflater->left + 1, mem);
@@ -2143,8 +2145,9 @@ nghttp2_ssize nghttp2_hd_inflate_hd_nv(nghttp2_hd_inflater *inflater,
 
         inflater->state = NGHTTP2_HD_STATE_READ_VALUEHUFF;
 
-        rv =
-          nghttp2_rcbuf_new(&inflater->valuercbuf, inflater->left * 2 + 1, mem);
+        rv = nghttp2_rcbuf_new(
+          &inflater->valuercbuf,
+          nghttp2_huff_estimate_decode_length(inflater->left) + 1, mem);
       } else {
         inflater->state = NGHTTP2_HD_STATE_READ_VALUE;
 
diff --git a/deps/nghttp2/lib/nghttp2_hd_huffman.c b/deps/nghttp2/lib/nghttp2_hd_huffman.c
index de2620076a6e0d..45672655f08762 100644
--- a/deps/nghttp2/lib/nghttp2_hd_huffman.c
+++ b/deps/nghttp2/lib/nghttp2_hd_huffman.c
@@ -104,15 +104,15 @@ int nghttp2_hd_huff_encode(nghttp2_bufs *bufs, const uint8_t *src,
 }
 
 void nghttp2_hd_huff_decode_context_init(nghttp2_hd_huff_decode_context *ctx) {
-  ctx->fstate = NGHTTP2_HUFF_ACCEPTED;
+  ctx->fstate = 0;
+  ctx->flags = NGHTTP2_HUFF_ACCEPTED;
 }
 
 nghttp2_ssize nghttp2_hd_huff_decode(nghttp2_hd_huff_decode_context *ctx,
                                      nghttp2_buf *buf, const uint8_t *src,
                                      size_t srclen, int final) {
   const uint8_t *end = src + srclen;
-  nghttp2_huff_decode node = {ctx->fstate, 0};
-  const nghttp2_huff_decode *t = &node;
+  nghttp2_huff_decode t = {ctx->fstate, ctx->flags, 0};
   uint8_t c;
 
   /* We use the decoding algorithm described in
@@ -121,20 +121,21 @@ nghttp2_ssize nghttp2_hd_huff_decode(nghttp2_hd_huff_decode_context *ctx,
       - https://github.com/nghttp2/nghttp2/files/15141264/Prefix.pdf */
   for (; src != end;) {
     c = *src++;
-    t = &huff_decode_table[t->fstate & 0x1ff][c >> 4];
-    if (t->fstate & NGHTTP2_HUFF_SYM) {
-      *buf->last++ = t->sym;
+    t = huff_decode_table[t.fstate][c >> 4];
+    if (t.flags & NGHTTP2_HUFF_SYM) {
+      *buf->last++ = t.sym;
     }
 
-    t = &huff_decode_table[t->fstate & 0x1ff][c & 0xf];
-    if (t->fstate & NGHTTP2_HUFF_SYM) {
-      *buf->last++ = t->sym;
+    t = huff_decode_table[t.fstate][c & 0xf];
+    if (t.flags & NGHTTP2_HUFF_SYM) {
+      *buf->last++ = t.sym;
     }
   }
 
-  ctx->fstate = t->fstate;
+  ctx->fstate = t.fstate;
+  ctx->flags = t.flags;
 
-  if (final && !(ctx->fstate & NGHTTP2_HUFF_ACCEPTED)) {
+  if (final && !(ctx->flags & NGHTTP2_HUFF_ACCEPTED)) {
     return NGHTTP2_ERR_HEADER_COMP;
   }
 
diff --git a/deps/nghttp2/lib/nghttp2_hd_huffman.h b/deps/nghttp2/lib/nghttp2_hd_huffman.h
index df037a8b20efc3..f898c1779c01c6 100644
--- a/deps/nghttp2/lib/nghttp2_hd_huffman.h
+++ b/deps/nghttp2/lib/nghttp2_hd_huffman.h
@@ -34,9 +34,9 @@
 typedef enum {
   /* FSA accepts this state as the end of huffman encoding
      sequence. */
-  NGHTTP2_HUFF_ACCEPTED = 1 << 14,
+  NGHTTP2_HUFF_ACCEPTED = 1,
   /* This state emits symbol */
-  NGHTTP2_HUFF_SYM = 1 << 15,
+  NGHTTP2_HUFF_SYM = 1 << 1,
 } nghttp2_huff_decode_flag;
 
 typedef struct {
@@ -48,6 +48,7 @@ typedef struct {
      a special node and it is a terminal state that means decoding
      failed. */
   uint16_t fstate;
+  uint8_t flags;
   /* symbol if NGHTTP2_HUFF_SYM flag set */
   uint8_t sym;
 } nghttp2_huff_decode;
@@ -57,6 +58,7 @@ typedef nghttp2_huff_decode huff_decode_table_type[16];
 typedef struct {
   /* fstate is the current huffman decoding state. */
   uint16_t fstate;
+  uint8_t flags;
 } nghttp2_hd_huff_decode_context;
 
 typedef struct {
@@ -69,4 +71,12 @@ typedef struct {
 extern const nghttp2_huff_sym huff_sym_table[];
 extern const nghttp2_huff_decode huff_decode_table[][16];
 
+/*
+ * nghttp2_huff_estimate_decode_length returns the estimated decoded
+ * length of the huffman encoded string of length |len|.
+ */
+static inline size_t nghttp2_huff_estimate_decode_length(size_t len) {
+  return len * 8 / 5;
+}
+
 #endif /* !defined(NGHTTP2_HD_HUFFMAN_H) */
diff --git a/deps/nghttp2/lib/nghttp2_hd_huffman_data.c b/deps/nghttp2/lib/nghttp2_hd_huffman_data.c
index c8f4a6fa266708..252cae0c18d971 100644
--- a/deps/nghttp2/lib/nghttp2_hd_huffman_data.c
+++ b/deps/nghttp2/lib/nghttp2_hd_huffman_data.c
@@ -96,4885 +96,4885 @@ const nghttp2_huff_sym huff_sym_table[] = {
 const nghttp2_huff_decode huff_decode_table[][16] = {
   /* 0 */
   {
-    {0x04, 0},
-    {0x05, 0},
-    {0x07, 0},
-    {0x08, 0},
-    {0x0b, 0},
-    {0x0c, 0},
-    {0x10, 0},
-    {0x13, 0},
-    {0x19, 0},
-    {0x1c, 0},
-    {0x20, 0},
-    {0x23, 0},
-    {0x2a, 0},
-    {0x31, 0},
-    {0x39, 0},
-    {0x4040, 0},
+    {0x04, 0, 0},
+    {0x05, 0, 0},
+    {0x07, 0, 0},
+    {0x08, 0, 0},
+    {0x0b, 0, 0},
+    {0x0c, 0, 0},
+    {0x10, 0, 0},
+    {0x13, 0, 0},
+    {0x19, 0, 0},
+    {0x1c, 0, 0},
+    {0x20, 0, 0},
+    {0x23, 0, 0},
+    {0x2a, 0, 0},
+    {0x31, 0, 0},
+    {0x39, 0, 0},
+    {0x40, 1, 0},
   },
   /* 1 */
   {
-    {0xc000, 48},
-    {0xc000, 49},
-    {0xc000, 50},
-    {0xc000, 97},
-    {0xc000, 99},
-    {0xc000, 101},
-    {0xc000, 105},
-    {0xc000, 111},
-    {0xc000, 115},
-    {0xc000, 116},
-    {0x0d, 0},
-    {0x0e, 0},
-    {0x11, 0},
-    {0x12, 0},
-    {0x14, 0},
-    {0x15, 0},
+    {0x00, 3, 48},
+    {0x00, 3, 49},
+    {0x00, 3, 50},
+    {0x00, 3, 97},
+    {0x00, 3, 99},
+    {0x00, 3, 101},
+    {0x00, 3, 105},
+    {0x00, 3, 111},
+    {0x00, 3, 115},
+    {0x00, 3, 116},
+    {0x0d, 0, 0},
+    {0x0e, 0, 0},
+    {0x11, 0, 0},
+    {0x12, 0, 0},
+    {0x14, 0, 0},
+    {0x15, 0, 0},
   },
   /* 2 */
   {
-    {0x8001, 48},
-    {0xc016, 48},
-    {0x8001, 49},
-    {0xc016, 49},
-    {0x8001, 50},
-    {0xc016, 50},
-    {0x8001, 97},
-    {0xc016, 97},
-    {0x8001, 99},
-    {0xc016, 99},
-    {0x8001, 101},
-    {0xc016, 101},
-    {0x8001, 105},
-    {0xc016, 105},
-    {0x8001, 111},
-    {0xc016, 111},
+    {0x01, 2, 48},
+    {0x16, 3, 48},
+    {0x01, 2, 49},
+    {0x16, 3, 49},
+    {0x01, 2, 50},
+    {0x16, 3, 50},
+    {0x01, 2, 97},
+    {0x16, 3, 97},
+    {0x01, 2, 99},
+    {0x16, 3, 99},
+    {0x01, 2, 101},
+    {0x16, 3, 101},
+    {0x01, 2, 105},
+    {0x16, 3, 105},
+    {0x01, 2, 111},
+    {0x16, 3, 111},
   },
   /* 3 */
   {
-    {0x8002, 48},
-    {0x8009, 48},
-    {0x8017, 48},
-    {0xc028, 48},
-    {0x8002, 49},
-    {0x8009, 49},
-    {0x8017, 49},
-    {0xc028, 49},
-    {0x8002, 50},
-    {0x8009, 50},
-    {0x8017, 50},
-    {0xc028, 50},
-    {0x8002, 97},
-    {0x8009, 97},
-    {0x8017, 97},
-    {0xc028, 97},
+    {0x02, 2, 48},
+    {0x09, 2, 48},
+    {0x17, 2, 48},
+    {0x28, 3, 48},
+    {0x02, 2, 49},
+    {0x09, 2, 49},
+    {0x17, 2, 49},
+    {0x28, 3, 49},
+    {0x02, 2, 50},
+    {0x09, 2, 50},
+    {0x17, 2, 50},
+    {0x28, 3, 50},
+    {0x02, 2, 97},
+    {0x09, 2, 97},
+    {0x17, 2, 97},
+    {0x28, 3, 97},
   },
   /* 4 */
   {
-    {0x8003, 48},
-    {0x8006, 48},
-    {0x800a, 48},
-    {0x800f, 48},
-    {0x8018, 48},
-    {0x801f, 48},
-    {0x8029, 48},
-    {0xc038, 48},
-    {0x8003, 49},
-    {0x8006, 49},
-    {0x800a, 49},
-    {0x800f, 49},
-    {0x8018, 49},
-    {0x801f, 49},
-    {0x8029, 49},
-    {0xc038, 49},
+    {0x03, 2, 48},
+    {0x06, 2, 48},
+    {0x0a, 2, 48},
+    {0x0f, 2, 48},
+    {0x18, 2, 48},
+    {0x1f, 2, 48},
+    {0x29, 2, 48},
+    {0x38, 3, 48},
+    {0x03, 2, 49},
+    {0x06, 2, 49},
+    {0x0a, 2, 49},
+    {0x0f, 2, 49},
+    {0x18, 2, 49},
+    {0x1f, 2, 49},
+    {0x29, 2, 49},
+    {0x38, 3, 49},
   },
   /* 5 */
   {
-    {0x8003, 50},
-    {0x8006, 50},
-    {0x800a, 50},
-    {0x800f, 50},
-    {0x8018, 50},
-    {0x801f, 50},
-    {0x8029, 50},
-    {0xc038, 50},
-    {0x8003, 97},
-    {0x8006, 97},
-    {0x800a, 97},
-    {0x800f, 97},
-    {0x8018, 97},
-    {0x801f, 97},
-    {0x8029, 97},
-    {0xc038, 97},
+    {0x03, 2, 50},
+    {0x06, 2, 50},
+    {0x0a, 2, 50},
+    {0x0f, 2, 50},
+    {0x18, 2, 50},
+    {0x1f, 2, 50},
+    {0x29, 2, 50},
+    {0x38, 3, 50},
+    {0x03, 2, 97},
+    {0x06, 2, 97},
+    {0x0a, 2, 97},
+    {0x0f, 2, 97},
+    {0x18, 2, 97},
+    {0x1f, 2, 97},
+    {0x29, 2, 97},
+    {0x38, 3, 97},
   },
   /* 6 */
   {
-    {0x8002, 99},
-    {0x8009, 99},
-    {0x8017, 99},
-    {0xc028, 99},
-    {0x8002, 101},
-    {0x8009, 101},
-    {0x8017, 101},
-    {0xc028, 101},
-    {0x8002, 105},
-    {0x8009, 105},
-    {0x8017, 105},
-    {0xc028, 105},
-    {0x8002, 111},
-    {0x8009, 111},
-    {0x8017, 111},
-    {0xc028, 111},
+    {0x02, 2, 99},
+    {0x09, 2, 99},
+    {0x17, 2, 99},
+    {0x28, 3, 99},
+    {0x02, 2, 101},
+    {0x09, 2, 101},
+    {0x17, 2, 101},
+    {0x28, 3, 101},
+    {0x02, 2, 105},
+    {0x09, 2, 105},
+    {0x17, 2, 105},
+    {0x28, 3, 105},
+    {0x02, 2, 111},
+    {0x09, 2, 111},
+    {0x17, 2, 111},
+    {0x28, 3, 111},
   },
   /* 7 */
   {
-    {0x8003, 99},
-    {0x8006, 99},
-    {0x800a, 99},
-    {0x800f, 99},
-    {0x8018, 99},
-    {0x801f, 99},
-    {0x8029, 99},
-    {0xc038, 99},
-    {0x8003, 101},
-    {0x8006, 101},
-    {0x800a, 101},
-    {0x800f, 101},
-    {0x8018, 101},
-    {0x801f, 101},
-    {0x8029, 101},
-    {0xc038, 101},
+    {0x03, 2, 99},
+    {0x06, 2, 99},
+    {0x0a, 2, 99},
+    {0x0f, 2, 99},
+    {0x18, 2, 99},
+    {0x1f, 2, 99},
+    {0x29, 2, 99},
+    {0x38, 3, 99},
+    {0x03, 2, 101},
+    {0x06, 2, 101},
+    {0x0a, 2, 101},
+    {0x0f, 2, 101},
+    {0x18, 2, 101},
+    {0x1f, 2, 101},
+    {0x29, 2, 101},
+    {0x38, 3, 101},
   },
   /* 8 */
   {
-    {0x8003, 105},
-    {0x8006, 105},
-    {0x800a, 105},
-    {0x800f, 105},
-    {0x8018, 105},
-    {0x801f, 105},
-    {0x8029, 105},
-    {0xc038, 105},
-    {0x8003, 111},
-    {0x8006, 111},
-    {0x800a, 111},
-    {0x800f, 111},
-    {0x8018, 111},
-    {0x801f, 111},
-    {0x8029, 111},
-    {0xc038, 111},
+    {0x03, 2, 105},
+    {0x06, 2, 105},
+    {0x0a, 2, 105},
+    {0x0f, 2, 105},
+    {0x18, 2, 105},
+    {0x1f, 2, 105},
+    {0x29, 2, 105},
+    {0x38, 3, 105},
+    {0x03, 2, 111},
+    {0x06, 2, 111},
+    {0x0a, 2, 111},
+    {0x0f, 2, 111},
+    {0x18, 2, 111},
+    {0x1f, 2, 111},
+    {0x29, 2, 111},
+    {0x38, 3, 111},
   },
   /* 9 */
   {
-    {0x8001, 115},
-    {0xc016, 115},
-    {0x8001, 116},
-    {0xc016, 116},
-    {0xc000, 32},
-    {0xc000, 37},
-    {0xc000, 45},
-    {0xc000, 46},
-    {0xc000, 47},
-    {0xc000, 51},
-    {0xc000, 52},
-    {0xc000, 53},
-    {0xc000, 54},
-    {0xc000, 55},
-    {0xc000, 56},
-    {0xc000, 57},
+    {0x01, 2, 115},
+    {0x16, 3, 115},
+    {0x01, 2, 116},
+    {0x16, 3, 116},
+    {0x00, 3, 32},
+    {0x00, 3, 37},
+    {0x00, 3, 45},
+    {0x00, 3, 46},
+    {0x00, 3, 47},
+    {0x00, 3, 51},
+    {0x00, 3, 52},
+    {0x00, 3, 53},
+    {0x00, 3, 54},
+    {0x00, 3, 55},
+    {0x00, 3, 56},
+    {0x00, 3, 57},
   },
   /* 10 */
   {
-    {0x8002, 115},
-    {0x8009, 115},
-    {0x8017, 115},
-    {0xc028, 115},
-    {0x8002, 116},
-    {0x8009, 116},
-    {0x8017, 116},
-    {0xc028, 116},
-    {0x8001, 32},
-    {0xc016, 32},
-    {0x8001, 37},
-    {0xc016, 37},
-    {0x8001, 45},
-    {0xc016, 45},
-    {0x8001, 46},
-    {0xc016, 46},
+    {0x02, 2, 115},
+    {0x09, 2, 115},
+    {0x17, 2, 115},
+    {0x28, 3, 115},
+    {0x02, 2, 116},
+    {0x09, 2, 116},
+    {0x17, 2, 116},
+    {0x28, 3, 116},
+    {0x01, 2, 32},
+    {0x16, 3, 32},
+    {0x01, 2, 37},
+    {0x16, 3, 37},
+    {0x01, 2, 45},
+    {0x16, 3, 45},
+    {0x01, 2, 46},
+    {0x16, 3, 46},
   },
   /* 11 */
   {
-    {0x8003, 115},
-    {0x8006, 115},
-    {0x800a, 115},
-    {0x800f, 115},
-    {0x8018, 115},
-    {0x801f, 115},
-    {0x8029, 115},
-    {0xc038, 115},
-    {0x8003, 116},
-    {0x8006, 116},
-    {0x800a, 116},
-    {0x800f, 116},
-    {0x8018, 116},
-    {0x801f, 116},
-    {0x8029, 116},
-    {0xc038, 116},
+    {0x03, 2, 115},
+    {0x06, 2, 115},
+    {0x0a, 2, 115},
+    {0x0f, 2, 115},
+    {0x18, 2, 115},
+    {0x1f, 2, 115},
+    {0x29, 2, 115},
+    {0x38, 3, 115},
+    {0x03, 2, 116},
+    {0x06, 2, 116},
+    {0x0a, 2, 116},
+    {0x0f, 2, 116},
+    {0x18, 2, 116},
+    {0x1f, 2, 116},
+    {0x29, 2, 116},
+    {0x38, 3, 116},
   },
   /* 12 */
   {
-    {0x8002, 32},
-    {0x8009, 32},
-    {0x8017, 32},
-    {0xc028, 32},
-    {0x8002, 37},
-    {0x8009, 37},
-    {0x8017, 37},
-    {0xc028, 37},
-    {0x8002, 45},
-    {0x8009, 45},
-    {0x8017, 45},
-    {0xc028, 45},
-    {0x8002, 46},
-    {0x8009, 46},
-    {0x8017, 46},
-    {0xc028, 46},
+    {0x02, 2, 32},
+    {0x09, 2, 32},
+    {0x17, 2, 32},
+    {0x28, 3, 32},
+    {0x02, 2, 37},
+    {0x09, 2, 37},
+    {0x17, 2, 37},
+    {0x28, 3, 37},
+    {0x02, 2, 45},
+    {0x09, 2, 45},
+    {0x17, 2, 45},
+    {0x28, 3, 45},
+    {0x02, 2, 46},
+    {0x09, 2, 46},
+    {0x17, 2, 46},
+    {0x28, 3, 46},
   },
   /* 13 */
   {
-    {0x8003, 32},
-    {0x8006, 32},
-    {0x800a, 32},
-    {0x800f, 32},
-    {0x8018, 32},
-    {0x801f, 32},
-    {0x8029, 32},
-    {0xc038, 32},
-    {0x8003, 37},
-    {0x8006, 37},
-    {0x800a, 37},
-    {0x800f, 37},
-    {0x8018, 37},
-    {0x801f, 37},
-    {0x8029, 37},
-    {0xc038, 37},
+    {0x03, 2, 32},
+    {0x06, 2, 32},
+    {0x0a, 2, 32},
+    {0x0f, 2, 32},
+    {0x18, 2, 32},
+    {0x1f, 2, 32},
+    {0x29, 2, 32},
+    {0x38, 3, 32},
+    {0x03, 2, 37},
+    {0x06, 2, 37},
+    {0x0a, 2, 37},
+    {0x0f, 2, 37},
+    {0x18, 2, 37},
+    {0x1f, 2, 37},
+    {0x29, 2, 37},
+    {0x38, 3, 37},
   },
   /* 14 */
   {
-    {0x8003, 45},
-    {0x8006, 45},
-    {0x800a, 45},
-    {0x800f, 45},
-    {0x8018, 45},
-    {0x801f, 45},
-    {0x8029, 45},
-    {0xc038, 45},
-    {0x8003, 46},
-    {0x8006, 46},
-    {0x800a, 46},
-    {0x800f, 46},
-    {0x8018, 46},
-    {0x801f, 46},
-    {0x8029, 46},
-    {0xc038, 46},
+    {0x03, 2, 45},
+    {0x06, 2, 45},
+    {0x0a, 2, 45},
+    {0x0f, 2, 45},
+    {0x18, 2, 45},
+    {0x1f, 2, 45},
+    {0x29, 2, 45},
+    {0x38, 3, 45},
+    {0x03, 2, 46},
+    {0x06, 2, 46},
+    {0x0a, 2, 46},
+    {0x0f, 2, 46},
+    {0x18, 2, 46},
+    {0x1f, 2, 46},
+    {0x29, 2, 46},
+    {0x38, 3, 46},
   },
   /* 15 */
   {
-    {0x8001, 47},
-    {0xc016, 47},
-    {0x8001, 51},
-    {0xc016, 51},
-    {0x8001, 52},
-    {0xc016, 52},
-    {0x8001, 53},
-    {0xc016, 53},
-    {0x8001, 54},
-    {0xc016, 54},
-    {0x8001, 55},
-    {0xc016, 55},
-    {0x8001, 56},
-    {0xc016, 56},
-    {0x8001, 57},
-    {0xc016, 57},
+    {0x01, 2, 47},
+    {0x16, 3, 47},
+    {0x01, 2, 51},
+    {0x16, 3, 51},
+    {0x01, 2, 52},
+    {0x16, 3, 52},
+    {0x01, 2, 53},
+    {0x16, 3, 53},
+    {0x01, 2, 54},
+    {0x16, 3, 54},
+    {0x01, 2, 55},
+    {0x16, 3, 55},
+    {0x01, 2, 56},
+    {0x16, 3, 56},
+    {0x01, 2, 57},
+    {0x16, 3, 57},
   },
   /* 16 */
   {
-    {0x8002, 47},
-    {0x8009, 47},
-    {0x8017, 47},
-    {0xc028, 47},
-    {0x8002, 51},
-    {0x8009, 51},
-    {0x8017, 51},
-    {0xc028, 51},
-    {0x8002, 52},
-    {0x8009, 52},
-    {0x8017, 52},
-    {0xc028, 52},
-    {0x8002, 53},
-    {0x8009, 53},
-    {0x8017, 53},
-    {0xc028, 53},
+    {0x02, 2, 47},
+    {0x09, 2, 47},
+    {0x17, 2, 47},
+    {0x28, 3, 47},
+    {0x02, 2, 51},
+    {0x09, 2, 51},
+    {0x17, 2, 51},
+    {0x28, 3, 51},
+    {0x02, 2, 52},
+    {0x09, 2, 52},
+    {0x17, 2, 52},
+    {0x28, 3, 52},
+    {0x02, 2, 53},
+    {0x09, 2, 53},
+    {0x17, 2, 53},
+    {0x28, 3, 53},
   },
   /* 17 */
   {
-    {0x8003, 47},
-    {0x8006, 47},
-    {0x800a, 47},
-    {0x800f, 47},
-    {0x8018, 47},
-    {0x801f, 47},
-    {0x8029, 47},
-    {0xc038, 47},
-    {0x8003, 51},
-    {0x8006, 51},
-    {0x800a, 51},
-    {0x800f, 51},
-    {0x8018, 51},
-    {0x801f, 51},
-    {0x8029, 51},
-    {0xc038, 51},
+    {0x03, 2, 47},
+    {0x06, 2, 47},
+    {0x0a, 2, 47},
+    {0x0f, 2, 47},
+    {0x18, 2, 47},
+    {0x1f, 2, 47},
+    {0x29, 2, 47},
+    {0x38, 3, 47},
+    {0x03, 2, 51},
+    {0x06, 2, 51},
+    {0x0a, 2, 51},
+    {0x0f, 2, 51},
+    {0x18, 2, 51},
+    {0x1f, 2, 51},
+    {0x29, 2, 51},
+    {0x38, 3, 51},
   },
   /* 18 */
   {
-    {0x8003, 52},
-    {0x8006, 52},
-    {0x800a, 52},
-    {0x800f, 52},
-    {0x8018, 52},
-    {0x801f, 52},
-    {0x8029, 52},
-    {0xc038, 52},
-    {0x8003, 53},
-    {0x8006, 53},
-    {0x800a, 53},
-    {0x800f, 53},
-    {0x8018, 53},
-    {0x801f, 53},
-    {0x8029, 53},
-    {0xc038, 53},
+    {0x03, 2, 52},
+    {0x06, 2, 52},
+    {0x0a, 2, 52},
+    {0x0f, 2, 52},
+    {0x18, 2, 52},
+    {0x1f, 2, 52},
+    {0x29, 2, 52},
+    {0x38, 3, 52},
+    {0x03, 2, 53},
+    {0x06, 2, 53},
+    {0x0a, 2, 53},
+    {0x0f, 2, 53},
+    {0x18, 2, 53},
+    {0x1f, 2, 53},
+    {0x29, 2, 53},
+    {0x38, 3, 53},
   },
   /* 19 */
   {
-    {0x8002, 54},
-    {0x8009, 54},
-    {0x8017, 54},
-    {0xc028, 54},
-    {0x8002, 55},
-    {0x8009, 55},
-    {0x8017, 55},
-    {0xc028, 55},
-    {0x8002, 56},
-    {0x8009, 56},
-    {0x8017, 56},
-    {0xc028, 56},
-    {0x8002, 57},
-    {0x8009, 57},
-    {0x8017, 57},
-    {0xc028, 57},
+    {0x02, 2, 54},
+    {0x09, 2, 54},
+    {0x17, 2, 54},
+    {0x28, 3, 54},
+    {0x02, 2, 55},
+    {0x09, 2, 55},
+    {0x17, 2, 55},
+    {0x28, 3, 55},
+    {0x02, 2, 56},
+    {0x09, 2, 56},
+    {0x17, 2, 56},
+    {0x28, 3, 56},
+    {0x02, 2, 57},
+    {0x09, 2, 57},
+    {0x17, 2, 57},
+    {0x28, 3, 57},
   },
   /* 20 */
   {
-    {0x8003, 54},
-    {0x8006, 54},
-    {0x800a, 54},
-    {0x800f, 54},
-    {0x8018, 54},
-    {0x801f, 54},
-    {0x8029, 54},
-    {0xc038, 54},
-    {0x8003, 55},
-    {0x8006, 55},
-    {0x800a, 55},
-    {0x800f, 55},
-    {0x8018, 55},
-    {0x801f, 55},
-    {0x8029, 55},
-    {0xc038, 55},
+    {0x03, 2, 54},
+    {0x06, 2, 54},
+    {0x0a, 2, 54},
+    {0x0f, 2, 54},
+    {0x18, 2, 54},
+    {0x1f, 2, 54},
+    {0x29, 2, 54},
+    {0x38, 3, 54},
+    {0x03, 2, 55},
+    {0x06, 2, 55},
+    {0x0a, 2, 55},
+    {0x0f, 2, 55},
+    {0x18, 2, 55},
+    {0x1f, 2, 55},
+    {0x29, 2, 55},
+    {0x38, 3, 55},
   },
   /* 21 */
   {
-    {0x8003, 56},
-    {0x8006, 56},
-    {0x800a, 56},
-    {0x800f, 56},
-    {0x8018, 56},
-    {0x801f, 56},
-    {0x8029, 56},
-    {0xc038, 56},
-    {0x8003, 57},
-    {0x8006, 57},
-    {0x800a, 57},
-    {0x800f, 57},
-    {0x8018, 57},
-    {0x801f, 57},
-    {0x8029, 57},
-    {0xc038, 57},
+    {0x03, 2, 56},
+    {0x06, 2, 56},
+    {0x0a, 2, 56},
+    {0x0f, 2, 56},
+    {0x18, 2, 56},
+    {0x1f, 2, 56},
+    {0x29, 2, 56},
+    {0x38, 3, 56},
+    {0x03, 2, 57},
+    {0x06, 2, 57},
+    {0x0a, 2, 57},
+    {0x0f, 2, 57},
+    {0x18, 2, 57},
+    {0x1f, 2, 57},
+    {0x29, 2, 57},
+    {0x38, 3, 57},
   },
   /* 22 */
   {
-    {0x1a, 0},
-    {0x1b, 0},
-    {0x1d, 0},
-    {0x1e, 0},
-    {0x21, 0},
-    {0x22, 0},
-    {0x24, 0},
-    {0x25, 0},
-    {0x2b, 0},
-    {0x2e, 0},
-    {0x32, 0},
-    {0x35, 0},
-    {0x3a, 0},
-    {0x3d, 0},
-    {0x41, 0},
-    {0x4044, 0},
+    {0x1a, 0, 0},
+    {0x1b, 0, 0},
+    {0x1d, 0, 0},
+    {0x1e, 0, 0},
+    {0x21, 0, 0},
+    {0x22, 0, 0},
+    {0x24, 0, 0},
+    {0x25, 0, 0},
+    {0x2b, 0, 0},
+    {0x2e, 0, 0},
+    {0x32, 0, 0},
+    {0x35, 0, 0},
+    {0x3a, 0, 0},
+    {0x3d, 0, 0},
+    {0x41, 0, 0},
+    {0x44, 1, 0},
   },
   /* 23 */
   {
-    {0xc000, 61},
-    {0xc000, 65},
-    {0xc000, 95},
-    {0xc000, 98},
-    {0xc000, 100},
-    {0xc000, 102},
-    {0xc000, 103},
-    {0xc000, 104},
-    {0xc000, 108},
-    {0xc000, 109},
-    {0xc000, 110},
-    {0xc000, 112},
-    {0xc000, 114},
-    {0xc000, 117},
-    {0x26, 0},
-    {0x27, 0},
+    {0x00, 3, 61},
+    {0x00, 3, 65},
+    {0x00, 3, 95},
+    {0x00, 3, 98},
+    {0x00, 3, 100},
+    {0x00, 3, 102},
+    {0x00, 3, 103},
+    {0x00, 3, 104},
+    {0x00, 3, 108},
+    {0x00, 3, 109},
+    {0x00, 3, 110},
+    {0x00, 3, 112},
+    {0x00, 3, 114},
+    {0x00, 3, 117},
+    {0x26, 0, 0},
+    {0x27, 0, 0},
   },
   /* 24 */
   {
-    {0x8001, 61},
-    {0xc016, 61},
-    {0x8001, 65},
-    {0xc016, 65},
-    {0x8001, 95},
-    {0xc016, 95},
-    {0x8001, 98},
-    {0xc016, 98},
-    {0x8001, 100},
-    {0xc016, 100},
-    {0x8001, 102},
-    {0xc016, 102},
-    {0x8001, 103},
-    {0xc016, 103},
-    {0x8001, 104},
-    {0xc016, 104},
+    {0x01, 2, 61},
+    {0x16, 3, 61},
+    {0x01, 2, 65},
+    {0x16, 3, 65},
+    {0x01, 2, 95},
+    {0x16, 3, 95},
+    {0x01, 2, 98},
+    {0x16, 3, 98},
+    {0x01, 2, 100},
+    {0x16, 3, 100},
+    {0x01, 2, 102},
+    {0x16, 3, 102},
+    {0x01, 2, 103},
+    {0x16, 3, 103},
+    {0x01, 2, 104},
+    {0x16, 3, 104},
   },
   /* 25 */
   {
-    {0x8002, 61},
-    {0x8009, 61},
-    {0x8017, 61},
-    {0xc028, 61},
-    {0x8002, 65},
-    {0x8009, 65},
-    {0x8017, 65},
-    {0xc028, 65},
-    {0x8002, 95},
-    {0x8009, 95},
-    {0x8017, 95},
-    {0xc028, 95},
-    {0x8002, 98},
-    {0x8009, 98},
-    {0x8017, 98},
-    {0xc028, 98},
+    {0x02, 2, 61},
+    {0x09, 2, 61},
+    {0x17, 2, 61},
+    {0x28, 3, 61},
+    {0x02, 2, 65},
+    {0x09, 2, 65},
+    {0x17, 2, 65},
+    {0x28, 3, 65},
+    {0x02, 2, 95},
+    {0x09, 2, 95},
+    {0x17, 2, 95},
+    {0x28, 3, 95},
+    {0x02, 2, 98},
+    {0x09, 2, 98},
+    {0x17, 2, 98},
+    {0x28, 3, 98},
   },
   /* 26 */
   {
-    {0x8003, 61},
-    {0x8006, 61},
-    {0x800a, 61},
-    {0x800f, 61},
-    {0x8018, 61},
-    {0x801f, 61},
-    {0x8029, 61},
-    {0xc038, 61},
-    {0x8003, 65},
-    {0x8006, 65},
-    {0x800a, 65},
-    {0x800f, 65},
-    {0x8018, 65},
-    {0x801f, 65},
-    {0x8029, 65},
-    {0xc038, 65},
+    {0x03, 2, 61},
+    {0x06, 2, 61},
+    {0x0a, 2, 61},
+    {0x0f, 2, 61},
+    {0x18, 2, 61},
+    {0x1f, 2, 61},
+    {0x29, 2, 61},
+    {0x38, 3, 61},
+    {0x03, 2, 65},
+    {0x06, 2, 65},
+    {0x0a, 2, 65},
+    {0x0f, 2, 65},
+    {0x18, 2, 65},
+    {0x1f, 2, 65},
+    {0x29, 2, 65},
+    {0x38, 3, 65},
   },
   /* 27 */
   {
-    {0x8003, 95},
-    {0x8006, 95},
-    {0x800a, 95},
-    {0x800f, 95},
-    {0x8018, 95},
-    {0x801f, 95},
-    {0x8029, 95},
-    {0xc038, 95},
-    {0x8003, 98},
-    {0x8006, 98},
-    {0x800a, 98},
-    {0x800f, 98},
-    {0x8018, 98},
-    {0x801f, 98},
-    {0x8029, 98},
-    {0xc038, 98},
+    {0x03, 2, 95},
+    {0x06, 2, 95},
+    {0x0a, 2, 95},
+    {0x0f, 2, 95},
+    {0x18, 2, 95},
+    {0x1f, 2, 95},
+    {0x29, 2, 95},
+    {0x38, 3, 95},
+    {0x03, 2, 98},
+    {0x06, 2, 98},
+    {0x0a, 2, 98},
+    {0x0f, 2, 98},
+    {0x18, 2, 98},
+    {0x1f, 2, 98},
+    {0x29, 2, 98},
+    {0x38, 3, 98},
   },
   /* 28 */
   {
-    {0x8002, 100},
-    {0x8009, 100},
-    {0x8017, 100},
-    {0xc028, 100},
-    {0x8002, 102},
-    {0x8009, 102},
-    {0x8017, 102},
-    {0xc028, 102},
-    {0x8002, 103},
-    {0x8009, 103},
-    {0x8017, 103},
-    {0xc028, 103},
-    {0x8002, 104},
-    {0x8009, 104},
-    {0x8017, 104},
-    {0xc028, 104},
+    {0x02, 2, 100},
+    {0x09, 2, 100},
+    {0x17, 2, 100},
+    {0x28, 3, 100},
+    {0x02, 2, 102},
+    {0x09, 2, 102},
+    {0x17, 2, 102},
+    {0x28, 3, 102},
+    {0x02, 2, 103},
+    {0x09, 2, 103},
+    {0x17, 2, 103},
+    {0x28, 3, 103},
+    {0x02, 2, 104},
+    {0x09, 2, 104},
+    {0x17, 2, 104},
+    {0x28, 3, 104},
   },
   /* 29 */
   {
-    {0x8003, 100},
-    {0x8006, 100},
-    {0x800a, 100},
-    {0x800f, 100},
-    {0x8018, 100},
-    {0x801f, 100},
-    {0x8029, 100},
-    {0xc038, 100},
-    {0x8003, 102},
-    {0x8006, 102},
-    {0x800a, 102},
-    {0x800f, 102},
-    {0x8018, 102},
-    {0x801f, 102},
-    {0x8029, 102},
-    {0xc038, 102},
+    {0x03, 2, 100},
+    {0x06, 2, 100},
+    {0x0a, 2, 100},
+    {0x0f, 2, 100},
+    {0x18, 2, 100},
+    {0x1f, 2, 100},
+    {0x29, 2, 100},
+    {0x38, 3, 100},
+    {0x03, 2, 102},
+    {0x06, 2, 102},
+    {0x0a, 2, 102},
+    {0x0f, 2, 102},
+    {0x18, 2, 102},
+    {0x1f, 2, 102},
+    {0x29, 2, 102},
+    {0x38, 3, 102},
   },
   /* 30 */
   {
-    {0x8003, 103},
-    {0x8006, 103},
-    {0x800a, 103},
-    {0x800f, 103},
-    {0x8018, 103},
-    {0x801f, 103},
-    {0x8029, 103},
-    {0xc038, 103},
-    {0x8003, 104},
-    {0x8006, 104},
-    {0x800a, 104},
-    {0x800f, 104},
-    {0x8018, 104},
-    {0x801f, 104},
-    {0x8029, 104},
-    {0xc038, 104},
+    {0x03, 2, 103},
+    {0x06, 2, 103},
+    {0x0a, 2, 103},
+    {0x0f, 2, 103},
+    {0x18, 2, 103},
+    {0x1f, 2, 103},
+    {0x29, 2, 103},
+    {0x38, 3, 103},
+    {0x03, 2, 104},
+    {0x06, 2, 104},
+    {0x0a, 2, 104},
+    {0x0f, 2, 104},
+    {0x18, 2, 104},
+    {0x1f, 2, 104},
+    {0x29, 2, 104},
+    {0x38, 3, 104},
   },
   /* 31 */
   {
-    {0x8001, 108},
-    {0xc016, 108},
-    {0x8001, 109},
-    {0xc016, 109},
-    {0x8001, 110},
-    {0xc016, 110},
-    {0x8001, 112},
-    {0xc016, 112},
-    {0x8001, 114},
-    {0xc016, 114},
-    {0x8001, 117},
-    {0xc016, 117},
-    {0xc000, 58},
-    {0xc000, 66},
-    {0xc000, 67},
-    {0xc000, 68},
+    {0x01, 2, 108},
+    {0x16, 3, 108},
+    {0x01, 2, 109},
+    {0x16, 3, 109},
+    {0x01, 2, 110},
+    {0x16, 3, 110},
+    {0x01, 2, 112},
+    {0x16, 3, 112},
+    {0x01, 2, 114},
+    {0x16, 3, 114},
+    {0x01, 2, 117},
+    {0x16, 3, 117},
+    {0x00, 3, 58},
+    {0x00, 3, 66},
+    {0x00, 3, 67},
+    {0x00, 3, 68},
   },
   /* 32 */
   {
-    {0x8002, 108},
-    {0x8009, 108},
-    {0x8017, 108},
-    {0xc028, 108},
-    {0x8002, 109},
-    {0x8009, 109},
-    {0x8017, 109},
-    {0xc028, 109},
-    {0x8002, 110},
-    {0x8009, 110},
-    {0x8017, 110},
-    {0xc028, 110},
-    {0x8002, 112},
-    {0x8009, 112},
-    {0x8017, 112},
-    {0xc028, 112},
+    {0x02, 2, 108},
+    {0x09, 2, 108},
+    {0x17, 2, 108},
+    {0x28, 3, 108},
+    {0x02, 2, 109},
+    {0x09, 2, 109},
+    {0x17, 2, 109},
+    {0x28, 3, 109},
+    {0x02, 2, 110},
+    {0x09, 2, 110},
+    {0x17, 2, 110},
+    {0x28, 3, 110},
+    {0x02, 2, 112},
+    {0x09, 2, 112},
+    {0x17, 2, 112},
+    {0x28, 3, 112},
   },
   /* 33 */
   {
-    {0x8003, 108},
-    {0x8006, 108},
-    {0x800a, 108},
-    {0x800f, 108},
-    {0x8018, 108},
-    {0x801f, 108},
-    {0x8029, 108},
-    {0xc038, 108},
-    {0x8003, 109},
-    {0x8006, 109},
-    {0x800a, 109},
-    {0x800f, 109},
-    {0x8018, 109},
-    {0x801f, 109},
-    {0x8029, 109},
-    {0xc038, 109},
+    {0x03, 2, 108},
+    {0x06, 2, 108},
+    {0x0a, 2, 108},
+    {0x0f, 2, 108},
+    {0x18, 2, 108},
+    {0x1f, 2, 108},
+    {0x29, 2, 108},
+    {0x38, 3, 108},
+    {0x03, 2, 109},
+    {0x06, 2, 109},
+    {0x0a, 2, 109},
+    {0x0f, 2, 109},
+    {0x18, 2, 109},
+    {0x1f, 2, 109},
+    {0x29, 2, 109},
+    {0x38, 3, 109},
   },
   /* 34 */
   {
-    {0x8003, 110},
-    {0x8006, 110},
-    {0x800a, 110},
-    {0x800f, 110},
-    {0x8018, 110},
-    {0x801f, 110},
-    {0x8029, 110},
-    {0xc038, 110},
-    {0x8003, 112},
-    {0x8006, 112},
-    {0x800a, 112},
-    {0x800f, 112},
-    {0x8018, 112},
-    {0x801f, 112},
-    {0x8029, 112},
-    {0xc038, 112},
+    {0x03, 2, 110},
+    {0x06, 2, 110},
+    {0x0a, 2, 110},
+    {0x0f, 2, 110},
+    {0x18, 2, 110},
+    {0x1f, 2, 110},
+    {0x29, 2, 110},
+    {0x38, 3, 110},
+    {0x03, 2, 112},
+    {0x06, 2, 112},
+    {0x0a, 2, 112},
+    {0x0f, 2, 112},
+    {0x18, 2, 112},
+    {0x1f, 2, 112},
+    {0x29, 2, 112},
+    {0x38, 3, 112},
   },
   /* 35 */
   {
-    {0x8002, 114},
-    {0x8009, 114},
-    {0x8017, 114},
-    {0xc028, 114},
-    {0x8002, 117},
-    {0x8009, 117},
-    {0x8017, 117},
-    {0xc028, 117},
-    {0x8001, 58},
-    {0xc016, 58},
-    {0x8001, 66},
-    {0xc016, 66},
-    {0x8001, 67},
-    {0xc016, 67},
-    {0x8001, 68},
-    {0xc016, 68},
+    {0x02, 2, 114},
+    {0x09, 2, 114},
+    {0x17, 2, 114},
+    {0x28, 3, 114},
+    {0x02, 2, 117},
+    {0x09, 2, 117},
+    {0x17, 2, 117},
+    {0x28, 3, 117},
+    {0x01, 2, 58},
+    {0x16, 3, 58},
+    {0x01, 2, 66},
+    {0x16, 3, 66},
+    {0x01, 2, 67},
+    {0x16, 3, 67},
+    {0x01, 2, 68},
+    {0x16, 3, 68},
   },
   /* 36 */
   {
-    {0x8003, 114},
-    {0x8006, 114},
-    {0x800a, 114},
-    {0x800f, 114},
-    {0x8018, 114},
-    {0x801f, 114},
-    {0x8029, 114},
-    {0xc038, 114},
-    {0x8003, 117},
-    {0x8006, 117},
-    {0x800a, 117},
-    {0x800f, 117},
-    {0x8018, 117},
-    {0x801f, 117},
-    {0x8029, 117},
-    {0xc038, 117},
+    {0x03, 2, 114},
+    {0x06, 2, 114},
+    {0x0a, 2, 114},
+    {0x0f, 2, 114},
+    {0x18, 2, 114},
+    {0x1f, 2, 114},
+    {0x29, 2, 114},
+    {0x38, 3, 114},
+    {0x03, 2, 117},
+    {0x06, 2, 117},
+    {0x0a, 2, 117},
+    {0x0f, 2, 117},
+    {0x18, 2, 117},
+    {0x1f, 2, 117},
+    {0x29, 2, 117},
+    {0x38, 3, 117},
   },
   /* 37 */
   {
-    {0x8002, 58},
-    {0x8009, 58},
-    {0x8017, 58},
-    {0xc028, 58},
-    {0x8002, 66},
-    {0x8009, 66},
-    {0x8017, 66},
-    {0xc028, 66},
-    {0x8002, 67},
-    {0x8009, 67},
-    {0x8017, 67},
-    {0xc028, 67},
-    {0x8002, 68},
-    {0x8009, 68},
-    {0x8017, 68},
-    {0xc028, 68},
+    {0x02, 2, 58},
+    {0x09, 2, 58},
+    {0x17, 2, 58},
+    {0x28, 3, 58},
+    {0x02, 2, 66},
+    {0x09, 2, 66},
+    {0x17, 2, 66},
+    {0x28, 3, 66},
+    {0x02, 2, 67},
+    {0x09, 2, 67},
+    {0x17, 2, 67},
+    {0x28, 3, 67},
+    {0x02, 2, 68},
+    {0x09, 2, 68},
+    {0x17, 2, 68},
+    {0x28, 3, 68},
   },
   /* 38 */
   {
-    {0x8003, 58},
-    {0x8006, 58},
-    {0x800a, 58},
-    {0x800f, 58},
-    {0x8018, 58},
-    {0x801f, 58},
-    {0x8029, 58},
-    {0xc038, 58},
-    {0x8003, 66},
-    {0x8006, 66},
-    {0x800a, 66},
-    {0x800f, 66},
-    {0x8018, 66},
-    {0x801f, 66},
-    {0x8029, 66},
-    {0xc038, 66},
+    {0x03, 2, 58},
+    {0x06, 2, 58},
+    {0x0a, 2, 58},
+    {0x0f, 2, 58},
+    {0x18, 2, 58},
+    {0x1f, 2, 58},
+    {0x29, 2, 58},
+    {0x38, 3, 58},
+    {0x03, 2, 66},
+    {0x06, 2, 66},
+    {0x0a, 2, 66},
+    {0x0f, 2, 66},
+    {0x18, 2, 66},
+    {0x1f, 2, 66},
+    {0x29, 2, 66},
+    {0x38, 3, 66},
   },
   /* 39 */
   {
-    {0x8003, 67},
-    {0x8006, 67},
-    {0x800a, 67},
-    {0x800f, 67},
-    {0x8018, 67},
-    {0x801f, 67},
-    {0x8029, 67},
-    {0xc038, 67},
-    {0x8003, 68},
-    {0x8006, 68},
-    {0x800a, 68},
-    {0x800f, 68},
-    {0x8018, 68},
-    {0x801f, 68},
-    {0x8029, 68},
-    {0xc038, 68},
+    {0x03, 2, 67},
+    {0x06, 2, 67},
+    {0x0a, 2, 67},
+    {0x0f, 2, 67},
+    {0x18, 2, 67},
+    {0x1f, 2, 67},
+    {0x29, 2, 67},
+    {0x38, 3, 67},
+    {0x03, 2, 68},
+    {0x06, 2, 68},
+    {0x0a, 2, 68},
+    {0x0f, 2, 68},
+    {0x18, 2, 68},
+    {0x1f, 2, 68},
+    {0x29, 2, 68},
+    {0x38, 3, 68},
   },
   /* 40 */
   {
-    {0x2c, 0},
-    {0x2d, 0},
-    {0x2f, 0},
-    {0x30, 0},
-    {0x33, 0},
-    {0x34, 0},
-    {0x36, 0},
-    {0x37, 0},
-    {0x3b, 0},
-    {0x3c, 0},
-    {0x3e, 0},
-    {0x3f, 0},
-    {0x42, 0},
-    {0x43, 0},
-    {0x45, 0},
-    {0x4048, 0},
+    {0x2c, 0, 0},
+    {0x2d, 0, 0},
+    {0x2f, 0, 0},
+    {0x30, 0, 0},
+    {0x33, 0, 0},
+    {0x34, 0, 0},
+    {0x36, 0, 0},
+    {0x37, 0, 0},
+    {0x3b, 0, 0},
+    {0x3c, 0, 0},
+    {0x3e, 0, 0},
+    {0x3f, 0, 0},
+    {0x42, 0, 0},
+    {0x43, 0, 0},
+    {0x45, 0, 0},
+    {0x48, 1, 0},
   },
   /* 41 */
   {
-    {0xc000, 69},
-    {0xc000, 70},
-    {0xc000, 71},
-    {0xc000, 72},
-    {0xc000, 73},
-    {0xc000, 74},
-    {0xc000, 75},
-    {0xc000, 76},
-    {0xc000, 77},
-    {0xc000, 78},
-    {0xc000, 79},
-    {0xc000, 80},
-    {0xc000, 81},
-    {0xc000, 82},
-    {0xc000, 83},
-    {0xc000, 84},
+    {0x00, 3, 69},
+    {0x00, 3, 70},
+    {0x00, 3, 71},
+    {0x00, 3, 72},
+    {0x00, 3, 73},
+    {0x00, 3, 74},
+    {0x00, 3, 75},
+    {0x00, 3, 76},
+    {0x00, 3, 77},
+    {0x00, 3, 78},
+    {0x00, 3, 79},
+    {0x00, 3, 80},
+    {0x00, 3, 81},
+    {0x00, 3, 82},
+    {0x00, 3, 83},
+    {0x00, 3, 84},
   },
   /* 42 */
   {
-    {0x8001, 69},
-    {0xc016, 69},
-    {0x8001, 70},
-    {0xc016, 70},
-    {0x8001, 71},
-    {0xc016, 71},
-    {0x8001, 72},
-    {0xc016, 72},
-    {0x8001, 73},
-    {0xc016, 73},
-    {0x8001, 74},
-    {0xc016, 74},
-    {0x8001, 75},
-    {0xc016, 75},
-    {0x8001, 76},
-    {0xc016, 76},
+    {0x01, 2, 69},
+    {0x16, 3, 69},
+    {0x01, 2, 70},
+    {0x16, 3, 70},
+    {0x01, 2, 71},
+    {0x16, 3, 71},
+    {0x01, 2, 72},
+    {0x16, 3, 72},
+    {0x01, 2, 73},
+    {0x16, 3, 73},
+    {0x01, 2, 74},
+    {0x16, 3, 74},
+    {0x01, 2, 75},
+    {0x16, 3, 75},
+    {0x01, 2, 76},
+    {0x16, 3, 76},
   },
   /* 43 */
   {
-    {0x8002, 69},
-    {0x8009, 69},
-    {0x8017, 69},
-    {0xc028, 69},
-    {0x8002, 70},
-    {0x8009, 70},
-    {0x8017, 70},
-    {0xc028, 70},
-    {0x8002, 71},
-    {0x8009, 71},
-    {0x8017, 71},
-    {0xc028, 71},
-    {0x8002, 72},
-    {0x8009, 72},
-    {0x8017, 72},
-    {0xc028, 72},
+    {0x02, 2, 69},
+    {0x09, 2, 69},
+    {0x17, 2, 69},
+    {0x28, 3, 69},
+    {0x02, 2, 70},
+    {0x09, 2, 70},
+    {0x17, 2, 70},
+    {0x28, 3, 70},
+    {0x02, 2, 71},
+    {0x09, 2, 71},
+    {0x17, 2, 71},
+    {0x28, 3, 71},
+    {0x02, 2, 72},
+    {0x09, 2, 72},
+    {0x17, 2, 72},
+    {0x28, 3, 72},
   },
   /* 44 */
   {
-    {0x8003, 69},
-    {0x8006, 69},
-    {0x800a, 69},
-    {0x800f, 69},
-    {0x8018, 69},
-    {0x801f, 69},
-    {0x8029, 69},
-    {0xc038, 69},
-    {0x8003, 70},
-    {0x8006, 70},
-    {0x800a, 70},
-    {0x800f, 70},
-    {0x8018, 70},
-    {0x801f, 70},
-    {0x8029, 70},
-    {0xc038, 70},
+    {0x03, 2, 69},
+    {0x06, 2, 69},
+    {0x0a, 2, 69},
+    {0x0f, 2, 69},
+    {0x18, 2, 69},
+    {0x1f, 2, 69},
+    {0x29, 2, 69},
+    {0x38, 3, 69},
+    {0x03, 2, 70},
+    {0x06, 2, 70},
+    {0x0a, 2, 70},
+    {0x0f, 2, 70},
+    {0x18, 2, 70},
+    {0x1f, 2, 70},
+    {0x29, 2, 70},
+    {0x38, 3, 70},
   },
   /* 45 */
   {
-    {0x8003, 71},
-    {0x8006, 71},
-    {0x800a, 71},
-    {0x800f, 71},
-    {0x8018, 71},
-    {0x801f, 71},
-    {0x8029, 71},
-    {0xc038, 71},
-    {0x8003, 72},
-    {0x8006, 72},
-    {0x800a, 72},
-    {0x800f, 72},
-    {0x8018, 72},
-    {0x801f, 72},
-    {0x8029, 72},
-    {0xc038, 72},
+    {0x03, 2, 71},
+    {0x06, 2, 71},
+    {0x0a, 2, 71},
+    {0x0f, 2, 71},
+    {0x18, 2, 71},
+    {0x1f, 2, 71},
+    {0x29, 2, 71},
+    {0x38, 3, 71},
+    {0x03, 2, 72},
+    {0x06, 2, 72},
+    {0x0a, 2, 72},
+    {0x0f, 2, 72},
+    {0x18, 2, 72},
+    {0x1f, 2, 72},
+    {0x29, 2, 72},
+    {0x38, 3, 72},
   },
   /* 46 */
   {
-    {0x8002, 73},
-    {0x8009, 73},
-    {0x8017, 73},
-    {0xc028, 73},
-    {0x8002, 74},
-    {0x8009, 74},
-    {0x8017, 74},
-    {0xc028, 74},
-    {0x8002, 75},
-    {0x8009, 75},
-    {0x8017, 75},
-    {0xc028, 75},
-    {0x8002, 76},
-    {0x8009, 76},
-    {0x8017, 76},
-    {0xc028, 76},
+    {0x02, 2, 73},
+    {0x09, 2, 73},
+    {0x17, 2, 73},
+    {0x28, 3, 73},
+    {0x02, 2, 74},
+    {0x09, 2, 74},
+    {0x17, 2, 74},
+    {0x28, 3, 74},
+    {0x02, 2, 75},
+    {0x09, 2, 75},
+    {0x17, 2, 75},
+    {0x28, 3, 75},
+    {0x02, 2, 76},
+    {0x09, 2, 76},
+    {0x17, 2, 76},
+    {0x28, 3, 76},
   },
   /* 47 */
   {
-    {0x8003, 73},
-    {0x8006, 73},
-    {0x800a, 73},
-    {0x800f, 73},
-    {0x8018, 73},
-    {0x801f, 73},
-    {0x8029, 73},
-    {0xc038, 73},
-    {0x8003, 74},
-    {0x8006, 74},
-    {0x800a, 74},
-    {0x800f, 74},
-    {0x8018, 74},
-    {0x801f, 74},
-    {0x8029, 74},
-    {0xc038, 74},
+    {0x03, 2, 73},
+    {0x06, 2, 73},
+    {0x0a, 2, 73},
+    {0x0f, 2, 73},
+    {0x18, 2, 73},
+    {0x1f, 2, 73},
+    {0x29, 2, 73},
+    {0x38, 3, 73},
+    {0x03, 2, 74},
+    {0x06, 2, 74},
+    {0x0a, 2, 74},
+    {0x0f, 2, 74},
+    {0x18, 2, 74},
+    {0x1f, 2, 74},
+    {0x29, 2, 74},
+    {0x38, 3, 74},
   },
   /* 48 */
   {
-    {0x8003, 75},
-    {0x8006, 75},
-    {0x800a, 75},
-    {0x800f, 75},
-    {0x8018, 75},
-    {0x801f, 75},
-    {0x8029, 75},
-    {0xc038, 75},
-    {0x8003, 76},
-    {0x8006, 76},
-    {0x800a, 76},
-    {0x800f, 76},
-    {0x8018, 76},
-    {0x801f, 76},
-    {0x8029, 76},
-    {0xc038, 76},
+    {0x03, 2, 75},
+    {0x06, 2, 75},
+    {0x0a, 2, 75},
+    {0x0f, 2, 75},
+    {0x18, 2, 75},
+    {0x1f, 2, 75},
+    {0x29, 2, 75},
+    {0x38, 3, 75},
+    {0x03, 2, 76},
+    {0x06, 2, 76},
+    {0x0a, 2, 76},
+    {0x0f, 2, 76},
+    {0x18, 2, 76},
+    {0x1f, 2, 76},
+    {0x29, 2, 76},
+    {0x38, 3, 76},
   },
   /* 49 */
   {
-    {0x8001, 77},
-    {0xc016, 77},
-    {0x8001, 78},
-    {0xc016, 78},
-    {0x8001, 79},
-    {0xc016, 79},
-    {0x8001, 80},
-    {0xc016, 80},
-    {0x8001, 81},
-    {0xc016, 81},
-    {0x8001, 82},
-    {0xc016, 82},
-    {0x8001, 83},
-    {0xc016, 83},
-    {0x8001, 84},
-    {0xc016, 84},
+    {0x01, 2, 77},
+    {0x16, 3, 77},
+    {0x01, 2, 78},
+    {0x16, 3, 78},
+    {0x01, 2, 79},
+    {0x16, 3, 79},
+    {0x01, 2, 80},
+    {0x16, 3, 80},
+    {0x01, 2, 81},
+    {0x16, 3, 81},
+    {0x01, 2, 82},
+    {0x16, 3, 82},
+    {0x01, 2, 83},
+    {0x16, 3, 83},
+    {0x01, 2, 84},
+    {0x16, 3, 84},
   },
   /* 50 */
   {
-    {0x8002, 77},
-    {0x8009, 77},
-    {0x8017, 77},
-    {0xc028, 77},
-    {0x8002, 78},
-    {0x8009, 78},
-    {0x8017, 78},
-    {0xc028, 78},
-    {0x8002, 79},
-    {0x8009, 79},
-    {0x8017, 79},
-    {0xc028, 79},
-    {0x8002, 80},
-    {0x8009, 80},
-    {0x8017, 80},
-    {0xc028, 80},
+    {0x02, 2, 77},
+    {0x09, 2, 77},
+    {0x17, 2, 77},
+    {0x28, 3, 77},
+    {0x02, 2, 78},
+    {0x09, 2, 78},
+    {0x17, 2, 78},
+    {0x28, 3, 78},
+    {0x02, 2, 79},
+    {0x09, 2, 79},
+    {0x17, 2, 79},
+    {0x28, 3, 79},
+    {0x02, 2, 80},
+    {0x09, 2, 80},
+    {0x17, 2, 80},
+    {0x28, 3, 80},
   },
   /* 51 */
   {
-    {0x8003, 77},
-    {0x8006, 77},
-    {0x800a, 77},
-    {0x800f, 77},
-    {0x8018, 77},
-    {0x801f, 77},
-    {0x8029, 77},
-    {0xc038, 77},
-    {0x8003, 78},
-    {0x8006, 78},
-    {0x800a, 78},
-    {0x800f, 78},
-    {0x8018, 78},
-    {0x801f, 78},
-    {0x8029, 78},
-    {0xc038, 78},
+    {0x03, 2, 77},
+    {0x06, 2, 77},
+    {0x0a, 2, 77},
+    {0x0f, 2, 77},
+    {0x18, 2, 77},
+    {0x1f, 2, 77},
+    {0x29, 2, 77},
+    {0x38, 3, 77},
+    {0x03, 2, 78},
+    {0x06, 2, 78},
+    {0x0a, 2, 78},
+    {0x0f, 2, 78},
+    {0x18, 2, 78},
+    {0x1f, 2, 78},
+    {0x29, 2, 78},
+    {0x38, 3, 78},
   },
   /* 52 */
   {
-    {0x8003, 79},
-    {0x8006, 79},
-    {0x800a, 79},
-    {0x800f, 79},
-    {0x8018, 79},
-    {0x801f, 79},
-    {0x8029, 79},
-    {0xc038, 79},
-    {0x8003, 80},
-    {0x8006, 80},
-    {0x800a, 80},
-    {0x800f, 80},
-    {0x8018, 80},
-    {0x801f, 80},
-    {0x8029, 80},
-    {0xc038, 80},
+    {0x03, 2, 79},
+    {0x06, 2, 79},
+    {0x0a, 2, 79},
+    {0x0f, 2, 79},
+    {0x18, 2, 79},
+    {0x1f, 2, 79},
+    {0x29, 2, 79},
+    {0x38, 3, 79},
+    {0x03, 2, 80},
+    {0x06, 2, 80},
+    {0x0a, 2, 80},
+    {0x0f, 2, 80},
+    {0x18, 2, 80},
+    {0x1f, 2, 80},
+    {0x29, 2, 80},
+    {0x38, 3, 80},
   },
   /* 53 */
   {
-    {0x8002, 81},
-    {0x8009, 81},
-    {0x8017, 81},
-    {0xc028, 81},
-    {0x8002, 82},
-    {0x8009, 82},
-    {0x8017, 82},
-    {0xc028, 82},
-    {0x8002, 83},
-    {0x8009, 83},
-    {0x8017, 83},
-    {0xc028, 83},
-    {0x8002, 84},
-    {0x8009, 84},
-    {0x8017, 84},
-    {0xc028, 84},
+    {0x02, 2, 81},
+    {0x09, 2, 81},
+    {0x17, 2, 81},
+    {0x28, 3, 81},
+    {0x02, 2, 82},
+    {0x09, 2, 82},
+    {0x17, 2, 82},
+    {0x28, 3, 82},
+    {0x02, 2, 83},
+    {0x09, 2, 83},
+    {0x17, 2, 83},
+    {0x28, 3, 83},
+    {0x02, 2, 84},
+    {0x09, 2, 84},
+    {0x17, 2, 84},
+    {0x28, 3, 84},
   },
   /* 54 */
   {
-    {0x8003, 81},
-    {0x8006, 81},
-    {0x800a, 81},
-    {0x800f, 81},
-    {0x8018, 81},
-    {0x801f, 81},
-    {0x8029, 81},
-    {0xc038, 81},
-    {0x8003, 82},
-    {0x8006, 82},
-    {0x800a, 82},
-    {0x800f, 82},
-    {0x8018, 82},
-    {0x801f, 82},
-    {0x8029, 82},
-    {0xc038, 82},
+    {0x03, 2, 81},
+    {0x06, 2, 81},
+    {0x0a, 2, 81},
+    {0x0f, 2, 81},
+    {0x18, 2, 81},
+    {0x1f, 2, 81},
+    {0x29, 2, 81},
+    {0x38, 3, 81},
+    {0x03, 2, 82},
+    {0x06, 2, 82},
+    {0x0a, 2, 82},
+    {0x0f, 2, 82},
+    {0x18, 2, 82},
+    {0x1f, 2, 82},
+    {0x29, 2, 82},
+    {0x38, 3, 82},
   },
   /* 55 */
   {
-    {0x8003, 83},
-    {0x8006, 83},
-    {0x800a, 83},
-    {0x800f, 83},
-    {0x8018, 83},
-    {0x801f, 83},
-    {0x8029, 83},
-    {0xc038, 83},
-    {0x8003, 84},
-    {0x8006, 84},
-    {0x800a, 84},
-    {0x800f, 84},
-    {0x8018, 84},
-    {0x801f, 84},
-    {0x8029, 84},
-    {0xc038, 84},
+    {0x03, 2, 83},
+    {0x06, 2, 83},
+    {0x0a, 2, 83},
+    {0x0f, 2, 83},
+    {0x18, 2, 83},
+    {0x1f, 2, 83},
+    {0x29, 2, 83},
+    {0x38, 3, 83},
+    {0x03, 2, 84},
+    {0x06, 2, 84},
+    {0x0a, 2, 84},
+    {0x0f, 2, 84},
+    {0x18, 2, 84},
+    {0x1f, 2, 84},
+    {0x29, 2, 84},
+    {0x38, 3, 84},
   },
   /* 56 */
   {
-    {0xc000, 85},
-    {0xc000, 86},
-    {0xc000, 87},
-    {0xc000, 89},
-    {0xc000, 106},
-    {0xc000, 107},
-    {0xc000, 113},
-    {0xc000, 118},
-    {0xc000, 119},
-    {0xc000, 120},
-    {0xc000, 121},
-    {0xc000, 122},
-    {0x46, 0},
-    {0x47, 0},
-    {0x49, 0},
-    {0x404a, 0},
+    {0x00, 3, 85},
+    {0x00, 3, 86},
+    {0x00, 3, 87},
+    {0x00, 3, 89},
+    {0x00, 3, 106},
+    {0x00, 3, 107},
+    {0x00, 3, 113},
+    {0x00, 3, 118},
+    {0x00, 3, 119},
+    {0x00, 3, 120},
+    {0x00, 3, 121},
+    {0x00, 3, 122},
+    {0x46, 0, 0},
+    {0x47, 0, 0},
+    {0x49, 0, 0},
+    {0x4a, 1, 0},
   },
   /* 57 */
   {
-    {0x8001, 85},
-    {0xc016, 85},
-    {0x8001, 86},
-    {0xc016, 86},
-    {0x8001, 87},
-    {0xc016, 87},
-    {0x8001, 89},
-    {0xc016, 89},
-    {0x8001, 106},
-    {0xc016, 106},
-    {0x8001, 107},
-    {0xc016, 107},
-    {0x8001, 113},
-    {0xc016, 113},
-    {0x8001, 118},
-    {0xc016, 118},
+    {0x01, 2, 85},
+    {0x16, 3, 85},
+    {0x01, 2, 86},
+    {0x16, 3, 86},
+    {0x01, 2, 87},
+    {0x16, 3, 87},
+    {0x01, 2, 89},
+    {0x16, 3, 89},
+    {0x01, 2, 106},
+    {0x16, 3, 106},
+    {0x01, 2, 107},
+    {0x16, 3, 107},
+    {0x01, 2, 113},
+    {0x16, 3, 113},
+    {0x01, 2, 118},
+    {0x16, 3, 118},
   },
   /* 58 */
   {
-    {0x8002, 85},
-    {0x8009, 85},
-    {0x8017, 85},
-    {0xc028, 85},
-    {0x8002, 86},
-    {0x8009, 86},
-    {0x8017, 86},
-    {0xc028, 86},
-    {0x8002, 87},
-    {0x8009, 87},
-    {0x8017, 87},
-    {0xc028, 87},
-    {0x8002, 89},
-    {0x8009, 89},
-    {0x8017, 89},
-    {0xc028, 89},
+    {0x02, 2, 85},
+    {0x09, 2, 85},
+    {0x17, 2, 85},
+    {0x28, 3, 85},
+    {0x02, 2, 86},
+    {0x09, 2, 86},
+    {0x17, 2, 86},
+    {0x28, 3, 86},
+    {0x02, 2, 87},
+    {0x09, 2, 87},
+    {0x17, 2, 87},
+    {0x28, 3, 87},
+    {0x02, 2, 89},
+    {0x09, 2, 89},
+    {0x17, 2, 89},
+    {0x28, 3, 89},
   },
   /* 59 */
   {
-    {0x8003, 85},
-    {0x8006, 85},
-    {0x800a, 85},
-    {0x800f, 85},
-    {0x8018, 85},
-    {0x801f, 85},
-    {0x8029, 85},
-    {0xc038, 85},
-    {0x8003, 86},
-    {0x8006, 86},
-    {0x800a, 86},
-    {0x800f, 86},
-    {0x8018, 86},
-    {0x801f, 86},
-    {0x8029, 86},
-    {0xc038, 86},
+    {0x03, 2, 85},
+    {0x06, 2, 85},
+    {0x0a, 2, 85},
+    {0x0f, 2, 85},
+    {0x18, 2, 85},
+    {0x1f, 2, 85},
+    {0x29, 2, 85},
+    {0x38, 3, 85},
+    {0x03, 2, 86},
+    {0x06, 2, 86},
+    {0x0a, 2, 86},
+    {0x0f, 2, 86},
+    {0x18, 2, 86},
+    {0x1f, 2, 86},
+    {0x29, 2, 86},
+    {0x38, 3, 86},
   },
   /* 60 */
   {
-    {0x8003, 87},
-    {0x8006, 87},
-    {0x800a, 87},
-    {0x800f, 87},
-    {0x8018, 87},
-    {0x801f, 87},
-    {0x8029, 87},
-    {0xc038, 87},
-    {0x8003, 89},
-    {0x8006, 89},
-    {0x800a, 89},
-    {0x800f, 89},
-    {0x8018, 89},
-    {0x801f, 89},
-    {0x8029, 89},
-    {0xc038, 89},
+    {0x03, 2, 87},
+    {0x06, 2, 87},
+    {0x0a, 2, 87},
+    {0x0f, 2, 87},
+    {0x18, 2, 87},
+    {0x1f, 2, 87},
+    {0x29, 2, 87},
+    {0x38, 3, 87},
+    {0x03, 2, 89},
+    {0x06, 2, 89},
+    {0x0a, 2, 89},
+    {0x0f, 2, 89},
+    {0x18, 2, 89},
+    {0x1f, 2, 89},
+    {0x29, 2, 89},
+    {0x38, 3, 89},
   },
   /* 61 */
   {
-    {0x8002, 106},
-    {0x8009, 106},
-    {0x8017, 106},
-    {0xc028, 106},
-    {0x8002, 107},
-    {0x8009, 107},
-    {0x8017, 107},
-    {0xc028, 107},
-    {0x8002, 113},
-    {0x8009, 113},
-    {0x8017, 113},
-    {0xc028, 113},
-    {0x8002, 118},
-    {0x8009, 118},
-    {0x8017, 118},
-    {0xc028, 118},
+    {0x02, 2, 106},
+    {0x09, 2, 106},
+    {0x17, 2, 106},
+    {0x28, 3, 106},
+    {0x02, 2, 107},
+    {0x09, 2, 107},
+    {0x17, 2, 107},
+    {0x28, 3, 107},
+    {0x02, 2, 113},
+    {0x09, 2, 113},
+    {0x17, 2, 113},
+    {0x28, 3, 113},
+    {0x02, 2, 118},
+    {0x09, 2, 118},
+    {0x17, 2, 118},
+    {0x28, 3, 118},
   },
   /* 62 */
   {
-    {0x8003, 106},
-    {0x8006, 106},
-    {0x800a, 106},
-    {0x800f, 106},
-    {0x8018, 106},
-    {0x801f, 106},
-    {0x8029, 106},
-    {0xc038, 106},
-    {0x8003, 107},
-    {0x8006, 107},
-    {0x800a, 107},
-    {0x800f, 107},
-    {0x8018, 107},
-    {0x801f, 107},
-    {0x8029, 107},
-    {0xc038, 107},
+    {0x03, 2, 106},
+    {0x06, 2, 106},
+    {0x0a, 2, 106},
+    {0x0f, 2, 106},
+    {0x18, 2, 106},
+    {0x1f, 2, 106},
+    {0x29, 2, 106},
+    {0x38, 3, 106},
+    {0x03, 2, 107},
+    {0x06, 2, 107},
+    {0x0a, 2, 107},
+    {0x0f, 2, 107},
+    {0x18, 2, 107},
+    {0x1f, 2, 107},
+    {0x29, 2, 107},
+    {0x38, 3, 107},
   },
   /* 63 */
   {
-    {0x8003, 113},
-    {0x8006, 113},
-    {0x800a, 113},
-    {0x800f, 113},
-    {0x8018, 113},
-    {0x801f, 113},
-    {0x8029, 113},
-    {0xc038, 113},
-    {0x8003, 118},
-    {0x8006, 118},
-    {0x800a, 118},
-    {0x800f, 118},
-    {0x8018, 118},
-    {0x801f, 118},
-    {0x8029, 118},
-    {0xc038, 118},
+    {0x03, 2, 113},
+    {0x06, 2, 113},
+    {0x0a, 2, 113},
+    {0x0f, 2, 113},
+    {0x18, 2, 113},
+    {0x1f, 2, 113},
+    {0x29, 2, 113},
+    {0x38, 3, 113},
+    {0x03, 2, 118},
+    {0x06, 2, 118},
+    {0x0a, 2, 118},
+    {0x0f, 2, 118},
+    {0x18, 2, 118},
+    {0x1f, 2, 118},
+    {0x29, 2, 118},
+    {0x38, 3, 118},
   },
   /* 64 */
   {
-    {0x8001, 119},
-    {0xc016, 119},
-    {0x8001, 120},
-    {0xc016, 120},
-    {0x8001, 121},
-    {0xc016, 121},
-    {0x8001, 122},
-    {0xc016, 122},
-    {0xc000, 38},
-    {0xc000, 42},
-    {0xc000, 44},
-    {0xc000, 59},
-    {0xc000, 88},
-    {0xc000, 90},
-    {0x4b, 0},
-    {0x4e, 0},
+    {0x01, 2, 119},
+    {0x16, 3, 119},
+    {0x01, 2, 120},
+    {0x16, 3, 120},
+    {0x01, 2, 121},
+    {0x16, 3, 121},
+    {0x01, 2, 122},
+    {0x16, 3, 122},
+    {0x00, 3, 38},
+    {0x00, 3, 42},
+    {0x00, 3, 44},
+    {0x00, 3, 59},
+    {0x00, 3, 88},
+    {0x00, 3, 90},
+    {0x4b, 0, 0},
+    {0x4e, 0, 0},
   },
   /* 65 */
   {
-    {0x8002, 119},
-    {0x8009, 119},
-    {0x8017, 119},
-    {0xc028, 119},
-    {0x8002, 120},
-    {0x8009, 120},
-    {0x8017, 120},
-    {0xc028, 120},
-    {0x8002, 121},
-    {0x8009, 121},
-    {0x8017, 121},
-    {0xc028, 121},
-    {0x8002, 122},
-    {0x8009, 122},
-    {0x8017, 122},
-    {0xc028, 122},
+    {0x02, 2, 119},
+    {0x09, 2, 119},
+    {0x17, 2, 119},
+    {0x28, 3, 119},
+    {0x02, 2, 120},
+    {0x09, 2, 120},
+    {0x17, 2, 120},
+    {0x28, 3, 120},
+    {0x02, 2, 121},
+    {0x09, 2, 121},
+    {0x17, 2, 121},
+    {0x28, 3, 121},
+    {0x02, 2, 122},
+    {0x09, 2, 122},
+    {0x17, 2, 122},
+    {0x28, 3, 122},
   },
   /* 66 */
   {
-    {0x8003, 119},
-    {0x8006, 119},
-    {0x800a, 119},
-    {0x800f, 119},
-    {0x8018, 119},
-    {0x801f, 119},
-    {0x8029, 119},
-    {0xc038, 119},
-    {0x8003, 120},
-    {0x8006, 120},
-    {0x800a, 120},
-    {0x800f, 120},
-    {0x8018, 120},
-    {0x801f, 120},
-    {0x8029, 120},
-    {0xc038, 120},
+    {0x03, 2, 119},
+    {0x06, 2, 119},
+    {0x0a, 2, 119},
+    {0x0f, 2, 119},
+    {0x18, 2, 119},
+    {0x1f, 2, 119},
+    {0x29, 2, 119},
+    {0x38, 3, 119},
+    {0x03, 2, 120},
+    {0x06, 2, 120},
+    {0x0a, 2, 120},
+    {0x0f, 2, 120},
+    {0x18, 2, 120},
+    {0x1f, 2, 120},
+    {0x29, 2, 120},
+    {0x38, 3, 120},
   },
   /* 67 */
   {
-    {0x8003, 121},
-    {0x8006, 121},
-    {0x800a, 121},
-    {0x800f, 121},
-    {0x8018, 121},
-    {0x801f, 121},
-    {0x8029, 121},
-    {0xc038, 121},
-    {0x8003, 122},
-    {0x8006, 122},
-    {0x800a, 122},
-    {0x800f, 122},
-    {0x8018, 122},
-    {0x801f, 122},
-    {0x8029, 122},
-    {0xc038, 122},
+    {0x03, 2, 121},
+    {0x06, 2, 121},
+    {0x0a, 2, 121},
+    {0x0f, 2, 121},
+    {0x18, 2, 121},
+    {0x1f, 2, 121},
+    {0x29, 2, 121},
+    {0x38, 3, 121},
+    {0x03, 2, 122},
+    {0x06, 2, 122},
+    {0x0a, 2, 122},
+    {0x0f, 2, 122},
+    {0x18, 2, 122},
+    {0x1f, 2, 122},
+    {0x29, 2, 122},
+    {0x38, 3, 122},
   },
   /* 68 */
   {
-    {0x8001, 38},
-    {0xc016, 38},
-    {0x8001, 42},
-    {0xc016, 42},
-    {0x8001, 44},
-    {0xc016, 44},
-    {0x8001, 59},
-    {0xc016, 59},
-    {0x8001, 88},
-    {0xc016, 88},
-    {0x8001, 90},
-    {0xc016, 90},
-    {0x4c, 0},
-    {0x4d, 0},
-    {0x4f, 0},
-    {0x51, 0},
+    {0x01, 2, 38},
+    {0x16, 3, 38},
+    {0x01, 2, 42},
+    {0x16, 3, 42},
+    {0x01, 2, 44},
+    {0x16, 3, 44},
+    {0x01, 2, 59},
+    {0x16, 3, 59},
+    {0x01, 2, 88},
+    {0x16, 3, 88},
+    {0x01, 2, 90},
+    {0x16, 3, 90},
+    {0x4c, 0, 0},
+    {0x4d, 0, 0},
+    {0x4f, 0, 0},
+    {0x51, 0, 0},
   },
   /* 69 */
   {
-    {0x8002, 38},
-    {0x8009, 38},
-    {0x8017, 38},
-    {0xc028, 38},
-    {0x8002, 42},
-    {0x8009, 42},
-    {0x8017, 42},
-    {0xc028, 42},
-    {0x8002, 44},
-    {0x8009, 44},
-    {0x8017, 44},
-    {0xc028, 44},
-    {0x8002, 59},
-    {0x8009, 59},
-    {0x8017, 59},
-    {0xc028, 59},
+    {0x02, 2, 38},
+    {0x09, 2, 38},
+    {0x17, 2, 38},
+    {0x28, 3, 38},
+    {0x02, 2, 42},
+    {0x09, 2, 42},
+    {0x17, 2, 42},
+    {0x28, 3, 42},
+    {0x02, 2, 44},
+    {0x09, 2, 44},
+    {0x17, 2, 44},
+    {0x28, 3, 44},
+    {0x02, 2, 59},
+    {0x09, 2, 59},
+    {0x17, 2, 59},
+    {0x28, 3, 59},
   },
   /* 70 */
   {
-    {0x8003, 38},
-    {0x8006, 38},
-    {0x800a, 38},
-    {0x800f, 38},
-    {0x8018, 38},
-    {0x801f, 38},
-    {0x8029, 38},
-    {0xc038, 38},
-    {0x8003, 42},
-    {0x8006, 42},
-    {0x800a, 42},
-    {0x800f, 42},
-    {0x8018, 42},
-    {0x801f, 42},
-    {0x8029, 42},
-    {0xc038, 42},
+    {0x03, 2, 38},
+    {0x06, 2, 38},
+    {0x0a, 2, 38},
+    {0x0f, 2, 38},
+    {0x18, 2, 38},
+    {0x1f, 2, 38},
+    {0x29, 2, 38},
+    {0x38, 3, 38},
+    {0x03, 2, 42},
+    {0x06, 2, 42},
+    {0x0a, 2, 42},
+    {0x0f, 2, 42},
+    {0x18, 2, 42},
+    {0x1f, 2, 42},
+    {0x29, 2, 42},
+    {0x38, 3, 42},
   },
   /* 71 */
   {
-    {0x8003, 44},
-    {0x8006, 44},
-    {0x800a, 44},
-    {0x800f, 44},
-    {0x8018, 44},
-    {0x801f, 44},
-    {0x8029, 44},
-    {0xc038, 44},
-    {0x8003, 59},
-    {0x8006, 59},
-    {0x800a, 59},
-    {0x800f, 59},
-    {0x8018, 59},
-    {0x801f, 59},
-    {0x8029, 59},
-    {0xc038, 59},
+    {0x03, 2, 44},
+    {0x06, 2, 44},
+    {0x0a, 2, 44},
+    {0x0f, 2, 44},
+    {0x18, 2, 44},
+    {0x1f, 2, 44},
+    {0x29, 2, 44},
+    {0x38, 3, 44},
+    {0x03, 2, 59},
+    {0x06, 2, 59},
+    {0x0a, 2, 59},
+    {0x0f, 2, 59},
+    {0x18, 2, 59},
+    {0x1f, 2, 59},
+    {0x29, 2, 59},
+    {0x38, 3, 59},
   },
   /* 72 */
   {
-    {0x8002, 88},
-    {0x8009, 88},
-    {0x8017, 88},
-    {0xc028, 88},
-    {0x8002, 90},
-    {0x8009, 90},
-    {0x8017, 90},
-    {0xc028, 90},
-    {0xc000, 33},
-    {0xc000, 34},
-    {0xc000, 40},
-    {0xc000, 41},
-    {0xc000, 63},
-    {0x50, 0},
-    {0x52, 0},
-    {0x54, 0},
+    {0x02, 2, 88},
+    {0x09, 2, 88},
+    {0x17, 2, 88},
+    {0x28, 3, 88},
+    {0x02, 2, 90},
+    {0x09, 2, 90},
+    {0x17, 2, 90},
+    {0x28, 3, 90},
+    {0x00, 3, 33},
+    {0x00, 3, 34},
+    {0x00, 3, 40},
+    {0x00, 3, 41},
+    {0x00, 3, 63},
+    {0x50, 0, 0},
+    {0x52, 0, 0},
+    {0x54, 0, 0},
   },
   /* 73 */
   {
-    {0x8003, 88},
-    {0x8006, 88},
-    {0x800a, 88},
-    {0x800f, 88},
-    {0x8018, 88},
-    {0x801f, 88},
-    {0x8029, 88},
-    {0xc038, 88},
-    {0x8003, 90},
-    {0x8006, 90},
-    {0x800a, 90},
-    {0x800f, 90},
-    {0x8018, 90},
-    {0x801f, 90},
-    {0x8029, 90},
-    {0xc038, 90},
+    {0x03, 2, 88},
+    {0x06, 2, 88},
+    {0x0a, 2, 88},
+    {0x0f, 2, 88},
+    {0x18, 2, 88},
+    {0x1f, 2, 88},
+    {0x29, 2, 88},
+    {0x38, 3, 88},
+    {0x03, 2, 90},
+    {0x06, 2, 90},
+    {0x0a, 2, 90},
+    {0x0f, 2, 90},
+    {0x18, 2, 90},
+    {0x1f, 2, 90},
+    {0x29, 2, 90},
+    {0x38, 3, 90},
   },
   /* 74 */
   {
-    {0x8001, 33},
-    {0xc016, 33},
-    {0x8001, 34},
-    {0xc016, 34},
-    {0x8001, 40},
-    {0xc016, 40},
-    {0x8001, 41},
-    {0xc016, 41},
-    {0x8001, 63},
-    {0xc016, 63},
-    {0xc000, 39},
-    {0xc000, 43},
-    {0xc000, 124},
-    {0x53, 0},
-    {0x55, 0},
-    {0x58, 0},
+    {0x01, 2, 33},
+    {0x16, 3, 33},
+    {0x01, 2, 34},
+    {0x16, 3, 34},
+    {0x01, 2, 40},
+    {0x16, 3, 40},
+    {0x01, 2, 41},
+    {0x16, 3, 41},
+    {0x01, 2, 63},
+    {0x16, 3, 63},
+    {0x00, 3, 39},
+    {0x00, 3, 43},
+    {0x00, 3, 124},
+    {0x53, 0, 0},
+    {0x55, 0, 0},
+    {0x58, 0, 0},
   },
   /* 75 */
   {
-    {0x8002, 33},
-    {0x8009, 33},
-    {0x8017, 33},
-    {0xc028, 33},
-    {0x8002, 34},
-    {0x8009, 34},
-    {0x8017, 34},
-    {0xc028, 34},
-    {0x8002, 40},
-    {0x8009, 40},
-    {0x8017, 40},
-    {0xc028, 40},
-    {0x8002, 41},
-    {0x8009, 41},
-    {0x8017, 41},
-    {0xc028, 41},
+    {0x02, 2, 33},
+    {0x09, 2, 33},
+    {0x17, 2, 33},
+    {0x28, 3, 33},
+    {0x02, 2, 34},
+    {0x09, 2, 34},
+    {0x17, 2, 34},
+    {0x28, 3, 34},
+    {0x02, 2, 40},
+    {0x09, 2, 40},
+    {0x17, 2, 40},
+    {0x28, 3, 40},
+    {0x02, 2, 41},
+    {0x09, 2, 41},
+    {0x17, 2, 41},
+    {0x28, 3, 41},
   },
   /* 76 */
   {
-    {0x8003, 33},
-    {0x8006, 33},
-    {0x800a, 33},
-    {0x800f, 33},
-    {0x8018, 33},
-    {0x801f, 33},
-    {0x8029, 33},
-    {0xc038, 33},
-    {0x8003, 34},
-    {0x8006, 34},
-    {0x800a, 34},
-    {0x800f, 34},
-    {0x8018, 34},
-    {0x801f, 34},
-    {0x8029, 34},
-    {0xc038, 34},
+    {0x03, 2, 33},
+    {0x06, 2, 33},
+    {0x0a, 2, 33},
+    {0x0f, 2, 33},
+    {0x18, 2, 33},
+    {0x1f, 2, 33},
+    {0x29, 2, 33},
+    {0x38, 3, 33},
+    {0x03, 2, 34},
+    {0x06, 2, 34},
+    {0x0a, 2, 34},
+    {0x0f, 2, 34},
+    {0x18, 2, 34},
+    {0x1f, 2, 34},
+    {0x29, 2, 34},
+    {0x38, 3, 34},
   },
   /* 77 */
   {
-    {0x8003, 40},
-    {0x8006, 40},
-    {0x800a, 40},
-    {0x800f, 40},
-    {0x8018, 40},
-    {0x801f, 40},
-    {0x8029, 40},
-    {0xc038, 40},
-    {0x8003, 41},
-    {0x8006, 41},
-    {0x800a, 41},
-    {0x800f, 41},
-    {0x8018, 41},
-    {0x801f, 41},
-    {0x8029, 41},
-    {0xc038, 41},
+    {0x03, 2, 40},
+    {0x06, 2, 40},
+    {0x0a, 2, 40},
+    {0x0f, 2, 40},
+    {0x18, 2, 40},
+    {0x1f, 2, 40},
+    {0x29, 2, 40},
+    {0x38, 3, 40},
+    {0x03, 2, 41},
+    {0x06, 2, 41},
+    {0x0a, 2, 41},
+    {0x0f, 2, 41},
+    {0x18, 2, 41},
+    {0x1f, 2, 41},
+    {0x29, 2, 41},
+    {0x38, 3, 41},
   },
   /* 78 */
   {
-    {0x8002, 63},
-    {0x8009, 63},
-    {0x8017, 63},
-    {0xc028, 63},
-    {0x8001, 39},
-    {0xc016, 39},
-    {0x8001, 43},
-    {0xc016, 43},
-    {0x8001, 124},
-    {0xc016, 124},
-    {0xc000, 35},
-    {0xc000, 62},
-    {0x56, 0},
-    {0x57, 0},
-    {0x59, 0},
-    {0x5a, 0},
+    {0x02, 2, 63},
+    {0x09, 2, 63},
+    {0x17, 2, 63},
+    {0x28, 3, 63},
+    {0x01, 2, 39},
+    {0x16, 3, 39},
+    {0x01, 2, 43},
+    {0x16, 3, 43},
+    {0x01, 2, 124},
+    {0x16, 3, 124},
+    {0x00, 3, 35},
+    {0x00, 3, 62},
+    {0x56, 0, 0},
+    {0x57, 0, 0},
+    {0x59, 0, 0},
+    {0x5a, 0, 0},
   },
   /* 79 */
   {
-    {0x8003, 63},
-    {0x8006, 63},
-    {0x800a, 63},
-    {0x800f, 63},
-    {0x8018, 63},
-    {0x801f, 63},
-    {0x8029, 63},
-    {0xc038, 63},
-    {0x8002, 39},
-    {0x8009, 39},
-    {0x8017, 39},
-    {0xc028, 39},
-    {0x8002, 43},
-    {0x8009, 43},
-    {0x8017, 43},
-    {0xc028, 43},
+    {0x03, 2, 63},
+    {0x06, 2, 63},
+    {0x0a, 2, 63},
+    {0x0f, 2, 63},
+    {0x18, 2, 63},
+    {0x1f, 2, 63},
+    {0x29, 2, 63},
+    {0x38, 3, 63},
+    {0x02, 2, 39},
+    {0x09, 2, 39},
+    {0x17, 2, 39},
+    {0x28, 3, 39},
+    {0x02, 2, 43},
+    {0x09, 2, 43},
+    {0x17, 2, 43},
+    {0x28, 3, 43},
   },
   /* 80 */
   {
-    {0x8003, 39},
-    {0x8006, 39},
-    {0x800a, 39},
-    {0x800f, 39},
-    {0x8018, 39},
-    {0x801f, 39},
-    {0x8029, 39},
-    {0xc038, 39},
-    {0x8003, 43},
-    {0x8006, 43},
-    {0x800a, 43},
-    {0x800f, 43},
-    {0x8018, 43},
-    {0x801f, 43},
-    {0x8029, 43},
-    {0xc038, 43},
+    {0x03, 2, 39},
+    {0x06, 2, 39},
+    {0x0a, 2, 39},
+    {0x0f, 2, 39},
+    {0x18, 2, 39},
+    {0x1f, 2, 39},
+    {0x29, 2, 39},
+    {0x38, 3, 39},
+    {0x03, 2, 43},
+    {0x06, 2, 43},
+    {0x0a, 2, 43},
+    {0x0f, 2, 43},
+    {0x18, 2, 43},
+    {0x1f, 2, 43},
+    {0x29, 2, 43},
+    {0x38, 3, 43},
   },
   /* 81 */
   {
-    {0x8002, 124},
-    {0x8009, 124},
-    {0x8017, 124},
-    {0xc028, 124},
-    {0x8001, 35},
-    {0xc016, 35},
-    {0x8001, 62},
-    {0xc016, 62},
-    {0xc000, 0},
-    {0xc000, 36},
-    {0xc000, 64},
-    {0xc000, 91},
-    {0xc000, 93},
-    {0xc000, 126},
-    {0x5b, 0},
-    {0x5c, 0},
+    {0x02, 2, 124},
+    {0x09, 2, 124},
+    {0x17, 2, 124},
+    {0x28, 3, 124},
+    {0x01, 2, 35},
+    {0x16, 3, 35},
+    {0x01, 2, 62},
+    {0x16, 3, 62},
+    {0x00, 3, 0},
+    {0x00, 3, 36},
+    {0x00, 3, 64},
+    {0x00, 3, 91},
+    {0x00, 3, 93},
+    {0x00, 3, 126},
+    {0x5b, 0, 0},
+    {0x5c, 0, 0},
   },
   /* 82 */
   {
-    {0x8003, 124},
-    {0x8006, 124},
-    {0x800a, 124},
-    {0x800f, 124},
-    {0x8018, 124},
-    {0x801f, 124},
-    {0x8029, 124},
-    {0xc038, 124},
-    {0x8002, 35},
-    {0x8009, 35},
-    {0x8017, 35},
-    {0xc028, 35},
-    {0x8002, 62},
-    {0x8009, 62},
-    {0x8017, 62},
-    {0xc028, 62},
+    {0x03, 2, 124},
+    {0x06, 2, 124},
+    {0x0a, 2, 124},
+    {0x0f, 2, 124},
+    {0x18, 2, 124},
+    {0x1f, 2, 124},
+    {0x29, 2, 124},
+    {0x38, 3, 124},
+    {0x02, 2, 35},
+    {0x09, 2, 35},
+    {0x17, 2, 35},
+    {0x28, 3, 35},
+    {0x02, 2, 62},
+    {0x09, 2, 62},
+    {0x17, 2, 62},
+    {0x28, 3, 62},
   },
   /* 83 */
   {
-    {0x8003, 35},
-    {0x8006, 35},
-    {0x800a, 35},
-    {0x800f, 35},
-    {0x8018, 35},
-    {0x801f, 35},
-    {0x8029, 35},
-    {0xc038, 35},
-    {0x8003, 62},
-    {0x8006, 62},
-    {0x800a, 62},
-    {0x800f, 62},
-    {0x8018, 62},
-    {0x801f, 62},
-    {0x8029, 62},
-    {0xc038, 62},
+    {0x03, 2, 35},
+    {0x06, 2, 35},
+    {0x0a, 2, 35},
+    {0x0f, 2, 35},
+    {0x18, 2, 35},
+    {0x1f, 2, 35},
+    {0x29, 2, 35},
+    {0x38, 3, 35},
+    {0x03, 2, 62},
+    {0x06, 2, 62},
+    {0x0a, 2, 62},
+    {0x0f, 2, 62},
+    {0x18, 2, 62},
+    {0x1f, 2, 62},
+    {0x29, 2, 62},
+    {0x38, 3, 62},
   },
   /* 84 */
   {
-    {0x8001, 0},
-    {0xc016, 0},
-    {0x8001, 36},
-    {0xc016, 36},
-    {0x8001, 64},
-    {0xc016, 64},
-    {0x8001, 91},
-    {0xc016, 91},
-    {0x8001, 93},
-    {0xc016, 93},
-    {0x8001, 126},
-    {0xc016, 126},
-    {0xc000, 94},
-    {0xc000, 125},
-    {0x5d, 0},
-    {0x5e, 0},
+    {0x01, 2, 0},
+    {0x16, 3, 0},
+    {0x01, 2, 36},
+    {0x16, 3, 36},
+    {0x01, 2, 64},
+    {0x16, 3, 64},
+    {0x01, 2, 91},
+    {0x16, 3, 91},
+    {0x01, 2, 93},
+    {0x16, 3, 93},
+    {0x01, 2, 126},
+    {0x16, 3, 126},
+    {0x00, 3, 94},
+    {0x00, 3, 125},
+    {0x5d, 0, 0},
+    {0x5e, 0, 0},
   },
   /* 85 */
   {
-    {0x8002, 0},
-    {0x8009, 0},
-    {0x8017, 0},
-    {0xc028, 0},
-    {0x8002, 36},
-    {0x8009, 36},
-    {0x8017, 36},
-    {0xc028, 36},
-    {0x8002, 64},
-    {0x8009, 64},
-    {0x8017, 64},
-    {0xc028, 64},
-    {0x8002, 91},
-    {0x8009, 91},
-    {0x8017, 91},
-    {0xc028, 91},
+    {0x02, 2, 0},
+    {0x09, 2, 0},
+    {0x17, 2, 0},
+    {0x28, 3, 0},
+    {0x02, 2, 36},
+    {0x09, 2, 36},
+    {0x17, 2, 36},
+    {0x28, 3, 36},
+    {0x02, 2, 64},
+    {0x09, 2, 64},
+    {0x17, 2, 64},
+    {0x28, 3, 64},
+    {0x02, 2, 91},
+    {0x09, 2, 91},
+    {0x17, 2, 91},
+    {0x28, 3, 91},
   },
   /* 86 */
   {
-    {0x8003, 0},
-    {0x8006, 0},
-    {0x800a, 0},
-    {0x800f, 0},
-    {0x8018, 0},
-    {0x801f, 0},
-    {0x8029, 0},
-    {0xc038, 0},
-    {0x8003, 36},
-    {0x8006, 36},
-    {0x800a, 36},
-    {0x800f, 36},
-    {0x8018, 36},
-    {0x801f, 36},
-    {0x8029, 36},
-    {0xc038, 36},
+    {0x03, 2, 0},
+    {0x06, 2, 0},
+    {0x0a, 2, 0},
+    {0x0f, 2, 0},
+    {0x18, 2, 0},
+    {0x1f, 2, 0},
+    {0x29, 2, 0},
+    {0x38, 3, 0},
+    {0x03, 2, 36},
+    {0x06, 2, 36},
+    {0x0a, 2, 36},
+    {0x0f, 2, 36},
+    {0x18, 2, 36},
+    {0x1f, 2, 36},
+    {0x29, 2, 36},
+    {0x38, 3, 36},
   },
   /* 87 */
   {
-    {0x8003, 64},
-    {0x8006, 64},
-    {0x800a, 64},
-    {0x800f, 64},
-    {0x8018, 64},
-    {0x801f, 64},
-    {0x8029, 64},
-    {0xc038, 64},
-    {0x8003, 91},
-    {0x8006, 91},
-    {0x800a, 91},
-    {0x800f, 91},
-    {0x8018, 91},
-    {0x801f, 91},
-    {0x8029, 91},
-    {0xc038, 91},
+    {0x03, 2, 64},
+    {0x06, 2, 64},
+    {0x0a, 2, 64},
+    {0x0f, 2, 64},
+    {0x18, 2, 64},
+    {0x1f, 2, 64},
+    {0x29, 2, 64},
+    {0x38, 3, 64},
+    {0x03, 2, 91},
+    {0x06, 2, 91},
+    {0x0a, 2, 91},
+    {0x0f, 2, 91},
+    {0x18, 2, 91},
+    {0x1f, 2, 91},
+    {0x29, 2, 91},
+    {0x38, 3, 91},
   },
   /* 88 */
   {
-    {0x8002, 93},
-    {0x8009, 93},
-    {0x8017, 93},
-    {0xc028, 93},
-    {0x8002, 126},
-    {0x8009, 126},
-    {0x8017, 126},
-    {0xc028, 126},
-    {0x8001, 94},
-    {0xc016, 94},
-    {0x8001, 125},
-    {0xc016, 125},
-    {0xc000, 60},
-    {0xc000, 96},
-    {0xc000, 123},
-    {0x5f, 0},
+    {0x02, 2, 93},
+    {0x09, 2, 93},
+    {0x17, 2, 93},
+    {0x28, 3, 93},
+    {0x02, 2, 126},
+    {0x09, 2, 126},
+    {0x17, 2, 126},
+    {0x28, 3, 126},
+    {0x01, 2, 94},
+    {0x16, 3, 94},
+    {0x01, 2, 125},
+    {0x16, 3, 125},
+    {0x00, 3, 60},
+    {0x00, 3, 96},
+    {0x00, 3, 123},
+    {0x5f, 0, 0},
   },
   /* 89 */
   {
-    {0x8003, 93},
-    {0x8006, 93},
-    {0x800a, 93},
-    {0x800f, 93},
-    {0x8018, 93},
-    {0x801f, 93},
-    {0x8029, 93},
-    {0xc038, 93},
-    {0x8003, 126},
-    {0x8006, 126},
-    {0x800a, 126},
-    {0x800f, 126},
-    {0x8018, 126},
-    {0x801f, 126},
-    {0x8029, 126},
-    {0xc038, 126},
+    {0x03, 2, 93},
+    {0x06, 2, 93},
+    {0x0a, 2, 93},
+    {0x0f, 2, 93},
+    {0x18, 2, 93},
+    {0x1f, 2, 93},
+    {0x29, 2, 93},
+    {0x38, 3, 93},
+    {0x03, 2, 126},
+    {0x06, 2, 126},
+    {0x0a, 2, 126},
+    {0x0f, 2, 126},
+    {0x18, 2, 126},
+    {0x1f, 2, 126},
+    {0x29, 2, 126},
+    {0x38, 3, 126},
   },
   /* 90 */
   {
-    {0x8002, 94},
-    {0x8009, 94},
-    {0x8017, 94},
-    {0xc028, 94},
-    {0x8002, 125},
-    {0x8009, 125},
-    {0x8017, 125},
-    {0xc028, 125},
-    {0x8001, 60},
-    {0xc016, 60},
-    {0x8001, 96},
-    {0xc016, 96},
-    {0x8001, 123},
-    {0xc016, 123},
-    {0x60, 0},
-    {0x6e, 0},
+    {0x02, 2, 94},
+    {0x09, 2, 94},
+    {0x17, 2, 94},
+    {0x28, 3, 94},
+    {0x02, 2, 125},
+    {0x09, 2, 125},
+    {0x17, 2, 125},
+    {0x28, 3, 125},
+    {0x01, 2, 60},
+    {0x16, 3, 60},
+    {0x01, 2, 96},
+    {0x16, 3, 96},
+    {0x01, 2, 123},
+    {0x16, 3, 123},
+    {0x60, 0, 0},
+    {0x6e, 0, 0},
   },
   /* 91 */
   {
-    {0x8003, 94},
-    {0x8006, 94},
-    {0x800a, 94},
-    {0x800f, 94},
-    {0x8018, 94},
-    {0x801f, 94},
-    {0x8029, 94},
-    {0xc038, 94},
-    {0x8003, 125},
-    {0x8006, 125},
-    {0x800a, 125},
-    {0x800f, 125},
-    {0x8018, 125},
-    {0x801f, 125},
-    {0x8029, 125},
-    {0xc038, 125},
+    {0x03, 2, 94},
+    {0x06, 2, 94},
+    {0x0a, 2, 94},
+    {0x0f, 2, 94},
+    {0x18, 2, 94},
+    {0x1f, 2, 94},
+    {0x29, 2, 94},
+    {0x38, 3, 94},
+    {0x03, 2, 125},
+    {0x06, 2, 125},
+    {0x0a, 2, 125},
+    {0x0f, 2, 125},
+    {0x18, 2, 125},
+    {0x1f, 2, 125},
+    {0x29, 2, 125},
+    {0x38, 3, 125},
   },
   /* 92 */
   {
-    {0x8002, 60},
-    {0x8009, 60},
-    {0x8017, 60},
-    {0xc028, 60},
-    {0x8002, 96},
-    {0x8009, 96},
-    {0x8017, 96},
-    {0xc028, 96},
-    {0x8002, 123},
-    {0x8009, 123},
-    {0x8017, 123},
-    {0xc028, 123},
-    {0x61, 0},
-    {0x65, 0},
-    {0x6f, 0},
-    {0x85, 0},
+    {0x02, 2, 60},
+    {0x09, 2, 60},
+    {0x17, 2, 60},
+    {0x28, 3, 60},
+    {0x02, 2, 96},
+    {0x09, 2, 96},
+    {0x17, 2, 96},
+    {0x28, 3, 96},
+    {0x02, 2, 123},
+    {0x09, 2, 123},
+    {0x17, 2, 123},
+    {0x28, 3, 123},
+    {0x61, 0, 0},
+    {0x65, 0, 0},
+    {0x6f, 0, 0},
+    {0x85, 0, 0},
   },
   /* 93 */
   {
-    {0x8003, 60},
-    {0x8006, 60},
-    {0x800a, 60},
-    {0x800f, 60},
-    {0x8018, 60},
-    {0x801f, 60},
-    {0x8029, 60},
-    {0xc038, 60},
-    {0x8003, 96},
-    {0x8006, 96},
-    {0x800a, 96},
-    {0x800f, 96},
-    {0x8018, 96},
-    {0x801f, 96},
-    {0x8029, 96},
-    {0xc038, 96},
+    {0x03, 2, 60},
+    {0x06, 2, 60},
+    {0x0a, 2, 60},
+    {0x0f, 2, 60},
+    {0x18, 2, 60},
+    {0x1f, 2, 60},
+    {0x29, 2, 60},
+    {0x38, 3, 60},
+    {0x03, 2, 96},
+    {0x06, 2, 96},
+    {0x0a, 2, 96},
+    {0x0f, 2, 96},
+    {0x18, 2, 96},
+    {0x1f, 2, 96},
+    {0x29, 2, 96},
+    {0x38, 3, 96},
   },
   /* 94 */
   {
-    {0x8003, 123},
-    {0x8006, 123},
-    {0x800a, 123},
-    {0x800f, 123},
-    {0x8018, 123},
-    {0x801f, 123},
-    {0x8029, 123},
-    {0xc038, 123},
-    {0x62, 0},
-    {0x63, 0},
-    {0x66, 0},
-    {0x69, 0},
-    {0x70, 0},
-    {0x77, 0},
-    {0x86, 0},
-    {0x99, 0},
+    {0x03, 2, 123},
+    {0x06, 2, 123},
+    {0x0a, 2, 123},
+    {0x0f, 2, 123},
+    {0x18, 2, 123},
+    {0x1f, 2, 123},
+    {0x29, 2, 123},
+    {0x38, 3, 123},
+    {0x62, 0, 0},
+    {0x63, 0, 0},
+    {0x66, 0, 0},
+    {0x69, 0, 0},
+    {0x70, 0, 0},
+    {0x77, 0, 0},
+    {0x86, 0, 0},
+    {0x99, 0, 0},
   },
   /* 95 */
   {
-    {0xc000, 92},
-    {0xc000, 195},
-    {0xc000, 208},
-    {0x64, 0},
-    {0x67, 0},
-    {0x68, 0},
-    {0x6a, 0},
-    {0x6b, 0},
-    {0x71, 0},
-    {0x74, 0},
-    {0x78, 0},
-    {0x7e, 0},
-    {0x87, 0},
-    {0x8e, 0},
-    {0x9a, 0},
-    {0xa9, 0},
+    {0x00, 3, 92},
+    {0x00, 3, 195},
+    {0x00, 3, 208},
+    {0x64, 0, 0},
+    {0x67, 0, 0},
+    {0x68, 0, 0},
+    {0x6a, 0, 0},
+    {0x6b, 0, 0},
+    {0x71, 0, 0},
+    {0x74, 0, 0},
+    {0x78, 0, 0},
+    {0x7e, 0, 0},
+    {0x87, 0, 0},
+    {0x8e, 0, 0},
+    {0x9a, 0, 0},
+    {0xa9, 0, 0},
   },
   /* 96 */
   {
-    {0x8001, 92},
-    {0xc016, 92},
-    {0x8001, 195},
-    {0xc016, 195},
-    {0x8001, 208},
-    {0xc016, 208},
-    {0xc000, 128},
-    {0xc000, 130},
-    {0xc000, 131},
-    {0xc000, 162},
-    {0xc000, 184},
-    {0xc000, 194},
-    {0xc000, 224},
-    {0xc000, 226},
-    {0x6c, 0},
-    {0x6d, 0},
+    {0x01, 2, 92},
+    {0x16, 3, 92},
+    {0x01, 2, 195},
+    {0x16, 3, 195},
+    {0x01, 2, 208},
+    {0x16, 3, 208},
+    {0x00, 3, 128},
+    {0x00, 3, 130},
+    {0x00, 3, 131},
+    {0x00, 3, 162},
+    {0x00, 3, 184},
+    {0x00, 3, 194},
+    {0x00, 3, 224},
+    {0x00, 3, 226},
+    {0x6c, 0, 0},
+    {0x6d, 0, 0},
   },
   /* 97 */
   {
-    {0x8002, 92},
-    {0x8009, 92},
-    {0x8017, 92},
-    {0xc028, 92},
-    {0x8002, 195},
-    {0x8009, 195},
-    {0x8017, 195},
-    {0xc028, 195},
-    {0x8002, 208},
-    {0x8009, 208},
-    {0x8017, 208},
-    {0xc028, 208},
-    {0x8001, 128},
-    {0xc016, 128},
-    {0x8001, 130},
-    {0xc016, 130},
+    {0x02, 2, 92},
+    {0x09, 2, 92},
+    {0x17, 2, 92},
+    {0x28, 3, 92},
+    {0x02, 2, 195},
+    {0x09, 2, 195},
+    {0x17, 2, 195},
+    {0x28, 3, 195},
+    {0x02, 2, 208},
+    {0x09, 2, 208},
+    {0x17, 2, 208},
+    {0x28, 3, 208},
+    {0x01, 2, 128},
+    {0x16, 3, 128},
+    {0x01, 2, 130},
+    {0x16, 3, 130},
   },
   /* 98 */
   {
-    {0x8003, 92},
-    {0x8006, 92},
-    {0x800a, 92},
-    {0x800f, 92},
-    {0x8018, 92},
-    {0x801f, 92},
-    {0x8029, 92},
-    {0xc038, 92},
-    {0x8003, 195},
-    {0x8006, 195},
-    {0x800a, 195},
-    {0x800f, 195},
-    {0x8018, 195},
-    {0x801f, 195},
-    {0x8029, 195},
-    {0xc038, 195},
+    {0x03, 2, 92},
+    {0x06, 2, 92},
+    {0x0a, 2, 92},
+    {0x0f, 2, 92},
+    {0x18, 2, 92},
+    {0x1f, 2, 92},
+    {0x29, 2, 92},
+    {0x38, 3, 92},
+    {0x03, 2, 195},
+    {0x06, 2, 195},
+    {0x0a, 2, 195},
+    {0x0f, 2, 195},
+    {0x18, 2, 195},
+    {0x1f, 2, 195},
+    {0x29, 2, 195},
+    {0x38, 3, 195},
   },
   /* 99 */
   {
-    {0x8003, 208},
-    {0x8006, 208},
-    {0x800a, 208},
-    {0x800f, 208},
-    {0x8018, 208},
-    {0x801f, 208},
-    {0x8029, 208},
-    {0xc038, 208},
-    {0x8002, 128},
-    {0x8009, 128},
-    {0x8017, 128},
-    {0xc028, 128},
-    {0x8002, 130},
-    {0x8009, 130},
-    {0x8017, 130},
-    {0xc028, 130},
+    {0x03, 2, 208},
+    {0x06, 2, 208},
+    {0x0a, 2, 208},
+    {0x0f, 2, 208},
+    {0x18, 2, 208},
+    {0x1f, 2, 208},
+    {0x29, 2, 208},
+    {0x38, 3, 208},
+    {0x02, 2, 128},
+    {0x09, 2, 128},
+    {0x17, 2, 128},
+    {0x28, 3, 128},
+    {0x02, 2, 130},
+    {0x09, 2, 130},
+    {0x17, 2, 130},
+    {0x28, 3, 130},
   },
   /* 100 */
   {
-    {0x8003, 128},
-    {0x8006, 128},
-    {0x800a, 128},
-    {0x800f, 128},
-    {0x8018, 128},
-    {0x801f, 128},
-    {0x8029, 128},
-    {0xc038, 128},
-    {0x8003, 130},
-    {0x8006, 130},
-    {0x800a, 130},
-    {0x800f, 130},
-    {0x8018, 130},
-    {0x801f, 130},
-    {0x8029, 130},
-    {0xc038, 130},
+    {0x03, 2, 128},
+    {0x06, 2, 128},
+    {0x0a, 2, 128},
+    {0x0f, 2, 128},
+    {0x18, 2, 128},
+    {0x1f, 2, 128},
+    {0x29, 2, 128},
+    {0x38, 3, 128},
+    {0x03, 2, 130},
+    {0x06, 2, 130},
+    {0x0a, 2, 130},
+    {0x0f, 2, 130},
+    {0x18, 2, 130},
+    {0x1f, 2, 130},
+    {0x29, 2, 130},
+    {0x38, 3, 130},
   },
   /* 101 */
   {
-    {0x8001, 131},
-    {0xc016, 131},
-    {0x8001, 162},
-    {0xc016, 162},
-    {0x8001, 184},
-    {0xc016, 184},
-    {0x8001, 194},
-    {0xc016, 194},
-    {0x8001, 224},
-    {0xc016, 224},
-    {0x8001, 226},
-    {0xc016, 226},
-    {0xc000, 153},
-    {0xc000, 161},
-    {0xc000, 167},
-    {0xc000, 172},
+    {0x01, 2, 131},
+    {0x16, 3, 131},
+    {0x01, 2, 162},
+    {0x16, 3, 162},
+    {0x01, 2, 184},
+    {0x16, 3, 184},
+    {0x01, 2, 194},
+    {0x16, 3, 194},
+    {0x01, 2, 224},
+    {0x16, 3, 224},
+    {0x01, 2, 226},
+    {0x16, 3, 226},
+    {0x00, 3, 153},
+    {0x00, 3, 161},
+    {0x00, 3, 167},
+    {0x00, 3, 172},
   },
   /* 102 */
   {
-    {0x8002, 131},
-    {0x8009, 131},
-    {0x8017, 131},
-    {0xc028, 131},
-    {0x8002, 162},
-    {0x8009, 162},
-    {0x8017, 162},
-    {0xc028, 162},
-    {0x8002, 184},
-    {0x8009, 184},
-    {0x8017, 184},
-    {0xc028, 184},
-    {0x8002, 194},
-    {0x8009, 194},
-    {0x8017, 194},
-    {0xc028, 194},
+    {0x02, 2, 131},
+    {0x09, 2, 131},
+    {0x17, 2, 131},
+    {0x28, 3, 131},
+    {0x02, 2, 162},
+    {0x09, 2, 162},
+    {0x17, 2, 162},
+    {0x28, 3, 162},
+    {0x02, 2, 184},
+    {0x09, 2, 184},
+    {0x17, 2, 184},
+    {0x28, 3, 184},
+    {0x02, 2, 194},
+    {0x09, 2, 194},
+    {0x17, 2, 194},
+    {0x28, 3, 194},
   },
   /* 103 */
   {
-    {0x8003, 131},
-    {0x8006, 131},
-    {0x800a, 131},
-    {0x800f, 131},
-    {0x8018, 131},
-    {0x801f, 131},
-    {0x8029, 131},
-    {0xc038, 131},
-    {0x8003, 162},
-    {0x8006, 162},
-    {0x800a, 162},
-    {0x800f, 162},
-    {0x8018, 162},
-    {0x801f, 162},
-    {0x8029, 162},
-    {0xc038, 162},
+    {0x03, 2, 131},
+    {0x06, 2, 131},
+    {0x0a, 2, 131},
+    {0x0f, 2, 131},
+    {0x18, 2, 131},
+    {0x1f, 2, 131},
+    {0x29, 2, 131},
+    {0x38, 3, 131},
+    {0x03, 2, 162},
+    {0x06, 2, 162},
+    {0x0a, 2, 162},
+    {0x0f, 2, 162},
+    {0x18, 2, 162},
+    {0x1f, 2, 162},
+    {0x29, 2, 162},
+    {0x38, 3, 162},
   },
   /* 104 */
   {
-    {0x8003, 184},
-    {0x8006, 184},
-    {0x800a, 184},
-    {0x800f, 184},
-    {0x8018, 184},
-    {0x801f, 184},
-    {0x8029, 184},
-    {0xc038, 184},
-    {0x8003, 194},
-    {0x8006, 194},
-    {0x800a, 194},
-    {0x800f, 194},
-    {0x8018, 194},
-    {0x801f, 194},
-    {0x8029, 194},
-    {0xc038, 194},
+    {0x03, 2, 184},
+    {0x06, 2, 184},
+    {0x0a, 2, 184},
+    {0x0f, 2, 184},
+    {0x18, 2, 184},
+    {0x1f, 2, 184},
+    {0x29, 2, 184},
+    {0x38, 3, 184},
+    {0x03, 2, 194},
+    {0x06, 2, 194},
+    {0x0a, 2, 194},
+    {0x0f, 2, 194},
+    {0x18, 2, 194},
+    {0x1f, 2, 194},
+    {0x29, 2, 194},
+    {0x38, 3, 194},
   },
   /* 105 */
   {
-    {0x8002, 224},
-    {0x8009, 224},
-    {0x8017, 224},
-    {0xc028, 224},
-    {0x8002, 226},
-    {0x8009, 226},
-    {0x8017, 226},
-    {0xc028, 226},
-    {0x8001, 153},
-    {0xc016, 153},
-    {0x8001, 161},
-    {0xc016, 161},
-    {0x8001, 167},
-    {0xc016, 167},
-    {0x8001, 172},
-    {0xc016, 172},
+    {0x02, 2, 224},
+    {0x09, 2, 224},
+    {0x17, 2, 224},
+    {0x28, 3, 224},
+    {0x02, 2, 226},
+    {0x09, 2, 226},
+    {0x17, 2, 226},
+    {0x28, 3, 226},
+    {0x01, 2, 153},
+    {0x16, 3, 153},
+    {0x01, 2, 161},
+    {0x16, 3, 161},
+    {0x01, 2, 167},
+    {0x16, 3, 167},
+    {0x01, 2, 172},
+    {0x16, 3, 172},
   },
   /* 106 */
   {
-    {0x8003, 224},
-    {0x8006, 224},
-    {0x800a, 224},
-    {0x800f, 224},
-    {0x8018, 224},
-    {0x801f, 224},
-    {0x8029, 224},
-    {0xc038, 224},
-    {0x8003, 226},
-    {0x8006, 226},
-    {0x800a, 226},
-    {0x800f, 226},
-    {0x8018, 226},
-    {0x801f, 226},
-    {0x8029, 226},
-    {0xc038, 226},
+    {0x03, 2, 224},
+    {0x06, 2, 224},
+    {0x0a, 2, 224},
+    {0x0f, 2, 224},
+    {0x18, 2, 224},
+    {0x1f, 2, 224},
+    {0x29, 2, 224},
+    {0x38, 3, 224},
+    {0x03, 2, 226},
+    {0x06, 2, 226},
+    {0x0a, 2, 226},
+    {0x0f, 2, 226},
+    {0x18, 2, 226},
+    {0x1f, 2, 226},
+    {0x29, 2, 226},
+    {0x38, 3, 226},
   },
   /* 107 */
   {
-    {0x8002, 153},
-    {0x8009, 153},
-    {0x8017, 153},
-    {0xc028, 153},
-    {0x8002, 161},
-    {0x8009, 161},
-    {0x8017, 161},
-    {0xc028, 161},
-    {0x8002, 167},
-    {0x8009, 167},
-    {0x8017, 167},
-    {0xc028, 167},
-    {0x8002, 172},
-    {0x8009, 172},
-    {0x8017, 172},
-    {0xc028, 172},
+    {0x02, 2, 153},
+    {0x09, 2, 153},
+    {0x17, 2, 153},
+    {0x28, 3, 153},
+    {0x02, 2, 161},
+    {0x09, 2, 161},
+    {0x17, 2, 161},
+    {0x28, 3, 161},
+    {0x02, 2, 167},
+    {0x09, 2, 167},
+    {0x17, 2, 167},
+    {0x28, 3, 167},
+    {0x02, 2, 172},
+    {0x09, 2, 172},
+    {0x17, 2, 172},
+    {0x28, 3, 172},
   },
   /* 108 */
   {
-    {0x8003, 153},
-    {0x8006, 153},
-    {0x800a, 153},
-    {0x800f, 153},
-    {0x8018, 153},
-    {0x801f, 153},
-    {0x8029, 153},
-    {0xc038, 153},
-    {0x8003, 161},
-    {0x8006, 161},
-    {0x800a, 161},
-    {0x800f, 161},
-    {0x8018, 161},
-    {0x801f, 161},
-    {0x8029, 161},
-    {0xc038, 161},
+    {0x03, 2, 153},
+    {0x06, 2, 153},
+    {0x0a, 2, 153},
+    {0x0f, 2, 153},
+    {0x18, 2, 153},
+    {0x1f, 2, 153},
+    {0x29, 2, 153},
+    {0x38, 3, 153},
+    {0x03, 2, 161},
+    {0x06, 2, 161},
+    {0x0a, 2, 161},
+    {0x0f, 2, 161},
+    {0x18, 2, 161},
+    {0x1f, 2, 161},
+    {0x29, 2, 161},
+    {0x38, 3, 161},
   },
   /* 109 */
   {
-    {0x8003, 167},
-    {0x8006, 167},
-    {0x800a, 167},
-    {0x800f, 167},
-    {0x8018, 167},
-    {0x801f, 167},
-    {0x8029, 167},
-    {0xc038, 167},
-    {0x8003, 172},
-    {0x8006, 172},
-    {0x800a, 172},
-    {0x800f, 172},
-    {0x8018, 172},
-    {0x801f, 172},
-    {0x8029, 172},
-    {0xc038, 172},
+    {0x03, 2, 167},
+    {0x06, 2, 167},
+    {0x0a, 2, 167},
+    {0x0f, 2, 167},
+    {0x18, 2, 167},
+    {0x1f, 2, 167},
+    {0x29, 2, 167},
+    {0x38, 3, 167},
+    {0x03, 2, 172},
+    {0x06, 2, 172},
+    {0x0a, 2, 172},
+    {0x0f, 2, 172},
+    {0x18, 2, 172},
+    {0x1f, 2, 172},
+    {0x29, 2, 172},
+    {0x38, 3, 172},
   },
   /* 110 */
   {
-    {0x72, 0},
-    {0x73, 0},
-    {0x75, 0},
-    {0x76, 0},
-    {0x79, 0},
-    {0x7b, 0},
-    {0x7f, 0},
-    {0x82, 0},
-    {0x88, 0},
-    {0x8b, 0},
-    {0x8f, 0},
-    {0x92, 0},
-    {0x9b, 0},
-    {0xa2, 0},
-    {0xaa, 0},
-    {0xb4, 0},
+    {0x72, 0, 0},
+    {0x73, 0, 0},
+    {0x75, 0, 0},
+    {0x76, 0, 0},
+    {0x79, 0, 0},
+    {0x7b, 0, 0},
+    {0x7f, 0, 0},
+    {0x82, 0, 0},
+    {0x88, 0, 0},
+    {0x8b, 0, 0},
+    {0x8f, 0, 0},
+    {0x92, 0, 0},
+    {0x9b, 0, 0},
+    {0xa2, 0, 0},
+    {0xaa, 0, 0},
+    {0xb4, 0, 0},
   },
   /* 111 */
   {
-    {0xc000, 176},
-    {0xc000, 177},
-    {0xc000, 179},
-    {0xc000, 209},
-    {0xc000, 216},
-    {0xc000, 217},
-    {0xc000, 227},
-    {0xc000, 229},
-    {0xc000, 230},
-    {0x7a, 0},
-    {0x7c, 0},
-    {0x7d, 0},
-    {0x80, 0},
-    {0x81, 0},
-    {0x83, 0},
-    {0x84, 0},
+    {0x00, 3, 176},
+    {0x00, 3, 177},
+    {0x00, 3, 179},
+    {0x00, 3, 209},
+    {0x00, 3, 216},
+    {0x00, 3, 217},
+    {0x00, 3, 227},
+    {0x00, 3, 229},
+    {0x00, 3, 230},
+    {0x7a, 0, 0},
+    {0x7c, 0, 0},
+    {0x7d, 0, 0},
+    {0x80, 0, 0},
+    {0x81, 0, 0},
+    {0x83, 0, 0},
+    {0x84, 0, 0},
   },
   /* 112 */
   {
-    {0x8001, 176},
-    {0xc016, 176},
-    {0x8001, 177},
-    {0xc016, 177},
-    {0x8001, 179},
-    {0xc016, 179},
-    {0x8001, 209},
-    {0xc016, 209},
-    {0x8001, 216},
-    {0xc016, 216},
-    {0x8001, 217},
-    {0xc016, 217},
-    {0x8001, 227},
-    {0xc016, 227},
-    {0x8001, 229},
-    {0xc016, 229},
+    {0x01, 2, 176},
+    {0x16, 3, 176},
+    {0x01, 2, 177},
+    {0x16, 3, 177},
+    {0x01, 2, 179},
+    {0x16, 3, 179},
+    {0x01, 2, 209},
+    {0x16, 3, 209},
+    {0x01, 2, 216},
+    {0x16, 3, 216},
+    {0x01, 2, 217},
+    {0x16, 3, 217},
+    {0x01, 2, 227},
+    {0x16, 3, 227},
+    {0x01, 2, 229},
+    {0x16, 3, 229},
   },
   /* 113 */
   {
-    {0x8002, 176},
-    {0x8009, 176},
-    {0x8017, 176},
-    {0xc028, 176},
-    {0x8002, 177},
-    {0x8009, 177},
-    {0x8017, 177},
-    {0xc028, 177},
-    {0x8002, 179},
-    {0x8009, 179},
-    {0x8017, 179},
-    {0xc028, 179},
-    {0x8002, 209},
-    {0x8009, 209},
-    {0x8017, 209},
-    {0xc028, 209},
+    {0x02, 2, 176},
+    {0x09, 2, 176},
+    {0x17, 2, 176},
+    {0x28, 3, 176},
+    {0x02, 2, 177},
+    {0x09, 2, 177},
+    {0x17, 2, 177},
+    {0x28, 3, 177},
+    {0x02, 2, 179},
+    {0x09, 2, 179},
+    {0x17, 2, 179},
+    {0x28, 3, 179},
+    {0x02, 2, 209},
+    {0x09, 2, 209},
+    {0x17, 2, 209},
+    {0x28, 3, 209},
   },
   /* 114 */
   {
-    {0x8003, 176},
-    {0x8006, 176},
-    {0x800a, 176},
-    {0x800f, 176},
-    {0x8018, 176},
-    {0x801f, 176},
-    {0x8029, 176},
-    {0xc038, 176},
-    {0x8003, 177},
-    {0x8006, 177},
-    {0x800a, 177},
-    {0x800f, 177},
-    {0x8018, 177},
-    {0x801f, 177},
-    {0x8029, 177},
-    {0xc038, 177},
+    {0x03, 2, 176},
+    {0x06, 2, 176},
+    {0x0a, 2, 176},
+    {0x0f, 2, 176},
+    {0x18, 2, 176},
+    {0x1f, 2, 176},
+    {0x29, 2, 176},
+    {0x38, 3, 176},
+    {0x03, 2, 177},
+    {0x06, 2, 177},
+    {0x0a, 2, 177},
+    {0x0f, 2, 177},
+    {0x18, 2, 177},
+    {0x1f, 2, 177},
+    {0x29, 2, 177},
+    {0x38, 3, 177},
   },
   /* 115 */
   {
-    {0x8003, 179},
-    {0x8006, 179},
-    {0x800a, 179},
-    {0x800f, 179},
-    {0x8018, 179},
-    {0x801f, 179},
-    {0x8029, 179},
-    {0xc038, 179},
-    {0x8003, 209},
-    {0x8006, 209},
-    {0x800a, 209},
-    {0x800f, 209},
-    {0x8018, 209},
-    {0x801f, 209},
-    {0x8029, 209},
-    {0xc038, 209},
+    {0x03, 2, 179},
+    {0x06, 2, 179},
+    {0x0a, 2, 179},
+    {0x0f, 2, 179},
+    {0x18, 2, 179},
+    {0x1f, 2, 179},
+    {0x29, 2, 179},
+    {0x38, 3, 179},
+    {0x03, 2, 209},
+    {0x06, 2, 209},
+    {0x0a, 2, 209},
+    {0x0f, 2, 209},
+    {0x18, 2, 209},
+    {0x1f, 2, 209},
+    {0x29, 2, 209},
+    {0x38, 3, 209},
   },
   /* 116 */
   {
-    {0x8002, 216},
-    {0x8009, 216},
-    {0x8017, 216},
-    {0xc028, 216},
-    {0x8002, 217},
-    {0x8009, 217},
-    {0x8017, 217},
-    {0xc028, 217},
-    {0x8002, 227},
-    {0x8009, 227},
-    {0x8017, 227},
-    {0xc028, 227},
-    {0x8002, 229},
-    {0x8009, 229},
-    {0x8017, 229},
-    {0xc028, 229},
+    {0x02, 2, 216},
+    {0x09, 2, 216},
+    {0x17, 2, 216},
+    {0x28, 3, 216},
+    {0x02, 2, 217},
+    {0x09, 2, 217},
+    {0x17, 2, 217},
+    {0x28, 3, 217},
+    {0x02, 2, 227},
+    {0x09, 2, 227},
+    {0x17, 2, 227},
+    {0x28, 3, 227},
+    {0x02, 2, 229},
+    {0x09, 2, 229},
+    {0x17, 2, 229},
+    {0x28, 3, 229},
   },
   /* 117 */
   {
-    {0x8003, 216},
-    {0x8006, 216},
-    {0x800a, 216},
-    {0x800f, 216},
-    {0x8018, 216},
-    {0x801f, 216},
-    {0x8029, 216},
-    {0xc038, 216},
-    {0x8003, 217},
-    {0x8006, 217},
-    {0x800a, 217},
-    {0x800f, 217},
-    {0x8018, 217},
-    {0x801f, 217},
-    {0x8029, 217},
-    {0xc038, 217},
+    {0x03, 2, 216},
+    {0x06, 2, 216},
+    {0x0a, 2, 216},
+    {0x0f, 2, 216},
+    {0x18, 2, 216},
+    {0x1f, 2, 216},
+    {0x29, 2, 216},
+    {0x38, 3, 216},
+    {0x03, 2, 217},
+    {0x06, 2, 217},
+    {0x0a, 2, 217},
+    {0x0f, 2, 217},
+    {0x18, 2, 217},
+    {0x1f, 2, 217},
+    {0x29, 2, 217},
+    {0x38, 3, 217},
   },
   /* 118 */
   {
-    {0x8003, 227},
-    {0x8006, 227},
-    {0x800a, 227},
-    {0x800f, 227},
-    {0x8018, 227},
-    {0x801f, 227},
-    {0x8029, 227},
-    {0xc038, 227},
-    {0x8003, 229},
-    {0x8006, 229},
-    {0x800a, 229},
-    {0x800f, 229},
-    {0x8018, 229},
-    {0x801f, 229},
-    {0x8029, 229},
-    {0xc038, 229},
+    {0x03, 2, 227},
+    {0x06, 2, 227},
+    {0x0a, 2, 227},
+    {0x0f, 2, 227},
+    {0x18, 2, 227},
+    {0x1f, 2, 227},
+    {0x29, 2, 227},
+    {0x38, 3, 227},
+    {0x03, 2, 229},
+    {0x06, 2, 229},
+    {0x0a, 2, 229},
+    {0x0f, 2, 229},
+    {0x18, 2, 229},
+    {0x1f, 2, 229},
+    {0x29, 2, 229},
+    {0x38, 3, 229},
   },
   /* 119 */
   {
-    {0x8001, 230},
-    {0xc016, 230},
-    {0xc000, 129},
-    {0xc000, 132},
-    {0xc000, 133},
-    {0xc000, 134},
-    {0xc000, 136},
-    {0xc000, 146},
-    {0xc000, 154},
-    {0xc000, 156},
-    {0xc000, 160},
-    {0xc000, 163},
-    {0xc000, 164},
-    {0xc000, 169},
-    {0xc000, 170},
-    {0xc000, 173},
+    {0x01, 2, 230},
+    {0x16, 3, 230},
+    {0x00, 3, 129},
+    {0x00, 3, 132},
+    {0x00, 3, 133},
+    {0x00, 3, 134},
+    {0x00, 3, 136},
+    {0x00, 3, 146},
+    {0x00, 3, 154},
+    {0x00, 3, 156},
+    {0x00, 3, 160},
+    {0x00, 3, 163},
+    {0x00, 3, 164},
+    {0x00, 3, 169},
+    {0x00, 3, 170},
+    {0x00, 3, 173},
   },
   /* 120 */
   {
-    {0x8002, 230},
-    {0x8009, 230},
-    {0x8017, 230},
-    {0xc028, 230},
-    {0x8001, 129},
-    {0xc016, 129},
-    {0x8001, 132},
-    {0xc016, 132},
-    {0x8001, 133},
-    {0xc016, 133},
-    {0x8001, 134},
-    {0xc016, 134},
-    {0x8001, 136},
-    {0xc016, 136},
-    {0x8001, 146},
-    {0xc016, 146},
+    {0x02, 2, 230},
+    {0x09, 2, 230},
+    {0x17, 2, 230},
+    {0x28, 3, 230},
+    {0x01, 2, 129},
+    {0x16, 3, 129},
+    {0x01, 2, 132},
+    {0x16, 3, 132},
+    {0x01, 2, 133},
+    {0x16, 3, 133},
+    {0x01, 2, 134},
+    {0x16, 3, 134},
+    {0x01, 2, 136},
+    {0x16, 3, 136},
+    {0x01, 2, 146},
+    {0x16, 3, 146},
   },
   /* 121 */
   {
-    {0x8003, 230},
-    {0x8006, 230},
-    {0x800a, 230},
-    {0x800f, 230},
-    {0x8018, 230},
-    {0x801f, 230},
-    {0x8029, 230},
-    {0xc038, 230},
-    {0x8002, 129},
-    {0x8009, 129},
-    {0x8017, 129},
-    {0xc028, 129},
-    {0x8002, 132},
-    {0x8009, 132},
-    {0x8017, 132},
-    {0xc028, 132},
+    {0x03, 2, 230},
+    {0x06, 2, 230},
+    {0x0a, 2, 230},
+    {0x0f, 2, 230},
+    {0x18, 2, 230},
+    {0x1f, 2, 230},
+    {0x29, 2, 230},
+    {0x38, 3, 230},
+    {0x02, 2, 129},
+    {0x09, 2, 129},
+    {0x17, 2, 129},
+    {0x28, 3, 129},
+    {0x02, 2, 132},
+    {0x09, 2, 132},
+    {0x17, 2, 132},
+    {0x28, 3, 132},
   },
   /* 122 */
   {
-    {0x8003, 129},
-    {0x8006, 129},
-    {0x800a, 129},
-    {0x800f, 129},
-    {0x8018, 129},
-    {0x801f, 129},
-    {0x8029, 129},
-    {0xc038, 129},
-    {0x8003, 132},
-    {0x8006, 132},
-    {0x800a, 132},
-    {0x800f, 132},
-    {0x8018, 132},
-    {0x801f, 132},
-    {0x8029, 132},
-    {0xc038, 132},
+    {0x03, 2, 129},
+    {0x06, 2, 129},
+    {0x0a, 2, 129},
+    {0x0f, 2, 129},
+    {0x18, 2, 129},
+    {0x1f, 2, 129},
+    {0x29, 2, 129},
+    {0x38, 3, 129},
+    {0x03, 2, 132},
+    {0x06, 2, 132},
+    {0x0a, 2, 132},
+    {0x0f, 2, 132},
+    {0x18, 2, 132},
+    {0x1f, 2, 132},
+    {0x29, 2, 132},
+    {0x38, 3, 132},
   },
   /* 123 */
   {
-    {0x8002, 133},
-    {0x8009, 133},
-    {0x8017, 133},
-    {0xc028, 133},
-    {0x8002, 134},
-    {0x8009, 134},
-    {0x8017, 134},
-    {0xc028, 134},
-    {0x8002, 136},
-    {0x8009, 136},
-    {0x8017, 136},
-    {0xc028, 136},
-    {0x8002, 146},
-    {0x8009, 146},
-    {0x8017, 146},
-    {0xc028, 146},
+    {0x02, 2, 133},
+    {0x09, 2, 133},
+    {0x17, 2, 133},
+    {0x28, 3, 133},
+    {0x02, 2, 134},
+    {0x09, 2, 134},
+    {0x17, 2, 134},
+    {0x28, 3, 134},
+    {0x02, 2, 136},
+    {0x09, 2, 136},
+    {0x17, 2, 136},
+    {0x28, 3, 136},
+    {0x02, 2, 146},
+    {0x09, 2, 146},
+    {0x17, 2, 146},
+    {0x28, 3, 146},
   },
   /* 124 */
   {
-    {0x8003, 133},
-    {0x8006, 133},
-    {0x800a, 133},
-    {0x800f, 133},
-    {0x8018, 133},
-    {0x801f, 133},
-    {0x8029, 133},
-    {0xc038, 133},
-    {0x8003, 134},
-    {0x8006, 134},
-    {0x800a, 134},
-    {0x800f, 134},
-    {0x8018, 134},
-    {0x801f, 134},
-    {0x8029, 134},
-    {0xc038, 134},
+    {0x03, 2, 133},
+    {0x06, 2, 133},
+    {0x0a, 2, 133},
+    {0x0f, 2, 133},
+    {0x18, 2, 133},
+    {0x1f, 2, 133},
+    {0x29, 2, 133},
+    {0x38, 3, 133},
+    {0x03, 2, 134},
+    {0x06, 2, 134},
+    {0x0a, 2, 134},
+    {0x0f, 2, 134},
+    {0x18, 2, 134},
+    {0x1f, 2, 134},
+    {0x29, 2, 134},
+    {0x38, 3, 134},
   },
   /* 125 */
   {
-    {0x8003, 136},
-    {0x8006, 136},
-    {0x800a, 136},
-    {0x800f, 136},
-    {0x8018, 136},
-    {0x801f, 136},
-    {0x8029, 136},
-    {0xc038, 136},
-    {0x8003, 146},
-    {0x8006, 146},
-    {0x800a, 146},
-    {0x800f, 146},
-    {0x8018, 146},
-    {0x801f, 146},
-    {0x8029, 146},
-    {0xc038, 146},
+    {0x03, 2, 136},
+    {0x06, 2, 136},
+    {0x0a, 2, 136},
+    {0x0f, 2, 136},
+    {0x18, 2, 136},
+    {0x1f, 2, 136},
+    {0x29, 2, 136},
+    {0x38, 3, 136},
+    {0x03, 2, 146},
+    {0x06, 2, 146},
+    {0x0a, 2, 146},
+    {0x0f, 2, 146},
+    {0x18, 2, 146},
+    {0x1f, 2, 146},
+    {0x29, 2, 146},
+    {0x38, 3, 146},
   },
   /* 126 */
   {
-    {0x8001, 154},
-    {0xc016, 154},
-    {0x8001, 156},
-    {0xc016, 156},
-    {0x8001, 160},
-    {0xc016, 160},
-    {0x8001, 163},
-    {0xc016, 163},
-    {0x8001, 164},
-    {0xc016, 164},
-    {0x8001, 169},
-    {0xc016, 169},
-    {0x8001, 170},
-    {0xc016, 170},
-    {0x8001, 173},
-    {0xc016, 173},
+    {0x01, 2, 154},
+    {0x16, 3, 154},
+    {0x01, 2, 156},
+    {0x16, 3, 156},
+    {0x01, 2, 160},
+    {0x16, 3, 160},
+    {0x01, 2, 163},
+    {0x16, 3, 163},
+    {0x01, 2, 164},
+    {0x16, 3, 164},
+    {0x01, 2, 169},
+    {0x16, 3, 169},
+    {0x01, 2, 170},
+    {0x16, 3, 170},
+    {0x01, 2, 173},
+    {0x16, 3, 173},
   },
   /* 127 */
   {
-    {0x8002, 154},
-    {0x8009, 154},
-    {0x8017, 154},
-    {0xc028, 154},
-    {0x8002, 156},
-    {0x8009, 156},
-    {0x8017, 156},
-    {0xc028, 156},
-    {0x8002, 160},
-    {0x8009, 160},
-    {0x8017, 160},
-    {0xc028, 160},
-    {0x8002, 163},
-    {0x8009, 163},
-    {0x8017, 163},
-    {0xc028, 163},
+    {0x02, 2, 154},
+    {0x09, 2, 154},
+    {0x17, 2, 154},
+    {0x28, 3, 154},
+    {0x02, 2, 156},
+    {0x09, 2, 156},
+    {0x17, 2, 156},
+    {0x28, 3, 156},
+    {0x02, 2, 160},
+    {0x09, 2, 160},
+    {0x17, 2, 160},
+    {0x28, 3, 160},
+    {0x02, 2, 163},
+    {0x09, 2, 163},
+    {0x17, 2, 163},
+    {0x28, 3, 163},
   },
   /* 128 */
   {
-    {0x8003, 154},
-    {0x8006, 154},
-    {0x800a, 154},
-    {0x800f, 154},
-    {0x8018, 154},
-    {0x801f, 154},
-    {0x8029, 154},
-    {0xc038, 154},
-    {0x8003, 156},
-    {0x8006, 156},
-    {0x800a, 156},
-    {0x800f, 156},
-    {0x8018, 156},
-    {0x801f, 156},
-    {0x8029, 156},
-    {0xc038, 156},
+    {0x03, 2, 154},
+    {0x06, 2, 154},
+    {0x0a, 2, 154},
+    {0x0f, 2, 154},
+    {0x18, 2, 154},
+    {0x1f, 2, 154},
+    {0x29, 2, 154},
+    {0x38, 3, 154},
+    {0x03, 2, 156},
+    {0x06, 2, 156},
+    {0x0a, 2, 156},
+    {0x0f, 2, 156},
+    {0x18, 2, 156},
+    {0x1f, 2, 156},
+    {0x29, 2, 156},
+    {0x38, 3, 156},
   },
   /* 129 */
   {
-    {0x8003, 160},
-    {0x8006, 160},
-    {0x800a, 160},
-    {0x800f, 160},
-    {0x8018, 160},
-    {0x801f, 160},
-    {0x8029, 160},
-    {0xc038, 160},
-    {0x8003, 163},
-    {0x8006, 163},
-    {0x800a, 163},
-    {0x800f, 163},
-    {0x8018, 163},
-    {0x801f, 163},
-    {0x8029, 163},
-    {0xc038, 163},
+    {0x03, 2, 160},
+    {0x06, 2, 160},
+    {0x0a, 2, 160},
+    {0x0f, 2, 160},
+    {0x18, 2, 160},
+    {0x1f, 2, 160},
+    {0x29, 2, 160},
+    {0x38, 3, 160},
+    {0x03, 2, 163},
+    {0x06, 2, 163},
+    {0x0a, 2, 163},
+    {0x0f, 2, 163},
+    {0x18, 2, 163},
+    {0x1f, 2, 163},
+    {0x29, 2, 163},
+    {0x38, 3, 163},
   },
   /* 130 */
   {
-    {0x8002, 164},
-    {0x8009, 164},
-    {0x8017, 164},
-    {0xc028, 164},
-    {0x8002, 169},
-    {0x8009, 169},
-    {0x8017, 169},
-    {0xc028, 169},
-    {0x8002, 170},
-    {0x8009, 170},
-    {0x8017, 170},
-    {0xc028, 170},
-    {0x8002, 173},
-    {0x8009, 173},
-    {0x8017, 173},
-    {0xc028, 173},
+    {0x02, 2, 164},
+    {0x09, 2, 164},
+    {0x17, 2, 164},
+    {0x28, 3, 164},
+    {0x02, 2, 169},
+    {0x09, 2, 169},
+    {0x17, 2, 169},
+    {0x28, 3, 169},
+    {0x02, 2, 170},
+    {0x09, 2, 170},
+    {0x17, 2, 170},
+    {0x28, 3, 170},
+    {0x02, 2, 173},
+    {0x09, 2, 173},
+    {0x17, 2, 173},
+    {0x28, 3, 173},
   },
   /* 131 */
   {
-    {0x8003, 164},
-    {0x8006, 164},
-    {0x800a, 164},
-    {0x800f, 164},
-    {0x8018, 164},
-    {0x801f, 164},
-    {0x8029, 164},
-    {0xc038, 164},
-    {0x8003, 169},
-    {0x8006, 169},
-    {0x800a, 169},
-    {0x800f, 169},
-    {0x8018, 169},
-    {0x801f, 169},
-    {0x8029, 169},
-    {0xc038, 169},
+    {0x03, 2, 164},
+    {0x06, 2, 164},
+    {0x0a, 2, 164},
+    {0x0f, 2, 164},
+    {0x18, 2, 164},
+    {0x1f, 2, 164},
+    {0x29, 2, 164},
+    {0x38, 3, 164},
+    {0x03, 2, 169},
+    {0x06, 2, 169},
+    {0x0a, 2, 169},
+    {0x0f, 2, 169},
+    {0x18, 2, 169},
+    {0x1f, 2, 169},
+    {0x29, 2, 169},
+    {0x38, 3, 169},
   },
   /* 132 */
   {
-    {0x8003, 170},
-    {0x8006, 170},
-    {0x800a, 170},
-    {0x800f, 170},
-    {0x8018, 170},
-    {0x801f, 170},
-    {0x8029, 170},
-    {0xc038, 170},
-    {0x8003, 173},
-    {0x8006, 173},
-    {0x800a, 173},
-    {0x800f, 173},
-    {0x8018, 173},
-    {0x801f, 173},
-    {0x8029, 173},
-    {0xc038, 173},
+    {0x03, 2, 170},
+    {0x06, 2, 170},
+    {0x0a, 2, 170},
+    {0x0f, 2, 170},
+    {0x18, 2, 170},
+    {0x1f, 2, 170},
+    {0x29, 2, 170},
+    {0x38, 3, 170},
+    {0x03, 2, 173},
+    {0x06, 2, 173},
+    {0x0a, 2, 173},
+    {0x0f, 2, 173},
+    {0x18, 2, 173},
+    {0x1f, 2, 173},
+    {0x29, 2, 173},
+    {0x38, 3, 173},
   },
   /* 133 */
   {
-    {0x89, 0},
-    {0x8a, 0},
-    {0x8c, 0},
-    {0x8d, 0},
-    {0x90, 0},
-    {0x91, 0},
-    {0x93, 0},
-    {0x96, 0},
-    {0x9c, 0},
-    {0x9f, 0},
-    {0xa3, 0},
-    {0xa6, 0},
-    {0xab, 0},
-    {0xae, 0},
-    {0xb5, 0},
-    {0xbe, 0},
+    {0x89, 0, 0},
+    {0x8a, 0, 0},
+    {0x8c, 0, 0},
+    {0x8d, 0, 0},
+    {0x90, 0, 0},
+    {0x91, 0, 0},
+    {0x93, 0, 0},
+    {0x96, 0, 0},
+    {0x9c, 0, 0},
+    {0x9f, 0, 0},
+    {0xa3, 0, 0},
+    {0xa6, 0, 0},
+    {0xab, 0, 0},
+    {0xae, 0, 0},
+    {0xb5, 0, 0},
+    {0xbe, 0, 0},
   },
   /* 134 */
   {
-    {0xc000, 178},
-    {0xc000, 181},
-    {0xc000, 185},
-    {0xc000, 186},
-    {0xc000, 187},
-    {0xc000, 189},
-    {0xc000, 190},
-    {0xc000, 196},
-    {0xc000, 198},
-    {0xc000, 228},
-    {0xc000, 232},
-    {0xc000, 233},
-    {0x94, 0},
-    {0x95, 0},
-    {0x97, 0},
-    {0x98, 0},
+    {0x00, 3, 178},
+    {0x00, 3, 181},
+    {0x00, 3, 185},
+    {0x00, 3, 186},
+    {0x00, 3, 187},
+    {0x00, 3, 189},
+    {0x00, 3, 190},
+    {0x00, 3, 196},
+    {0x00, 3, 198},
+    {0x00, 3, 228},
+    {0x00, 3, 232},
+    {0x00, 3, 233},
+    {0x94, 0, 0},
+    {0x95, 0, 0},
+    {0x97, 0, 0},
+    {0x98, 0, 0},
   },
   /* 135 */
   {
-    {0x8001, 178},
-    {0xc016, 178},
-    {0x8001, 181},
-    {0xc016, 181},
-    {0x8001, 185},
-    {0xc016, 185},
-    {0x8001, 186},
-    {0xc016, 186},
-    {0x8001, 187},
-    {0xc016, 187},
-    {0x8001, 189},
-    {0xc016, 189},
-    {0x8001, 190},
-    {0xc016, 190},
-    {0x8001, 196},
-    {0xc016, 196},
+    {0x01, 2, 178},
+    {0x16, 3, 178},
+    {0x01, 2, 181},
+    {0x16, 3, 181},
+    {0x01, 2, 185},
+    {0x16, 3, 185},
+    {0x01, 2, 186},
+    {0x16, 3, 186},
+    {0x01, 2, 187},
+    {0x16, 3, 187},
+    {0x01, 2, 189},
+    {0x16, 3, 189},
+    {0x01, 2, 190},
+    {0x16, 3, 190},
+    {0x01, 2, 196},
+    {0x16, 3, 196},
   },
   /* 136 */
   {
-    {0x8002, 178},
-    {0x8009, 178},
-    {0x8017, 178},
-    {0xc028, 178},
-    {0x8002, 181},
-    {0x8009, 181},
-    {0x8017, 181},
-    {0xc028, 181},
-    {0x8002, 185},
-    {0x8009, 185},
-    {0x8017, 185},
-    {0xc028, 185},
-    {0x8002, 186},
-    {0x8009, 186},
-    {0x8017, 186},
-    {0xc028, 186},
+    {0x02, 2, 178},
+    {0x09, 2, 178},
+    {0x17, 2, 178},
+    {0x28, 3, 178},
+    {0x02, 2, 181},
+    {0x09, 2, 181},
+    {0x17, 2, 181},
+    {0x28, 3, 181},
+    {0x02, 2, 185},
+    {0x09, 2, 185},
+    {0x17, 2, 185},
+    {0x28, 3, 185},
+    {0x02, 2, 186},
+    {0x09, 2, 186},
+    {0x17, 2, 186},
+    {0x28, 3, 186},
   },
   /* 137 */
   {
-    {0x8003, 178},
-    {0x8006, 178},
-    {0x800a, 178},
-    {0x800f, 178},
-    {0x8018, 178},
-    {0x801f, 178},
-    {0x8029, 178},
-    {0xc038, 178},
-    {0x8003, 181},
-    {0x8006, 181},
-    {0x800a, 181},
-    {0x800f, 181},
-    {0x8018, 181},
-    {0x801f, 181},
-    {0x8029, 181},
-    {0xc038, 181},
+    {0x03, 2, 178},
+    {0x06, 2, 178},
+    {0x0a, 2, 178},
+    {0x0f, 2, 178},
+    {0x18, 2, 178},
+    {0x1f, 2, 178},
+    {0x29, 2, 178},
+    {0x38, 3, 178},
+    {0x03, 2, 181},
+    {0x06, 2, 181},
+    {0x0a, 2, 181},
+    {0x0f, 2, 181},
+    {0x18, 2, 181},
+    {0x1f, 2, 181},
+    {0x29, 2, 181},
+    {0x38, 3, 181},
   },
   /* 138 */
   {
-    {0x8003, 185},
-    {0x8006, 185},
-    {0x800a, 185},
-    {0x800f, 185},
-    {0x8018, 185},
-    {0x801f, 185},
-    {0x8029, 185},
-    {0xc038, 185},
-    {0x8003, 186},
-    {0x8006, 186},
-    {0x800a, 186},
-    {0x800f, 186},
-    {0x8018, 186},
-    {0x801f, 186},
-    {0x8029, 186},
-    {0xc038, 186},
+    {0x03, 2, 185},
+    {0x06, 2, 185},
+    {0x0a, 2, 185},
+    {0x0f, 2, 185},
+    {0x18, 2, 185},
+    {0x1f, 2, 185},
+    {0x29, 2, 185},
+    {0x38, 3, 185},
+    {0x03, 2, 186},
+    {0x06, 2, 186},
+    {0x0a, 2, 186},
+    {0x0f, 2, 186},
+    {0x18, 2, 186},
+    {0x1f, 2, 186},
+    {0x29, 2, 186},
+    {0x38, 3, 186},
   },
   /* 139 */
   {
-    {0x8002, 187},
-    {0x8009, 187},
-    {0x8017, 187},
-    {0xc028, 187},
-    {0x8002, 189},
-    {0x8009, 189},
-    {0x8017, 189},
-    {0xc028, 189},
-    {0x8002, 190},
-    {0x8009, 190},
-    {0x8017, 190},
-    {0xc028, 190},
-    {0x8002, 196},
-    {0x8009, 196},
-    {0x8017, 196},
-    {0xc028, 196},
+    {0x02, 2, 187},
+    {0x09, 2, 187},
+    {0x17, 2, 187},
+    {0x28, 3, 187},
+    {0x02, 2, 189},
+    {0x09, 2, 189},
+    {0x17, 2, 189},
+    {0x28, 3, 189},
+    {0x02, 2, 190},
+    {0x09, 2, 190},
+    {0x17, 2, 190},
+    {0x28, 3, 190},
+    {0x02, 2, 196},
+    {0x09, 2, 196},
+    {0x17, 2, 196},
+    {0x28, 3, 196},
   },
   /* 140 */
   {
-    {0x8003, 187},
-    {0x8006, 187},
-    {0x800a, 187},
-    {0x800f, 187},
-    {0x8018, 187},
-    {0x801f, 187},
-    {0x8029, 187},
-    {0xc038, 187},
-    {0x8003, 189},
-    {0x8006, 189},
-    {0x800a, 189},
-    {0x800f, 189},
-    {0x8018, 189},
-    {0x801f, 189},
-    {0x8029, 189},
-    {0xc038, 189},
+    {0x03, 2, 187},
+    {0x06, 2, 187},
+    {0x0a, 2, 187},
+    {0x0f, 2, 187},
+    {0x18, 2, 187},
+    {0x1f, 2, 187},
+    {0x29, 2, 187},
+    {0x38, 3, 187},
+    {0x03, 2, 189},
+    {0x06, 2, 189},
+    {0x0a, 2, 189},
+    {0x0f, 2, 189},
+    {0x18, 2, 189},
+    {0x1f, 2, 189},
+    {0x29, 2, 189},
+    {0x38, 3, 189},
   },
   /* 141 */
   {
-    {0x8003, 190},
-    {0x8006, 190},
-    {0x800a, 190},
-    {0x800f, 190},
-    {0x8018, 190},
-    {0x801f, 190},
-    {0x8029, 190},
-    {0xc038, 190},
-    {0x8003, 196},
-    {0x8006, 196},
-    {0x800a, 196},
-    {0x800f, 196},
-    {0x8018, 196},
-    {0x801f, 196},
-    {0x8029, 196},
-    {0xc038, 196},
+    {0x03, 2, 190},
+    {0x06, 2, 190},
+    {0x0a, 2, 190},
+    {0x0f, 2, 190},
+    {0x18, 2, 190},
+    {0x1f, 2, 190},
+    {0x29, 2, 190},
+    {0x38, 3, 190},
+    {0x03, 2, 196},
+    {0x06, 2, 196},
+    {0x0a, 2, 196},
+    {0x0f, 2, 196},
+    {0x18, 2, 196},
+    {0x1f, 2, 196},
+    {0x29, 2, 196},
+    {0x38, 3, 196},
   },
   /* 142 */
   {
-    {0x8001, 198},
-    {0xc016, 198},
-    {0x8001, 228},
-    {0xc016, 228},
-    {0x8001, 232},
-    {0xc016, 232},
-    {0x8001, 233},
-    {0xc016, 233},
-    {0xc000, 1},
-    {0xc000, 135},
-    {0xc000, 137},
-    {0xc000, 138},
-    {0xc000, 139},
-    {0xc000, 140},
-    {0xc000, 141},
-    {0xc000, 143},
+    {0x01, 2, 198},
+    {0x16, 3, 198},
+    {0x01, 2, 228},
+    {0x16, 3, 228},
+    {0x01, 2, 232},
+    {0x16, 3, 232},
+    {0x01, 2, 233},
+    {0x16, 3, 233},
+    {0x00, 3, 1},
+    {0x00, 3, 135},
+    {0x00, 3, 137},
+    {0x00, 3, 138},
+    {0x00, 3, 139},
+    {0x00, 3, 140},
+    {0x00, 3, 141},
+    {0x00, 3, 143},
   },
   /* 143 */
   {
-    {0x8002, 198},
-    {0x8009, 198},
-    {0x8017, 198},
-    {0xc028, 198},
-    {0x8002, 228},
-    {0x8009, 228},
-    {0x8017, 228},
-    {0xc028, 228},
-    {0x8002, 232},
-    {0x8009, 232},
-    {0x8017, 232},
-    {0xc028, 232},
-    {0x8002, 233},
-    {0x8009, 233},
-    {0x8017, 233},
-    {0xc028, 233},
+    {0x02, 2, 198},
+    {0x09, 2, 198},
+    {0x17, 2, 198},
+    {0x28, 3, 198},
+    {0x02, 2, 228},
+    {0x09, 2, 228},
+    {0x17, 2, 228},
+    {0x28, 3, 228},
+    {0x02, 2, 232},
+    {0x09, 2, 232},
+    {0x17, 2, 232},
+    {0x28, 3, 232},
+    {0x02, 2, 233},
+    {0x09, 2, 233},
+    {0x17, 2, 233},
+    {0x28, 3, 233},
   },
   /* 144 */
   {
-    {0x8003, 198},
-    {0x8006, 198},
-    {0x800a, 198},
-    {0x800f, 198},
-    {0x8018, 198},
-    {0x801f, 198},
-    {0x8029, 198},
-    {0xc038, 198},
-    {0x8003, 228},
-    {0x8006, 228},
-    {0x800a, 228},
-    {0x800f, 228},
-    {0x8018, 228},
-    {0x801f, 228},
-    {0x8029, 228},
-    {0xc038, 228},
+    {0x03, 2, 198},
+    {0x06, 2, 198},
+    {0x0a, 2, 198},
+    {0x0f, 2, 198},
+    {0x18, 2, 198},
+    {0x1f, 2, 198},
+    {0x29, 2, 198},
+    {0x38, 3, 198},
+    {0x03, 2, 228},
+    {0x06, 2, 228},
+    {0x0a, 2, 228},
+    {0x0f, 2, 228},
+    {0x18, 2, 228},
+    {0x1f, 2, 228},
+    {0x29, 2, 228},
+    {0x38, 3, 228},
   },
   /* 145 */
   {
-    {0x8003, 232},
-    {0x8006, 232},
-    {0x800a, 232},
-    {0x800f, 232},
-    {0x8018, 232},
-    {0x801f, 232},
-    {0x8029, 232},
-    {0xc038, 232},
-    {0x8003, 233},
-    {0x8006, 233},
-    {0x800a, 233},
-    {0x800f, 233},
-    {0x8018, 233},
-    {0x801f, 233},
-    {0x8029, 233},
-    {0xc038, 233},
+    {0x03, 2, 232},
+    {0x06, 2, 232},
+    {0x0a, 2, 232},
+    {0x0f, 2, 232},
+    {0x18, 2, 232},
+    {0x1f, 2, 232},
+    {0x29, 2, 232},
+    {0x38, 3, 232},
+    {0x03, 2, 233},
+    {0x06, 2, 233},
+    {0x0a, 2, 233},
+    {0x0f, 2, 233},
+    {0x18, 2, 233},
+    {0x1f, 2, 233},
+    {0x29, 2, 233},
+    {0x38, 3, 233},
   },
   /* 146 */
   {
-    {0x8001, 1},
-    {0xc016, 1},
-    {0x8001, 135},
-    {0xc016, 135},
-    {0x8001, 137},
-    {0xc016, 137},
-    {0x8001, 138},
-    {0xc016, 138},
-    {0x8001, 139},
-    {0xc016, 139},
-    {0x8001, 140},
-    {0xc016, 140},
-    {0x8001, 141},
-    {0xc016, 141},
-    {0x8001, 143},
-    {0xc016, 143},
+    {0x01, 2, 1},
+    {0x16, 3, 1},
+    {0x01, 2, 135},
+    {0x16, 3, 135},
+    {0x01, 2, 137},
+    {0x16, 3, 137},
+    {0x01, 2, 138},
+    {0x16, 3, 138},
+    {0x01, 2, 139},
+    {0x16, 3, 139},
+    {0x01, 2, 140},
+    {0x16, 3, 140},
+    {0x01, 2, 141},
+    {0x16, 3, 141},
+    {0x01, 2, 143},
+    {0x16, 3, 143},
   },
   /* 147 */
   {
-    {0x8002, 1},
-    {0x8009, 1},
-    {0x8017, 1},
-    {0xc028, 1},
-    {0x8002, 135},
-    {0x8009, 135},
-    {0x8017, 135},
-    {0xc028, 135},
-    {0x8002, 137},
-    {0x8009, 137},
-    {0x8017, 137},
-    {0xc028, 137},
-    {0x8002, 138},
-    {0x8009, 138},
-    {0x8017, 138},
-    {0xc028, 138},
+    {0x02, 2, 1},
+    {0x09, 2, 1},
+    {0x17, 2, 1},
+    {0x28, 3, 1},
+    {0x02, 2, 135},
+    {0x09, 2, 135},
+    {0x17, 2, 135},
+    {0x28, 3, 135},
+    {0x02, 2, 137},
+    {0x09, 2, 137},
+    {0x17, 2, 137},
+    {0x28, 3, 137},
+    {0x02, 2, 138},
+    {0x09, 2, 138},
+    {0x17, 2, 138},
+    {0x28, 3, 138},
   },
   /* 148 */
   {
-    {0x8003, 1},
-    {0x8006, 1},
-    {0x800a, 1},
-    {0x800f, 1},
-    {0x8018, 1},
-    {0x801f, 1},
-    {0x8029, 1},
-    {0xc038, 1},
-    {0x8003, 135},
-    {0x8006, 135},
-    {0x800a, 135},
-    {0x800f, 135},
-    {0x8018, 135},
-    {0x801f, 135},
-    {0x8029, 135},
-    {0xc038, 135},
+    {0x03, 2, 1},
+    {0x06, 2, 1},
+    {0x0a, 2, 1},
+    {0x0f, 2, 1},
+    {0x18, 2, 1},
+    {0x1f, 2, 1},
+    {0x29, 2, 1},
+    {0x38, 3, 1},
+    {0x03, 2, 135},
+    {0x06, 2, 135},
+    {0x0a, 2, 135},
+    {0x0f, 2, 135},
+    {0x18, 2, 135},
+    {0x1f, 2, 135},
+    {0x29, 2, 135},
+    {0x38, 3, 135},
   },
   /* 149 */
   {
-    {0x8003, 137},
-    {0x8006, 137},
-    {0x800a, 137},
-    {0x800f, 137},
-    {0x8018, 137},
-    {0x801f, 137},
-    {0x8029, 137},
-    {0xc038, 137},
-    {0x8003, 138},
-    {0x8006, 138},
-    {0x800a, 138},
-    {0x800f, 138},
-    {0x8018, 138},
-    {0x801f, 138},
-    {0x8029, 138},
-    {0xc038, 138},
+    {0x03, 2, 137},
+    {0x06, 2, 137},
+    {0x0a, 2, 137},
+    {0x0f, 2, 137},
+    {0x18, 2, 137},
+    {0x1f, 2, 137},
+    {0x29, 2, 137},
+    {0x38, 3, 137},
+    {0x03, 2, 138},
+    {0x06, 2, 138},
+    {0x0a, 2, 138},
+    {0x0f, 2, 138},
+    {0x18, 2, 138},
+    {0x1f, 2, 138},
+    {0x29, 2, 138},
+    {0x38, 3, 138},
   },
   /* 150 */
   {
-    {0x8002, 139},
-    {0x8009, 139},
-    {0x8017, 139},
-    {0xc028, 139},
-    {0x8002, 140},
-    {0x8009, 140},
-    {0x8017, 140},
-    {0xc028, 140},
-    {0x8002, 141},
-    {0x8009, 141},
-    {0x8017, 141},
-    {0xc028, 141},
-    {0x8002, 143},
-    {0x8009, 143},
-    {0x8017, 143},
-    {0xc028, 143},
+    {0x02, 2, 139},
+    {0x09, 2, 139},
+    {0x17, 2, 139},
+    {0x28, 3, 139},
+    {0x02, 2, 140},
+    {0x09, 2, 140},
+    {0x17, 2, 140},
+    {0x28, 3, 140},
+    {0x02, 2, 141},
+    {0x09, 2, 141},
+    {0x17, 2, 141},
+    {0x28, 3, 141},
+    {0x02, 2, 143},
+    {0x09, 2, 143},
+    {0x17, 2, 143},
+    {0x28, 3, 143},
   },
   /* 151 */
   {
-    {0x8003, 139},
-    {0x8006, 139},
-    {0x800a, 139},
-    {0x800f, 139},
-    {0x8018, 139},
-    {0x801f, 139},
-    {0x8029, 139},
-    {0xc038, 139},
-    {0x8003, 140},
-    {0x8006, 140},
-    {0x800a, 140},
-    {0x800f, 140},
-    {0x8018, 140},
-    {0x801f, 140},
-    {0x8029, 140},
-    {0xc038, 140},
+    {0x03, 2, 139},
+    {0x06, 2, 139},
+    {0x0a, 2, 139},
+    {0x0f, 2, 139},
+    {0x18, 2, 139},
+    {0x1f, 2, 139},
+    {0x29, 2, 139},
+    {0x38, 3, 139},
+    {0x03, 2, 140},
+    {0x06, 2, 140},
+    {0x0a, 2, 140},
+    {0x0f, 2, 140},
+    {0x18, 2, 140},
+    {0x1f, 2, 140},
+    {0x29, 2, 140},
+    {0x38, 3, 140},
   },
   /* 152 */
   {
-    {0x8003, 141},
-    {0x8006, 141},
-    {0x800a, 141},
-    {0x800f, 141},
-    {0x8018, 141},
-    {0x801f, 141},
-    {0x8029, 141},
-    {0xc038, 141},
-    {0x8003, 143},
-    {0x8006, 143},
-    {0x800a, 143},
-    {0x800f, 143},
-    {0x8018, 143},
-    {0x801f, 143},
-    {0x8029, 143},
-    {0xc038, 143},
+    {0x03, 2, 141},
+    {0x06, 2, 141},
+    {0x0a, 2, 141},
+    {0x0f, 2, 141},
+    {0x18, 2, 141},
+    {0x1f, 2, 141},
+    {0x29, 2, 141},
+    {0x38, 3, 141},
+    {0x03, 2, 143},
+    {0x06, 2, 143},
+    {0x0a, 2, 143},
+    {0x0f, 2, 143},
+    {0x18, 2, 143},
+    {0x1f, 2, 143},
+    {0x29, 2, 143},
+    {0x38, 3, 143},
   },
   /* 153 */
   {
-    {0x9d, 0},
-    {0x9e, 0},
-    {0xa0, 0},
-    {0xa1, 0},
-    {0xa4, 0},
-    {0xa5, 0},
-    {0xa7, 0},
-    {0xa8, 0},
-    {0xac, 0},
-    {0xad, 0},
-    {0xaf, 0},
-    {0xb1, 0},
-    {0xb6, 0},
-    {0xb9, 0},
-    {0xbf, 0},
-    {0xcf, 0},
+    {0x9d, 0, 0},
+    {0x9e, 0, 0},
+    {0xa0, 0, 0},
+    {0xa1, 0, 0},
+    {0xa4, 0, 0},
+    {0xa5, 0, 0},
+    {0xa7, 0, 0},
+    {0xa8, 0, 0},
+    {0xac, 0, 0},
+    {0xad, 0, 0},
+    {0xaf, 0, 0},
+    {0xb1, 0, 0},
+    {0xb6, 0, 0},
+    {0xb9, 0, 0},
+    {0xbf, 0, 0},
+    {0xcf, 0, 0},
   },
   /* 154 */
   {
-    {0xc000, 147},
-    {0xc000, 149},
-    {0xc000, 150},
-    {0xc000, 151},
-    {0xc000, 152},
-    {0xc000, 155},
-    {0xc000, 157},
-    {0xc000, 158},
-    {0xc000, 165},
-    {0xc000, 166},
-    {0xc000, 168},
-    {0xc000, 174},
-    {0xc000, 175},
-    {0xc000, 180},
-    {0xc000, 182},
-    {0xc000, 183},
+    {0x00, 3, 147},
+    {0x00, 3, 149},
+    {0x00, 3, 150},
+    {0x00, 3, 151},
+    {0x00, 3, 152},
+    {0x00, 3, 155},
+    {0x00, 3, 157},
+    {0x00, 3, 158},
+    {0x00, 3, 165},
+    {0x00, 3, 166},
+    {0x00, 3, 168},
+    {0x00, 3, 174},
+    {0x00, 3, 175},
+    {0x00, 3, 180},
+    {0x00, 3, 182},
+    {0x00, 3, 183},
   },
   /* 155 */
   {
-    {0x8001, 147},
-    {0xc016, 147},
-    {0x8001, 149},
-    {0xc016, 149},
-    {0x8001, 150},
-    {0xc016, 150},
-    {0x8001, 151},
-    {0xc016, 151},
-    {0x8001, 152},
-    {0xc016, 152},
-    {0x8001, 155},
-    {0xc016, 155},
-    {0x8001, 157},
-    {0xc016, 157},
-    {0x8001, 158},
-    {0xc016, 158},
+    {0x01, 2, 147},
+    {0x16, 3, 147},
+    {0x01, 2, 149},
+    {0x16, 3, 149},
+    {0x01, 2, 150},
+    {0x16, 3, 150},
+    {0x01, 2, 151},
+    {0x16, 3, 151},
+    {0x01, 2, 152},
+    {0x16, 3, 152},
+    {0x01, 2, 155},
+    {0x16, 3, 155},
+    {0x01, 2, 157},
+    {0x16, 3, 157},
+    {0x01, 2, 158},
+    {0x16, 3, 158},
   },
   /* 156 */
   {
-    {0x8002, 147},
-    {0x8009, 147},
-    {0x8017, 147},
-    {0xc028, 147},
-    {0x8002, 149},
-    {0x8009, 149},
-    {0x8017, 149},
-    {0xc028, 149},
-    {0x8002, 150},
-    {0x8009, 150},
-    {0x8017, 150},
-    {0xc028, 150},
-    {0x8002, 151},
-    {0x8009, 151},
-    {0x8017, 151},
-    {0xc028, 151},
+    {0x02, 2, 147},
+    {0x09, 2, 147},
+    {0x17, 2, 147},
+    {0x28, 3, 147},
+    {0x02, 2, 149},
+    {0x09, 2, 149},
+    {0x17, 2, 149},
+    {0x28, 3, 149},
+    {0x02, 2, 150},
+    {0x09, 2, 150},
+    {0x17, 2, 150},
+    {0x28, 3, 150},
+    {0x02, 2, 151},
+    {0x09, 2, 151},
+    {0x17, 2, 151},
+    {0x28, 3, 151},
   },
   /* 157 */
   {
-    {0x8003, 147},
-    {0x8006, 147},
-    {0x800a, 147},
-    {0x800f, 147},
-    {0x8018, 147},
-    {0x801f, 147},
-    {0x8029, 147},
-    {0xc038, 147},
-    {0x8003, 149},
-    {0x8006, 149},
-    {0x800a, 149},
-    {0x800f, 149},
-    {0x8018, 149},
-    {0x801f, 149},
-    {0x8029, 149},
-    {0xc038, 149},
+    {0x03, 2, 147},
+    {0x06, 2, 147},
+    {0x0a, 2, 147},
+    {0x0f, 2, 147},
+    {0x18, 2, 147},
+    {0x1f, 2, 147},
+    {0x29, 2, 147},
+    {0x38, 3, 147},
+    {0x03, 2, 149},
+    {0x06, 2, 149},
+    {0x0a, 2, 149},
+    {0x0f, 2, 149},
+    {0x18, 2, 149},
+    {0x1f, 2, 149},
+    {0x29, 2, 149},
+    {0x38, 3, 149},
   },
   /* 158 */
   {
-    {0x8003, 150},
-    {0x8006, 150},
-    {0x800a, 150},
-    {0x800f, 150},
-    {0x8018, 150},
-    {0x801f, 150},
-    {0x8029, 150},
-    {0xc038, 150},
-    {0x8003, 151},
-    {0x8006, 151},
-    {0x800a, 151},
-    {0x800f, 151},
-    {0x8018, 151},
-    {0x801f, 151},
-    {0x8029, 151},
-    {0xc038, 151},
+    {0x03, 2, 150},
+    {0x06, 2, 150},
+    {0x0a, 2, 150},
+    {0x0f, 2, 150},
+    {0x18, 2, 150},
+    {0x1f, 2, 150},
+    {0x29, 2, 150},
+    {0x38, 3, 150},
+    {0x03, 2, 151},
+    {0x06, 2, 151},
+    {0x0a, 2, 151},
+    {0x0f, 2, 151},
+    {0x18, 2, 151},
+    {0x1f, 2, 151},
+    {0x29, 2, 151},
+    {0x38, 3, 151},
   },
   /* 159 */
   {
-    {0x8002, 152},
-    {0x8009, 152},
-    {0x8017, 152},
-    {0xc028, 152},
-    {0x8002, 155},
-    {0x8009, 155},
-    {0x8017, 155},
-    {0xc028, 155},
-    {0x8002, 157},
-    {0x8009, 157},
-    {0x8017, 157},
-    {0xc028, 157},
-    {0x8002, 158},
-    {0x8009, 158},
-    {0x8017, 158},
-    {0xc028, 158},
+    {0x02, 2, 152},
+    {0x09, 2, 152},
+    {0x17, 2, 152},
+    {0x28, 3, 152},
+    {0x02, 2, 155},
+    {0x09, 2, 155},
+    {0x17, 2, 155},
+    {0x28, 3, 155},
+    {0x02, 2, 157},
+    {0x09, 2, 157},
+    {0x17, 2, 157},
+    {0x28, 3, 157},
+    {0x02, 2, 158},
+    {0x09, 2, 158},
+    {0x17, 2, 158},
+    {0x28, 3, 158},
   },
   /* 160 */
   {
-    {0x8003, 152},
-    {0x8006, 152},
-    {0x800a, 152},
-    {0x800f, 152},
-    {0x8018, 152},
-    {0x801f, 152},
-    {0x8029, 152},
-    {0xc038, 152},
-    {0x8003, 155},
-    {0x8006, 155},
-    {0x800a, 155},
-    {0x800f, 155},
-    {0x8018, 155},
-    {0x801f, 155},
-    {0x8029, 155},
-    {0xc038, 155},
+    {0x03, 2, 152},
+    {0x06, 2, 152},
+    {0x0a, 2, 152},
+    {0x0f, 2, 152},
+    {0x18, 2, 152},
+    {0x1f, 2, 152},
+    {0x29, 2, 152},
+    {0x38, 3, 152},
+    {0x03, 2, 155},
+    {0x06, 2, 155},
+    {0x0a, 2, 155},
+    {0x0f, 2, 155},
+    {0x18, 2, 155},
+    {0x1f, 2, 155},
+    {0x29, 2, 155},
+    {0x38, 3, 155},
   },
   /* 161 */
   {
-    {0x8003, 157},
-    {0x8006, 157},
-    {0x800a, 157},
-    {0x800f, 157},
-    {0x8018, 157},
-    {0x801f, 157},
-    {0x8029, 157},
-    {0xc038, 157},
-    {0x8003, 158},
-    {0x8006, 158},
-    {0x800a, 158},
-    {0x800f, 158},
-    {0x8018, 158},
-    {0x801f, 158},
-    {0x8029, 158},
-    {0xc038, 158},
+    {0x03, 2, 157},
+    {0x06, 2, 157},
+    {0x0a, 2, 157},
+    {0x0f, 2, 157},
+    {0x18, 2, 157},
+    {0x1f, 2, 157},
+    {0x29, 2, 157},
+    {0x38, 3, 157},
+    {0x03, 2, 158},
+    {0x06, 2, 158},
+    {0x0a, 2, 158},
+    {0x0f, 2, 158},
+    {0x18, 2, 158},
+    {0x1f, 2, 158},
+    {0x29, 2, 158},
+    {0x38, 3, 158},
   },
   /* 162 */
   {
-    {0x8001, 165},
-    {0xc016, 165},
-    {0x8001, 166},
-    {0xc016, 166},
-    {0x8001, 168},
-    {0xc016, 168},
-    {0x8001, 174},
-    {0xc016, 174},
-    {0x8001, 175},
-    {0xc016, 175},
-    {0x8001, 180},
-    {0xc016, 180},
-    {0x8001, 182},
-    {0xc016, 182},
-    {0x8001, 183},
-    {0xc016, 183},
+    {0x01, 2, 165},
+    {0x16, 3, 165},
+    {0x01, 2, 166},
+    {0x16, 3, 166},
+    {0x01, 2, 168},
+    {0x16, 3, 168},
+    {0x01, 2, 174},
+    {0x16, 3, 174},
+    {0x01, 2, 175},
+    {0x16, 3, 175},
+    {0x01, 2, 180},
+    {0x16, 3, 180},
+    {0x01, 2, 182},
+    {0x16, 3, 182},
+    {0x01, 2, 183},
+    {0x16, 3, 183},
   },
   /* 163 */
   {
-    {0x8002, 165},
-    {0x8009, 165},
-    {0x8017, 165},
-    {0xc028, 165},
-    {0x8002, 166},
-    {0x8009, 166},
-    {0x8017, 166},
-    {0xc028, 166},
-    {0x8002, 168},
-    {0x8009, 168},
-    {0x8017, 168},
-    {0xc028, 168},
-    {0x8002, 174},
-    {0x8009, 174},
-    {0x8017, 174},
-    {0xc028, 174},
+    {0x02, 2, 165},
+    {0x09, 2, 165},
+    {0x17, 2, 165},
+    {0x28, 3, 165},
+    {0x02, 2, 166},
+    {0x09, 2, 166},
+    {0x17, 2, 166},
+    {0x28, 3, 166},
+    {0x02, 2, 168},
+    {0x09, 2, 168},
+    {0x17, 2, 168},
+    {0x28, 3, 168},
+    {0x02, 2, 174},
+    {0x09, 2, 174},
+    {0x17, 2, 174},
+    {0x28, 3, 174},
   },
   /* 164 */
   {
-    {0x8003, 165},
-    {0x8006, 165},
-    {0x800a, 165},
-    {0x800f, 165},
-    {0x8018, 165},
-    {0x801f, 165},
-    {0x8029, 165},
-    {0xc038, 165},
-    {0x8003, 166},
-    {0x8006, 166},
-    {0x800a, 166},
-    {0x800f, 166},
-    {0x8018, 166},
-    {0x801f, 166},
-    {0x8029, 166},
-    {0xc038, 166},
+    {0x03, 2, 165},
+    {0x06, 2, 165},
+    {0x0a, 2, 165},
+    {0x0f, 2, 165},
+    {0x18, 2, 165},
+    {0x1f, 2, 165},
+    {0x29, 2, 165},
+    {0x38, 3, 165},
+    {0x03, 2, 166},
+    {0x06, 2, 166},
+    {0x0a, 2, 166},
+    {0x0f, 2, 166},
+    {0x18, 2, 166},
+    {0x1f, 2, 166},
+    {0x29, 2, 166},
+    {0x38, 3, 166},
   },
   /* 165 */
   {
-    {0x8003, 168},
-    {0x8006, 168},
-    {0x800a, 168},
-    {0x800f, 168},
-    {0x8018, 168},
-    {0x801f, 168},
-    {0x8029, 168},
-    {0xc038, 168},
-    {0x8003, 174},
-    {0x8006, 174},
-    {0x800a, 174},
-    {0x800f, 174},
-    {0x8018, 174},
-    {0x801f, 174},
-    {0x8029, 174},
-    {0xc038, 174},
+    {0x03, 2, 168},
+    {0x06, 2, 168},
+    {0x0a, 2, 168},
+    {0x0f, 2, 168},
+    {0x18, 2, 168},
+    {0x1f, 2, 168},
+    {0x29, 2, 168},
+    {0x38, 3, 168},
+    {0x03, 2, 174},
+    {0x06, 2, 174},
+    {0x0a, 2, 174},
+    {0x0f, 2, 174},
+    {0x18, 2, 174},
+    {0x1f, 2, 174},
+    {0x29, 2, 174},
+    {0x38, 3, 174},
   },
   /* 166 */
   {
-    {0x8002, 175},
-    {0x8009, 175},
-    {0x8017, 175},
-    {0xc028, 175},
-    {0x8002, 180},
-    {0x8009, 180},
-    {0x8017, 180},
-    {0xc028, 180},
-    {0x8002, 182},
-    {0x8009, 182},
-    {0x8017, 182},
-    {0xc028, 182},
-    {0x8002, 183},
-    {0x8009, 183},
-    {0x8017, 183},
-    {0xc028, 183},
+    {0x02, 2, 175},
+    {0x09, 2, 175},
+    {0x17, 2, 175},
+    {0x28, 3, 175},
+    {0x02, 2, 180},
+    {0x09, 2, 180},
+    {0x17, 2, 180},
+    {0x28, 3, 180},
+    {0x02, 2, 182},
+    {0x09, 2, 182},
+    {0x17, 2, 182},
+    {0x28, 3, 182},
+    {0x02, 2, 183},
+    {0x09, 2, 183},
+    {0x17, 2, 183},
+    {0x28, 3, 183},
   },
   /* 167 */
   {
-    {0x8003, 175},
-    {0x8006, 175},
-    {0x800a, 175},
-    {0x800f, 175},
-    {0x8018, 175},
-    {0x801f, 175},
-    {0x8029, 175},
-    {0xc038, 175},
-    {0x8003, 180},
-    {0x8006, 180},
-    {0x800a, 180},
-    {0x800f, 180},
-    {0x8018, 180},
-    {0x801f, 180},
-    {0x8029, 180},
-    {0xc038, 180},
+    {0x03, 2, 175},
+    {0x06, 2, 175},
+    {0x0a, 2, 175},
+    {0x0f, 2, 175},
+    {0x18, 2, 175},
+    {0x1f, 2, 175},
+    {0x29, 2, 175},
+    {0x38, 3, 175},
+    {0x03, 2, 180},
+    {0x06, 2, 180},
+    {0x0a, 2, 180},
+    {0x0f, 2, 180},
+    {0x18, 2, 180},
+    {0x1f, 2, 180},
+    {0x29, 2, 180},
+    {0x38, 3, 180},
   },
   /* 168 */
   {
-    {0x8003, 182},
-    {0x8006, 182},
-    {0x800a, 182},
-    {0x800f, 182},
-    {0x8018, 182},
-    {0x801f, 182},
-    {0x8029, 182},
-    {0xc038, 182},
-    {0x8003, 183},
-    {0x8006, 183},
-    {0x800a, 183},
-    {0x800f, 183},
-    {0x8018, 183},
-    {0x801f, 183},
-    {0x8029, 183},
-    {0xc038, 183},
+    {0x03, 2, 182},
+    {0x06, 2, 182},
+    {0x0a, 2, 182},
+    {0x0f, 2, 182},
+    {0x18, 2, 182},
+    {0x1f, 2, 182},
+    {0x29, 2, 182},
+    {0x38, 3, 182},
+    {0x03, 2, 183},
+    {0x06, 2, 183},
+    {0x0a, 2, 183},
+    {0x0f, 2, 183},
+    {0x18, 2, 183},
+    {0x1f, 2, 183},
+    {0x29, 2, 183},
+    {0x38, 3, 183},
   },
   /* 169 */
   {
-    {0xc000, 188},
-    {0xc000, 191},
-    {0xc000, 197},
-    {0xc000, 231},
-    {0xc000, 239},
-    {0xb0, 0},
-    {0xb2, 0},
-    {0xb3, 0},
-    {0xb7, 0},
-    {0xb8, 0},
-    {0xba, 0},
-    {0xbb, 0},
-    {0xc0, 0},
-    {0xc7, 0},
-    {0xd0, 0},
-    {0xdf, 0},
+    {0x00, 3, 188},
+    {0x00, 3, 191},
+    {0x00, 3, 197},
+    {0x00, 3, 231},
+    {0x00, 3, 239},
+    {0xb0, 0, 0},
+    {0xb2, 0, 0},
+    {0xb3, 0, 0},
+    {0xb7, 0, 0},
+    {0xb8, 0, 0},
+    {0xba, 0, 0},
+    {0xbb, 0, 0},
+    {0xc0, 0, 0},
+    {0xc7, 0, 0},
+    {0xd0, 0, 0},
+    {0xdf, 0, 0},
   },
   /* 170 */
   {
-    {0x8001, 188},
-    {0xc016, 188},
-    {0x8001, 191},
-    {0xc016, 191},
-    {0x8001, 197},
-    {0xc016, 197},
-    {0x8001, 231},
-    {0xc016, 231},
-    {0x8001, 239},
-    {0xc016, 239},
-    {0xc000, 9},
-    {0xc000, 142},
-    {0xc000, 144},
-    {0xc000, 145},
-    {0xc000, 148},
-    {0xc000, 159},
+    {0x01, 2, 188},
+    {0x16, 3, 188},
+    {0x01, 2, 191},
+    {0x16, 3, 191},
+    {0x01, 2, 197},
+    {0x16, 3, 197},
+    {0x01, 2, 231},
+    {0x16, 3, 231},
+    {0x01, 2, 239},
+    {0x16, 3, 239},
+    {0x00, 3, 9},
+    {0x00, 3, 142},
+    {0x00, 3, 144},
+    {0x00, 3, 145},
+    {0x00, 3, 148},
+    {0x00, 3, 159},
   },
   /* 171 */
   {
-    {0x8002, 188},
-    {0x8009, 188},
-    {0x8017, 188},
-    {0xc028, 188},
-    {0x8002, 191},
-    {0x8009, 191},
-    {0x8017, 191},
-    {0xc028, 191},
-    {0x8002, 197},
-    {0x8009, 197},
-    {0x8017, 197},
-    {0xc028, 197},
-    {0x8002, 231},
-    {0x8009, 231},
-    {0x8017, 231},
-    {0xc028, 231},
+    {0x02, 2, 188},
+    {0x09, 2, 188},
+    {0x17, 2, 188},
+    {0x28, 3, 188},
+    {0x02, 2, 191},
+    {0x09, 2, 191},
+    {0x17, 2, 191},
+    {0x28, 3, 191},
+    {0x02, 2, 197},
+    {0x09, 2, 197},
+    {0x17, 2, 197},
+    {0x28, 3, 197},
+    {0x02, 2, 231},
+    {0x09, 2, 231},
+    {0x17, 2, 231},
+    {0x28, 3, 231},
   },
   /* 172 */
   {
-    {0x8003, 188},
-    {0x8006, 188},
-    {0x800a, 188},
-    {0x800f, 188},
-    {0x8018, 188},
-    {0x801f, 188},
-    {0x8029, 188},
-    {0xc038, 188},
-    {0x8003, 191},
-    {0x8006, 191},
-    {0x800a, 191},
-    {0x800f, 191},
-    {0x8018, 191},
-    {0x801f, 191},
-    {0x8029, 191},
-    {0xc038, 191},
+    {0x03, 2, 188},
+    {0x06, 2, 188},
+    {0x0a, 2, 188},
+    {0x0f, 2, 188},
+    {0x18, 2, 188},
+    {0x1f, 2, 188},
+    {0x29, 2, 188},
+    {0x38, 3, 188},
+    {0x03, 2, 191},
+    {0x06, 2, 191},
+    {0x0a, 2, 191},
+    {0x0f, 2, 191},
+    {0x18, 2, 191},
+    {0x1f, 2, 191},
+    {0x29, 2, 191},
+    {0x38, 3, 191},
   },
   /* 173 */
   {
-    {0x8003, 197},
-    {0x8006, 197},
-    {0x800a, 197},
-    {0x800f, 197},
-    {0x8018, 197},
-    {0x801f, 197},
-    {0x8029, 197},
-    {0xc038, 197},
-    {0x8003, 231},
-    {0x8006, 231},
-    {0x800a, 231},
-    {0x800f, 231},
-    {0x8018, 231},
-    {0x801f, 231},
-    {0x8029, 231},
-    {0xc038, 231},
+    {0x03, 2, 197},
+    {0x06, 2, 197},
+    {0x0a, 2, 197},
+    {0x0f, 2, 197},
+    {0x18, 2, 197},
+    {0x1f, 2, 197},
+    {0x29, 2, 197},
+    {0x38, 3, 197},
+    {0x03, 2, 231},
+    {0x06, 2, 231},
+    {0x0a, 2, 231},
+    {0x0f, 2, 231},
+    {0x18, 2, 231},
+    {0x1f, 2, 231},
+    {0x29, 2, 231},
+    {0x38, 3, 231},
   },
   /* 174 */
   {
-    {0x8002, 239},
-    {0x8009, 239},
-    {0x8017, 239},
-    {0xc028, 239},
-    {0x8001, 9},
-    {0xc016, 9},
-    {0x8001, 142},
-    {0xc016, 142},
-    {0x8001, 144},
-    {0xc016, 144},
-    {0x8001, 145},
-    {0xc016, 145},
-    {0x8001, 148},
-    {0xc016, 148},
-    {0x8001, 159},
-    {0xc016, 159},
+    {0x02, 2, 239},
+    {0x09, 2, 239},
+    {0x17, 2, 239},
+    {0x28, 3, 239},
+    {0x01, 2, 9},
+    {0x16, 3, 9},
+    {0x01, 2, 142},
+    {0x16, 3, 142},
+    {0x01, 2, 144},
+    {0x16, 3, 144},
+    {0x01, 2, 145},
+    {0x16, 3, 145},
+    {0x01, 2, 148},
+    {0x16, 3, 148},
+    {0x01, 2, 159},
+    {0x16, 3, 159},
   },
   /* 175 */
   {
-    {0x8003, 239},
-    {0x8006, 239},
-    {0x800a, 239},
-    {0x800f, 239},
-    {0x8018, 239},
-    {0x801f, 239},
-    {0x8029, 239},
-    {0xc038, 239},
-    {0x8002, 9},
-    {0x8009, 9},
-    {0x8017, 9},
-    {0xc028, 9},
-    {0x8002, 142},
-    {0x8009, 142},
-    {0x8017, 142},
-    {0xc028, 142},
+    {0x03, 2, 239},
+    {0x06, 2, 239},
+    {0x0a, 2, 239},
+    {0x0f, 2, 239},
+    {0x18, 2, 239},
+    {0x1f, 2, 239},
+    {0x29, 2, 239},
+    {0x38, 3, 239},
+    {0x02, 2, 9},
+    {0x09, 2, 9},
+    {0x17, 2, 9},
+    {0x28, 3, 9},
+    {0x02, 2, 142},
+    {0x09, 2, 142},
+    {0x17, 2, 142},
+    {0x28, 3, 142},
   },
   /* 176 */
   {
-    {0x8003, 9},
-    {0x8006, 9},
-    {0x800a, 9},
-    {0x800f, 9},
-    {0x8018, 9},
-    {0x801f, 9},
-    {0x8029, 9},
-    {0xc038, 9},
-    {0x8003, 142},
-    {0x8006, 142},
-    {0x800a, 142},
-    {0x800f, 142},
-    {0x8018, 142},
-    {0x801f, 142},
-    {0x8029, 142},
-    {0xc038, 142},
+    {0x03, 2, 9},
+    {0x06, 2, 9},
+    {0x0a, 2, 9},
+    {0x0f, 2, 9},
+    {0x18, 2, 9},
+    {0x1f, 2, 9},
+    {0x29, 2, 9},
+    {0x38, 3, 9},
+    {0x03, 2, 142},
+    {0x06, 2, 142},
+    {0x0a, 2, 142},
+    {0x0f, 2, 142},
+    {0x18, 2, 142},
+    {0x1f, 2, 142},
+    {0x29, 2, 142},
+    {0x38, 3, 142},
   },
   /* 177 */
   {
-    {0x8002, 144},
-    {0x8009, 144},
-    {0x8017, 144},
-    {0xc028, 144},
-    {0x8002, 145},
-    {0x8009, 145},
-    {0x8017, 145},
-    {0xc028, 145},
-    {0x8002, 148},
-    {0x8009, 148},
-    {0x8017, 148},
-    {0xc028, 148},
-    {0x8002, 159},
-    {0x8009, 159},
-    {0x8017, 159},
-    {0xc028, 159},
+    {0x02, 2, 144},
+    {0x09, 2, 144},
+    {0x17, 2, 144},
+    {0x28, 3, 144},
+    {0x02, 2, 145},
+    {0x09, 2, 145},
+    {0x17, 2, 145},
+    {0x28, 3, 145},
+    {0x02, 2, 148},
+    {0x09, 2, 148},
+    {0x17, 2, 148},
+    {0x28, 3, 148},
+    {0x02, 2, 159},
+    {0x09, 2, 159},
+    {0x17, 2, 159},
+    {0x28, 3, 159},
   },
   /* 178 */
   {
-    {0x8003, 144},
-    {0x8006, 144},
-    {0x800a, 144},
-    {0x800f, 144},
-    {0x8018, 144},
-    {0x801f, 144},
-    {0x8029, 144},
-    {0xc038, 144},
-    {0x8003, 145},
-    {0x8006, 145},
-    {0x800a, 145},
-    {0x800f, 145},
-    {0x8018, 145},
-    {0x801f, 145},
-    {0x8029, 145},
-    {0xc038, 145},
+    {0x03, 2, 144},
+    {0x06, 2, 144},
+    {0x0a, 2, 144},
+    {0x0f, 2, 144},
+    {0x18, 2, 144},
+    {0x1f, 2, 144},
+    {0x29, 2, 144},
+    {0x38, 3, 144},
+    {0x03, 2, 145},
+    {0x06, 2, 145},
+    {0x0a, 2, 145},
+    {0x0f, 2, 145},
+    {0x18, 2, 145},
+    {0x1f, 2, 145},
+    {0x29, 2, 145},
+    {0x38, 3, 145},
   },
   /* 179 */
   {
-    {0x8003, 148},
-    {0x8006, 148},
-    {0x800a, 148},
-    {0x800f, 148},
-    {0x8018, 148},
-    {0x801f, 148},
-    {0x8029, 148},
-    {0xc038, 148},
-    {0x8003, 159},
-    {0x8006, 159},
-    {0x800a, 159},
-    {0x800f, 159},
-    {0x8018, 159},
-    {0x801f, 159},
-    {0x8029, 159},
-    {0xc038, 159},
+    {0x03, 2, 148},
+    {0x06, 2, 148},
+    {0x0a, 2, 148},
+    {0x0f, 2, 148},
+    {0x18, 2, 148},
+    {0x1f, 2, 148},
+    {0x29, 2, 148},
+    {0x38, 3, 148},
+    {0x03, 2, 159},
+    {0x06, 2, 159},
+    {0x0a, 2, 159},
+    {0x0f, 2, 159},
+    {0x18, 2, 159},
+    {0x1f, 2, 159},
+    {0x29, 2, 159},
+    {0x38, 3, 159},
   },
   /* 180 */
   {
-    {0xc000, 171},
-    {0xc000, 206},
-    {0xc000, 215},
-    {0xc000, 225},
-    {0xc000, 236},
-    {0xc000, 237},
-    {0xbc, 0},
-    {0xbd, 0},
-    {0xc1, 0},
-    {0xc4, 0},
-    {0xc8, 0},
-    {0xcb, 0},
-    {0xd1, 0},
-    {0xd8, 0},
-    {0xe0, 0},
-    {0xee, 0},
+    {0x00, 3, 171},
+    {0x00, 3, 206},
+    {0x00, 3, 215},
+    {0x00, 3, 225},
+    {0x00, 3, 236},
+    {0x00, 3, 237},
+    {0xbc, 0, 0},
+    {0xbd, 0, 0},
+    {0xc1, 0, 0},
+    {0xc4, 0, 0},
+    {0xc8, 0, 0},
+    {0xcb, 0, 0},
+    {0xd1, 0, 0},
+    {0xd8, 0, 0},
+    {0xe0, 0, 0},
+    {0xee, 0, 0},
   },
   /* 181 */
   {
-    {0x8001, 171},
-    {0xc016, 171},
-    {0x8001, 206},
-    {0xc016, 206},
-    {0x8001, 215},
-    {0xc016, 215},
-    {0x8001, 225},
-    {0xc016, 225},
-    {0x8001, 236},
-    {0xc016, 236},
-    {0x8001, 237},
-    {0xc016, 237},
-    {0xc000, 199},
-    {0xc000, 207},
-    {0xc000, 234},
-    {0xc000, 235},
+    {0x01, 2, 171},
+    {0x16, 3, 171},
+    {0x01, 2, 206},
+    {0x16, 3, 206},
+    {0x01, 2, 215},
+    {0x16, 3, 215},
+    {0x01, 2, 225},
+    {0x16, 3, 225},
+    {0x01, 2, 236},
+    {0x16, 3, 236},
+    {0x01, 2, 237},
+    {0x16, 3, 237},
+    {0x00, 3, 199},
+    {0x00, 3, 207},
+    {0x00, 3, 234},
+    {0x00, 3, 235},
   },
   /* 182 */
   {
-    {0x8002, 171},
-    {0x8009, 171},
-    {0x8017, 171},
-    {0xc028, 171},
-    {0x8002, 206},
-    {0x8009, 206},
-    {0x8017, 206},
-    {0xc028, 206},
-    {0x8002, 215},
-    {0x8009, 215},
-    {0x8017, 215},
-    {0xc028, 215},
-    {0x8002, 225},
-    {0x8009, 225},
-    {0x8017, 225},
-    {0xc028, 225},
+    {0x02, 2, 171},
+    {0x09, 2, 171},
+    {0x17, 2, 171},
+    {0x28, 3, 171},
+    {0x02, 2, 206},
+    {0x09, 2, 206},
+    {0x17, 2, 206},
+    {0x28, 3, 206},
+    {0x02, 2, 215},
+    {0x09, 2, 215},
+    {0x17, 2, 215},
+    {0x28, 3, 215},
+    {0x02, 2, 225},
+    {0x09, 2, 225},
+    {0x17, 2, 225},
+    {0x28, 3, 225},
   },
   /* 183 */
   {
-    {0x8003, 171},
-    {0x8006, 171},
-    {0x800a, 171},
-    {0x800f, 171},
-    {0x8018, 171},
-    {0x801f, 171},
-    {0x8029, 171},
-    {0xc038, 171},
-    {0x8003, 206},
-    {0x8006, 206},
-    {0x800a, 206},
-    {0x800f, 206},
-    {0x8018, 206},
-    {0x801f, 206},
-    {0x8029, 206},
-    {0xc038, 206},
+    {0x03, 2, 171},
+    {0x06, 2, 171},
+    {0x0a, 2, 171},
+    {0x0f, 2, 171},
+    {0x18, 2, 171},
+    {0x1f, 2, 171},
+    {0x29, 2, 171},
+    {0x38, 3, 171},
+    {0x03, 2, 206},
+    {0x06, 2, 206},
+    {0x0a, 2, 206},
+    {0x0f, 2, 206},
+    {0x18, 2, 206},
+    {0x1f, 2, 206},
+    {0x29, 2, 206},
+    {0x38, 3, 206},
   },
   /* 184 */
   {
-    {0x8003, 215},
-    {0x8006, 215},
-    {0x800a, 215},
-    {0x800f, 215},
-    {0x8018, 215},
-    {0x801f, 215},
-    {0x8029, 215},
-    {0xc038, 215},
-    {0x8003, 225},
-    {0x8006, 225},
-    {0x800a, 225},
-    {0x800f, 225},
-    {0x8018, 225},
-    {0x801f, 225},
-    {0x8029, 225},
-    {0xc038, 225},
+    {0x03, 2, 215},
+    {0x06, 2, 215},
+    {0x0a, 2, 215},
+    {0x0f, 2, 215},
+    {0x18, 2, 215},
+    {0x1f, 2, 215},
+    {0x29, 2, 215},
+    {0x38, 3, 215},
+    {0x03, 2, 225},
+    {0x06, 2, 225},
+    {0x0a, 2, 225},
+    {0x0f, 2, 225},
+    {0x18, 2, 225},
+    {0x1f, 2, 225},
+    {0x29, 2, 225},
+    {0x38, 3, 225},
   },
   /* 185 */
   {
-    {0x8002, 236},
-    {0x8009, 236},
-    {0x8017, 236},
-    {0xc028, 236},
-    {0x8002, 237},
-    {0x8009, 237},
-    {0x8017, 237},
-    {0xc028, 237},
-    {0x8001, 199},
-    {0xc016, 199},
-    {0x8001, 207},
-    {0xc016, 207},
-    {0x8001, 234},
-    {0xc016, 234},
-    {0x8001, 235},
-    {0xc016, 235},
+    {0x02, 2, 236},
+    {0x09, 2, 236},
+    {0x17, 2, 236},
+    {0x28, 3, 236},
+    {0x02, 2, 237},
+    {0x09, 2, 237},
+    {0x17, 2, 237},
+    {0x28, 3, 237},
+    {0x01, 2, 199},
+    {0x16, 3, 199},
+    {0x01, 2, 207},
+    {0x16, 3, 207},
+    {0x01, 2, 234},
+    {0x16, 3, 234},
+    {0x01, 2, 235},
+    {0x16, 3, 235},
   },
   /* 186 */
   {
-    {0x8003, 236},
-    {0x8006, 236},
-    {0x800a, 236},
-    {0x800f, 236},
-    {0x8018, 236},
-    {0x801f, 236},
-    {0x8029, 236},
-    {0xc038, 236},
-    {0x8003, 237},
-    {0x8006, 237},
-    {0x800a, 237},
-    {0x800f, 237},
-    {0x8018, 237},
-    {0x801f, 237},
-    {0x8029, 237},
-    {0xc038, 237},
+    {0x03, 2, 236},
+    {0x06, 2, 236},
+    {0x0a, 2, 236},
+    {0x0f, 2, 236},
+    {0x18, 2, 236},
+    {0x1f, 2, 236},
+    {0x29, 2, 236},
+    {0x38, 3, 236},
+    {0x03, 2, 237},
+    {0x06, 2, 237},
+    {0x0a, 2, 237},
+    {0x0f, 2, 237},
+    {0x18, 2, 237},
+    {0x1f, 2, 237},
+    {0x29, 2, 237},
+    {0x38, 3, 237},
   },
   /* 187 */
   {
-    {0x8002, 199},
-    {0x8009, 199},
-    {0x8017, 199},
-    {0xc028, 199},
-    {0x8002, 207},
-    {0x8009, 207},
-    {0x8017, 207},
-    {0xc028, 207},
-    {0x8002, 234},
-    {0x8009, 234},
-    {0x8017, 234},
-    {0xc028, 234},
-    {0x8002, 235},
-    {0x8009, 235},
-    {0x8017, 235},
-    {0xc028, 235},
+    {0x02, 2, 199},
+    {0x09, 2, 199},
+    {0x17, 2, 199},
+    {0x28, 3, 199},
+    {0x02, 2, 207},
+    {0x09, 2, 207},
+    {0x17, 2, 207},
+    {0x28, 3, 207},
+    {0x02, 2, 234},
+    {0x09, 2, 234},
+    {0x17, 2, 234},
+    {0x28, 3, 234},
+    {0x02, 2, 235},
+    {0x09, 2, 235},
+    {0x17, 2, 235},
+    {0x28, 3, 235},
   },
   /* 188 */
   {
-    {0x8003, 199},
-    {0x8006, 199},
-    {0x800a, 199},
-    {0x800f, 199},
-    {0x8018, 199},
-    {0x801f, 199},
-    {0x8029, 199},
-    {0xc038, 199},
-    {0x8003, 207},
-    {0x8006, 207},
-    {0x800a, 207},
-    {0x800f, 207},
-    {0x8018, 207},
-    {0x801f, 207},
-    {0x8029, 207},
-    {0xc038, 207},
+    {0x03, 2, 199},
+    {0x06, 2, 199},
+    {0x0a, 2, 199},
+    {0x0f, 2, 199},
+    {0x18, 2, 199},
+    {0x1f, 2, 199},
+    {0x29, 2, 199},
+    {0x38, 3, 199},
+    {0x03, 2, 207},
+    {0x06, 2, 207},
+    {0x0a, 2, 207},
+    {0x0f, 2, 207},
+    {0x18, 2, 207},
+    {0x1f, 2, 207},
+    {0x29, 2, 207},
+    {0x38, 3, 207},
   },
   /* 189 */
   {
-    {0x8003, 234},
-    {0x8006, 234},
-    {0x800a, 234},
-    {0x800f, 234},
-    {0x8018, 234},
-    {0x801f, 234},
-    {0x8029, 234},
-    {0xc038, 234},
-    {0x8003, 235},
-    {0x8006, 235},
-    {0x800a, 235},
-    {0x800f, 235},
-    {0x8018, 235},
-    {0x801f, 235},
-    {0x8029, 235},
-    {0xc038, 235},
+    {0x03, 2, 234},
+    {0x06, 2, 234},
+    {0x0a, 2, 234},
+    {0x0f, 2, 234},
+    {0x18, 2, 234},
+    {0x1f, 2, 234},
+    {0x29, 2, 234},
+    {0x38, 3, 234},
+    {0x03, 2, 235},
+    {0x06, 2, 235},
+    {0x0a, 2, 235},
+    {0x0f, 2, 235},
+    {0x18, 2, 235},
+    {0x1f, 2, 235},
+    {0x29, 2, 235},
+    {0x38, 3, 235},
   },
   /* 190 */
   {
-    {0xc2, 0},
-    {0xc3, 0},
-    {0xc5, 0},
-    {0xc6, 0},
-    {0xc9, 0},
-    {0xca, 0},
-    {0xcc, 0},
-    {0xcd, 0},
-    {0xd2, 0},
-    {0xd5, 0},
-    {0xd9, 0},
-    {0xdc, 0},
-    {0xe1, 0},
-    {0xe7, 0},
-    {0xef, 0},
-    {0xf6, 0},
+    {0xc2, 0, 0},
+    {0xc3, 0, 0},
+    {0xc5, 0, 0},
+    {0xc6, 0, 0},
+    {0xc9, 0, 0},
+    {0xca, 0, 0},
+    {0xcc, 0, 0},
+    {0xcd, 0, 0},
+    {0xd2, 0, 0},
+    {0xd5, 0, 0},
+    {0xd9, 0, 0},
+    {0xdc, 0, 0},
+    {0xe1, 0, 0},
+    {0xe7, 0, 0},
+    {0xef, 0, 0},
+    {0xf6, 0, 0},
   },
   /* 191 */
   {
-    {0xc000, 192},
-    {0xc000, 193},
-    {0xc000, 200},
-    {0xc000, 201},
-    {0xc000, 202},
-    {0xc000, 205},
-    {0xc000, 210},
-    {0xc000, 213},
-    {0xc000, 218},
-    {0xc000, 219},
-    {0xc000, 238},
-    {0xc000, 240},
-    {0xc000, 242},
-    {0xc000, 243},
-    {0xc000, 255},
-    {0xce, 0},
+    {0x00, 3, 192},
+    {0x00, 3, 193},
+    {0x00, 3, 200},
+    {0x00, 3, 201},
+    {0x00, 3, 202},
+    {0x00, 3, 205},
+    {0x00, 3, 210},
+    {0x00, 3, 213},
+    {0x00, 3, 218},
+    {0x00, 3, 219},
+    {0x00, 3, 238},
+    {0x00, 3, 240},
+    {0x00, 3, 242},
+    {0x00, 3, 243},
+    {0x00, 3, 255},
+    {0xce, 0, 0},
   },
   /* 192 */
   {
-    {0x8001, 192},
-    {0xc016, 192},
-    {0x8001, 193},
-    {0xc016, 193},
-    {0x8001, 200},
-    {0xc016, 200},
-    {0x8001, 201},
-    {0xc016, 201},
-    {0x8001, 202},
-    {0xc016, 202},
-    {0x8001, 205},
-    {0xc016, 205},
-    {0x8001, 210},
-    {0xc016, 210},
-    {0x8001, 213},
-    {0xc016, 213},
+    {0x01, 2, 192},
+    {0x16, 3, 192},
+    {0x01, 2, 193},
+    {0x16, 3, 193},
+    {0x01, 2, 200},
+    {0x16, 3, 200},
+    {0x01, 2, 201},
+    {0x16, 3, 201},
+    {0x01, 2, 202},
+    {0x16, 3, 202},
+    {0x01, 2, 205},
+    {0x16, 3, 205},
+    {0x01, 2, 210},
+    {0x16, 3, 210},
+    {0x01, 2, 213},
+    {0x16, 3, 213},
   },
   /* 193 */
   {
-    {0x8002, 192},
-    {0x8009, 192},
-    {0x8017, 192},
-    {0xc028, 192},
-    {0x8002, 193},
-    {0x8009, 193},
-    {0x8017, 193},
-    {0xc028, 193},
-    {0x8002, 200},
-    {0x8009, 200},
-    {0x8017, 200},
-    {0xc028, 200},
-    {0x8002, 201},
-    {0x8009, 201},
-    {0x8017, 201},
-    {0xc028, 201},
+    {0x02, 2, 192},
+    {0x09, 2, 192},
+    {0x17, 2, 192},
+    {0x28, 3, 192},
+    {0x02, 2, 193},
+    {0x09, 2, 193},
+    {0x17, 2, 193},
+    {0x28, 3, 193},
+    {0x02, 2, 200},
+    {0x09, 2, 200},
+    {0x17, 2, 200},
+    {0x28, 3, 200},
+    {0x02, 2, 201},
+    {0x09, 2, 201},
+    {0x17, 2, 201},
+    {0x28, 3, 201},
   },
   /* 194 */
   {
-    {0x8003, 192},
-    {0x8006, 192},
-    {0x800a, 192},
-    {0x800f, 192},
-    {0x8018, 192},
-    {0x801f, 192},
-    {0x8029, 192},
-    {0xc038, 192},
-    {0x8003, 193},
-    {0x8006, 193},
-    {0x800a, 193},
-    {0x800f, 193},
-    {0x8018, 193},
-    {0x801f, 193},
-    {0x8029, 193},
-    {0xc038, 193},
+    {0x03, 2, 192},
+    {0x06, 2, 192},
+    {0x0a, 2, 192},
+    {0x0f, 2, 192},
+    {0x18, 2, 192},
+    {0x1f, 2, 192},
+    {0x29, 2, 192},
+    {0x38, 3, 192},
+    {0x03, 2, 193},
+    {0x06, 2, 193},
+    {0x0a, 2, 193},
+    {0x0f, 2, 193},
+    {0x18, 2, 193},
+    {0x1f, 2, 193},
+    {0x29, 2, 193},
+    {0x38, 3, 193},
   },
   /* 195 */
   {
-    {0x8003, 200},
-    {0x8006, 200},
-    {0x800a, 200},
-    {0x800f, 200},
-    {0x8018, 200},
-    {0x801f, 200},
-    {0x8029, 200},
-    {0xc038, 200},
-    {0x8003, 201},
-    {0x8006, 201},
-    {0x800a, 201},
-    {0x800f, 201},
-    {0x8018, 201},
-    {0x801f, 201},
-    {0x8029, 201},
-    {0xc038, 201},
+    {0x03, 2, 200},
+    {0x06, 2, 200},
+    {0x0a, 2, 200},
+    {0x0f, 2, 200},
+    {0x18, 2, 200},
+    {0x1f, 2, 200},
+    {0x29, 2, 200},
+    {0x38, 3, 200},
+    {0x03, 2, 201},
+    {0x06, 2, 201},
+    {0x0a, 2, 201},
+    {0x0f, 2, 201},
+    {0x18, 2, 201},
+    {0x1f, 2, 201},
+    {0x29, 2, 201},
+    {0x38, 3, 201},
   },
   /* 196 */
   {
-    {0x8002, 202},
-    {0x8009, 202},
-    {0x8017, 202},
-    {0xc028, 202},
-    {0x8002, 205},
-    {0x8009, 205},
-    {0x8017, 205},
-    {0xc028, 205},
-    {0x8002, 210},
-    {0x8009, 210},
-    {0x8017, 210},
-    {0xc028, 210},
-    {0x8002, 213},
-    {0x8009, 213},
-    {0x8017, 213},
-    {0xc028, 213},
+    {0x02, 2, 202},
+    {0x09, 2, 202},
+    {0x17, 2, 202},
+    {0x28, 3, 202},
+    {0x02, 2, 205},
+    {0x09, 2, 205},
+    {0x17, 2, 205},
+    {0x28, 3, 205},
+    {0x02, 2, 210},
+    {0x09, 2, 210},
+    {0x17, 2, 210},
+    {0x28, 3, 210},
+    {0x02, 2, 213},
+    {0x09, 2, 213},
+    {0x17, 2, 213},
+    {0x28, 3, 213},
   },
   /* 197 */
   {
-    {0x8003, 202},
-    {0x8006, 202},
-    {0x800a, 202},
-    {0x800f, 202},
-    {0x8018, 202},
-    {0x801f, 202},
-    {0x8029, 202},
-    {0xc038, 202},
-    {0x8003, 205},
-    {0x8006, 205},
-    {0x800a, 205},
-    {0x800f, 205},
-    {0x8018, 205},
-    {0x801f, 205},
-    {0x8029, 205},
-    {0xc038, 205},
+    {0x03, 2, 202},
+    {0x06, 2, 202},
+    {0x0a, 2, 202},
+    {0x0f, 2, 202},
+    {0x18, 2, 202},
+    {0x1f, 2, 202},
+    {0x29, 2, 202},
+    {0x38, 3, 202},
+    {0x03, 2, 205},
+    {0x06, 2, 205},
+    {0x0a, 2, 205},
+    {0x0f, 2, 205},
+    {0x18, 2, 205},
+    {0x1f, 2, 205},
+    {0x29, 2, 205},
+    {0x38, 3, 205},
   },
   /* 198 */
   {
-    {0x8003, 210},
-    {0x8006, 210},
-    {0x800a, 210},
-    {0x800f, 210},
-    {0x8018, 210},
-    {0x801f, 210},
-    {0x8029, 210},
-    {0xc038, 210},
-    {0x8003, 213},
-    {0x8006, 213},
-    {0x800a, 213},
-    {0x800f, 213},
-    {0x8018, 213},
-    {0x801f, 213},
-    {0x8029, 213},
-    {0xc038, 213},
+    {0x03, 2, 210},
+    {0x06, 2, 210},
+    {0x0a, 2, 210},
+    {0x0f, 2, 210},
+    {0x18, 2, 210},
+    {0x1f, 2, 210},
+    {0x29, 2, 210},
+    {0x38, 3, 210},
+    {0x03, 2, 213},
+    {0x06, 2, 213},
+    {0x0a, 2, 213},
+    {0x0f, 2, 213},
+    {0x18, 2, 213},
+    {0x1f, 2, 213},
+    {0x29, 2, 213},
+    {0x38, 3, 213},
   },
   /* 199 */
   {
-    {0x8001, 218},
-    {0xc016, 218},
-    {0x8001, 219},
-    {0xc016, 219},
-    {0x8001, 238},
-    {0xc016, 238},
-    {0x8001, 240},
-    {0xc016, 240},
-    {0x8001, 242},
-    {0xc016, 242},
-    {0x8001, 243},
-    {0xc016, 243},
-    {0x8001, 255},
-    {0xc016, 255},
-    {0xc000, 203},
-    {0xc000, 204},
+    {0x01, 2, 218},
+    {0x16, 3, 218},
+    {0x01, 2, 219},
+    {0x16, 3, 219},
+    {0x01, 2, 238},
+    {0x16, 3, 238},
+    {0x01, 2, 240},
+    {0x16, 3, 240},
+    {0x01, 2, 242},
+    {0x16, 3, 242},
+    {0x01, 2, 243},
+    {0x16, 3, 243},
+    {0x01, 2, 255},
+    {0x16, 3, 255},
+    {0x00, 3, 203},
+    {0x00, 3, 204},
   },
   /* 200 */
   {
-    {0x8002, 218},
-    {0x8009, 218},
-    {0x8017, 218},
-    {0xc028, 218},
-    {0x8002, 219},
-    {0x8009, 219},
-    {0x8017, 219},
-    {0xc028, 219},
-    {0x8002, 238},
-    {0x8009, 238},
-    {0x8017, 238},
-    {0xc028, 238},
-    {0x8002, 240},
-    {0x8009, 240},
-    {0x8017, 240},
-    {0xc028, 240},
+    {0x02, 2, 218},
+    {0x09, 2, 218},
+    {0x17, 2, 218},
+    {0x28, 3, 218},
+    {0x02, 2, 219},
+    {0x09, 2, 219},
+    {0x17, 2, 219},
+    {0x28, 3, 219},
+    {0x02, 2, 238},
+    {0x09, 2, 238},
+    {0x17, 2, 238},
+    {0x28, 3, 238},
+    {0x02, 2, 240},
+    {0x09, 2, 240},
+    {0x17, 2, 240},
+    {0x28, 3, 240},
   },
   /* 201 */
   {
-    {0x8003, 218},
-    {0x8006, 218},
-    {0x800a, 218},
-    {0x800f, 218},
-    {0x8018, 218},
-    {0x801f, 218},
-    {0x8029, 218},
-    {0xc038, 218},
-    {0x8003, 219},
-    {0x8006, 219},
-    {0x800a, 219},
-    {0x800f, 219},
-    {0x8018, 219},
-    {0x801f, 219},
-    {0x8029, 219},
-    {0xc038, 219},
+    {0x03, 2, 218},
+    {0x06, 2, 218},
+    {0x0a, 2, 218},
+    {0x0f, 2, 218},
+    {0x18, 2, 218},
+    {0x1f, 2, 218},
+    {0x29, 2, 218},
+    {0x38, 3, 218},
+    {0x03, 2, 219},
+    {0x06, 2, 219},
+    {0x0a, 2, 219},
+    {0x0f, 2, 219},
+    {0x18, 2, 219},
+    {0x1f, 2, 219},
+    {0x29, 2, 219},
+    {0x38, 3, 219},
   },
   /* 202 */
   {
-    {0x8003, 238},
-    {0x8006, 238},
-    {0x800a, 238},
-    {0x800f, 238},
-    {0x8018, 238},
-    {0x801f, 238},
-    {0x8029, 238},
-    {0xc038, 238},
-    {0x8003, 240},
-    {0x8006, 240},
-    {0x800a, 240},
-    {0x800f, 240},
-    {0x8018, 240},
-    {0x801f, 240},
-    {0x8029, 240},
-    {0xc038, 240},
+    {0x03, 2, 238},
+    {0x06, 2, 238},
+    {0x0a, 2, 238},
+    {0x0f, 2, 238},
+    {0x18, 2, 238},
+    {0x1f, 2, 238},
+    {0x29, 2, 238},
+    {0x38, 3, 238},
+    {0x03, 2, 240},
+    {0x06, 2, 240},
+    {0x0a, 2, 240},
+    {0x0f, 2, 240},
+    {0x18, 2, 240},
+    {0x1f, 2, 240},
+    {0x29, 2, 240},
+    {0x38, 3, 240},
   },
   /* 203 */
   {
-    {0x8002, 242},
-    {0x8009, 242},
-    {0x8017, 242},
-    {0xc028, 242},
-    {0x8002, 243},
-    {0x8009, 243},
-    {0x8017, 243},
-    {0xc028, 243},
-    {0x8002, 255},
-    {0x8009, 255},
-    {0x8017, 255},
-    {0xc028, 255},
-    {0x8001, 203},
-    {0xc016, 203},
-    {0x8001, 204},
-    {0xc016, 204},
+    {0x02, 2, 242},
+    {0x09, 2, 242},
+    {0x17, 2, 242},
+    {0x28, 3, 242},
+    {0x02, 2, 243},
+    {0x09, 2, 243},
+    {0x17, 2, 243},
+    {0x28, 3, 243},
+    {0x02, 2, 255},
+    {0x09, 2, 255},
+    {0x17, 2, 255},
+    {0x28, 3, 255},
+    {0x01, 2, 203},
+    {0x16, 3, 203},
+    {0x01, 2, 204},
+    {0x16, 3, 204},
   },
   /* 204 */
   {
-    {0x8003, 242},
-    {0x8006, 242},
-    {0x800a, 242},
-    {0x800f, 242},
-    {0x8018, 242},
-    {0x801f, 242},
-    {0x8029, 242},
-    {0xc038, 242},
-    {0x8003, 243},
-    {0x8006, 243},
-    {0x800a, 243},
-    {0x800f, 243},
-    {0x8018, 243},
-    {0x801f, 243},
-    {0x8029, 243},
-    {0xc038, 243},
+    {0x03, 2, 242},
+    {0x06, 2, 242},
+    {0x0a, 2, 242},
+    {0x0f, 2, 242},
+    {0x18, 2, 242},
+    {0x1f, 2, 242},
+    {0x29, 2, 242},
+    {0x38, 3, 242},
+    {0x03, 2, 243},
+    {0x06, 2, 243},
+    {0x0a, 2, 243},
+    {0x0f, 2, 243},
+    {0x18, 2, 243},
+    {0x1f, 2, 243},
+    {0x29, 2, 243},
+    {0x38, 3, 243},
   },
   /* 205 */
   {
-    {0x8003, 255},
-    {0x8006, 255},
-    {0x800a, 255},
-    {0x800f, 255},
-    {0x8018, 255},
-    {0x801f, 255},
-    {0x8029, 255},
-    {0xc038, 255},
-    {0x8002, 203},
-    {0x8009, 203},
-    {0x8017, 203},
-    {0xc028, 203},
-    {0x8002, 204},
-    {0x8009, 204},
-    {0x8017, 204},
-    {0xc028, 204},
+    {0x03, 2, 255},
+    {0x06, 2, 255},
+    {0x0a, 2, 255},
+    {0x0f, 2, 255},
+    {0x18, 2, 255},
+    {0x1f, 2, 255},
+    {0x29, 2, 255},
+    {0x38, 3, 255},
+    {0x02, 2, 203},
+    {0x09, 2, 203},
+    {0x17, 2, 203},
+    {0x28, 3, 203},
+    {0x02, 2, 204},
+    {0x09, 2, 204},
+    {0x17, 2, 204},
+    {0x28, 3, 204},
   },
   /* 206 */
   {
-    {0x8003, 203},
-    {0x8006, 203},
-    {0x800a, 203},
-    {0x800f, 203},
-    {0x8018, 203},
-    {0x801f, 203},
-    {0x8029, 203},
-    {0xc038, 203},
-    {0x8003, 204},
-    {0x8006, 204},
-    {0x800a, 204},
-    {0x800f, 204},
-    {0x8018, 204},
-    {0x801f, 204},
-    {0x8029, 204},
-    {0xc038, 204},
+    {0x03, 2, 203},
+    {0x06, 2, 203},
+    {0x0a, 2, 203},
+    {0x0f, 2, 203},
+    {0x18, 2, 203},
+    {0x1f, 2, 203},
+    {0x29, 2, 203},
+    {0x38, 3, 203},
+    {0x03, 2, 204},
+    {0x06, 2, 204},
+    {0x0a, 2, 204},
+    {0x0f, 2, 204},
+    {0x18, 2, 204},
+    {0x1f, 2, 204},
+    {0x29, 2, 204},
+    {0x38, 3, 204},
   },
   /* 207 */
   {
-    {0xd3, 0},
-    {0xd4, 0},
-    {0xd6, 0},
-    {0xd7, 0},
-    {0xda, 0},
-    {0xdb, 0},
-    {0xdd, 0},
-    {0xde, 0},
-    {0xe2, 0},
-    {0xe4, 0},
-    {0xe8, 0},
-    {0xeb, 0},
-    {0xf0, 0},
-    {0xf3, 0},
-    {0xf7, 0},
-    {0xfa, 0},
+    {0xd3, 0, 0},
+    {0xd4, 0, 0},
+    {0xd6, 0, 0},
+    {0xd7, 0, 0},
+    {0xda, 0, 0},
+    {0xdb, 0, 0},
+    {0xdd, 0, 0},
+    {0xde, 0, 0},
+    {0xe2, 0, 0},
+    {0xe4, 0, 0},
+    {0xe8, 0, 0},
+    {0xeb, 0, 0},
+    {0xf0, 0, 0},
+    {0xf3, 0, 0},
+    {0xf7, 0, 0},
+    {0xfa, 0, 0},
   },
   /* 208 */
   {
-    {0xc000, 211},
-    {0xc000, 212},
-    {0xc000, 214},
-    {0xc000, 221},
-    {0xc000, 222},
-    {0xc000, 223},
-    {0xc000, 241},
-    {0xc000, 244},
-    {0xc000, 245},
-    {0xc000, 246},
-    {0xc000, 247},
-    {0xc000, 248},
-    {0xc000, 250},
-    {0xc000, 251},
-    {0xc000, 252},
-    {0xc000, 253},
+    {0x00, 3, 211},
+    {0x00, 3, 212},
+    {0x00, 3, 214},
+    {0x00, 3, 221},
+    {0x00, 3, 222},
+    {0x00, 3, 223},
+    {0x00, 3, 241},
+    {0x00, 3, 244},
+    {0x00, 3, 245},
+    {0x00, 3, 246},
+    {0x00, 3, 247},
+    {0x00, 3, 248},
+    {0x00, 3, 250},
+    {0x00, 3, 251},
+    {0x00, 3, 252},
+    {0x00, 3, 253},
   },
   /* 209 */
   {
-    {0x8001, 211},
-    {0xc016, 211},
-    {0x8001, 212},
-    {0xc016, 212},
-    {0x8001, 214},
-    {0xc016, 214},
-    {0x8001, 221},
-    {0xc016, 221},
-    {0x8001, 222},
-    {0xc016, 222},
-    {0x8001, 223},
-    {0xc016, 223},
-    {0x8001, 241},
-    {0xc016, 241},
-    {0x8001, 244},
-    {0xc016, 244},
+    {0x01, 2, 211},
+    {0x16, 3, 211},
+    {0x01, 2, 212},
+    {0x16, 3, 212},
+    {0x01, 2, 214},
+    {0x16, 3, 214},
+    {0x01, 2, 221},
+    {0x16, 3, 221},
+    {0x01, 2, 222},
+    {0x16, 3, 222},
+    {0x01, 2, 223},
+    {0x16, 3, 223},
+    {0x01, 2, 241},
+    {0x16, 3, 241},
+    {0x01, 2, 244},
+    {0x16, 3, 244},
   },
   /* 210 */
   {
-    {0x8002, 211},
-    {0x8009, 211},
-    {0x8017, 211},
-    {0xc028, 211},
-    {0x8002, 212},
-    {0x8009, 212},
-    {0x8017, 212},
-    {0xc028, 212},
-    {0x8002, 214},
-    {0x8009, 214},
-    {0x8017, 214},
-    {0xc028, 214},
-    {0x8002, 221},
-    {0x8009, 221},
-    {0x8017, 221},
-    {0xc028, 221},
+    {0x02, 2, 211},
+    {0x09, 2, 211},
+    {0x17, 2, 211},
+    {0x28, 3, 211},
+    {0x02, 2, 212},
+    {0x09, 2, 212},
+    {0x17, 2, 212},
+    {0x28, 3, 212},
+    {0x02, 2, 214},
+    {0x09, 2, 214},
+    {0x17, 2, 214},
+    {0x28, 3, 214},
+    {0x02, 2, 221},
+    {0x09, 2, 221},
+    {0x17, 2, 221},
+    {0x28, 3, 221},
   },
   /* 211 */
   {
-    {0x8003, 211},
-    {0x8006, 211},
-    {0x800a, 211},
-    {0x800f, 211},
-    {0x8018, 211},
-    {0x801f, 211},
-    {0x8029, 211},
-    {0xc038, 211},
-    {0x8003, 212},
-    {0x8006, 212},
-    {0x800a, 212},
-    {0x800f, 212},
-    {0x8018, 212},
-    {0x801f, 212},
-    {0x8029, 212},
-    {0xc038, 212},
+    {0x03, 2, 211},
+    {0x06, 2, 211},
+    {0x0a, 2, 211},
+    {0x0f, 2, 211},
+    {0x18, 2, 211},
+    {0x1f, 2, 211},
+    {0x29, 2, 211},
+    {0x38, 3, 211},
+    {0x03, 2, 212},
+    {0x06, 2, 212},
+    {0x0a, 2, 212},
+    {0x0f, 2, 212},
+    {0x18, 2, 212},
+    {0x1f, 2, 212},
+    {0x29, 2, 212},
+    {0x38, 3, 212},
   },
   /* 212 */
   {
-    {0x8003, 214},
-    {0x8006, 214},
-    {0x800a, 214},
-    {0x800f, 214},
-    {0x8018, 214},
-    {0x801f, 214},
-    {0x8029, 214},
-    {0xc038, 214},
-    {0x8003, 221},
-    {0x8006, 221},
-    {0x800a, 221},
-    {0x800f, 221},
-    {0x8018, 221},
-    {0x801f, 221},
-    {0x8029, 221},
-    {0xc038, 221},
+    {0x03, 2, 214},
+    {0x06, 2, 214},
+    {0x0a, 2, 214},
+    {0x0f, 2, 214},
+    {0x18, 2, 214},
+    {0x1f, 2, 214},
+    {0x29, 2, 214},
+    {0x38, 3, 214},
+    {0x03, 2, 221},
+    {0x06, 2, 221},
+    {0x0a, 2, 221},
+    {0x0f, 2, 221},
+    {0x18, 2, 221},
+    {0x1f, 2, 221},
+    {0x29, 2, 221},
+    {0x38, 3, 221},
   },
   /* 213 */
   {
-    {0x8002, 222},
-    {0x8009, 222},
-    {0x8017, 222},
-    {0xc028, 222},
-    {0x8002, 223},
-    {0x8009, 223},
-    {0x8017, 223},
-    {0xc028, 223},
-    {0x8002, 241},
-    {0x8009, 241},
-    {0x8017, 241},
-    {0xc028, 241},
-    {0x8002, 244},
-    {0x8009, 244},
-    {0x8017, 244},
-    {0xc028, 244},
+    {0x02, 2, 222},
+    {0x09, 2, 222},
+    {0x17, 2, 222},
+    {0x28, 3, 222},
+    {0x02, 2, 223},
+    {0x09, 2, 223},
+    {0x17, 2, 223},
+    {0x28, 3, 223},
+    {0x02, 2, 241},
+    {0x09, 2, 241},
+    {0x17, 2, 241},
+    {0x28, 3, 241},
+    {0x02, 2, 244},
+    {0x09, 2, 244},
+    {0x17, 2, 244},
+    {0x28, 3, 244},
   },
   /* 214 */
   {
-    {0x8003, 222},
-    {0x8006, 222},
-    {0x800a, 222},
-    {0x800f, 222},
-    {0x8018, 222},
-    {0x801f, 222},
-    {0x8029, 222},
-    {0xc038, 222},
-    {0x8003, 223},
-    {0x8006, 223},
-    {0x800a, 223},
-    {0x800f, 223},
-    {0x8018, 223},
-    {0x801f, 223},
-    {0x8029, 223},
-    {0xc038, 223},
+    {0x03, 2, 222},
+    {0x06, 2, 222},
+    {0x0a, 2, 222},
+    {0x0f, 2, 222},
+    {0x18, 2, 222},
+    {0x1f, 2, 222},
+    {0x29, 2, 222},
+    {0x38, 3, 222},
+    {0x03, 2, 223},
+    {0x06, 2, 223},
+    {0x0a, 2, 223},
+    {0x0f, 2, 223},
+    {0x18, 2, 223},
+    {0x1f, 2, 223},
+    {0x29, 2, 223},
+    {0x38, 3, 223},
   },
   /* 215 */
   {
-    {0x8003, 241},
-    {0x8006, 241},
-    {0x800a, 241},
-    {0x800f, 241},
-    {0x8018, 241},
-    {0x801f, 241},
-    {0x8029, 241},
-    {0xc038, 241},
-    {0x8003, 244},
-    {0x8006, 244},
-    {0x800a, 244},
-    {0x800f, 244},
-    {0x8018, 244},
-    {0x801f, 244},
-    {0x8029, 244},
-    {0xc038, 244},
+    {0x03, 2, 241},
+    {0x06, 2, 241},
+    {0x0a, 2, 241},
+    {0x0f, 2, 241},
+    {0x18, 2, 241},
+    {0x1f, 2, 241},
+    {0x29, 2, 241},
+    {0x38, 3, 241},
+    {0x03, 2, 244},
+    {0x06, 2, 244},
+    {0x0a, 2, 244},
+    {0x0f, 2, 244},
+    {0x18, 2, 244},
+    {0x1f, 2, 244},
+    {0x29, 2, 244},
+    {0x38, 3, 244},
   },
   /* 216 */
   {
-    {0x8001, 245},
-    {0xc016, 245},
-    {0x8001, 246},
-    {0xc016, 246},
-    {0x8001, 247},
-    {0xc016, 247},
-    {0x8001, 248},
-    {0xc016, 248},
-    {0x8001, 250},
-    {0xc016, 250},
-    {0x8001, 251},
-    {0xc016, 251},
-    {0x8001, 252},
-    {0xc016, 252},
-    {0x8001, 253},
-    {0xc016, 253},
+    {0x01, 2, 245},
+    {0x16, 3, 245},
+    {0x01, 2, 246},
+    {0x16, 3, 246},
+    {0x01, 2, 247},
+    {0x16, 3, 247},
+    {0x01, 2, 248},
+    {0x16, 3, 248},
+    {0x01, 2, 250},
+    {0x16, 3, 250},
+    {0x01, 2, 251},
+    {0x16, 3, 251},
+    {0x01, 2, 252},
+    {0x16, 3, 252},
+    {0x01, 2, 253},
+    {0x16, 3, 253},
   },
   /* 217 */
   {
-    {0x8002, 245},
-    {0x8009, 245},
-    {0x8017, 245},
-    {0xc028, 245},
-    {0x8002, 246},
-    {0x8009, 246},
-    {0x8017, 246},
-    {0xc028, 246},
-    {0x8002, 247},
-    {0x8009, 247},
-    {0x8017, 247},
-    {0xc028, 247},
-    {0x8002, 248},
-    {0x8009, 248},
-    {0x8017, 248},
-    {0xc028, 248},
+    {0x02, 2, 245},
+    {0x09, 2, 245},
+    {0x17, 2, 245},
+    {0x28, 3, 245},
+    {0x02, 2, 246},
+    {0x09, 2, 246},
+    {0x17, 2, 246},
+    {0x28, 3, 246},
+    {0x02, 2, 247},
+    {0x09, 2, 247},
+    {0x17, 2, 247},
+    {0x28, 3, 247},
+    {0x02, 2, 248},
+    {0x09, 2, 248},
+    {0x17, 2, 248},
+    {0x28, 3, 248},
   },
   /* 218 */
   {
-    {0x8003, 245},
-    {0x8006, 245},
-    {0x800a, 245},
-    {0x800f, 245},
-    {0x8018, 245},
-    {0x801f, 245},
-    {0x8029, 245},
-    {0xc038, 245},
-    {0x8003, 246},
-    {0x8006, 246},
-    {0x800a, 246},
-    {0x800f, 246},
-    {0x8018, 246},
-    {0x801f, 246},
-    {0x8029, 246},
-    {0xc038, 246},
+    {0x03, 2, 245},
+    {0x06, 2, 245},
+    {0x0a, 2, 245},
+    {0x0f, 2, 245},
+    {0x18, 2, 245},
+    {0x1f, 2, 245},
+    {0x29, 2, 245},
+    {0x38, 3, 245},
+    {0x03, 2, 246},
+    {0x06, 2, 246},
+    {0x0a, 2, 246},
+    {0x0f, 2, 246},
+    {0x18, 2, 246},
+    {0x1f, 2, 246},
+    {0x29, 2, 246},
+    {0x38, 3, 246},
   },
   /* 219 */
   {
-    {0x8003, 247},
-    {0x8006, 247},
-    {0x800a, 247},
-    {0x800f, 247},
-    {0x8018, 247},
-    {0x801f, 247},
-    {0x8029, 247},
-    {0xc038, 247},
-    {0x8003, 248},
-    {0x8006, 248},
-    {0x800a, 248},
-    {0x800f, 248},
-    {0x8018, 248},
-    {0x801f, 248},
-    {0x8029, 248},
-    {0xc038, 248},
+    {0x03, 2, 247},
+    {0x06, 2, 247},
+    {0x0a, 2, 247},
+    {0x0f, 2, 247},
+    {0x18, 2, 247},
+    {0x1f, 2, 247},
+    {0x29, 2, 247},
+    {0x38, 3, 247},
+    {0x03, 2, 248},
+    {0x06, 2, 248},
+    {0x0a, 2, 248},
+    {0x0f, 2, 248},
+    {0x18, 2, 248},
+    {0x1f, 2, 248},
+    {0x29, 2, 248},
+    {0x38, 3, 248},
   },
   /* 220 */
   {
-    {0x8002, 250},
-    {0x8009, 250},
-    {0x8017, 250},
-    {0xc028, 250},
-    {0x8002, 251},
-    {0x8009, 251},
-    {0x8017, 251},
-    {0xc028, 251},
-    {0x8002, 252},
-    {0x8009, 252},
-    {0x8017, 252},
-    {0xc028, 252},
-    {0x8002, 253},
-    {0x8009, 253},
-    {0x8017, 253},
-    {0xc028, 253},
+    {0x02, 2, 250},
+    {0x09, 2, 250},
+    {0x17, 2, 250},
+    {0x28, 3, 250},
+    {0x02, 2, 251},
+    {0x09, 2, 251},
+    {0x17, 2, 251},
+    {0x28, 3, 251},
+    {0x02, 2, 252},
+    {0x09, 2, 252},
+    {0x17, 2, 252},
+    {0x28, 3, 252},
+    {0x02, 2, 253},
+    {0x09, 2, 253},
+    {0x17, 2, 253},
+    {0x28, 3, 253},
   },
   /* 221 */
   {
-    {0x8003, 250},
-    {0x8006, 250},
-    {0x800a, 250},
-    {0x800f, 250},
-    {0x8018, 250},
-    {0x801f, 250},
-    {0x8029, 250},
-    {0xc038, 250},
-    {0x8003, 251},
-    {0x8006, 251},
-    {0x800a, 251},
-    {0x800f, 251},
-    {0x8018, 251},
-    {0x801f, 251},
-    {0x8029, 251},
-    {0xc038, 251},
+    {0x03, 2, 250},
+    {0x06, 2, 250},
+    {0x0a, 2, 250},
+    {0x0f, 2, 250},
+    {0x18, 2, 250},
+    {0x1f, 2, 250},
+    {0x29, 2, 250},
+    {0x38, 3, 250},
+    {0x03, 2, 251},
+    {0x06, 2, 251},
+    {0x0a, 2, 251},
+    {0x0f, 2, 251},
+    {0x18, 2, 251},
+    {0x1f, 2, 251},
+    {0x29, 2, 251},
+    {0x38, 3, 251},
   },
   /* 222 */
   {
-    {0x8003, 252},
-    {0x8006, 252},
-    {0x800a, 252},
-    {0x800f, 252},
-    {0x8018, 252},
-    {0x801f, 252},
-    {0x8029, 252},
-    {0xc038, 252},
-    {0x8003, 253},
-    {0x8006, 253},
-    {0x800a, 253},
-    {0x800f, 253},
-    {0x8018, 253},
-    {0x801f, 253},
-    {0x8029, 253},
-    {0xc038, 253},
+    {0x03, 2, 252},
+    {0x06, 2, 252},
+    {0x0a, 2, 252},
+    {0x0f, 2, 252},
+    {0x18, 2, 252},
+    {0x1f, 2, 252},
+    {0x29, 2, 252},
+    {0x38, 3, 252},
+    {0x03, 2, 253},
+    {0x06, 2, 253},
+    {0x0a, 2, 253},
+    {0x0f, 2, 253},
+    {0x18, 2, 253},
+    {0x1f, 2, 253},
+    {0x29, 2, 253},
+    {0x38, 3, 253},
   },
   /* 223 */
   {
-    {0xc000, 254},
-    {0xe3, 0},
-    {0xe5, 0},
-    {0xe6, 0},
-    {0xe9, 0},
-    {0xea, 0},
-    {0xec, 0},
-    {0xed, 0},
-    {0xf1, 0},
-    {0xf2, 0},
-    {0xf4, 0},
-    {0xf5, 0},
-    {0xf8, 0},
-    {0xf9, 0},
-    {0xfb, 0},
-    {0xfc, 0},
+    {0x00, 3, 254},
+    {0xe3, 0, 0},
+    {0xe5, 0, 0},
+    {0xe6, 0, 0},
+    {0xe9, 0, 0},
+    {0xea, 0, 0},
+    {0xec, 0, 0},
+    {0xed, 0, 0},
+    {0xf1, 0, 0},
+    {0xf2, 0, 0},
+    {0xf4, 0, 0},
+    {0xf5, 0, 0},
+    {0xf8, 0, 0},
+    {0xf9, 0, 0},
+    {0xfb, 0, 0},
+    {0xfc, 0, 0},
   },
   /* 224 */
   {
-    {0x8001, 254},
-    {0xc016, 254},
-    {0xc000, 2},
-    {0xc000, 3},
-    {0xc000, 4},
-    {0xc000, 5},
-    {0xc000, 6},
-    {0xc000, 7},
-    {0xc000, 8},
-    {0xc000, 11},
-    {0xc000, 12},
-    {0xc000, 14},
-    {0xc000, 15},
-    {0xc000, 16},
-    {0xc000, 17},
-    {0xc000, 18},
+    {0x01, 2, 254},
+    {0x16, 3, 254},
+    {0x00, 3, 2},
+    {0x00, 3, 3},
+    {0x00, 3, 4},
+    {0x00, 3, 5},
+    {0x00, 3, 6},
+    {0x00, 3, 7},
+    {0x00, 3, 8},
+    {0x00, 3, 11},
+    {0x00, 3, 12},
+    {0x00, 3, 14},
+    {0x00, 3, 15},
+    {0x00, 3, 16},
+    {0x00, 3, 17},
+    {0x00, 3, 18},
   },
   /* 225 */
   {
-    {0x8002, 254},
-    {0x8009, 254},
-    {0x8017, 254},
-    {0xc028, 254},
-    {0x8001, 2},
-    {0xc016, 2},
-    {0x8001, 3},
-    {0xc016, 3},
-    {0x8001, 4},
-    {0xc016, 4},
-    {0x8001, 5},
-    {0xc016, 5},
-    {0x8001, 6},
-    {0xc016, 6},
-    {0x8001, 7},
-    {0xc016, 7},
+    {0x02, 2, 254},
+    {0x09, 2, 254},
+    {0x17, 2, 254},
+    {0x28, 3, 254},
+    {0x01, 2, 2},
+    {0x16, 3, 2},
+    {0x01, 2, 3},
+    {0x16, 3, 3},
+    {0x01, 2, 4},
+    {0x16, 3, 4},
+    {0x01, 2, 5},
+    {0x16, 3, 5},
+    {0x01, 2, 6},
+    {0x16, 3, 6},
+    {0x01, 2, 7},
+    {0x16, 3, 7},
   },
   /* 226 */
   {
-    {0x8003, 254},
-    {0x8006, 254},
-    {0x800a, 254},
-    {0x800f, 254},
-    {0x8018, 254},
-    {0x801f, 254},
-    {0x8029, 254},
-    {0xc038, 254},
-    {0x8002, 2},
-    {0x8009, 2},
-    {0x8017, 2},
-    {0xc028, 2},
-    {0x8002, 3},
-    {0x8009, 3},
-    {0x8017, 3},
-    {0xc028, 3},
+    {0x03, 2, 254},
+    {0x06, 2, 254},
+    {0x0a, 2, 254},
+    {0x0f, 2, 254},
+    {0x18, 2, 254},
+    {0x1f, 2, 254},
+    {0x29, 2, 254},
+    {0x38, 3, 254},
+    {0x02, 2, 2},
+    {0x09, 2, 2},
+    {0x17, 2, 2},
+    {0x28, 3, 2},
+    {0x02, 2, 3},
+    {0x09, 2, 3},
+    {0x17, 2, 3},
+    {0x28, 3, 3},
   },
   /* 227 */
   {
-    {0x8003, 2},
-    {0x8006, 2},
-    {0x800a, 2},
-    {0x800f, 2},
-    {0x8018, 2},
-    {0x801f, 2},
-    {0x8029, 2},
-    {0xc038, 2},
-    {0x8003, 3},
-    {0x8006, 3},
-    {0x800a, 3},
-    {0x800f, 3},
-    {0x8018, 3},
-    {0x801f, 3},
-    {0x8029, 3},
-    {0xc038, 3},
+    {0x03, 2, 2},
+    {0x06, 2, 2},
+    {0x0a, 2, 2},
+    {0x0f, 2, 2},
+    {0x18, 2, 2},
+    {0x1f, 2, 2},
+    {0x29, 2, 2},
+    {0x38, 3, 2},
+    {0x03, 2, 3},
+    {0x06, 2, 3},
+    {0x0a, 2, 3},
+    {0x0f, 2, 3},
+    {0x18, 2, 3},
+    {0x1f, 2, 3},
+    {0x29, 2, 3},
+    {0x38, 3, 3},
   },
   /* 228 */
   {
-    {0x8002, 4},
-    {0x8009, 4},
-    {0x8017, 4},
-    {0xc028, 4},
-    {0x8002, 5},
-    {0x8009, 5},
-    {0x8017, 5},
-    {0xc028, 5},
-    {0x8002, 6},
-    {0x8009, 6},
-    {0x8017, 6},
-    {0xc028, 6},
-    {0x8002, 7},
-    {0x8009, 7},
-    {0x8017, 7},
-    {0xc028, 7},
+    {0x02, 2, 4},
+    {0x09, 2, 4},
+    {0x17, 2, 4},
+    {0x28, 3, 4},
+    {0x02, 2, 5},
+    {0x09, 2, 5},
+    {0x17, 2, 5},
+    {0x28, 3, 5},
+    {0x02, 2, 6},
+    {0x09, 2, 6},
+    {0x17, 2, 6},
+    {0x28, 3, 6},
+    {0x02, 2, 7},
+    {0x09, 2, 7},
+    {0x17, 2, 7},
+    {0x28, 3, 7},
   },
   /* 229 */
   {
-    {0x8003, 4},
-    {0x8006, 4},
-    {0x800a, 4},
-    {0x800f, 4},
-    {0x8018, 4},
-    {0x801f, 4},
-    {0x8029, 4},
-    {0xc038, 4},
-    {0x8003, 5},
-    {0x8006, 5},
-    {0x800a, 5},
-    {0x800f, 5},
-    {0x8018, 5},
-    {0x801f, 5},
-    {0x8029, 5},
-    {0xc038, 5},
+    {0x03, 2, 4},
+    {0x06, 2, 4},
+    {0x0a, 2, 4},
+    {0x0f, 2, 4},
+    {0x18, 2, 4},
+    {0x1f, 2, 4},
+    {0x29, 2, 4},
+    {0x38, 3, 4},
+    {0x03, 2, 5},
+    {0x06, 2, 5},
+    {0x0a, 2, 5},
+    {0x0f, 2, 5},
+    {0x18, 2, 5},
+    {0x1f, 2, 5},
+    {0x29, 2, 5},
+    {0x38, 3, 5},
   },
   /* 230 */
   {
-    {0x8003, 6},
-    {0x8006, 6},
-    {0x800a, 6},
-    {0x800f, 6},
-    {0x8018, 6},
-    {0x801f, 6},
-    {0x8029, 6},
-    {0xc038, 6},
-    {0x8003, 7},
-    {0x8006, 7},
-    {0x800a, 7},
-    {0x800f, 7},
-    {0x8018, 7},
-    {0x801f, 7},
-    {0x8029, 7},
-    {0xc038, 7},
+    {0x03, 2, 6},
+    {0x06, 2, 6},
+    {0x0a, 2, 6},
+    {0x0f, 2, 6},
+    {0x18, 2, 6},
+    {0x1f, 2, 6},
+    {0x29, 2, 6},
+    {0x38, 3, 6},
+    {0x03, 2, 7},
+    {0x06, 2, 7},
+    {0x0a, 2, 7},
+    {0x0f, 2, 7},
+    {0x18, 2, 7},
+    {0x1f, 2, 7},
+    {0x29, 2, 7},
+    {0x38, 3, 7},
   },
   /* 231 */
   {
-    {0x8001, 8},
-    {0xc016, 8},
-    {0x8001, 11},
-    {0xc016, 11},
-    {0x8001, 12},
-    {0xc016, 12},
-    {0x8001, 14},
-    {0xc016, 14},
-    {0x8001, 15},
-    {0xc016, 15},
-    {0x8001, 16},
-    {0xc016, 16},
-    {0x8001, 17},
-    {0xc016, 17},
-    {0x8001, 18},
-    {0xc016, 18},
+    {0x01, 2, 8},
+    {0x16, 3, 8},
+    {0x01, 2, 11},
+    {0x16, 3, 11},
+    {0x01, 2, 12},
+    {0x16, 3, 12},
+    {0x01, 2, 14},
+    {0x16, 3, 14},
+    {0x01, 2, 15},
+    {0x16, 3, 15},
+    {0x01, 2, 16},
+    {0x16, 3, 16},
+    {0x01, 2, 17},
+    {0x16, 3, 17},
+    {0x01, 2, 18},
+    {0x16, 3, 18},
   },
   /* 232 */
   {
-    {0x8002, 8},
-    {0x8009, 8},
-    {0x8017, 8},
-    {0xc028, 8},
-    {0x8002, 11},
-    {0x8009, 11},
-    {0x8017, 11},
-    {0xc028, 11},
-    {0x8002, 12},
-    {0x8009, 12},
-    {0x8017, 12},
-    {0xc028, 12},
-    {0x8002, 14},
-    {0x8009, 14},
-    {0x8017, 14},
-    {0xc028, 14},
+    {0x02, 2, 8},
+    {0x09, 2, 8},
+    {0x17, 2, 8},
+    {0x28, 3, 8},
+    {0x02, 2, 11},
+    {0x09, 2, 11},
+    {0x17, 2, 11},
+    {0x28, 3, 11},
+    {0x02, 2, 12},
+    {0x09, 2, 12},
+    {0x17, 2, 12},
+    {0x28, 3, 12},
+    {0x02, 2, 14},
+    {0x09, 2, 14},
+    {0x17, 2, 14},
+    {0x28, 3, 14},
   },
   /* 233 */
   {
-    {0x8003, 8},
-    {0x8006, 8},
-    {0x800a, 8},
-    {0x800f, 8},
-    {0x8018, 8},
-    {0x801f, 8},
-    {0x8029, 8},
-    {0xc038, 8},
-    {0x8003, 11},
-    {0x8006, 11},
-    {0x800a, 11},
-    {0x800f, 11},
-    {0x8018, 11},
-    {0x801f, 11},
-    {0x8029, 11},
-    {0xc038, 11},
+    {0x03, 2, 8},
+    {0x06, 2, 8},
+    {0x0a, 2, 8},
+    {0x0f, 2, 8},
+    {0x18, 2, 8},
+    {0x1f, 2, 8},
+    {0x29, 2, 8},
+    {0x38, 3, 8},
+    {0x03, 2, 11},
+    {0x06, 2, 11},
+    {0x0a, 2, 11},
+    {0x0f, 2, 11},
+    {0x18, 2, 11},
+    {0x1f, 2, 11},
+    {0x29, 2, 11},
+    {0x38, 3, 11},
   },
   /* 234 */
   {
-    {0x8003, 12},
-    {0x8006, 12},
-    {0x800a, 12},
-    {0x800f, 12},
-    {0x8018, 12},
-    {0x801f, 12},
-    {0x8029, 12},
-    {0xc038, 12},
-    {0x8003, 14},
-    {0x8006, 14},
-    {0x800a, 14},
-    {0x800f, 14},
-    {0x8018, 14},
-    {0x801f, 14},
-    {0x8029, 14},
-    {0xc038, 14},
+    {0x03, 2, 12},
+    {0x06, 2, 12},
+    {0x0a, 2, 12},
+    {0x0f, 2, 12},
+    {0x18, 2, 12},
+    {0x1f, 2, 12},
+    {0x29, 2, 12},
+    {0x38, 3, 12},
+    {0x03, 2, 14},
+    {0x06, 2, 14},
+    {0x0a, 2, 14},
+    {0x0f, 2, 14},
+    {0x18, 2, 14},
+    {0x1f, 2, 14},
+    {0x29, 2, 14},
+    {0x38, 3, 14},
   },
   /* 235 */
   {
-    {0x8002, 15},
-    {0x8009, 15},
-    {0x8017, 15},
-    {0xc028, 15},
-    {0x8002, 16},
-    {0x8009, 16},
-    {0x8017, 16},
-    {0xc028, 16},
-    {0x8002, 17},
-    {0x8009, 17},
-    {0x8017, 17},
-    {0xc028, 17},
-    {0x8002, 18},
-    {0x8009, 18},
-    {0x8017, 18},
-    {0xc028, 18},
+    {0x02, 2, 15},
+    {0x09, 2, 15},
+    {0x17, 2, 15},
+    {0x28, 3, 15},
+    {0x02, 2, 16},
+    {0x09, 2, 16},
+    {0x17, 2, 16},
+    {0x28, 3, 16},
+    {0x02, 2, 17},
+    {0x09, 2, 17},
+    {0x17, 2, 17},
+    {0x28, 3, 17},
+    {0x02, 2, 18},
+    {0x09, 2, 18},
+    {0x17, 2, 18},
+    {0x28, 3, 18},
   },
   /* 236 */
   {
-    {0x8003, 15},
-    {0x8006, 15},
-    {0x800a, 15},
-    {0x800f, 15},
-    {0x8018, 15},
-    {0x801f, 15},
-    {0x8029, 15},
-    {0xc038, 15},
-    {0x8003, 16},
-    {0x8006, 16},
-    {0x800a, 16},
-    {0x800f, 16},
-    {0x8018, 16},
-    {0x801f, 16},
-    {0x8029, 16},
-    {0xc038, 16},
+    {0x03, 2, 15},
+    {0x06, 2, 15},
+    {0x0a, 2, 15},
+    {0x0f, 2, 15},
+    {0x18, 2, 15},
+    {0x1f, 2, 15},
+    {0x29, 2, 15},
+    {0x38, 3, 15},
+    {0x03, 2, 16},
+    {0x06, 2, 16},
+    {0x0a, 2, 16},
+    {0x0f, 2, 16},
+    {0x18, 2, 16},
+    {0x1f, 2, 16},
+    {0x29, 2, 16},
+    {0x38, 3, 16},
   },
   /* 237 */
   {
-    {0x8003, 17},
-    {0x8006, 17},
-    {0x800a, 17},
-    {0x800f, 17},
-    {0x8018, 17},
-    {0x801f, 17},
-    {0x8029, 17},
-    {0xc038, 17},
-    {0x8003, 18},
-    {0x8006, 18},
-    {0x800a, 18},
-    {0x800f, 18},
-    {0x8018, 18},
-    {0x801f, 18},
-    {0x8029, 18},
-    {0xc038, 18},
+    {0x03, 2, 17},
+    {0x06, 2, 17},
+    {0x0a, 2, 17},
+    {0x0f, 2, 17},
+    {0x18, 2, 17},
+    {0x1f, 2, 17},
+    {0x29, 2, 17},
+    {0x38, 3, 17},
+    {0x03, 2, 18},
+    {0x06, 2, 18},
+    {0x0a, 2, 18},
+    {0x0f, 2, 18},
+    {0x18, 2, 18},
+    {0x1f, 2, 18},
+    {0x29, 2, 18},
+    {0x38, 3, 18},
   },
   /* 238 */
   {
-    {0xc000, 19},
-    {0xc000, 20},
-    {0xc000, 21},
-    {0xc000, 23},
-    {0xc000, 24},
-    {0xc000, 25},
-    {0xc000, 26},
-    {0xc000, 27},
-    {0xc000, 28},
-    {0xc000, 29},
-    {0xc000, 30},
-    {0xc000, 31},
-    {0xc000, 127},
-    {0xc000, 220},
-    {0xc000, 249},
-    {0xfd, 0},
+    {0x00, 3, 19},
+    {0x00, 3, 20},
+    {0x00, 3, 21},
+    {0x00, 3, 23},
+    {0x00, 3, 24},
+    {0x00, 3, 25},
+    {0x00, 3, 26},
+    {0x00, 3, 27},
+    {0x00, 3, 28},
+    {0x00, 3, 29},
+    {0x00, 3, 30},
+    {0x00, 3, 31},
+    {0x00, 3, 127},
+    {0x00, 3, 220},
+    {0x00, 3, 249},
+    {0xfd, 0, 0},
   },
   /* 239 */
   {
-    {0x8001, 19},
-    {0xc016, 19},
-    {0x8001, 20},
-    {0xc016, 20},
-    {0x8001, 21},
-    {0xc016, 21},
-    {0x8001, 23},
-    {0xc016, 23},
-    {0x8001, 24},
-    {0xc016, 24},
-    {0x8001, 25},
-    {0xc016, 25},
-    {0x8001, 26},
-    {0xc016, 26},
-    {0x8001, 27},
-    {0xc016, 27},
+    {0x01, 2, 19},
+    {0x16, 3, 19},
+    {0x01, 2, 20},
+    {0x16, 3, 20},
+    {0x01, 2, 21},
+    {0x16, 3, 21},
+    {0x01, 2, 23},
+    {0x16, 3, 23},
+    {0x01, 2, 24},
+    {0x16, 3, 24},
+    {0x01, 2, 25},
+    {0x16, 3, 25},
+    {0x01, 2, 26},
+    {0x16, 3, 26},
+    {0x01, 2, 27},
+    {0x16, 3, 27},
   },
   /* 240 */
   {
-    {0x8002, 19},
-    {0x8009, 19},
-    {0x8017, 19},
-    {0xc028, 19},
-    {0x8002, 20},
-    {0x8009, 20},
-    {0x8017, 20},
-    {0xc028, 20},
-    {0x8002, 21},
-    {0x8009, 21},
-    {0x8017, 21},
-    {0xc028, 21},
-    {0x8002, 23},
-    {0x8009, 23},
-    {0x8017, 23},
-    {0xc028, 23},
+    {0x02, 2, 19},
+    {0x09, 2, 19},
+    {0x17, 2, 19},
+    {0x28, 3, 19},
+    {0x02, 2, 20},
+    {0x09, 2, 20},
+    {0x17, 2, 20},
+    {0x28, 3, 20},
+    {0x02, 2, 21},
+    {0x09, 2, 21},
+    {0x17, 2, 21},
+    {0x28, 3, 21},
+    {0x02, 2, 23},
+    {0x09, 2, 23},
+    {0x17, 2, 23},
+    {0x28, 3, 23},
   },
   /* 241 */
   {
-    {0x8003, 19},
-    {0x8006, 19},
-    {0x800a, 19},
-    {0x800f, 19},
-    {0x8018, 19},
-    {0x801f, 19},
-    {0x8029, 19},
-    {0xc038, 19},
-    {0x8003, 20},
-    {0x8006, 20},
-    {0x800a, 20},
-    {0x800f, 20},
-    {0x8018, 20},
-    {0x801f, 20},
-    {0x8029, 20},
-    {0xc038, 20},
+    {0x03, 2, 19},
+    {0x06, 2, 19},
+    {0x0a, 2, 19},
+    {0x0f, 2, 19},
+    {0x18, 2, 19},
+    {0x1f, 2, 19},
+    {0x29, 2, 19},
+    {0x38, 3, 19},
+    {0x03, 2, 20},
+    {0x06, 2, 20},
+    {0x0a, 2, 20},
+    {0x0f, 2, 20},
+    {0x18, 2, 20},
+    {0x1f, 2, 20},
+    {0x29, 2, 20},
+    {0x38, 3, 20},
   },
   /* 242 */
   {
-    {0x8003, 21},
-    {0x8006, 21},
-    {0x800a, 21},
-    {0x800f, 21},
-    {0x8018, 21},
-    {0x801f, 21},
-    {0x8029, 21},
-    {0xc038, 21},
-    {0x8003, 23},
-    {0x8006, 23},
-    {0x800a, 23},
-    {0x800f, 23},
-    {0x8018, 23},
-    {0x801f, 23},
-    {0x8029, 23},
-    {0xc038, 23},
+    {0x03, 2, 21},
+    {0x06, 2, 21},
+    {0x0a, 2, 21},
+    {0x0f, 2, 21},
+    {0x18, 2, 21},
+    {0x1f, 2, 21},
+    {0x29, 2, 21},
+    {0x38, 3, 21},
+    {0x03, 2, 23},
+    {0x06, 2, 23},
+    {0x0a, 2, 23},
+    {0x0f, 2, 23},
+    {0x18, 2, 23},
+    {0x1f, 2, 23},
+    {0x29, 2, 23},
+    {0x38, 3, 23},
   },
   /* 243 */
   {
-    {0x8002, 24},
-    {0x8009, 24},
-    {0x8017, 24},
-    {0xc028, 24},
-    {0x8002, 25},
-    {0x8009, 25},
-    {0x8017, 25},
-    {0xc028, 25},
-    {0x8002, 26},
-    {0x8009, 26},
-    {0x8017, 26},
-    {0xc028, 26},
-    {0x8002, 27},
-    {0x8009, 27},
-    {0x8017, 27},
-    {0xc028, 27},
+    {0x02, 2, 24},
+    {0x09, 2, 24},
+    {0x17, 2, 24},
+    {0x28, 3, 24},
+    {0x02, 2, 25},
+    {0x09, 2, 25},
+    {0x17, 2, 25},
+    {0x28, 3, 25},
+    {0x02, 2, 26},
+    {0x09, 2, 26},
+    {0x17, 2, 26},
+    {0x28, 3, 26},
+    {0x02, 2, 27},
+    {0x09, 2, 27},
+    {0x17, 2, 27},
+    {0x28, 3, 27},
   },
   /* 244 */
   {
-    {0x8003, 24},
-    {0x8006, 24},
-    {0x800a, 24},
-    {0x800f, 24},
-    {0x8018, 24},
-    {0x801f, 24},
-    {0x8029, 24},
-    {0xc038, 24},
-    {0x8003, 25},
-    {0x8006, 25},
-    {0x800a, 25},
-    {0x800f, 25},
-    {0x8018, 25},
-    {0x801f, 25},
-    {0x8029, 25},
-    {0xc038, 25},
+    {0x03, 2, 24},
+    {0x06, 2, 24},
+    {0x0a, 2, 24},
+    {0x0f, 2, 24},
+    {0x18, 2, 24},
+    {0x1f, 2, 24},
+    {0x29, 2, 24},
+    {0x38, 3, 24},
+    {0x03, 2, 25},
+    {0x06, 2, 25},
+    {0x0a, 2, 25},
+    {0x0f, 2, 25},
+    {0x18, 2, 25},
+    {0x1f, 2, 25},
+    {0x29, 2, 25},
+    {0x38, 3, 25},
   },
   /* 245 */
   {
-    {0x8003, 26},
-    {0x8006, 26},
-    {0x800a, 26},
-    {0x800f, 26},
-    {0x8018, 26},
-    {0x801f, 26},
-    {0x8029, 26},
-    {0xc038, 26},
-    {0x8003, 27},
-    {0x8006, 27},
-    {0x800a, 27},
-    {0x800f, 27},
-    {0x8018, 27},
-    {0x801f, 27},
-    {0x8029, 27},
-    {0xc038, 27},
+    {0x03, 2, 26},
+    {0x06, 2, 26},
+    {0x0a, 2, 26},
+    {0x0f, 2, 26},
+    {0x18, 2, 26},
+    {0x1f, 2, 26},
+    {0x29, 2, 26},
+    {0x38, 3, 26},
+    {0x03, 2, 27},
+    {0x06, 2, 27},
+    {0x0a, 2, 27},
+    {0x0f, 2, 27},
+    {0x18, 2, 27},
+    {0x1f, 2, 27},
+    {0x29, 2, 27},
+    {0x38, 3, 27},
   },
   /* 246 */
   {
-    {0x8001, 28},
-    {0xc016, 28},
-    {0x8001, 29},
-    {0xc016, 29},
-    {0x8001, 30},
-    {0xc016, 30},
-    {0x8001, 31},
-    {0xc016, 31},
-    {0x8001, 127},
-    {0xc016, 127},
-    {0x8001, 220},
-    {0xc016, 220},
-    {0x8001, 249},
-    {0xc016, 249},
-    {0xfe, 0},
-    {0xff, 0},
+    {0x01, 2, 28},
+    {0x16, 3, 28},
+    {0x01, 2, 29},
+    {0x16, 3, 29},
+    {0x01, 2, 30},
+    {0x16, 3, 30},
+    {0x01, 2, 31},
+    {0x16, 3, 31},
+    {0x01, 2, 127},
+    {0x16, 3, 127},
+    {0x01, 2, 220},
+    {0x16, 3, 220},
+    {0x01, 2, 249},
+    {0x16, 3, 249},
+    {0xfe, 0, 0},
+    {0xff, 0, 0},
   },
   /* 247 */
   {
-    {0x8002, 28},
-    {0x8009, 28},
-    {0x8017, 28},
-    {0xc028, 28},
-    {0x8002, 29},
-    {0x8009, 29},
-    {0x8017, 29},
-    {0xc028, 29},
-    {0x8002, 30},
-    {0x8009, 30},
-    {0x8017, 30},
-    {0xc028, 30},
-    {0x8002, 31},
-    {0x8009, 31},
-    {0x8017, 31},
-    {0xc028, 31},
+    {0x02, 2, 28},
+    {0x09, 2, 28},
+    {0x17, 2, 28},
+    {0x28, 3, 28},
+    {0x02, 2, 29},
+    {0x09, 2, 29},
+    {0x17, 2, 29},
+    {0x28, 3, 29},
+    {0x02, 2, 30},
+    {0x09, 2, 30},
+    {0x17, 2, 30},
+    {0x28, 3, 30},
+    {0x02, 2, 31},
+    {0x09, 2, 31},
+    {0x17, 2, 31},
+    {0x28, 3, 31},
   },
   /* 248 */
   {
-    {0x8003, 28},
-    {0x8006, 28},
-    {0x800a, 28},
-    {0x800f, 28},
-    {0x8018, 28},
-    {0x801f, 28},
-    {0x8029, 28},
-    {0xc038, 28},
-    {0x8003, 29},
-    {0x8006, 29},
-    {0x800a, 29},
-    {0x800f, 29},
-    {0x8018, 29},
-    {0x801f, 29},
-    {0x8029, 29},
-    {0xc038, 29},
+    {0x03, 2, 28},
+    {0x06, 2, 28},
+    {0x0a, 2, 28},
+    {0x0f, 2, 28},
+    {0x18, 2, 28},
+    {0x1f, 2, 28},
+    {0x29, 2, 28},
+    {0x38, 3, 28},
+    {0x03, 2, 29},
+    {0x06, 2, 29},
+    {0x0a, 2, 29},
+    {0x0f, 2, 29},
+    {0x18, 2, 29},
+    {0x1f, 2, 29},
+    {0x29, 2, 29},
+    {0x38, 3, 29},
   },
   /* 249 */
   {
-    {0x8003, 30},
-    {0x8006, 30},
-    {0x800a, 30},
-    {0x800f, 30},
-    {0x8018, 30},
-    {0x801f, 30},
-    {0x8029, 30},
-    {0xc038, 30},
-    {0x8003, 31},
-    {0x8006, 31},
-    {0x800a, 31},
-    {0x800f, 31},
-    {0x8018, 31},
-    {0x801f, 31},
-    {0x8029, 31},
-    {0xc038, 31},
+    {0x03, 2, 30},
+    {0x06, 2, 30},
+    {0x0a, 2, 30},
+    {0x0f, 2, 30},
+    {0x18, 2, 30},
+    {0x1f, 2, 30},
+    {0x29, 2, 30},
+    {0x38, 3, 30},
+    {0x03, 2, 31},
+    {0x06, 2, 31},
+    {0x0a, 2, 31},
+    {0x0f, 2, 31},
+    {0x18, 2, 31},
+    {0x1f, 2, 31},
+    {0x29, 2, 31},
+    {0x38, 3, 31},
   },
   /* 250 */
   {
-    {0x8002, 127},
-    {0x8009, 127},
-    {0x8017, 127},
-    {0xc028, 127},
-    {0x8002, 220},
-    {0x8009, 220},
-    {0x8017, 220},
-    {0xc028, 220},
-    {0x8002, 249},
-    {0x8009, 249},
-    {0x8017, 249},
-    {0xc028, 249},
-    {0xc000, 10},
-    {0xc000, 13},
-    {0xc000, 22},
-    {0x100, 0},
+    {0x02, 2, 127},
+    {0x09, 2, 127},
+    {0x17, 2, 127},
+    {0x28, 3, 127},
+    {0x02, 2, 220},
+    {0x09, 2, 220},
+    {0x17, 2, 220},
+    {0x28, 3, 220},
+    {0x02, 2, 249},
+    {0x09, 2, 249},
+    {0x17, 2, 249},
+    {0x28, 3, 249},
+    {0x00, 3, 10},
+    {0x00, 3, 13},
+    {0x00, 3, 22},
+    {0x100, 0, 0},
   },
   /* 251 */
   {
-    {0x8003, 127},
-    {0x8006, 127},
-    {0x800a, 127},
-    {0x800f, 127},
-    {0x8018, 127},
-    {0x801f, 127},
-    {0x8029, 127},
-    {0xc038, 127},
-    {0x8003, 220},
-    {0x8006, 220},
-    {0x800a, 220},
-    {0x800f, 220},
-    {0x8018, 220},
-    {0x801f, 220},
-    {0x8029, 220},
-    {0xc038, 220},
+    {0x03, 2, 127},
+    {0x06, 2, 127},
+    {0x0a, 2, 127},
+    {0x0f, 2, 127},
+    {0x18, 2, 127},
+    {0x1f, 2, 127},
+    {0x29, 2, 127},
+    {0x38, 3, 127},
+    {0x03, 2, 220},
+    {0x06, 2, 220},
+    {0x0a, 2, 220},
+    {0x0f, 2, 220},
+    {0x18, 2, 220},
+    {0x1f, 2, 220},
+    {0x29, 2, 220},
+    {0x38, 3, 220},
   },
   /* 252 */
   {
-    {0x8003, 249},
-    {0x8006, 249},
-    {0x800a, 249},
-    {0x800f, 249},
-    {0x8018, 249},
-    {0x801f, 249},
-    {0x8029, 249},
-    {0xc038, 249},
-    {0x8001, 10},
-    {0xc016, 10},
-    {0x8001, 13},
-    {0xc016, 13},
-    {0x8001, 22},
-    {0xc016, 22},
-    {0x100, 0},
-    {0x100, 0},
+    {0x03, 2, 249},
+    {0x06, 2, 249},
+    {0x0a, 2, 249},
+    {0x0f, 2, 249},
+    {0x18, 2, 249},
+    {0x1f, 2, 249},
+    {0x29, 2, 249},
+    {0x38, 3, 249},
+    {0x01, 2, 10},
+    {0x16, 3, 10},
+    {0x01, 2, 13},
+    {0x16, 3, 13},
+    {0x01, 2, 22},
+    {0x16, 3, 22},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
   },
   /* 253 */
   {
-    {0x8002, 10},
-    {0x8009, 10},
-    {0x8017, 10},
-    {0xc028, 10},
-    {0x8002, 13},
-    {0x8009, 13},
-    {0x8017, 13},
-    {0xc028, 13},
-    {0x8002, 22},
-    {0x8009, 22},
-    {0x8017, 22},
-    {0xc028, 22},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
+    {0x02, 2, 10},
+    {0x09, 2, 10},
+    {0x17, 2, 10},
+    {0x28, 3, 10},
+    {0x02, 2, 13},
+    {0x09, 2, 13},
+    {0x17, 2, 13},
+    {0x28, 3, 13},
+    {0x02, 2, 22},
+    {0x09, 2, 22},
+    {0x17, 2, 22},
+    {0x28, 3, 22},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
   },
   /* 254 */
   {
-    {0x8003, 10},
-    {0x8006, 10},
-    {0x800a, 10},
-    {0x800f, 10},
-    {0x8018, 10},
-    {0x801f, 10},
-    {0x8029, 10},
-    {0xc038, 10},
-    {0x8003, 13},
-    {0x8006, 13},
-    {0x800a, 13},
-    {0x800f, 13},
-    {0x8018, 13},
-    {0x801f, 13},
-    {0x8029, 13},
-    {0xc038, 13},
+    {0x03, 2, 10},
+    {0x06, 2, 10},
+    {0x0a, 2, 10},
+    {0x0f, 2, 10},
+    {0x18, 2, 10},
+    {0x1f, 2, 10},
+    {0x29, 2, 10},
+    {0x38, 3, 10},
+    {0x03, 2, 13},
+    {0x06, 2, 13},
+    {0x0a, 2, 13},
+    {0x0f, 2, 13},
+    {0x18, 2, 13},
+    {0x1f, 2, 13},
+    {0x29, 2, 13},
+    {0x38, 3, 13},
   },
   /* 255 */
   {
-    {0x8003, 22},
-    {0x8006, 22},
-    {0x800a, 22},
-    {0x800f, 22},
-    {0x8018, 22},
-    {0x801f, 22},
-    {0x8029, 22},
-    {0xc038, 22},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
+    {0x03, 2, 22},
+    {0x06, 2, 22},
+    {0x0a, 2, 22},
+    {0x0f, 2, 22},
+    {0x18, 2, 22},
+    {0x1f, 2, 22},
+    {0x29, 2, 22},
+    {0x38, 3, 22},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
   },
   /* 256 */
   {
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
-    {0x100, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
+    {0x100, 0, 0},
   },
 };
diff --git a/deps/nghttp2/lib/nghttp2_helper.h b/deps/nghttp2/lib/nghttp2_helper.h
index 7d64076140ce88..5fde72e370f42b 100644
--- a/deps/nghttp2/lib/nghttp2_helper.h
+++ b/deps/nghttp2/lib/nghttp2_helper.h
@@ -61,7 +61,15 @@ nghttp2_min_def(uint32, uint32_t)
 nghttp2_min_def(uint64, uint64_t)
 nghttp2_min_def(size, size_t)
 
-#define lstreq(A, B, N) ((sizeof((A)) - 1) == (N) && memcmp((A), (B), (N)) == 0)
+/*
+ * nghttp2_strlen_lit returns the length of string literal |S|.  This
+ * macro assumes |S| is NULL-terminated string literal.  It must not
+ * be used with pointers.
+ */
+#define nghttp2_strlen_lit(S) (sizeof(S) - 1)
+
+#define lstreq(A, B, N)                                                        \
+  (nghttp2_strlen_lit((A)) == (N) && memcmp((A), (B), (N)) == 0)
 
 #define nghttp2_struct_of(ptr, type, member)                                   \
   ((type *)(void *)((char *)(ptr) - offsetof(type, member)))
diff --git a/deps/nghttp2/lib/nghttp2_http.c b/deps/nghttp2/lib/nghttp2_http.c
index 60a0b01e66c1c8..a09005e807877a 100644
--- a/deps/nghttp2/lib/nghttp2_http.c
+++ b/deps/nghttp2/lib/nghttp2_http.c
@@ -49,7 +49,8 @@ static int memieq(const void *a, const void *b, size_t n) {
   return 1;
 }
 
-#define lstrieq(A, B, N) ((sizeof((A)) - 1) == (N) && memieq((A), (B), (N)))
+#define lstrieq(A, B, N)                                                       \
+  (nghttp2_strlen_lit((A)) == (N) && memieq((A), (B), (N)))
 
 static int64_t parse_uint(const uint8_t *s, size_t len) {
   int64_t n = 0;
diff --git a/deps/nghttp2/lib/nghttp2_int.h b/deps/nghttp2/lib/nghttp2_int.h
index 4e3b26860daf07..2ac6fdac441498 100644
--- a/deps/nghttp2/lib/nghttp2_int.h
+++ b/deps/nghttp2/lib/nghttp2_int.h
@@ -39,7 +39,6 @@ typedef int (*nghttp2_less)(const void *lhs, const void *rhs);
 /* Internal error code. They must be in the range [-499, -100],
    inclusive. */
 typedef enum {
-  NGHTTP2_ERR_CREDENTIAL_PENDING = -101,
   NGHTTP2_ERR_IGN_HEADER_BLOCK = -103,
   NGHTTP2_ERR_IGN_PAYLOAD = -104,
   /*
@@ -52,7 +51,11 @@ typedef enum {
    * Unlike NGHTTP2_ERR_IGN_HTTP_HEADER, this does not invoke
    * nghttp2_on_invalid_header_callback.
    */
-  NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106
+  NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106,
+  /*
+   * Cancel pushed stream.
+   */
+  NGHTTP2_ERR_PUSH_CANCEL = -107,
 } nghttp2_internal_error;
 
 #endif /* !defined(NGHTTP2_INT_H) */
diff --git a/deps/nghttp2/lib/nghttp2_map.c b/deps/nghttp2/lib/nghttp2_map.c
index f89f310319a1a3..3b703a029328c8 100644
--- a/deps/nghttp2/lib/nghttp2_map.c
+++ b/deps/nghttp2/lib/nghttp2_map.c
@@ -33,12 +33,11 @@
 
 #define NGHTTP2_INITIAL_HASHBITS 4
 
-void nghttp2_map_init(nghttp2_map *map, uint32_t seed, nghttp2_mem *mem) {
-  map->mem = mem;
-  map->hashbits = 0;
-  map->table = NULL;
-  map->seed = seed;
-  map->size = 0;
+void nghttp2_map_init(nghttp2_map *map, uint64_t seed, nghttp2_mem *mem) {
+  *map = (nghttp2_map){
+    .mem = mem,
+    .seed = seed,
+  };
 }
 
 void nghttp2_map_free(nghttp2_map *map) {
@@ -46,30 +45,27 @@ void nghttp2_map_free(nghttp2_map *map) {
     return;
   }
 
-  nghttp2_mem_free(map->mem, map->table);
+  nghttp2_mem_free(map->mem, map->keys);
 }
 
 int nghttp2_map_each(const nghttp2_map *map, int (*func)(void *data, void *ptr),
                      void *ptr) {
   int rv;
   size_t i;
-  nghttp2_map_bucket *bkt;
   size_t tablelen;
 
   if (map->size == 0) {
     return 0;
   }
 
-  tablelen = 1u << map->hashbits;
+  tablelen = (size_t)1 << map->hashbits;
 
   for (i = 0; i < tablelen; ++i) {
-    bkt = &map->table[i];
-
-    if (bkt->data == NULL) {
+    if (map->psl[i] == 0) {
       continue;
     }
 
-    rv = func(bkt->data, ptr);
+    rv = func(map->data[i], ptr);
     if (rv != 0) {
       return rv;
     }
@@ -78,175 +74,230 @@ int nghttp2_map_each(const nghttp2_map *map, int (*func)(void *data, void *ptr),
   return 0;
 }
 
-static size_t map_hash(const nghttp2_map *map, nghttp2_map_key_type key) {
-  /* hasher from
-     https://github.com/rust-lang/rustc-hash/blob/dc5c33f1283de2da64d8d7a06401d91aded03ad4/src/lib.rs
-     We do not perform finalization here because we use top bits
-     anyway. */
-  uint32_t h = ((uint32_t)key + map->seed) * 0x93d765dd;
-  return (size_t)((h * 2654435769u) >> (32 - map->hashbits));
-}
+/* Hasher from
+   https://github.com/rust-lang/rustc-hash/blob/dc5c33f1283de2da64d8d7a06401d91aded03ad4/src/lib.rs
+   to maximize the output's sensitivity to all input bits. */
+#define NGHTTP2_MAP_HASHER 0xf1357aea2e62a9c5ull
+/* 64-bit Fibonacci hashing constant, Golden Ratio constant, to get
+   the high bits with the good distribution. */
+#define NGHTTP2_MAP_FIBO 0x9e3779b97f4a7c15ull
 
-static void map_bucket_swap(nghttp2_map_bucket *a, nghttp2_map_bucket *b) {
-  nghttp2_map_bucket c = *a;
+static size_t map_index(const nghttp2_map *map, nghttp2_map_key_type key32) {
+  uint64_t key = (uint64_t)key32;
 
-  *a = *b;
-  *b = c;
+  key += map->seed;
+  key *= NGHTTP2_MAP_HASHER;
+  return (size_t)((key * NGHTTP2_MAP_FIBO) >> (64 - map->hashbits));
 }
 
 #ifndef WIN32
 void nghttp2_map_print_distance(const nghttp2_map *map) {
   size_t i;
   size_t idx;
-  nghttp2_map_bucket *bkt;
   size_t tablelen;
 
   if (map->size == 0) {
     return;
   }
 
-  tablelen = 1u << map->hashbits;
+  tablelen = (size_t)1 << map->hashbits;
 
   for (i = 0; i < tablelen; ++i) {
-    bkt = &map->table[i];
-
-    if (bkt->data == NULL) {
+    if (map->psl[i] == 0) {
       fprintf(stderr, "@%zu \n", i);
       continue;
     }
 
-    idx = map_hash(map, bkt->key);
-    fprintf(stderr, "@%zu hash=%zu key=%d base=%zu distance=%u\n", i,
-            map_hash(map, bkt->key), bkt->key, idx, bkt->psl);
+    idx = map_index(map, map->keys[i]);
+    fprintf(stderr, "@%zu key=%d base=%zu distance=%u\n", i, map->keys[i], idx,
+            map->psl[i] - 1);
   }
 }
 #endif /* !defined(WIN32) */
 
-static int map_insert(nghttp2_map *map, nghttp2_map_key_type key, void *data) {
-  size_t idx = map_hash(map, key);
-  nghttp2_map_bucket b = {
-    .key = key,
-    .data = data,
-  };
-  nghttp2_map_bucket *bkt;
-  size_t mask = (1u << map->hashbits) - 1;
+static void map_set_entry(nghttp2_map *map, size_t idx,
+                          nghttp2_map_key_type key, void *data, size_t psl) {
+  map->keys[idx] = key;
+  map->data[idx] = data;
+  map->psl[idx] = (uint8_t)psl;
+}
+
+#define NGHTTP2_SWAP(TYPE, A, B)                                               \
+  do {                                                                         \
+    TYPE t = (TYPE) * (A);                                                     \
+                                                                               \
+    *(A) = *(B);                                                               \
+    *(B) = t;                                                                  \
+  } while (0)
+
+/*
+ * map_insert inserts |key| and |data| to |map|, and returns the index
+ * where the pair is stored if it succeeds.  Otherwise, it returns one
+ * of the following negative error codes:
+ *
+ * NGHTTP2_ERR_INVALID_ARGUMENT
+ *     The another data associated to |key| is already present.
+ */
+static nghttp2_ssize map_insert(nghttp2_map *map, nghttp2_map_key_type key,
+                                void *data) {
+  size_t idx = map_index(map, key);
+  size_t mask = ((size_t)1 << map->hashbits) - 1;
+  size_t psl = 1;
+  size_t kpsl;
 
   for (;;) {
-    bkt = &map->table[idx];
+    kpsl = map->psl[idx];
 
-    if (bkt->data == NULL) {
-      *bkt = b;
+    if (kpsl == 0) {
+      map_set_entry(map, idx, key, data, psl);
       ++map->size;
-      return 0;
+
+      return (nghttp2_ssize)idx;
     }
 
-    if (b.psl > bkt->psl) {
-      map_bucket_swap(bkt, &b);
-    } else if (bkt->key == key) {
-      /* TODO This check is just a waste after first swap or if this
-         function is called from map_resize.  That said, there is no
-         difference with or without this conditional in performance
-         wise. */
+    if (psl > kpsl) {
+      NGHTTP2_SWAP(nghttp2_map_key_type, &key, &map->keys[idx]);
+      NGHTTP2_SWAP(void *, &data, &map->data[idx]);
+      NGHTTP2_SWAP(uint8_t, &psl, &map->psl[idx]);
+    } else if (map->keys[idx] == key) {
+      /* This check ensures that no duplicate keys are inserted.  But
+         it is just a waste after first swap or if this function is
+         called from map_resize.  That said, there is no difference
+         with or without this conditional in performance wise. */
       return NGHTTP2_ERR_INVALID_ARGUMENT;
     }
 
-    ++b.psl;
+    ++psl;
     idx = (idx + 1) & mask;
   }
 }
 
+/* NGHTTP2_MAP_MAX_HASHBITS is the maximum number of bits used for
+   hash table.  The theoretical limit of the maximum number of keys
+   that can be stored is 1 << NGHTTP2_MAP_MAX_HASHBITS. */
+#define NGHTTP2_MAP_MAX_HASHBITS (sizeof(size_t) * 8 - 1)
+
 static int map_resize(nghttp2_map *map, size_t new_hashbits) {
   size_t i;
-  nghttp2_map_bucket *bkt;
   size_t tablelen;
-  int rv;
+  nghttp2_ssize idx;
   nghttp2_map new_map = {
-    .table = nghttp2_mem_calloc(map->mem, 1u << new_hashbits,
-                                sizeof(nghttp2_map_bucket)),
     .mem = map->mem,
     .seed = map->seed,
     .hashbits = new_hashbits,
   };
-  (void)rv;
+  void *buf;
+  (void)idx;
+
+  if (new_hashbits > NGHTTP2_MAP_MAX_HASHBITS) {
+    return NGHTTP2_ERR_NOMEM;
+  }
 
-  if (new_map.table == NULL) {
+  tablelen = (size_t)1 << new_hashbits;
+
+  buf = nghttp2_mem_calloc(map->mem, tablelen,
+                           sizeof(nghttp2_map_key_type) + sizeof(void *) +
+                             sizeof(uint8_t));
+  if (buf == NULL) {
     return NGHTTP2_ERR_NOMEM;
   }
 
+  new_map.keys = buf;
+  new_map.data =
+    (void *)((uint8_t *)new_map.keys + tablelen * sizeof(nghttp2_map_key_type));
+  new_map.psl = (uint8_t *)new_map.data + tablelen * sizeof(void *);
+
   if (map->size) {
-    tablelen = 1u << map->hashbits;
+    tablelen = (size_t)1 << map->hashbits;
 
     for (i = 0; i < tablelen; ++i) {
-      bkt = &map->table[i];
-      if (bkt->data == NULL) {
+      if (map->psl[i] == 0) {
         continue;
       }
 
-      rv = map_insert(&new_map, bkt->key, bkt->data);
+      idx = map_insert(&new_map, map->keys[i], map->data[i]);
 
-      assert(0 == rv);
+      /* map_insert must not fail because all keys are unique during
+         resize. */
+      assert(idx >= 0);
     }
   }
 
-  nghttp2_mem_free(map->mem, map->table);
-  map->table = new_map.table;
+  nghttp2_mem_free(map->mem, map->keys);
+  map->keys = new_map.keys;
+  map->data = new_map.data;
+  map->psl = new_map.psl;
   map->hashbits = new_hashbits;
 
   return 0;
 }
 
+/* NGHTTP2_MAX_PSL_RESIZE_THRESH is the maximum psl threshold.  If
+   reached, resize the table. */
+#define NGHTTP2_MAX_PSL_RESIZE_THRESH 128
+
 int nghttp2_map_insert(nghttp2_map *map, nghttp2_map_key_type key, void *data) {
   int rv;
+  size_t tablelen;
+  nghttp2_ssize idx;
 
   assert(data);
 
-  /* Load factor is 7/8 */
-  /* Under the very initial condition, that is map->size == 0 and
-     map->hashbits == 0, 8 > 7 still holds nicely. */
-  if ((map->size + 1) * 8 > (1u << map->hashbits) * 7) {
-    if (map->hashbits) {
-      rv = map_resize(map, map->hashbits + 1);
-      if (rv != 0) {
-        return rv;
-      }
-    } else {
-      rv = map_resize(map, NGHTTP2_INITIAL_HASHBITS);
-      if (rv != 0) {
-        return rv;
-      }
+  /* tablelen is incorrect if map->hashbits == 0 which leads to
+     tablelen = 1, but it is only used to check the load factor, and
+     it works in this special case. */
+  tablelen = (size_t)1 << map->hashbits;
+
+  /* Load factor is 7 / 8.  Because tablelen is power of 2, (tablelen
+     - (tablelen >> 3)) computes tablelen * 7 / 8. */
+  if (map->size + 1 >= (tablelen - (tablelen >> 3))) {
+    rv = map_resize(map, map->hashbits ? map->hashbits + 1
+                                       : NGHTTP2_INITIAL_HASHBITS);
+    if (rv != 0) {
+      return rv;
+    }
+
+    idx = map_insert(map, key, data);
+    if (idx < 0) {
+      return (int)idx;
     }
+
+    return 0;
   }
 
-  rv = map_insert(map, key, data);
-  if (rv != 0) {
-    return rv;
+  idx = map_insert(map, key, data);
+  if (idx < 0) {
+    return (int)idx;
   }
 
-  return 0;
+  /* Resize if psl reaches really large value which is almost
+     improbable, but just in case. */
+  if (map->psl[idx] - 1 < NGHTTP2_MAX_PSL_RESIZE_THRESH) {
+    return 0;
+  }
+
+  return map_resize(map, map->hashbits + 1);
 }
 
 void *nghttp2_map_find(const nghttp2_map *map, nghttp2_map_key_type key) {
   size_t idx;
-  nghttp2_map_bucket *bkt;
-  size_t psl = 0;
+  size_t psl = 1;
   size_t mask;
 
   if (map->size == 0) {
     return NULL;
   }
 
-  idx = map_hash(map, key);
-  mask = (1u << map->hashbits) - 1;
+  idx = map_index(map, key);
+  mask = ((size_t)1 << map->hashbits) - 1;
 
   for (;;) {
-    bkt = &map->table[idx];
-
-    if (bkt->data == NULL || psl > bkt->psl) {
+    if (psl > map->psl[idx]) {
       return NULL;
     }
 
-    if (bkt->key == key) {
-      return bkt->data;
+    if (map->keys[idx] == key) {
+      return map->data[idx];
     }
 
     ++psl;
@@ -256,38 +307,36 @@ void *nghttp2_map_find(const nghttp2_map *map, nghttp2_map_key_type key) {
 
 int nghttp2_map_remove(nghttp2_map *map, nghttp2_map_key_type key) {
   size_t idx;
-  nghttp2_map_bucket *b, *bkt;
-  size_t psl = 0;
+  size_t dest;
+  size_t psl = 1, kpsl;
   size_t mask;
 
   if (map->size == 0) {
     return NGHTTP2_ERR_INVALID_ARGUMENT;
   }
 
-  idx = map_hash(map, key);
-  mask = (1u << map->hashbits) - 1;
+  idx = map_index(map, key);
+  mask = ((size_t)1 << map->hashbits) - 1;
 
   for (;;) {
-    bkt = &map->table[idx];
-
-    if (bkt->data == NULL || psl > bkt->psl) {
+    if (psl > map->psl[idx]) {
       return NGHTTP2_ERR_INVALID_ARGUMENT;
     }
 
-    if (bkt->key == key) {
-      b = bkt;
+    if (map->keys[idx] == key) {
+      dest = idx;
       idx = (idx + 1) & mask;
 
       for (;;) {
-        bkt = &map->table[idx];
-        if (bkt->data == NULL || bkt->psl == 0) {
-          b->data = NULL;
+        kpsl = map->psl[idx];
+        if (kpsl <= 1) {
+          map->psl[dest] = 0;
           break;
         }
 
-        --bkt->psl;
-        *b = *bkt;
-        b = bkt;
+        map_set_entry(map, dest, map->keys[idx], map->data[idx], kpsl - 1);
+
+        dest = idx;
 
         idx = (idx + 1) & mask;
       }
@@ -307,7 +356,7 @@ void nghttp2_map_clear(nghttp2_map *map) {
     return;
   }
 
-  memset(map->table, 0, sizeof(*map->table) * (1u << map->hashbits));
+  memset(map->psl, 0, sizeof(*map->psl) * ((size_t)1 << map->hashbits));
   map->size = 0;
 }
 
diff --git a/deps/nghttp2/lib/nghttp2_map.h b/deps/nghttp2/lib/nghttp2_map.h
index e45685bce71768..c47b279345dee3 100644
--- a/deps/nghttp2/lib/nghttp2_map.h
+++ b/deps/nghttp2/lib/nghttp2_map.h
@@ -38,16 +38,15 @@
 
 typedef int32_t nghttp2_map_key_type;
 
-typedef struct nghttp2_map_bucket {
-  uint32_t psl;
-  nghttp2_map_key_type key;
-  void *data;
-} nghttp2_map_bucket;
-
 typedef struct nghttp2_map {
-  nghttp2_map_bucket *table;
+  nghttp2_map_key_type *keys;
+  void **data;
+  /* psl is the Probe Sequence Length.  0 has special meaning that the
+     element is not stored at i-th position if psl[i] == 0.  Because
+     of this, the actual psl value is psl[i] - 1 if psl[i] > 0. */
+  uint8_t *psl;
   nghttp2_mem *mem;
-  uint32_t seed;
+  uint64_t seed;
   size_t size;
   size_t hashbits;
 } nghttp2_map;
@@ -55,7 +54,7 @@ typedef struct nghttp2_map {
 /*
  * nghttp2_map_init initializes the map |map|.
  */
-void nghttp2_map_init(nghttp2_map *map, uint32_t seed, nghttp2_mem *mem);
+void nghttp2_map_init(nghttp2_map *map, uint64_t seed, nghttp2_mem *mem);
 
 /*
  * nghttp2_map_free deallocates any resources allocated for |map|.
diff --git a/deps/nghttp2/lib/nghttp2_outbound_item.c b/deps/nghttp2/lib/nghttp2_outbound_item.c
index a9e9f7693eda8c..fad1ee0a469086 100644
--- a/deps/nghttp2/lib/nghttp2_outbound_item.c
+++ b/deps/nghttp2/lib/nghttp2_outbound_item.c
@@ -53,6 +53,18 @@ nghttp2_data_provider_wrap_v2(nghttp2_data_provider_wrap *dpw,
   return dpw;
 }
 
+int nghttp2_data_provider_wrap_contains_read_callback(
+  const nghttp2_data_provider_wrap *dpw) {
+  switch (dpw->version) {
+  case NGHTTP2_DATA_PROVIDER_V1:
+    return dpw->data_prd.v1.read_callback != NULL;
+  case NGHTTP2_DATA_PROVIDER_V2:
+    return dpw->data_prd.v2.read_callback != NULL;
+  default:
+    return 0;
+  }
+}
+
 void nghttp2_outbound_item_init(nghttp2_outbound_item *item) {
   item->cycle = 0;
   item->qnext = NULL;
diff --git a/deps/nghttp2/lib/nghttp2_outbound_item.h b/deps/nghttp2/lib/nghttp2_outbound_item.h
index 6e8e310cc475dd..9f280e616351d0 100644
--- a/deps/nghttp2/lib/nghttp2_outbound_item.h
+++ b/deps/nghttp2/lib/nghttp2_outbound_item.h
@@ -39,10 +39,6 @@
 typedef struct nghttp2_data_provider_wrap {
   int version;
   union {
-    struct {
-      nghttp2_data_source source;
-      void *read_callback;
-    };
     nghttp2_data_provider v1;
     nghttp2_data_provider2 v2;
   } data_prd;
@@ -56,6 +52,11 @@ nghttp2_data_provider_wrap *
 nghttp2_data_provider_wrap_v2(nghttp2_data_provider_wrap *dpw,
                               const nghttp2_data_provider2 *data_prd);
 
+/* nghttp2_data_provider_wrap_contains_read_callback returns nonzero
+   if |dpw| contains read_callback in either version. */
+int nghttp2_data_provider_wrap_contains_read_callback(
+  const nghttp2_data_provider_wrap *dpw);
+
 /* struct used for HEADERS and PUSH_PROMISE frame */
 typedef struct {
   nghttp2_data_provider_wrap dpw;
@@ -110,6 +111,12 @@ typedef struct {
   uint8_t flags;
 } nghttp2_goaway_aux_data;
 
+typedef struct {
+  /* nonzero if RST_STREAM should be sent even if stream is not
+     found. */
+  uint8_t continue_without_stream;
+} nghttp2_rst_stream_aux_data;
+
 /* struct used for extension frame */
 typedef struct {
   /* nonzero if this extension frame is serialized by library
@@ -122,6 +129,7 @@ typedef union {
   nghttp2_data_aux_data data;
   nghttp2_headers_aux_data headers;
   nghttp2_goaway_aux_data goaway;
+  nghttp2_rst_stream_aux_data rst_stream;
   nghttp2_ext_aux_data ext;
 } nghttp2_aux_data;
 
diff --git a/deps/nghttp2/lib/nghttp2_session.c b/deps/nghttp2/lib/nghttp2_session.c
index 97d7fda1d295d5..19e0b767c1639b 100644
--- a/deps/nghttp2/lib/nghttp2_session.c
+++ b/deps/nghttp2/lib/nghttp2_session.c
@@ -438,7 +438,7 @@ static int session_new(nghttp2_session **session_ptr,
   size_t max_deflate_dynamic_table_size =
     NGHTTP2_HD_DEFAULT_MAX_DEFLATE_BUFFER_SIZE;
   size_t i;
-  uint32_t map_seed;
+  uint64_t map_seed;
 
   if (mem == NULL) {
     mem = nghttp2_mem_default();
@@ -1051,7 +1051,6 @@ int nghttp2_session_add_item(nghttp2_session *session,
       nghttp2_outbound_queue_push(&session->ob_syn, item);
       item->queued = 1;
       return 0;
-      ;
     }
 
     nghttp2_outbound_queue_push(&session->ob_reg, item);
@@ -1189,6 +1188,10 @@ int nghttp2_session_add_rst_stream_continue(nghttp2_session *session,
   frame = &item->frame;
 
   nghttp2_frame_rst_stream_init(&frame->rst_stream, stream_id, error_code);
+
+  item->aux_data.rst_stream.continue_without_stream =
+    (uint8_t)(continue_without_stream != 0);
+
   rv = nghttp2_session_add_item(session, item);
   if (rv != 0) {
     nghttp2_frame_rst_stream_free(&frame->rst_stream);
@@ -2141,6 +2144,12 @@ static int session_prep_frame(nghttp2_session *session,
     if (session_is_closing(session)) {
       return NGHTTP2_ERR_SESSION_CLOSING;
     }
+
+    if (!item->aux_data.rst_stream.continue_without_stream &&
+        !nghttp2_session_get_stream(session, frame->rst_stream.hd.stream_id)) {
+      return NGHTTP2_ERR_STREAM_CLOSED;
+    }
+
     nghttp2_frame_pack_rst_stream(&session->aob.framebufs, &frame->rst_stream);
     return 0;
   case NGHTTP2_SETTINGS: {
@@ -2584,7 +2593,7 @@ static int session_after_frame_sent1(nghttp2_session *session) {
       }
       /* We assume aux_data is a pointer to nghttp2_headers_aux_data */
       aux_data = &item->aux_data.headers;
-      if (aux_data->dpw.data_prd.read_callback) {
+      if (nghttp2_data_provider_wrap_contains_read_callback(&aux_data->dpw)) {
         /* nghttp2_submit_data_shared() makes a copy of
            aux_data->dpw */
         rv = nghttp2_submit_data_shared(session, NGHTTP2_FLAG_END_STREAM,
@@ -2615,7 +2624,7 @@ static int session_after_frame_sent1(nghttp2_session *session) {
       }
       /* We assume aux_data is a pointer to nghttp2_headers_aux_data */
       aux_data = &item->aux_data.headers;
-      if (aux_data->dpw.data_prd.read_callback) {
+      if (nghttp2_data_provider_wrap_contains_read_callback(&aux_data->dpw)) {
         rv = nghttp2_submit_data_shared(session, NGHTTP2_FLAG_END_STREAM,
                                         frame->hd.stream_id, &aux_data->dpw);
         if (nghttp2_is_fatal(rv)) {
@@ -2795,7 +2804,10 @@ static int session_call_send_data(nghttp2_session *session,
   aux_data = &item->aux_data.data;
 
   rv = session->callbacks.send_data_callback(session, frame, buf->pos, length,
-                                             &aux_data->dpw.data_prd.source,
+                                             /* This is fine because
+                                                of Common Initial
+                                                Sequence rule. */
+                                             &aux_data->dpw.data_prd.v2.source,
                                              session->user_data);
 
   switch (rv) {
@@ -2853,8 +2865,12 @@ static nghttp2_ssize nghttp2_session_mem_send_internal(nghttp2_session *session,
           nghttp2_frame *frame = &item->frame;
           /* The library is responsible for the transmission of
              WINDOW_UPDATE frame, so we don't call error callback for
-             it. */
+             it.  As for RST_STREAM, if it is not sent due to missing
+             stream, we also do not call error callback because it may
+             cause a lot of noises.*/
           if (frame->hd.type != NGHTTP2_WINDOW_UPDATE &&
+              (frame->hd.type != NGHTTP2_RST_STREAM ||
+               rv != NGHTTP2_ERR_STREAM_CLOSED) &&
               session->callbacks.on_frame_not_send_callback(
                 session, frame, rv, session->user_data) != 0) {
             nghttp2_outbound_item_free(item, mem);
@@ -3272,7 +3288,9 @@ static int session_call_on_invalid_header(nghttp2_session *session,
       session, frame, nv->name->base, nv->name->len, nv->value->base,
       nv->value->len, nv->flags, session->user_data);
   } else {
-    return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+    /* If both callbacks are not set, the invalid field nv is
+       ignored. */
+    return 0;
   }
 
   if (rv == NGHTTP2_ERR_PAUSE || rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
@@ -3357,6 +3375,10 @@ static uint32_t get_error_code_from_lib_error_code(int lib_error_code) {
   case NGHTTP2_ERR_HTTP_HEADER:
   case NGHTTP2_ERR_HTTP_MESSAGING:
     return NGHTTP2_PROTOCOL_ERROR;
+  case NGHTTP2_ERR_INTERNAL:
+    return NGHTTP2_INTERNAL_ERROR;
+  case NGHTTP2_ERR_PUSH_CANCEL:
+    return NGHTTP2_CANCEL;
   default:
     return NGHTTP2_INTERNAL_ERROR;
   }
@@ -3408,7 +3430,7 @@ static int session_handle_invalid_stream2(nghttp2_session *session,
   if (rv != 0) {
     return rv;
   }
-  if (session->callbacks.on_invalid_frame_recv_callback) {
+  if (frame && session->callbacks.on_invalid_frame_recv_callback) {
     if (session->callbacks.on_invalid_frame_recv_callback(
           session, frame, lib_error_code, session->user_data) != 0) {
       return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -3495,6 +3517,7 @@ static int session_inflate_handle_invalid_connection(nghttp2_session *session,
 static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
                                 size_t *readlen_ptr, uint8_t *in, size_t inlen,
                                 int final, int call_header_cb) {
+  nghttp2_inbound_frame *iframe = &session->iframe;
   nghttp2_ssize proclen;
   int rv;
   int inflate_flags;
@@ -3563,7 +3586,29 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
 
             rv2 = session_call_on_invalid_header(session, frame, &nv);
             if (rv2 == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
-              rv = NGHTTP2_ERR_HTTP_HEADER;
+              DEBUGF("recv: HTTP error: type=%u, id=%d, header %.*s: %.*s\n",
+                     frame->hd.type, frame->hd.stream_id, (int)nv.name->len,
+                     nv.name->base, (int)nv.value->len, nv.value->base);
+
+              rv = session_call_error_callback(
+                session, NGHTTP2_ERR_HTTP_HEADER,
+                "Invalid HTTP header field was received: frame type: "
+                "%u, stream: %d, name: [%.*s], value: [%.*s]",
+                frame->hd.type, frame->hd.stream_id, (int)nv.name->len,
+                nv.name->base, (int)nv.value->len, nv.value->base);
+
+              if (nghttp2_is_fatal(rv)) {
+                return rv;
+              }
+
+              rv = session_handle_invalid_stream2(
+                session, subject_stream->stream_id, frame,
+                NGHTTP2_ERR_HTTP_HEADER);
+              if (nghttp2_is_fatal(rv)) {
+                return rv;
+              }
+
+              return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
             } else {
               if (rv2 != 0) {
                 return rv2;
@@ -3609,6 +3654,16 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
             if (nghttp2_is_fatal(rv)) {
               return rv;
             }
+
+            rv = session_update_glitch_ratelim(session);
+            if (rv != 0) {
+              return rv;
+            }
+
+            if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+              return 0;
+            }
+
             return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
           }
         }
@@ -3678,6 +3733,7 @@ static int session_end_stream_headers_received(nghttp2_session *session,
 static int session_after_header_block_received(nghttp2_session *session) {
   int rv = 0;
   nghttp2_frame *frame = &session->iframe.frame;
+  nghttp2_inbound_frame *iframe = &session->iframe;
   nghttp2_stream *stream;
 
   /* We don't call on_frame_recv_callback if stream has been closed
@@ -3736,12 +3792,22 @@ static int session_after_header_block_received(nghttp2_session *session) {
         return rv;
       }
 
+      rv = session_update_glitch_ratelim(session);
+      if (rv != 0) {
+        return rv;
+      }
+
+      if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+        return 0;
+      }
+
       if (frame->hd.type == NGHTTP2_HEADERS &&
           (frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) {
         nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD);
         /* Don't call nghttp2_session_close_stream_if_shut_rdwr
            because RST_STREAM has been submitted. */
       }
+
       return 0;
     }
   }
@@ -4078,8 +4144,7 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) {
   rv = nghttp2_stream_update_remote_initial_window_size(
     stream, arg->new_window_size, arg->old_window_size);
   if (rv != 0) {
-    return nghttp2_session_add_rst_stream(arg->session, stream->stream_id,
-                                          NGHTTP2_FLOW_CONTROL_ERROR);
+    return NGHTTP2_ERR_FLOW_CONTROL;
   }
 
   /* If window size gets positive, push deferred DATA frame to
@@ -4105,6 +4170,8 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) {
  *
  * NGHTTP2_ERR_NOMEM
  *     Out of memory.
+ * NGHTTP2_ERR_FLOW_CONTROL
+ *     Window size gets out of range.
  */
 static int
 session_update_remote_initial_window_size(nghttp2_session *session,
@@ -4128,8 +4195,7 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) {
   rv = nghttp2_stream_update_local_initial_window_size(
     stream, arg->new_window_size, arg->old_window_size);
   if (rv != 0) {
-    return nghttp2_session_add_rst_stream(arg->session, stream->stream_id,
-                                          NGHTTP2_FLOW_CONTROL_ERROR);
+    return NGHTTP2_ERR_FLOW_CONTROL;
   }
 
   if (stream->window_update_queued) {
@@ -4163,6 +4229,8 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) {
  *
  * NGHTTP2_ERR_NOMEM
  *     Out of memory.
+ * NGHTTP2_ERR_FLOW_CONTROL
+ *     Window size gets out of range.
  */
 static int
 session_update_local_initial_window_size(nghttp2_session *session,
@@ -4549,9 +4617,9 @@ int nghttp2_session_on_push_promise_received(nghttp2_session *session,
         session->max_incoming_reserved_streams) {
     /* Currently, client does not retain closed stream, so we don't
        check NGHTTP2_SHUT_RD condition here. */
-
-    rv = nghttp2_session_add_rst_stream(
-      session, frame->push_promise.promised_stream_id, NGHTTP2_CANCEL);
+    rv = session_handle_invalid_stream2(session,
+                                        frame->push_promise.promised_stream_id,
+                                        NULL, NGHTTP2_ERR_PUSH_CANCEL);
     if (rv != 0) {
       return rv;
     }
@@ -4708,8 +4776,9 @@ static int session_on_stream_window_update_received(nghttp2_session *session,
   }
   if (NGHTTP2_MAX_WINDOW_SIZE - frame->window_update.window_size_increment <
       stream->remote_window_size) {
-    return session_handle_invalid_stream(session, frame,
-                                         NGHTTP2_ERR_FLOW_CONTROL);
+    return session_handle_invalid_connection(
+      session, frame, NGHTTP2_ERR_FLOW_CONTROL,
+      "WINDOW_UPDATE: window size overflow");
   }
   stream->remote_window_size += frame->window_update.window_size_increment;
 
@@ -4925,6 +4994,7 @@ int nghttp2_session_on_data_received(nghttp2_session *session,
                                      nghttp2_frame *frame) {
   int rv = 0;
   nghttp2_stream *stream;
+  nghttp2_inbound_frame *iframe = &session->iframe;
 
   /* We don't call on_frame_recv_callback if stream has been closed
      already or being closed. */
@@ -4939,15 +5009,26 @@ int nghttp2_session_on_data_received(nghttp2_session *session,
   if (session_enforce_http_messaging(session) &&
       (frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) {
     if (nghttp2_http_on_remote_end_stream(stream) != 0) {
-      rv = nghttp2_session_add_rst_stream(session, stream->stream_id,
-                                          NGHTTP2_PROTOCOL_ERROR);
+      rv = session_handle_invalid_stream2(session, stream->stream_id, frame,
+                                          NGHTTP2_ERR_HTTP_MESSAGING);
       if (nghttp2_is_fatal(rv)) {
         return rv;
       }
 
+      rv = session_update_glitch_ratelim(session);
+      if (rv != 0) {
+        return rv;
+      }
+
+      if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+        return 0;
+      }
+
       nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD);
+
       /* Don't call nghttp2_session_close_stream_if_shut_rdwr because
          RST_STREAM has been submitted. */
+
       return 0;
     }
   }
@@ -5006,8 +5087,8 @@ int nghttp2_session_update_recv_stream_window_size(nghttp2_session *session,
   rv = adjust_recv_window_size(&stream->recv_window_size, delta_size,
                                stream->local_window_size);
   if (rv != 0) {
-    return nghttp2_session_add_rst_stream(session, stream->stream_id,
-                                          NGHTTP2_FLOW_CONTROL_ERROR);
+    return nghttp2_session_terminate_session(session,
+                                             NGHTTP2_FLOW_CONTROL_ERROR);
   }
   /* We don't have to send WINDOW_UPDATE if the data received is the
      last chunk in the incoming stream. */
@@ -5469,6 +5550,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         busy = 1;
 
         rv = session_on_data_received_fail_fast(session);
+        if (nghttp2_is_fatal(rv)) {
+          return rv;
+        }
+
         if (iframe->state == NGHTTP2_IB_IGN_ALL) {
           return (nghttp2_ssize)inlen;
         }
@@ -5476,23 +5561,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           DEBUGF("recv: DATA not allowed stream_id=%d\n",
                  iframe->frame.hd.stream_id);
 
-          rv = session_update_glitch_ratelim(session);
-          if (rv != 0) {
-            return rv;
-          }
-
-          if (iframe->state == NGHTTP2_IB_IGN_ALL) {
-            return (nghttp2_ssize)inlen;
-          }
-
           iframe->state = NGHTTP2_IB_IGN_DATA;
           break;
         }
 
-        if (nghttp2_is_fatal(rv)) {
-          return rv;
-        }
-
         rv = inbound_frame_handle_pad(iframe, &iframe->frame.hd);
         if (rv < 0) {
           rv = nghttp2_session_terminate_session_with_reason(
@@ -5576,6 +5648,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           return rv;
         }
 
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
+
         on_begin_frame_called = 1;
 
         rv = session_process_headers_frame(session);
@@ -5590,8 +5666,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         }
 
         if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
-          rv = nghttp2_session_add_rst_stream(
-            session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
+          rv = session_handle_invalid_stream2(
+            session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL);
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
@@ -6044,6 +6120,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
+
+          if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+            return (nghttp2_ssize)inlen;
+          }
         }
       }
 
@@ -6107,8 +6187,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         }
 
         if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
-          rv = nghttp2_session_add_rst_stream(
-            session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
+          rv = session_handle_invalid_stream2(
+            session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL);
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
@@ -6191,9 +6271,9 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         }
 
         if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
-          rv = nghttp2_session_add_rst_stream(
-            session, iframe->frame.push_promise.promised_stream_id,
-            NGHTTP2_INTERNAL_ERROR);
+          rv = session_handle_invalid_stream2(
+            session, iframe->frame.push_promise.promised_stream_id, NULL,
+            NGHTTP2_ERR_INTERNAL);
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
@@ -6296,6 +6376,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           return rv;
         }
 
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
+
         session_inbound_frame_reset(session);
 
         break;
@@ -6371,12 +6455,12 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           iframe->payloadleft -= hd_proclen;
 
           /* Use promised stream ID for PUSH_PROMISE */
-          rv = nghttp2_session_add_rst_stream(
+          rv = session_handle_invalid_stream2(
             session,
             iframe->frame.hd.type == NGHTTP2_PUSH_PROMISE
               ? iframe->frame.push_promise.promised_stream_id
               : iframe->frame.hd.stream_id,
-            NGHTTP2_INTERNAL_ERROR);
+            NULL, NGHTTP2_ERR_INTERNAL);
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
@@ -6423,6 +6507,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           if (nghttp2_is_fatal(rv)) {
             return rv;
           }
+
+          if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+            return (nghttp2_ssize)inlen;
+          }
         }
         session_inbound_frame_reset(session);
 
@@ -6598,6 +6686,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         if (nghttp2_is_fatal(rv)) {
           return rv;
         }
+
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
       } else {
         iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
       }
@@ -6648,6 +6740,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         if (nghttp2_is_fatal(rv)) {
           return rv;
         }
+
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
       }
 
       busy = 1;
@@ -6720,6 +6816,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           return rv;
         }
 
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
+
         data_readlen =
           inbound_frame_effective_readlen(iframe, iframe->payloadleft, readlen);
 
@@ -6763,13 +6863,25 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
                 }
               }
 
-              rv = nghttp2_session_add_rst_stream(
-                session, iframe->frame.hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
+              rv = session_handle_invalid_stream2(
+                session, iframe->frame.hd.stream_id, &iframe->frame,
+                NGHTTP2_ERR_PROTO);
               if (nghttp2_is_fatal(rv)) {
                 return rv;
               }
+
+              rv = session_update_glitch_ratelim(session);
+              if (rv != 0) {
+                return rv;
+              }
+
+              if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+                return (nghttp2_ssize)inlen;
+              }
+
               busy = 1;
               iframe->state = NGHTTP2_IB_IGN_DATA;
+
               break;
             }
           }
@@ -6777,13 +6889,17 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
             rv = session->callbacks.on_data_chunk_recv_callback(
               session, iframe->frame.hd.flags, iframe->frame.hd.stream_id,
               in - readlen, (size_t)data_readlen, session->user_data);
-            if (rv == NGHTTP2_ERR_PAUSE) {
-              return (nghttp2_ssize)(in - first);
-            }
-
             if (nghttp2_is_fatal(rv)) {
               return NGHTTP2_ERR_CALLBACK_FAILURE;
             }
+
+            if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+              return (nghttp2_ssize)inlen;
+            }
+
+            if (rv == NGHTTP2_ERR_PAUSE) {
+              return (nghttp2_ssize)(in - first);
+            }
           }
         }
       }
@@ -6797,6 +6913,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         return rv;
       }
 
+      if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+        return (nghttp2_ssize)inlen;
+      }
+
       session_inbound_frame_reset(session);
 
       break;
@@ -6863,6 +6983,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
           return rv;
         }
 
+        if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+          return (nghttp2_ssize)inlen;
+        }
+
         if (rv != 0) {
           busy = 1;
 
@@ -6881,6 +7005,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         return rv;
       }
 
+      if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+        return (nghttp2_ssize)inlen;
+      }
+
       session_inbound_frame_reset(session);
 
       break;
@@ -6909,6 +7037,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
         return rv;
       }
 
+      if (iframe->state == NGHTTP2_IB_IGN_ALL) {
+        return (nghttp2_ssize)inlen;
+      }
+
       session_inbound_frame_reset(session);
 
       break;
@@ -7372,13 +7504,13 @@ int nghttp2_session_pack_data(nghttp2_session *session, nghttp2_bufs *bufs,
   case NGHTTP2_DATA_PROVIDER_V1:
     payloadlen = (nghttp2_ssize)aux_data->dpw.data_prd.v1.read_callback(
       session, frame->hd.stream_id, buf->pos, datamax, &data_flags,
-      &aux_data->dpw.data_prd.source, session->user_data);
+      &aux_data->dpw.data_prd.v1.source, session->user_data);
 
     break;
   case NGHTTP2_DATA_PROVIDER_V2:
     payloadlen = aux_data->dpw.data_prd.v2.read_callback(
       session, frame->hd.stream_id, buf->pos, datamax, &data_flags,
-      &aux_data->dpw.data_prd.source, session->user_data);
+      &aux_data->dpw.data_prd.v2.source, session->user_data);
 
     break;
   default:
diff --git a/deps/nghttp2/lib/nghttp2_session.h b/deps/nghttp2/lib/nghttp2_session.h
index edbef80d397123..cab30687c075df 100644
--- a/deps/nghttp2/lib/nghttp2_session.h
+++ b/deps/nghttp2/lib/nghttp2_session.h
@@ -107,8 +107,8 @@ typedef struct {
 #define NGHTTP2_DEFAULT_STREAM_RESET_RATE 33
 
 /* The default values for glitch rate limiter. */
-#define NGHTTP2_DEFAULT_GLITCH_BURST 1000
-#define NGHTTP2_DEFAULT_GLITCH_RATE 33
+#define NGHTTP2_DEFAULT_GLITCH_BURST 10000
+#define NGHTTP2_DEFAULT_GLITCH_RATE 330
 
 /* The default max number of CONTINUATION frames following an incoming
    HEADER frame. */
diff --git a/deps/nghttp2/lib/nghttp2_submit.c b/deps/nghttp2/lib/nghttp2_submit.c
index 8a90f714e4a4b5..d6bcae9deaf504 100644
--- a/deps/nghttp2/lib/nghttp2_submit.c
+++ b/deps/nghttp2/lib/nghttp2_submit.c
@@ -57,7 +57,7 @@ static int32_t submit_headers_shared(nghttp2_session *session, uint8_t flags,
 
   nghttp2_outbound_item_init(item);
 
-  if (dpw != NULL && dpw->data_prd.read_callback != NULL) {
+  if (dpw != NULL && nghttp2_data_provider_wrap_contains_read_callback(dpw)) {
     item->aux_data.headers.dpw = *dpw;
   }
 
@@ -649,7 +649,7 @@ int nghttp2_submit_priority_update(nghttp2_session *session, uint8_t flags,
 
 static uint8_t set_request_flags(const nghttp2_data_provider_wrap *dpw) {
   uint8_t flags = NGHTTP2_FLAG_NONE;
-  if (dpw == NULL || dpw->data_prd.read_callback == NULL) {
+  if (dpw == NULL || !nghttp2_data_provider_wrap_contains_read_callback(dpw)) {
     flags |= NGHTTP2_FLAG_END_STREAM;
   }
 
@@ -700,7 +700,7 @@ int32_t nghttp2_submit_request2(nghttp2_session *session,
 
 static uint8_t set_response_flags(const nghttp2_data_provider_wrap *dpw) {
   uint8_t flags = NGHTTP2_FLAG_NONE;
-  if (dpw == NULL || dpw->data_prd.read_callback == NULL) {
+  if (dpw == NULL || !nghttp2_data_provider_wrap_contains_read_callback(dpw)) {
     flags |= NGHTTP2_FLAG_END_STREAM;
   }
   return flags;
diff --git a/deps/ngtcp2/ngtcp2/crypto/boringssl/boringssl.c b/deps/ngtcp2/ngtcp2/crypto/boringssl/boringssl.c
index 0409a4e50cae7a..e43faa76850a25 100644
--- a/deps/ngtcp2/ngtcp2/crypto/boringssl/boringssl.c
+++ b/deps/ngtcp2/ngtcp2/crypto/boringssl/boringssl.c
@@ -402,7 +402,7 @@ int ngtcp2_crypto_decrypt(uint8_t *dest, const ngtcp2_crypto_aead *aead,
 int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
                           const ngtcp2_crypto_cipher_ctx *hp_ctx,
                           const uint8_t *sample) {
-  static const uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";
+  static const uint8_t PLAINTEXT[16] = {0};
   ngtcp2_crypto_boringssl_cipher_ctx *ctx = hp_ctx->native_handle;
   uint32_t counter;
 
@@ -420,7 +420,7 @@ int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
 #else  /* !defined(WORDS_BIGENDIAN) */
     memcpy(&counter, sample, sizeof(counter));
 #endif /* !defined(WORDS_BIGENDIAN) */
-    CRYPTO_chacha_20(dest, PLAINTEXT, ngtcp2_strlen_lit(PLAINTEXT), ctx->key,
+    CRYPTO_chacha_20(dest, PLAINTEXT, sizeof(PLAINTEXT), ctx->key,
                      sample + sizeof(counter), counter);
     return 0;
   default:
@@ -436,7 +436,8 @@ int ngtcp2_crypto_read_write_crypto_data(
   int rv;
   int err;
 
-  if (SSL_provide_quic_data(
+  if (datalen &&
+      SSL_provide_quic_data(
         ssl,
         ngtcp2_crypto_boringssl_from_ngtcp2_encryption_level(encryption_level),
         data, datalen) != 1) {
@@ -465,6 +466,16 @@ int ngtcp2_crypto_read_write_crypto_data(
         }
 
         goto retry;
+      case SSL_ERROR_WANT_X509_LOOKUP:
+      case SSL_ERROR_WANT_PRIVATE_KEY_OPERATION:
+      case SSL_ERROR_WANT_CERTIFICATE_VERIFY:
+        /* It might be better to return this error, but ngtcp2 does
+           not need to know whether handshake has been interrupted or
+           not.  We expect that necessary plumbing should be done by
+           application when handshake is interrupted (e.g., via
+           SSL_PRIVATE_KEY_METHOD).  If it does not work, we will
+           reconsider this. */
+        return 0;
       default:
         return -1;
       }
@@ -568,6 +579,19 @@ int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn, uint8_t *data,
   return 0;
 }
 
+int ngtcp2_crypto_get_path_challenge_data2_cb(ngtcp2_conn *conn,
+                                              ngtcp2_path_challenge_data *data,
+                                              void *user_data) {
+  (void)conn;
+  (void)user_data;
+
+  if (RAND_bytes(data->data, NGTCP2_PATH_CHALLENGE_DATALEN) != 1) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
+  return 0;
+}
+
 int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
   if (RAND_bytes(data, datalen) != 1) {
     return -1;
diff --git a/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h b/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h
index c2099d24950ac2..28eeeb5ead8061 100644
--- a/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h
+++ b/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h
@@ -524,11 +524,14 @@ NGTCP2_EXTERN int ngtcp2_crypto_recv_client_initial_cb(ngtcp2_conn *conn,
  * completes.  It is allowed to call this function with |datalen| ==
  * 0.  In this case, no additional read operation is done.
  *
+ * This function is implemented per TLS backend.  See
+ * :ref:`tls-integration` for more details.
+ *
  * This function returns 0 if it succeeds, or a negative error code.
  * The generic error code is -1 if a specific error code is not
  * suitable.  The error codes less than -10000 are specific to
- * underlying TLS implementation.  For quictls, the error codes are
- * defined in *ngtcp2_crypto_quictls.h*.
+ * underlying TLS implementation.  Refer to the implementation
+ * specific header files for error codes.
  */
 NGTCP2_EXTERN int
 ngtcp2_crypto_read_write_crypto_data(ngtcp2_conn *conn,
@@ -542,11 +545,22 @@ ngtcp2_crypto_read_write_crypto_data(ngtcp2_conn *conn,
  * `ngtcp2_crypto_read_write_crypto_data`.  It can be directly passed
  * to :member:`ngtcp2_callbacks.recv_crypto_data` field.
  *
+ * For quictls and OpenSSL, the following error codes are treated as
+ * success:
+ *
+ * - -10001 (e.g., :macro:`NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP`)
+ * - -10002 (e.g., :macro:`NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB`)
+ *
+ * To continue the interrupted handshake, call
+ * `ngtcp2_conn_continue_handshake`.
+ *
+ * See :ref:`tls-integration` for more details.
+ *
  * If this function is used, the TLS implementation specific error
  * codes described in `ngtcp2_crypto_read_write_crypto_data` are
- * treated as if it returns -1.  Do not use this function if an
- * application wishes to use the TLS implementation specific error
- * codes.
+ * treated as if it returns -1 except for those that are listed above.
+ * Do not use this function if an application wishes to use the TLS
+ * implementation specific error codes.
  */
 NGTCP2_EXTERN int ngtcp2_crypto_recv_crypto_data_cb(
   ngtcp2_conn *conn, ngtcp2_encryption_level encryption_level, uint64_t offset,
@@ -583,7 +597,7 @@ NGTCP2_EXTERN int ngtcp2_crypto_generate_stateless_reset_token(
  * :macro:`NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY` is the magic byte for
  * Retry token generated by `ngtcp2_crypto_generate_retry_token`.
  */
-#define NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY 0xb6
+#define NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY 0xB6
 
 /**
  * @macro
@@ -591,7 +605,7 @@ NGTCP2_EXTERN int ngtcp2_crypto_generate_stateless_reset_token(
  * :macro:`NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY2` is the magic byte for
  * Retry token generated by `ngtcp2_crypto_generate_retry_token2`.
  */
-#define NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY2 0xb7
+#define NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY2 0xB7
 
 /**
  * @macro
@@ -978,11 +992,29 @@ NGTCP2_EXTERN void ngtcp2_crypto_delete_crypto_cipher_ctx_cb(
  *
  * This function can be directly passed to
  * :member:`ngtcp2_callbacks.get_path_challenge_data` field.
+ *
+ * Deprecated since v1.22.0.  Use
+ * `ngtcp2_crypto_get_path_challenge_data2_cb` instead.
  */
 NGTCP2_EXTERN int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn,
                                                            uint8_t *data,
                                                            void *user_data);
 
+/**
+ * @function
+ *
+ * `ngtcp2_crypto_get_path_challenge_data2_cb` writes unpredictable
+ * sequence of :macro:`NGTCP2_PATH_CHALLENGE_DATALEN` bytes to |data|
+ * which is sent with PATH_CHALLENGE frame.
+ *
+ * This function can be directly passed to
+ * :member:`ngtcp2_callbacks.get_path_challenge_data2` field.
+ *
+ * This function has been available since v1.22.0.
+ */
+NGTCP2_EXTERN int ngtcp2_crypto_get_path_challenge_data2_cb(
+  ngtcp2_conn *conn, ngtcp2_path_challenge_data *data, void *user_data);
+
 /**
  * @function
  *
diff --git a/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c b/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c
index 81cadc6424b3e7..fa393c8ece5200 100644
--- a/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c
+++ b/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c
@@ -49,8 +49,8 @@
 static EVP_CIPHER *crypto_aes_128_gcm;
 static EVP_CIPHER *crypto_aes_256_gcm;
 static EVP_CIPHER *crypto_aes_128_ccm;
-static EVP_CIPHER *crypto_aes_128_ctr;
-static EVP_CIPHER *crypto_aes_256_ctr;
+static EVP_CIPHER *crypto_aes_128_ecb;
+static EVP_CIPHER *crypto_aes_256_ecb;
 #ifndef NGTCP2_NO_CHACHA_POLY1305
 static EVP_CIPHER *crypto_chacha20_poly1305;
 static EVP_CIPHER *crypto_chacha20;
@@ -66,8 +66,8 @@ int ngtcp2_crypto_ossl_init(void) {
   crypto_aes_128_gcm = EVP_CIPHER_fetch(NULL, "AES-128-GCM", NULL);
   crypto_aes_256_gcm = EVP_CIPHER_fetch(NULL, "AES-256-GCM", NULL);
   crypto_aes_128_ccm = EVP_CIPHER_fetch(NULL, "AES-128-CCM", NULL);
-  crypto_aes_128_ctr = EVP_CIPHER_fetch(NULL, "AES-128-CTR", NULL);
-  crypto_aes_256_ctr = EVP_CIPHER_fetch(NULL, "AES-256-CTR", NULL);
+  crypto_aes_128_ecb = EVP_CIPHER_fetch(NULL, "AES-128-ECB", NULL);
+  crypto_aes_256_ecb = EVP_CIPHER_fetch(NULL, "AES-256-ECB", NULL);
 #ifndef NGTCP2_NO_CHACHA_POLY1305
   crypto_chacha20_poly1305 = EVP_CIPHER_fetch(NULL, "ChaCha20-Poly1305", NULL);
   crypto_chacha20 = EVP_CIPHER_fetch(NULL, "ChaCha20", NULL);
@@ -113,20 +113,20 @@ static const EVP_CIPHER *crypto_aead_aes_128_ccm(void) {
   return EVP_aes_128_ccm();
 }
 
-static const EVP_CIPHER *crypto_cipher_aes_128_ctr(void) {
-  if (crypto_aes_128_ctr) {
-    return crypto_aes_128_ctr;
+static const EVP_CIPHER *crypto_cipher_aes_128_ecb(void) {
+  if (crypto_aes_128_ecb) {
+    return crypto_aes_128_ecb;
   }
 
-  return EVP_aes_128_ctr();
+  return EVP_aes_128_ecb();
 }
 
-static const EVP_CIPHER *crypto_cipher_aes_256_ctr(void) {
-  if (crypto_aes_256_ctr) {
-    return crypto_aes_256_ctr;
+static const EVP_CIPHER *crypto_cipher_aes_256_ecb(void) {
+  if (crypto_aes_256_ecb) {
+    return crypto_aes_256_ecb;
   }
 
-  return EVP_aes_256_ctr();
+  return EVP_aes_256_ecb();
 }
 
 #ifndef NGTCP2_NO_CHACHA_POLY1305
@@ -198,7 +198,7 @@ ngtcp2_crypto_md *ngtcp2_crypto_md_sha256(ngtcp2_crypto_md *md) {
 ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_initial(ngtcp2_crypto_ctx *ctx) {
   ngtcp2_crypto_aead_init(&ctx->aead, (void *)crypto_aead_aes_128_gcm());
   ctx->md.native_handle = (void *)crypto_md_sha256();
-  ctx->hp.native_handle = (void *)crypto_cipher_aes_128_ctr();
+  ctx->hp.native_handle = (void *)crypto_cipher_aes_128_ecb();
   ctx->max_encryption = 0;
   ctx->max_decryption_failure = 0;
   return ctx;
@@ -269,9 +269,9 @@ static const EVP_CIPHER *crypto_cipher_id_get_hp(uint32_t cipher_id) {
   switch (cipher_id) {
   case TLS1_3_CK_AES_128_GCM_SHA256:
   case TLS1_3_CK_AES_128_CCM_SHA256:
-    return crypto_cipher_aes_128_ctr();
+    return crypto_cipher_aes_128_ecb();
   case TLS1_3_CK_AES_256_GCM_SHA384:
-    return crypto_cipher_aes_256_ctr();
+    return crypto_cipher_aes_256_ecb();
 #ifndef NGTCP2_NO_CHACHA_POLY1305
   case TLS1_3_CK_CHACHA20_POLY1305_SHA256:
     return crypto_cipher_chacha20();
@@ -838,17 +838,31 @@ int ngtcp2_crypto_decrypt(uint8_t *dest, const ngtcp2_crypto_aead *aead,
 int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
                           const ngtcp2_crypto_cipher_ctx *hp_ctx,
                           const uint8_t *sample) {
-  static const uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";
+  static const uint8_t PLAINTEXT[16] = {0};
   EVP_CIPHER_CTX *actx = hp_ctx->native_handle;
   int len;
 
   (void)hp;
 
-  if (!EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) ||
-      !EVP_EncryptUpdate(actx, dest, &len, PLAINTEXT,
-                         ngtcp2_strlen_lit(PLAINTEXT)) ||
-      !EVP_EncryptFinal_ex(actx, dest + ngtcp2_strlen_lit(PLAINTEXT), &len)) {
-    return -1;
+  switch (EVP_CIPHER_CTX_nid(actx)) {
+  case NID_aes_128_ecb:
+  case NID_aes_256_ecb:
+    if (!EVP_EncryptUpdate(actx, dest, &len, sample, NGTCP2_HP_SAMPLELEN)) {
+      return -1;
+    }
+
+    break;
+  case NID_chacha20:
+    if (!EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) ||
+        !EVP_EncryptUpdate(actx, dest, &len, PLAINTEXT, sizeof(PLAINTEXT)) ||
+        !EVP_EncryptFinal_ex(actx, dest + sizeof(PLAINTEXT), &len)) {
+      return -1;
+    }
+
+    break;
+  default:
+    assert(0);
+    abort();
   }
 
   return 0;
@@ -983,6 +997,19 @@ int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn, uint8_t *data,
   return 0;
 }
 
+int ngtcp2_crypto_get_path_challenge_data2_cb(ngtcp2_conn *conn,
+                                              ngtcp2_path_challenge_data *data,
+                                              void *user_data) {
+  (void)conn;
+  (void)user_data;
+
+  if (RAND_bytes(data->data, NGTCP2_PATH_CHALLENGE_DATALEN) != 1) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
+  return 0;
+}
+
 int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
   if (RAND_bytes(data, (int)datalen) != 1) {
     return -1;
diff --git a/deps/ngtcp2/ngtcp2/crypto/picotls/picotls.c b/deps/ngtcp2/ngtcp2/crypto/picotls/picotls.c
index d9a388e3699ce1..bd29a541277b0f 100644
--- a/deps/ngtcp2/ngtcp2/crypto/picotls/picotls.c
+++ b/deps/ngtcp2/ngtcp2/crypto/picotls/picotls.c
@@ -50,7 +50,7 @@ ngtcp2_crypto_md *ngtcp2_crypto_md_sha256(ngtcp2_crypto_md *md) {
 ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_initial(ngtcp2_crypto_ctx *ctx) {
   ngtcp2_crypto_aead_init(&ctx->aead, (void *)&ptls_openssl_aes128gcm);
   ctx->md.native_handle = (void *)&ptls_openssl_sha256;
-  ctx->hp.native_handle = (void *)&ptls_openssl_aes128ctr;
+  ctx->hp.native_handle = (void *)&ptls_openssl_aes128ecb;
   ctx->max_encryption = 0;
   ctx->max_decryption_failure = 0;
   return ctx;
@@ -104,11 +104,11 @@ crypto_cipher_suite_get_aead_max_decryption_failure(ptls_cipher_suite_t *cs) {
 static const ptls_cipher_algorithm_t *
 crypto_cipher_suite_get_hp(ptls_cipher_suite_t *cs) {
   if (cs->aead == &ptls_openssl_aes128gcm) {
-    return &ptls_openssl_aes128ctr;
+    return &ptls_openssl_aes128ecb;
   }
 
   if (cs->aead == &ptls_openssl_aes256gcm) {
-    return &ptls_openssl_aes256ctr;
+    return &ptls_openssl_aes256ecb;
   }
 
 #ifdef PTLS_OPENSSL_HAVE_CHACHA20_POLY1305
@@ -238,6 +238,11 @@ int ngtcp2_crypto_cipher_ctx_encrypt_init(ngtcp2_crypto_cipher_ctx *cipher_ctx,
     return -1;
   }
 
+  if (cipher->native_handle == &ptls_openssl_aes128ecb ||
+      cipher->native_handle == &ptls_openssl_aes256ecb) {
+    ptls_cipher_init(actx, NULL);
+  }
+
   cipher_ctx->native_handle = actx;
 
   return 0;
@@ -352,13 +357,20 @@ int ngtcp2_crypto_decrypt(uint8_t *dest, const ngtcp2_crypto_aead *aead,
 int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
                           const ngtcp2_crypto_cipher_ctx *hp_ctx,
                           const uint8_t *sample) {
+  static const uint8_t PLAINTEXT[16] = {0};
   ptls_cipher_context_t *actx = hp_ctx->native_handle;
-  static const uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";
 
   (void)hp;
 
+  if (hp->native_handle == &ptls_openssl_aes128ecb ||
+      hp->native_handle == &ptls_openssl_aes256ecb) {
+    ptls_cipher_encrypt(actx, dest, sample, NGTCP2_HP_SAMPLELEN);
+
+    return 0;
+  }
+
   ptls_cipher_init(actx, sample);
-  ptls_cipher_encrypt(actx, dest, PLAINTEXT, ngtcp2_strlen_lit(PLAINTEXT));
+  ptls_cipher_encrypt(actx, dest, PLAINTEXT, sizeof(PLAINTEXT));
 
   return 0;
 }
@@ -377,7 +389,7 @@ int ngtcp2_crypto_read_write_crypto_data(
 
   ptls_buffer_init(&sendbuf, (void *)"", 0);
 
-  assert(epoch == ptls_get_read_epoch(cptls->ptls));
+  assert(datalen == 0 || epoch == ptls_get_read_epoch(cptls->ptls));
 
   rv = ptls_handle_message(cptls->ptls, &sendbuf, epoch_offsets, epoch, data,
                            datalen, &cptls->handshake_properties);
@@ -493,6 +505,17 @@ int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn, uint8_t *data,
   return 0;
 }
 
+int ngtcp2_crypto_get_path_challenge_data2_cb(ngtcp2_conn *conn,
+                                              ngtcp2_path_challenge_data *data,
+                                              void *user_data) {
+  (void)conn;
+  (void)user_data;
+
+  ptls_openssl_random_bytes(data->data, NGTCP2_PATH_CHALLENGE_DATALEN);
+
+  return 0;
+}
+
 int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
   ptls_openssl_random_bytes(data, datalen);
 
@@ -500,8 +523,7 @@ int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
 }
 
 void ngtcp2_crypto_picotls_ctx_init(ngtcp2_crypto_picotls_ctx *cptls) {
-  cptls->ptls = NULL;
-  memset(&cptls->handshake_properties, 0, sizeof(cptls->handshake_properties));
+  *cptls = (ngtcp2_crypto_picotls_ctx){0};
 }
 
 static int set_additional_extensions(ptls_handshake_properties_t *hsprops,
diff --git a/deps/ngtcp2/ngtcp2/crypto/quictls/quictls.c b/deps/ngtcp2/ngtcp2/crypto/quictls/quictls.c
index 742321ec857690..1076d97bfc0e26 100644
--- a/deps/ngtcp2/ngtcp2/crypto/quictls/quictls.c
+++ b/deps/ngtcp2/ngtcp2/crypto/quictls/quictls.c
@@ -49,8 +49,8 @@ static EVP_CIPHER *crypto_aes_128_gcm;
 static EVP_CIPHER *crypto_aes_256_gcm;
 static EVP_CIPHER *crypto_chacha20_poly1305;
 static EVP_CIPHER *crypto_aes_128_ccm;
-static EVP_CIPHER *crypto_aes_128_ctr;
-static EVP_CIPHER *crypto_aes_256_ctr;
+static EVP_CIPHER *crypto_aes_128_ecb;
+static EVP_CIPHER *crypto_aes_256_ecb;
 static EVP_CIPHER *crypto_chacha20;
 static EVP_MD *crypto_sha256;
 static EVP_MD *crypto_sha384;
@@ -77,13 +77,13 @@ int ngtcp2_crypto_quictls_init(void) {
     return -1;
   }
 
-  crypto_aes_128_ctr = EVP_CIPHER_fetch(NULL, "AES-128-CTR", NULL);
-  if (crypto_aes_128_ctr == NULL) {
+  crypto_aes_128_ecb = EVP_CIPHER_fetch(NULL, "AES-128-ECB", NULL);
+  if (crypto_aes_128_ecb == NULL) {
     return -1;
   }
 
-  crypto_aes_256_ctr = EVP_CIPHER_fetch(NULL, "AES-256-CTR", NULL);
-  if (crypto_aes_256_ctr == NULL) {
+  crypto_aes_256_ecb = EVP_CIPHER_fetch(NULL, "AES-256-ECB", NULL);
+  if (crypto_aes_256_ecb == NULL) {
     return -1;
   }
 
@@ -144,20 +144,20 @@ static const EVP_CIPHER *crypto_aead_aes_128_ccm(void) {
   return EVP_aes_128_ccm();
 }
 
-static const EVP_CIPHER *crypto_cipher_aes_128_ctr(void) {
-  if (crypto_aes_128_ctr) {
-    return crypto_aes_128_ctr;
+static const EVP_CIPHER *crypto_cipher_aes_128_ecb(void) {
+  if (crypto_aes_128_ecb) {
+    return crypto_aes_128_ecb;
   }
 
-  return EVP_aes_128_ctr();
+  return EVP_aes_128_ecb();
 }
 
-static const EVP_CIPHER *crypto_cipher_aes_256_ctr(void) {
-  if (crypto_aes_256_ctr) {
-    return crypto_aes_256_ctr;
+static const EVP_CIPHER *crypto_cipher_aes_256_ecb(void) {
+  if (crypto_aes_256_ecb) {
+    return crypto_aes_256_ecb;
   }
 
-  return EVP_aes_256_ctr();
+  return EVP_aes_256_ecb();
 }
 
 static const EVP_CIPHER *crypto_cipher_chacha20(void) {
@@ -196,8 +196,8 @@ static EVP_KDF *crypto_kdf_hkdf(void) {
 #  define crypto_aead_aes_256_gcm EVP_aes_256_gcm
 #  define crypto_aead_chacha20_poly1305 EVP_chacha20_poly1305
 #  define crypto_aead_aes_128_ccm EVP_aes_128_ccm
-#  define crypto_cipher_aes_128_ctr EVP_aes_128_ctr
-#  define crypto_cipher_aes_256_ctr EVP_aes_256_ctr
+#  define crypto_cipher_aes_128_ecb EVP_aes_128_ecb
+#  define crypto_cipher_aes_256_ecb EVP_aes_256_ecb
 #  define crypto_cipher_chacha20 EVP_chacha20
 #  define crypto_md_sha256 EVP_sha256
 #  define crypto_md_sha384 EVP_sha384
@@ -232,7 +232,7 @@ ngtcp2_crypto_md *ngtcp2_crypto_md_sha256(ngtcp2_crypto_md *md) {
 ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_initial(ngtcp2_crypto_ctx *ctx) {
   ngtcp2_crypto_aead_init(&ctx->aead, (void *)crypto_aead_aes_128_gcm());
   ctx->md.native_handle = (void *)crypto_md_sha256();
-  ctx->hp.native_handle = (void *)crypto_cipher_aes_128_ctr();
+  ctx->hp.native_handle = (void *)crypto_cipher_aes_128_ecb();
   ctx->max_encryption = 0;
   ctx->max_decryption_failure = 0;
   return ctx;
@@ -297,9 +297,9 @@ static const EVP_CIPHER *crypto_cipher_id_get_hp(uint32_t cipher_id) {
   switch (cipher_id) {
   case TLS1_3_CK_AES_128_GCM_SHA256:
   case TLS1_3_CK_AES_128_CCM_SHA256:
-    return crypto_cipher_aes_128_ctr();
+    return crypto_cipher_aes_128_ecb();
   case TLS1_3_CK_AES_256_GCM_SHA384:
-    return crypto_cipher_aes_256_ctr();
+    return crypto_cipher_aes_256_ecb();
   case TLS1_3_CK_CHACHA20_POLY1305_SHA256:
     return crypto_cipher_chacha20();
   default:
@@ -779,17 +779,31 @@ int ngtcp2_crypto_decrypt(uint8_t *dest, const ngtcp2_crypto_aead *aead,
 int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
                           const ngtcp2_crypto_cipher_ctx *hp_ctx,
                           const uint8_t *sample) {
-  static const uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";
+  static const uint8_t PLAINTEXT[16] = {0};
   EVP_CIPHER_CTX *actx = hp_ctx->native_handle;
   int len;
 
   (void)hp;
 
-  if (!EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) ||
-      !EVP_EncryptUpdate(actx, dest, &len, PLAINTEXT,
-                         ngtcp2_strlen_lit(PLAINTEXT)) ||
-      !EVP_EncryptFinal_ex(actx, dest + ngtcp2_strlen_lit(PLAINTEXT), &len)) {
-    return -1;
+  switch (EVP_CIPHER_CTX_nid(actx)) {
+  case NID_aes_128_ecb:
+  case NID_aes_256_ecb:
+    if (!EVP_EncryptUpdate(actx, dest, &len, sample, NGTCP2_HP_SAMPLELEN)) {
+      return -1;
+    }
+
+    break;
+  case NID_chacha20:
+    if (!EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) ||
+        !EVP_EncryptUpdate(actx, dest, &len, PLAINTEXT, sizeof(PLAINTEXT)) ||
+        !EVP_EncryptFinal_ex(actx, dest + sizeof(PLAINTEXT), &len)) {
+      return -1;
+    }
+
+    break;
+  default:
+    assert(0);
+    abort();
   }
 
   return 0;
@@ -802,7 +816,8 @@ int ngtcp2_crypto_read_write_crypto_data(
   int rv;
   int err;
 
-  if (SSL_provide_quic_data(
+  if (datalen &&
+      SSL_provide_quic_data(
         ssl,
         ngtcp2_crypto_quictls_from_ngtcp2_encryption_level(encryption_level),
         data, datalen) != 1) {
@@ -922,6 +937,19 @@ int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn, uint8_t *data,
   return 0;
 }
 
+int ngtcp2_crypto_get_path_challenge_data2_cb(ngtcp2_conn *conn,
+                                              ngtcp2_path_challenge_data *data,
+                                              void *user_data) {
+  (void)conn;
+  (void)user_data;
+
+  if (RAND_bytes(data->data, NGTCP2_PATH_CHALLENGE_DATALEN) != 1) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
+  return 0;
+}
+
 int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
   if (RAND_bytes(data, (int)datalen) != 1) {
     return -1;
diff --git a/deps/ngtcp2/ngtcp2/crypto/shared.c b/deps/ngtcp2/ngtcp2/crypto/shared.c
index 1d8d1d68f78fd7..f1bb90267213da 100644
--- a/deps/ngtcp2/ngtcp2/crypto/shared.c
+++ b/deps/ngtcp2/ngtcp2/crypto/shared.c
@@ -37,6 +37,22 @@
 #include "ngtcp2_macro.h"
 #include "ngtcp2_net.h"
 
+/*
+ * NGTCP2_INITIAL_SALT_V1 is a salt value which is used to derive
+ * initial secret.  It is used for QUIC v1.
+ */
+static const uint8_t NGTCP2_INITIAL_SALT_V1[] = {
+  0x38, 0x76, 0x2C, 0xF7, 0xF5, 0x59, 0x34, 0xB3, 0x4D, 0x17,
+  0x9A, 0xE6, 0xA4, 0xC8, 0x0C, 0xAD, 0xCC, 0xBB, 0x7F, 0x0A};
+
+/*
+ * NGTCP2_INITIAL_SALT_V2 is a salt value which is used to derive
+ * initial secret.  It is used for QUIC v2.
+ */
+static const uint8_t NGTCP2_INITIAL_SALT_V2[] = {
+  0x0D, 0xED, 0xE3, 0xDE, 0xF7, 0x00, 0xA6, 0xDB, 0x81, 0x93,
+  0x81, 0xBE, 0x6E, 0x26, 0x9D, 0xCB, 0xF9, 0xBD, 0x2E, 0xD9};
+
 ngtcp2_crypto_md *ngtcp2_crypto_md_init(ngtcp2_crypto_md *md,
                                         void *md_native_handle) {
   md->native_handle = md_native_handle;
@@ -87,12 +103,12 @@ int ngtcp2_crypto_derive_initial_secrets(uint8_t *rx_secret, uint8_t *tx_secret,
   switch (version) {
   case NGTCP2_PROTO_VER_V1:
   default:
-    salt = (const uint8_t *)NGTCP2_INITIAL_SALT_V1;
-    saltlen = ngtcp2_strlen_lit(NGTCP2_INITIAL_SALT_V1);
+    salt = NGTCP2_INITIAL_SALT_V1;
+    saltlen = sizeof(NGTCP2_INITIAL_SALT_V1);
     break;
   case NGTCP2_PROTO_VER_V2:
-    salt = (const uint8_t *)NGTCP2_INITIAL_SALT_V2;
-    saltlen = ngtcp2_strlen_lit(NGTCP2_INITIAL_SALT_V2);
+    salt = NGTCP2_INITIAL_SALT_V2;
+    saltlen = sizeof(NGTCP2_INITIAL_SALT_V2);
     break;
   }
 
@@ -922,8 +938,8 @@ ngtcp2_ssize ngtcp2_crypto_generate_retry_token(
   uint8_t *token, const uint8_t *secret, size_t secretlen, uint32_t version,
   const ngtcp2_sockaddr *remote_addr, ngtcp2_socklen remote_addrlen,
   const ngtcp2_cid *retry_scid, const ngtcp2_cid *odcid, ngtcp2_tstamp ts) {
-  uint8_t
-    plaintext[/* cid len = */ 1 + NGTCP2_MAX_CIDLEN + sizeof(ngtcp2_tstamp)];
+  uint8_t plaintext[/* cid len = */ 1 + NGTCP2_MAX_CIDLEN +
+                    sizeof(ngtcp2_tstamp)] = {0};
   uint8_t rand_data[NGTCP2_CRYPTO_TOKEN_RAND_DATALEN];
   uint8_t key[16];
   uint8_t iv[12];
@@ -942,8 +958,6 @@ ngtcp2_ssize ngtcp2_crypto_generate_retry_token(
 
   assert((size_t)remote_addrlen <= sizeof(ngtcp2_sockaddr_union));
 
-  memset(plaintext, 0, sizeof(plaintext));
-
   *p++ = (uint8_t)odcid->datalen;
   memcpy(p, odcid->data, odcid->datalen);
   p += NGTCP2_MAX_CIDLEN;
@@ -1104,7 +1118,7 @@ ngtcp2_ssize ngtcp2_crypto_generate_retry_token2(
   const ngtcp2_sockaddr *remote_addr, ngtcp2_socklen remote_addrlen,
   const ngtcp2_cid *retry_scid, const ngtcp2_cid *odcid, ngtcp2_tstamp ts) {
   uint8_t plaintext[sizeof(ngtcp2_sockaddr_union) + /* cid len = */ 1 +
-                    NGTCP2_MAX_CIDLEN + sizeof(ngtcp2_tstamp)];
+                    NGTCP2_MAX_CIDLEN + sizeof(ngtcp2_tstamp)] = {0};
   uint8_t rand_data[NGTCP2_CRYPTO_TOKEN_RAND_DATALEN];
   uint8_t key[16];
   uint8_t iv[12];
@@ -1121,8 +1135,6 @@ ngtcp2_ssize ngtcp2_crypto_generate_retry_token2(
 
   assert((size_t)remote_addrlen <= sizeof(ngtcp2_sockaddr_union));
 
-  memset(plaintext, 0, sizeof(plaintext));
-
   memcpy(p, remote_addr, (size_t)remote_addrlen);
   p += sizeof(ngtcp2_sockaddr_union);
   *p++ = (uint8_t)odcid->datalen;
@@ -1717,8 +1729,21 @@ int ngtcp2_crypto_recv_crypto_data_cb(ngtcp2_conn *conn,
   (void)offset;
   (void)user_data;
 
-  if (ngtcp2_crypto_read_write_crypto_data(conn, encryption_level, data,
-                                           datalen) != 0) {
+  rv =
+    ngtcp2_crypto_read_write_crypto_data(conn, encryption_level, data, datalen);
+  if (rv != 0) {
+    switch (rv) {
+    case /* NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_CLIENT_HELLO_CB */ -10001:
+    case /* NGTCP2_CRYPTO_QUICTLS_ERR_TLS_WANT_X509_LOOKUP */ -10002:
+      /* These errors are not unrecoverable error, and they just
+         indicate that handshake has been interrupted.  ngtcp2 does
+         not mind whether handshake is interrupted or not.  Just
+         return 0 in this case.  There are OSSL version and they have
+         the same enum value, therefore we cannot enumerate them
+         here. */
+      return 0;
+    }
+
     rv = ngtcp2_conn_get_tls_error(conn);
     if (rv) {
       return rv;
diff --git a/deps/ngtcp2/ngtcp2/crypto/shared.h b/deps/ngtcp2/ngtcp2/crypto/shared.h
index 34158d3d02dbc0..c517b7f2249041 100644
--- a/deps/ngtcp2/ngtcp2/crypto/shared.h
+++ b/deps/ngtcp2/ngtcp2/crypto/shared.h
@@ -31,26 +31,6 @@
 
 #include 
 
-/**
- * @macro
- *
- * :macro:`NGTCP2_INITIAL_SALT_V1` is a salt value which is used to
- * derive initial secret.  It is used for QUIC v1.
- */
-#define NGTCP2_INITIAL_SALT_V1                                                 \
-  "\x38\x76\x2c\xf7\xf5\x59\x34\xb3\x4d\x17\x9a\xe6\xa4\xc8\x0c\xad\xcc\xbb"   \
-  "\x7f\x0a"
-
-/**
- * @macro
- *
- * :macro:`NGTCP2_INITIAL_SALT_V2` is a salt value which is used to
- * derive initial secret.  It is used for QUIC v2.
- */
-#define NGTCP2_INITIAL_SALT_V2                                                 \
-  "\x0d\xed\xe3\xde\xf7\x00\xa6\xdb\x81\x93\x81\xbe\x6e\x26\x9d\xcb\xf9\xbd"   \
-  "\x2e\xd9"
-
 /* Maximum key usage (encryption) limits */
 #define NGTCP2_CRYPTO_MAX_ENCRYPTION_AES_GCM (1ULL << 23)
 #define NGTCP2_CRYPTO_MAX_ENCRYPTION_CHACHA20_POLY1305 (1ULL << 62)
diff --git a/deps/ngtcp2/ngtcp2/crypto/wolfssl/wolfssl.c b/deps/ngtcp2/ngtcp2/crypto/wolfssl/wolfssl.c
index 168d32ce109a8d..fa2b147b6ba1be 100644
--- a/deps/ngtcp2/ngtcp2/crypto/wolfssl/wolfssl.c
+++ b/deps/ngtcp2/ngtcp2/crypto/wolfssl/wolfssl.c
@@ -56,7 +56,7 @@ ngtcp2_crypto_md *ngtcp2_crypto_md_sha256(ngtcp2_crypto_md *md) {
 ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_initial(ngtcp2_crypto_ctx *ctx) {
   ngtcp2_crypto_aead_init(&ctx->aead, (void *)wolfSSL_EVP_aes_128_gcm());
   ctx->md.native_handle = (void *)wolfSSL_EVP_sha256();
-  ctx->hp.native_handle = (void *)wolfSSL_EVP_aes_128_ctr();
+  ctx->hp.native_handle = (void *)wolfSSL_EVP_aes_128_ecb();
   ctx->max_encryption = 0;
   ctx->max_decryption_failure = 0;
   return ctx;
@@ -107,6 +107,21 @@ static int supported_aead(const WOLFSSL_EVP_CIPHER *aead) {
          wolfSSL_quic_aead_is_chacha20(aead) || wolfSSL_quic_aead_is_ccm(aead);
 }
 
+static const WOLFSSL_EVP_CIPHER *
+crypto_aead_get_hp(const WOLFSSL_EVP_CIPHER *aead) {
+  switch (wolfSSL_EVP_CIPHER_nid(aead)) {
+  case NID_aes_128_gcm:
+  case NID_aes_128_ccm:
+    return wolfSSL_EVP_aes_128_ecb();
+  case NID_aes_256_gcm:
+    return wolfSSL_EVP_aes_256_ecb();
+  case NID_chacha20_poly1305:
+    return wolfSSL_EVP_chacha20();
+  default:
+    return NULL;
+  }
+}
+
 ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_tls(ngtcp2_crypto_ctx *ctx,
                                          void *tls_native_handle) {
   WOLFSSL *ssl = tls_native_handle;
@@ -122,7 +137,7 @@ ngtcp2_crypto_ctx *ngtcp2_crypto_ctx_tls(ngtcp2_crypto_ctx *ctx,
 
   ngtcp2_crypto_aead_init(&ctx->aead, (void *)aead);
   ctx->md.native_handle = (void *)wolfSSL_quic_get_md(ssl);
-  ctx->hp.native_handle = (void *)wolfSSL_quic_get_hp(ssl);
+  ctx->hp.native_handle = (void *)crypto_aead_get_hp(aead);
   ctx->max_encryption = crypto_aead_get_aead_max_encryption(aead);
   ctx->max_decryption_failure =
     crypto_aead_get_aead_max_decryption_failure(aead);
@@ -289,21 +304,33 @@ int ngtcp2_crypto_decrypt(uint8_t *dest, const ngtcp2_crypto_aead *aead,
 int ngtcp2_crypto_hp_mask(uint8_t *dest, const ngtcp2_crypto_cipher *hp,
                           const ngtcp2_crypto_cipher_ctx *hp_ctx,
                           const uint8_t *sample) {
-  static const uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";
+  static const uint8_t PLAINTEXT[16] = {0};
   WOLFSSL_EVP_CIPHER_CTX *actx = hp_ctx->native_handle;
   int len;
 
   (void)hp;
 
-  if (wolfSSL_EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) !=
-        WOLFSSL_SUCCESS ||
-      wolfSSL_EVP_CipherUpdate(actx, dest, &len, PLAINTEXT,
-                               ngtcp2_strlen_lit(PLAINTEXT)) !=
-        WOLFSSL_SUCCESS ||
-      wolfSSL_EVP_EncryptFinal_ex(actx, dest + ngtcp2_strlen_lit(PLAINTEXT),
-                                  &len) != WOLFSSL_SUCCESS) {
-    DEBUG_MSG("WOLFSSL: hp_mask FAILED\n");
-    return -1;
+  switch (wolfSSL_EVP_CIPHER_CTX_nid(actx)) {
+  case NID_aes_128_ecb:
+  case NID_aes_256_ecb:
+    if (!wolfSSL_EVP_CipherUpdate(actx, dest, &len, sample,
+                                  NGTCP2_HP_SAMPLELEN)) {
+      return -1;
+    }
+
+    break;
+  case NID_chacha20:
+    if (wolfSSL_EVP_EncryptInit_ex(actx, NULL, NULL, NULL, sample) !=
+          WOLFSSL_SUCCESS ||
+        wolfSSL_EVP_CipherUpdate(actx, dest, &len, PLAINTEXT,
+                                 sizeof(PLAINTEXT)) != WOLFSSL_SUCCESS ||
+        wolfSSL_EVP_EncryptFinal_ex(actx, dest + sizeof(PLAINTEXT), &len) !=
+          WOLFSSL_SUCCESS) {
+      DEBUG_MSG("WOLFSSL: hp_mask FAILED\n");
+      return -1;
+    }
+
+    break;
   }
 
   return 0;
@@ -444,6 +471,19 @@ int ngtcp2_crypto_get_path_challenge_data_cb(ngtcp2_conn *conn, uint8_t *data,
   return 0;
 }
 
+int ngtcp2_crypto_get_path_challenge_data2_cb(ngtcp2_conn *conn,
+                                              ngtcp2_path_challenge_data *data,
+                                              void *user_data) {
+  (void)conn;
+  (void)user_data;
+
+  DEBUG_MSG("WOLFSSL: get path challenge data\n");
+  if (wolfSSL_RAND_bytes(data->data, NGTCP2_PATH_CHALLENGE_DATALEN) != 1) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+  return 0;
+}
+
 int ngtcp2_crypto_random(uint8_t *data, size_t datalen) {
   DEBUG_MSG("WOLFSSL: get random\n");
   if (wolfSSL_RAND_bytes(data, (int)datalen) != 1) {
diff --git a/deps/ngtcp2/ngtcp2/examples/client.cc b/deps/ngtcp2/ngtcp2/examples/client.cc
index 56b757b2d91ed1..0c10e7bbdc0483 100644
--- a/deps/ngtcp2/ngtcp2/examples/client.cc
+++ b/deps/ngtcp2/ngtcp2/examples/client.cc
@@ -73,7 +73,7 @@ Stream::~Stream() {
   }
 }
 
-int Stream::open_file(const std::string_view &path) {
+std::expected Stream::open_file(std::string_view path) {
   assert(fd == -1);
 
   std::string_view filename;
@@ -84,8 +84,8 @@ int Stream::open_file(const std::string_view &path) {
   } else {
     filename = std::string_view{it, std::ranges::end(path)};
     if (filename == ".."sv || filename == "."sv) {
-      std::cerr << "Invalid file name: " << filename << std::endl;
-      return -1;
+      std::println(stderr, "Invalid file name: {}", filename);
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
   }
 
@@ -96,12 +96,12 @@ int Stream::open_file(const std::string_view &path) {
   fd = open(fname.c_str(), O_WRONLY | O_CREAT | O_TRUNC,
             S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
   if (fd == -1) {
-    std::cerr << "open: Could not open file " << fname << ": "
-              << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "open: Could not open file {}: {}", fname,
+                 strerror(errno));
+    return std::unexpected{Error::IO};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -117,7 +117,7 @@ void readcb(struct ev_loop *loop, ev_io *w, int revents) {
   auto ep = static_cast(w->data);
   auto c = ep->client;
 
-  if (c->on_read(*ep) != 0) {
+  if (!c->on_read(*ep)) {
     return;
   }
 
@@ -127,11 +127,9 @@ void readcb(struct ev_loop *loop, ev_io *w, int revents) {
 
 namespace {
 void timeoutcb(struct ev_loop *loop, ev_timer *w, int revents) {
-  int rv;
   auto c = static_cast(w->data);
 
-  rv = c->handle_expiry();
-  if (rv != 0) {
+  if (auto rv = c->handle_expiry(); !rv) {
     return;
   }
 
@@ -151,7 +149,7 @@ namespace {
 void key_updatecb(struct ev_loop *loop, ev_timer *w, int revents) {
   auto c = static_cast(w->data);
 
-  if (c->initiate_key_update() != 0) {
+  if (!c->initiate_key_update()) {
     c->disconnect();
   }
 }
@@ -258,7 +256,7 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
 
   auto c = static_cast(user_data);
 
-  if (c->recv_stream_data(flags, stream_id, {data, datalen}) != 0) {
+  if (!c->recv_stream_data(flags, stream_id, {data, datalen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -271,7 +269,7 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id,
                              uint64_t offset, uint64_t datalen, void *user_data,
                              void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->acked_stream_data_offset(stream_id, datalen) != 0) {
+  if (!c->acked_stream_data_offset(stream_id, datalen)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
@@ -286,7 +284,7 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_completed(conn, user_data);
   }
 
-  if (c->handshake_completed() != 0) {
+  if (!c->handshake_completed()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -294,10 +292,10 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
 }
 } // namespace
 
-int Client::handshake_completed() {
+std::expected Client::handshake_completed() {
   if (early_data_ && !tls_session_.get_early_data_accepted()) {
     if (!config.quiet) {
-      std::cerr << "Early data was rejected by server" << std::endl;
+      std::println(stderr, "Early data was rejected by server");
     }
 
     // Some TLS backends only report early data rejection after
@@ -305,27 +303,27 @@ int Client::handshake_completed() {
     // report it early (e.g., BoringSSL and PicoTLS), the following
     // functions are noop.
     if (auto rv = ngtcp2_conn_tls_early_data_rejected(conn_); rv != 0) {
-      std::cerr << "ngtcp2_conn_tls_early_data_rejected: "
-                << ngtcp2_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "ngtcp2_conn_tls_early_data_rejected: {}",
+                   ngtcp2_strerror(rv));
+      return std::unexpected{Error::QUIC};
     }
 
-    if (setup_httpconn() != 0) {
-      return -1;
+    if (auto rv = setup_httpconn(); !rv) {
+      return rv;
     }
   }
 
   if (!config.quiet) {
-    std::cerr << "Negotiated cipher suite is " << tls_session_.get_cipher_name()
-              << std::endl;
+    std::println(stderr, "Negotiated cipher suite is {}",
+                 tls_session_.get_cipher_name());
     if (auto group = tls_session_.get_negotiated_group(); !group.empty()) {
-      std::cerr << "Negotiated group is " << group << std::endl;
+      std::println(stderr, "Negotiated group is {}", group);
     }
-    std::cerr << "Negotiated ALPN is " << tls_session_.get_selected_alpn()
-              << std::endl;
+    std::println(stderr, "Negotiated ALPN is {}",
+                 tls_session_.get_selected_alpn());
 
     if (!config.ech_config_list.empty() && tls_session_.get_ech_accepted()) {
-      std::cerr << "ECH was accepted" << std::endl;
+      std::println(stderr, "ECH was accepted");
     }
   }
 
@@ -334,17 +332,16 @@ int Client::handshake_completed() {
     auto datalen =
       ngtcp2_conn_encode_0rtt_transport_params(conn_, data.data(), data.size());
     if (datalen < 0) {
-      std::cerr << "Could not encode 0-RTT transport parameters: "
-                << ngtcp2_strerror(static_cast(datalen)) << std::endl;
-    } else if (util::write_transport_params(
-                 config.tp_file, {data.data(), static_cast(datalen)}) !=
-               0) {
-      std::cerr << "Could not write transport parameters in " << config.tp_file
-                << std::endl;
+      std::println(stderr, "Could not encode 0-RTT transport parameters: {}",
+                   ngtcp2_strerror(static_cast(datalen)));
+    } else if (!util::write_transport_params(
+                 config.tp_file, {data.data(), static_cast(datalen)})) {
+      std::println(stderr, "Could not write transport parameters to {}",
+                   config.tp_file);
     }
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -355,9 +352,7 @@ int handshake_confirmed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_confirmed(conn, user_data);
   }
 
-  if (c->handshake_confirmed() != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->handshake_confirmed();
 
   return 0;
 }
@@ -373,7 +368,7 @@ bool Client::should_exit() const {
            nstreams_closed_ == nstreams_done_));
 }
 
-int Client::handshake_confirmed() {
+void Client::handshake_confirmed() {
   handshake_confirmed_ = true;
 
   if (config.change_local_addr) {
@@ -385,8 +380,6 @@ int Client::handshake_confirmed() {
   if (config.delay_stream) {
     start_delay_stream_timer();
   }
-
-  return 0;
 }
 
 namespace {
@@ -416,7 +409,7 @@ int stream_close(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
     app_error_code = NGHTTP3_H3_NO_ERROR;
   }
 
-  if (c->on_stream_close(stream_id, app_error_code) != 0) {
+  if (!c->on_stream_close(stream_id, app_error_code)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -430,7 +423,7 @@ int stream_reset(ngtcp2_conn *conn, int64_t stream_id, uint64_t final_size,
                  void *stream_user_data) {
   auto c = static_cast(user_data);
 
-  if (c->on_stream_reset(stream_id) != 0) {
+  if (!c->on_stream_reset(stream_id)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -444,7 +437,7 @@ int stream_stop_sending(ngtcp2_conn *conn, int64_t stream_id,
                         void *stream_user_data) {
   auto c = static_cast(user_data);
 
-  if (c->on_stream_stop_sending(stream_id) != 0) {
+  if (!c->on_stream_stop_sending(stream_id)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -457,9 +450,7 @@ int extend_max_local_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams,
                                   void *user_data) {
   auto c = static_cast(user_data);
 
-  if (c->on_extend_max_streams() != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->on_extend_max_streams();
 
   return 0;
 }
@@ -467,8 +458,7 @@ int extend_max_local_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams,
 
 namespace {
 void rand_bytes(uint8_t *dest, size_t destlen) {
-  auto rv = util::generate_secure_random({dest, destlen});
-  if (rv != 0) {
+  if (!util::generate_secure_random({dest, destlen})) {
     assert(0);
     abort();
   }
@@ -482,16 +472,17 @@ void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
 } // namespace
 
 namespace {
-int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token,
-                          size_t cidlen, void *user_data) {
-  if (util::generate_secure_random({cid->data, cidlen}) != 0) {
+int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid,
+                          ngtcp2_stateless_reset_token *token, size_t cidlen,
+                          void *user_data) {
+  if (!util::generate_secure_random({cid->data, cidlen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
   cid->datalen = cidlen;
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token, config.static_secret.data(), config.static_secret.size(), cid) !=
-      0) {
+        token->data, config.static_secret.data(), config.static_secret.size(),
+        cid) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -524,9 +515,10 @@ int update_key(ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
                void *user_data) {
   auto c = static_cast(user_data);
 
-  if (c->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
-                    tx_iv, current_rx_secret, current_tx_secret,
-                    secretlen) != 0) {
+  if (auto rv =
+        c->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
+                      tx_iv, current_rx_secret, current_tx_secret, secretlen);
+      !rv) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -567,7 +559,7 @@ int select_preferred_address(ngtcp2_conn *conn, ngtcp2_path *dest,
     return 0;
   }
 
-  if (c->select_preferred_address(remote_addr, paddr) != 0) {
+  if (auto rv = c->select_preferred_address(remote_addr, paddr); !rv) {
     return 0;
   }
 
@@ -591,20 +583,21 @@ int extend_max_stream_data(ngtcp2_conn *conn, int64_t stream_id,
                            uint64_t max_data, void *user_data,
                            void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->extend_max_stream_data(stream_id, max_data) != 0) {
+  if (!c->extend_max_stream_data(stream_id, max_data)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Client::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
+std::expected Client::extend_max_stream_data(int64_t stream_id,
+                                                          uint64_t max_data) {
   if (auto rv = nghttp3_conn_unblock_stream(httpconn_, stream_id); rv != 0) {
-    std::cerr << "nghttp3_conn_unblock_stream: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_unblock_stream: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -628,7 +621,7 @@ int recv_rx_key(ngtcp2_conn *conn, ngtcp2_encryption_level level,
   }
 
   auto c = static_cast(user_data);
-  if (c->setup_httpconn() != 0) {
+  if (!c->setup_httpconn()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -654,9 +647,10 @@ void Client::early_data_rejected() {
   streams_.clear();
 }
 
-int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
-                 const char *addr, const char *port,
-                 TLSClientContext &tls_ctx) {
+std::expected Client::init(int fd, const Address &local_addr,
+                                        const Address &remote_addr,
+                                        const char *addr, const char *port,
+                                        TLSClientContext &tls_ctx) {
   endpoints_.reserve(4);
 
   endpoints_.emplace_back();
@@ -685,7 +679,6 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     .recv_retry = ngtcp2_crypto_recv_retry_cb,
     .extend_max_local_streams_bidi = extend_max_local_streams_bidi,
     .rand = rand,
-    .get_new_connection_id = get_new_connection_id,
     .update_key = ::update_key,
     .path_validation = path_validation,
     .select_preferred_addr = ::select_preferred_address,
@@ -695,11 +688,12 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     .recv_new_token = ::recv_new_token,
     .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb,
     .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
-    .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb,
     .stream_stop_sending = stream_stop_sending,
     .version_negotiation = ngtcp2_crypto_version_negotiation_cb,
     .recv_rx_key = ::recv_rx_key,
     .tls_early_data_rejected = ::early_data_rejected,
+    .get_new_connection_id2 = get_new_connection_id,
+    .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb,
   };
 
   ngtcp2_cid scid, dcid;
@@ -707,16 +701,18 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     scid = config.scid;
   } else {
     scid.datalen = 17;
-    if (util::generate_secure_random({scid.data, scid.datalen}) != 0) {
-      std::cerr << "Could not generate source connection ID" << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random({scid.data, scid.datalen});
+        !rv) {
+      std::println(stderr, "Could not generate source connection ID");
+      return rv;
     }
   }
   if (config.dcid.datalen == 0) {
     dcid.datalen = 18;
-    if (util::generate_secure_random({dcid.data, dcid.datalen}) != 0) {
-      std::cerr << "Could not generate destination connection ID" << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random({dcid.data, dcid.datalen});
+        !rv) {
+      std::println(stderr, "Could not generate destination connection ID");
+      return rv;
     }
   } else {
     dcid = config.dcid;
@@ -737,9 +733,9 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     }
     qlog_ = fopen(path.c_str(), "w");
     if (qlog_ == nullptr) {
-      std::cerr << "Could not open qlog file " << std::quoted(path) << ": "
-                << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "Could not open qlog file {}: {}", path,
+                   strerror(errno));
+      return std::unexpected{Error::IO};
     }
     settings.qlog_write = qlog_write_cb;
   }
@@ -766,7 +762,7 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
   std::vector token;
 
   if (!config.token_file.empty()) {
-    std::cerr << "Reading token file " << config.token_file << std::endl;
+    std::println(stderr, "Reading token file {}", config.token_file);
 
     auto t = util::read_token(config.token_file);
     if (t) {
@@ -821,13 +817,14 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
                            &callbacks, &settings, ¶ms, nullptr, this);
 
   if (rv != 0) {
-    std::cerr << "ngtcp2_conn_client_new: " << ngtcp2_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_client_new: {}", ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  if (tls_session_.init(early_data_, tls_ctx, addr_, this,
-                        client_chosen_version_, AppProtocol::H3) != 0) {
-    return -1;
+  if (auto rv = tls_session_.init(early_data_, tls_ctx, addr_, this,
+                                  client_chosen_version_, AppProtocol::H3);
+      !rv) {
+    return rv;
   }
 
   ngtcp2_conn_set_tls_native_handle(conn_, tls_session_.get_native_handle());
@@ -840,11 +837,12 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
       auto rv = ngtcp2_conn_decode_and_set_0rtt_transport_params(
         conn_, params->data(), params->size());
       if (rv != 0) {
-        std::cerr << "ngtcp2_conn_decode_and_set_0rtt_transport_params: "
-                  << ngtcp2_strerror(rv) << std::endl;
+        std::println(stderr,
+                     "ngtcp2_conn_decode_and_set_0rtt_transport_params: {}",
+                     ngtcp2_strerror(rv));
         early_data_ = false;
-      } else if (make_stream_early() != 0) {
-        return -1;
+      } else if (auto rv = make_stream_early(); !rv) {
+        return rv;
       }
     }
   }
@@ -853,12 +851,12 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
 
   ev_signal_start(loop_, &sigintev_);
 
-  return 0;
+  return {};
 }
 
-int Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
-                      const ngtcp2_pkt_info *pi,
-                      std::span data) {
+std::expected
+Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
+                  const ngtcp2_pkt_info *pi, std::span data) {
   auto path = ngtcp2_path{
     .local = as_ngtcp2_addr(ep.addr),
     .remote{
@@ -870,29 +868,28 @@ int Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
   if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data.data(), data.size(),
                                      util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr, "ngtcp2_conn_read_pkt: {}", ngtcp2_strerror(rv));
     if (!last_error_.error_code) {
       if (rv == NGTCP2_ERR_CRYPTO) {
         auto alert = ngtcp2_conn_get_tls_alert(conn_);
         ngtcp2_ccerr_set_tls_alert(&last_error_, alert, nullptr, 0);
 
         if (alert == TLS_ALERT_ECH_REQUIRED && config.ech_config_list_file &&
-            tls_session_.write_ech_config_list(config.ech_config_list_file) !=
-              0) {
-          std::cerr << "Could not write ECH retry configs in "
-                    << config.ech_config_list_file << std::endl;
+            !tls_session_.write_ech_config_list(config.ech_config_list_file)) {
+          std::println(stderr, "Could not write ECH retry configs in {}",
+                       config.ech_config_list_file);
         }
       } else {
         ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
       }
     }
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
-int Client::on_read(const Endpoint &ep) {
+std::expected Client::on_read(const Endpoint &ep) {
   std::array buf;
   sockaddr_storage ss;
   size_t pktcnt = 0;
@@ -927,7 +924,7 @@ int Client::on_read(const Endpoint &ep) {
 
     if (nread == -1) {
       if (errno != EAGAIN && errno != EWOULDBLOCK) {
-        std::cerr << "recvmsg: " << strerror(errno) << std::endl;
+        std::println(stderr, "recvmsg: {}", strerror(errno));
       }
       break;
     }
@@ -953,12 +950,12 @@ int Client::on_read(const Endpoint &ep) {
       ++pktcnt;
 
       if (!config.quiet) {
-        std::cerr << "Received packet: local=" << util::straddr(ep.addr)
-                  << " remote="
-                  << util::straddr(reinterpret_cast(&ss),
-                                   msg.msg_namelen)
-                  << " ecn=0x" << std::hex << static_cast(pi.ecn)
-                  << std::dec << " " << datalen << " bytes" << std::endl;
+        std::println(stderr,
+                     "Received packet: local={} remote={} ecn={:#x} {} bytes",
+                     util::straddr(ep.addr),
+                     util::straddr(reinterpret_cast(&ss),
+                                   msg.msg_namelen),
+                     pi.ecn, datalen);
       }
 
       // Packets less than 21 bytes never be a valid QUIC packet.
@@ -968,11 +965,13 @@ int Client::on_read(const Endpoint &ep) {
 
       if (debug::packet_lost(config.rx_loss_prob)) {
         if (!config.quiet) {
-          std::cerr << "** Simulated incoming packet loss **" << std::endl;
+          std::println(stderr, "** Simulated incoming packet loss **");
         }
-      } else if (feed_data(ep, reinterpret_cast(&ss),
-                           msg.msg_namelen, &pi, {data.data(), datalen}) != 0) {
-        return -1;
+      } else if (auto rv =
+                   feed_data(ep, reinterpret_cast(&ss),
+                             msg.msg_namelen, &pi, {data.data(), datalen});
+                 !rv) {
+        return rv;
       }
 
       data = data.subspan(datalen);
@@ -987,41 +986,38 @@ int Client::on_read(const Endpoint &ep) {
     ngtcp2_ccerr_set_application_error(
       &last_error_, nghttp3_err_infer_quic_app_error_code(0), nullptr, 0);
     disconnect();
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
-int Client::handle_expiry() {
+std::expected Client::handle_expiry() {
   auto now = util::timestamp();
   if (auto rv = ngtcp2_conn_handle_expiry(conn_, now); rv != 0) {
-    std::cerr << "ngtcp2_conn_handle_expiry: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_handle_expiry: {}", ngtcp2_strerror(rv));
     ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
-int Client::on_write() {
+std::expected Client::on_write() {
   if (tx_.send_blocked) {
-    if (auto rv = send_blocked_packet(); rv != 0) {
-      return rv;
-    }
+    send_blocked_packet();
 
     if (tx_.send_blocked) {
-      return 0;
+      return {};
     }
   }
 
   ev_io_stop(loop_, &wev_);
 
-  if (auto rv = write_streams(); rv != 0) {
+  if (auto rv = write_streams(); !rv) {
     return rv;
   }
 
@@ -1029,11 +1025,11 @@ int Client::on_write() {
     ngtcp2_ccerr_set_application_error(
       &last_error_, nghttp3_err_infer_quic_app_error_code(0), nullptr, 0);
     disconnect();
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   update_timer();
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1060,8 +1056,8 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
       sveccnt = nghttp3_conn_writev_stream(httpconn_, &stream_id, &fin,
                                            vec.data(), vec.size());
       if (sveccnt < 0) {
-        std::cerr << "nghttp3_conn_writev_stream: "
-                  << nghttp3_strerror(static_cast(sveccnt)) << std::endl;
+        std::println(stderr, "nghttp3_conn_writev_stream: {}",
+                     nghttp3_strerror(static_cast(sveccnt)));
         ngtcp2_ccerr_set_application_error(
           &last_error_,
           nghttp3_err_infer_quic_app_error_code(static_cast(sveccnt)),
@@ -1097,8 +1093,8 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
         if (auto rv = nghttp3_conn_add_write_offset(httpconn_, stream_id,
                                                     as_unsigned(ndatalen));
             rv != 0) {
-          std::cerr << "nghttp3_conn_add_write_offset: " << nghttp3_strerror(rv)
-                    << std::endl;
+          std::println(stderr, "nghttp3_conn_add_write_offset: {}",
+                       nghttp3_strerror(rv));
           ngtcp2_ccerr_set_application_error(
             &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr,
             0);
@@ -1109,8 +1105,8 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
 
       assert(ndatalen == -1);
 
-      std::cerr << "ngtcp2_conn_write_stream: "
-                << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+      std::println(stderr, "ngtcp2_conn_writev_stream: {}",
+                   ngtcp2_strerror(static_cast(nwrite)));
       ngtcp2_ccerr_set_liberr(&last_error_, static_cast(nwrite), nullptr,
                               0);
 
@@ -1121,8 +1117,8 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
       if (auto rv = nghttp3_conn_add_write_offset(httpconn_, stream_id,
                                                   as_unsigned(ndatalen));
           rv != 0) {
-        std::cerr << "nghttp3_conn_add_write_offset: " << nghttp3_strerror(rv)
-                  << std::endl;
+        std::println(stderr, "nghttp3_conn_add_write_offset: {}",
+                     nghttp3_strerror(rv));
         ngtcp2_ccerr_set_application_error(
           &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr, 0);
 
@@ -1134,7 +1130,7 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
   }
 }
 
-int Client::write_streams() {
+std::expected Client::write_streams() {
   ngtcp2_path_storage ps;
   ngtcp2_pkt_info pi;
   size_t gso_size;
@@ -1149,36 +1145,34 @@ int Client::write_streams() {
     config.gso_burst, ts);
   if (nwrite < 0) {
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   ngtcp2_conn_update_pkt_tx_time(conn_, ts);
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   send_packet_or_blocked(ps.path, pi.ecn,
                          txbuf.first(static_cast(nwrite)), gso_size);
 
-  return 0;
+  return {};
 }
 
-int Client::send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
-                                   std::span data,
-                                   size_t gso_size) {
+std::expected
+Client::send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
+                               std::span data, size_t gso_size) {
   auto &ep = *static_cast(path.user_data);
 
-  auto [rest, rv] = send_packet(ep, path.remote, ecn, data, gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = send_packet(ep, path.remote, ecn, data, gso_size);
+  if (!rest.empty()) {
     on_send_blocked(path, ecn, rest, gso_size);
 
-    return rv;
+    return std::unexpected{Error::SEND_BLOCKED};
   }
 
-  return 0;
+  return {};
 }
 
 void Client::update_timer() {
@@ -1188,8 +1182,7 @@ void Client::update_timer() {
   if (expiry <= now) {
     if (!config.quiet) {
       auto t = static_cast(now - expiry) / NGTCP2_SECONDS;
-      std::cerr << "Timer has already expired: " << std::fixed << t << "s"
-                << std::defaultfloat << std::endl;
+      std::println(stderr, "Timer has already expired: {:.9f}s", t);
     }
 
     ev_feed_event(loop_, &timer_, EV_TIMER);
@@ -1199,8 +1192,7 @@ void Client::update_timer() {
 
   auto t = static_cast(expiry - now) / NGTCP2_SECONDS;
   if (!config.quiet) {
-    std::cerr << "Set timer=" << std::fixed << t << "s" << std::defaultfloat
-              << std::endl;
+    std::println(stderr, "Set timer={:.9f}s", t);
   }
   timer_.repeat = t;
   ev_timer_again(loop_, &timer_);
@@ -1208,7 +1200,8 @@ void Client::update_timer() {
 
 #ifdef HAVE_LINUX_RTNETLINK_H
 namespace {
-int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
+std::expected bind_addr(Address &local_addr, int fd,
+                                     const InAddr &ia, int family) {
   addrinfo hints{
     .ai_flags = AI_PASSIVE,
     .ai_family = family,
@@ -1223,16 +1216,16 @@ int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
   } else {
     if (inet_ntop(family, in_addr_get_ptr(ia), nodebuf.data(),
                   nodebuf.size()) == nullptr) {
-      std::cerr << "inet_ntop: " << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "inet_ntop: {}", strerror(errno));
+      return std::unexpected{Error::LIBC};
     }
 
     node = nodebuf.data();
   }
 
   if (auto rv = getaddrinfo(node, "0", &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -1244,53 +1237,56 @@ int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
   }
 
   if (!rp) {
-    std::cerr << "Could not bind" << std::endl;
-    return -1;
+    std::println(stderr, "Could not bind");
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "getsockname: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
 
-  return 0;
+  return {};
 }
 } // namespace
 #endif // defined(HAVE_LINUX_RTNETLINK_H)
 
 #ifndef HAVE_LINUX_RTNETLINK_H
 namespace {
-int connect_sock(Address &local_addr, int fd, const Address &remote_addr) {
+std::expected connect_sock(Address &local_addr, int fd,
+                                        const Address &remote_addr) {
   if (connect(fd, remote_addr.as_sockaddr(), remote_addr.size()) != 0) {
-    std::cerr << "connect: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "connect: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "getsockname: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
 
-  return 0;
+  return {};
 }
 } // namespace
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
 namespace {
-int udp_sock(int family) {
-  auto fd = util::create_nonblock_socket(family, SOCK_DGRAM, IPPROTO_UDP);
-  if (fd == -1) {
-    return -1;
+std::expected udp_sock(int family) {
+  auto maybe_fd = util::create_nonblock_socket(family, SOCK_DGRAM, IPPROTO_UDP);
+  if (!maybe_fd) {
+    return maybe_fd;
   }
 
+  auto fd = *maybe_fd;
+
   fd_set_recv_ecn(fd, family);
   fd_set_ip_mtu_discover(fd, family);
   fd_set_ip_dontfrag(fd, family);
@@ -1301,7 +1297,8 @@ int udp_sock(int family) {
 } // namespace
 
 namespace {
-int create_sock(Address &remote_addr, const char *addr, const char *port) {
+std::expected create_sock(Address &remote_addr, const char *addr,
+                                      const char *port) {
   addrinfo hints{
     .ai_family = AF_UNSPEC,
     .ai_socktype = SOCK_DGRAM,
@@ -1309,8 +1306,8 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
   addrinfo *res, *rp;
 
   if (auto rv = getaddrinfo(addr, port, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -1318,17 +1315,19 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
   int fd = -1;
 
   for (rp = res; rp; rp = rp->ai_next) {
-    fd = udp_sock(rp->ai_family);
-    if (fd == -1) {
+    auto maybe_fd = udp_sock(rp->ai_family);
+    if (!maybe_fd) {
       continue;
     }
 
+    fd = *maybe_fd;
+
     break;
   }
 
   if (!rp) {
-    std::cerr << "Could not create socket" << std::endl;
-    return -1;
+    std::println(stderr, "Could not create socket");
+    return std::unexpected{Error::SYSCALL};
   }
 
   remote_addr.set(rp->ai_addr);
@@ -1337,16 +1336,18 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
 }
 } // namespace
 
-std::optional Client::endpoint_for(const Address &remote_addr) {
+std::expected
+Client::endpoint_for(const Address &remote_addr) {
 #ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
-
-  if (get_local_addr(ia, remote_addr) != 0) {
-    std::cerr << "Could not get local address for a selected preferred address"
-              << std::endl;
-    return nullptr;
+  auto maybe_ia = get_local_addr(remote_addr);
+  if (!maybe_ia) {
+    std::println(
+      stderr, "Could not get local address for a selected preferred address");
+    return std::unexpected{maybe_ia.error()};
   }
 
+  const auto &ia = *maybe_ia;
+
   auto current_path = ngtcp2_conn_get_path(conn_);
   auto current_ep = static_cast(current_path->user_data);
   if (addreq(current_ep->addr, ia)) {
@@ -1356,22 +1357,24 @@ std::optional Client::endpoint_for(const Address &remote_addr) {
 
   auto family = remote_addr.family();
 
-  auto fd = udp_sock(family);
-  if (fd == -1) {
-    return nullptr;
+  auto maybe_fd = udp_sock(family);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
+  auto fd = *maybe_fd;
+
   Address local_addr;
 
 #ifdef HAVE_LINUX_RTNETLINK_H
-  if (bind_addr(local_addr, fd, ia, family) != 0) {
+  if (auto rv = bind_addr(local_addr, fd, ia, family); !rv) {
     close(fd);
-    return nullptr;
+    return std::unexpected{rv.error()};
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, fd, remote_addr) != 0) {
+  if (auto rv = connect_sock(local_addr, fd, remote_addr); !rv) {
     close(fd);
-    return nullptr;
+    return std::unexpected{rv.error()};
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
@@ -1392,43 +1395,43 @@ void Client::start_change_local_addr_timer() {
   ev_timer_start(loop_, &change_local_addr_timer_);
 }
 
-int Client::change_local_addr() {
+std::expected Client::change_local_addr() {
   Address local_addr;
 
   if (!config.quiet) {
-    std::cerr << "Changing local address" << std::endl;
+    std::println(stderr, "Changing local address");
   }
 
   auto family = remote_addr_.family();
 
-  auto nfd = udp_sock(family);
-  if (nfd == -1) {
-    return -1;
+  auto maybe_nfd = udp_sock(family);
+  if (!maybe_nfd) {
+    return std::unexpected{maybe_nfd.error()};
   }
 
-#ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
+  auto nfd = *maybe_nfd;
 
-  if (get_local_addr(ia, remote_addr_) != 0) {
-    std::cerr << "Could not get local address" << std::endl;
+#ifdef HAVE_LINUX_RTNETLINK_H
+  auto maybe_ia = get_local_addr(remote_addr_);
+  if (!maybe_ia) {
+    std::println(stderr, "Could not get local address");
     close(nfd);
-    return -1;
+    return std::unexpected{maybe_ia.error()};
   }
 
-  if (bind_addr(local_addr, nfd, ia, family) != 0) {
+  if (auto rv = bind_addr(local_addr, nfd, *maybe_ia, family); !rv) {
     close(nfd);
-    return -1;
+    return rv;
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, nfd, remote_addr_) != 0) {
+  if (auto rv = connect_sock(local_addr, nfd, remote_addr_); !rv) {
     close(nfd);
-    return -1;
+    return rv;
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
   if (!config.quiet) {
-    std::cerr << "Local address is now " << util::straddr(local_addr)
-              << std::endl;
+    std::println(stderr, "Local address is now {}", util::straddr(local_addr));
   }
 
   endpoints_.emplace_back();
@@ -1453,27 +1456,28 @@ int Client::change_local_addr() {
     if (auto rv = ngtcp2_conn_initiate_immediate_migration(conn_, &path,
                                                            util::timestamp());
         rv != 0) {
-      std::cerr << "ngtcp2_conn_initiate_immediate_migration: "
-                << ngtcp2_strerror(rv) << std::endl;
+      std::println(stderr, "ngtcp2_conn_initiate_immediate_migration: {}",
+                   ngtcp2_strerror(rv));
     }
   }
 
   ev_io_start(loop_, &ep.rev);
 
-  return 0;
+  return {};
 }
 
 void Client::start_key_update_timer() {
   ev_timer_start(loop_, &key_update_timer_);
 }
 
-int Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                       ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                       ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                       const uint8_t *current_rx_secret,
-                       const uint8_t *current_tx_secret, size_t secretlen) {
+std::expected
+Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+                   ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+                   ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+                   const uint8_t *current_rx_secret,
+                   const uint8_t *current_tx_secret, size_t secretlen) {
   if (!config.quiet) {
-    std::cerr << "Updating traffic key" << std::endl;
+    std::println(stderr, "Updating traffic key");
   }
 
   auto crypto_ctx = ngtcp2_conn_get_crypto_ctx(conn_);
@@ -1489,73 +1493,81 @@ int Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
                                rx_key.data(), rx_iv, tx_aead_ctx, tx_key.data(),
                                tx_iv, current_rx_secret, current_tx_secret,
                                secretlen) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet && config.show_secret) {
-    std::cerr << "application_traffic rx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic rx secret {}", nkey_update_);
     debug::print_secrets({rx_secret, secretlen}, {rx_key.data(), keylen},
                          {rx_iv, ivlen});
-    std::cerr << "application_traffic tx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic tx secret {}", nkey_update_);
     debug::print_secrets({tx_secret, secretlen}, {tx_key.data(), keylen},
                          {tx_iv, ivlen});
   }
 
-  return 0;
+  return {};
 }
 
-int Client::initiate_key_update() {
+std::expected Client::initiate_key_update() {
   if (!config.quiet) {
-    std::cerr << "Initiate key update" << std::endl;
+    std::println(stderr, "Initiate key update");
   }
 
   if (auto rv = ngtcp2_conn_initiate_key_update(conn_, util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_initiate_key_update: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_initiate_key_update: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
 void Client::start_delay_stream_timer() {
   ev_timer_start(loop_, &delay_stream_timer_);
 }
 
-int Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                        unsigned int ecn, std::span data) {
-  auto [_, rv] = send_packet(ep, remote_addr, ecn, data, data.size());
+std::expected Client::send_packet(const Endpoint &ep,
+                                               const ngtcp2_addr &remote_addr,
+                                               unsigned int ecn,
+                                               std::span data) {
+  auto rest = send_packet(ep, remote_addr, ecn, data, data.size());
+  if (!rest.empty()) {
+    return std::unexpected{Error::SEND_BLOCKED};
+  }
 
-  return rv;
+  return {};
 }
 
-std::pair, int>
-Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                    unsigned int ecn, std::span data,
-                    size_t gso_size) {
+std::span Client::send_packet(const Endpoint &ep,
+                                             const ngtcp2_addr &remote_addr,
+                                             unsigned int ecn,
+                                             std::span data,
+                                             size_t gso_size) {
   assert(gso_size);
 
   if (debug::packet_lost(config.tx_loss_prob)) {
     if (!config.quiet) {
-      std::cerr << "** Simulated outgoing packet loss **" << std::endl;
+      std::println(stderr, "** Simulated outgoing packet loss **");
     }
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (no_gso_ && data.size() > gso_size) {
     for (; !data.empty();) {
       auto len = std::min(gso_size, data.size());
 
-      auto [_, rv] = send_packet(ep, remote_addr, ecn, data.first(len), len);
-      if (rv != 0) {
-        return {data, rv};
+      auto rest = send_packet(ep, remote_addr, ecn, data.first(len), len);
+      if (!rest.empty()) {
+        assert(rest.size() == len);
+
+        return data;
       }
 
       data = data.subspan(len);
     }
 
-    return {{}, 0};
+    return {};
   }
 
   iovec msg_iov{
@@ -1630,13 +1642,13 @@ Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
 #if EAGAIN != EWOULDBLOCK
     case EWOULDBLOCK:
 #endif // EAGAIN != EWOULDBLOCK
-      return {data, NETWORK_ERR_SEND_BLOCKED};
+      return data;
 #ifdef UDP_SEGMENT
     case EIO:
       if (data.size() > gso_size) {
         // GSO failure; send each packet in a separate sendmsg call.
-        std::cerr << "sendmsg: disabling GSO due to " << strerror(errno)
-                  << std::endl;
+        std::println(stderr, "sendmsg: disabling GSO due to {}",
+                     strerror(errno));
 
         no_gso_ = true;
 
@@ -1646,23 +1658,23 @@ Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
 #endif // defined(UDP_SEGMENT)
     }
 
-    std::cerr << "sendmsg: " << strerror(errno) << std::endl;
+    std::println(stderr, "sendmsg: {}", strerror(errno));
 
     // TODO We have packet which is expected to fail to send (e.g.,
     // path validation to old path).
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   assert(static_cast(nwrite) == data.size());
 
   if (!config.quiet) {
-    std::cerr << "Sent packet: local=" << util::straddr(ep.addr) << " remote="
-              << util::straddr(remote_addr.addr, remote_addr.addrlen)
-              << " ecn=0x" << std::hex << ecn << std::dec << " " << nwrite
-              << " bytes" << std::endl;
+    std::println(stderr, "Sent packet: local={} remote={} ecn={:#x} {} bytes",
+                 util::straddr(ep.addr),
+                 util::straddr(remote_addr.addr, remote_addr.addrlen), ecn,
+                 nwrite);
   }
 
-  return {{}, NETWORK_ERR_OK};
+  return {};
 }
 
 void Client::on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
@@ -1700,32 +1712,28 @@ void Client::start_wev_endpoint(const Endpoint &ep) {
   ev_io_start(loop_, &wev_);
 }
 
-int Client::send_blocked_packet() {
+void Client::send_blocked_packet() {
   assert(tx_.send_blocked);
 
   auto &p = tx_.blocked;
 
-  auto [rest, rv] = send_packet(*p.endpoint, as_ngtcp2_addr(p.remote_addr),
-                                p.ecn, p.data, p.gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = send_packet(*p.endpoint, as_ngtcp2_addr(p.remote_addr), p.ecn,
+                          p.data, p.gso_size);
+  if (!rest.empty()) {
     p.data = rest;
 
     start_wev_endpoint(*p.endpoint);
 
-    return 0;
+    return;
   }
 
   tx_.send_blocked = false;
-
-  return 0;
 }
 
-int Client::handle_error() {
+std::expected Client::handle_error() {
   if (!conn_ || ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   std::array buf;
@@ -1740,13 +1748,13 @@ int Client::handle_error() {
     conn_, &ps.path, &pi, buf.data(), buf.size(), &last_error_,
     util::timestamp());
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_conn_write_connection_close: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_write_connection_close: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
+    return std::unexpected{Error::QUIC};
   }
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   return send_packet(*static_cast(ps.path.user_data),
@@ -1754,7 +1762,8 @@ int Client::handle_error() {
                      {buf.data(), static_cast(nwrite)});
 }
 
-int Client::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
+std::expected Client::on_stream_close(int64_t stream_id,
+                                                   uint64_t app_error_code) {
   if (httpconn_) {
     if (app_error_code == 0) {
       app_error_code = NGHTTP3_H3_NO_ERROR;
@@ -1774,58 +1783,60 @@ int Client::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
       }
       break;
     default:
-      std::cerr << "nghttp3_conn_close_stream: " << nghttp3_strerror(rv)
-                << std::endl;
+      std::println(stderr, "nghttp3_conn_close_stream: {}",
+                   nghttp3_strerror(rv));
       ngtcp2_ccerr_set_application_error(
         &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr, 0);
-      return -1;
+      return std::unexpected{Error::HTTP3};
     }
   }
 
-  return 0;
+  return {};
 }
 
-int Client::on_stream_reset(int64_t stream_id) {
+std::expected Client::on_stream_reset(int64_t stream_id) {
   if (httpconn_) {
     if (auto rv = nghttp3_conn_shutdown_stream_read(httpconn_, stream_id);
         rv != 0) {
-      std::cerr << "nghttp3_conn_shutdown_stream_read: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_shutdown_stream_read: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
   }
-  return 0;
+  return {};
 }
 
-int Client::on_stream_stop_sending(int64_t stream_id) {
+std::expected Client::on_stream_stop_sending(int64_t stream_id) {
   if (!httpconn_) {
-    return 0;
+    return {};
   }
 
   if (auto rv = nghttp3_conn_shutdown_stream_read(httpconn_, stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_shutdown_stream_read: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_shutdown_stream_read: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  return 0;
+  return {};
 }
 
-int Client::make_stream_early() {
-  if (setup_httpconn() != 0) {
-    return -1;
+std::expected Client::make_stream_early() {
+  if (auto rv = setup_httpconn(); !rv) {
+    return rv;
   }
 
-  return on_extend_max_streams();
+  on_extend_max_streams();
+
+  return {};
 }
 
-int Client::on_extend_max_streams() {
+void Client::on_extend_max_streams() {
   int64_t stream_id;
 
   if ((config.delay_stream && !handshake_confirmed_) ||
       ev_is_active(&delay_stream_timer_)) {
-    return 0;
+    return;
   }
 
   for (; nstreams_done_ < config.nstreams; ++nstreams_done_) {
@@ -1838,7 +1849,7 @@ int Client::on_extend_max_streams() {
     auto stream = std::make_unique(
       config.requests[nstreams_done_ % config.requests.size()], stream_id);
 
-    if (submit_http_request(stream.get()) != 0) {
+    if (!submit_http_request(stream.get())) {
       break;
     }
 
@@ -1847,7 +1858,6 @@ int Client::on_extend_max_streams() {
     }
     streams_.emplace(stream_id, std::move(stream));
   }
-  return 0;
 }
 
 namespace {
@@ -1862,7 +1872,7 @@ nghttp3_ssize read_data(nghttp3_conn *conn, int64_t stream_id, nghttp3_vec *vec,
 }
 } // namespace
 
-int Client::submit_http_request(const Stream *stream) {
+std::expected Client::submit_http_request(const Stream *stream) {
   std::string content_length_str;
 
   const auto &req = stream->req;
@@ -1892,66 +1902,69 @@ int Client::submit_http_request(const Stream *stream) {
         httpconn_, stream->stream_id, nva.data(), nvlen,
         config.fd == -1 ? nullptr : &dr, nullptr);
       rv != 0) {
-    std::cerr << "nghttp3_conn_submit_request: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_submit_request: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  return 0;
+  return {};
 }
 
-int Client::recv_stream_data(uint32_t flags, int64_t stream_id,
-                             std::span data) {
+std::expected
+Client::recv_stream_data(uint32_t flags, int64_t stream_id,
+                         std::span data) {
   auto nconsumed = nghttp3_conn_read_stream2(
     httpconn_, stream_id, data.data(), data.size(),
     flags & NGTCP2_STREAM_DATA_FLAG_FIN, ngtcp2_conn_get_timestamp(conn_));
   if (nconsumed < 0) {
-    std::cerr << "nghttp3_conn_read_stream2: "
-              << nghttp3_strerror(static_cast(nconsumed)) << std::endl;
+    std::println(stderr, "nghttp3_conn_read_stream2: {}",
+                 nghttp3_strerror(static_cast(nconsumed)));
     ngtcp2_ccerr_set_application_error(
       &last_error_,
       nghttp3_err_infer_quic_app_error_code(static_cast(nconsumed)),
       nullptr, 0);
-    return -1;
+    return std::unexpected{Error::HTTP3};
   }
 
   ngtcp2_conn_extend_max_stream_offset(conn_, stream_id,
                                        static_cast(nconsumed));
   ngtcp2_conn_extend_max_offset(conn_, static_cast(nconsumed));
 
-  return 0;
+  return {};
 }
 
-int Client::acked_stream_data_offset(int64_t stream_id, uint64_t datalen) {
+std::expected Client::acked_stream_data_offset(int64_t stream_id,
+                                                            uint64_t datalen) {
   if (auto rv = nghttp3_conn_add_ack_offset(httpconn_, stream_id, datalen);
       rv != 0) {
-    std::cerr << "nghttp3_conn_add_ack_offset: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_add_ack_offset: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  return 0;
+  return {};
 }
 
-int Client::select_preferred_address(Address &selected_addr,
-                                     const ngtcp2_preferred_addr *paddr) {
+std::expected
+Client::select_preferred_address(Address &selected_addr,
+                                 const ngtcp2_preferred_addr *paddr) {
   auto path = ngtcp2_conn_get_path(conn_);
 
   switch (path->local.addr->sa_family) {
   case AF_INET:
     if (!paddr->ipv4_present) {
-      return -1;
+      return std::unexpected{Error::INTERNAL};
     }
     selected_addr.skaddr.emplace(paddr->ipv4);
     break;
   case AF_INET6:
     if (!paddr->ipv6_present) {
-      return -1;
+      return std::unexpected{Error::INTERNAL};
     }
     selected_addr.skaddr.emplace(paddr->ipv6);
     break;
   default:
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   if (!config.quiet) {
@@ -1960,15 +1973,15 @@ int Client::select_preferred_address(Address &selected_addr,
                               host, sizeof(host), service, sizeof(service),
                               NI_NUMERICHOST | NI_NUMERICSERV);
         rv != 0) {
-      std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+      return std::unexpected{Error::LIBC};
     }
 
-    std::cerr << "selected server preferred_address is [" << host
-              << "]:" << service << std::endl;
+    std::println(stderr, "selected server preferred_address is [{}]:{}", host,
+                 service);
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -2012,9 +2025,20 @@ void Client::http_write_data(int64_t stream_id, std::span data) {
   }
 
   ssize_t nwrite;
-  do {
-    nwrite = write(stream->fd, data.data(), data.size());
-  } while (nwrite == -1 && errno == EINTR);
+
+  for (; !data.empty();) {
+    do {
+      nwrite = write(stream->fd, data.data(), data.size());
+    } while (nwrite == -1 && errno == EINTR);
+
+    if (nwrite < 0) {
+      std::println(stderr, "Could not write data to file: {}", strerror(errno));
+
+      return;
+    }
+
+    data = data.subspan(static_cast(nwrite));
+  }
 }
 
 namespace {
@@ -2084,22 +2108,23 @@ int http_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                       uint64_t app_error_code, void *user_data,
                       void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->stop_sending(stream_id, app_error_code) != 0) {
+  if (!c->stop_sending(stream_id, app_error_code)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Client::stop_sending(int64_t stream_id, uint64_t app_error_code) {
+std::expected Client::stop_sending(int64_t stream_id,
+                                                uint64_t app_error_code) {
   if (auto rv =
         ngtcp2_conn_shutdown_stream_read(conn_, 0, stream_id, app_error_code);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_shutdown_stream_read: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_shutdown_stream_read: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -2107,22 +2132,23 @@ int http_reset_stream(nghttp3_conn *conn, int64_t stream_id,
                       uint64_t app_error_code, void *user_data,
                       void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->reset_stream(stream_id, app_error_code) != 0) {
+  if (!c->reset_stream(stream_id, app_error_code)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Client::reset_stream(int64_t stream_id, uint64_t app_error_code) {
+std::expected Client::reset_stream(int64_t stream_id,
+                                                uint64_t app_error_code) {
   if (auto rv =
         ngtcp2_conn_shutdown_stream_write(conn_, 0, stream_id, app_error_code);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_shutdown_stream_write: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_shutdown_stream_write: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
 void Client::http_stream_close(int64_t stream_id, uint64_t app_error_code) {
@@ -2140,8 +2166,8 @@ void Client::http_stream_close(int64_t stream_id, uint64_t app_error_code) {
   }
 
   if (!config.quiet) {
-    std::cerr << "HTTP stream " << stream_id << " closed with error code "
-              << app_error_code << std::endl;
+    std::println(stderr, "HTTP stream {:#x} closed with error code {:#x}",
+                 stream_id, app_error_code);
   }
 
   streams_.erase(it);
@@ -2180,15 +2206,15 @@ int http_end_origin(nghttp3_conn *conn, void *conn_user_data) {
 }
 } // namespace
 
-int Client::setup_httpconn() {
+std::expected Client::setup_httpconn() {
   if (httpconn_) {
-    return 0;
+    return {};
   }
 
   if (ngtcp2_conn_get_streams_uni_left(conn_) < 3) {
-    std::cerr << "peer does not allow at least 3 unidirectional streams."
-              << std::endl;
-    return -1;
+    std::println(stderr,
+                 "peer does not allow at least 3 unidirectional streams.");
+    return std::unexpected{Error::QUIC};
   }
 
   nghttp3_callbacks callbacks{
@@ -2217,29 +2243,28 @@ int Client::setup_httpconn() {
   if (auto rv =
         nghttp3_conn_client_new(&httpconn_, &callbacks, &settings, mem, this);
       rv != 0) {
-    std::cerr << "nghttp3_conn_client_new: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_client_new: {}", nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   int64_t ctrl_stream_id;
 
   if (auto rv = ngtcp2_conn_open_uni_stream(conn_, &ctrl_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = nghttp3_conn_bind_control_stream(httpconn_, ctrl_stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_bind_control_stream: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_bind_control_stream: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   if (!config.quiet) {
-    fprintf(stderr, "http: control stream=%" PRIx64 "\n", ctrl_stream_id);
+    std::println(stderr, "http: control stream={:#x}", ctrl_stream_id);
   }
 
   int64_t qpack_enc_stream_id, qpack_dec_stream_id;
@@ -2247,34 +2272,33 @@ int Client::setup_httpconn() {
   if (auto rv =
         ngtcp2_conn_open_uni_stream(conn_, &qpack_enc_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv =
         ngtcp2_conn_open_uni_stream(conn_, &qpack_dec_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = nghttp3_conn_bind_qpack_streams(httpconn_, qpack_enc_stream_id,
                                                 qpack_dec_stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_bind_qpack_streams: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_bind_qpack_streams: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   if (!config.quiet) {
-    fprintf(stderr,
-            "http: QPACK streams encoder=%" PRIx64 " decoder=%" PRIx64 "\n",
-            qpack_enc_stream_id, qpack_dec_stream_id);
+    std::println(stderr, "http: QPACK streams encoder={:#x} decoder={:#x}",
+                 qpack_enc_stream_id, qpack_dec_stream_id);
   }
 
-  return 0;
+  return {};
 }
 
 const std::vector &Client::get_offered_versions() const {
@@ -2284,64 +2308,68 @@ const std::vector &Client::get_offered_versions() const {
 bool Client::get_early_data() const { return early_data_; }
 
 namespace {
-int run(Client &c, const char *addr, const char *port,
-        TLSClientContext &tls_ctx) {
+std::expected run(Client &c, const char *addr, const char *port,
+                               TLSClientContext &tls_ctx) {
   Address remote_addr, local_addr;
 
-  auto fd = create_sock(remote_addr, addr, port);
-  if (fd == -1) {
-    return -1;
+  auto maybe_fd = create_sock(remote_addr, addr, port);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
-#ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
+  auto fd = *maybe_fd;
 
-  if (get_local_addr(ia, remote_addr) != 0) {
-    std::cerr << "Could not get local address" << std::endl;
+#ifdef HAVE_LINUX_RTNETLINK_H
+  auto maybe_ia = get_local_addr(remote_addr);
+  if (!maybe_ia) {
+    std::println(stderr, "Could not get local address");
     close(fd);
-    return -1;
+    return std::unexpected{maybe_ia.error()};
   }
 
-  if (bind_addr(local_addr, fd, ia, remote_addr.family()) != 0) {
+  if (auto rv = bind_addr(local_addr, fd, *maybe_ia, remote_addr.family());
+      !rv) {
     close(fd);
-    return -1;
+    return rv;
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, fd, remote_addr) != 0) {
+  if (auto rv = connect_sock(local_addr, fd, remote_addr); !rv) {
     close(fd);
-    return -1;
+    return rv;
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
-  if (c.init(fd, local_addr, remote_addr, addr, port, tls_ctx) != 0) {
-    return -1;
+  if (auto rv = c.init(fd, local_addr, remote_addr, addr, port, tls_ctx); !rv) {
+    return rv;
   }
 
   // TODO Do we need this ?
-  if (auto rv = c.on_write(); rv != 0) {
+  if (auto rv = c.on_write(); !rv) {
     return rv;
   }
 
   ev_run(EV_DEFAULT, 0);
 
-  return 0;
+  return {};
 }
 } // namespace
 
 namespace {
-int parse_uri(Request &req, const std::string_view &uri) {
+std::expected parse_uri(std::string_view uri) {
   urlparse_url u;
 
   if (urlparse_parse_url(uri.data(), uri.size(), /* is_connect = */ 0, &u) !=
       0) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   if (!(u.field_set & (1 << URLPARSE_SCHEMA)) ||
       !(u.field_set & (1 << URLPARSE_HOST))) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
+  Request req;
+
   req.scheme = util::get_string(uri, u, URLPARSE_SCHEMA);
 
   auto host = std::string(util::get_string(uri, u, URLPARSE_HOST));
@@ -2369,22 +2397,22 @@ int parse_uri(Request &req, const std::string_view &uri) {
     req.path += util::get_string(uri, u, URLPARSE_QUERY);
   }
 
-  return 0;
+  return req;
 }
 } // namespace
 
 namespace {
-int parse_requests(char **argv, size_t argvlen) {
+std::expected parse_requests(char **argv, size_t argvlen) {
   for (size_t i = 0; i < argvlen; ++i) {
     auto uri = std::string_view{argv[i]};
-    Request req;
-    if (parse_uri(req, uri) != 0) {
-      std::cerr << "Could not parse URI: " << uri << std::endl;
-      return -1;
+    auto maybe_req = parse_uri(uri);
+    if (!maybe_req) {
+      std::println(stderr, "Could not parse URI: {}", uri);
+      return std::unexpected{maybe_req.error()};
     }
-    config.requests.emplace_back(std::move(req));
+    config.requests.emplace_back(std::move(*maybe_req));
   }
-  return 0;
+  return {};
 }
 } // namespace
 
@@ -2395,15 +2423,14 @@ const char *prog = "client";
 } // namespace
 
 namespace {
-void print_usage() {
-  std::cerr << "Usage: " << prog << " [OPTIONS]   [...]"
-            << std::endl;
+void print_usage(FILE *out) {
+  std::println(out, "Usage: {} [OPTIONS]   [...]", prog);
 }
 } // namespace
 
 namespace {
 void print_help() {
-  print_usage();
+  print_usage(stdout);
 
   Config config;
 
@@ -2738,11 +2765,10 @@ int main(int argc, char **argv) {
     case 'n':
       // --streams
       if (auto n = util::parse_uint(optarg); !n) {
-        std::cerr << "streams: invalid argument" << std::endl;
+        std::println(stderr, "streams: invalid argument");
         exit(EXIT_FAILURE);
       } else if (*n > NGTCP2_MAX_VARINT) {
-        std::cerr << "streams: must not exceed " << NGTCP2_MAX_VARINT
-                  << std::endl;
+        std::println(stderr, "streams: must not exceed {}", NGTCP2_MAX_VARINT);
         exit(EXIT_FAILURE);
       } else {
         config.nstreams = *n;
@@ -2776,22 +2802,21 @@ int main(int argc, char **argv) {
       }
       auto rv = util::parse_version(optarg);
       if (!rv) {
-        std::cerr << "version: invalid version " << std::quoted(optarg)
-                  << std::endl;
+        std::println(stderr, "version: invalid version {}", optarg);
         exit(EXIT_FAILURE);
       }
       config.version = *rv;
       break;
     }
     case '?':
-      print_usage();
+      print_usage(stderr);
       exit(EXIT_FAILURE);
     case 0:
       switch (flag) {
       case 1:
         // --ciphers
         if (util::crypto_default_ciphers()[0] == '\0') {
-          std::cerr << "ciphers: not supported" << std::endl;
+          std::println(stderr, "ciphers: not supported");
           exit(EXIT_FAILURE);
         }
         config.ciphers = optarg;
@@ -2803,7 +2828,7 @@ int main(int argc, char **argv) {
       case 3:
         // --timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "timeout: invalid argument" << std::endl;
+          std::println(stderr, "timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.timeout = *t;
@@ -2822,12 +2847,12 @@ int main(int argc, char **argv) {
         auto hexcid = std::string_view{optarg};
         if (hexcid.size() < NGTCP2_MIN_INITIAL_DCIDLEN * 2 ||
             hexcid.size() > NGTCP2_MAX_CIDLEN * 2) {
-          std::cerr << "dcid: wrong length" << std::endl;
+          std::println(stderr, "dcid: wrong length");
           exit(EXIT_FAILURE);
         }
 
         if (!util::is_hex_string(hexcid)) {
-          std::cerr << "dcid: not hex string" << std::endl;
+          std::println(stderr, "dcid: not hex string");
           exit(EXIT_FAILURE);
         }
 
@@ -2840,7 +2865,7 @@ int main(int argc, char **argv) {
       case 7:
         // --change-local-addr
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "change-local-addr: invalid argument" << std::endl;
+          std::println(stderr, "change-local-addr: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.change_local_addr = *t;
@@ -2849,7 +2874,7 @@ int main(int argc, char **argv) {
       case 8:
         // --key-update
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "key-update: invalid argument" << std::endl;
+          std::println(stderr, "key-update: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.key_update = *t;
@@ -2862,7 +2887,7 @@ int main(int argc, char **argv) {
       case 10:
         // --delay-stream
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "delay-stream: invalid argument" << std::endl;
+          std::println(stderr, "delay-stream: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.delay_stream = *t;
@@ -2899,7 +2924,7 @@ int main(int argc, char **argv) {
       case 18:
         // --max-data
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-data: invalid argument" << std::endl;
+          std::println(stderr, "max-data: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_data = *n;
@@ -2908,8 +2933,7 @@ int main(int argc, char **argv) {
       case 19:
         // --max-stream-data-bidi-local
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-local: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-local: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_local = *n;
@@ -2918,8 +2942,7 @@ int main(int argc, char **argv) {
       case 20:
         // --max-stream-data-bidi-remote
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-remote: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-remote: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_remote = *n;
@@ -2928,7 +2951,7 @@ int main(int argc, char **argv) {
       case 21:
         // --max-stream-data-uni
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-data-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_uni = *n;
@@ -2937,7 +2960,7 @@ int main(int argc, char **argv) {
       case 22:
         // --max-streams-bidi
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-bidi: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-bidi: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_bidi = *n;
@@ -2946,7 +2969,7 @@ int main(int argc, char **argv) {
       case 23:
         // --max-streams-uni
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_uni = *n;
@@ -2978,7 +3001,7 @@ int main(int argc, char **argv) {
           config.cc_algo = NGTCP2_CC_ALGO_BBR;
           break;
         }
-        std::cerr << "cc: specify cubic, reno, or bbr" << std::endl;
+        std::println(stderr, "cc: specify cubic, reno, or bbr");
         exit(EXIT_FAILURE);
       case 28:
         // --exit-on-all-streams-close
@@ -2995,7 +3018,7 @@ int main(int argc, char **argv) {
       case 31:
         // --initial-rtt
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "initial-rtt: invalid argument" << std::endl;
+          std::println(stderr, "initial-rtt: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.initial_rtt = *t;
@@ -3004,7 +3027,7 @@ int main(int argc, char **argv) {
       case 32:
         // --max-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-window: invalid argument" << std::endl;
+          std::println(stderr, "max-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_window = *n;
@@ -3013,7 +3036,7 @@ int main(int argc, char **argv) {
       case 33:
         // --max-stream-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-window: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_window = *n;
@@ -3023,12 +3046,12 @@ int main(int argc, char **argv) {
         // --scid
         auto hexcid = std::string_view{optarg};
         if (hexcid.size() > NGTCP2_MAX_CIDLEN * 2) {
-          std::cerr << "scid: wrong length" << std::endl;
+          std::println(stderr, "scid: wrong length");
           exit(EXIT_FAILURE);
         }
 
         if (!util::is_hex_string(hexcid)) {
-          std::cerr << "scid: not hex string" << std::endl;
+          std::println(stderr, "scid: not hex string");
           exit(EXIT_FAILURE);
         }
 
@@ -3042,14 +3065,14 @@ int main(int argc, char **argv) {
       case 35:
         // --max-udp-payload-size
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-udp-payload-size: invalid argument" << std::endl;
+          std::println(stderr, "max-udp-payload-size: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-          std::cerr << "max-udp-payload-size: must not exceed "
-                    << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not exceed {}",
+                       NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
           exit(EXIT_FAILURE);
         } else if (*n == 0) {
-          std::cerr << "max-udp-payload-size: must not be 0" << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not be 0");
         } else {
           config.max_udp_payload_size = *n;
         }
@@ -3057,7 +3080,7 @@ int main(int argc, char **argv) {
       case 36:
         // --handshake-timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "handshake-timeout: invalid argument" << std::endl;
+          std::println(stderr, "handshake-timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.handshake_timeout = *t;
@@ -3083,8 +3106,7 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "available-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "available-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3099,8 +3121,9 @@ int main(int argc, char **argv) {
         // --preferred-versions
         auto l = util::split_str(optarg);
         if (l.size() > max_preferred_versionslen) {
-          std::cerr << "preferred-versions: too many versions > "
-                    << max_preferred_versionslen << std::endl;
+          std::println(stderr, "preferred-versions: too many versions > {}",
+                       max_preferred_versionslen);
+          exit(EXIT_FAILURE);
         }
         config.preferred_versions.resize(l.size());
         auto it = std::ranges::begin(config.preferred_versions);
@@ -3115,13 +3138,12 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "preferred-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           if (!ngtcp2_is_supported_version(*rv)) {
-            std::cerr << "preferred-versions: unsupported version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: unsupported version {}",
+                         k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3131,10 +3153,10 @@ int main(int argc, char **argv) {
       case 40:
         // --ack-thresh
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "ack-thresh: invalid argument" << std::endl;
+          std::println(stderr, "ack-thresh: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > 100) {
-          std::cerr << "ack-thresh: must not exceed 100" << std::endl;
+          std::println(stderr, "ack-thresh: must not exceed 100");
           exit(EXIT_FAILURE);
         } else {
           config.ack_thresh = *n;
@@ -3147,11 +3169,11 @@ int main(int argc, char **argv) {
       case 42:
         // --initial-pkt-num
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "initial-pkt-num: invalid argument" << std::endl;
+          std::println(stderr, "initial-pkt-num: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > INT32_MAX) {
-          std::cerr << "initial-pkt-num: must not exceed (1 << 31) - 1"
-                    << std::endl;
+          std::println(stderr,
+                       "initial-pkt-num: must not exceed (1 << 31) - 1");
           exit(EXIT_FAILURE);
         } else {
           config.initial_pkt_num = static_cast(*n);
@@ -3162,14 +3184,13 @@ int main(int argc, char **argv) {
         auto l = util::split_str(optarg);
         for (auto &s : l) {
           if (auto n = util::parse_uint_iec(s); !n) {
-            std::cerr << "pmtud-probes: invalid argument" << std::endl;
+            std::println(stderr, "pmtud-probes: invalid argument");
             exit(EXIT_FAILURE);
           } else if (*n <= NGTCP2_MAX_UDP_PAYLOAD_SIZE ||
                      *n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-            std::cerr << "pmtud-probes: must be in range ["
-                      << NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1 << ", "
-                      << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << "], inclusive."
-                      << std::endl;
+            std::println(
+              stderr, "pmtud-probes: must be in range [{}, {}], inclusive.",
+              NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1, NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
             exit(EXIT_FAILURE);
           } else {
             config.pmtud_probes.push_back(static_cast(*n));
@@ -3193,13 +3214,13 @@ int main(int argc, char **argv) {
         // --gso-burst
         auto n = util::parse_uint(optarg);
         if (!n) {
-          std::cerr << "gso-burst: invalid argument" << std::endl;
+          std::println(stderr, "gso-burst: invalid argument");
           exit(EXIT_FAILURE);
         }
 
         if (*n > 64) {
-          std::cerr << "gso-burst: must be in range [0, 64], inclusive."
-                    << std::endl;
+          std::println(stderr,
+                       "gso-burst: must be in range [0, 64], inclusive.");
           exit(EXIT_FAILURE);
         }
 
@@ -3215,39 +3236,38 @@ int main(int argc, char **argv) {
   }
 
   if (argc - optind < 2) {
-    std::cerr << "Too few arguments" << std::endl;
-    print_usage();
+    std::println(stderr, "Too few arguments");
+    print_usage(stderr);
     exit(EXIT_FAILURE);
   }
 
   if (!config.qlog_file.empty() && !config.qlog_dir.empty()) {
-    std::cerr << "qlog-file and qlog-dir are mutually exclusive" << std::endl;
+    std::println(stderr, "qlog-file and qlog-dir are mutually exclusive");
     exit(EXIT_FAILURE);
   }
 
   if (config.exit_on_first_stream_close && config.exit_on_all_streams_close) {
-    std::cerr << "exit-on-first-stream-close and exit-on-all-streams-close are "
-                 "mutually exclusive"
-              << std::endl;
+    std::println(stderr, "exit-on-first-stream-close and "
+                         "exit-on-all-streams-close are mutually exclusive");
     exit(EXIT_FAILURE);
   }
 
   if (config.wait_for_ticket && !config.session_file) {
-    std::cerr << "wait-for-ticket: session-file must be specified" << std::endl;
+    std::println(stderr, "wait-for-ticket: session-file must be specified");
     exit(EXIT_FAILURE);
   }
 
   if (data_path) {
     auto fd = open(data_path, O_RDONLY);
     if (fd == -1) {
-      std::cerr << "data: Could not open file " << data_path << ": "
-                << strerror(errno) << std::endl;
+      std::println(stderr, "data: Could not open file {}: {}", data_path,
+                   strerror(errno));
       exit(EXIT_FAILURE);
     }
     struct stat st;
     if (fstat(fd, &st) != 0) {
-      std::cerr << "data: Could not stat file " << data_path << ": "
-                << strerror(errno) << std::endl;
+      std::println(stderr, "data: Could not stat file {}: {}", data_path,
+                   strerror(errno));
       exit(EXIT_FAILURE);
     }
     config.fd = fd;
@@ -3255,8 +3275,8 @@ int main(int argc, char **argv) {
     if (config.datalen) {
       auto addr = mmap(nullptr, config.datalen, PROT_READ, MAP_SHARED, fd, 0);
       if (addr == MAP_FAILED) {
-        std::cerr << "data: Could not mmap file " << data_path << ": "
-                  << strerror(errno) << std::endl;
+        std::println(stderr, "data: Could not mmap file {}: {}", data_path,
+                     strerror(errno));
         exit(EXIT_FAILURE);
       }
       config.data = static_cast(addr);
@@ -3266,8 +3286,8 @@ int main(int argc, char **argv) {
   if (config.ech_config_list_file) {
     auto ech_config = util::read_file(config.ech_config_list_file);
     if (!ech_config) {
-      std::cerr << "ech-config-list-file: Could not read ECHConfigList"
-                << std::endl;
+      std::println(stderr,
+                   "ech-config-list-file: Could not read ECHConfigList");
     } else {
       config.ech_config_list = std::move(*ech_config);
     }
@@ -3276,7 +3296,7 @@ int main(int argc, char **argv) {
   auto addr = argv[optind++];
   auto port = argv[optind++];
 
-  if (parse_requests(&argv[optind], static_cast(argc - optind)) != 0) {
+  if (!parse_requests(&argv[optind], static_cast(argc - optind))) {
     exit(EXIT_FAILURE);
   }
 
@@ -3284,16 +3304,16 @@ int main(int argc, char **argv) {
     if (!config.preferred_versions.empty() &&
         std::ranges::find(config.preferred_versions, config.version) ==
           std::ranges::end(config.preferred_versions)) {
-      std::cerr << "preferred-version: must include version " << std::hex
-                << "0x" << config.version << std::dec << std::endl;
+      std::println(stderr, "preferred-version: must include version {:#x}",
+                   config.version);
       exit(EXIT_FAILURE);
     }
 
     if (!config.available_versions.empty() &&
         std::ranges::find(config.available_versions, config.version) ==
           std::ranges::end(config.available_versions)) {
-      std::cerr << "available-versions: must include version " << std::hex
-                << "0x" << config.version << std::dec << std::endl;
+      std::println(stderr, "available-versions: must include version {:#x}",
+                   config.version);
       exit(EXIT_FAILURE);
     }
   }
@@ -3303,7 +3323,7 @@ int main(int argc, char **argv) {
   }
 
   TLSClientContext tls_ctx;
-  if (tls_ctx.init(private_key_file, cert_file) != 0) {
+  if (!tls_ctx.init(private_key_file, cert_file)) {
     exit(EXIT_FAILURE);
   }
 
@@ -3317,8 +3337,8 @@ int main(int argc, char **argv) {
     }
   }
 
-  if (util::generate_secret(config.static_secret) != 0) {
-    std::cerr << "Unable to generate static secret" << std::endl;
+  if (!util::generate_secure_random(config.static_secret)) {
+    std::println(stderr, "Unable to generate static secret");
     exit(EXIT_FAILURE);
   }
 
@@ -3327,7 +3347,7 @@ int main(int argc, char **argv) {
   for (;;) {
     Client c(EV_DEFAULT, client_chosen_version, config.version);
 
-    if (run(c, addr, port, tls_ctx) != 0) {
+    if (!run(c, addr, port, tls_ctx)) {
       exit(EXIT_FAILURE);
     }
 
@@ -3345,13 +3365,13 @@ int main(int argc, char **argv) {
       offered_versions.data(), offered_versions.size());
 
     if (client_chosen_version == 0) {
-      std::cerr << "Unable to select a version" << std::endl;
+      std::println(stderr, "Unable to select a version");
       exit(EXIT_FAILURE);
     }
 
     if (!config.quiet) {
-      std::cerr << "Client selected version " << std::hex << "0x"
-                << client_chosen_version << std::dec << std::endl;
+      std::println(stderr, "Client selected version {:#x}",
+                   client_chosen_version);
     }
   }
 
diff --git a/deps/ngtcp2/ngtcp2/examples/client.h b/deps/ngtcp2/ngtcp2/examples/client.h
index e2a779493172bd..81ec0de6fa4173 100644
--- a/deps/ngtcp2/ngtcp2/examples/client.h
+++ b/deps/ngtcp2/ngtcp2/examples/client.h
@@ -55,7 +55,7 @@ struct Stream {
   Stream(const Request &req, int64_t stream_id);
   ~Stream();
 
-  int open_file(const std::string_view &path);
+  std::expected open_file(std::string_view path);
 
   Request req;
   int64_t stream_id;
@@ -77,68 +77,81 @@ class Client : public ClientBase {
          uint32_t original_version);
   ~Client();
 
-  int init(int fd, const Address &local_addr, const Address &remote_addr,
-           const char *addr, const char *port, TLSClientContext &tls_ctx);
+  std::expected init(int fd, const Address &local_addr,
+                                  const Address &remote_addr, const char *addr,
+                                  const char *port, TLSClientContext &tls_ctx);
   void disconnect();
 
-  int on_read(const Endpoint &ep);
-  int on_write();
-  int write_streams();
-  int feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
-                const ngtcp2_pkt_info *pi, std::span data);
-  int handle_expiry();
+  std::expected on_read(const Endpoint &ep);
+  std::expected on_write();
+  std::expected write_streams();
+  std::expected feed_data(const Endpoint &ep, const sockaddr *sa,
+                                       socklen_t salen,
+                                       const ngtcp2_pkt_info *pi,
+                                       std::span data);
+  std::expected handle_expiry();
   void update_timer();
-  int handshake_completed();
-  int handshake_confirmed();
+  std::expected handshake_completed();
+  void handshake_confirmed();
   void recv_version_negotiation(const uint32_t *sv, size_t nsv);
 
-  int send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                  unsigned int ecn, std::span data);
-  std::pair, int>
+  std::expected send_packet(const Endpoint &ep,
+                                         const ngtcp2_addr &remote_addr,
+                                         unsigned int ecn,
+                                         std::span data);
+  std::span
   send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
               unsigned int ecn, std::span data, size_t gso_size);
-  int send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
-                             std::span data, size_t gso_size);
-  int on_stream_close(int64_t stream_id, uint64_t app_error_code);
-  int on_extend_max_streams();
-  int handle_error();
-  int make_stream_early();
-  int change_local_addr();
+  std::expected
+  send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
+                         std::span data, size_t gso_size);
+  std::expected on_stream_close(int64_t stream_id,
+                                             uint64_t app_error_code);
+  void on_extend_max_streams();
+  std::expected handle_error();
+  std::expected make_stream_early();
+  std::expected change_local_addr();
   void start_change_local_addr_timer();
-  int update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                 ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                 ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                 const uint8_t *current_rx_secret,
-                 const uint8_t *current_tx_secret, size_t secretlen);
-  int initiate_key_update();
+  std::expected
+  update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+             ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+             ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+             const uint8_t *current_rx_secret, const uint8_t *current_tx_secret,
+             size_t secretlen);
+  std::expected initiate_key_update();
   void start_key_update_timer();
   void start_delay_stream_timer();
 
-  int select_preferred_address(Address &selected_addr,
-                               const ngtcp2_preferred_addr *paddr);
+  std::expected
+  select_preferred_address(Address &selected_addr,
+                           const ngtcp2_preferred_addr *paddr);
 
-  std::optional endpoint_for(const Address &remote_addr);
+  std::expected endpoint_for(const Address &remote_addr);
 
   void set_remote_addr(const ngtcp2_addr &remote_addr);
 
-  int setup_httpconn();
-  int submit_http_request(const Stream *stream);
-  int recv_stream_data(uint32_t flags, int64_t stream_id,
-                       std::span data);
-  int acked_stream_data_offset(int64_t stream_id, uint64_t datalen);
+  std::expected setup_httpconn();
+  std::expected submit_http_request(const Stream *stream);
+  std::expected recv_stream_data(uint32_t flags, int64_t stream_id,
+                                              std::span data);
+  std::expected acked_stream_data_offset(int64_t stream_id,
+                                                      uint64_t datalen);
   void http_consume(int64_t stream_id, size_t nconsumed);
   void http_write_data(int64_t stream_id, std::span data);
-  int on_stream_reset(int64_t stream_id);
-  int on_stream_stop_sending(int64_t stream_id);
-  int extend_max_stream_data(int64_t stream_id, uint64_t max_data);
-  int stop_sending(int64_t stream_id, uint64_t app_error_code);
-  int reset_stream(int64_t stream_id, uint64_t app_error_code);
+  std::expected on_stream_reset(int64_t stream_id);
+  std::expected on_stream_stop_sending(int64_t stream_id);
+  std::expected extend_max_stream_data(int64_t stream_id,
+                                                    uint64_t max_data);
+  std::expected stop_sending(int64_t stream_id,
+                                          uint64_t app_error_code);
+  std::expected reset_stream(int64_t stream_id,
+                                          uint64_t app_error_code);
   void http_stream_close(int64_t stream_id, uint64_t app_error_code);
 
   void on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
                        std::span data, size_t gso_size);
   void start_wev_endpoint(const Endpoint &ep);
-  int send_blocked_packet();
+  void send_blocked_packet();
   ngtcp2_ssize write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi, uint8_t *dest,
                          size_t destlen, ngtcp2_tstamp ts);
 
diff --git a/deps/ngtcp2/ngtcp2/examples/client_base.cc b/deps/ngtcp2/ngtcp2/examples/client_base.cc
index 57af4244697998..2a92006eb25557 100644
--- a/deps/ngtcp2/ngtcp2/examples/client_base.cc
+++ b/deps/ngtcp2/ngtcp2/examples/client_base.cc
@@ -61,134 +61,6 @@ ClientBase::~ClientBase() {
   }
 }
 
-int ClientBase::write_transport_params(const char *path,
-                                       const ngtcp2_transport_params *params) {
-  auto f = std::ofstream(path);
-  if (!f) {
-    return -1;
-  }
-
-  f << "initial_max_streams_bidi=" << params->initial_max_streams_bidi << '\n'
-    << "initial_max_streams_uni=" << params->initial_max_streams_uni << '\n'
-    << "initial_max_stream_data_bidi_local="
-    << params->initial_max_stream_data_bidi_local << '\n'
-    << "initial_max_stream_data_bidi_remote="
-    << params->initial_max_stream_data_bidi_remote << '\n'
-    << "initial_max_stream_data_uni=" << params->initial_max_stream_data_uni
-    << '\n'
-    << "initial_max_data=" << params->initial_max_data << '\n'
-    << "active_connection_id_limit=" << params->active_connection_id_limit
-    << '\n'
-    << "max_datagram_frame_size=" << params->max_datagram_frame_size << '\n';
-
-  f.close();
-  if (!f) {
-    return -1;
-  }
-
-  return 0;
-}
-
-int ClientBase::read_transport_params(const char *path,
-                                      ngtcp2_transport_params *params) {
-  auto f = std::ifstream(path);
-  if (!f) {
-    return -1;
-  }
-
-  for (std::string line; std::getline(f, line);) {
-    if (util::istarts_with(line, "initial_max_streams_bidi="sv)) {
-      if (auto n = util::parse_uint(line.c_str() +
-                                    "initial_max_streams_bidi="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_streams_bidi = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "initial_max_streams_uni="sv)) {
-      if (auto n = util::parse_uint(line.c_str() +
-                                    "initial_max_streams_uni="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_streams_uni = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "initial_max_stream_data_bidi_local="sv)) {
-      if (auto n = util::parse_uint(
-            line.c_str() + "initial_max_stream_data_bidi_local="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_stream_data_bidi_local = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "initial_max_stream_data_bidi_remote="sv)) {
-      if (auto n = util::parse_uint(
-            line.c_str() + "initial_max_stream_data_bidi_remote="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_stream_data_bidi_remote = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "initial_max_stream_data_uni="sv)) {
-      if (auto n = util::parse_uint(line.c_str() +
-                                    "initial_max_stream_data_uni="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_stream_data_uni = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "initial_max_data="sv)) {
-      if (auto n =
-            util::parse_uint(line.c_str() + "initial_max_data="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->initial_max_data = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "active_connection_id_limit="sv)) {
-      if (auto n = util::parse_uint(line.c_str() +
-                                    "active_connection_id_limit="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->active_connection_id_limit = *n;
-      }
-      continue;
-    }
-
-    if (util::istarts_with(line, "max_datagram_frame_size="sv)) {
-      if (auto n = util::parse_uint(line.c_str() +
-                                    "max_datagram_frame_size="sv.size());
-          !n) {
-        return -1;
-      } else {
-        params->max_datagram_frame_size = *n;
-      }
-      continue;
-    }
-  }
-
-  return 0;
-}
-
 ngtcp2_conn *ClientBase::conn() const { return conn_; }
 
 void qlog_write_cb(void *user_data, uint32_t flags, const void *data,
diff --git a/deps/ngtcp2/ngtcp2/examples/client_base.h b/deps/ngtcp2/ngtcp2/examples/client_base.h
index 6e8a0f600c1c29..329e8ae4735304 100644
--- a/deps/ngtcp2/ngtcp2/examples/client_base.h
+++ b/deps/ngtcp2/ngtcp2/examples/client_base.h
@@ -214,10 +214,6 @@ class ClientBase {
 
   ngtcp2_conn *conn() const;
 
-  int write_transport_params(const char *path,
-                             const ngtcp2_transport_params *params);
-  int read_transport_params(const char *path, ngtcp2_transport_params *params);
-
   void write_qlog(const void *data, size_t datalen);
 
   ngtcp2_crypto_conn_ref *conn_ref();
diff --git a/deps/ngtcp2/ngtcp2/examples/debug.cc b/deps/ngtcp2/ngtcp2/examples/debug.cc
index c5216b958558d4..7e96a3ba9fd8c1 100644
--- a/deps/ngtcp2/ngtcp2/examples/debug.cc
+++ b/deps/ngtcp2/ngtcp2/examples/debug.cc
@@ -48,12 +48,12 @@ auto *outfile = stderr;
 } // namespace
 
 int handshake_completed(ngtcp2_conn *conn, void *user_data) {
-  fprintf(outfile, "QUIC handshake has completed\n");
+  std::println(outfile, "QUIC handshake has completed");
   return 0;
 }
 
 int handshake_confirmed(ngtcp2_conn *conn, void *user_data) {
-  fprintf(outfile, "QUIC handshake has been confirmed\n");
+  std::println(outfile, "QUIC handshake has been confirmed");
   return 0;
 }
 
@@ -79,96 +79,100 @@ void print_crypto_data(ngtcp2_encryption_level encryption_level,
     assert(0);
     abort();
   }
-  fprintf(outfile, "Ordered CRYPTO data in %s crypto level\n",
-          encryption_level_str);
-  util::hexdump(outfile, data.data(), data.size());
+  std::println(outfile, "Ordered CRYPTO data in {} crypto level",
+               encryption_level_str);
+  util::hexdump(outfile, data);
 }
 
 void print_stream_data(int64_t stream_id, std::span data) {
-  fprintf(outfile, "Ordered STREAM data stream_id=0x%" PRIx64 "\n", stream_id);
-  util::hexdump(outfile, data.data(), data.size());
+  std::println(outfile, "Ordered STREAM data stream_id={:#x}", stream_id);
+  util::hexdump(outfile, data);
 }
 
 void print_initial_secret(std::span data) {
-  fprintf(outfile, "initial_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "initial_secret={}", util::format_hex(data));
 }
 
 void print_client_in_secret(std::span data) {
-  fprintf(outfile, "client_in_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "client_in_secret={}", util::format_hex(data));
 }
 
 void print_server_in_secret(std::span data) {
-  fprintf(outfile, "server_in_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "server_in_secret={}", util::format_hex(data));
 }
 
 void print_handshake_secret(std::span data) {
-  fprintf(outfile, "handshake_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "handshake_secret={}", util::format_hex(data));
 }
 
 void print_client_hs_secret(std::span data) {
-  fprintf(outfile, "client_hs_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "client_hs_secret={}", util::format_hex(data));
 }
 
 void print_server_hs_secret(std::span data) {
-  fprintf(outfile, "server_hs_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "server_hs_secret={}", util::format_hex(data));
 }
 
 void print_client_0rtt_secret(std::span data) {
-  fprintf(outfile, "client_0rtt_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "client_0rtt_secret={}", util::format_hex(data));
 }
 
 void print_client_1rtt_secret(std::span data) {
-  fprintf(outfile, "client_1rtt_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "client_1rtt_secret={}", util::format_hex(data));
 }
 
 void print_server_1rtt_secret(std::span data) {
-  fprintf(outfile, "server_1rtt_secret=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "server_1rtt_secret={}", util::format_hex(data));
 }
 
 void print_client_pp_key(std::span data) {
-  fprintf(outfile, "+ client_pp_key=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ client_pp_key={}", util::format_hex(data));
 }
 
 void print_server_pp_key(std::span data) {
-  fprintf(outfile, "+ server_pp_key=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ server_pp_key={}", util::format_hex(data));
 }
 
 void print_client_pp_iv(std::span data) {
-  fprintf(outfile, "+ client_pp_iv=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ client_pp_iv={}", util::format_hex(data));
 }
 
 void print_server_pp_iv(std::span data) {
-  fprintf(outfile, "+ server_pp_iv=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ server_pp_iv={}", util::format_hex(data));
 }
 
 void print_client_pp_hp(std::span data) {
-  fprintf(outfile, "+ client_pp_hp=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ client_pp_hp={}", util::format_hex(data));
 }
 
 void print_server_pp_hp(std::span data) {
-  fprintf(outfile, "+ server_pp_hp=%s\n", util::format_hex(data).c_str());
+  std::println(outfile, "+ server_pp_hp={}", util::format_hex(data));
 }
 
 void print_secrets(std::span secret,
                    std::span key, std::span iv,
                    std::span hp) {
-  std::cerr << "+ secret=" << util::format_hex(secret) << "\n"
-            << "+ key=" << util::format_hex(key) << "\n"
-            << "+ iv=" << util::format_hex(iv) << "\n"
-            << "+ hp=" << util::format_hex(hp) << std::endl;
+  std::println(stderr, R"(+ secret={}
++ key={}
++ iv={}
++ hp={})",
+               util::format_hex(secret), util::format_hex(key),
+               util::format_hex(iv), util::format_hex(hp));
 }
 
 void print_secrets(std::span secret,
                    std::span key, std::span iv) {
-  std::cerr << "+ secret=" << util::format_hex(secret) << "\n"
-            << "+ key=" << util::format_hex(key) << "\n"
-            << "+ iv=" << util::format_hex(iv) << std::endl;
+  std::println(stderr, R"(+ secret={}
++ key={}
++ iv={})",
+               util::format_hex(secret), util::format_hex(key),
+               util::format_hex(iv));
 }
 
 void print_hp_mask(std::span mask,
                    std::span sample) {
-  fprintf(outfile, "mask=%s sample=%s\n", util::format_hex(mask).c_str(),
-          util::format_hex(sample).c_str());
+  std::println(outfile, "mask={} sample={}", util::format_hex(mask),
+               util::format_hex(sample));
 }
 
 void log_printf(void *user_data, const char *fmt, ...) {
@@ -197,29 +201,28 @@ void path_validation(const ngtcp2_path *path,
   auto remote_addr = util::straddr(
     reinterpret_cast(path->remote.addr), path->remote.addrlen);
 
-  std::cerr << "Path validation against path {local:" << local_addr
-            << ", remote:" << remote_addr << "} "
-            << (res == NGTCP2_PATH_VALIDATION_RESULT_SUCCESS ? "succeeded"
-                                                             : "failed")
-            << std::endl;
+  std::println(
+    stderr, "Path validation against path {{local:{}, remote:{}}} {}",
+    local_addr, remote_addr,
+    res == NGTCP2_PATH_VALIDATION_RESULT_SUCCESS ? "succeeded" : "failed");
 }
 
 void print_http_begin_request_headers(int64_t stream_id) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " request headers started\n",
-          stream_id);
+  std::println(outfile, "http: stream {:#x} request headers started",
+               stream_id);
 }
 
 void print_http_begin_response_headers(int64_t stream_id) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " response headers started\n",
-          stream_id);
+  std::println(outfile, "http: stream {:#x} response headers started",
+               stream_id);
 }
 
 namespace {
 void print_header(std::span name, std::span value,
                   uint8_t flags) {
-  fprintf(outfile, "[%.*s: %.*s]%s\n", static_cast(name.size()),
-          name.data(), static_cast(value.size()), value.data(),
-          (flags & NGHTTP3_NV_FLAG_NEVER_INDEX) ? "(sensitive)" : "");
+  std::println(outfile, "[{}: {}]{}", as_string_view(name),
+               as_string_view(value),
+               (flags & NGHTTP3_NV_FLAG_NEVER_INDEX) ? "(sensitive)" : "");
 }
 } // namespace
 
@@ -241,32 +244,31 @@ void print_header(const nghttp3_nv &nv) {
 
 void print_http_header(int64_t stream_id, const nghttp3_rcbuf *name,
                        const nghttp3_rcbuf *value, uint8_t flags) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " ", stream_id);
+  std::print(outfile, "http: stream {:#x} ", stream_id);
   print_header(name, value, flags);
 }
 
 void print_http_end_headers(int64_t stream_id) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " headers ended\n", stream_id);
+  std::println(outfile, "http: stream {:#x} headers ended", stream_id);
 }
 
 void print_http_data(int64_t stream_id, std::span data) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " body %zu bytes\n", stream_id,
-          data.size());
-  util::hexdump(outfile, data.data(), data.size());
+  std::println(outfile, "http: stream {:#x} body {} bytes", stream_id,
+               data.size());
+  util::hexdump(outfile, data);
 }
 
 void print_http_begin_trailers(int64_t stream_id) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " trailers started\n", stream_id);
+  std::println(outfile, "http: stream {:#x} trailers started", stream_id);
 }
 
 void print_http_end_trailers(int64_t stream_id) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " trailers ended\n", stream_id);
+  std::println(outfile, "http: stream {:#x} trailers ended", stream_id);
 }
 
 void print_http_request_headers(int64_t stream_id, const nghttp3_nv *nva,
                                 size_t nvlen) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " submit request headers\n",
-          stream_id);
+  std::println(outfile, "http: stream {:#x} submit request headers", stream_id);
   for (size_t i = 0; i < nvlen; ++i) {
     auto &nv = nva[i];
     print_header(nv);
@@ -275,8 +277,8 @@ void print_http_request_headers(int64_t stream_id, const nghttp3_nv *nva,
 
 void print_http_response_headers(int64_t stream_id, const nghttp3_nv *nva,
                                  size_t nvlen) {
-  fprintf(outfile, "http: stream 0x%" PRIx64 " submit response headers\n",
-          stream_id);
+  std::println(outfile, "http: stream {:#x} submit response headers",
+               stream_id);
   for (size_t i = 0; i < nvlen; ++i) {
     auto &nv = nva[i];
     print_header(nv);
@@ -284,24 +286,24 @@ void print_http_response_headers(int64_t stream_id, const nghttp3_nv *nva,
 }
 
 void print_http_settings(const nghttp3_proto_settings *settings) {
-  fprintf(outfile,
-          "http: remote settings\n"
-          "http: SETTINGS_MAX_FIELD_SECTION_SIZE=%" PRIu64 "\n"
-          "http: SETTINGS_QPACK_MAX_TABLE_CAPACITY=%zu\n"
-          "http: SETTINGS_QPACK_BLOCKED_STREAMS=%zu\n"
-          "http: SETTINGS_ENABLE_CONNECT_PROTOCOL=%d\n"
-          "http: SETTINGS_H3_DATAGRAM=%d\n",
-          settings->max_field_section_size, settings->qpack_max_dtable_capacity,
-          settings->qpack_blocked_streams, settings->enable_connect_protocol,
-          settings->h3_datagram);
+  std::println(outfile, R"(http: remote settings
+http: SETTINGS_MAX_FIELD_SECTION_SIZE={}
+http: SETTINGS_QPACK_MAX_TABLE_CAPACITY={}
+http: SETTINGS_QPACK_BLOCKED_STREAMS={}
+http: SETTINGS_ENABLE_CONNECT_PROTOCOL={}
+http: SETTINGS_H3_DATAGRAM={})",
+               settings->max_field_section_size,
+               settings->qpack_max_dtable_capacity,
+               settings->qpack_blocked_streams,
+               settings->enable_connect_protocol, settings->h3_datagram);
 }
 
 void print_http_origin(const uint8_t *origin, size_t originlen) {
-  fprintf(outfile, "http: origin [%.*s]\n", static_cast(originlen),
-          origin);
+  std::println(outfile, "http: origin [{}]",
+               as_string_view(std::span{origin, originlen}));
 }
 
-void print_http_end_origin() { fprintf(outfile, "http: origin ended\n"); }
+void print_http_end_origin() { std::println(outfile, "http: origin ended"); }
 
 std::string_view secret_title(ngtcp2_encryption_level level) {
   switch (level) {
@@ -322,22 +324,26 @@ void print_conn_info(ngtcp2_conn *conn) {
 
   ngtcp2_conn_get_conn_info(conn, &cinfo);
 
-  std::cout << "# Connection Statistics (see ngtcp2_conn_info for details)\n"
-               "min_rtt="
-            << util::format_durationf(cinfo.min_rtt) << '\n'
-            << "smoothed_rtt=" << util::format_durationf(cinfo.smoothed_rtt)
-            << '\n'
-            << "rttvar=" << util::format_durationf(cinfo.rttvar) << '\n'
-            << "cwnd=" << cinfo.cwnd << '\n'
-            << "ssthresh=" << cinfo.ssthresh << '\n'
-            << "pkt_sent=" << cinfo.pkt_sent << '\n'
-            << "bytes_sent=" << cinfo.bytes_sent << '\n'
-            << "pkt_recv=" << cinfo.pkt_recv << '\n'
-            << "bytes_recv=" << cinfo.bytes_recv << '\n'
-            << "pkt_lost=" << cinfo.pkt_lost << '\n'
-            << "bytes_lost=" << cinfo.bytes_lost << '\n'
-            << "ping_recv=" << cinfo.ping_recv << '\n'
-            << "pkt_discarded=" << cinfo.pkt_discarded << std::endl;
+  std::println(
+    R"(# Connection Statistics (see ngtcp2_conn_info for details)
+min_rtt={}
+smoothed_rtt={}
+rttvar={}
+cwnd={}
+ssthresh={}
+pkt_sent={}
+bytes_sent={}
+pkt_recv={}
+bytes_recv={}
+pkt_lost={}
+bytes_lost={}
+ping_recv={}
+pkt_discarded={})",
+    util::format_durationf(cinfo.min_rtt),
+    util::format_durationf(cinfo.smoothed_rtt),
+    util::format_durationf(cinfo.rttvar), cinfo.cwnd, cinfo.ssthresh,
+    cinfo.pkt_sent, cinfo.bytes_sent, cinfo.pkt_recv, cinfo.bytes_recv,
+    cinfo.pkt_lost, cinfo.bytes_lost, cinfo.ping_recv, cinfo.pkt_discarded);
 }
 
 } // namespace debug
diff --git a/deps/ngtcp2/ngtcp2/examples/gtlssimpleclient.c b/deps/ngtcp2/ngtcp2/examples/gtlssimpleclient.c
index 34a70b77e92920..56d0802b35e658 100644
--- a/deps/ngtcp2/ngtcp2/examples/gtlssimpleclient.c
+++ b/deps/ngtcp2/ngtcp2/examples/gtlssimpleclient.c
@@ -244,8 +244,8 @@ static void rand_cb(uint8_t *dest, size_t destlen,
 }
 
 static int get_new_connection_id_cb(ngtcp2_conn *conn, ngtcp2_cid *cid,
-                                    uint8_t *token, size_t cidlen,
-                                    void *user_data) {
+                                    ngtcp2_stateless_reset_token *token,
+                                    size_t cidlen, void *user_data) {
   (void)conn;
   (void)user_data;
 
@@ -255,8 +255,7 @@ static int get_new_connection_id_cb(ngtcp2_conn *conn, ngtcp2_cid *cid,
 
   cid->datalen = cidlen;
 
-  if (gnutls_rnd(GNUTLS_RND_RANDOM, token, NGTCP2_STATELESS_RESET_TOKENLEN) !=
-      0) {
+  if (gnutls_rnd(GNUTLS_RND_RANDOM, token->data, sizeof(token->data)) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -332,12 +331,12 @@ static int client_quic_init(struct client *c,
     .recv_retry = ngtcp2_crypto_recv_retry_cb,
     .extend_max_local_streams_bidi = extend_max_local_streams_bidi,
     .rand = rand_cb,
-    .get_new_connection_id = get_new_connection_id_cb,
     .update_key = ngtcp2_crypto_update_key_cb,
     .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb,
     .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
-    .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb,
     .version_negotiation = ngtcp2_crypto_version_negotiation_cb,
+    .get_new_connection_id2 = get_new_connection_id_cb,
+    .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb,
   };
   ngtcp2_cid dcid, scid;
   ngtcp2_settings settings;
@@ -632,7 +631,7 @@ static int client_init(struct client *c) {
   struct sockaddr_storage remote_addr, local_addr;
   socklen_t remote_addrlen, local_addrlen = sizeof(local_addr);
 
-  memset(c, 0, sizeof(*c));
+  *c = (struct client){0};
 
   ngtcp2_ccerr_default(&c->last_error);
 
diff --git a/deps/ngtcp2/ngtcp2/examples/h09client.cc b/deps/ngtcp2/ngtcp2/examples/h09client.cc
index ef350eb8db0fef..7d2017d68894ab 100644
--- a/deps/ngtcp2/ngtcp2/examples/h09client.cc
+++ b/deps/ngtcp2/ngtcp2/examples/h09client.cc
@@ -75,7 +75,7 @@ Stream::~Stream() {
   }
 }
 
-int Stream::open_file(const std::string_view &path) {
+std::expected Stream::open_file(std::string_view path) {
   assert(fd == -1);
 
   std::string_view filename;
@@ -86,8 +86,8 @@ int Stream::open_file(const std::string_view &path) {
   } else {
     filename = std::string_view{it, std::ranges::end(path)};
     if (filename == ".."sv || filename == "."sv) {
-      std::cerr << "Invalid file name: " << filename << std::endl;
-      return -1;
+      std::println(stderr, "Invalid file name: {}", filename);
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
   }
 
@@ -98,12 +98,12 @@ int Stream::open_file(const std::string_view &path) {
   fd = open(fname.c_str(), O_WRONLY | O_CREAT | O_TRUNC,
             S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
   if (fd == -1) {
-    std::cerr << "open: Could not open file " << fname << ": "
-              << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "open: Could not open file {}: {}", fname,
+                 strerror(errno));
+    return std::unexpected{Error::IO};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -119,7 +119,7 @@ void readcb(struct ev_loop *loop, ev_io *w, int revents) {
   auto ep = static_cast(w->data);
   auto c = ep->client;
 
-  if (c->on_read(*ep) != 0) {
+  if (!c->on_read(*ep)) {
     return;
   }
 
@@ -129,11 +129,9 @@ void readcb(struct ev_loop *loop, ev_io *w, int revents) {
 
 namespace {
 void timeoutcb(struct ev_loop *loop, ev_timer *w, int revents) {
-  int rv;
   auto c = static_cast(w->data);
 
-  rv = c->handle_expiry();
-  if (rv != 0) {
+  if (auto rv = c->handle_expiry(); !rv) {
     return;
   }
 
@@ -153,7 +151,7 @@ namespace {
 void key_updatecb(struct ev_loop *loop, ev_timer *w, int revents) {
   auto c = static_cast(w->data);
 
-  if (c->initiate_key_update() != 0) {
+  if (!c->initiate_key_update()) {
     c->disconnect();
   }
 }
@@ -253,9 +251,7 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
 
   auto c = static_cast(user_data);
 
-  if (c->recv_stream_data(flags, stream_id, {data, datalen}) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->recv_stream_data(flags, stream_id, {data, datalen});
 
   return 0;
 }
@@ -266,9 +262,9 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id,
                              uint64_t offset, uint64_t datalen, void *user_data,
                              void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->acked_stream_data_offset(stream_id, offset, datalen) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+
+  c->acked_stream_data_offset(stream_id, offset, datalen);
+
   return 0;
 }
 } // namespace
@@ -281,7 +277,7 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_completed(conn, user_data);
   }
 
-  if (c->handshake_completed() != 0) {
+  if (!c->handshake_completed()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -289,10 +285,10 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
 }
 } // namespace
 
-int Client::handshake_completed() {
+std::expected Client::handshake_completed() {
   if (early_data_ && !tls_session_.get_early_data_accepted()) {
     if (!config.quiet) {
-      std::cerr << "Early data was rejected by server" << std::endl;
+      std::println(stderr, "Early data was rejected by server");
     }
 
     // Some TLS backends only report early data rejection after
@@ -300,23 +296,23 @@ int Client::handshake_completed() {
     // report it early (e.g., BoringSSL and PicoTLS), the following
     // functions are noop.
     if (auto rv = ngtcp2_conn_tls_early_data_rejected(conn_); rv != 0) {
-      std::cerr << "ngtcp2_conn_tls_early_data_rejected: "
-                << ngtcp2_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "ngtcp2_conn_tls_early_data_rejected: {}",
+                   ngtcp2_strerror(rv));
+      return std::unexpected{Error::QUIC};
     }
   }
 
   if (!config.quiet) {
-    std::cerr << "Negotiated cipher suite is " << tls_session_.get_cipher_name()
-              << std::endl;
+    std::println(stderr, "Negotiated cipher suite is {}",
+                 tls_session_.get_cipher_name());
     if (auto group = tls_session_.get_negotiated_group(); !group.empty()) {
-      std::cerr << "Negotiated group is " << group << std::endl;
+      std::println(stderr, "Negotiated group is {}", group);
     }
-    std::cerr << "Negotiated ALPN is " << tls_session_.get_selected_alpn()
-              << std::endl;
+    std::println(stderr, "Negotiated ALPN is {}",
+                 tls_session_.get_selected_alpn());
 
     if (!config.ech_config_list.empty() && tls_session_.get_ech_accepted()) {
-      std::cerr << "ECH was accepted" << std::endl;
+      std::println(stderr, "ECH was accepted");
     }
   }
 
@@ -325,17 +321,16 @@ int Client::handshake_completed() {
     auto datalen =
       ngtcp2_conn_encode_0rtt_transport_params(conn_, data.data(), data.size());
     if (datalen < 0) {
-      std::cerr << "Could not encode 0-RTT transport parameters: "
-                << ngtcp2_strerror(static_cast(datalen)) << std::endl;
-    } else if (util::write_transport_params(
-                 config.tp_file, {data.data(), static_cast(datalen)}) !=
-               0) {
-      std::cerr << "Could not write transport parameters in " << config.tp_file
-                << std::endl;
+      std::println(stderr, "Could not encode 0-RTT transport parameters: {}",
+                   ngtcp2_strerror(static_cast(datalen)));
+    } else if (!util::write_transport_params(
+                 config.tp_file, {data.data(), static_cast(datalen)})) {
+      std::println(stderr, "Could not write transport parameters to {}",
+                   config.tp_file);
     }
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -346,9 +341,7 @@ int handshake_confirmed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_confirmed(conn, user_data);
   }
 
-  if (c->handshake_confirmed() != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->handshake_confirmed();
 
   return 0;
 }
@@ -364,7 +357,7 @@ bool Client::should_exit() const {
            nstreams_closed_ == nstreams_done_));
 }
 
-int Client::handshake_confirmed() {
+void Client::handshake_confirmed() {
   handshake_confirmed_ = true;
 
   if (config.change_local_addr) {
@@ -376,8 +369,6 @@ int Client::handshake_confirmed() {
   if (config.delay_stream) {
     start_delay_stream_timer();
   }
-
-  return 0;
 }
 
 namespace {
@@ -403,9 +394,7 @@ int stream_close(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
                  void *stream_user_data) {
   auto c = static_cast(user_data);
 
-  if (c->on_stream_close(stream_id, app_error_code) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->on_stream_close(stream_id, app_error_code);
 
   return 0;
 }
@@ -416,9 +405,7 @@ int extend_max_local_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams,
                                   void *user_data) {
   auto c = static_cast(user_data);
 
-  if (c->on_extend_max_streams() != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+  c->on_extend_max_streams();
 
   return 0;
 }
@@ -426,8 +413,7 @@ int extend_max_local_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams,
 
 namespace {
 void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
-  auto rv = util::generate_secure_random({dest, destlen});
-  if (rv != 0) {
+  if (!util::generate_secure_random({dest, destlen})) {
     assert(0);
     abort();
   }
@@ -435,16 +421,17 @@ void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
 } // namespace
 
 namespace {
-int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token,
-                          size_t cidlen, void *user_data) {
-  if (util::generate_secure_random({cid->data, cidlen}) != 0) {
+int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid,
+                          ngtcp2_stateless_reset_token *token, size_t cidlen,
+                          void *user_data) {
+  if (!util::generate_secure_random({cid->data, cidlen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
   cid->datalen = cidlen;
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token, config.static_secret.data(), config.static_secret.size(), cid) !=
-      0) {
+        token->data, config.static_secret.data(), config.static_secret.size(),
+        cid) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -477,9 +464,10 @@ int update_key(ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
                void *user_data) {
   auto c = static_cast(user_data);
 
-  if (c->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
-                    tx_iv, current_rx_secret, current_tx_secret,
-                    secretlen) != 0) {
+  if (auto rv =
+        c->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
+                      tx_iv, current_rx_secret, current_tx_secret, secretlen);
+      !rv) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -520,7 +508,7 @@ int select_preferred_address(ngtcp2_conn *conn, ngtcp2_path *dest,
     return 0;
   }
 
-  if (c->select_preferred_address(remote_addr, paddr) != 0) {
+  if (auto rv = c->select_preferred_address(remote_addr, paddr); !rv) {
     return 0;
   }
 
@@ -544,14 +532,14 @@ int extend_max_stream_data(ngtcp2_conn *conn, int64_t stream_id,
                            uint64_t max_data, void *user_data,
                            void *stream_user_data) {
   auto c = static_cast(user_data);
-  if (c->extend_max_stream_data(stream_id, max_data) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+
+  c->extend_max_stream_data(stream_id, max_data);
+
   return 0;
 }
 } // namespace
 
-int Client::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
+void Client::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
@@ -559,8 +547,6 @@ int Client::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
   if (nghttp3_buf_len(&stream->reqbuf)) {
     sendq_.emplace(stream.get());
   }
-
-  return 0;
 }
 
 namespace {
@@ -591,9 +577,10 @@ void Client::early_data_rejected() {
   streams_.clear();
 }
 
-int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
-                 const char *addr, const char *port,
-                 TLSClientContext &tls_ctx) {
+std::expected Client::init(int fd, const Address &local_addr,
+                                        const Address &remote_addr,
+                                        const char *addr, const char *port,
+                                        TLSClientContext &tls_ctx) {
   endpoints_.reserve(4);
 
   endpoints_.emplace_back();
@@ -622,7 +609,6 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     .recv_retry = ngtcp2_crypto_recv_retry_cb,
     .extend_max_local_streams_bidi = extend_max_local_streams_bidi,
     .rand = rand,
-    .get_new_connection_id = get_new_connection_id,
     .update_key = ::update_key,
     .path_validation = path_validation,
     .select_preferred_addr = ::select_preferred_address,
@@ -631,22 +617,24 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     .recv_new_token = ::recv_new_token,
     .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb,
     .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
-    .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb,
     .version_negotiation = ngtcp2_crypto_version_negotiation_cb,
     .tls_early_data_rejected = ::early_data_rejected,
+    .get_new_connection_id2 = get_new_connection_id,
+    .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb,
   };
 
   ngtcp2_cid scid, dcid;
   scid.datalen = 17;
-  if (util::generate_secure_random({scid.data, scid.datalen}) != 0) {
-    std::cerr << "Could not generate source connection ID" << std::endl;
-    return -1;
+  if (auto rv = util::generate_secure_random({scid.data, scid.datalen}); !rv) {
+    std::println(stderr, "Could not generate source connection ID");
+    return rv;
   }
   if (config.dcid.datalen == 0) {
     dcid.datalen = 18;
-    if (util::generate_secure_random({dcid.data, dcid.datalen}) != 0) {
-      std::cerr << "Could not generate destination connection ID" << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random({dcid.data, dcid.datalen});
+        !rv) {
+      std::println(stderr, "Could not generate destination connection ID");
+      return rv;
     }
   } else {
     dcid = config.dcid;
@@ -667,9 +655,9 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
     }
     qlog_ = fopen(path.c_str(), "w");
     if (qlog_ == nullptr) {
-      std::cerr << "Could not open qlog file " << std::quoted(path) << ": "
-                << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "Could not open qlog file {}: {}", path,
+                   strerror(errno));
+      return std::unexpected{Error::IO};
     }
     settings.qlog_write = qlog_write_cb;
   }
@@ -696,7 +684,7 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
   std::vector token;
 
   if (!config.token_file.empty()) {
-    std::cerr << "Reading token file " << config.token_file << std::endl;
+    std::println(stderr, "Reading token file {}", config.token_file);
 
     auto t = util::read_token(config.token_file);
     if (t) {
@@ -751,13 +739,14 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
                            &callbacks, &settings, ¶ms, nullptr, this);
 
   if (rv != 0) {
-    std::cerr << "ngtcp2_conn_client_new: " << ngtcp2_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_client_new: {}", ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  if (tls_session_.init(early_data_, tls_ctx, addr_, this,
-                        client_chosen_version_, AppProtocol::HQ) != 0) {
-    return -1;
+  if (auto rv = tls_session_.init(early_data_, tls_ctx, addr_, this,
+                                  client_chosen_version_, AppProtocol::HQ);
+      !rv) {
+    return rv;
   }
 
   ngtcp2_conn_set_tls_native_handle(conn_, tls_session_.get_native_handle());
@@ -770,11 +759,12 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
       auto rv = ngtcp2_conn_decode_and_set_0rtt_transport_params(
         conn_, params->data(), params->size());
       if (rv != 0) {
-        std::cerr << "ngtcp2_conn_decode_and_set_0rtt_transport_params:"
-                  << ngtcp2_strerror(rv) << std::endl;
+        std::println(stderr,
+                     "ngtcp2_conn_decode_and_set_0rtt_transport_params: {}",
+                     ngtcp2_strerror(rv));
         early_data_ = false;
-      } else if (make_stream_early() != 0) {
-        return -1;
+      } else {
+        make_stream_early();
       }
     }
   }
@@ -783,12 +773,12 @@ int Client::init(int fd, const Address &local_addr, const Address &remote_addr,
 
   ev_signal_start(loop_, &sigintev_);
 
-  return 0;
+  return {};
 }
 
-int Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
-                      const ngtcp2_pkt_info *pi,
-                      std::span data) {
+std::expected
+Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
+                  const ngtcp2_pkt_info *pi, std::span data) {
   auto path = ngtcp2_path{
     .local = as_ngtcp2_addr(ep.addr),
     .remote{
@@ -800,29 +790,28 @@ int Client::feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
   if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data.data(), data.size(),
                                      util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr, "ngtcp2_conn_read_pkt: {}", ngtcp2_strerror(rv));
     if (!last_error_.error_code) {
       if (rv == NGTCP2_ERR_CRYPTO) {
         auto alert = ngtcp2_conn_get_tls_alert(conn_);
         ngtcp2_ccerr_set_tls_alert(&last_error_, alert, nullptr, 0);
 
         if (alert == TLS_ALERT_ECH_REQUIRED && config.ech_config_list_file &&
-            tls_session_.write_ech_config_list(config.ech_config_list_file) !=
-              0) {
-          std::cerr << "Could not write ECH retry configs in "
-                    << config.ech_config_list_file << std::endl;
+            !tls_session_.write_ech_config_list(config.ech_config_list_file)) {
+          std::println(stderr, "Could not write ECH retry configs in {}",
+                       config.ech_config_list_file);
         }
       } else {
         ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
       }
     }
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
-int Client::on_read(const Endpoint &ep) {
+std::expected Client::on_read(const Endpoint &ep) {
   std::array buf;
   sockaddr_storage ss;
   size_t pktcnt = 0;
@@ -857,7 +846,7 @@ int Client::on_read(const Endpoint &ep) {
 
     if (nread == -1) {
       if (errno != EAGAIN && errno != EWOULDBLOCK) {
-        std::cerr << "recvmsg: " << strerror(errno) << std::endl;
+        std::println(stderr, "recvmsg: {}", strerror(errno));
       }
       break;
     }
@@ -883,12 +872,12 @@ int Client::on_read(const Endpoint &ep) {
       ++pktcnt;
 
       if (!config.quiet) {
-        std::cerr << "Received packet: local=" << util::straddr(ep.addr)
-                  << " remote="
-                  << util::straddr(reinterpret_cast(&ss),
-                                   msg.msg_namelen)
-                  << " ecn=0x" << std::hex << static_cast(pi.ecn)
-                  << std::dec << " " << datalen << " bytes" << std::endl;
+        std::println(stderr,
+                     "Received packet: local={} remote={} ecn={:#x} {} bytes",
+                     util::straddr(ep.addr),
+                     util::straddr(reinterpret_cast(&ss),
+                                   msg.msg_namelen),
+                     pi.ecn, datalen);
       }
 
       // Packets less than 21 bytes never be a valid QUIC packet.
@@ -898,11 +887,13 @@ int Client::on_read(const Endpoint &ep) {
 
       if (debug::packet_lost(config.rx_loss_prob)) {
         if (!config.quiet) {
-          std::cerr << "** Simulated incoming packet loss **" << std::endl;
+          std::println(stderr, "** Simulated incoming packet loss **");
         }
-      } else if (feed_data(ep, reinterpret_cast(&ss),
-                           msg.msg_namelen, &pi, {data.data(), datalen}) != 0) {
-        return -1;
+      } else if (auto rv =
+                   feed_data(ep, reinterpret_cast(&ss),
+                             msg.msg_namelen, &pi, {data.data(), datalen});
+                 !rv) {
+        return rv;
       }
 
       data = data.subspan(datalen);
@@ -914,52 +905,51 @@ int Client::on_read(const Endpoint &ep) {
   }
 
   if (should_exit()) {
+    ngtcp2_ccerr_set_application_error(
+      &last_error_, nghttp3_err_infer_quic_app_error_code(0), nullptr, 0);
     disconnect();
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
-int Client::handle_expiry() {
+std::expected Client::handle_expiry() {
   auto now = util::timestamp();
   if (auto rv = ngtcp2_conn_handle_expiry(conn_, now); rv != 0) {
-    std::cerr << "ngtcp2_conn_handle_expiry: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_handle_expiry: {}", ngtcp2_strerror(rv));
     ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
-int Client::on_write() {
+std::expected Client::on_write() {
   if (tx_.send_blocked) {
-    if (auto rv = send_blocked_packet(); rv != 0) {
-      return rv;
-    }
+    send_blocked_packet();
 
     if (tx_.send_blocked) {
-      return 0;
+      return {};
     }
   }
 
   ev_io_stop(loop_, &wev_);
 
-  if (auto rv = write_streams(); rv != 0) {
+  if (auto rv = write_streams(); !rv) {
     return rv;
   }
 
   if (should_exit()) {
     disconnect();
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   update_timer();
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1016,8 +1006,8 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
 
       assert(ndatalen == -1);
 
-      std::cerr << "ngtcp2_conn_write_stream: "
-                << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+      std::println(stderr, "ngtcp2_conn_writev_stream: {}",
+                   ngtcp2_strerror(static_cast(nwrite)));
       ngtcp2_ccerr_set_liberr(&last_error_, static_cast(nwrite), nullptr,
                               0);
 
@@ -1035,7 +1025,7 @@ ngtcp2_ssize Client::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
   }
 }
 
-int Client::write_streams() {
+std::expected Client::write_streams() {
   ngtcp2_path_storage ps;
   ngtcp2_pkt_info pi;
   size_t gso_size;
@@ -1050,36 +1040,34 @@ int Client::write_streams() {
     config.gso_burst, ts);
   if (nwrite < 0) {
     disconnect();
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   ngtcp2_conn_update_pkt_tx_time(conn_, ts);
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   send_packet_or_blocked(ps.path, pi.ecn,
                          txbuf.first(static_cast(nwrite)), gso_size);
 
-  return 0;
+  return {};
 }
 
-int Client::send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
-                                   std::span data,
-                                   size_t gso_size) {
+std::expected
+Client::send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
+                               std::span data, size_t gso_size) {
   auto &ep = *static_cast(path.user_data);
 
-  auto [rest, rv] = send_packet(ep, path.remote, ecn, data, gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = send_packet(ep, path.remote, ecn, data, gso_size);
+  if (!rest.empty()) {
     on_send_blocked(path, ecn, rest, gso_size);
 
-    return rv;
+    return std::unexpected{Error::SEND_BLOCKED};
   }
 
-  return 0;
+  return {};
 }
 
 void Client::update_timer() {
@@ -1089,8 +1077,7 @@ void Client::update_timer() {
   if (expiry <= now) {
     if (!config.quiet) {
       auto t = static_cast(now - expiry) / NGTCP2_SECONDS;
-      std::cerr << "Timer has already expired: " << std::fixed << t << "s"
-                << std::defaultfloat << std::endl;
+      std::println(stderr, "Timer has already expired: {:.9f}s", t);
     }
 
     ev_feed_event(loop_, &timer_, EV_TIMER);
@@ -1100,8 +1087,7 @@ void Client::update_timer() {
 
   auto t = static_cast(expiry - now) / NGTCP2_SECONDS;
   if (!config.quiet) {
-    std::cerr << "Set timer=" << std::fixed << t << "s" << std::defaultfloat
-              << std::endl;
+    std::println(stderr, "Set timer={:.9f}s", t);
   }
   timer_.repeat = t;
   ev_timer_again(loop_, &timer_);
@@ -1109,7 +1095,8 @@ void Client::update_timer() {
 
 #ifdef HAVE_LINUX_RTNETLINK_H
 namespace {
-int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
+std::expected bind_addr(Address &local_addr, int fd,
+                                     const InAddr &ia, int family) {
   addrinfo hints{
     .ai_flags = AI_PASSIVE,
     .ai_family = family,
@@ -1124,16 +1111,16 @@ int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
   } else {
     if (inet_ntop(family, in_addr_get_ptr(ia), nodebuf.data(),
                   nodebuf.size()) == nullptr) {
-      std::cerr << "inet_ntop: " << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "inet_ntop: {}", strerror(errno));
+      return std::unexpected{Error::LIBC};
     }
 
     node = nodebuf.data();
   }
 
   if (auto rv = getaddrinfo(node, "0", &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -1145,53 +1132,56 @@ int bind_addr(Address &local_addr, int fd, const InAddr &ia, int family) {
   }
 
   if (!rp) {
-    std::cerr << "Could not bind" << std::endl;
-    return -1;
+    std::println(stderr, "Could not bind");
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "getsockname: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
 
-  return 0;
+  return {};
 }
 } // namespace
 #endif // defined(HAVE_LINUX_RTNETLINK_H)
 
 #ifndef HAVE_LINUX_RTNETLINK_H
 namespace {
-int connect_sock(Address &local_addr, int fd, const Address &remote_addr) {
+std::expected connect_sock(Address &local_addr, int fd,
+                                        const Address &remote_addr) {
   if (connect(fd, remote_addr.as_sockaddr(), remote_addr.size()) != 0) {
-    std::cerr << "connect: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "connect: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
-    return -1;
+    std::println(stderr, "getsockname: {}", strerror(errno));
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
 
-  return 0;
+  return {};
 }
 } // namespace
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
 namespace {
-int udp_sock(int family) {
-  auto fd = util::create_nonblock_socket(family, SOCK_DGRAM, IPPROTO_UDP);
-  if (fd == -1) {
-    return -1;
+std::expected udp_sock(int family) {
+  auto maybe_fd = util::create_nonblock_socket(family, SOCK_DGRAM, IPPROTO_UDP);
+  if (!maybe_fd) {
+    return maybe_fd;
   }
 
+  auto fd = *maybe_fd;
+
   fd_set_recv_ecn(fd, family);
   fd_set_ip_mtu_discover(fd, family);
   fd_set_ip_dontfrag(fd, family);
@@ -1202,7 +1192,8 @@ int udp_sock(int family) {
 } // namespace
 
 namespace {
-int create_sock(Address &remote_addr, const char *addr, const char *port) {
+std::expected create_sock(Address &remote_addr, const char *addr,
+                                      const char *port) {
   addrinfo hints{
     .ai_family = AF_UNSPEC,
     .ai_socktype = SOCK_DGRAM,
@@ -1210,8 +1201,8 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
   addrinfo *res, *rp;
 
   if (auto rv = getaddrinfo(addr, port, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -1219,17 +1210,19 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
   int fd = -1;
 
   for (rp = res; rp; rp = rp->ai_next) {
-    fd = udp_sock(rp->ai_family);
-    if (fd == -1) {
+    auto maybe_fd = udp_sock(rp->ai_family);
+    if (!maybe_fd) {
       continue;
     }
 
+    fd = *maybe_fd;
+
     break;
   }
 
   if (!rp) {
-    std::cerr << "Could not create socket" << std::endl;
-    return -1;
+    std::println(stderr, "Could not create socket");
+    return std::unexpected{Error::SYSCALL};
   }
 
   remote_addr.set(rp->ai_addr);
@@ -1238,16 +1231,18 @@ int create_sock(Address &remote_addr, const char *addr, const char *port) {
 }
 } // namespace
 
-std::optional Client::endpoint_for(const Address &remote_addr) {
+std::expected
+Client::endpoint_for(const Address &remote_addr) {
 #ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
-
-  if (get_local_addr(ia, remote_addr) != 0) {
-    std::cerr << "Could not get local address for a selected preferred address"
-              << std::endl;
-    return nullptr;
+  auto maybe_ia = get_local_addr(remote_addr);
+  if (!maybe_ia) {
+    std::println(
+      stderr, "Could not get local address for a selected preferred address");
+    return std::unexpected{maybe_ia.error()};
   }
 
+  const auto &ia = *maybe_ia;
+
   auto current_path = ngtcp2_conn_get_path(conn_);
   auto current_ep = static_cast(current_path->user_data);
   if (addreq(current_ep->addr, ia)) {
@@ -1257,22 +1252,24 @@ std::optional Client::endpoint_for(const Address &remote_addr) {
 
   auto family = remote_addr.family();
 
-  auto fd = udp_sock(family);
-  if (fd == -1) {
-    return nullptr;
+  auto maybe_fd = udp_sock(family);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
+  auto fd = *maybe_fd;
+
   Address local_addr;
 
 #ifdef HAVE_LINUX_RTNETLINK_H
-  if (bind_addr(local_addr, fd, ia, family) != 0) {
+  if (auto rv = bind_addr(local_addr, fd, ia, family); !rv) {
     close(fd);
-    return nullptr;
+    return std::unexpected{rv.error()};
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, fd, remote_addr) != 0) {
+  if (auto rv = connect_sock(local_addr, fd, remote_addr); !rv) {
     close(fd);
-    return nullptr;
+    return std::unexpected{rv.error()};
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
@@ -1293,43 +1290,43 @@ void Client::start_change_local_addr_timer() {
   ev_timer_start(loop_, &change_local_addr_timer_);
 }
 
-int Client::change_local_addr() {
+std::expected Client::change_local_addr() {
   Address local_addr;
 
   if (!config.quiet) {
-    std::cerr << "Changing local address" << std::endl;
+    std::println(stderr, "Changing local address");
   }
 
   auto family = remote_addr_.family();
 
-  auto nfd = udp_sock(family);
-  if (nfd == -1) {
-    return -1;
+  auto maybe_nfd = udp_sock(family);
+  if (!maybe_nfd) {
+    return std::unexpected{maybe_nfd.error()};
   }
 
-#ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
+  auto nfd = *maybe_nfd;
 
-  if (get_local_addr(ia, remote_addr_) != 0) {
-    std::cerr << "Could not get local address" << std::endl;
+#ifdef HAVE_LINUX_RTNETLINK_H
+  auto maybe_ia = get_local_addr(remote_addr_);
+  if (!maybe_ia) {
+    std::println(stderr, "Could not get local address");
     close(nfd);
-    return -1;
+    return std::unexpected{maybe_ia.error()};
   }
 
-  if (bind_addr(local_addr, nfd, ia, family) != 0) {
+  if (auto rv = bind_addr(local_addr, nfd, *maybe_ia, family); !rv) {
     close(nfd);
-    return -1;
+    return rv;
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, nfd, remote_addr_) != 0) {
+  if (auto rv = connect_sock(local_addr, nfd, remote_addr_); !rv) {
     close(nfd);
-    return -1;
+    return rv;
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
   if (!config.quiet) {
-    std::cerr << "Local address is now " << util::straddr(local_addr)
-              << std::endl;
+    std::println(stderr, "Local address is now {}", util::straddr(local_addr));
   }
 
   endpoints_.emplace_back();
@@ -1354,27 +1351,28 @@ int Client::change_local_addr() {
     if (auto rv = ngtcp2_conn_initiate_immediate_migration(conn_, &path,
                                                            util::timestamp());
         rv != 0) {
-      std::cerr << "ngtcp2_conn_initiate_immediate_migration: "
-                << ngtcp2_strerror(rv) << std::endl;
+      std::println(stderr, "ngtcp2_conn_initiate_immediate_migration: {}",
+                   ngtcp2_strerror(rv));
     }
   }
 
   ev_io_start(loop_, &ep.rev);
 
-  return 0;
+  return {};
 }
 
 void Client::start_key_update_timer() {
   ev_timer_start(loop_, &key_update_timer_);
 }
 
-int Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                       ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                       ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                       const uint8_t *current_rx_secret,
-                       const uint8_t *current_tx_secret, size_t secretlen) {
+std::expected
+Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+                   ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+                   ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+                   const uint8_t *current_rx_secret,
+                   const uint8_t *current_tx_secret, size_t secretlen) {
   if (!config.quiet) {
-    std::cerr << "Updating traffic key" << std::endl;
+    std::println(stderr, "Updating traffic key");
   }
 
   auto crypto_ctx = ngtcp2_conn_get_crypto_ctx(conn_);
@@ -1390,73 +1388,81 @@ int Client::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
                                rx_key.data(), rx_iv, tx_aead_ctx, tx_key.data(),
                                tx_iv, current_rx_secret, current_tx_secret,
                                secretlen) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet && config.show_secret) {
-    std::cerr << "application_traffic rx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic rx secret {}", nkey_update_);
     debug::print_secrets({rx_secret, secretlen}, {rx_key.data(), keylen},
                          {rx_iv, ivlen});
-    std::cerr << "application_traffic tx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic tx secret {}", nkey_update_);
     debug::print_secrets({tx_secret, secretlen}, {tx_key.data(), keylen},
                          {tx_iv, ivlen});
   }
 
-  return 0;
+  return {};
 }
 
-int Client::initiate_key_update() {
+std::expected Client::initiate_key_update() {
   if (!config.quiet) {
-    std::cerr << "Initiate key update" << std::endl;
+    std::println(stderr, "Initiate key update");
   }
 
   if (auto rv = ngtcp2_conn_initiate_key_update(conn_, util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_initiate_key_update: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_initiate_key_update: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
 void Client::start_delay_stream_timer() {
   ev_timer_start(loop_, &delay_stream_timer_);
 }
 
-int Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                        unsigned int ecn, std::span data) {
-  auto [_, rv] = send_packet(ep, remote_addr, ecn, data, data.size());
+std::expected Client::send_packet(const Endpoint &ep,
+                                               const ngtcp2_addr &remote_addr,
+                                               unsigned int ecn,
+                                               std::span data) {
+  auto rest = send_packet(ep, remote_addr, ecn, data, data.size());
+  if (!rest.empty()) {
+    return std::unexpected{Error::SEND_BLOCKED};
+  }
 
-  return rv;
+  return {};
 }
 
-std::pair, int>
-Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                    unsigned int ecn, std::span data,
-                    size_t gso_size) {
+std::span Client::send_packet(const Endpoint &ep,
+                                             const ngtcp2_addr &remote_addr,
+                                             unsigned int ecn,
+                                             std::span data,
+                                             size_t gso_size) {
   assert(gso_size);
 
   if (debug::packet_lost(config.tx_loss_prob)) {
     if (!config.quiet) {
-      std::cerr << "** Simulated outgoing packet loss **" << std::endl;
+      std::println(stderr, "** Simulated outgoing packet loss **");
     }
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (no_gso_ && data.size() > gso_size) {
     for (; !data.empty();) {
       auto len = std::min(gso_size, data.size());
 
-      auto [_, rv] = send_packet(ep, remote_addr, ecn, data.first(len), len);
-      if (rv != 0) {
-        return {data, rv};
+      auto rest = send_packet(ep, remote_addr, ecn, data.first(len), len);
+      if (!rest.empty()) {
+        assert(rest.size() == len);
+
+        return data;
       }
 
       data = data.subspan(len);
     }
 
-    return {{}, 0};
+    return {};
   }
 
   iovec msg_iov{
@@ -1531,13 +1537,13 @@ Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
 #if EAGAIN != EWOULDBLOCK
     case EWOULDBLOCK:
 #endif // EAGAIN != EWOULDBLOCK
-      return {data, NETWORK_ERR_SEND_BLOCKED};
+      return data;
 #ifdef UDP_SEGMENT
     case EIO:
       if (data.size() > gso_size) {
         // GSO failure; send each packet in a separate sendmsg call.
-        std::cerr << "sendmsg: disabling GSO due to " << strerror(errno)
-                  << std::endl;
+        std::println(stderr, "sendmsg: disabling GSO due to {}",
+                     strerror(errno));
 
         no_gso_ = true;
 
@@ -1547,23 +1553,23 @@ Client::send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
 #endif // defined(UDP_SEGMENT)
     }
 
-    std::cerr << "sendmsg: " << strerror(errno) << std::endl;
+    std::println(stderr, "sendmsg: {}", strerror(errno));
 
     // TODO We have packet which is expected to fail to send (e.g.,
     // path validation to old path).
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   assert(static_cast(nwrite) == data.size());
 
   if (!config.quiet) {
-    std::cerr << "Sent packet: local=" << util::straddr(ep.addr) << " remote="
-              << util::straddr(remote_addr.addr, remote_addr.addrlen)
-              << " ecn=0x" << std::hex << ecn << std::dec << " " << nwrite
-              << " bytes" << std::endl;
+    std::println(stderr, "Sent packet: local={} remote={} ecn={:#x} {} bytes",
+                 util::straddr(ep.addr),
+                 util::straddr(remote_addr.addr, remote_addr.addrlen), ecn,
+                 nwrite);
   }
 
-  return {{}, NETWORK_ERR_OK};
+  return {};
 }
 
 void Client::on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
@@ -1601,32 +1607,28 @@ void Client::start_wev_endpoint(const Endpoint &ep) {
   ev_io_start(loop_, &wev_);
 }
 
-int Client::send_blocked_packet() {
+void Client::send_blocked_packet() {
   assert(tx_.send_blocked);
 
   auto &p = tx_.blocked;
 
-  auto [rest, rv] = send_packet(*p.endpoint, as_ngtcp2_addr(p.remote_addr),
-                                p.ecn, p.data, p.gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = send_packet(*p.endpoint, as_ngtcp2_addr(p.remote_addr), p.ecn,
+                          p.data, p.gso_size);
+  if (!rest.empty()) {
     p.data = rest;
 
     start_wev_endpoint(*p.endpoint);
 
-    return 0;
+    return;
   }
 
   tx_.send_blocked = false;
-
-  return 0;
 }
 
-int Client::handle_error() {
+std::expected Client::handle_error() {
   if (!conn_ || ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   std::array buf;
@@ -1641,13 +1643,13 @@ int Client::handle_error() {
     conn_, &ps.path, &pi, buf.data(), buf.size(), &last_error_,
     util::timestamp());
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_conn_write_connection_close: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_write_connection_close: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
+    return std::unexpected{Error::QUIC};
   }
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   return send_packet(*static_cast(ps.path.user_data),
@@ -1655,7 +1657,7 @@ int Client::handle_error() {
                      {buf.data(), static_cast(nwrite)});
 }
 
-int Client::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
+void Client::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
@@ -1670,22 +1672,20 @@ int Client::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
   }
 
   if (!config.quiet) {
-    std::cerr << "HTTP stream " << stream_id << " closed with error code "
-              << app_error_code << std::endl;
+    std::println(stderr, "HTTP stream {:#x} closed with error code {:#x}",
+                 stream_id, app_error_code);
   }
   streams_.erase(it);
-
-  return 0;
 }
 
-int Client::make_stream_early() { return on_extend_max_streams(); }
+void Client::make_stream_early() { on_extend_max_streams(); }
 
-int Client::on_extend_max_streams() {
+void Client::on_extend_max_streams() {
   int64_t stream_id;
 
   if ((config.delay_stream && !handshake_confirmed_) ||
       ev_is_active(&delay_stream_timer_)) {
-    return 0;
+    return;
   }
 
   for (; nstreams_done_ < config.nstreams; ++nstreams_done_) {
@@ -1698,19 +1698,16 @@ int Client::on_extend_max_streams() {
     auto stream = std::make_unique(
       config.requests[nstreams_done_ % config.requests.size()], stream_id);
 
-    if (submit_http_request(stream.get()) != 0) {
-      break;
-    }
+    submit_http_request(stream.get());
 
     if (!config.download.empty()) {
       stream->open_file(stream->req.path);
     }
     streams_.emplace(stream_id, std::move(stream));
   }
-  return 0;
 }
 
-int Client::submit_http_request(Stream *stream) {
+void Client::submit_http_request(Stream *stream) {
   const auto &req = stream->req;
 
   stream->rawreqbuf = config.http_method;
@@ -1734,12 +1731,10 @@ int Client::submit_http_request(Stream *stream) {
   }
 
   sendq_.emplace(stream);
-
-  return 0;
 }
 
-int Client::recv_stream_data(uint32_t flags, int64_t stream_id,
-                             std::span data) {
+void Client::recv_stream_data(uint32_t flags, int64_t stream_id,
+                              std::span data) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
@@ -1748,47 +1743,56 @@ int Client::recv_stream_data(uint32_t flags, int64_t stream_id,
   ngtcp2_conn_extend_max_offset(conn_, data.size());
 
   if (stream->fd == -1) {
-    return 0;
+    return;
   }
 
   ssize_t nwrite;
-  do {
-    nwrite = write(stream->fd, data.data(), data.size());
-  } while (nwrite == -1 && errno == EINTR);
 
-  return 0;
+  for (; !data.empty();) {
+    do {
+      nwrite = write(stream->fd, data.data(), data.size());
+    } while (nwrite == -1 && errno == EINTR);
+
+    if (nwrite < 0) {
+      std::println(stderr, "Could not write data to file: {}", strerror(errno));
+
+      return;
+    }
+
+    data = data.subspan(static_cast(nwrite));
+  }
 }
 
-int Client::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
-                                     uint64_t datalen) {
+void Client::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                                      uint64_t datalen) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
   (void)stream;
   assert(static_cast(stream->reqbuf.end - stream->reqbuf.begin) >=
          offset + datalen);
-  return 0;
 }
 
-int Client::select_preferred_address(Address &selected_addr,
-                                     const ngtcp2_preferred_addr *paddr) {
+std::expected
+Client::select_preferred_address(Address &selected_addr,
+                                 const ngtcp2_preferred_addr *paddr) {
   auto path = ngtcp2_conn_get_path(conn_);
 
   switch (path->local.addr->sa_family) {
   case AF_INET:
     if (!paddr->ipv4_present) {
-      return -1;
+      return std::unexpected{Error::INTERNAL};
     }
     selected_addr.skaddr.emplace(paddr->ipv4);
     break;
   case AF_INET6:
     if (!paddr->ipv6_present) {
-      return -1;
+      return std::unexpected{Error::INTERNAL};
     }
     selected_addr.skaddr.emplace(paddr->ipv6);
     break;
   default:
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
   if (!config.quiet) {
@@ -1797,15 +1801,15 @@ int Client::select_preferred_address(Address &selected_addr,
                               host, sizeof(host), service, sizeof(service),
                               NI_NUMERICHOST | NI_NUMERICSERV);
         rv != 0) {
-      std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+      return std::unexpected{Error::LIBC};
     }
 
-    std::cerr << "selected server preferred_address is [" << host
-              << "]:" << service << std::endl;
+    std::println(stderr, "selected server preferred_address is [{}]:{}", host,
+                 service);
   }
 
-  return 0;
+  return {};
 }
 
 const std::vector &Client::get_offered_versions() const {
@@ -1813,70 +1817,79 @@ const std::vector &Client::get_offered_versions() const {
 }
 
 namespace {
-int run(Client &c, const char *addr, const char *port,
-        TLSClientContext &tls_ctx) {
+std::expected run(Client &c, const char *addr, const char *port,
+                               TLSClientContext &tls_ctx) {
   Address remote_addr, local_addr;
 
-  auto fd = create_sock(remote_addr, addr, port);
-  if (fd == -1) {
-    return -1;
+  auto maybe_fd = create_sock(remote_addr, addr, port);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
-#ifdef HAVE_LINUX_RTNETLINK_H
-  InAddr ia;
+  auto fd = *maybe_fd;
 
-  if (get_local_addr(ia, remote_addr) != 0) {
-    std::cerr << "Could not get local address" << std::endl;
+#ifdef HAVE_LINUX_RTNETLINK_H
+  auto maybe_ia = get_local_addr(remote_addr);
+  if (!maybe_ia) {
+    std::println(stderr, "Could not get local address");
     close(fd);
-    return -1;
+    return std::unexpected{maybe_ia.error()};
   }
 
-  if (bind_addr(local_addr, fd, ia, remote_addr.family()) != 0) {
+  if (auto rv = bind_addr(local_addr, fd, *maybe_ia, remote_addr.family());
+      !rv) {
     close(fd);
-    return -1;
+    return rv;
   }
 #else  // !defined(HAVE_LINUX_RTNETLINK_H)
-  if (connect_sock(local_addr, fd, remote_addr) != 0) {
+  if (auto rv = connect_sock(local_addr, fd, remote_addr); !rv) {
     close(fd);
-    return -1;
+    return rv;
   }
 #endif // !defined(HAVE_LINUX_RTNETLINK_H)
 
-  if (c.init(fd, local_addr, remote_addr, addr, port, tls_ctx) != 0) {
-    return -1;
+  if (auto rv = c.init(fd, local_addr, remote_addr, addr, port, tls_ctx); !rv) {
+    return rv;
   }
 
   // TODO Do we need this ?
-  if (auto rv = c.on_write(); rv != 0) {
+  if (auto rv = c.on_write(); !rv) {
     return rv;
   }
 
   ev_run(EV_DEFAULT, 0);
 
-  return 0;
+  return {};
 }
 } // namespace
 
 namespace {
-int parse_uri(Request &req, const std::string_view &uri) {
+std::expected parse_uri(std::string_view uri) {
   urlparse_url u;
 
   if (urlparse_parse_url(uri.data(), uri.size(), /* is_connect = */ 0, &u) !=
       0) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   if (!(u.field_set & (1 << URLPARSE_SCHEMA)) ||
       !(u.field_set & (1 << URLPARSE_HOST))) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
+  Request req;
+
   req.scheme = util::get_string(uri, u, URLPARSE_SCHEMA);
 
-  req.authority = util::get_string(uri, u, URLPARSE_HOST);
-  if (util::numeric_host(req.authority.c_str(), AF_INET6)) {
-    req.authority = '[' + req.authority + ']';
+  auto host = std::string(util::get_string(uri, u, URLPARSE_HOST));
+  if (util::numeric_host(host.c_str(), AF_INET6)) {
+    req.authority = '[';
+    req.authority += host;
+    req.authority += ']';
+  } else {
+    req.authority = std::move(host);
   }
+
   if (u.field_set & (1 << URLPARSE_PORT)) {
     req.authority += ':';
     req.authority += util::get_string(uri, u, URLPARSE_PORT);
@@ -1893,22 +1906,22 @@ int parse_uri(Request &req, const std::string_view &uri) {
     req.path += util::get_string(uri, u, URLPARSE_QUERY);
   }
 
-  return 0;
+  return req;
 }
 } // namespace
 
 namespace {
-int parse_requests(char **argv, size_t argvlen) {
+std::expected parse_requests(char **argv, size_t argvlen) {
   for (size_t i = 0; i < argvlen; ++i) {
     auto uri = std::string_view{argv[i]};
-    Request req;
-    if (parse_uri(req, uri) != 0) {
-      std::cerr << "Could not parse URI: " << uri << std::endl;
-      return -1;
+    auto maybe_req = parse_uri(uri);
+    if (!maybe_req) {
+      std::println(stderr, "Could not parse URI: {}", uri);
+      return std::unexpected{maybe_req.error()};
     }
-    config.requests.emplace_back(std::move(req));
+    config.requests.emplace_back(std::move(*maybe_req));
   }
-  return 0;
+  return {};
 }
 } // namespace
 
@@ -1919,15 +1932,14 @@ const char *prog = "h09client";
 } // namespace
 
 namespace {
-void print_usage() {
-  std::cerr << "Usage: " << prog << " [OPTIONS]   [...]"
-            << std::endl;
+void print_usage(FILE *out) {
+  std::println(out, "Usage: {} [OPTIONS]   [...]", prog);
 }
 } // namespace
 
 namespace {
 void print_help() {
-  print_usage();
+  print_usage(stdout);
 
   Config config;
 
@@ -2257,11 +2269,10 @@ int main(int argc, char **argv) {
     case 'n':
       // --streams
       if (auto n = util::parse_uint(optarg); !n) {
-        std::cerr << "streams: invalid argument" << std::endl;
+        std::println(stderr, "streams: invalid argument");
         exit(EXIT_FAILURE);
       } else if (*n > NGTCP2_MAX_VARINT) {
-        std::cerr << "streams: must not exceed " << NGTCP2_MAX_VARINT
-                  << std::endl;
+        std::println(stderr, "streams: must not exceed {}", NGTCP2_MAX_VARINT);
         exit(EXIT_FAILURE);
       } else {
         config.nstreams = *n;
@@ -2295,22 +2306,21 @@ int main(int argc, char **argv) {
       }
       auto rv = util::parse_version(optarg);
       if (!rv) {
-        std::cerr << "version: invalid version " << std::quoted(optarg)
-                  << std::endl;
+        std::println(stderr, "version: invalid version {}", optarg);
         exit(EXIT_FAILURE);
       }
       config.version = *rv;
       break;
     }
     case '?':
-      print_usage();
+      print_usage(stderr);
       exit(EXIT_FAILURE);
     case 0:
       switch (flag) {
       case 1:
         // --ciphers
         if (util::crypto_default_ciphers()[0] == '\0') {
-          std::cerr << "ciphers: not supported" << std::endl;
+          std::println(stderr, "ciphers: not supported");
           exit(EXIT_FAILURE);
         }
         config.ciphers = optarg;
@@ -2322,7 +2332,7 @@ int main(int argc, char **argv) {
       case 3:
         // --timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "timeout: invalid argument" << std::endl;
+          std::println(stderr, "timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.timeout = *t;
@@ -2341,12 +2351,12 @@ int main(int argc, char **argv) {
         auto hexcid = std::string_view{optarg};
         if (hexcid.size() < NGTCP2_MIN_INITIAL_DCIDLEN * 2 ||
             hexcid.size() > NGTCP2_MAX_CIDLEN * 2) {
-          std::cerr << "dcid: wrong length" << std::endl;
+          std::println(stderr, "dcid: wrong length");
           exit(EXIT_FAILURE);
         }
 
         if (!util::is_hex_string(hexcid)) {
-          std::cerr << "dcid: not hex string" << std::endl;
+          std::println(stderr, "dcid: not hex string");
           exit(EXIT_FAILURE);
         }
 
@@ -2359,7 +2369,7 @@ int main(int argc, char **argv) {
       case 7:
         // --change-local-addr
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "change-local-addr: invalid argument" << std::endl;
+          std::println(stderr, "change-local-addr: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.change_local_addr = *t;
@@ -2368,7 +2378,7 @@ int main(int argc, char **argv) {
       case 8:
         // --key-update
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "key-update: invalid argument" << std::endl;
+          std::println(stderr, "key-update: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.key_update = *t;
@@ -2381,7 +2391,7 @@ int main(int argc, char **argv) {
       case 10:
         // --delay-stream
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "delay-stream: invalid argument" << std::endl;
+          std::println(stderr, "delay-stream: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.delay_stream = *t;
@@ -2418,7 +2428,7 @@ int main(int argc, char **argv) {
       case 18:
         // --max-data
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-data: invalid argument" << std::endl;
+          std::println(stderr, "max-data: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_data = *n;
@@ -2427,8 +2437,7 @@ int main(int argc, char **argv) {
       case 19:
         // --max-stream-data-bidi-local
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-local: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-local: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_local = *n;
@@ -2437,8 +2446,7 @@ int main(int argc, char **argv) {
       case 20:
         // --max-stream-data-bidi-remote
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-remote: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-remote: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_remote = *n;
@@ -2447,7 +2455,7 @@ int main(int argc, char **argv) {
       case 21:
         // --max-stream-data-uni
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-data-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_uni = *n;
@@ -2456,7 +2464,7 @@ int main(int argc, char **argv) {
       case 22:
         // --max-streams-bidi
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-bidi: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-bidi: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_bidi = *n;
@@ -2465,7 +2473,7 @@ int main(int argc, char **argv) {
       case 23:
         // --max-streams-uni
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_uni = *n;
@@ -2497,7 +2505,7 @@ int main(int argc, char **argv) {
           config.cc_algo = NGTCP2_CC_ALGO_BBR;
           break;
         }
-        std::cerr << "cc: specify cubic, reno, or bbr" << std::endl;
+        std::println(stderr, "cc: specify cubic, reno, or bbr");
         exit(EXIT_FAILURE);
       case 28:
         // --exit-on-all-streams-close
@@ -2514,7 +2522,7 @@ int main(int argc, char **argv) {
       case 31:
         // --initial-rtt
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "initial-rtt: invalid argument" << std::endl;
+          std::println(stderr, "initial-rtt: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.initial_rtt = *t;
@@ -2523,7 +2531,7 @@ int main(int argc, char **argv) {
       case 32:
         // --max-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-window: invalid argument" << std::endl;
+          std::println(stderr, "max-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_window = *n;
@@ -2532,7 +2540,7 @@ int main(int argc, char **argv) {
       case 33:
         // --max-stream-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-window: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_window = *n;
@@ -2541,14 +2549,14 @@ int main(int argc, char **argv) {
       case 35:
         // --max-udp-payload-size
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-udp-payload-size: invalid argument" << std::endl;
+          std::println(stderr, "max-udp-payload-size: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-          std::cerr << "max-udp-payload-size: must not exceed "
-                    << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not exceed {}",
+                       NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
           exit(EXIT_FAILURE);
         } else if (*n == 0) {
-          std::cerr << "max-udp-payload-size: must not be 0" << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not be 0");
         } else {
           config.max_udp_payload_size = *n;
         }
@@ -2556,7 +2564,7 @@ int main(int argc, char **argv) {
       case 36:
         // --handshake-timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "handshake-timeout: invalid argument" << std::endl;
+          std::println(stderr, "handshake-timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.handshake_timeout = *t;
@@ -2582,8 +2590,7 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "available-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "available-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -2598,8 +2605,9 @@ int main(int argc, char **argv) {
         // --preferred-versions
         auto l = util::split_str(optarg);
         if (l.size() > max_preferred_versionslen) {
-          std::cerr << "preferred-versions: too many versions > "
-                    << max_preferred_versionslen << std::endl;
+          std::println(stderr, "preferred-versions: too many versions > {}",
+                       max_preferred_versionslen);
+          exit(EXIT_FAILURE);
         }
         config.preferred_versions.resize(l.size());
         auto it = std::ranges::begin(config.preferred_versions);
@@ -2614,13 +2622,12 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "preferred-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           if (!ngtcp2_is_supported_version(*rv)) {
-            std::cerr << "preferred-versions: unsupported version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: unsupported version {}",
+                         k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -2630,10 +2637,10 @@ int main(int argc, char **argv) {
       case 40:
         // --ack-thresh
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "ack-thresh: invalid argument" << std::endl;
+          std::println(stderr, "ack-thresh: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > 100) {
-          std::cerr << "ack-thresh: must not exceed 100" << std::endl;
+          std::println(stderr, "ack-thresh: must not exceed 100");
           exit(EXIT_FAILURE);
         } else {
           config.ack_thresh = *n;
@@ -2646,11 +2653,11 @@ int main(int argc, char **argv) {
       case 42:
         // --initial-pkt-num
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "initial-pkt-num: invalid argument" << std::endl;
+          std::println(stderr, "initial-pkt-num: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > INT32_MAX) {
-          std::cerr << "initial-pkt-num: must not exceed (1 << 31) - 1"
-                    << std::endl;
+          std::println(stderr,
+                       "initial-pkt-num: must not exceed (1 << 31) - 1");
           exit(EXIT_FAILURE);
         } else {
           config.initial_pkt_num = static_cast(*n);
@@ -2661,14 +2668,13 @@ int main(int argc, char **argv) {
         auto l = util::split_str(optarg);
         for (auto &s : l) {
           if (auto n = util::parse_uint_iec(s); !n) {
-            std::cerr << "pmtud-probes: invalid argument" << std::endl;
+            std::println(stderr, "pmtud-probes: invalid argument");
             exit(EXIT_FAILURE);
           } else if (*n <= NGTCP2_MAX_UDP_PAYLOAD_SIZE ||
                      *n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-            std::cerr << "pmtud-probes: must be in range ["
-                      << NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1 << ", "
-                      << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << "], inclusive."
-                      << std::endl;
+            std::println(
+              stderr, "pmtud-probes: must be in range [{}, {}], inclusive.",
+              NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1, NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
             exit(EXIT_FAILURE);
           } else {
             config.pmtud_probes.push_back(static_cast(*n));
@@ -2692,13 +2698,13 @@ int main(int argc, char **argv) {
         // --gso-burst
         auto n = util::parse_uint(optarg);
         if (!n) {
-          std::cerr << "gso-burst: invalid argument" << std::endl;
+          std::println(stderr, "gso-burst: invalid argument");
           exit(EXIT_FAILURE);
         }
 
         if (*n > 64) {
-          std::cerr << "gso-burst: must be in range [0, 64], inclusive."
-                    << std::endl;
+          std::println(stderr,
+                       "gso-burst: must be in range [0, 64], inclusive.");
           exit(EXIT_FAILURE);
         }
 
@@ -2714,39 +2720,38 @@ int main(int argc, char **argv) {
   }
 
   if (argc - optind < 2) {
-    std::cerr << "Too few arguments" << std::endl;
-    print_usage();
+    std::println(stderr, "Too few arguments");
+    print_usage(stderr);
     exit(EXIT_FAILURE);
   }
 
   if (!config.qlog_file.empty() && !config.qlog_dir.empty()) {
-    std::cerr << "qlog-file and qlog-dir are mutually exclusive" << std::endl;
+    std::println(stderr, "qlog-file and qlog-dir are mutually exclusive");
     exit(EXIT_FAILURE);
   }
 
   if (config.exit_on_first_stream_close && config.exit_on_all_streams_close) {
-    std::cerr << "exit-on-first-stream-close and exit-on-all-streams-close are "
-                 "mutually exclusive"
-              << std::endl;
+    std::println(stderr, "exit-on-first-stream-close and "
+                         "exit-on-all-streams-close are mutually exclusive");
     exit(EXIT_FAILURE);
   }
 
   if (config.wait_for_ticket && !config.session_file) {
-    std::cerr << "wait-for-ticket: session-file must be specified" << std::endl;
+    std::println(stderr, "wait-for-ticket: session-file must be specified");
     exit(EXIT_FAILURE);
   }
 
   if (data_path) {
     auto fd = open(data_path, O_RDONLY);
     if (fd == -1) {
-      std::cerr << "data: Could not open file " << data_path << ": "
-                << strerror(errno) << std::endl;
+      std::println(stderr, "data: Could not open file {}: {}", data_path,
+                   strerror(errno));
       exit(EXIT_FAILURE);
     }
     struct stat st;
     if (fstat(fd, &st) != 0) {
-      std::cerr << "data: Could not stat file " << data_path << ": "
-                << strerror(errno) << std::endl;
+      std::println(stderr, "data: Could not stat file {}: {}", data_path,
+                   strerror(errno));
       exit(EXIT_FAILURE);
     }
     config.fd = fd;
@@ -2754,8 +2759,8 @@ int main(int argc, char **argv) {
     if (config.datalen) {
       auto addr = mmap(nullptr, config.datalen, PROT_READ, MAP_SHARED, fd, 0);
       if (addr == MAP_FAILED) {
-        std::cerr << "data: Could not mmap file " << data_path << ": "
-                  << strerror(errno) << std::endl;
+        std::println(stderr, "data: Could not mmap file {}: {}", data_path,
+                     strerror(errno));
         exit(EXIT_FAILURE);
       }
       config.data = static_cast(addr);
@@ -2765,8 +2770,8 @@ int main(int argc, char **argv) {
   if (config.ech_config_list_file) {
     auto ech_config = util::read_file(config.ech_config_list_file);
     if (!ech_config) {
-      std::cerr << "ech-config-list-file: Could not read ECHConfigList"
-                << std::endl;
+      std::println(stderr,
+                   "ech-config-list-file: Could not read ECHConfigList");
     } else {
       config.ech_config_list = std::move(*ech_config);
     }
@@ -2775,7 +2780,7 @@ int main(int argc, char **argv) {
   auto addr = argv[optind++];
   auto port = argv[optind++];
 
-  if (parse_requests(&argv[optind], static_cast(argc - optind)) != 0) {
+  if (!parse_requests(&argv[optind], static_cast(argc - optind))) {
     exit(EXIT_FAILURE);
   }
 
@@ -2783,16 +2788,16 @@ int main(int argc, char **argv) {
     if (!config.preferred_versions.empty() &&
         std::ranges::find(config.preferred_versions, config.version) ==
           std::ranges::end(config.preferred_versions)) {
-      std::cerr << "preferred-version: must include version " << std::hex
-                << "0x" << config.version << std::dec << std::endl;
+      std::println(stderr, "preferred-version: must include version {:#x}",
+                   config.version);
       exit(EXIT_FAILURE);
     }
 
     if (!config.available_versions.empty() &&
         std::ranges::find(config.available_versions, config.version) ==
           std::ranges::end(config.available_versions)) {
-      std::cerr << "available-versions: must include version " << std::hex
-                << "0x" << config.version << std::dec << std::endl;
+      std::println(stderr, "available-versions: must include version {:#x}",
+                   config.version);
       exit(EXIT_FAILURE);
     }
   }
@@ -2802,7 +2807,7 @@ int main(int argc, char **argv) {
   }
 
   TLSClientContext tls_ctx;
-  if (tls_ctx.init(private_key_file, cert_file) != 0) {
+  if (!tls_ctx.init(private_key_file, cert_file)) {
     exit(EXIT_FAILURE);
   }
 
@@ -2816,8 +2821,8 @@ int main(int argc, char **argv) {
     }
   }
 
-  if (util::generate_secret(config.static_secret) != 0) {
-    std::cerr << "Unable to generate static secret" << std::endl;
+  if (!util::generate_secure_random(config.static_secret)) {
+    std::println(stderr, "Unable to generate static secret");
     exit(EXIT_FAILURE);
   }
 
@@ -2826,7 +2831,7 @@ int main(int argc, char **argv) {
   for (;;) {
     Client c(EV_DEFAULT, client_chosen_version, config.version);
 
-    if (run(c, addr, port, tls_ctx) != 0) {
+    if (!run(c, addr, port, tls_ctx)) {
       exit(EXIT_FAILURE);
     }
 
@@ -2844,13 +2849,13 @@ int main(int argc, char **argv) {
       offered_versions.data(), offered_versions.size());
 
     if (client_chosen_version == 0) {
-      std::cerr << "Unable to select a version" << std::endl;
+      std::println(stderr, "Unable to select a version");
       exit(EXIT_FAILURE);
     }
 
     if (!config.quiet) {
-      std::cerr << "Client selected version " << std::hex << "0x"
-                << client_chosen_version << std::dec << std::endl;
+      std::println(stderr, "Client selected version {:#x}",
+                   client_chosen_version);
     }
   }
 
diff --git a/deps/ngtcp2/ngtcp2/examples/h09client.h b/deps/ngtcp2/ngtcp2/examples/h09client.h
index 4fa848e4126345..7e0afee3050083 100644
--- a/deps/ngtcp2/ngtcp2/examples/h09client.h
+++ b/deps/ngtcp2/ngtcp2/examples/h09client.h
@@ -57,7 +57,7 @@ struct Stream {
   Stream(const Request &req, int64_t stream_id);
   ~Stream();
 
-  int open_file(const std::string_view &path);
+  std::expected open_file(std::string_view path);
 
   Request req;
   int64_t stream_id;
@@ -87,63 +87,71 @@ class Client : public ClientBase {
          uint32_t original_version);
   ~Client();
 
-  int init(int fd, const Address &local_addr, const Address &remote_addr,
-           const char *addr, const char *port, TLSClientContext &tls_ctx);
+  std::expected init(int fd, const Address &local_addr,
+                                  const Address &remote_addr, const char *addr,
+                                  const char *port, TLSClientContext &tls_ctx);
   void disconnect();
 
-  int on_read(const Endpoint &ep);
-  int on_write();
-  int write_streams();
-  int feed_data(const Endpoint &ep, const sockaddr *sa, socklen_t salen,
-                const ngtcp2_pkt_info *pi, std::span data);
-  int handle_expiry();
+  std::expected on_read(const Endpoint &ep);
+  std::expected on_write();
+  std::expected write_streams();
+  std::expected feed_data(const Endpoint &ep, const sockaddr *sa,
+                                       socklen_t salen,
+                                       const ngtcp2_pkt_info *pi,
+                                       std::span data);
+  std::expected handle_expiry();
   void update_timer();
-  int handshake_completed();
-  int handshake_confirmed();
+  std::expected handshake_completed();
+  void handshake_confirmed();
   void recv_version_negotiation(const uint32_t *sv, size_t nsv);
 
-  int send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
-                  unsigned int ecn, std::span data);
-  std::pair, int>
+  std::expected send_packet(const Endpoint &ep,
+                                         const ngtcp2_addr &remote_addr,
+                                         unsigned int ecn,
+                                         std::span data);
+  std::span
   send_packet(const Endpoint &ep, const ngtcp2_addr &remote_addr,
               unsigned int ecn, std::span data, size_t gso_size);
-  int send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
-                             std::span data, size_t gso_size);
-  int on_stream_close(int64_t stream_id, uint64_t app_error_code);
-  int on_extend_max_streams();
-  int handle_error();
-  int make_stream_early();
-  int change_local_addr();
+  std::expected
+  send_packet_or_blocked(const ngtcp2_path &path, unsigned int ecn,
+                         std::span data, size_t gso_size);
+  void on_stream_close(int64_t stream_id, uint64_t app_error_code);
+  void on_extend_max_streams();
+  std::expected handle_error();
+  void make_stream_early();
+  std::expected change_local_addr();
   void start_change_local_addr_timer();
-  int update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                 ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                 ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                 const uint8_t *current_rx_secret,
-                 const uint8_t *current_tx_secret, size_t secretlen);
-  int initiate_key_update();
+  std::expected
+  update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+             ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+             ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+             const uint8_t *current_rx_secret, const uint8_t *current_tx_secret,
+             size_t secretlen);
+  std::expected initiate_key_update();
   void start_key_update_timer();
   void start_delay_stream_timer();
 
-  int select_preferred_address(Address &selected_addr,
-                               const ngtcp2_preferred_addr *paddr);
+  std::expected
+  select_preferred_address(Address &selected_addr,
+                           const ngtcp2_preferred_addr *paddr);
 
-  std::optional endpoint_for(const Address &remote_addr);
+  std::expected endpoint_for(const Address &remote_addr);
 
   void set_remote_addr(const ngtcp2_addr &remote_addr);
 
-  int submit_http_request(Stream *stream);
-  int recv_stream_data(uint32_t flags, int64_t stream_id,
-                       std::span data);
-  int acked_stream_data_offset(int64_t stream_id, uint64_t offset,
-                               uint64_t datalen);
-  int extend_max_stream_data(int64_t stream_id, uint64_t max_data);
+  void submit_http_request(Stream *stream);
+  void recv_stream_data(uint32_t flags, int64_t stream_id,
+                        std::span data);
+  void acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                                uint64_t datalen);
+  void extend_max_stream_data(int64_t stream_id, uint64_t max_data);
 
   void write_qlog(const void *data, size_t datalen);
 
   void on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
                        std::span data, size_t gso_size);
   void start_wev_endpoint(const Endpoint &ep);
-  int send_blocked_packet();
+  void send_blocked_packet();
   ngtcp2_ssize write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi, uint8_t *dest,
                          size_t destlen, ngtcp2_tstamp ts);
 
diff --git a/deps/ngtcp2/ngtcp2/examples/h09server.cc b/deps/ngtcp2/ngtcp2/examples/h09server.cc
index 6f6102ac7d2011..3636d4e064dfc6 100644
--- a/deps/ngtcp2/ngtcp2/examples/h09server.cc
+++ b/deps/ngtcp2/ngtcp2/examples/h09server.cc
@@ -112,14 +112,14 @@ struct Request {
 };
 
 namespace {
-Request request_path(const std::string_view &uri) {
+Request request_path(std::string_view uri) {
   urlparse_url u;
   Request req;
 
   if (auto rv = urlparse_parse_url(uri.data(), uri.size(),
                                    /* is_connect = */ 0, &u);
       rv != 0) {
-    return req;
+    return {};
   }
 
   if (u.field_set & (1 << URLPARSE_PATH)) {
@@ -127,15 +127,24 @@ Request request_path(const std::string_view &uri) {
     if (req.path.find('%') != std::string::npos) {
       req.path = util::percent_decode(req.path);
     }
-    if (!req.path.empty() && req.path.back() == '/') {
+
+    assert(!req.path.empty());
+
+    if (req.path[0] != '/') {
+      return {};
+    }
+
+    if (req.path.back() == '/') {
       req.path += "index.html";
     }
-  } else {
-    req.path = "/index.html";
-  }
 
-  req.path = util::normalize_path(req.path);
-  if (req.path == "/") {
+    auto maybe_norm_path = util::normalize_path(req.path);
+    if (!maybe_norm_path) {
+      return {};
+    }
+
+    req.path = std::move(*maybe_norm_path);
+  } else {
     req.path = "/index.html";
   }
 
@@ -158,21 +167,21 @@ namespace {
 std::unordered_map file_cache;
 } // namespace
 
-std::pair Stream::open_file(const std::string &path) {
+std::expected Stream::open_file(const std::string &path) {
   auto it = file_cache.find(path);
   if (it != std::ranges::end(file_cache)) {
-    return {(*it).second, 0};
+    return (*it).second;
   }
 
   auto fd = open(path.c_str(), O_RDONLY);
   if (fd == -1) {
-    return {{}, -1};
+    return std::unexpected{Error::SYSCALL};
   }
 
   struct stat st{};
   if (fstat(fd, &st) != 0) {
     close(fd);
-    return {{}, -1};
+    return std::unexpected{Error::SYSCALL};
   }
 
   FileEntry fe;
@@ -186,16 +195,16 @@ std::pair Stream::open_file(const std::string &path) {
     if (fe.len) {
       fe.map = mmap(nullptr, fe.len, PROT_READ, MAP_SHARED, fd, 0);
       if (fe.map == MAP_FAILED) {
-        std::cerr << "mmap: " << strerror(errno) << std::endl;
+        std::println(stderr, "mmap: {}", strerror(errno));
         close(fd);
-        return {{}, -1};
+        return std::unexpected{Error::SYSCALL};
       }
     }
   }
 
   file_cache.emplace(path, fe);
 
-  return {std::move(fe), 0};
+  return fe;
 }
 
 void Stream::map_file(const FileEntry &fe) {
@@ -203,7 +212,7 @@ void Stream::map_file(const FileEntry &fe) {
   respbuf.end = respbuf.last = respbuf.begin + fe.len;
 }
 
-int Stream::send_status_response(unsigned int status_code) {
+void Stream::send_status_response(unsigned int status_code) {
   status_resp_body = make_status_body(status_code);
 
   respbuf.begin = respbuf.pos =
@@ -212,30 +221,32 @@ int Stream::send_status_response(unsigned int status_code) {
 
   handler->add_sendq(this);
   handler->shutdown_read(stream_id, 0);
-
-  return 0;
 }
 
-int Stream::start_response() {
+void Stream::start_response() {
   if (uri.empty()) {
-    return send_status_response(400);
+    send_status_response(400);
+    return;
   }
 
   auto req = request_path(uri);
   if (req.path.empty()) {
-    return send_status_response(400);
+    send_status_response(400);
+    return;
   }
 
   auto path = config.htdocs + req.path;
-  auto [fe, rv] = open_file(path);
-  if (rv != 0) {
+  auto maybe_fe = open_file(path);
+  if (!maybe_fe) {
     send_status_response(404);
-    return 0;
+    return;
   }
 
+  const auto &fe = *maybe_fe;
+
   if (fe.flags & FILE_ENTRY_TYPE_DIR) {
     send_status_response(308);
-    return 0;
+    return;
   }
 
   map_file(fe);
@@ -249,8 +260,6 @@ int Stream::start_response() {
   }
 
   handler->add_sendq(this);
-
-  return 0;
 }
 
 namespace {
@@ -258,11 +267,7 @@ void writecb(struct ev_loop *loop, ev_io *w, int revents) {
   auto h = static_cast(w->data);
   auto s = h->server();
 
-  switch (h->on_write()) {
-  case 0:
-  case NETWORK_ERR_CLOSE_WAIT:
-    return;
-  default:
+  if (auto rv = h->on_write(); !rv && rv.error() != Error::CLOSE_WAIT) {
     s->remove(h);
   }
 }
@@ -276,7 +281,7 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
 
   if (ngtcp2_conn_in_closing_period(conn)) {
     if (!config.quiet) {
-      std::cerr << "Closing Period is over" << std::endl;
+      std::println(stderr, "Closing Period is over");
     }
 
     s->remove(h);
@@ -284,7 +289,7 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
   }
   if (ngtcp2_conn_in_draining_period(conn)) {
     if (!config.quiet) {
-      std::cerr << "Draining Period is over" << std::endl;
+      std::println(stderr, "Draining Period is over");
     }
 
     s->remove(h);
@@ -297,33 +302,24 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
 
 namespace {
 void timeoutcb(struct ev_loop *loop, ev_timer *w, int revents) {
-  int rv;
-
   auto h = static_cast(w->data);
   auto s = h->server();
 
   if (!config.quiet) {
-    std::cerr << "Timer expired" << std::endl;
+    std::println(stderr, "Timer expired");
   }
 
-  rv = h->handle_expiry();
-  if (rv != 0) {
-    goto fail;
-  }
-
-  h->signal_write();
-
-  return;
+  if (auto rv = h->handle_expiry(); !rv) {
+    if (rv.error() == Error::CLOSE_WAIT) {
+      ev_timer_stop(loop, w);
+    } else {
+      s->remove(h);
+    }
 
-fail:
-  switch (rv) {
-  case NETWORK_ERR_CLOSE_WAIT:
-    ev_timer_stop(loop, w);
-    return;
-  default:
-    s->remove(h);
     return;
   }
+
+  h->signal_write();
 }
 } // namespace
 
@@ -345,7 +341,7 @@ Handler::Handler(struct ev_loop *loop, Server *server)
 
 Handler::~Handler() {
   if (!config.quiet) {
-    std::cerr << scid_ << " Closing QUIC connection " << std::endl;
+    std::println(stderr, "{} Closing QUIC connection", scid_);
   }
 
   ev_timer_stop(loop_, &timer_);
@@ -364,7 +360,7 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_completed(conn, user_data);
   }
 
-  if (h->handshake_completed() != 0) {
+  if (!h->handshake_completed()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -372,19 +368,19 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
 }
 } // namespace
 
-int Handler::handshake_completed() {
+std::expected Handler::handshake_completed() {
   if (!config.quiet) {
-    std::cerr << "Negotiated cipher suite is " << tls_session_.get_cipher_name()
-              << std::endl;
+    std::println(stderr, "Negotiated cipher suite is {}",
+                 tls_session_.get_cipher_name());
     if (auto group = tls_session_.get_negotiated_group(); !group.empty()) {
-      std::cerr << "Negotiated group is " << group << std::endl;
+      std::println(stderr, "Negotiated group is {}", group);
     }
-    std::cerr << "Negotiated ALPN is " << tls_session_.get_selected_alpn()
-              << std::endl;
+    std::println(stderr, "Negotiated ALPN is {}",
+                 tls_session_.get_selected_alpn());
   }
 
-  if (tls_session_.send_session_ticket() != 0) {
-    std::cerr << "Unable to send session ticket" << std::endl;
+  if (!tls_session_.send_session_ticket()) {
+    std::println(stderr, "Unable to send session ticket");
   }
 
   std::array token;
@@ -396,21 +392,21 @@ int Handler::handshake_completed() {
     token.data(), config.static_secret.data(), config.static_secret.size(),
     path->remote.addr, path->remote.addrlen, t);
   if (tokenlen < 0) {
-    std::cerr << "Unable to generate token" << std::endl;
+    std::println(stderr, "Unable to generate token");
 
-    return 0;
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = ngtcp2_conn_submit_new_token(conn_, token.data(),
                                              as_unsigned(tokenlen));
       rv != 0) {
-    std::cerr << "ngtcp2_conn_submit_new_token: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_submit_new_token: {}",
+                 ngtcp2_strerror(rv));
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -448,7 +444,7 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
                      void *user_data, void *stream_user_data) {
   auto h = static_cast(user_data);
 
-  if (h->recv_stream_data(flags, stream_id, {data, datalen}) != 0) {
+  if (!h->recv_stream_data(flags, stream_id, {data, datalen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -461,15 +457,15 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id,
                              uint64_t offset, uint64_t datalen, void *user_data,
                              void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->acked_stream_data_offset(stream_id, offset, datalen) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+
+  h->acked_stream_data_offset(stream_id, offset, datalen);
+
   return 0;
 }
 } // namespace
 
-int Handler::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
-                                      uint64_t datalen) {
+void Handler::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                                       uint64_t datalen) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
@@ -477,8 +473,6 @@ int Handler::acked_stream_data_offset(int64_t stream_id, uint64_t offset,
 
   assert(static_cast(stream->respbuf.end - stream->respbuf.begin) >=
          offset + datalen);
-
-  return 0;
 }
 
 namespace {
@@ -504,17 +498,16 @@ int stream_close(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
                  uint64_t app_error_code, void *user_data,
                  void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->on_stream_close(stream_id, app_error_code) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+
+  h->on_stream_close(stream_id, app_error_code);
+
   return 0;
 }
 } // namespace
 
 namespace {
 void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
-  auto rv = util::generate_secure_random({dest, destlen});
-  if (rv != 0) {
+  if (!util::generate_secure_random({dest, destlen})) {
     assert(0);
     abort();
   }
@@ -522,16 +515,17 @@ void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
 } // namespace
 
 namespace {
-int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token,
-                          size_t cidlen, void *user_data) {
-  if (util::generate_secure_random({cid->data, cidlen}) != 0) {
+int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid,
+                          ngtcp2_stateless_reset_token *token, size_t cidlen,
+                          void *user_data) {
+  if (!util::generate_secure_random({cid->data, cidlen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
   cid->datalen = cidlen;
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token, config.static_secret.data(), config.static_secret.size(), cid) !=
-      0) {
+        token->data, config.static_secret.data(), config.static_secret.size(),
+        cid) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -559,9 +553,8 @@ int update_key(ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
                const uint8_t *current_tx_secret, size_t secretlen,
                void *user_data) {
   auto h = static_cast(user_data);
-  if (h->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
-                    tx_iv, current_rx_secret, current_tx_secret,
-                    secretlen) != 0) {
+  if (!h->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
+                     tx_iv, current_rx_secret, current_tx_secret, secretlen)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
@@ -588,7 +581,7 @@ int path_validation(ngtcp2_conn *conn, uint32_t flags, const ngtcp2_path *path,
     token.data(), config.static_secret.data(), config.static_secret.size(),
     path->remote.addr, path->remote.addrlen, t);
   if (tokenlen < 0) {
-    std::cerr << "Unable to generate token" << std::endl;
+    std::println(stderr, "Unable to generate token");
 
     return 0;
   }
@@ -596,8 +589,8 @@ int path_validation(ngtcp2_conn *conn, uint32_t flags, const ngtcp2_path *path,
   if (auto rv =
         ngtcp2_conn_submit_new_token(conn, token.data(), as_unsigned(tokenlen));
       rv != 0) {
-    std::cerr << "ngtcp2_conn_submit_new_token: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_submit_new_token: {}",
+                 ngtcp2_strerror(rv));
 
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
@@ -611,14 +604,14 @@ int extend_max_stream_data(ngtcp2_conn *conn, int64_t stream_id,
                            uint64_t max_data, void *user_data,
                            void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->extend_max_stream_data(stream_id, max_data) != 0) {
-    return NGTCP2_ERR_CALLBACK_FAILURE;
-  }
+
+  h->extend_max_stream_data(stream_id, max_data);
+
   return 0;
 }
 } // namespace
 
-int Handler::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
+void Handler::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
   auto it = streams_.find(stream_id);
   assert(it != std::ranges::end(streams_));
   auto &stream = (*it).second;
@@ -626,8 +619,6 @@ int Handler::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
   if (nghttp3_buf_len(&stream->respbuf)) {
     sendq_.emplace(stream.get());
   }
-
-  return 0;
 }
 
 namespace {
@@ -643,11 +634,12 @@ void Handler::write_qlog(const void *data, size_t datalen) {
   fwrite(data, 1, datalen, qlog_);
 }
 
-int Handler::init(const Endpoint &ep, const Address &local_addr,
-                  const Address &remote_addr, const ngtcp2_cid *dcid,
-                  const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
-                  std::span token, ngtcp2_token_type token_type,
-                  uint32_t version, TLSServerContext &tls_ctx) {
+std::expected
+Handler::init(const Endpoint &ep, const Address &local_addr,
+              const Address &remote_addr, const ngtcp2_cid *dcid,
+              const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
+              std::span token, ngtcp2_token_type token_type,
+              uint32_t version, TLSServerContext &tls_ctx) {
   auto callbacks = ngtcp2_callbacks{
     .recv_client_initial = ngtcp2_crypto_recv_client_initial_cb,
     .recv_crypto_data = ::recv_crypto_data,
@@ -660,21 +652,22 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
     .stream_open = stream_open,
     .stream_close = stream_close,
     .rand = rand,
-    .get_new_connection_id = get_new_connection_id,
     .remove_connection_id = remove_connection_id,
     .update_key = ::update_key,
     .path_validation = path_validation,
     .extend_max_stream_data = ::extend_max_stream_data,
     .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb,
     .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
-    .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb,
     .version_negotiation = ngtcp2_crypto_version_negotiation_cb,
+    .get_new_connection_id2 = get_new_connection_id,
+    .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb,
   };
 
   scid_.datalen = NGTCP2_SV_SCIDLEN;
-  if (util::generate_secure_random({scid_.data, scid_.datalen}) != 0) {
-    std::cerr << "Could not generate connection ID" << std::endl;
-    return -1;
+  if (auto rv = util::generate_secure_random({scid_.data, scid_.datalen});
+      !rv) {
+    std::println(stderr, "Could not generate connection ID");
+    return rv;
   }
 
   ngtcp2_settings settings;
@@ -702,9 +695,9 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
     path += ".sqlog";
     qlog_ = fopen(path.c_str(), "w");
     if (qlog_ == nullptr) {
-      std::cerr << "Could not open qlog file " << std::quoted(path) << ": "
-                << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "Could not open qlog file {}: {}", path,
+                   strerror(errno));
+      return std::unexpected{Error::IO};
     }
     settings.qlog_write = ::write_qlog;
   }
@@ -760,7 +753,7 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
   if (ngtcp2_crypto_generate_stateless_reset_token(
         params.stateless_reset_token, config.static_secret.data(),
         config.static_secret.size(), &scid_) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.preferred_ipv4_addr.empty() ||
@@ -779,20 +772,21 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
       params.preferred_addr.ipv6_present = 1;
     }
 
-    if (util::generate_secure_random(
-          params.preferred_addr.stateless_reset_token) != 0) {
-      std::cerr << "Could not generate preferred address stateless reset token"
-                << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random(
+          params.preferred_addr.stateless_reset_token);
+        !rv) {
+      std::println(
+        stderr, "Could not generate preferred address stateless reset token");
+      return rv;
     }
 
     params.preferred_addr.cid.datalen = NGTCP2_SV_SCIDLEN;
-    if (util::generate_secure_random({params.preferred_addr.cid.data,
-                                      params.preferred_addr.cid.datalen}) !=
-        0) {
-      std::cerr << "Could not generate preferred address connection ID"
-                << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random(
+          {params.preferred_addr.cid.data, params.preferred_addr.cid.datalen});
+        !rv) {
+      std::println(stderr,
+                   "Could not generate preferred address connection ID");
+      return rv;
     }
   }
 
@@ -805,12 +799,12 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
         ngtcp2_conn_server_new(&conn_, dcid, &scid_, &path, version, &callbacks,
                                &settings, ¶ms, nullptr, this);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_server_new: " << ngtcp2_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_server_new: {}", ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  if (tls_session_.init(tls_ctx, this) != 0) {
-    return -1;
+  if (auto rv = tls_session_.init(tls_ctx, this); !rv) {
+    return rv;
   }
 
   tls_session_.enable_keylog();
@@ -819,12 +813,14 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
 
   ev_io_set(&wev_, ep.fd, EV_WRITE);
 
-  return 0;
+  return {};
 }
 
-int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
-                       const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                       std::span data) {
+std::expected Handler::feed_data(const Endpoint &ep,
+                                              const Address &local_addr,
+                                              const Address &remote_addr,
+                                              const ngtcp2_pkt_info *pi,
+                                              std::span data) {
   auto path = ngtcp2_path{
     .local = as_ngtcp2_addr(local_addr),
     .remote = as_ngtcp2_addr(remote_addr),
@@ -834,15 +830,15 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
   if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data.data(), data.size(),
                                      util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr, "ngtcp2_conn_read_pkt: {}", ngtcp2_strerror(rv));
     switch (rv) {
     case NGTCP2_ERR_DRAINING:
       start_draining_period();
-      return NETWORK_ERR_CLOSE_WAIT;
+      return std::unexpected{Error::CLOSE_WAIT};
     case NGTCP2_ERR_RETRY:
-      return NETWORK_ERR_RETRY;
+      return std::unexpected{Error::RETRY_CONN};
     case NGTCP2_ERR_DROP_CONN:
-      return NETWORK_ERR_DROP_CONN;
+      return std::unexpected{Error::DROP_CONN};
     case NGTCP2_ERR_CRYPTO:
       if (!last_error_.error_code) {
         ngtcp2_ccerr_set_tls_alert(
@@ -857,58 +853,57 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
     return handle_error();
   }
 
-  return 0;
+  return {};
 }
 
-int Handler::on_read(const Endpoint &ep, const Address &local_addr,
-                     const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                     std::span data) {
-  if (auto rv = feed_data(ep, local_addr, remote_addr, pi, data); rv != 0) {
+std::expected Handler::on_read(const Endpoint &ep,
+                                            const Address &local_addr,
+                                            const Address &remote_addr,
+                                            const ngtcp2_pkt_info *pi,
+                                            std::span data) {
+  if (auto rv = feed_data(ep, local_addr, remote_addr, pi, data); !rv) {
     return rv;
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
-int Handler::handle_expiry() {
+std::expected Handler::handle_expiry() {
   auto now = util::timestamp();
   if (auto rv = ngtcp2_conn_handle_expiry(conn_, now); rv != 0) {
-    std::cerr << "ngtcp2_conn_handle_expiry: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_handle_expiry: {}", ngtcp2_strerror(rv));
     ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
     return handle_error();
   }
 
-  return 0;
+  return {};
 }
 
-int Handler::on_write() {
+std::expected Handler::on_write() {
   if (ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   if (tx_.send_blocked) {
-    if (auto rv = send_blocked_packet(); rv != 0) {
-      return rv;
-    }
+    send_blocked_packet();
 
     if (tx_.send_blocked) {
-      return 0;
+      return {};
     }
   }
 
   ev_io_stop(loop_, &wev_);
 
-  if (auto rv = write_streams(); rv != 0) {
+  if (auto rv = write_streams(); !rv) {
     return rv;
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -966,8 +961,8 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
 
       assert(ndatalen == -1);
 
-      std::cerr << "ngtcp2_conn_writev_stream: "
-                << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+      std::println(stderr, "ngtcp2_conn_writev_stream: {}",
+                   ngtcp2_strerror(static_cast(nwrite)));
       ngtcp2_ccerr_set_liberr(&last_error_, static_cast(nwrite), nullptr,
                               0);
 
@@ -985,7 +980,7 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
   }
 }
 
-int Handler::write_streams() {
+std::expected Handler::write_streams() {
   ngtcp2_path_storage ps;
   ngtcp2_pkt_info pi;
   size_t gso_size;
@@ -1005,31 +1000,31 @@ int Handler::write_streams() {
   ngtcp2_conn_update_pkt_tx_time(conn_, ts);
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   send_packet(ps.path, pi.ecn, txbuf.first(static_cast(nwrite)),
               gso_size);
 
-  return 0;
+  return {};
 }
 
-int Handler::send_packet(const ngtcp2_path &path, unsigned int ecn,
-                         std::span data, size_t gso_size) {
+std::expected Handler::send_packet(const ngtcp2_path &path,
+                                                unsigned int ecn,
+                                                std::span data,
+                                                size_t gso_size) {
   auto &ep = *static_cast(path.user_data);
-  auto [rest, rv] = server_->send_packet(ep, no_gso_, path.local, path.remote,
-                                         ecn, data, gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = server_->send_packet(ep, no_gso_, path.local, path.remote, ecn,
+                                   data, gso_size);
+  if (!rest.empty()) {
     on_send_blocked(path, ecn, rest, gso_size);
 
     start_wev_endpoint(ep);
 
-    return rv;
+    return std::unexpected{Error::SEND_BLOCKED};
   }
 
-  return 0;
+  return {};
 }
 
 void Handler::on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
@@ -1064,27 +1059,23 @@ void Handler::start_wev_endpoint(const Endpoint &ep) {
   ev_io_start(loop_, &wev_);
 }
 
-int Handler::send_blocked_packet() {
+void Handler::send_blocked_packet() {
   assert(tx_.send_blocked);
 
   auto &p = tx_.blocked;
 
-  auto [rest, rv] = server_->send_packet(
+  auto rest = server_->send_packet(
     *p.endpoint, no_gso_, as_ngtcp2_addr(p.local_addr),
     as_ngtcp2_addr(p.remote_addr), p.ecn, p.data, p.gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  if (!rest.empty()) {
     p.data = rest;
 
     start_wev_endpoint(*p.endpoint);
 
-    return 0;
+    return;
   }
 
   tx_.send_blocked = false;
-
-  return 0;
 }
 
 void Handler::signal_write() { ev_io_start(loop_, &wev_); }
@@ -1098,15 +1089,15 @@ void Handler::start_draining_period() {
   ev_timer_again(loop_, &timer_);
 
   if (!config.quiet) {
-    std::cerr << "Draining period has started (" << timer_.repeat << " seconds)"
-              << std::endl;
+    std::println(stderr, "Draining period has started ({:.9f} seconds)",
+                 timer_.repeat);
   }
 }
 
-int Handler::start_closing_period() {
+std::expected Handler::start_closing_period() {
   if (!conn_ || ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   ev_io_stop(loop_, &wev_);
@@ -1117,8 +1108,8 @@ int Handler::start_closing_period() {
   ev_timer_again(loop_, &timer_);
 
   if (!config.quiet) {
-    std::cerr << "Closing period has started (" << timer_.repeat << " seconds)"
-              << std::endl;
+    std::println(stderr, "Closing period has started ({:.9f} seconds)",
+                 timer_.repeat);
   }
 
   conn_closebuf_ = std::make_unique(NGTCP2_MAX_UDP_PAYLOAD_SIZE);
@@ -1132,43 +1123,43 @@ int Handler::start_closing_period() {
     conn_, &ps.path, &pi, conn_closebuf_->wpos(), conn_closebuf_->left(),
     &last_error_, util::timestamp());
   if (n < 0) {
-    std::cerr << "ngtcp2_conn_write_connection_close: "
-              << ngtcp2_strerror(static_cast(n)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_write_connection_close: {}",
+                 ngtcp2_strerror(static_cast(n)));
+    return std::unexpected{Error::QUIC};
   }
 
   if (n == 0) {
-    return 0;
+    return {};
   }
 
   conn_closebuf_->push(as_unsigned(n));
 
-  return 0;
+  return {};
 }
 
-int Handler::handle_error() {
+std::expected Handler::handle_error() {
   if (last_error_.type == NGTCP2_CCERR_TYPE_IDLE_CLOSE) {
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
-  if (start_closing_period() != 0) {
-    return -1;
+  if (auto rv = start_closing_period(); !rv) {
+    return rv;
   }
 
   if (ngtcp2_conn_in_draining_period(conn_)) {
-    return NETWORK_ERR_CLOSE_WAIT;
+    return std::unexpected{Error::CLOSE_WAIT};
   }
 
-  if (auto rv = send_conn_close(); rv != NETWORK_ERR_OK) {
+  if (auto rv = send_conn_close(); !rv) {
     return rv;
   }
 
-  return NETWORK_ERR_CLOSE_WAIT;
+  return std::unexpected{Error::CLOSE_WAIT};
 }
 
-int Handler::send_conn_close() {
+std::expected Handler::send_conn_close() {
   if (!config.quiet) {
-    std::cerr << "Closing Period: TX CONNECTION_CLOSE" << std::endl;
+    std::println(stderr, "Closing Period: TX CONNECTION_CLOSE");
   }
 
   assert(conn_closebuf_ && conn_closebuf_->size());
@@ -1182,10 +1173,10 @@ int Handler::send_conn_close() {
                               /* ecn = */ 0, conn_closebuf_->data());
 }
 
-int Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
-                             const Address &remote_addr,
-                             const ngtcp2_pkt_info *pi,
-                             std::span data) {
+std::expected
+Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
+                         const Address &remote_addr, const ngtcp2_pkt_info *pi,
+                         std::span data) {
   assert(conn_closebuf_ && conn_closebuf_->size());
 
   close_wait_.bytes_recv += data.size();
@@ -1194,20 +1185,20 @@ int Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
   if (close_wait_.num_pkts_recv < close_wait_.next_pkts_recv ||
       close_wait_.bytes_recv * 3 <
         close_wait_.bytes_sent + conn_closebuf_->size()) {
-    return 0;
+    return {};
   }
 
-  auto rv = server_->send_packet(ep, as_ngtcp2_addr(local_addr),
-                                 as_ngtcp2_addr(remote_addr),
-                                 /* ecn = */ 0, conn_closebuf_->data());
-  if (rv != 0) {
+  if (auto rv = server_->send_packet(ep, as_ngtcp2_addr(local_addr),
+                                     as_ngtcp2_addr(remote_addr),
+                                     /* ecn = */ 0, conn_closebuf_->data());
+      !rv) {
     return rv;
   }
 
   close_wait_.bytes_sent += conn_closebuf_->size();
   close_wait_.next_pkts_recv *= 2;
 
-  return 0;
+  return {};
 }
 
 void Handler::update_timer() {
@@ -1217,8 +1208,7 @@ void Handler::update_timer() {
   if (expiry <= now) {
     if (!config.quiet) {
       auto t = static_cast(now - expiry) / NGTCP2_SECONDS;
-      std::cerr << "Timer has already expired: " << std::fixed << t << "s"
-                << std::defaultfloat << std::endl;
+      std::println(stderr, "Timer has already expired: {:.9f}s", t);
     }
 
     ev_feed_event(loop_, &timer_, EV_TIMER);
@@ -1228,8 +1218,7 @@ void Handler::update_timer() {
 
   auto t = static_cast(expiry - now) / NGTCP2_SECONDS;
   if (!config.quiet) {
-    std::cerr << "Set timer=" << std::fixed << t << "s" << std::defaultfloat
-              << std::endl;
+    std::println(stderr, "Set timer={:.9f}s", t);
   }
   timer_.repeat = t;
   ev_timer_again(loop_, &timer_);
@@ -1257,9 +1246,7 @@ namespace {
 int on_msg_complete(http_parser *htp) {
   auto s = static_cast(htp->data);
   s->eos = true;
-  if (s->start_response() != 0) {
-    return -1;
-  }
+  s->start_response();
   return 0;
 }
 } // namespace
@@ -1270,8 +1257,9 @@ auto htp_settings = http_parser_settings{
   .on_message_complete = on_msg_complete,
 };
 
-int Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
-                              std::span data) {
+std::expected
+Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
+                          std::span data) {
   if (!config.quiet && !config.no_quic_dump) {
     debug::print_stream_data(stream_id, data);
   }
@@ -1288,10 +1276,10 @@ int Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
       if (auto rv = ngtcp2_conn_shutdown_stream(conn_, 0, stream_id,
                                                 /* app error code */ 1);
           rv != 0) {
-        std::cerr << "ngtcp2_conn_shutdown_stream: " << ngtcp2_strerror(rv)
-                  << std::endl;
+        std::println(stderr, "ngtcp2_conn_shutdown_stream: {}",
+                     ngtcp2_strerror(rv));
         ngtcp2_ccerr_set_liberr(&last_error_, NGTCP2_ERR_INTERNAL, nullptr, 0);
-        return -1;
+        return std::unexpected{Error::QUIC};
       }
     }
   }
@@ -1299,14 +1287,15 @@ int Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
   ngtcp2_conn_extend_max_stream_offset(conn_, stream_id, data.size());
   ngtcp2_conn_extend_max_offset(conn_, data.size());
 
-  return 0;
+  return {};
 }
 
-int Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                        ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                        ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                        const uint8_t *current_rx_secret,
-                        const uint8_t *current_tx_secret, size_t secretlen) {
+std::expected
+Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+                    ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+                    ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+                    const uint8_t *current_rx_secret,
+                    const uint8_t *current_tx_secret, size_t secretlen) {
   auto crypto_ctx = ngtcp2_conn_get_crypto_ctx(conn_);
   auto aead = &crypto_ctx->aead;
   auto keylen = ngtcp2_crypto_aead_keylen(aead);
@@ -1320,26 +1309,26 @@ int Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
                                rx_key.data(), rx_iv, tx_aead_ctx, tx_key.data(),
                                tx_iv, current_rx_secret, current_tx_secret,
                                secretlen) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet && config.show_secret) {
-    std::cerr << "application_traffic rx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic rx secret {}", nkey_update_);
     debug::print_secrets({rx_secret, secretlen}, {rx_key.data(), keylen},
                          {rx_iv, ivlen});
-    std::cerr << "application_traffic tx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic tx secret {}", nkey_update_);
     debug::print_secrets({tx_secret, secretlen}, {tx_key.data(), keylen},
                          {tx_iv, ivlen});
   }
 
-  return 0;
+  return {};
 }
 
 Server *Handler::server() const { return server_; }
 
-int Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
+void Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
   if (!config.quiet) {
-    std::cerr << "QUIC stream " << stream_id << " closed" << std::endl;
+    std::println(stderr, "QUIC stream {:#x} closed", stream_id);
   }
 
   auto it = streams_.find(stream_id);
@@ -1349,8 +1338,8 @@ int Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
   sendq_.erase(stream.get());
 
   if (!config.quiet) {
-    std::cerr << "HTTP stream " << stream_id << " closed with error code "
-              << app_error_code << std::endl;
+    std::println(stderr, "HTTP stream {:#x} closed with error code {:#x}",
+                 stream_id, app_error_code);
   }
 
   streams_.erase(it);
@@ -1359,8 +1348,6 @@ int Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
     assert(!ngtcp2_conn_is_local_stream(conn_, stream_id));
     ngtcp2_conn_extend_max_streams_bidi(conn_, 1);
   }
-
-  return 0;
 }
 
 void Handler::shutdown_read(int64_t stream_id, uint64_t app_error_code) {
@@ -1432,8 +1419,8 @@ void Server::close() {
 }
 
 namespace {
-int create_sock(Address &local_addr, const char *addr, const char *port,
-                int family) {
+std::expected create_sock(Address &local_addr, const char *addr,
+                                      const char *port, int family) {
   addrinfo hints{
     .ai_flags = AI_PASSIVE,
     .ai_family = family,
@@ -1447,8 +1434,8 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   }
 
   if (auto rv = getaddrinfo(addr, port, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -1456,12 +1443,14 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   int fd = -1;
 
   for (rp = res; rp; rp = rp->ai_next) {
-    fd = util::create_nonblock_socket(rp->ai_family, rp->ai_socktype,
-                                      rp->ai_protocol);
-    if (fd == -1) {
+    auto maybe_fd = util::create_nonblock_socket(rp->ai_family, rp->ai_socktype,
+                                                 rp->ai_protocol);
+    if (!maybe_fd) {
       continue;
     }
 
+    fd = *maybe_fd;
+
     if (rp->ai_family == AF_INET6) {
       if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val,
                      static_cast(sizeof(val))) == -1) {
@@ -1499,16 +1488,16 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   }
 
   if (!rp) {
-    std::cerr << "Could not bind" << std::endl;
-    return -1;
+    std::println(stderr, "Could not bind");
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
+    std::println(stderr, "getsockname: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
@@ -1519,61 +1508,65 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
 } // namespace
 
 namespace {
-int add_endpoint(std::vector &endpoints, const char *addr,
-                 const char *port, int af) {
+std::expected add_endpoint(std::vector &endpoints,
+                                        const char *addr, const char *port,
+                                        int af) {
   Address dest;
-  auto fd = create_sock(dest, addr, port, af);
-  if (fd == -1) {
-    return -1;
+  auto maybe_fd = create_sock(dest, addr, port, af);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
   endpoints.emplace_back();
   auto &ep = endpoints.back();
   ep.addr = dest;
-  ep.fd = fd;
+  ep.fd = *maybe_fd;
   ev_io_init(&ep.rev, sreadcb, 0, EV_READ);
   ev_set_priority(&ep.rev, EV_MAXPRI);
 
-  return 0;
+  return {};
 }
 } // namespace
 
 namespace {
-int add_endpoint(std::vector &endpoints, const Address &addr) {
+std::expected add_endpoint(std::vector &endpoints,
+                                        const Address &addr) {
   auto family = addr.family();
 
-  auto fd = util::create_nonblock_socket(family, SOCK_DGRAM, 0);
-  if (fd == -1) {
-    std::cerr << "socket: " << strerror(errno) << std::endl;
-    return -1;
+  auto maybe_fd = util::create_nonblock_socket(family, SOCK_DGRAM, 0);
+  if (!maybe_fd) {
+    std::println(stderr, "socket: {}", strerror(errno));
+    return std::unexpected{maybe_fd.error()};
   }
 
+  auto fd = *maybe_fd;
+
   int val = 1;
   if (family == AF_INET6) {
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
       close(fd);
-      return -1;
+      return std::unexpected{Error::SYSCALL};
     }
 
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
       close(fd);
-      return -1;
+      return std::unexpected{Error::SYSCALL};
     }
   } else if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &val,
                         static_cast(sizeof(val))) == -1) {
-    std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+    std::println(stderr, "setsockopt: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val,
                  static_cast(sizeof(val))) == -1) {
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   fd_set_recv_ecn(fd, family);
@@ -1582,9 +1575,9 @@ int add_endpoint(std::vector &endpoints, const Address &addr) {
   fd_set_udp_gro(fd);
 
   if (bind(fd, addr.as_sockaddr(), addr.size()) == -1) {
-    std::cerr << "bind: " << strerror(errno) << std::endl;
+    std::println(stderr, "bind: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   endpoints.emplace_back(Endpoint{});
@@ -1594,33 +1587,44 @@ int add_endpoint(std::vector &endpoints, const Address &addr) {
   ev_io_init(&ep.rev, sreadcb, 0, EV_READ);
   ev_set_priority(&ep.rev, EV_MAXPRI);
 
-  return 0;
+  return {};
 }
 } // namespace
 
-int Server::init(const char *addr, const char *port) {
+std::expected Server::init(const char *addr, const char *port) {
   endpoints_.reserve(4);
 
   auto ready = false;
-  if (!util::numeric_host(addr, AF_INET6) &&
-      add_endpoint(endpoints_, addr, port, AF_INET) == 0) {
-    ready = true;
+  auto error = Error::INTERNAL;
+
+  if (!util::numeric_host(addr, AF_INET6)) {
+    if (auto rv = add_endpoint(endpoints_, addr, port, AF_INET); !rv) {
+      error = rv.error();
+    } else {
+      ready = true;
+    }
   }
-  if (!util::numeric_host(addr, AF_INET) &&
-      add_endpoint(endpoints_, addr, port, AF_INET6) == 0) {
-    ready = true;
+  if (!util::numeric_host(addr, AF_INET)) {
+    if (auto rv = add_endpoint(endpoints_, addr, port, AF_INET6); !rv) {
+      error = rv.error();
+    } else {
+      ready = true;
+    }
   }
   if (!ready) {
-    return -1;
+    return std::unexpected{error};
   }
 
-  if (!config.preferred_ipv4_addr.empty() &&
-      add_endpoint(endpoints_, config.preferred_ipv4_addr) != 0) {
-    return -1;
+  if (!config.preferred_ipv4_addr.empty()) {
+    if (auto rv = add_endpoint(endpoints_, config.preferred_ipv4_addr); !rv) {
+      return rv;
+    }
   }
-  if (!config.preferred_ipv6_addr.empty() &&
-      add_endpoint(endpoints_, config.preferred_ipv6_addr) != 0) {
-    return -1;
+
+  if (!config.preferred_ipv6_addr.empty()) {
+    if (auto rv = add_endpoint(endpoints_, config.preferred_ipv6_addr); !rv) {
+      return rv;
+    }
   }
 
   for (auto &ep : endpoints_) {
@@ -1634,10 +1638,10 @@ int Server::init(const char *addr, const char *port) {
 
   ev_signal_start(loop_, &sigintev_);
 
-  return 0;
+  return {};
 }
 
-int Server::on_read(const Endpoint &ep) {
+void Server::on_read(const Endpoint &ep) {
   sockaddr_storage ss;
   std::array buf;
   size_t pktcnt = 0;
@@ -1663,7 +1667,7 @@ int Server::on_read(const Endpoint &ep) {
   for (; pktcnt < MAX_RECV_PKTS;) {
     if (util::recv_pkt_time_threshold_exceeded(
           config.cc_algo == NGTCP2_CC_ALGO_BBR, start, pktcnt)) {
-      return 0;
+      return;
     }
 
     msg.msg_namelen = sizeof(ss);
@@ -1672,9 +1676,9 @@ int Server::on_read(const Endpoint &ep) {
     auto nread = recvmsg(ep.fd, &msg, 0);
     if (nread == -1) {
       if (!(errno == EAGAIN || errno == ENOTCONN)) {
-        std::cerr << "recvmsg: " << strerror(errno) << std::endl;
+        std::println(stderr, "recvmsg: {}", strerror(errno));
       }
-      return 0;
+      return;
     }
 
     // Packets less than 21 bytes never be a valid QUIC packet.
@@ -1697,7 +1701,7 @@ int Server::on_read(const Endpoint &ep) {
     auto local_addr = msghdr_get_local_addr(&msg, ss.ss_family);
     if (!local_addr) {
       ++pktcnt;
-      std::cerr << "Unable to obtain local address" << std::endl;
+      std::println(stderr, "Unable to obtain local address");
       continue;
     }
 
@@ -1717,11 +1721,11 @@ int Server::on_read(const Endpoint &ep) {
 
       if (!config.quiet) {
         std::array ifname;
-        std::cerr << "Received packet: local=" << util::straddr(*local_addr)
-                  << " remote=" << util::straddr(remote_addr) << " if="
-                  << if_indextoname(local_addr->ifindex, ifname.data())
-                  << " ecn=0x" << std::hex << static_cast(pi.ecn)
-                  << std::dec << " " << datalen << " bytes" << std::endl;
+        std::println(
+          stderr,
+          "Received packet: local={} remote={} if={} ecn={:#x} {} bytes",
+          util::straddr(*local_addr), util::straddr(remote_addr),
+          if_indextoname(local_addr->ifindex, ifname.data()), pi.ecn, datalen);
       }
 
       // Packets less than 21 bytes never be a valid QUIC packet.
@@ -1731,7 +1735,7 @@ int Server::on_read(const Endpoint &ep) {
 
       if (debug::packet_lost(config.rx_loss_prob)) {
         if (!config.quiet) {
-          std::cerr << "** Simulated incoming packet loss **" << std::endl;
+          std::println(stderr, "** Simulated incoming packet loss **");
         }
       } else {
         read_pkt(ep, *local_addr, remote_addr, &pi, {data.data(), datalen});
@@ -1740,8 +1744,6 @@ int Server::on_read(const Endpoint &ep) {
       data = data.subspan(datalen);
     }
   }
-
-  return 0;
 }
 
 void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
@@ -1760,8 +1762,9 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
                              remote_addr);
     return;
   default:
-    std::cerr << "Could not decode version and CID from QUIC packet header: "
-              << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr,
+                 "Could not decode version and CID from QUIC packet header: {}",
+                 ngtcp2_strerror(rv));
     return;
   }
 
@@ -1773,8 +1776,8 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
     if (auto rv = ngtcp2_accept(&hd, data.data(), data.size()); rv != 0) {
       if (!config.quiet) {
-        std::cerr << "Unexpected packet received: length=" << data.size()
-                  << std::endl;
+        std::println(stderr, "Unexpected packet received: length={}",
+                     data.size());
       }
 
       if (!(data[0] & 0x80) && data.size() >= NGTCP2_SV_SCIDLEN + 21) {
@@ -1792,7 +1795,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     assert(hd.type == NGTCP2_PKT_INITIAL);
 
     if (config.validate_addr || hd.tokenlen) {
-      std::cerr << "Perform stateless address validation" << std::endl;
+      std::println(stderr, "Perform stateless address validation");
       if (hd.tokenlen == 0) {
         send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
         return;
@@ -1806,23 +1809,23 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
       switch (hd.token[0]) {
       case NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY2:
-        switch (verify_retry_token(&ocid, &hd, remote_addr)) {
-        case 0:
-          pocid = &ocid;
-          token_type = NGTCP2_TOKEN_TYPE_RETRY;
-          break;
-        case -1:
-          send_stateless_connection_close(&hd, ep, local_addr, remote_addr);
-          return;
-        case 1:
+        if (auto rv = verify_retry_token(&ocid, &hd, remote_addr); !rv) {
+          if (rv.error() != Error::UNREADABLE_TOKEN) {
+            send_stateless_connection_close(&hd, ep, local_addr, remote_addr);
+
+            return;
+          }
+
           hd.token = nullptr;
           hd.tokenlen = 0;
-          break;
+        } else {
+          pocid = &ocid;
+          token_type = NGTCP2_TOKEN_TYPE_RETRY;
         }
 
         break;
       case NGTCP2_CRYPTO_TOKEN_MAGIC_REGULAR:
-        if (verify_token(&hd, remote_addr) != 0) {
+        if (!verify_token(&hd, remote_addr)) {
           if (config.validate_addr) {
             send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
             return;
@@ -1836,7 +1839,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
         break;
       default:
         if (!config.quiet) {
-          std::cerr << "Ignore unrecognized token" << std::endl;
+          std::println(stderr, "Ignore unrecognized token");
         }
         if (config.validate_addr) {
           send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
@@ -1850,23 +1853,20 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     }
 
     auto h = std::make_unique(loop_, this);
-    if (h->init(ep, local_addr, remote_addr, &hd.scid, &hd.dcid, pocid,
-                {hd.token, hd.tokenlen}, token_type, hd.version,
-                tls_ctx_) != 0) {
+    if (!h->init(ep, local_addr, remote_addr, &hd.scid, &hd.dcid, pocid,
+                 {hd.token, hd.tokenlen}, token_type, hd.version, tls_ctx_)) {
       return;
     }
 
-    switch (h->on_read(ep, local_addr, remote_addr, pi, data)) {
-    case 0:
-      break;
-    case NETWORK_ERR_RETRY:
-      send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
-      return;
-    default:
+    if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); !rv) {
+      if (rv.error() == Error::RETRY_CONN) {
+        send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
+      }
+
       return;
     }
 
-    if (h->on_write() != 0) {
+    if (!h->on_write()) {
       return;
     }
 
@@ -1891,7 +1891,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
   auto h = (*handler_it).second;
   auto conn = h->conn();
   if (ngtcp2_conn_in_closing_period(conn)) {
-    if (h->send_conn_close(ep, local_addr, remote_addr, pi, data) != 0) {
+    if (!h->send_conn_close(ep, local_addr, remote_addr, pi, data)) {
       remove(h);
     }
     return;
@@ -1900,8 +1900,8 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     return;
   }
 
-  if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); rv != 0) {
-    if (rv != NETWORK_ERR_CLOSE_WAIT) {
+  if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); !rv) {
+    if (rv.error() != Error::CLOSE_WAIT) {
       remove(h);
     }
     return;
@@ -1912,32 +1912,30 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
 namespace {
 uint32_t generate_reserved_version(const Address &addr, uint32_t version) {
-  uint32_t h = 0x811C9DC5u;
+  uint32_t h = 0x811C9DC5U;
   const uint8_t *p = reinterpret_cast(addr.as_sockaddr());
   const uint8_t *ep = p + addr.size();
   for (; p != ep; ++p) {
     h ^= *p;
-    h *= 0x01000193u;
+    h *= 0x01000193U;
   }
   version = htonl(version);
   p = (const uint8_t *)&version;
   ep = p + sizeof(version);
   for (; p != ep; ++p) {
     h ^= *p;
-    h *= 0x01000193u;
+    h *= 0x01000193U;
   }
-  h &= 0xf0f0f0f0u;
-  h |= 0x0a0a0a0au;
+  h &= 0xF0F0F0F0U;
+  h |= 0x0A0A0A0AU;
   return h;
 }
 } // namespace
 
-int Server::send_version_negotiation(uint32_t version,
-                                     std::span dcid,
-                                     std::span scid,
-                                     const Endpoint &ep,
-                                     const Address &local_addr,
-                                     const Address &remote_addr) {
+std::expected Server::send_version_negotiation(
+  uint32_t version, std::span dcid,
+  std::span scid, const Endpoint &ep, const Address &local_addr,
+  const Address &remote_addr) {
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
   std::array sv;
 
@@ -1958,24 +1956,23 @@ int Server::send_version_negotiation(uint32_t version,
     dcid.data(), dcid.size(), scid.data(), scid.size(), sv.data(),
     as_unsigned(p - std::ranges::begin(sv)));
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_pkt_write_version_negotiation: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_pkt_write_version_negotiation: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
-                       const Address &local_addr, const Address &remote_addr,
-                       size_t max_pktlen) {
+std::expected Server::send_retry(const ngtcp2_pkt_hd *chd,
+                                              const Endpoint &ep,
+                                              const Address &local_addr,
+                                              const Address &remote_addr,
+                                              size_t max_pktlen) {
   std::array host;
   std::array port;
 
@@ -1983,89 +1980,85 @@ int Server::send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
                             host.data(), host.size(), port.data(), port.size(),
                             NI_NUMERICHOST | NI_NUMERICSERV);
       rv != 0) {
-    std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Sending Retry packet to [" << host.data()
-              << "]:" << port.data() << std::endl;
+    std::println(stderr, "Sending Retry packet to [{}]:{}", host.data(),
+                 port.data());
   }
 
   ngtcp2_cid scid;
 
   scid.datalen = NGTCP2_SV_SCIDLEN;
-  if (util::generate_secure_random({scid.data, scid.datalen}) != 0) {
-    return -1;
+  if (auto rv = util::generate_secure_random({scid.data, scid.datalen}); !rv) {
+    return rv;
   }
 
-  std::array token;
+  std::array tokenbuf;
 
   auto t = util::system_clock_now();
 
   auto tokenlen = ngtcp2_crypto_generate_retry_token2(
-    token.data(), config.static_secret.data(), config.static_secret.size(),
+    tokenbuf.data(), config.static_secret.data(), config.static_secret.size(),
     chd->version, remote_addr.as_sockaddr(), remote_addr.size(), &scid,
     &chd->dcid, t);
   if (tokenlen < 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
+  auto token = std::span{tokenbuf}.first(as_unsigned(tokenlen));
+
   if (!config.quiet) {
-    std::cerr << "Generated address validation token:" << std::endl;
-    util::hexdump(stderr, token.data(), as_unsigned(tokenlen));
+    std::println(stderr, "Generated address validation token:");
+    util::hexdump(stderr, token);
   }
 
   Buffer buf{
     std::min(static_cast(NGTCP2_MAX_UDP_PAYLOAD_SIZE), max_pktlen)};
 
-  auto nwrite = ngtcp2_crypto_write_retry(buf.wpos(), buf.left(), chd->version,
-                                          &chd->scid, &scid, &chd->dcid,
-                                          token.data(), as_unsigned(tokenlen));
+  auto nwrite =
+    ngtcp2_crypto_write_retry(buf.wpos(), buf.left(), chd->version, &chd->scid,
+                              &scid, &chd->dcid, token.data(), token.size());
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_crypto_write_retry failed" << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_crypto_write_retry failed");
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_stateless_connection_close(const ngtcp2_pkt_hd *chd,
-                                            const Endpoint &ep,
-                                            const Address &local_addr,
-                                            const Address &remote_addr) {
+std::expected Server::send_stateless_connection_close(
+  const ngtcp2_pkt_hd *chd, const Endpoint &ep, const Address &local_addr,
+  const Address &remote_addr) {
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
 
   auto nwrite = ngtcp2_crypto_write_connection_close(
     buf.wpos(), buf.left(), chd->version, &chd->scid, &chd->dcid,
     NGTCP2_INVALID_TOKEN, nullptr, 0);
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_crypto_write_connection_close failed" << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_crypto_write_connection_close failed");
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_stateless_reset(size_t pktlen, std::span dcid,
-                                 const Endpoint &ep, const Address &local_addr,
-                                 const Address &remote_addr) {
+std::expected
+Server::send_stateless_reset(size_t pktlen, std::span dcid,
+                             const Endpoint &ep, const Address &local_addr,
+                             const Address &remote_addr) {
   if (stateless_reset_bucket_ == 0) {
-    return 0;
+    return {};
   }
 
   --stateless_reset_bucket_;
@@ -2078,12 +2071,12 @@ int Server::send_stateless_reset(size_t pktlen, std::span dcid,
 
   ngtcp2_cid_init(&cid, dcid.data(), dcid.size());
 
-  std::array token;
+  ngtcp2_stateless_reset_token token;
 
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token.data(), config.static_secret.data(), config.static_secret.size(),
+        token.data, config.static_secret.data(), config.static_secret.size(),
         &cid) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   // SCID + minimum expansion - NGTCP2_STATELESS_RESET_TOKENLEN
@@ -2102,33 +2095,33 @@ int Server::send_stateless_reset(size_t pktlen, std::span dcid,
 
   std::array rand_bytes;
 
-  if (util::generate_secure_random({rand_bytes.data(), rand_byteslen}) != 0) {
-    return -1;
+  if (auto rv =
+        util::generate_secure_random({rand_bytes.data(), rand_byteslen});
+      !rv) {
+    return rv;
   }
 
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
 
-  auto nwrite = ngtcp2_pkt_write_stateless_reset(
-    buf.wpos(), buf.left(), token.data(), rand_bytes.data(), rand_byteslen);
+  auto nwrite = ngtcp2_pkt_write_stateless_reset2(
+    buf.wpos(), buf.left(), &token, rand_bytes.data(), rand_byteslen);
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_pkt_write_stateless_reset: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+    std::println(stderr, "ngtcp2_pkt_write_stateless_reset2: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
-                               const Address &remote_addr) {
+std::expected
+Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
+                           const Address &remote_addr) {
   int rv;
 
   if (!config.quiet) {
@@ -2139,13 +2132,13 @@ int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
                               host.data(), host.size(), port.data(),
                               port.size(), NI_NUMERICHOST | NI_NUMERICSERV);
         rv != 0) {
-      std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+      return std::unexpected{Error::LIBC};
     }
 
-    std::cerr << "Verifying Retry token from [" << host.data()
-              << "]:" << port.data() << std::endl;
-    util::hexdump(stderr, hd->token, hd->tokenlen);
+    std::println(stderr, "Verifying Retry token from [{}]:{}", host.data(),
+                 port.data());
+    util::hexdump(stderr, {hd->token, hd->tokenlen});
   }
 
   auto t = util::system_clock_now();
@@ -2158,24 +2151,25 @@ int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
   case 0:
     break;
   case NGTCP2_CRYPTO_ERR_VERIFY_TOKEN:
-    std::cerr << "Could not verify Retry token" << std::endl;
+    std::println(stderr, "Could not verify Retry token");
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   default:
-    std::cerr << "Could not read Retry token.  Continue without the token"
-              << std::endl;
+    std::println(stderr,
+                 "Could not read Retry token.  Continue without the token");
 
-    return 1;
+    return std::unexpected{Error::UNREADABLE_TOKEN};
   }
 
   if (!config.quiet) {
-    std::cerr << "Token was successfully validated" << std::endl;
+    std::println(stderr, "Token was successfully validated");
   }
 
-  return 0;
+  return {};
 }
 
-int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
+std::expected Server::verify_token(const ngtcp2_pkt_hd *hd,
+                                                const Address &remote_addr) {
   std::array host;
   std::array port;
 
@@ -2183,14 +2177,14 @@ int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
                             host.data(), host.size(), port.data(), port.size(),
                             NI_NUMERICHOST | NI_NUMERICSERV);
       rv != 0) {
-    std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Verifying token from [" << host.data() << "]:" << port.data()
-              << std::endl;
-    util::hexdump(stderr, hd->token, hd->tokenlen);
+    std::println(stderr, "Verifying token from [{}]:{}", host.data(),
+                 port.data());
+    util::hexdump(stderr, {hd->token, hd->tokenlen});
   }
 
   auto t = util::system_clock_now();
@@ -2199,56 +2193,64 @@ int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
         hd->token, hd->tokenlen, config.static_secret.data(),
         config.static_secret.size(), remote_addr.as_sockaddr(),
         remote_addr.size(), 3600 * NGTCP2_SECONDS, t) != 0) {
-    std::cerr << "Could not verify token" << std::endl;
+    std::println(stderr, "Could not verify token");
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Token was successfully validated" << std::endl;
+    std::println(stderr, "Token was successfully validated");
   }
 
-  return 0;
+  return {};
 }
 
-int Server::send_packet(const Endpoint &ep, const ngtcp2_addr &local_addr,
-                        const ngtcp2_addr &remote_addr, unsigned int ecn,
-                        std::span data) {
+std::expected Server::send_packet(const Endpoint &ep,
+                                               const ngtcp2_addr &local_addr,
+                                               const ngtcp2_addr &remote_addr,
+                                               unsigned int ecn,
+                                               std::span data) {
   auto no_gso = false;
-  auto [_, rv] =
+  auto rest =
     send_packet(ep, no_gso, local_addr, remote_addr, ecn, data, data.size());
+  if (!rest.empty()) {
+    return std::unexpected{Error::SEND_BLOCKED};
+  }
 
-  return rv;
+  return {};
 }
 
-std::pair, int>
-Server::send_packet(const Endpoint &ep, bool &no_gso,
-                    const ngtcp2_addr &local_addr,
-                    const ngtcp2_addr &remote_addr, unsigned int ecn,
-                    std::span data, size_t gso_size) {
+std::span Server::send_packet(const Endpoint &ep, bool &no_gso,
+                                             const ngtcp2_addr &local_addr,
+                                             const ngtcp2_addr &remote_addr,
+                                             unsigned int ecn,
+                                             std::span data,
+                                             size_t gso_size) {
   assert(gso_size);
 
   if (debug::packet_lost(config.tx_loss_prob)) {
     if (!config.quiet) {
-      std::cerr << "** Simulated outgoing packet loss **" << std::endl;
+      std::println(stderr, "** Simulated outgoing packet loss **");
     }
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (no_gso && data.size() > gso_size) {
     for (; !data.empty();) {
       auto len = std::min(gso_size, data.size());
 
-      auto [_, rv] = send_packet(ep, no_gso, local_addr, remote_addr, ecn,
-                                 data.first(len), len);
-      if (rv != 0) {
-        return {data, rv};
+      auto rest = send_packet(ep, no_gso, local_addr, remote_addr, ecn,
+                              data.first(len), len);
+      if (!rest.empty()) {
+        assert(rest.size() == len);
+
+        return data;
       }
 
       data = data.subspan(len);
     }
 
-    return {{}, 0};
+    return {};
   }
 
   iovec msg_iov{
@@ -2355,13 +2357,13 @@ Server::send_packet(const Endpoint &ep, bool &no_gso,
 #if EAGAIN != EWOULDBLOCK
     case EWOULDBLOCK:
 #endif // EAGAIN != EWOULDBLOCK
-      return {data, NETWORK_ERR_SEND_BLOCKED};
+      return data;
 #ifdef UDP_SEGMENT
     case EIO:
       if (data.size() > gso_size) {
         // GSO failure; send each packet in a separate sendmsg call.
-        std::cerr << "sendmsg: disabling GSO due to " << strerror(errno)
-                  << std::endl;
+        std::println(stderr, "sendmsg: disabling GSO due to {}",
+                     strerror(errno));
 
         no_gso = true;
 
@@ -2372,22 +2374,20 @@ Server::send_packet(const Endpoint &ep, bool &no_gso,
 #endif // defined(UDP_SEGMENT)
     }
 
-    std::cerr << "sendmsg: " << strerror(errno) << std::endl;
+    std::println(stderr, "sendmsg: {}", strerror(errno));
     // TODO We have packet which is expected to fail to send (e.g.,
     // path validation to old path).
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (!config.quiet) {
-    std::cerr << "Sent packet: local="
-              << util::straddr(local_addr.addr, local_addr.addrlen)
-              << " remote="
-              << util::straddr(remote_addr.addr, remote_addr.addrlen)
-              << " ecn=0x" << std::hex << ecn << std::dec << " " << nwrite
-              << " bytes" << std::endl;
+    std::println(stderr, "Sent packet: local={} remote={} ecn={:#x} {} bytes",
+                 util::straddr(local_addr.addr, local_addr.addrlen),
+                 util::straddr(remote_addr.addr, remote_addr.addrlen), ecn,
+                 nwrite);
   }
 
-  return {{}, NETWORK_ERR_OK};
+  return {};
 }
 
 void Server::associate_cid(const ngtcp2_cid *cid, Handler *h) {
@@ -2420,9 +2420,10 @@ void Server::on_stateless_reset_regen() {
 }
 
 namespace {
-int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
+std::expected parse_host_port(int af,
+                                              std::string_view host_port) {
   if (host_port.empty()) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   auto first = std::ranges::begin(host_port);
@@ -2435,19 +2436,19 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
 
     auto it = std::ranges::find(first, last, ']');
     if (it == last) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
 
     hostv = std::string_view{first, it};
     first = it + 1;
 
     if (first == last || *first != ':') {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
   } else {
     auto it = std::ranges::find(first, last, ':');
     if (it == last) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
 
     hostv = std::string_view{first, it};
@@ -2455,7 +2456,7 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
   }
 
   if (++first == last) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   std::array host;
@@ -2469,16 +2470,17 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
   auto svc = first;
 
   if (auto rv = getaddrinfo(host.data(), svc, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: [" << host.data() << "]:" << svc << ": "
-              << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: [{}]:{}: {}", host.data(), svc,
+                 gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
+  Address dest;
   dest.set(res->ai_addr);
 
   freeaddrinfo(res);
 
-  return 0;
+  return dest;
 }
 } // namespace
 
@@ -2487,17 +2489,17 @@ const char *prog = "h09server";
 } // namespace
 
 namespace {
-void print_usage() {
-  std::cerr << "Usage: " << prog
-            << " [OPTIONS]    "
-               ""
-            << std::endl;
+void print_usage(FILE *out) {
+  std::println(
+    out,
+    "Usage: {} [OPTIONS]    ",
+    prog);
 }
 } // namespace
 
 namespace {
 void print_help() {
-  print_usage();
+  print_usage(stdout);
 
   Config config;
 
@@ -2759,7 +2761,7 @@ int main(int argc, char **argv) {
       // --htdocs
       auto path = realpath(optarg, nullptr);
       if (path == nullptr) {
-        std::cerr << "path: invalid path " << std::quoted(optarg) << std::endl;
+        std::println(stderr, "path: invalid path {}", optarg);
         exit(EXIT_FAILURE);
       }
       config.htdocs = path;
@@ -2791,14 +2793,14 @@ int main(int argc, char **argv) {
       config.validate_addr = true;
       break;
     case '?':
-      print_usage();
+      print_usage(stderr);
       exit(EXIT_FAILURE);
     case 0:
       switch (flag) {
       case 1:
         // --ciphers
         if (util::crypto_default_ciphers()[0] == '\0') {
-          std::cerr << "ciphers: not supported" << std::endl;
+          std::println(stderr, "ciphers: not supported");
           exit(EXIT_FAILURE);
         }
         config.ciphers = optarg;
@@ -2810,29 +2812,36 @@ int main(int argc, char **argv) {
       case 3:
         // --timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "timeout: invalid argument" << std::endl;
+          std::println(stderr, "timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.timeout = *t;
         }
         break;
-      case 4:
+      case 4: {
         // --preferred-ipv4-addr
-        if (parse_host_port(config.preferred_ipv4_addr, AF_INET, optarg) != 0) {
-          std::cerr << "preferred-ipv4-addr: could not use "
-                    << std::quoted(optarg) << std::endl;
+        auto maybe_addr = parse_host_port(AF_INET, optarg);
+        if (!maybe_addr) {
+          std::println(stderr, "preferred-ipv4-addr: could not use {}", optarg);
           exit(EXIT_FAILURE);
         }
+
+        config.preferred_ipv4_addr = *maybe_addr;
+
         break;
-      case 5:
+      }
+      case 5: {
         // --preferred-ipv6-addr
-        if (parse_host_port(config.preferred_ipv6_addr, AF_INET6, optarg) !=
-            0) {
-          std::cerr << "preferred-ipv6-addr: could not use "
-                    << std::quoted(optarg) << std::endl;
+        auto maybe_addr = parse_host_port(AF_INET6, optarg);
+        if (!maybe_addr) {
+          std::println(stderr, "preferred-ipv6-addr: could not use {}", optarg);
           exit(EXIT_FAILURE);
         }
+
+        config.preferred_ipv6_addr = *maybe_addr;
+
         break;
+      }
       case 6:
         // --mime-types-file
         config.mime_types_file = optarg;
@@ -2860,7 +2869,7 @@ int main(int argc, char **argv) {
       case 12:
         // --max-data
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-data: invalid argument" << std::endl;
+          std::println(stderr, "max-data: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_data = *n;
@@ -2869,8 +2878,7 @@ int main(int argc, char **argv) {
       case 13:
         // --max-stream-data-bidi-local
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-local: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-local: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_local = *n;
@@ -2879,8 +2887,7 @@ int main(int argc, char **argv) {
       case 14:
         // --max-stream-data-bidi-remote
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-remote: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-remote: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_remote = *n;
@@ -2889,7 +2896,7 @@ int main(int argc, char **argv) {
       case 15:
         // --max-stream-data-uni
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-data-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_uni = *n;
@@ -2898,7 +2905,7 @@ int main(int argc, char **argv) {
       case 16:
         // --max-streams-bidi
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-bidi: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-bidi: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_bidi = *n;
@@ -2907,7 +2914,7 @@ int main(int argc, char **argv) {
       case 17:
         // --max-streams-uni
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_uni = *n;
@@ -2916,7 +2923,7 @@ int main(int argc, char **argv) {
       case 18:
         // --max-dyn-length
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-dyn-length: invalid argument" << std::endl;
+          std::println(stderr, "max-dyn-length: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_dyn_length = *n;
@@ -2936,12 +2943,12 @@ int main(int argc, char **argv) {
           config.cc_algo = NGTCP2_CC_ALGO_BBR;
           break;
         }
-        std::cerr << "cc: specify cubic, reno, or bbr" << std::endl;
+        std::println(stderr, "cc: specify cubic, reno, or bbr");
         exit(EXIT_FAILURE);
       case 20:
         // --initial-rtt
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "initial-rtt: invalid argument" << std::endl;
+          std::println(stderr, "initial-rtt: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.initial_rtt = *t;
@@ -2950,11 +2957,11 @@ int main(int argc, char **argv) {
       case 21:
         // --max-udp-payload-size
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-udp-payload-size: invalid argument" << std::endl;
+          std::println(stderr, "max-udp-payload-size: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-          std::cerr << "max-udp-payload-size: must not exceed "
-                    << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not exceed {}",
+                       NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
           exit(EXIT_FAILURE);
         } else {
           config.max_udp_payload_size = *n;
@@ -2967,7 +2974,7 @@ int main(int argc, char **argv) {
       case 23:
         // --max-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-window: invalid argument" << std::endl;
+          std::println(stderr, "max-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_window = *n;
@@ -2976,7 +2983,7 @@ int main(int argc, char **argv) {
       case 24:
         // --max-stream-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-window: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_window = *n;
@@ -2985,7 +2992,7 @@ int main(int argc, char **argv) {
       case 26:
         // --handshake-timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "handshake-timeout: invalid argument" << std::endl;
+          std::println(stderr, "handshake-timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.handshake_timeout = *t;
@@ -2995,8 +3002,9 @@ int main(int argc, char **argv) {
         // --preferred-versions
         auto l = util::split_str(optarg);
         if (l.size() > max_preferred_versionslen) {
-          std::cerr << "preferred-versions: too many versions > "
-                    << max_preferred_versionslen << std::endl;
+          std::println(stderr, "preferred-versions: too many versions > {}",
+                       max_preferred_versionslen);
+          exit(EXIT_FAILURE);
         }
         config.preferred_versions.resize(l.size());
         auto it = std::ranges::begin(config.preferred_versions);
@@ -3011,13 +3019,12 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "preferred-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           if (!ngtcp2_is_supported_version(*rv)) {
-            std::cerr << "preferred-versions: unsupported version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: unsupported version {}",
+                         k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3040,8 +3047,7 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "available-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "available-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3055,10 +3061,10 @@ int main(int argc, char **argv) {
       case 30:
         // --ack-thresh
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "ack-thresh: invalid argument" << std::endl;
+          std::println(stderr, "ack-thresh: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > 100) {
-          std::cerr << "ack-thresh: must not exceed 100" << std::endl;
+          std::println(stderr, "ack-thresh: must not exceed 100");
           exit(EXIT_FAILURE);
         } else {
           config.ack_thresh = *n;
@@ -3067,11 +3073,11 @@ int main(int argc, char **argv) {
       case 31:
         // --initial-pkt-num
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "initial-pkt-num: invalid argument" << std::endl;
+          std::println(stderr, "initial-pkt-num: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > INT32_MAX) {
-          std::cerr << "initial-pkt-num: must not exceed (1 << 31) - 1"
-                    << std::endl;
+          std::println(stderr,
+                       "initial-pkt-num: must not exceed (1 << 31) - 1");
           exit(EXIT_FAILURE);
         } else {
           config.initial_pkt_num = static_cast(*n);
@@ -3082,14 +3088,13 @@ int main(int argc, char **argv) {
         auto l = util::split_str(optarg);
         for (auto &s : l) {
           if (auto n = util::parse_uint_iec(s); !n) {
-            std::cerr << "pmtud-probes: invalid argument" << std::endl;
+            std::println(stderr, "pmtud-probes: invalid argument");
             exit(EXIT_FAILURE);
           } else if (*n <= NGTCP2_MAX_UDP_PAYLOAD_SIZE ||
                      *n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-            std::cerr << "pmtud-probes: must be in range ["
-                      << NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1 << ", "
-                      << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << "], inclusive."
-                      << std::endl;
+            std::println(
+              stderr, "pmtud-probes: must be in range [{}, {}], inclusive.",
+              NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1, NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
             exit(EXIT_FAILURE);
           } else {
             config.pmtud_probes.push_back(static_cast(*n));
@@ -3113,13 +3118,13 @@ int main(int argc, char **argv) {
         // --gso-burst
         auto n = util::parse_uint(optarg);
         if (!n) {
-          std::cerr << "gso-burst: invalid argument" << std::endl;
+          std::println(stderr, "gso-burst: invalid argument");
           exit(EXIT_FAILURE);
         }
 
         if (*n > 64) {
-          std::cerr << "gso-burst: must be in range [0, 64], inclusive."
-                    << std::endl;
+          std::println(stderr,
+                       "gso-burst: must be in range [0, 64], inclusive.");
           exit(EXIT_FAILURE);
         }
 
@@ -3135,8 +3140,8 @@ int main(int argc, char **argv) {
   }
 
   if (argc - optind < 4) {
-    std::cerr << "Too few arguments" << std::endl;
-    print_usage();
+    std::println(stderr, "Too few arguments");
+    print_usage(stderr);
     exit(EXIT_FAILURE);
   }
 
@@ -3146,18 +3151,19 @@ int main(int argc, char **argv) {
   auto cert_file = argv[optind++];
 
   if (auto n = util::parse_uint(port); !n) {
-    std::cerr << "port: invalid port number" << std::endl;
+    std::println(stderr, "port: invalid port number");
     exit(EXIT_FAILURE);
   } else if (*n > 65535) {
-    std::cerr << "port: must not exceed 65535" << std::endl;
+    std::println(stderr, "port: must not exceed 65535");
     exit(EXIT_FAILURE);
   } else {
     config.port = static_cast(*n);
   }
 
   if (auto mt = util::read_mime_types(config.mime_types_file); !mt) {
-    std::cerr << "mime-types-file: Could not read MIME media types file "
-              << std::quoted(config.mime_types_file) << std::endl;
+    std::println(stderr,
+                 "mime-types-file: Could not read MIME media types file {}",
+                 config.mime_types_file);
   } else {
     config.mime_types = std::move(*mt);
   }
@@ -3165,8 +3171,8 @@ int main(int argc, char **argv) {
   if (!ech_config_file.empty()) {
     auto ech_config = util::read_ech_server_config(ech_config_file);
     if (!ech_config) {
-      std::cerr << "ech-config-file: Could not read private key and ECHConfig"
-                << std::endl;
+      std::println(stderr,
+                   "ech-config-file: Could not read private key and ECHConfig");
       exit(EXIT_FAILURE);
     }
 
@@ -3175,7 +3181,7 @@ int main(int argc, char **argv) {
 
   TLSServerContext tls_ctx;
 
-  if (tls_ctx.init(private_key_file, cert_file, AppProtocol::HQ) != 0) {
+  if (!tls_ctx.init(private_key_file, cert_file, AppProtocol::HQ)) {
     exit(EXIT_FAILURE);
   }
 
@@ -3183,7 +3189,7 @@ int main(int argc, char **argv) {
     config.htdocs += '/';
   }
 
-  std::cerr << "Using document root " << config.htdocs << std::endl;
+  std::println(stderr, "Using document root {}", config.htdocs);
 
   auto ev_loop_d = defer([] { ev_loop_destroy(EV_DEFAULT); });
 
@@ -3195,13 +3201,13 @@ int main(int argc, char **argv) {
     }
   }
 
-  if (util::generate_secret(config.static_secret) != 0) {
-    std::cerr << "Unable to generate static secret" << std::endl;
+  if (!util::generate_secure_random(config.static_secret)) {
+    std::println(stderr, "Unable to generate static secret");
     exit(EXIT_FAILURE);
   }
 
   Server s(EV_DEFAULT, tls_ctx);
-  if (s.init(addr, port) != 0) {
+  if (!s.init(addr, port)) {
     exit(EXIT_FAILURE);
   }
 
diff --git a/deps/ngtcp2/ngtcp2/examples/h09server.h b/deps/ngtcp2/ngtcp2/examples/h09server.h
index 50bfae347f10fb..b02557fcd5ddf3 100644
--- a/deps/ngtcp2/ngtcp2/examples/h09server.h
+++ b/deps/ngtcp2/ngtcp2/examples/h09server.h
@@ -58,10 +58,10 @@ struct FileEntry;
 struct Stream {
   Stream(int64_t stream_id, Handler *handler);
 
-  int start_response();
-  std::pair open_file(const std::string &path);
+  void start_response();
+  std::expected open_file(const std::string &path);
   void map_file(const FileEntry &fe);
-  int send_status_response(unsigned int status_code);
+  void send_status_response(unsigned int status_code);
 
   int64_t stream_id;
   Handler *handler;
@@ -95,49 +95,57 @@ class Handler : public HandlerBase {
   Handler(struct ev_loop *loop, Server *server);
   ~Handler();
 
-  int init(const Endpoint &ep, const Address &local_addr,
-           const Address &remote_addr, const ngtcp2_cid *dcid,
-           const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
-           std::span token, ngtcp2_token_type token_type,
-           uint32_t version, TLSServerContext &tls_ctx);
-
-  int on_read(const Endpoint &ep, const Address &local_addr,
-              const Address &remote_addr, const ngtcp2_pkt_info *pi,
-              std::span data);
-  int on_write();
-  int write_streams();
-  int feed_data(const Endpoint &ep, const Address &local_addr,
-                const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                std::span data);
+  std::expected
+  init(const Endpoint &ep, const Address &local_addr,
+       const Address &remote_addr, const ngtcp2_cid *dcid,
+       const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
+       std::span token, ngtcp2_token_type token_type,
+       uint32_t version, TLSServerContext &tls_ctx);
+
+  std::expected on_read(const Endpoint &ep,
+                                     const Address &local_addr,
+                                     const Address &remote_addr,
+                                     const ngtcp2_pkt_info *pi,
+                                     std::span data);
+  std::expected on_write();
+  std::expected write_streams();
+  std::expected feed_data(const Endpoint &ep,
+                                       const Address &local_addr,
+                                       const Address &remote_addr,
+                                       const ngtcp2_pkt_info *pi,
+                                       std::span data);
   void update_timer();
-  int handle_expiry();
+  std::expected handle_expiry();
   void signal_write();
-  int handshake_completed();
+  std::expected handshake_completed();
 
   Server *server() const;
-  int recv_stream_data(uint32_t flags, int64_t stream_id,
-                       std::span data);
-  int acked_stream_data_offset(int64_t stream_id, uint64_t offset,
-                               uint64_t datalen);
+  std::expected recv_stream_data(uint32_t flags, int64_t stream_id,
+                                              std::span data);
+  void acked_stream_data_offset(int64_t stream_id, uint64_t offset,
+                                uint64_t datalen);
   uint32_t version() const;
   void on_stream_open(int64_t stream_id);
-  int on_stream_close(int64_t stream_id, uint64_t app_error_code);
+  void on_stream_close(int64_t stream_id, uint64_t app_error_code);
   void start_draining_period();
-  int start_closing_period();
-  int handle_error();
-  int send_conn_close();
-  int send_conn_close(const Endpoint &ep, const Address &local_addr,
-                      const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                      std::span data);
-
-  int update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                 ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                 ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                 const uint8_t *current_rx_secret,
-                 const uint8_t *current_tx_secret, size_t secretlen);
+  std::expected start_closing_period();
+  std::expected handle_error();
+  std::expected send_conn_close();
+  std::expected send_conn_close(const Endpoint &ep,
+                                             const Address &local_addr,
+                                             const Address &remote_addr,
+                                             const ngtcp2_pkt_info *pi,
+                                             std::span data);
+
+  std::expected
+  update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+             ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+             ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+             const uint8_t *current_rx_secret, const uint8_t *current_tx_secret,
+             size_t secretlen);
 
   Stream *find_stream(int64_t stream_id);
-  int extend_max_stream_data(int64_t stream_id, uint64_t max_data);
+  void extend_max_stream_data(int64_t stream_id, uint64_t max_data);
   void shutdown_read(int64_t stream_id, uint64_t app_error_code);
 
   void write_qlog(const void *data, size_t datalen);
@@ -146,9 +154,11 @@ class Handler : public HandlerBase {
   void on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
                        std::span data, size_t gso_size);
   void start_wev_endpoint(const Endpoint &ep);
-  int send_packet(const ngtcp2_path &path, unsigned int ecn,
-                  std::span data, size_t gso_size);
-  int send_blocked_packet();
+  std::expected send_packet(const ngtcp2_path &path,
+                                         unsigned int ecn,
+                                         std::span data,
+                                         size_t gso_size);
+  void send_blocked_packet();
 
   ngtcp2_ssize write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi, uint8_t *dest,
                          size_t destlen, ngtcp2_tstamp ts);
@@ -196,35 +206,44 @@ class Server {
   Server(struct ev_loop *loop, TLSServerContext &tls_ctx);
   ~Server();
 
-  int init(const char *addr, const char *port);
+  std::expected init(const char *addr, const char *port);
   void disconnect();
   void close();
 
-  int on_read(const Endpoint &ep);
+  void on_read(const Endpoint &ep);
   void read_pkt(const Endpoint &ep, const Address &local_addr,
                 const Address &remote_addr, const ngtcp2_pkt_info *pi,
                 std::span data);
-  int send_version_negotiation(uint32_t version, std::span dcid,
-                               std::span scid,
-                               const Endpoint &ep, const Address &local_addr,
-                               const Address &remote_addr);
-  int send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
-                 const Address &local_addr, const Address &remote_addr,
-                 size_t max_pktlen);
-  int send_stateless_connection_close(const ngtcp2_pkt_hd *chd,
-                                      const Endpoint &ep,
-                                      const Address &local_addr,
-                                      const Address &remote_addr);
-  int send_stateless_reset(size_t pktlen, std::span dcid,
-                           const Endpoint &ep, const Address &local_addr,
+  std::expected
+  send_version_negotiation(uint32_t version, std::span dcid,
+                           std::span scid, const Endpoint &ep,
+                           const Address &local_addr,
                            const Address &remote_addr);
-  int verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
-                         const Address &remote_addr);
-  int verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr);
-  int send_packet(const Endpoint &ep, const ngtcp2_addr &local_addr,
-                  const ngtcp2_addr &remote_addr, unsigned int ecn,
-                  std::span data);
-  std::pair, int>
+  std::expected send_retry(const ngtcp2_pkt_hd *chd,
+                                        const Endpoint &ep,
+                                        const Address &local_addr,
+                                        const Address &remote_addr,
+                                        size_t max_pktlen);
+  std::expected
+  send_stateless_connection_close(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
+                                  const Address &local_addr,
+                                  const Address &remote_addr);
+  std::expected send_stateless_reset(size_t pktlen,
+                                                  std::span dcid,
+                                                  const Endpoint &ep,
+                                                  const Address &local_addr,
+                                                  const Address &remote_addr);
+  std::expected verify_retry_token(ngtcp2_cid *ocid,
+                                                const ngtcp2_pkt_hd *hd,
+                                                const Address &remote_addr);
+  std::expected verify_token(const ngtcp2_pkt_hd *hd,
+                                          const Address &remote_addr);
+  std::expected send_packet(const Endpoint &ep,
+                                         const ngtcp2_addr &local_addr,
+                                         const ngtcp2_addr &remote_addr,
+                                         unsigned int ecn,
+                                         std::span data);
+  std::span
   send_packet(const Endpoint &ep, bool &no_gso, const ngtcp2_addr &local_addr,
               const ngtcp2_addr &remote_addr, unsigned int ecn,
               std::span data, size_t gso_size);
diff --git a/deps/ngtcp2/ngtcp2/examples/server.cc b/deps/ngtcp2/ngtcp2/examples/server.cc
index f9463eacd9cc7d..35b387c36fd1e5 100644
--- a/deps/ngtcp2/ngtcp2/examples/server.cc
+++ b/deps/ngtcp2/ngtcp2/examples/server.cc
@@ -111,7 +111,8 @@ struct Request {
 };
 
 namespace {
-Request request_path(const std::string_view &uri, bool is_connect) {
+std::expected request_path(std::string_view uri,
+                                           bool is_connect) {
   urlparse_url u;
   Request req{
     .pri{
@@ -122,7 +123,7 @@ Request request_path(const std::string_view &uri, bool is_connect) {
 
   if (auto rv = urlparse_parse_url(uri.data(), uri.size(), is_connect, &u);
       rv != 0) {
-    return req;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   if (u.field_set & (1 << URLPARSE_PATH)) {
@@ -130,15 +131,24 @@ Request request_path(const std::string_view &uri, bool is_connect) {
     if (req.path.find('%') != std::string::npos) {
       req.path = util::percent_decode(req.path);
     }
-    if (!req.path.empty() && req.path.back() == '/') {
+
+    assert(!req.path.empty());
+
+    if (req.path[0] != '/') {
+      return std::unexpected{Error::INVALID_ARGUMENT};
+    }
+
+    if (req.path.back() == '/') {
       req.path += "index.html";
     }
-  } else {
-    req.path = "/index.html";
-  }
 
-  req.path = util::normalize_path(req.path);
-  if (req.path == "/") {
+    auto maybe_norm_path = util::normalize_path(req.path);
+    if (!maybe_norm_path) {
+      return std::unexpected{maybe_norm_path.error()};
+    }
+
+    req.path = std::move(*maybe_norm_path);
+  } else {
     req.path = "/index.html";
   }
 
@@ -203,21 +213,21 @@ namespace {
 std::unordered_map file_cache;
 } // namespace
 
-std::pair Stream::open_file(const std::string &path) {
+std::expected Stream::open_file(const std::string &path) {
   auto it = file_cache.find(path);
   if (it != std::ranges::end(file_cache)) {
-    return {(*it).second, 0};
+    return (*it).second;
   }
 
   auto fd = open(path.c_str(), O_RDONLY);
   if (fd == -1) {
-    return {{}, -1};
+    return std::unexpected{Error::SYSCALL};
   }
 
   struct stat st{};
   if (fstat(fd, &st) != 0) {
     close(fd);
-    return {{}, -1};
+    return std::unexpected{Error::SYSCALL};
   }
 
   FileEntry fe;
@@ -231,16 +241,16 @@ std::pair Stream::open_file(const std::string &path) {
     if (fe.len) {
       fe.map = mmap(nullptr, fe.len, PROT_READ, MAP_SHARED, fd, 0);
       if (fe.map == MAP_FAILED) {
-        std::cerr << "mmap: " << strerror(errno) << std::endl;
+        std::println(stderr, "mmap: {}", strerror(errno));
         close(fd);
-        return {{}, -1};
+        return std::unexpected{Error::SYSCALL};
       }
     }
   }
 
   file_cache.emplace(path, fe);
 
-  return {std::move(fe), 0};
+  return fe;
 }
 
 void Stream::map_file(const FileEntry &fe) {
@@ -248,11 +258,11 @@ void Stream::map_file(const FileEntry &fe) {
   datalen = fe.len;
 }
 
-int64_t Stream::find_dyn_length(const std::string_view &path) {
+std::expected Stream::find_dyn_length(std::string_view path) {
   assert(path[0] == '/');
 
   if (path.size() == 1) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   uint64_t n = 0;
@@ -260,19 +270,19 @@ int64_t Stream::find_dyn_length(const std::string_view &path) {
   for (auto it = std::ranges::begin(path) + 1; it != std::ranges::end(path);
        ++it) {
     if (*it < '0' || '9' < *it) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
     auto d = static_cast(*it - '0');
-    if (n > (((1ull << 62) - 1) - d) / 10) {
-      return -1;
+    if (n > (((1ULL << 62) - 1) - d) / 10) {
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
     n = n * 10 + d;
     if (n > config.max_dyn_length) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
   }
 
-  return static_cast(n);
+  return n;
 }
 
 namespace {
@@ -321,8 +331,8 @@ nghttp3_ssize dyn_read_data(nghttp3_conn *conn, int64_t stream_id,
       if (auto rv = nghttp3_conn_submit_trailers(
             conn, stream_id, trailers.data(), trailers.size());
           rv != 0) {
-        std::cerr << "nghttp3_conn_submit_trailers: " << nghttp3_strerror(rv)
-                  << std::endl;
+        std::println(stderr, "nghttp3_conn_submit_trailers: {}",
+                     nghttp3_strerror(rv));
         return NGHTTP3_ERR_CALLBACK_FAILURE;
       }
     }
@@ -342,9 +352,9 @@ void Stream::http_acked_stream_data(uint64_t datalen) {
   dynbuflen -= datalen;
 }
 
-int Stream::send_status_response(nghttp3_conn *httpconn,
-                                 unsigned int status_code,
-                                 const std::vector &extra_headers) {
+std::expected
+Stream::send_status_response(nghttp3_conn *httpconn, unsigned int status_code,
+                             const std::vector &extra_headers) {
   status_resp_body = make_status_body(status_code);
 
   auto status_code_str = util::format_uint(status_code);
@@ -372,9 +382,9 @@ int Stream::send_status_response(nghttp3_conn *httpconn,
   if (auto rv = nghttp3_conn_submit_response(httpconn, stream_id, nva.data(),
                                              nva.size(), &dr);
       rv != 0) {
-    std::cerr << "nghttp3_conn_submit_response: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_submit_response: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   if (config.send_trailers) {
@@ -386,55 +396,56 @@ int Stream::send_status_response(nghttp3_conn *httpconn,
     if (auto rv = nghttp3_conn_submit_trailers(
           httpconn, stream_id, trailers.data(), trailers.size());
         rv != 0) {
-      std::cerr << "nghttp3_conn_submit_trailers: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_submit_trailers: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
   }
 
   handler->shutdown_read(stream_id, NGHTTP3_H3_NO_ERROR);
 
-  return 0;
+  return {};
 }
 
-int Stream::send_redirect_response(nghttp3_conn *httpconn,
-                                   unsigned int status_code,
-                                   const std::string_view &path) {
+std::expected
+Stream::send_redirect_response(nghttp3_conn *httpconn, unsigned int status_code,
+                               std::string_view path) {
   return send_status_response(httpconn, status_code, {{"location", path}});
 }
 
-int Stream::start_response(nghttp3_conn *httpconn) {
+std::expected Stream::start_response(nghttp3_conn *httpconn) {
   // TODO This should be handled by nghttp3
   if (uri.empty() || method.empty()) {
     return send_status_response(httpconn, 400);
   }
 
-  auto req = request_path(uri, method == "CONNECT");
-  if (req.path.empty()) {
+  auto maybe_req = request_path(uri, method == "CONNECT");
+  if (!maybe_req) {
     return send_status_response(httpconn, 400);
   }
 
-  auto dyn_len = find_dyn_length(req.path);
+  const auto &req = *maybe_req;
 
-  int64_t content_length = -1;
+  uint64_t content_length;
   nghttp3_data_reader dr{};
   auto content_type = "text/plain"sv;
 
-  if (dyn_len == -1) {
+  auto maybe_dyn_len = find_dyn_length(req.path);
+  if (!maybe_dyn_len) {
     auto path = config.htdocs + req.path;
-    auto [fe, rv] = open_file(path);
-    if (rv != 0) {
-      send_status_response(httpconn, 404);
-      return 0;
+    auto maybe_fe = open_file(path);
+    if (!maybe_fe) {
+      return send_status_response(httpconn, 404);
     }
 
+    const auto &fe = *maybe_fe;
+
     if (fe.flags & FILE_ENTRY_TYPE_DIR) {
-      send_redirect_response(httpconn, 308,
-                             path.substr(config.htdocs.size() - 1) + '/');
-      return 0;
+      return send_redirect_response(
+        httpconn, 308, path.substr(config.htdocs.size() - 1) + '/');
     }
 
-    content_length = static_cast(fe.len);
+    content_length = fe.len;
 
     if (method != "HEAD") {
       map_file(fe);
@@ -455,19 +466,19 @@ int Stream::start_response(nghttp3_conn *httpconn) {
       }
     }
   } else {
-    content_length = dyn_len;
+    content_length = *maybe_dyn_len;
     dynresp = true;
     dr.read_data = dyn_read_data;
 
     if (method != "HEAD") {
-      datalen = as_unsigned(dyn_len);
-      dyndataleft = as_unsigned(dyn_len);
+      datalen = content_length;
+      dyndataleft = content_length;
     }
 
     content_type = "application/octet-stream"sv;
   }
 
-  auto content_length_str = util::format_uint(as_unsigned(content_length));
+  auto content_length_str = util::format_uint(content_length);
 
   std::array nva{
     util::make_nv_nn(":status"sv, "200"sv),
@@ -485,9 +496,9 @@ int Stream::start_response(nghttp3_conn *httpconn) {
 
     if (auto rv = nghttp3_conn_get_stream_priority(httpconn, &pri, stream_id);
         rv != 0) {
-      std::cerr << "nghttp3_conn_get_stream_priority: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_get_stream_priority: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
 
     if (req.pri.urgency != -1) {
@@ -500,9 +511,9 @@ int Stream::start_response(nghttp3_conn *httpconn) {
     if (auto rv =
           nghttp3_conn_set_server_stream_priority(httpconn, stream_id, &pri);
         rv != 0) {
-      std::cerr << "nghttp3_conn_set_stream_priority: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_set_server_stream_priority: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
 
     prival = "u=";
@@ -522,12 +533,12 @@ int Stream::start_response(nghttp3_conn *httpconn) {
   if (auto rv = nghttp3_conn_submit_response(httpconn, stream_id, nva.data(),
                                              nvlen, &dr);
       rv != 0) {
-    std::cerr << "nghttp3_conn_submit_response: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_submit_response: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  if (config.send_trailers && dyn_len == -1) {
+  if (config.send_trailers && !maybe_dyn_len) {
     auto stream_id_str = util::format_uint(as_unsigned(stream_id));
     auto trailers = std::to_array({
       util::make_nv_nc("x-ngtcp2-stream-id"sv, stream_id_str),
@@ -536,13 +547,13 @@ int Stream::start_response(nghttp3_conn *httpconn) {
     if (auto rv = nghttp3_conn_submit_trailers(
           httpconn, stream_id, trailers.data(), trailers.size());
         rv != 0) {
-      std::cerr << "nghttp3_conn_submit_trailers: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_submit_trailers: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -550,11 +561,7 @@ void writecb(struct ev_loop *loop, ev_io *w, int revents) {
   auto h = static_cast(w->data);
   auto s = h->server();
 
-  switch (h->on_write()) {
-  case 0:
-  case NETWORK_ERR_CLOSE_WAIT:
-    return;
-  default:
+  if (auto rv = h->on_write(); !rv && rv.error() != Error::CLOSE_WAIT) {
     s->remove(h);
   }
 }
@@ -568,7 +575,7 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
 
   if (ngtcp2_conn_in_closing_period(conn)) {
     if (!config.quiet) {
-      std::cerr << "Closing Period is over" << std::endl;
+      std::println(stderr, "Closing Period is over");
     }
 
     s->remove(h);
@@ -576,7 +583,7 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
   }
   if (ngtcp2_conn_in_draining_period(conn)) {
     if (!config.quiet) {
-      std::cerr << "Draining Period is over" << std::endl;
+      std::println(stderr, "Draining Period is over");
     }
 
     s->remove(h);
@@ -589,33 +596,24 @@ void close_waitcb(struct ev_loop *loop, ev_timer *w, int revents) {
 
 namespace {
 void timeoutcb(struct ev_loop *loop, ev_timer *w, int revents) {
-  int rv;
-
   auto h = static_cast(w->data);
   auto s = h->server();
 
   if (!config.quiet) {
-    std::cerr << "Timer expired" << std::endl;
-  }
-
-  rv = h->handle_expiry();
-  if (rv != 0) {
-    goto fail;
+    std::println(stderr, "Timer expired");
   }
 
-  h->signal_write();
-
-  return;
+  if (auto rv = h->handle_expiry(); !rv) {
+    if (rv.error() == Error::CLOSE_WAIT) {
+      ev_timer_stop(loop, w);
+    } else {
+      s->remove(h);
+    }
 
-fail:
-  switch (rv) {
-  case NETWORK_ERR_CLOSE_WAIT:
-    ev_timer_stop(loop, w);
-    return;
-  default:
-    s->remove(h);
     return;
   }
+
+  h->signal_write();
 }
 } // namespace
 
@@ -637,7 +635,7 @@ Handler::Handler(struct ev_loop *loop, Server *server)
 
 Handler::~Handler() {
   if (!config.quiet) {
-    std::cerr << scid_ << " Closing QUIC connection " << std::endl;
+    std::println(stderr, "{} Closing QUIC connection", scid_);
   }
 
   ev_timer_stop(loop_, &timer_);
@@ -660,7 +658,7 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
     debug::handshake_completed(conn, user_data);
   }
 
-  if (h->handshake_completed() != 0) {
+  if (!h->handshake_completed()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -668,19 +666,19 @@ int handshake_completed(ngtcp2_conn *conn, void *user_data) {
 }
 } // namespace
 
-int Handler::handshake_completed() {
+std::expected Handler::handshake_completed() {
   if (!config.quiet) {
-    std::cerr << "Negotiated cipher suite is " << tls_session_.get_cipher_name()
-              << std::endl;
+    std::println(stderr, "Negotiated cipher suite is {}",
+                 tls_session_.get_cipher_name());
     if (auto group = tls_session_.get_negotiated_group(); !group.empty()) {
-      std::cerr << "Negotiated group is " << group << std::endl;
+      std::println(stderr, "Negotiated group is {}", group);
     }
-    std::cerr << "Negotiated ALPN is " << tls_session_.get_selected_alpn()
-              << std::endl;
+    std::println(stderr, "Negotiated ALPN is {}",
+                 tls_session_.get_selected_alpn());
   }
 
-  if (tls_session_.send_session_ticket() != 0) {
-    std::cerr << "Unable to send session ticket" << std::endl;
+  if (!tls_session_.send_session_ticket()) {
+    std::println(stderr, "Unable to send session ticket");
   }
 
   std::array token;
@@ -692,21 +690,21 @@ int Handler::handshake_completed() {
     token.data(), config.static_secret.data(), config.static_secret.size(),
     path->remote.addr, path->remote.addrlen, t);
   if (tokenlen < 0) {
-    std::cerr << "Unable to generate token" << std::endl;
+    std::println(stderr, "Unable to generate token");
 
-    return 0;
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = ngtcp2_conn_submit_new_token(conn_, token.data(),
                                              as_unsigned(tokenlen));
       rv != 0) {
-    std::cerr << "ngtcp2_conn_submit_new_token: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_submit_new_token: {}",
+                 ngtcp2_strerror(rv));
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -744,7 +742,7 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
                      void *user_data, void *stream_user_data) {
   auto h = static_cast(user_data);
 
-  if (h->recv_stream_data(flags, stream_id, {data, datalen}) != 0) {
+  if (!h->recv_stream_data(flags, stream_id, {data, datalen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -757,26 +755,27 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id,
                              uint64_t offset, uint64_t datalen, void *user_data,
                              void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->acked_stream_data_offset(stream_id, datalen) != 0) {
+  if (!h->acked_stream_data_offset(stream_id, datalen)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::acked_stream_data_offset(int64_t stream_id, uint64_t datalen) {
+std::expected Handler::acked_stream_data_offset(int64_t stream_id,
+                                                             uint64_t datalen) {
   if (!httpconn_) {
-    return 0;
+    return {};
   }
 
   if (auto rv = nghttp3_conn_add_ack_offset(httpconn_, stream_id, datalen);
       rv != 0) {
-    std::cerr << "nghttp3_conn_add_ack_offset: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_add_ack_offset: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -807,7 +806,7 @@ int stream_close(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id,
     app_error_code = NGHTTP3_H3_NO_ERROR;
   }
 
-  if (h->on_stream_close(stream_id, app_error_code) != 0) {
+  if (!h->on_stream_close(stream_id, app_error_code)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
@@ -819,23 +818,23 @@ int stream_reset(ngtcp2_conn *conn, int64_t stream_id, uint64_t final_size,
                  uint64_t app_error_code, void *user_data,
                  void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->on_stream_reset(stream_id) != 0) {
+  if (!h->on_stream_reset(stream_id)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::on_stream_reset(int64_t stream_id) {
+std::expected Handler::on_stream_reset(int64_t stream_id) {
   if (httpconn_) {
     if (auto rv = nghttp3_conn_shutdown_stream_read(httpconn_, stream_id);
         rv != 0) {
-      std::cerr << "nghttp3_conn_shutdown_stream_read: " << nghttp3_strerror(rv)
-                << std::endl;
-      return -1;
+      std::println(stderr, "nghttp3_conn_shutdown_stream_read: {}",
+                   nghttp3_strerror(rv));
+      return std::unexpected{Error::HTTP3};
     }
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -843,32 +842,31 @@ int stream_stop_sending(ngtcp2_conn *conn, int64_t stream_id,
                         uint64_t app_error_code, void *user_data,
                         void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->on_stream_stop_sending(stream_id) != 0) {
+  if (!h->on_stream_stop_sending(stream_id)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::on_stream_stop_sending(int64_t stream_id) {
+std::expected Handler::on_stream_stop_sending(int64_t stream_id) {
   if (!httpconn_) {
-    return 0;
+    return {};
   }
 
   if (auto rv = nghttp3_conn_shutdown_stream_read(httpconn_, stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_shutdown_stream_read: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_shutdown_stream_read: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
 void rand_bytes(uint8_t *dest, size_t destlen) {
-  auto rv = util::generate_secure_random({dest, destlen});
-  if (rv != 0) {
+  if (!util::generate_secure_random({dest, destlen})) {
     assert(0);
     abort();
   }
@@ -882,16 +880,17 @@ void rand(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) {
 } // namespace
 
 namespace {
-int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token,
-                          size_t cidlen, void *user_data) {
-  if (util::generate_secure_random({cid->data, cidlen}) != 0) {
+int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid,
+                          ngtcp2_stateless_reset_token *token, size_t cidlen,
+                          void *user_data) {
+  if (!util::generate_secure_random({cid->data, cidlen})) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
   cid->datalen = cidlen;
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token, config.static_secret.data(), config.static_secret.size(), cid) !=
-      0) {
+        token->data, config.static_secret.data(), config.static_secret.size(),
+        cid) != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -919,9 +918,8 @@ int update_key(ngtcp2_conn *conn, uint8_t *rx_secret, uint8_t *tx_secret,
                const uint8_t *current_tx_secret, size_t secretlen,
                void *user_data) {
   auto h = static_cast(user_data);
-  if (h->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
-                    tx_iv, current_rx_secret, current_tx_secret,
-                    secretlen) != 0) {
+  if (!h->update_key(rx_secret, tx_secret, rx_aead_ctx, rx_iv, tx_aead_ctx,
+                     tx_iv, current_rx_secret, current_tx_secret, secretlen)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
@@ -948,7 +946,7 @@ int path_validation(ngtcp2_conn *conn, uint32_t flags, const ngtcp2_path *path,
     token.data(), config.static_secret.data(), config.static_secret.size(),
     path->remote.addr, path->remote.addrlen, t);
   if (tokenlen < 0) {
-    std::cerr << "Unable to generate token" << std::endl;
+    std::println(stderr, "Unable to generate token");
 
     return 0;
   }
@@ -956,8 +954,8 @@ int path_validation(ngtcp2_conn *conn, uint32_t flags, const ngtcp2_path *path,
   if (auto rv =
         ngtcp2_conn_submit_new_token(conn, token.data(), as_unsigned(tokenlen));
       rv != 0) {
-    std::cerr << "ngtcp2_conn_submit_new_token: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_submit_new_token: {}",
+                 ngtcp2_strerror(rv));
 
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
@@ -1074,22 +1072,22 @@ int http_end_request_headers(nghttp3_conn *conn, int64_t stream_id, int fin,
 
   auto h = static_cast(user_data);
   auto stream = static_cast(stream_user_data);
-  if (h->http_end_request_headers(stream) != 0) {
+  if (!h->http_end_request_headers(stream)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::http_end_request_headers(Stream *stream) {
+std::expected Handler::http_end_request_headers(Stream *stream) {
   if (config.early_response) {
-    if (start_response(stream) != 0) {
-      return -1;
+    if (auto rv = start_response(stream); !rv) {
+      return rv;
     }
 
     shutdown_read(stream->stream_id, NGHTTP3_H3_NO_ERROR);
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1097,21 +1095,21 @@ int http_end_stream(nghttp3_conn *conn, int64_t stream_id, void *user_data,
                     void *stream_user_data) {
   auto h = static_cast(user_data);
   auto stream = static_cast(stream_user_data);
-  if (h->http_end_stream(stream) != 0) {
+  if (!h->http_end_stream(stream)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::http_end_stream(Stream *stream) {
+std::expected Handler::http_end_stream(Stream *stream) {
   if (!config.early_response) {
     return start_response(stream);
   }
-  return 0;
+  return {};
 }
 
-int Handler::start_response(Stream *stream) {
+std::expected Handler::start_response(Stream *stream) {
   return stream->start_response(httpconn_);
 }
 
@@ -1144,8 +1142,8 @@ void Handler::http_stream_close(int64_t stream_id, uint64_t app_error_code) {
   }
 
   if (!config.quiet) {
-    std::cerr << "HTTP stream " << stream_id << " closed with error code "
-              << app_error_code << std::endl;
+    std::println(stderr, "HTTP stream {:#x} closed with error code {:#x}",
+                 stream_id, app_error_code);
   }
 
   streams_.erase(it);
@@ -1156,22 +1154,23 @@ int http_stop_sending(nghttp3_conn *conn, int64_t stream_id,
                       uint64_t app_error_code, void *user_data,
                       void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->http_stop_sending(stream_id, app_error_code) != 0) {
+  if (!h->http_stop_sending(stream_id, app_error_code)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::http_stop_sending(int64_t stream_id, uint64_t app_error_code) {
+std::expected Handler::http_stop_sending(int64_t stream_id,
+                                                      uint64_t app_error_code) {
   if (auto rv =
         ngtcp2_conn_shutdown_stream_read(conn_, 0, stream_id, app_error_code);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_shutdown_stream_read: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_shutdown_stream_read: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1179,22 +1178,23 @@ int http_reset_stream(nghttp3_conn *conn, int64_t stream_id,
                       uint64_t app_error_code, void *user_data,
                       void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->http_reset_stream(stream_id, app_error_code) != 0) {
+  if (!h->http_reset_stream(stream_id, app_error_code)) {
     return NGHTTP3_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::http_reset_stream(int64_t stream_id, uint64_t app_error_code) {
+std::expected Handler::http_reset_stream(int64_t stream_id,
+                                                      uint64_t app_error_code) {
   if (auto rv =
         ngtcp2_conn_shutdown_stream_write(conn_, 0, stream_id, app_error_code);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_shutdown_stream_write: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_shutdown_stream_write: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1209,15 +1209,15 @@ int http_recv_settings(nghttp3_conn *conn,
 }
 } // namespace
 
-int Handler::setup_httpconn() {
+std::expected Handler::setup_httpconn() {
   if (httpconn_) {
-    return 0;
+    return {};
   }
 
   if (ngtcp2_conn_get_streams_uni_left(conn_) < 3) {
-    std::cerr << "peer does not allow at least 3 unidirectional streams."
-              << std::endl;
-    return -1;
+    std::println(stderr,
+                 "peer does not allow at least 3 unidirectional streams.");
+    return std::unexpected{Error::QUIC};
   }
 
   nghttp3_callbacks callbacks{
@@ -1252,9 +1252,8 @@ int Handler::setup_httpconn() {
   if (auto rv =
         nghttp3_conn_server_new(&httpconn_, &callbacks, &settings, mem, this);
       rv != 0) {
-    std::cerr << "nghttp3_conn_server_new: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_server_new: {}", nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   auto params = ngtcp2_conn_get_local_transport_params(conn_);
@@ -1266,20 +1265,20 @@ int Handler::setup_httpconn() {
 
   if (auto rv = ngtcp2_conn_open_uni_stream(conn_, &ctrl_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = nghttp3_conn_bind_control_stream(httpconn_, ctrl_stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_bind_control_stream: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_bind_control_stream: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   if (!config.quiet) {
-    fprintf(stderr, "http: control stream=%" PRIx64 "\n", ctrl_stream_id);
+    std::println(stderr, "http: control stream={:#x}", ctrl_stream_id);
   }
 
   int64_t qpack_enc_stream_id, qpack_dec_stream_id;
@@ -1287,34 +1286,33 @@ int Handler::setup_httpconn() {
   if (auto rv =
         ngtcp2_conn_open_uni_stream(conn_, &qpack_enc_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv =
         ngtcp2_conn_open_uni_stream(conn_, &qpack_dec_stream_id, nullptr);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_open_uni_stream: {}",
+                 ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
   if (auto rv = nghttp3_conn_bind_qpack_streams(httpconn_, qpack_enc_stream_id,
                                                 qpack_dec_stream_id);
       rv != 0) {
-    std::cerr << "nghttp3_conn_bind_qpack_streams: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_bind_qpack_streams: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
 
   if (!config.quiet) {
-    fprintf(stderr,
-            "http: QPACK streams encoder=%" PRIx64 " decoder=%" PRIx64 "\n",
-            qpack_enc_stream_id, qpack_dec_stream_id);
+    std::println(stderr, "http: QPACK streams encoder={:#x} decoder={:#x}",
+                 qpack_enc_stream_id, qpack_dec_stream_id);
   }
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1322,20 +1320,21 @@ int extend_max_stream_data(ngtcp2_conn *conn, int64_t stream_id,
                            uint64_t max_data, void *user_data,
                            void *stream_user_data) {
   auto h = static_cast(user_data);
-  if (h->extend_max_stream_data(stream_id, max_data) != 0) {
+  if (!h->extend_max_stream_data(stream_id, max_data)) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
   return 0;
 }
 } // namespace
 
-int Handler::extend_max_stream_data(int64_t stream_id, uint64_t max_data) {
+std::expected Handler::extend_max_stream_data(int64_t stream_id,
+                                                           uint64_t max_data) {
   if (auto rv = nghttp3_conn_unblock_stream(httpconn_, stream_id); rv != 0) {
-    std::cerr << "nghttp3_conn_unblock_stream: " << nghttp3_strerror(rv)
-              << std::endl;
-    return -1;
+    std::println(stderr, "nghttp3_conn_unblock_stream: {}",
+                 nghttp3_strerror(rv));
+    return std::unexpected{Error::HTTP3};
   }
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1346,7 +1345,7 @@ int recv_tx_key(ngtcp2_conn *conn, ngtcp2_encryption_level level,
   }
 
   auto h = static_cast(user_data);
-  if (h->setup_httpconn() != 0) {
+  if (!h->setup_httpconn()) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -1367,11 +1366,12 @@ void Handler::write_qlog(const void *data, size_t datalen) {
   fwrite(data, 1, datalen, qlog_);
 }
 
-int Handler::init(const Endpoint &ep, const Address &local_addr,
-                  const Address &remote_addr, const ngtcp2_cid *dcid,
-                  const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
-                  std::span token, ngtcp2_token_type token_type,
-                  uint32_t version, TLSServerContext &tls_ctx) {
+std::expected
+Handler::init(const Endpoint &ep, const Address &local_addr,
+              const Address &remote_addr, const ngtcp2_cid *dcid,
+              const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
+              std::span token, ngtcp2_token_type token_type,
+              uint32_t version, TLSServerContext &tls_ctx) {
   auto callbacks = ngtcp2_callbacks{
     .recv_client_initial = ngtcp2_crypto_recv_client_initial_cb,
     .recv_crypto_data = ::recv_crypto_data,
@@ -1384,7 +1384,6 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
     .stream_open = stream_open,
     .stream_close = stream_close,
     .rand = rand,
-    .get_new_connection_id = get_new_connection_id,
     .remove_connection_id = remove_connection_id,
     .update_key = ::update_key,
     .path_validation = path_validation,
@@ -1393,16 +1392,18 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
     .extend_max_stream_data = ::extend_max_stream_data,
     .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb,
     .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb,
-    .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb,
     .stream_stop_sending = stream_stop_sending,
     .version_negotiation = ngtcp2_crypto_version_negotiation_cb,
     .recv_tx_key = ::recv_tx_key,
+    .get_new_connection_id2 = get_new_connection_id,
+    .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb,
   };
 
   scid_.datalen = NGTCP2_SV_SCIDLEN;
-  if (util::generate_secure_random({scid_.data, scid_.datalen}) != 0) {
-    std::cerr << "Could not generate connection ID" << std::endl;
-    return -1;
+  if (auto rv = util::generate_secure_random({scid_.data, scid_.datalen});
+      !rv) {
+    std::println(stderr, "Could not generate connection ID");
+    return rv;
   }
 
   ngtcp2_settings settings;
@@ -1430,9 +1431,9 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
     path += ".sqlog";
     qlog_ = fopen(path.c_str(), "w");
     if (qlog_ == nullptr) {
-      std::cerr << "Could not open qlog file " << std::quoted(path) << ": "
-                << strerror(errno) << std::endl;
-      return -1;
+      std::println(stderr, "Could not open qlog file {}: {}", path,
+                   strerror(errno));
+      return std::unexpected{Error::IO};
     }
     settings.qlog_write = ::write_qlog;
   }
@@ -1488,7 +1489,7 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
   if (ngtcp2_crypto_generate_stateless_reset_token(
         params.stateless_reset_token, config.static_secret.data(),
         config.static_secret.size(), &scid_) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.preferred_ipv4_addr.empty() ||
@@ -1507,20 +1508,21 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
       params.preferred_addr.ipv6_present = 1;
     }
 
-    if (util::generate_secure_random(
-          params.preferred_addr.stateless_reset_token) != 0) {
-      std::cerr << "Could not generate preferred address stateless reset token"
-                << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random(
+          params.preferred_addr.stateless_reset_token);
+        !rv) {
+      std::println(
+        stderr, "Could not generate preferred address stateless reset token");
+      return rv;
     }
 
     params.preferred_addr.cid.datalen = NGTCP2_SV_SCIDLEN;
-    if (util::generate_secure_random({params.preferred_addr.cid.data,
-                                      params.preferred_addr.cid.datalen}) !=
-        0) {
-      std::cerr << "Could not generate preferred address connection ID"
-                << std::endl;
-      return -1;
+    if (auto rv = util::generate_secure_random(
+          {params.preferred_addr.cid.data, params.preferred_addr.cid.datalen});
+        !rv) {
+      std::println(stderr,
+                   "Could not generate preferred address connection ID");
+      return rv;
     }
   }
 
@@ -1533,12 +1535,12 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
         ngtcp2_conn_server_new(&conn_, dcid, &scid_, &path, version, &callbacks,
                                &settings, ¶ms, nullptr, this);
       rv != 0) {
-    std::cerr << "ngtcp2_conn_server_new: " << ngtcp2_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_server_new: {}", ngtcp2_strerror(rv));
+    return std::unexpected{Error::QUIC};
   }
 
-  if (tls_session_.init(tls_ctx, this) != 0) {
-    return -1;
+  if (auto rv = tls_session_.init(tls_ctx, this); !rv) {
+    return rv;
   }
 
   tls_session_.enable_keylog();
@@ -1547,12 +1549,14 @@ int Handler::init(const Endpoint &ep, const Address &local_addr,
 
   ev_io_set(&wev_, ep.fd, EV_WRITE);
 
-  return 0;
+  return {};
 }
 
-int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
-                       const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                       std::span data) {
+std::expected Handler::feed_data(const Endpoint &ep,
+                                              const Address &local_addr,
+                                              const Address &remote_addr,
+                                              const ngtcp2_pkt_info *pi,
+                                              std::span data) {
   auto path = ngtcp2_path{
     .local = as_ngtcp2_addr(local_addr),
     .remote = as_ngtcp2_addr(remote_addr),
@@ -1562,15 +1566,15 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
   if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data.data(), data.size(),
                                      util::timestamp());
       rv != 0) {
-    std::cerr << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr, "ngtcp2_conn_read_pkt: {}", ngtcp2_strerror(rv));
     switch (rv) {
     case NGTCP2_ERR_DRAINING:
       start_draining_period();
-      return NETWORK_ERR_CLOSE_WAIT;
+      return std::unexpected{Error::CLOSE_WAIT};
     case NGTCP2_ERR_RETRY:
-      return NETWORK_ERR_RETRY;
+      return std::unexpected{Error::RETRY_CONN};
     case NGTCP2_ERR_DROP_CONN:
-      return NETWORK_ERR_DROP_CONN;
+      return std::unexpected{Error::DROP_CONN};
     case NGTCP2_ERR_CRYPTO:
       if (!last_error_.error_code) {
         ngtcp2_ccerr_set_tls_alert(
@@ -1585,58 +1589,57 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr,
     return handle_error();
   }
 
-  return 0;
+  return {};
 }
 
-int Handler::on_read(const Endpoint &ep, const Address &local_addr,
-                     const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                     std::span data) {
-  if (auto rv = feed_data(ep, local_addr, remote_addr, pi, data); rv != 0) {
+std::expected Handler::on_read(const Endpoint &ep,
+                                            const Address &local_addr,
+                                            const Address &remote_addr,
+                                            const ngtcp2_pkt_info *pi,
+                                            std::span data) {
+  if (auto rv = feed_data(ep, local_addr, remote_addr, pi, data); !rv) {
     return rv;
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
-int Handler::handle_expiry() {
+std::expected Handler::handle_expiry() {
   auto now = util::timestamp();
   if (auto rv = ngtcp2_conn_handle_expiry(conn_, now); rv != 0) {
-    std::cerr << "ngtcp2_conn_handle_expiry: " << ngtcp2_strerror(rv)
-              << std::endl;
+    std::println(stderr, "ngtcp2_conn_handle_expiry: {}", ngtcp2_strerror(rv));
     ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0);
     return handle_error();
   }
 
-  return 0;
+  return {};
 }
 
-int Handler::on_write() {
+std::expected Handler::on_write() {
   if (ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   if (tx_.send_blocked) {
-    if (auto rv = send_blocked_packet(); rv != 0) {
-      return rv;
-    }
+    send_blocked_packet();
 
     if (tx_.send_blocked) {
-      return 0;
+      return {};
     }
   }
 
   ev_io_stop(loop_, &wev_);
 
-  if (auto rv = write_streams(); rv != 0) {
+  if (auto rv = write_streams(); !rv) {
     return rv;
   }
 
   update_timer();
 
-  return 0;
+  return {};
 }
 
 namespace {
@@ -1663,8 +1666,8 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
       sveccnt = nghttp3_conn_writev_stream(httpconn_, &stream_id, &fin,
                                            vec.data(), vec.size());
       if (sveccnt < 0) {
-        std::cerr << "nghttp3_conn_writev_stream: "
-                  << nghttp3_strerror(static_cast(sveccnt)) << std::endl;
+        std::println(stderr, "nghttp3_conn_writev_stream: {}",
+                     nghttp3_strerror(static_cast(sveccnt)));
         ngtcp2_ccerr_set_application_error(
           &last_error_,
           nghttp3_err_infer_quic_app_error_code(static_cast(sveccnt)),
@@ -1701,8 +1704,8 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
         if (auto rv = nghttp3_conn_add_write_offset(httpconn_, stream_id,
                                                     as_unsigned(ndatalen));
             rv != 0) {
-          std::cerr << "nghttp3_conn_add_write_offset: " << nghttp3_strerror(rv)
-                    << std::endl;
+          std::println(stderr, "nghttp3_conn_add_write_offset: {}",
+                       nghttp3_strerror(rv));
           ngtcp2_ccerr_set_application_error(
             &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr,
             0);
@@ -1713,8 +1716,8 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
 
       assert(ndatalen == -1);
 
-      std::cerr << "ngtcp2_conn_writev_stream: "
-                << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+      std::println(stderr, "ngtcp2_conn_writev_stream: {}",
+                   ngtcp2_strerror(static_cast(nwrite)));
       ngtcp2_ccerr_set_liberr(&last_error_, static_cast(nwrite), nullptr,
                               0);
       return NGTCP2_ERR_CALLBACK_FAILURE;
@@ -1724,8 +1727,8 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
       if (auto rv = nghttp3_conn_add_write_offset(httpconn_, stream_id,
                                                   as_unsigned(ndatalen));
           rv != 0) {
-        std::cerr << "nghttp3_conn_add_write_offset: " << nghttp3_strerror(rv)
-                  << std::endl;
+        std::println(stderr, "nghttp3_conn_add_write_offset: {}",
+                     nghttp3_strerror(rv));
         ngtcp2_ccerr_set_application_error(
           &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr, 0);
         return NGTCP2_ERR_CALLBACK_FAILURE;
@@ -1736,7 +1739,7 @@ ngtcp2_ssize Handler::write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi,
   }
 }
 
-int Handler::write_streams() {
+std::expected Handler::write_streams() {
   ngtcp2_path_storage ps;
   ngtcp2_pkt_info pi;
   size_t gso_size;
@@ -1756,31 +1759,31 @@ int Handler::write_streams() {
   ngtcp2_conn_update_pkt_tx_time(conn_, ts);
 
   if (nwrite == 0) {
-    return 0;
+    return {};
   }
 
   send_packet(ps.path, pi.ecn, txbuf.first(static_cast(nwrite)),
               gso_size);
 
-  return 0;
+  return {};
 }
 
-int Handler::send_packet(const ngtcp2_path &path, unsigned int ecn,
-                         std::span data, size_t gso_size) {
+std::expected Handler::send_packet(const ngtcp2_path &path,
+                                                unsigned int ecn,
+                                                std::span data,
+                                                size_t gso_size) {
   auto &ep = *static_cast(path.user_data);
-  auto [rest, rv] = server_->send_packet(ep, no_gso_, path.local, path.remote,
-                                         ecn, data, gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  auto rest = server_->send_packet(ep, no_gso_, path.local, path.remote, ecn,
+                                   data, gso_size);
+  if (!rest.empty()) {
     on_send_blocked(path, ecn, rest, gso_size);
 
     start_wev_endpoint(ep);
 
-    return rv;
+    return std::unexpected{Error::SEND_BLOCKED};
   }
 
-  return 0;
+  return {};
 }
 
 void Handler::on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
@@ -1815,27 +1818,23 @@ void Handler::start_wev_endpoint(const Endpoint &ep) {
   ev_io_start(loop_, &wev_);
 }
 
-int Handler::send_blocked_packet() {
+void Handler::send_blocked_packet() {
   assert(tx_.send_blocked);
 
   auto &p = tx_.blocked;
 
-  auto [rest, rv] = server_->send_packet(
+  auto rest = server_->send_packet(
     *p.endpoint, no_gso_, as_ngtcp2_addr(p.local_addr),
     as_ngtcp2_addr(p.remote_addr), p.ecn, p.data, p.gso_size);
-  if (rv != 0) {
-    assert(NETWORK_ERR_SEND_BLOCKED == rv);
-
+  if (!rest.empty()) {
     p.data = rest;
 
     start_wev_endpoint(*p.endpoint);
 
-    return 0;
+    return;
   }
 
   tx_.send_blocked = false;
-
-  return 0;
 }
 
 void Handler::signal_write() { ev_io_start(loop_, &wev_); }
@@ -1849,15 +1848,15 @@ void Handler::start_draining_period() {
   ev_timer_again(loop_, &timer_);
 
   if (!config.quiet) {
-    std::cerr << "Draining period has started (" << timer_.repeat << " seconds)"
-              << std::endl;
+    std::println(stderr, "Draining period has started ({:.9f} seconds)",
+                 timer_.repeat);
   }
 }
 
-int Handler::start_closing_period() {
+std::expected Handler::start_closing_period() {
   if (!conn_ || ngtcp2_conn_in_closing_period(conn_) ||
       ngtcp2_conn_in_draining_period(conn_)) {
-    return 0;
+    return {};
   }
 
   ev_io_stop(loop_, &wev_);
@@ -1868,8 +1867,8 @@ int Handler::start_closing_period() {
   ev_timer_again(loop_, &timer_);
 
   if (!config.quiet) {
-    std::cerr << "Closing period has started (" << timer_.repeat << " seconds)"
-              << std::endl;
+    std::println(stderr, "Closing period has started ({:.9f} seconds)",
+                 timer_.repeat);
   }
 
   conn_closebuf_ = std::make_unique(NGTCP2_MAX_UDP_PAYLOAD_SIZE);
@@ -1883,43 +1882,43 @@ int Handler::start_closing_period() {
     conn_, &ps.path, &pi, conn_closebuf_->wpos(), conn_closebuf_->left(),
     &last_error_, util::timestamp());
   if (n < 0) {
-    std::cerr << "ngtcp2_conn_write_connection_close: "
-              << ngtcp2_strerror(static_cast(n)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_conn_write_connection_close: {}",
+                 ngtcp2_strerror(static_cast(n)));
+    return std::unexpected{Error::QUIC};
   }
 
   if (n == 0) {
-    return 0;
+    return {};
   }
 
   conn_closebuf_->push(as_unsigned(n));
 
-  return 0;
+  return {};
 }
 
-int Handler::handle_error() {
+std::expected Handler::handle_error() {
   if (last_error_.type == NGTCP2_CCERR_TYPE_IDLE_CLOSE) {
-    return -1;
+    return std::unexpected{Error::INTERNAL};
   }
 
-  if (start_closing_period() != 0) {
-    return -1;
+  if (auto rv = start_closing_period(); !rv) {
+    return rv;
   }
 
   if (ngtcp2_conn_in_draining_period(conn_)) {
-    return NETWORK_ERR_CLOSE_WAIT;
+    return std::unexpected{Error::CLOSE_WAIT};
   }
 
-  if (auto rv = send_conn_close(); rv != NETWORK_ERR_OK) {
+  if (auto rv = send_conn_close(); !rv) {
     return rv;
   }
 
-  return NETWORK_ERR_CLOSE_WAIT;
+  return std::unexpected{Error::CLOSE_WAIT};
 }
 
-int Handler::send_conn_close() {
+std::expected Handler::send_conn_close() {
   if (!config.quiet) {
-    std::cerr << "Closing Period: TX CONNECTION_CLOSE" << std::endl;
+    std::println(stderr, "Closing Period: TX CONNECTION_CLOSE");
   }
 
   assert(conn_closebuf_ && conn_closebuf_->size());
@@ -1933,10 +1932,10 @@ int Handler::send_conn_close() {
                               /* ecn = */ 0, conn_closebuf_->data());
 }
 
-int Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
-                             const Address &remote_addr,
-                             const ngtcp2_pkt_info *pi,
-                             std::span data) {
+std::expected
+Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
+                         const Address &remote_addr, const ngtcp2_pkt_info *pi,
+                         std::span data) {
   assert(conn_closebuf_ && conn_closebuf_->size());
 
   close_wait_.bytes_recv += data.size();
@@ -1945,20 +1944,20 @@ int Handler::send_conn_close(const Endpoint &ep, const Address &local_addr,
   if (close_wait_.num_pkts_recv < close_wait_.next_pkts_recv ||
       close_wait_.bytes_recv * 3 <
         close_wait_.bytes_sent + conn_closebuf_->size()) {
-    return 0;
+    return {};
   }
 
-  auto rv = server_->send_packet(ep, as_ngtcp2_addr(local_addr),
-                                 as_ngtcp2_addr(remote_addr),
-                                 /* ecn = */ 0, conn_closebuf_->data());
-  if (rv != 0) {
+  if (auto rv = server_->send_packet(ep, as_ngtcp2_addr(local_addr),
+                                     as_ngtcp2_addr(remote_addr),
+                                     /* ecn = */ 0, conn_closebuf_->data());
+      !rv) {
     return rv;
   }
 
   close_wait_.bytes_sent += conn_closebuf_->size();
   close_wait_.next_pkts_recv *= 2;
 
-  return 0;
+  return {};
 }
 
 void Handler::update_timer() {
@@ -1968,8 +1967,7 @@ void Handler::update_timer() {
   if (expiry <= now) {
     if (!config.quiet) {
       auto t = static_cast(now - expiry) / NGTCP2_SECONDS;
-      std::cerr << "Timer has already expired: " << std::fixed << t << "s"
-                << std::defaultfloat << std::endl;
+      std::println(stderr, "Timer has already expired: {:.9f}s", t);
     }
 
     ev_feed_event(loop_, &timer_, EV_TIMER);
@@ -1979,48 +1977,49 @@ void Handler::update_timer() {
 
   auto t = static_cast(expiry - now) / NGTCP2_SECONDS;
   if (!config.quiet) {
-    std::cerr << "Set timer=" << std::fixed << t << "s" << std::defaultfloat
-              << std::endl;
+    std::println(stderr, "Set timer={:.9f}s", t);
   }
   timer_.repeat = t;
   ev_timer_again(loop_, &timer_);
 }
 
-int Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
-                              std::span data) {
+std::expected
+Handler::recv_stream_data(uint32_t flags, int64_t stream_id,
+                          std::span data) {
   if (!config.quiet && !config.no_quic_dump) {
     debug::print_stream_data(stream_id, data);
   }
 
   if (!httpconn_) {
-    return 0;
+    return {};
   }
 
   auto nconsumed = nghttp3_conn_read_stream2(
     httpconn_, stream_id, data.data(), data.size(),
     flags & NGTCP2_STREAM_DATA_FLAG_FIN, ngtcp2_conn_get_timestamp(conn_));
   if (nconsumed < 0) {
-    std::cerr << "nghttp3_conn_read_stream2: "
-              << nghttp3_strerror(static_cast(nconsumed)) << std::endl;
+    std::println(stderr, "nghttp3_conn_read_stream2: {}",
+                 nghttp3_strerror(static_cast(nconsumed)));
     ngtcp2_ccerr_set_application_error(
       &last_error_,
       nghttp3_err_infer_quic_app_error_code(static_cast(nconsumed)),
       nullptr, 0);
-    return -1;
+    return std::unexpected{Error::HTTP3};
   }
 
   ngtcp2_conn_extend_max_stream_offset(conn_, stream_id,
                                        static_cast(nconsumed));
   ngtcp2_conn_extend_max_offset(conn_, static_cast(nconsumed));
 
-  return 0;
+  return {};
 }
 
-int Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                        ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                        ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                        const uint8_t *current_rx_secret,
-                        const uint8_t *current_tx_secret, size_t secretlen) {
+std::expected
+Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+                    ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+                    ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+                    const uint8_t *current_rx_secret,
+                    const uint8_t *current_tx_secret, size_t secretlen) {
   auto crypto_ctx = ngtcp2_conn_get_crypto_ctx(conn_);
   auto aead = &crypto_ctx->aead;
   auto keylen = ngtcp2_crypto_aead_keylen(aead);
@@ -2034,26 +2033,27 @@ int Handler::update_key(uint8_t *rx_secret, uint8_t *tx_secret,
                                rx_key.data(), rx_iv, tx_aead_ctx, tx_key.data(),
                                tx_iv, current_rx_secret, current_tx_secret,
                                secretlen) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet && config.show_secret) {
-    std::cerr << "application_traffic rx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic rx secret {}", nkey_update_);
     debug::print_secrets({rx_secret, secretlen}, {rx_key.data(), keylen},
                          {rx_iv, ivlen});
-    std::cerr << "application_traffic tx secret " << nkey_update_ << std::endl;
+    std::println(stderr, "application_traffic tx secret {}", nkey_update_);
     debug::print_secrets({tx_secret, secretlen}, {tx_key.data(), keylen},
                          {tx_iv, ivlen});
   }
 
-  return 0;
+  return {};
 }
 
 Server *Handler::server() const { return server_; }
 
-int Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
+std::expected Handler::on_stream_close(int64_t stream_id,
+                                                    uint64_t app_error_code) {
   if (!config.quiet) {
-    std::cerr << "QUIC stream " << stream_id << " closed" << std::endl;
+    std::println(stderr, "QUIC stream {:#x} closed", stream_id);
   }
 
   if (httpconn_) {
@@ -2072,15 +2072,15 @@ int Handler::on_stream_close(int64_t stream_id, uint64_t app_error_code) {
       }
       break;
     default:
-      std::cerr << "nghttp3_conn_close_stream: " << nghttp3_strerror(rv)
-                << std::endl;
+      std::println(stderr, "nghttp3_conn_close_stream: {}",
+                   nghttp3_strerror(rv));
       ngtcp2_ccerr_set_application_error(
         &last_error_, nghttp3_err_infer_quic_app_error_code(rv), nullptr, 0);
-      return -1;
+      return std::unexpected{Error::HTTP3};
     }
   }
 
-  return 0;
+  return {};
 }
 
 void Handler::shutdown_read(int64_t stream_id, uint64_t app_error_code) {
@@ -2150,8 +2150,8 @@ void Server::close() {
 }
 
 namespace {
-int create_sock(Address &local_addr, const char *addr, const char *port,
-                int family) {
+std::expected create_sock(Address &local_addr, const char *addr,
+                                      const char *port, int family) {
   addrinfo hints{
     .ai_flags = AI_PASSIVE,
     .ai_family = family,
@@ -2165,8 +2165,8 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   }
 
   if (auto rv = getaddrinfo(addr, port, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   auto res_d = defer([res] { freeaddrinfo(res); });
@@ -2174,12 +2174,14 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   int fd = -1;
 
   for (rp = res; rp; rp = rp->ai_next) {
-    fd = util::create_nonblock_socket(rp->ai_family, rp->ai_socktype,
-                                      rp->ai_protocol);
-    if (fd == -1) {
+    auto maybe_fd = util::create_nonblock_socket(rp->ai_family, rp->ai_socktype,
+                                                 rp->ai_protocol);
+    if (!maybe_fd) {
       continue;
     }
 
+    fd = *maybe_fd;
+
     if (rp->ai_family == AF_INET6) {
       if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val,
                      static_cast(sizeof(val))) == -1) {
@@ -2217,16 +2219,16 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
   }
 
   if (!rp) {
-    std::cerr << "Could not bind" << std::endl;
-    return -1;
+    std::println(stderr, "Could not bind");
+    return std::unexpected{Error::SYSCALL};
   }
 
   sockaddr_storage ss;
   socklen_t len = sizeof(ss);
   if (getsockname(fd, reinterpret_cast(&ss), &len) == -1) {
-    std::cerr << "getsockname: " << strerror(errno) << std::endl;
+    std::println(stderr, "getsockname: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   local_addr.set(reinterpret_cast(&ss));
@@ -2237,61 +2239,65 @@ int create_sock(Address &local_addr, const char *addr, const char *port,
 } // namespace
 
 namespace {
-int add_endpoint(std::vector &endpoints, const char *addr,
-                 const char *port, int af) {
+std::expected add_endpoint(std::vector &endpoints,
+                                        const char *addr, const char *port,
+                                        int af) {
   Address dest;
-  auto fd = create_sock(dest, addr, port, af);
-  if (fd == -1) {
-    return -1;
+  auto maybe_fd = create_sock(dest, addr, port, af);
+  if (!maybe_fd) {
+    return std::unexpected{maybe_fd.error()};
   }
 
   endpoints.emplace_back();
   auto &ep = endpoints.back();
   ep.addr = dest;
-  ep.fd = fd;
+  ep.fd = *maybe_fd;
   ev_io_init(&ep.rev, sreadcb, 0, EV_READ);
   ev_set_priority(&ep.rev, EV_MAXPRI);
 
-  return 0;
+  return {};
 }
 } // namespace
 
 namespace {
-int add_endpoint(std::vector &endpoints, const Address &addr) {
+std::expected add_endpoint(std::vector &endpoints,
+                                        const Address &addr) {
   auto family = addr.family();
 
-  auto fd = util::create_nonblock_socket(family, SOCK_DGRAM, 0);
-  if (fd == -1) {
-    std::cerr << "socket: " << strerror(errno) << std::endl;
-    return -1;
+  auto maybe_fd = util::create_nonblock_socket(family, SOCK_DGRAM, 0);
+  if (!maybe_fd) {
+    std::println(stderr, "socket: {}", strerror(errno));
+    return std::unexpected{maybe_fd.error()};
   }
 
+  auto fd = *maybe_fd;
+
   int val = 1;
   if (family == AF_INET6) {
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
       close(fd);
-      return -1;
+      return std::unexpected{Error::SYSCALL};
     }
 
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
       close(fd);
-      return -1;
+      return std::unexpected{Error::SYSCALL};
     }
   } else if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &val,
                         static_cast(sizeof(val))) == -1) {
-    std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+    std::println(stderr, "setsockopt: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val,
                  static_cast(sizeof(val))) == -1) {
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   fd_set_recv_ecn(fd, family);
@@ -2300,9 +2306,9 @@ int add_endpoint(std::vector &endpoints, const Address &addr) {
   fd_set_udp_gro(fd);
 
   if (bind(fd, addr.as_sockaddr(), addr.size()) == -1) {
-    std::cerr << "bind: " << strerror(errno) << std::endl;
+    std::println(stderr, "bind: {}", strerror(errno));
     close(fd);
-    return -1;
+    return std::unexpected{Error::SYSCALL};
   }
 
   endpoints.emplace_back(Endpoint{});
@@ -2312,33 +2318,44 @@ int add_endpoint(std::vector &endpoints, const Address &addr) {
   ev_io_init(&ep.rev, sreadcb, 0, EV_READ);
   ev_set_priority(&ep.rev, EV_MAXPRI);
 
-  return 0;
+  return {};
 }
 } // namespace
 
-int Server::init(const char *addr, const char *port) {
+std::expected Server::init(const char *addr, const char *port) {
   endpoints_.reserve(4);
 
   auto ready = false;
-  if (!util::numeric_host(addr, AF_INET6) &&
-      add_endpoint(endpoints_, addr, port, AF_INET) == 0) {
-    ready = true;
+  auto error = Error::INTERNAL;
+
+  if (!util::numeric_host(addr, AF_INET6)) {
+    if (auto rv = add_endpoint(endpoints_, addr, port, AF_INET); !rv) {
+      error = rv.error();
+    } else {
+      ready = true;
+    }
   }
-  if (!util::numeric_host(addr, AF_INET) &&
-      add_endpoint(endpoints_, addr, port, AF_INET6) == 0) {
-    ready = true;
+  if (!util::numeric_host(addr, AF_INET)) {
+    if (auto rv = add_endpoint(endpoints_, addr, port, AF_INET6); !rv) {
+      error = rv.error();
+    } else {
+      ready = true;
+    }
   }
   if (!ready) {
-    return -1;
+    return std::unexpected{error};
   }
 
-  if (!config.preferred_ipv4_addr.empty() &&
-      add_endpoint(endpoints_, config.preferred_ipv4_addr) != 0) {
-    return -1;
+  if (!config.preferred_ipv4_addr.empty()) {
+    if (auto rv = add_endpoint(endpoints_, config.preferred_ipv4_addr); !rv) {
+      return rv;
+    }
   }
-  if (!config.preferred_ipv6_addr.empty() &&
-      add_endpoint(endpoints_, config.preferred_ipv6_addr) != 0) {
-    return -1;
+
+  if (!config.preferred_ipv6_addr.empty()) {
+    if (auto rv = add_endpoint(endpoints_, config.preferred_ipv6_addr); !rv) {
+      return rv;
+    }
   }
 
   for (auto &ep : endpoints_) {
@@ -2352,10 +2369,10 @@ int Server::init(const char *addr, const char *port) {
 
   ev_signal_start(loop_, &sigintev_);
 
-  return 0;
+  return {};
 }
 
-int Server::on_read(const Endpoint &ep) {
+void Server::on_read(const Endpoint &ep) {
   sockaddr_storage ss;
   std::array buf;
   size_t pktcnt = 0;
@@ -2381,7 +2398,7 @@ int Server::on_read(const Endpoint &ep) {
   for (; pktcnt < MAX_RECV_PKTS;) {
     if (util::recv_pkt_time_threshold_exceeded(
           config.cc_algo == NGTCP2_CC_ALGO_BBR, start, pktcnt)) {
-      return 0;
+      return;
     }
 
     msg.msg_namelen = sizeof(ss);
@@ -2390,9 +2407,9 @@ int Server::on_read(const Endpoint &ep) {
     auto nread = recvmsg(ep.fd, &msg, 0);
     if (nread == -1) {
       if (!(errno == EAGAIN || errno == ENOTCONN)) {
-        std::cerr << "recvmsg: " << strerror(errno) << std::endl;
+        std::println(stderr, "recvmsg: {}", strerror(errno));
       }
-      return 0;
+      return;
     }
 
     // Packets less than 21 bytes never be a valid QUIC packet.
@@ -2415,7 +2432,7 @@ int Server::on_read(const Endpoint &ep) {
     auto local_addr = msghdr_get_local_addr(&msg, ss.ss_family);
     if (!local_addr) {
       ++pktcnt;
-      std::cerr << "Unable to obtain local address" << std::endl;
+      std::println(stderr, "Unable to obtain local address");
       continue;
     }
 
@@ -2435,11 +2452,11 @@ int Server::on_read(const Endpoint &ep) {
 
       if (!config.quiet) {
         std::array ifname;
-        std::cerr << "Received packet: local=" << util::straddr(*local_addr)
-                  << " remote=" << util::straddr(remote_addr) << " if="
-                  << if_indextoname(local_addr->ifindex, ifname.data())
-                  << " ecn=0x" << std::hex << static_cast(pi.ecn)
-                  << std::dec << " " << datalen << " bytes" << std::endl;
+        std::println(
+          stderr,
+          "Received packet: local={} remote={} if={} ecn={:#x} {} bytes",
+          util::straddr(*local_addr), util::straddr(remote_addr),
+          if_indextoname(local_addr->ifindex, ifname.data()), pi.ecn, datalen);
       }
 
       // Packets less than 21 bytes never be a valid QUIC packet.
@@ -2449,7 +2466,7 @@ int Server::on_read(const Endpoint &ep) {
 
       if (debug::packet_lost(config.rx_loss_prob)) {
         if (!config.quiet) {
-          std::cerr << "** Simulated incoming packet loss **" << std::endl;
+          std::println(stderr, "** Simulated incoming packet loss **");
         }
       } else {
         read_pkt(ep, *local_addr, remote_addr, &pi, {data.data(), datalen});
@@ -2458,8 +2475,6 @@ int Server::on_read(const Endpoint &ep) {
       data = data.subspan(datalen);
     }
   }
-
-  return 0;
 }
 
 void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
@@ -2478,8 +2493,9 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
                              remote_addr);
     return;
   default:
-    std::cerr << "Could not decode version and CID from QUIC packet header: "
-              << ngtcp2_strerror(rv) << std::endl;
+    std::println(stderr,
+                 "Could not decode version and CID from QUIC packet header: {}",
+                 ngtcp2_strerror(rv));
     return;
   }
 
@@ -2491,8 +2507,8 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
     if (auto rv = ngtcp2_accept(&hd, data.data(), data.size()); rv != 0) {
       if (!config.quiet) {
-        std::cerr << "Unexpected packet received: length=" << data.size()
-                  << std::endl;
+        std::println(stderr, "Unexpected packet received: length={}",
+                     data.size());
       }
 
       if (!(data[0] & 0x80) && data.size() >= NGTCP2_SV_SCIDLEN + 21) {
@@ -2510,7 +2526,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     assert(hd.type == NGTCP2_PKT_INITIAL);
 
     if (config.validate_addr || hd.tokenlen) {
-      std::cerr << "Perform stateless address validation" << std::endl;
+      std::println(stderr, "Perform stateless address validation");
       if (hd.tokenlen == 0) {
         send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
         return;
@@ -2524,23 +2540,23 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
       switch (hd.token[0]) {
       case NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY2:
-        switch (verify_retry_token(&ocid, &hd, remote_addr)) {
-        case 0:
-          pocid = &ocid;
-          token_type = NGTCP2_TOKEN_TYPE_RETRY;
-          break;
-        case -1:
-          send_stateless_connection_close(&hd, ep, local_addr, remote_addr);
-          return;
-        case 1:
+        if (auto rv = verify_retry_token(&ocid, &hd, remote_addr); !rv) {
+          if (rv.error() != Error::UNREADABLE_TOKEN) {
+            send_stateless_connection_close(&hd, ep, local_addr, remote_addr);
+
+            return;
+          }
+
           hd.token = nullptr;
           hd.tokenlen = 0;
-          break;
+        } else {
+          pocid = &ocid;
+          token_type = NGTCP2_TOKEN_TYPE_RETRY;
         }
 
         break;
       case NGTCP2_CRYPTO_TOKEN_MAGIC_REGULAR:
-        if (verify_token(&hd, remote_addr) != 0) {
+        if (!verify_token(&hd, remote_addr)) {
           if (config.validate_addr) {
             send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
             return;
@@ -2554,7 +2570,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
         break;
       default:
         if (!config.quiet) {
-          std::cerr << "Ignore unrecognized token" << std::endl;
+          std::println(stderr, "Ignore unrecognized token");
         }
         if (config.validate_addr) {
           send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
@@ -2568,23 +2584,20 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     }
 
     auto h = std::make_unique(loop_, this);
-    if (h->init(ep, local_addr, remote_addr, &hd.scid, &hd.dcid, pocid,
-                {hd.token, hd.tokenlen}, token_type, hd.version,
-                tls_ctx_) != 0) {
+    if (!h->init(ep, local_addr, remote_addr, &hd.scid, &hd.dcid, pocid,
+                 {hd.token, hd.tokenlen}, token_type, hd.version, tls_ctx_)) {
       return;
     }
 
-    switch (h->on_read(ep, local_addr, remote_addr, pi, data)) {
-    case 0:
-      break;
-    case NETWORK_ERR_RETRY:
-      send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
-      return;
-    default:
+    if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); !rv) {
+      if (rv.error() == Error::RETRY_CONN) {
+        send_retry(&hd, ep, local_addr, remote_addr, data.size() * 3);
+      }
+
       return;
     }
 
-    if (h->on_write() != 0) {
+    if (!h->on_write()) {
       return;
     }
 
@@ -2609,7 +2622,7 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
   auto h = (*handler_it).second;
   auto conn = h->conn();
   if (ngtcp2_conn_in_closing_period(conn)) {
-    if (h->send_conn_close(ep, local_addr, remote_addr, pi, data) != 0) {
+    if (!h->send_conn_close(ep, local_addr, remote_addr, pi, data)) {
       remove(h);
     }
     return;
@@ -2618,8 +2631,8 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
     return;
   }
 
-  if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); rv != 0) {
-    if (rv != NETWORK_ERR_CLOSE_WAIT) {
+  if (auto rv = h->on_read(ep, local_addr, remote_addr, pi, data); !rv) {
+    if (rv.error() != Error::CLOSE_WAIT) {
       remove(h);
     }
     return;
@@ -2630,32 +2643,30 @@ void Server::read_pkt(const Endpoint &ep, const Address &local_addr,
 
 namespace {
 uint32_t generate_reserved_version(const Address &addr, uint32_t version) {
-  uint32_t h = 0x811C9DC5u;
+  uint32_t h = 0x811C9DC5U;
   const uint8_t *p = reinterpret_cast(addr.as_sockaddr());
   const uint8_t *ep = p + addr.size();
   for (; p != ep; ++p) {
     h ^= *p;
-    h *= 0x01000193u;
+    h *= 0x01000193U;
   }
   version = htonl(version);
   p = (const uint8_t *)&version;
   ep = p + sizeof(version);
   for (; p != ep; ++p) {
     h ^= *p;
-    h *= 0x01000193u;
+    h *= 0x01000193U;
   }
-  h &= 0xf0f0f0f0u;
-  h |= 0x0a0a0a0au;
+  h &= 0xF0F0F0F0U;
+  h |= 0x0A0A0A0AU;
   return h;
 }
 } // namespace
 
-int Server::send_version_negotiation(uint32_t version,
-                                     std::span dcid,
-                                     std::span scid,
-                                     const Endpoint &ep,
-                                     const Address &local_addr,
-                                     const Address &remote_addr) {
+std::expected Server::send_version_negotiation(
+  uint32_t version, std::span dcid,
+  std::span scid, const Endpoint &ep, const Address &local_addr,
+  const Address &remote_addr) {
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
   std::array sv;
 
@@ -2676,24 +2687,23 @@ int Server::send_version_negotiation(uint32_t version,
     dcid.data(), dcid.size(), scid.data(), scid.size(), sv.data(),
     as_unsigned(p - std::ranges::begin(sv)));
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_pkt_write_version_negotiation: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_pkt_write_version_negotiation: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
-                       const Address &local_addr, const Address &remote_addr,
-                       size_t max_pktlen) {
+std::expected Server::send_retry(const ngtcp2_pkt_hd *chd,
+                                              const Endpoint &ep,
+                                              const Address &local_addr,
+                                              const Address &remote_addr,
+                                              size_t max_pktlen) {
   std::array host;
   std::array port;
 
@@ -2701,89 +2711,85 @@ int Server::send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
                             host.data(), host.size(), port.data(), port.size(),
                             NI_NUMERICHOST | NI_NUMERICSERV);
       rv != 0) {
-    std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Sending Retry packet to [" << host.data()
-              << "]:" << port.data() << std::endl;
+    std::println(stderr, "Sending Retry packet to [{}]:{}", host.data(),
+                 port.data());
   }
 
   ngtcp2_cid scid;
 
   scid.datalen = NGTCP2_SV_SCIDLEN;
-  if (util::generate_secure_random({scid.data, scid.datalen}) != 0) {
-    return -1;
+  if (auto rv = util::generate_secure_random({scid.data, scid.datalen}); !rv) {
+    return rv;
   }
 
-  std::array token;
+  std::array tokenbuf;
 
   auto t = util::system_clock_now();
 
   auto tokenlen = ngtcp2_crypto_generate_retry_token2(
-    token.data(), config.static_secret.data(), config.static_secret.size(),
+    tokenbuf.data(), config.static_secret.data(), config.static_secret.size(),
     chd->version, remote_addr.as_sockaddr(), remote_addr.size(), &scid,
     &chd->dcid, t);
   if (tokenlen < 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
+  auto token = std::span{tokenbuf}.first(as_unsigned(tokenlen));
+
   if (!config.quiet) {
-    std::cerr << "Generated address validation token:" << std::endl;
-    util::hexdump(stderr, token.data(), as_unsigned(tokenlen));
+    std::println(stderr, "Generated address validation token:");
+    util::hexdump(stderr, token);
   }
 
   Buffer buf{
     std::min(static_cast(NGTCP2_MAX_UDP_PAYLOAD_SIZE), max_pktlen)};
 
-  auto nwrite = ngtcp2_crypto_write_retry(buf.wpos(), buf.left(), chd->version,
-                                          &chd->scid, &scid, &chd->dcid,
-                                          token.data(), as_unsigned(tokenlen));
+  auto nwrite =
+    ngtcp2_crypto_write_retry(buf.wpos(), buf.left(), chd->version, &chd->scid,
+                              &scid, &chd->dcid, token.data(), token.size());
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_crypto_write_retry failed" << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_crypto_write_retry failed");
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_stateless_connection_close(const ngtcp2_pkt_hd *chd,
-                                            const Endpoint &ep,
-                                            const Address &local_addr,
-                                            const Address &remote_addr) {
+std::expected Server::send_stateless_connection_close(
+  const ngtcp2_pkt_hd *chd, const Endpoint &ep, const Address &local_addr,
+  const Address &remote_addr) {
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
 
   auto nwrite = ngtcp2_crypto_write_connection_close(
     buf.wpos(), buf.left(), chd->version, &chd->scid, &chd->dcid,
     NGTCP2_INVALID_TOKEN, nullptr, 0);
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_crypto_write_connection_close failed" << std::endl;
-    return -1;
+    std::println(stderr, "ngtcp2_crypto_write_connection_close failed");
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::send_stateless_reset(size_t pktlen, std::span dcid,
-                                 const Endpoint &ep, const Address &local_addr,
-                                 const Address &remote_addr) {
+std::expected
+Server::send_stateless_reset(size_t pktlen, std::span dcid,
+                             const Endpoint &ep, const Address &local_addr,
+                             const Address &remote_addr) {
   if (stateless_reset_bucket_ == 0) {
-    return 0;
+    return {};
   }
 
   --stateless_reset_bucket_;
@@ -2796,12 +2802,12 @@ int Server::send_stateless_reset(size_t pktlen, std::span dcid,
 
   ngtcp2_cid_init(&cid, dcid.data(), dcid.size());
 
-  std::array token;
+  ngtcp2_stateless_reset_token token;
 
   if (ngtcp2_crypto_generate_stateless_reset_token(
-        token.data(), config.static_secret.data(), config.static_secret.size(),
+        token.data, config.static_secret.data(), config.static_secret.size(),
         &cid) != 0) {
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   // SCID + minimum expansion - NGTCP2_STATELESS_RESET_TOKENLEN
@@ -2820,33 +2826,33 @@ int Server::send_stateless_reset(size_t pktlen, std::span dcid,
 
   std::array rand_bytes;
 
-  if (util::generate_secure_random({rand_bytes.data(), rand_byteslen}) != 0) {
-    return -1;
+  if (auto rv =
+        util::generate_secure_random({rand_bytes.data(), rand_byteslen});
+      !rv) {
+    return rv;
   }
 
   Buffer buf{NGTCP2_MAX_UDP_PAYLOAD_SIZE};
 
-  auto nwrite = ngtcp2_pkt_write_stateless_reset(
-    buf.wpos(), buf.left(), token.data(), rand_bytes.data(), rand_byteslen);
+  auto nwrite = ngtcp2_pkt_write_stateless_reset2(
+    buf.wpos(), buf.left(), &token, rand_bytes.data(), rand_byteslen);
   if (nwrite < 0) {
-    std::cerr << "ngtcp2_pkt_write_stateless_reset: "
-              << ngtcp2_strerror(static_cast(nwrite)) << std::endl;
+    std::println(stderr, "ngtcp2_pkt_write_stateless_reset2: {}",
+                 ngtcp2_strerror(static_cast(nwrite)));
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   buf.push(as_unsigned(nwrite));
 
-  if (send_packet(ep, as_ngtcp2_addr(local_addr), as_ngtcp2_addr(remote_addr),
-                  /* ecn = */ 0, buf.data()) != NETWORK_ERR_OK) {
-    return -1;
-  }
-
-  return 0;
+  return send_packet(ep, as_ngtcp2_addr(local_addr),
+                     as_ngtcp2_addr(remote_addr),
+                     /* ecn = */ 0, buf.data());
 }
 
-int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
-                               const Address &remote_addr) {
+std::expected
+Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
+                           const Address &remote_addr) {
   int rv;
 
   if (!config.quiet) {
@@ -2857,13 +2863,13 @@ int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
                               host.data(), host.size(), port.data(),
                               port.size(), NI_NUMERICHOST | NI_NUMERICSERV);
         rv != 0) {
-      std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-      return -1;
+      std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+      return std::unexpected{Error::LIBC};
     }
 
-    std::cerr << "Verifying Retry token from [" << host.data()
-              << "]:" << port.data() << std::endl;
-    util::hexdump(stderr, hd->token, hd->tokenlen);
+    std::println(stderr, "Verifying Retry token from [{}]:{}", host.data(),
+                 port.data());
+    util::hexdump(stderr, {hd->token, hd->tokenlen});
   }
 
   auto t = util::system_clock_now();
@@ -2876,24 +2882,25 @@ int Server::verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
   case 0:
     break;
   case NGTCP2_CRYPTO_ERR_VERIFY_TOKEN:
-    std::cerr << "Could not verify Retry token" << std::endl;
+    std::println(stderr, "Could not verify Retry token");
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   default:
-    std::cerr << "Could not read Retry token.  Continue without the token"
-              << std::endl;
+    std::println(stderr,
+                 "Could not read Retry token.  Continue without the token");
 
-    return 1;
+    return std::unexpected{Error::UNREADABLE_TOKEN};
   }
 
   if (!config.quiet) {
-    std::cerr << "Token was successfully validated" << std::endl;
+    std::println(stderr, "Token was successfully validated");
   }
 
-  return 0;
+  return {};
 }
 
-int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
+std::expected Server::verify_token(const ngtcp2_pkt_hd *hd,
+                                                const Address &remote_addr) {
   std::array host;
   std::array port;
 
@@ -2901,14 +2908,14 @@ int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
                             host.data(), host.size(), port.data(), port.size(),
                             NI_NUMERICHOST | NI_NUMERICSERV);
       rv != 0) {
-    std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getnameinfo: {}", gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Verifying token from [" << host.data() << "]:" << port.data()
-              << std::endl;
-    util::hexdump(stderr, hd->token, hd->tokenlen);
+    std::println(stderr, "Verifying token from [{}]:{}", host.data(),
+                 port.data());
+    util::hexdump(stderr, {hd->token, hd->tokenlen});
   }
 
   auto t = util::system_clock_now();
@@ -2917,56 +2924,64 @@ int Server::verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr) {
         hd->token, hd->tokenlen, config.static_secret.data(),
         config.static_secret.size(), remote_addr.as_sockaddr(),
         remote_addr.size(), 3600 * NGTCP2_SECONDS, t) != 0) {
-    std::cerr << "Could not verify token" << std::endl;
+    std::println(stderr, "Could not verify token");
 
-    return -1;
+    return std::unexpected{Error::QUIC};
   }
 
   if (!config.quiet) {
-    std::cerr << "Token was successfully validated" << std::endl;
+    std::println(stderr, "Token was successfully validated");
   }
 
-  return 0;
+  return {};
 }
 
-int Server::send_packet(const Endpoint &ep, const ngtcp2_addr &local_addr,
-                        const ngtcp2_addr &remote_addr, unsigned int ecn,
-                        std::span data) {
+std::expected Server::send_packet(const Endpoint &ep,
+                                               const ngtcp2_addr &local_addr,
+                                               const ngtcp2_addr &remote_addr,
+                                               unsigned int ecn,
+                                               std::span data) {
   auto no_gso = false;
-  auto [_, rv] =
+  auto rest =
     send_packet(ep, no_gso, local_addr, remote_addr, ecn, data, data.size());
+  if (!rest.empty()) {
+    return std::unexpected{Error::SEND_BLOCKED};
+  }
 
-  return rv;
+  return {};
 }
 
-std::pair, int>
-Server::send_packet(const Endpoint &ep, bool &no_gso,
-                    const ngtcp2_addr &local_addr,
-                    const ngtcp2_addr &remote_addr, unsigned int ecn,
-                    std::span data, size_t gso_size) {
+std::span Server::send_packet(const Endpoint &ep, bool &no_gso,
+                                             const ngtcp2_addr &local_addr,
+                                             const ngtcp2_addr &remote_addr,
+                                             unsigned int ecn,
+                                             std::span data,
+                                             size_t gso_size) {
   assert(gso_size);
 
   if (debug::packet_lost(config.tx_loss_prob)) {
     if (!config.quiet) {
-      std::cerr << "** Simulated outgoing packet loss **" << std::endl;
+      std::println(stderr, "** Simulated outgoing packet loss **");
     }
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (no_gso && data.size() > gso_size) {
     for (; !data.empty();) {
       auto len = std::min(gso_size, data.size());
 
-      auto [_, rv] = send_packet(ep, no_gso, local_addr, remote_addr, ecn,
-                                 data.first(len), len);
-      if (rv != 0) {
-        return {data, rv};
+      auto rest = send_packet(ep, no_gso, local_addr, remote_addr, ecn,
+                              data.first(len), len);
+      if (!rest.empty()) {
+        assert(rest.size() == len);
+
+        return data;
       }
 
       data = data.subspan(len);
     }
 
-    return {{}, 0};
+    return {};
   }
 
   iovec msg_iov{
@@ -3073,13 +3088,13 @@ Server::send_packet(const Endpoint &ep, bool &no_gso,
 #if EAGAIN != EWOULDBLOCK
     case EWOULDBLOCK:
 #endif // EAGAIN != EWOULDBLOCK
-      return {data, NETWORK_ERR_SEND_BLOCKED};
+      return data;
 #ifdef UDP_SEGMENT
     case EIO:
       if (data.size() > gso_size) {
         // GSO failure; send each packet in a separate sendmsg call.
-        std::cerr << "sendmsg: disabling GSO due to " << strerror(errno)
-                  << std::endl;
+        std::println(stderr, "sendmsg: disabling GSO due to {}",
+                     strerror(errno));
 
         no_gso = true;
 
@@ -3090,22 +3105,20 @@ Server::send_packet(const Endpoint &ep, bool &no_gso,
 #endif // defined(UDP_SEGMENT)
     }
 
-    std::cerr << "sendmsg: " << strerror(errno) << std::endl;
+    std::println(stderr, "sendmsg: {}", strerror(errno));
     // TODO We have packet which is expected to fail to send (e.g.,
     // path validation to old path).
-    return {{}, NETWORK_ERR_OK};
+    return {};
   }
 
   if (!config.quiet) {
-    std::cerr << "Sent packet: local="
-              << util::straddr(local_addr.addr, local_addr.addrlen)
-              << " remote="
-              << util::straddr(remote_addr.addr, remote_addr.addrlen)
-              << " ecn=0x" << std::hex << ecn << std::dec << " " << nwrite
-              << " bytes" << std::endl;
+    std::println(stderr, "Sent packet: local={} remote={} ecn={:#x} {} bytes",
+                 util::straddr(local_addr.addr, local_addr.addrlen),
+                 util::straddr(remote_addr.addr, remote_addr.addrlen), ecn,
+                 nwrite);
   }
 
-  return {{}, NETWORK_ERR_OK};
+  return {};
 }
 
 void Server::associate_cid(const ngtcp2_cid *cid, Handler *h) {
@@ -3138,9 +3151,10 @@ void Server::on_stateless_reset_regen() {
 }
 
 namespace {
-int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
+std::expected parse_host_port(int af,
+                                              std::string_view host_port) {
   if (host_port.empty()) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   auto first = std::ranges::begin(host_port);
@@ -3153,19 +3167,19 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
 
     auto it = std::ranges::find(first, last, ']');
     if (it == last) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
 
     hostv = std::string_view{first, it};
     first = it + 1;
 
     if (first == last || *first != ':') {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
   } else {
     auto it = std::ranges::find(first, last, ':');
     if (it == last) {
-      return -1;
+      return std::unexpected{Error::INVALID_ARGUMENT};
     }
 
     hostv = std::string_view{first, it};
@@ -3173,7 +3187,7 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
   }
 
   if (++first == last) {
-    return -1;
+    return std::unexpected{Error::INVALID_ARGUMENT};
   }
 
   std::array host;
@@ -3187,16 +3201,17 @@ int parse_host_port(Address &dest, int af, const std::string_view &host_port) {
   auto svc = first;
 
   if (auto rv = getaddrinfo(host.data(), svc, &hints, &res); rv != 0) {
-    std::cerr << "getaddrinfo: [" << host.data() << "]:" << svc << ": "
-              << gai_strerror(rv) << std::endl;
-    return -1;
+    std::println(stderr, "getaddrinfo: [{}]:{}: {}", host.data(), svc,
+                 gai_strerror(rv));
+    return std::unexpected{Error::LIBC};
   }
 
+  Address dest;
   dest.set(res->ai_addr);
 
   freeaddrinfo(res);
 
-  return 0;
+  return dest;
 }
 } // namespace
 
@@ -3205,17 +3220,17 @@ const char *prog = "server";
 } // namespace
 
 namespace {
-void print_usage() {
-  std::cerr << "Usage: " << prog
-            << " [OPTIONS]    "
-               ""
-            << std::endl;
+void print_usage(FILE *out) {
+  std::println(
+    out,
+    "Usage: {} [OPTIONS]    ",
+    prog);
 }
 } // namespace
 
 namespace {
 void print_help() {
-  print_usage();
+  print_usage(stdout);
 
   Config config;
 
@@ -3481,7 +3496,7 @@ int main(int argc, char **argv) {
       // --htdocs
       auto path = realpath(optarg, nullptr);
       if (path == nullptr) {
-        std::cerr << "path: invalid path " << std::quoted(optarg) << std::endl;
+        std::println(stderr, "path: invalid path {}", optarg);
         exit(EXIT_FAILURE);
       }
       config.htdocs = path;
@@ -3513,14 +3528,14 @@ int main(int argc, char **argv) {
       config.validate_addr = true;
       break;
     case '?':
-      print_usage();
+      print_usage(stderr);
       exit(EXIT_FAILURE);
     case 0:
       switch (flag) {
       case 1:
         // --ciphers
         if (util::crypto_default_ciphers()[0] == '\0') {
-          std::cerr << "ciphers: not supported" << std::endl;
+          std::println(stderr, "ciphers: not supported");
           exit(EXIT_FAILURE);
         }
         config.ciphers = optarg;
@@ -3532,29 +3547,36 @@ int main(int argc, char **argv) {
       case 3:
         // --timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "timeout: invalid argument" << std::endl;
+          std::println(stderr, "timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.timeout = *t;
         }
         break;
-      case 4:
+      case 4: {
         // --preferred-ipv4-addr
-        if (parse_host_port(config.preferred_ipv4_addr, AF_INET, optarg) != 0) {
-          std::cerr << "preferred-ipv4-addr: could not use "
-                    << std::quoted(optarg) << std::endl;
+        auto maybe_addr = parse_host_port(AF_INET, optarg);
+        if (!maybe_addr) {
+          std::println(stderr, "preferred-ipv4-addr: could not use {}", optarg);
           exit(EXIT_FAILURE);
         }
+
+        config.preferred_ipv4_addr = *maybe_addr;
+
         break;
-      case 5:
+      }
+      case 5: {
         // --preferred-ipv6-addr
-        if (parse_host_port(config.preferred_ipv6_addr, AF_INET6, optarg) !=
-            0) {
-          std::cerr << "preferred-ipv6-addr: could not use "
-                    << std::quoted(optarg) << std::endl;
+        auto maybe_addr = parse_host_port(AF_INET6, optarg);
+        if (!maybe_addr) {
+          std::println(stderr, "preferred-ipv6-addr: could not use {}", optarg);
           exit(EXIT_FAILURE);
         }
+
+        config.preferred_ipv6_addr = *maybe_addr;
+
         break;
+      }
       case 6:
         // --mime-types-file
         config.mime_types_file = optarg;
@@ -3582,7 +3604,7 @@ int main(int argc, char **argv) {
       case 12:
         // --max-data
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-data: invalid argument" << std::endl;
+          std::println(stderr, "max-data: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_data = *n;
@@ -3591,8 +3613,7 @@ int main(int argc, char **argv) {
       case 13:
         // --max-stream-data-bidi-local
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-local: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-local: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_local = *n;
@@ -3601,8 +3622,7 @@ int main(int argc, char **argv) {
       case 14:
         // --max-stream-data-bidi-remote
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-bidi-remote: invalid argument"
-                    << std::endl;
+          std::println(stderr, "max-stream-data-bidi-remote: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_bidi_remote = *n;
@@ -3611,7 +3631,7 @@ int main(int argc, char **argv) {
       case 15:
         // --max-stream-data-uni
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-data-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-data-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_data_uni = *n;
@@ -3620,7 +3640,7 @@ int main(int argc, char **argv) {
       case 16:
         // --max-streams-bidi
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-bidi: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-bidi: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_bidi = *n;
@@ -3629,7 +3649,7 @@ int main(int argc, char **argv) {
       case 17:
         // --max-streams-uni
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "max-streams-uni: invalid argument" << std::endl;
+          std::println(stderr, "max-streams-uni: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_streams_uni = *n;
@@ -3638,7 +3658,7 @@ int main(int argc, char **argv) {
       case 18:
         // --max-dyn-length
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-dyn-length: invalid argument" << std::endl;
+          std::println(stderr, "max-dyn-length: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_dyn_length = *n;
@@ -3658,12 +3678,12 @@ int main(int argc, char **argv) {
           config.cc_algo = NGTCP2_CC_ALGO_BBR;
           break;
         }
-        std::cerr << "cc: specify cubic, reno, or bbr" << std::endl;
+        std::println(stderr, "cc: specify cubic, reno, or bbr");
         exit(EXIT_FAILURE);
       case 20:
         // --initial-rtt
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "initial-rtt: invalid argument" << std::endl;
+          std::println(stderr, "initial-rtt: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.initial_rtt = *t;
@@ -3672,11 +3692,11 @@ int main(int argc, char **argv) {
       case 21:
         // --max-udp-payload-size
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-udp-payload-size: invalid argument" << std::endl;
+          std::println(stderr, "max-udp-payload-size: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-          std::cerr << "max-udp-payload-size: must not exceed "
-                    << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << std::endl;
+          std::println(stderr, "max-udp-payload-size: must not exceed {}",
+                       NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
           exit(EXIT_FAILURE);
         } else {
           config.max_udp_payload_size = *n;
@@ -3689,7 +3709,7 @@ int main(int argc, char **argv) {
       case 23:
         // --max-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-window: invalid argument" << std::endl;
+          std::println(stderr, "max-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_window = *n;
@@ -3698,7 +3718,7 @@ int main(int argc, char **argv) {
       case 24:
         // --max-stream-window
         if (auto n = util::parse_uint_iec(optarg); !n) {
-          std::cerr << "max-stream-window: invalid argument" << std::endl;
+          std::println(stderr, "max-stream-window: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.max_stream_window = *n;
@@ -3707,7 +3727,7 @@ int main(int argc, char **argv) {
       case 26:
         // --handshake-timeout
         if (auto t = util::parse_duration(optarg); !t) {
-          std::cerr << "handshake-timeout: invalid argument" << std::endl;
+          std::println(stderr, "handshake-timeout: invalid argument");
           exit(EXIT_FAILURE);
         } else {
           config.handshake_timeout = *t;
@@ -3717,8 +3737,9 @@ int main(int argc, char **argv) {
         // --preferred-versions
         auto l = util::split_str(optarg);
         if (l.size() > max_preferred_versionslen) {
-          std::cerr << "preferred-versions: too many versions > "
-                    << max_preferred_versionslen << std::endl;
+          std::println(stderr, "preferred-versions: too many versions > {}",
+                       max_preferred_versionslen);
+          exit(EXIT_FAILURE);
         }
         config.preferred_versions.resize(l.size());
         auto it = std::ranges::begin(config.preferred_versions);
@@ -3733,13 +3754,12 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "preferred-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           if (!ngtcp2_is_supported_version(*rv)) {
-            std::cerr << "preferred-versions: unsupported version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "preferred-versions: unsupported version {}",
+                         k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3762,8 +3782,7 @@ int main(int argc, char **argv) {
           }
           auto rv = util::parse_version(k);
           if (!rv) {
-            std::cerr << "available-versions: invalid version "
-                      << std::quoted(k) << std::endl;
+            std::println(stderr, "available-versions: invalid version {}", k);
             exit(EXIT_FAILURE);
           }
           *it++ = *rv;
@@ -3777,10 +3796,10 @@ int main(int argc, char **argv) {
       case 30:
         // --ack-thresh
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "ack-thresh: invalid argument" << std::endl;
+          std::println(stderr, "ack-thresh: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > 100) {
-          std::cerr << "ack-thresh: must not exceed 100" << std::endl;
+          std::println(stderr, "ack-thresh: must not exceed 100");
           exit(EXIT_FAILURE);
         } else {
           config.ack_thresh = *n;
@@ -3789,11 +3808,11 @@ int main(int argc, char **argv) {
       case 31:
         // --initial-pkt-num
         if (auto n = util::parse_uint(optarg); !n) {
-          std::cerr << "initial-pkt-num: invalid argument" << std::endl;
+          std::println(stderr, "initial-pkt-num: invalid argument");
           exit(EXIT_FAILURE);
         } else if (*n > INT32_MAX) {
-          std::cerr << "initial-pkt-num: must not exceed (1 << 31) - 1"
-                    << std::endl;
+          std::println(stderr,
+                       "initial-pkt-num: must not exceed (1 << 31) - 1");
           exit(EXIT_FAILURE);
         } else {
           config.initial_pkt_num = static_cast(*n);
@@ -3804,14 +3823,13 @@ int main(int argc, char **argv) {
         auto l = util::split_str(optarg);
         for (auto &s : l) {
           if (auto n = util::parse_uint_iec(s); !n) {
-            std::cerr << "pmtud-probes: invalid argument" << std::endl;
+            std::println(stderr, "pmtud-probes: invalid argument");
             exit(EXIT_FAILURE);
           } else if (*n <= NGTCP2_MAX_UDP_PAYLOAD_SIZE ||
                      *n > NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE) {
-            std::cerr << "pmtud-probes: must be in range ["
-                      << NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1 << ", "
-                      << NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE << "], inclusive."
-                      << std::endl;
+            std::println(
+              stderr, "pmtud-probes: must be in range [{}, {}], inclusive.",
+              NGTCP2_MAX_UDP_PAYLOAD_SIZE + 1, NGTCP2_MAX_TX_UDP_PAYLOAD_SIZE);
             exit(EXIT_FAILURE);
           } else {
             config.pmtud_probes.push_back(static_cast(*n));
@@ -3829,8 +3847,7 @@ int main(int argc, char **argv) {
 
         if (auto max = std::numeric_limits::max();
             max < origin.size()) {
-          std::cerr << "origin: must be less than or equal to " << max
-                    << std::endl;
+          std::println(stderr, "origin: must be less than or equal to {}", max);
           exit(EXIT_FAILURE);
         }
 
@@ -3839,7 +3856,7 @@ int main(int argc, char **argv) {
         }
 
         config.origin_list->push_back(static_cast(origin.size() >> 8));
-        config.origin_list->push_back(origin.size() & 0xff);
+        config.origin_list->push_back(origin.size() & 0xFF);
         std::ranges::copy(origin, std::back_inserter(*config.origin_list));
 
         break;
@@ -3856,13 +3873,13 @@ int main(int argc, char **argv) {
         // --gso-burst
         auto n = util::parse_uint(optarg);
         if (!n) {
-          std::cerr << "gso-burst: invalid argument" << std::endl;
+          std::println(stderr, "gso-burst: invalid argument");
           exit(EXIT_FAILURE);
         }
 
         if (*n > 64) {
-          std::cerr << "gso-burst: must be in range [0, 64], inclusive."
-                    << std::endl;
+          std::println(stderr,
+                       "gso-burst: must be in range [0, 64], inclusive.");
           exit(EXIT_FAILURE);
         }
 
@@ -3878,8 +3895,8 @@ int main(int argc, char **argv) {
   }
 
   if (argc - optind < 4) {
-    std::cerr << "Too few arguments" << std::endl;
-    print_usage();
+    std::println(stderr, "Too few arguments");
+    print_usage(stderr);
     exit(EXIT_FAILURE);
   }
 
@@ -3889,18 +3906,19 @@ int main(int argc, char **argv) {
   auto cert_file = argv[optind++];
 
   if (auto n = util::parse_uint(port); !n) {
-    std::cerr << "port: invalid port number" << std::endl;
+    std::println(stderr, "port: invalid port number");
     exit(EXIT_FAILURE);
   } else if (*n > 65535) {
-    std::cerr << "port: must not exceed 65535" << std::endl;
+    std::println(stderr, "port: must not exceed 65535");
     exit(EXIT_FAILURE);
   } else {
     config.port = static_cast(*n);
   }
 
   if (auto mt = util::read_mime_types(config.mime_types_file); !mt) {
-    std::cerr << "mime-types-file: Could not read MIME media types file "
-              << std::quoted(config.mime_types_file) << std::endl;
+    std::println(stderr,
+                 "mime-types-file: Could not read MIME media types file {}",
+                 config.mime_types_file);
   } else {
     config.mime_types = std::move(*mt);
   }
@@ -3908,8 +3926,8 @@ int main(int argc, char **argv) {
   if (!ech_config_file.empty()) {
     auto ech_config = util::read_ech_server_config(ech_config_file);
     if (!ech_config) {
-      std::cerr << "ech-config-file: Could not read private key and ECHConfig"
-                << std::endl;
+      std::println(stderr,
+                   "ech-config-file: Could not read private key and ECHConfig");
       exit(EXIT_FAILURE);
     }
 
@@ -3918,7 +3936,7 @@ int main(int argc, char **argv) {
 
   TLSServerContext tls_ctx;
 
-  if (tls_ctx.init(private_key_file, cert_file, AppProtocol::H3) != 0) {
+  if (!tls_ctx.init(private_key_file, cert_file, AppProtocol::H3)) {
     exit(EXIT_FAILURE);
   }
 
@@ -3926,7 +3944,7 @@ int main(int argc, char **argv) {
     config.htdocs += '/';
   }
 
-  std::cerr << "Using document root " << config.htdocs << std::endl;
+  std::println(stderr, "Using document root {}", config.htdocs);
 
   auto ev_loop_d = defer([] { ev_loop_destroy(EV_DEFAULT); });
 
@@ -3938,13 +3956,13 @@ int main(int argc, char **argv) {
     }
   }
 
-  if (util::generate_secret(config.static_secret) != 0) {
-    std::cerr << "Unable to generate static secret" << std::endl;
+  if (!util::generate_secure_random(config.static_secret)) {
+    std::println(stderr, "Unable to generate static secret");
     exit(EXIT_FAILURE);
   }
 
   Server s(EV_DEFAULT, tls_ctx);
-  if (s.init(addr, port) != 0) {
+  if (!s.init(addr, port)) {
     exit(EXIT_FAILURE);
   }
 
diff --git a/deps/ngtcp2/ngtcp2/examples/server.h b/deps/ngtcp2/ngtcp2/examples/server.h
index ad12f040fe17bb..3f0cdee8574038 100644
--- a/deps/ngtcp2/ngtcp2/examples/server.h
+++ b/deps/ngtcp2/ngtcp2/examples/server.h
@@ -57,14 +57,16 @@ struct FileEntry;
 struct Stream {
   Stream(int64_t stream_id, Handler *handler);
 
-  int start_response(nghttp3_conn *conn);
-  std::pair open_file(const std::string &path);
+  std::expected start_response(nghttp3_conn *conn);
+  std::expected open_file(const std::string &path);
   void map_file(const FileEntry &fe);
-  int send_status_response(nghttp3_conn *conn, unsigned int status_code,
-                           const std::vector &extra_headers = {});
-  int send_redirect_response(nghttp3_conn *conn, unsigned int status_code,
-                             const std::string_view &path);
-  int64_t find_dyn_length(const std::string_view &path);
+  std::expected
+  send_status_response(nghttp3_conn *conn, unsigned int status_code,
+                       const std::vector &extra_headers = {});
+  std::expected send_redirect_response(nghttp3_conn *conn,
+                                                    unsigned int status_code,
+                                                    std::string_view path);
+  std::expected find_dyn_length(std::string_view path);
   void http_acked_stream_data(uint64_t datalen);
 
   int64_t stream_id;
@@ -101,73 +103,88 @@ class Handler : public HandlerBase {
   Handler(struct ev_loop *loop, Server *server);
   ~Handler();
 
-  int init(const Endpoint &ep, const Address &local_addr,
-           const Address &remote_addr, const ngtcp2_cid *dcid,
-           const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
-           std::span token, ngtcp2_token_type token_type,
-           uint32_t version, TLSServerContext &tls_ctx);
+  std::expected
+  init(const Endpoint &ep, const Address &local_addr,
+       const Address &remote_addr, const ngtcp2_cid *dcid,
+       const ngtcp2_cid *scid, const ngtcp2_cid *ocid,
+       std::span token, ngtcp2_token_type token_type,
+       uint32_t version, TLSServerContext &tls_ctx);
 
-  int on_read(const Endpoint &ep, const Address &local_addr,
-              const Address &remote_addr, const ngtcp2_pkt_info *pi,
-              std::span data);
-  int on_write();
-  int write_streams();
-  int feed_data(const Endpoint &ep, const Address &local_addr,
-                const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                std::span data);
+  std::expected on_read(const Endpoint &ep,
+                                     const Address &local_addr,
+                                     const Address &remote_addr,
+                                     const ngtcp2_pkt_info *pi,
+                                     std::span data);
+  std::expected on_write();
+  std::expected write_streams();
+  std::expected feed_data(const Endpoint &ep,
+                                       const Address &local_addr,
+                                       const Address &remote_addr,
+                                       const ngtcp2_pkt_info *pi,
+                                       std::span data);
   void update_timer();
-  int handle_expiry();
+  std::expected handle_expiry();
   void signal_write();
-  int handshake_completed();
+  std::expected handshake_completed();
 
   Server *server() const;
-  int recv_stream_data(uint32_t flags, int64_t stream_id,
-                       std::span data);
-  int acked_stream_data_offset(int64_t stream_id, uint64_t datalen);
+  std::expected recv_stream_data(uint32_t flags, int64_t stream_id,
+                                              std::span data);
+  std::expected acked_stream_data_offset(int64_t stream_id,
+                                                      uint64_t datalen);
   uint32_t version() const;
   void on_stream_open(int64_t stream_id);
-  int on_stream_close(int64_t stream_id, uint64_t app_error_code);
+  std::expected on_stream_close(int64_t stream_id,
+                                             uint64_t app_error_code);
   void start_draining_period();
-  int start_closing_period();
-  int handle_error();
-  int send_conn_close();
-  int send_conn_close(const Endpoint &ep, const Address &local_addr,
-                      const Address &remote_addr, const ngtcp2_pkt_info *pi,
-                      std::span data);
+  std::expected start_closing_period();
+  std::expected handle_error();
+  std::expected send_conn_close();
+  std::expected send_conn_close(const Endpoint &ep,
+                                             const Address &local_addr,
+                                             const Address &remote_addr,
+                                             const ngtcp2_pkt_info *pi,
+                                             std::span data);
 
-  int update_key(uint8_t *rx_secret, uint8_t *tx_secret,
-                 ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
-                 ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
-                 const uint8_t *current_rx_secret,
-                 const uint8_t *current_tx_secret, size_t secretlen);
+  std::expected
+  update_key(uint8_t *rx_secret, uint8_t *tx_secret,
+             ngtcp2_crypto_aead_ctx *rx_aead_ctx, uint8_t *rx_iv,
+             ngtcp2_crypto_aead_ctx *tx_aead_ctx, uint8_t *tx_iv,
+             const uint8_t *current_rx_secret, const uint8_t *current_tx_secret,
+             size_t secretlen);
 
-  int setup_httpconn();
+  std::expected setup_httpconn();
   void http_consume(int64_t stream_id, size_t nconsumed);
   void extend_max_remote_streams_bidi(uint64_t max_streams);
   Stream *find_stream(int64_t stream_id);
   void http_begin_request_headers(int64_t stream_id);
   void http_recv_request_header(Stream *stream, int32_t token,
                                 nghttp3_rcbuf *name, nghttp3_rcbuf *value);
-  int http_end_request_headers(Stream *stream);
-  int http_end_stream(Stream *stream);
-  int start_response(Stream *stream);
-  int on_stream_reset(int64_t stream_id);
-  int on_stream_stop_sending(int64_t stream_id);
-  int extend_max_stream_data(int64_t stream_id, uint64_t max_data);
+  std::expected http_end_request_headers(Stream *stream);
+  std::expected http_end_stream(Stream *stream);
+  std::expected start_response(Stream *stream);
+  std::expected on_stream_reset(int64_t stream_id);
+  std::expected on_stream_stop_sending(int64_t stream_id);
+  std::expected extend_max_stream_data(int64_t stream_id,
+                                                    uint64_t max_data);
   void shutdown_read(int64_t stream_id, uint64_t app_error_code);
   void http_acked_stream_data(Stream *stream, uint64_t datalen);
   void http_stream_close(int64_t stream_id, uint64_t app_error_code);
-  int http_stop_sending(int64_t stream_id, uint64_t app_error_code);
-  int http_reset_stream(int64_t stream_id, uint64_t app_error_code);
+  std::expected http_stop_sending(int64_t stream_id,
+                                               uint64_t app_error_code);
+  std::expected http_reset_stream(int64_t stream_id,
+                                               uint64_t app_error_code);
 
   void write_qlog(const void *data, size_t datalen);
 
   void on_send_blocked(const ngtcp2_path &path, unsigned int ecn,
                        std::span data, size_t gso_size);
   void start_wev_endpoint(const Endpoint &ep);
-  int send_packet(const ngtcp2_path &path, unsigned int ecn,
-                  std::span data, size_t gso_size);
-  int send_blocked_packet();
+  std::expected send_packet(const ngtcp2_path &path,
+                                         unsigned int ecn,
+                                         std::span data,
+                                         size_t gso_size);
+  void send_blocked_packet();
 
   ngtcp2_ssize write_pkt(ngtcp2_path *path, ngtcp2_pkt_info *pi, uint8_t *dest,
                          size_t destlen, ngtcp2_tstamp ts);
@@ -215,35 +232,44 @@ class Server {
   Server(struct ev_loop *loop, TLSServerContext &tls_ctx);
   ~Server();
 
-  int init(const char *addr, const char *port);
+  std::expected init(const char *addr, const char *port);
   void disconnect();
   void close();
 
-  int on_read(const Endpoint &ep);
+  void on_read(const Endpoint &ep);
   void read_pkt(const Endpoint &ep, const Address &local_addr,
                 const Address &remote_addr, const ngtcp2_pkt_info *pi,
                 std::span data);
-  int send_version_negotiation(uint32_t version, std::span dcid,
-                               std::span scid,
-                               const Endpoint &ep, const Address &local_addr,
-                               const Address &remote_addr);
-  int send_retry(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
-                 const Address &local_addr, const Address &remote_addr,
-                 size_t max_pktlen);
-  int send_stateless_connection_close(const ngtcp2_pkt_hd *chd,
-                                      const Endpoint &ep,
-                                      const Address &local_addr,
-                                      const Address &remote_addr);
-  int send_stateless_reset(size_t pktlen, std::span dcid,
-                           const Endpoint &ep, const Address &local_addr,
+  std::expected
+  send_version_negotiation(uint32_t version, std::span dcid,
+                           std::span scid, const Endpoint &ep,
+                           const Address &local_addr,
                            const Address &remote_addr);
-  int verify_retry_token(ngtcp2_cid *ocid, const ngtcp2_pkt_hd *hd,
-                         const Address &remote_addr);
-  int verify_token(const ngtcp2_pkt_hd *hd, const Address &remote_addr);
-  int send_packet(const Endpoint &ep, const ngtcp2_addr &local_addr,
-                  const ngtcp2_addr &remote_addr, unsigned int ecn,
-                  std::span data);
-  std::pair, int>
+  std::expected send_retry(const ngtcp2_pkt_hd *chd,
+                                        const Endpoint &ep,
+                                        const Address &local_addr,
+                                        const Address &remote_addr,
+                                        size_t max_pktlen);
+  std::expected
+  send_stateless_connection_close(const ngtcp2_pkt_hd *chd, const Endpoint &ep,
+                                  const Address &local_addr,
+                                  const Address &remote_addr);
+  std::expected send_stateless_reset(size_t pktlen,
+                                                  std::span dcid,
+                                                  const Endpoint &ep,
+                                                  const Address &local_addr,
+                                                  const Address &remote_addr);
+  std::expected verify_retry_token(ngtcp2_cid *ocid,
+                                                const ngtcp2_pkt_hd *hd,
+                                                const Address &remote_addr);
+  std::expected verify_token(const ngtcp2_pkt_hd *hd,
+                                          const Address &remote_addr);
+  std::expected send_packet(const Endpoint &ep,
+                                         const ngtcp2_addr &local_addr,
+                                         const ngtcp2_addr &remote_addr,
+                                         unsigned int ecn,
+                                         std::span data);
+  std::span
   send_packet(const Endpoint &ep, bool &no_gso, const ngtcp2_addr &local_addr,
               const ngtcp2_addr &remote_addr, unsigned int ecn,
               std::span data, size_t gso_size);
diff --git a/deps/ngtcp2/ngtcp2/examples/server_base.h b/deps/ngtcp2/ngtcp2/examples/server_base.h
index 5c838bf6971c20..a600c433ab32e3 100644
--- a/deps/ngtcp2/ngtcp2/examples/server_base.h
+++ b/deps/ngtcp2/ngtcp2/examples/server_base.h
@@ -171,7 +171,7 @@ struct Config {
 };
 
 struct HTTPHeader {
-  HTTPHeader(const std::string_view &name, const std::string_view &value)
+  HTTPHeader(std::string_view name, std::string_view value)
     : name{name}, value{value} {}
 
   std::string_view name;
diff --git a/deps/ngtcp2/ngtcp2/examples/shared.cc b/deps/ngtcp2/ngtcp2/examples/shared.cc
index 66c44ab51951ed..f9714c69ec14f1 100644
--- a/deps/ngtcp2/ngtcp2/examples/shared.cc
+++ b/deps/ngtcp2/ngtcp2/examples/shared.cc
@@ -92,13 +92,13 @@ void fd_set_recv_ecn(int fd, int family) {
   case AF_INET:
     if (setsockopt(fd, IPPROTO_IP, IP_RECVTOS, &tos,
                    static_cast(sizeof(tos))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
     }
     break;
   case AF_INET6:
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_RECVTCLASS, &tos,
                    static_cast(sizeof(tos))) == -1) {
-      std::cerr << "setsockopt: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: {}", strerror(errno));
     }
     break;
   }
@@ -113,16 +113,15 @@ void fd_set_ip_mtu_discover(int fd, int family) {
     val = IP_PMTUDISC_PROBE;
     if (setsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: IP_MTU_DISCOVER: " << strerror(errno)
-                << std::endl;
+      std::println(stderr, "setsockopt: IP_MTU_DISCOVER: {}", strerror(errno));
     }
     break;
   case AF_INET6:
     val = IPV6_PMTUDISC_PROBE;
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: IPV6_MTU_DISCOVER: " << strerror(errno)
-                << std::endl;
+      std::println(stderr, "setsockopt: IPV6_MTU_DISCOVER: {}",
+                   strerror(errno));
     }
     break;
   }
@@ -137,14 +136,13 @@ void fd_set_ip_dontfrag(int fd, int family) {
   case AF_INET:
     if (setsockopt(fd, IPPROTO_IP, IP_DONTFRAG, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: IP_DONTFRAG: " << strerror(errno) << std::endl;
+      std::println(stderr, "setsockopt: IP_DONTFRAG: {}", strerror(errno));
     }
     break;
   case AF_INET6:
     if (setsockopt(fd, IPPROTO_IPV6, IPV6_DONTFRAG, &val,
                    static_cast(sizeof(val))) == -1) {
-      std::cerr << "setsockopt: IPV6_DONTFRAG: " << strerror(errno)
-                << std::endl;
+      std::println(stderr, "setsockopt: IPV6_DONTFRAG: {}", strerror(errno));
     }
     break;
   }
@@ -157,12 +155,12 @@ void fd_set_udp_gro(int fd) {
 
   if (setsockopt(fd, IPPROTO_UDP, UDP_GRO, &val,
                  static_cast(sizeof(val))) == -1) {
-    std::cerr << "setsockopt: UDP_GRO: " << strerror(errno) << std::endl;
+    std::println(stderr, "setsockopt: UDP_GRO: {}", strerror(errno));
   }
 #endif // defined(UDP_GRO)
 }
 
-std::optional
msghdr_get_local_addr(msghdr *msg, int family) { +std::expected msghdr_get_local_addr(msghdr *msg, int family) { switch (family) { case AF_INET: for (auto cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { @@ -178,7 +176,7 @@ std::optional
msghdr_get_local_addr(msghdr *msg, int family) { return res; } } - return {}; + return std::unexpected{Error::NOT_FOUND}; case AF_INET6: for (auto cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { if (cmsg->cmsg_level == IPPROTO_IPV6 && cmsg->cmsg_type == IPV6_PKTINFO) { @@ -193,9 +191,9 @@ std::optional
msghdr_get_local_addr(msghdr *msg, int family) { return res; } } - return {}; + return std::unexpected{Error::NOT_FOUND}; } - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } size_t msghdr_get_udp_gro(msghdr *msg) { @@ -224,7 +222,8 @@ struct nlmsg { }; namespace { -int send_netlink_msg(int fd, const Address &remote_addr, uint32_t seq) { +std::expected send_netlink_msg(int fd, const Address &remote_addr, + uint32_t seq) { nlmsg nlmsg{ .hdr{ .nlmsg_type = RTM_GETROUTE, @@ -285,17 +284,17 @@ int send_netlink_msg(int fd, const Address &remote_addr, uint32_t seq) { } while (nwrite == -1 && errno == EINTR); if (nwrite == -1) { - std::cerr << "sendmsg: Could not write netlink message: " << strerror(errno) - << std::endl; - return -1; + std::println(stderr, "sendmsg: Could not write netlink message: {}", + strerror(errno)); + return std::unexpected{Error::SYSCALL}; } - return 0; + return {}; } } // namespace namespace { -int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { +std::expected recv_netlink_msg(int fd, uint32_t seq) { std::array buf; iovec iov = { .iov_base = buf.data(), @@ -309,41 +308,42 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { .msg_iovlen = 1, }; ssize_t nread; + InAddr ia; do { nread = recvmsg(fd, &msg, 0); } while (nread == -1 && errno == EINTR); if (nread == -1) { - std::cerr << "recvmsg: Could not receive netlink message: " - << strerror(errno) << std::endl; - return -1; + std::println(stderr, "recvmsg: Could not receive netlink message: {}", + strerror(errno)); + return std::unexpected{Error::SYSCALL}; } for (auto hdr = reinterpret_cast(buf.data()); NLMSG_OK(hdr, nread); hdr = NLMSG_NEXT(hdr, nread)) { if (seq != hdr->nlmsg_seq) { - std::cerr << "netlink: unexpected sequence number " << hdr->nlmsg_seq - << " while expecting " << seq << std::endl; - return -1; + std::println(stderr, + "netlink: unexpected sequence number {} while expecting {}", + hdr->nlmsg_seq, seq); + return std::unexpected{Error::INTERNAL}; } if (hdr->nlmsg_flags & NLM_F_MULTI) { - std::cerr << "netlink: unexpected NLM_F_MULTI flag set" << std::endl; - return -1; + std::println(stderr, "netlink: unexpected NLM_F_MULTI flag set"); + return std::unexpected{Error::INTERNAL}; } switch (hdr->nlmsg_type) { case NLMSG_DONE: - std::cerr << "netlink: unexpected NLMSG_DONE" << std::endl; - return -1; + std::println(stderr, "netlink: unexpected NLMSG_DONE"); + return std::unexpected{Error::INTERNAL}; case NLMSG_NOOP: continue; case NLMSG_ERROR: - std::cerr << "netlink: " - << strerror(-static_cast(NLMSG_DATA(hdr))->error) - << std::endl; - return -1; + std::println(stderr, "netlink: {}", + strerror(-static_cast(NLMSG_DATA(hdr))->error)); + return std::unexpected{Error::INTERNAL}; } auto attrlen = hdr->nlmsg_len - NLMSG_SPACE(sizeof(rtmsg)); @@ -359,7 +359,7 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { case AF_INET: { constexpr auto in_addrlen = sizeof(in_addr); if (RTA_LENGTH(in_addrlen) != rta->rta_len) { - return -1; + return std::unexpected{Error::INTERNAL}; } in_addr addr; @@ -372,7 +372,7 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { case AF_INET6: { constexpr auto in_addrlen = sizeof(in6_addr); if (RTA_LENGTH(in_addrlen) != rta->rta_len) { - return -1; + return std::unexpected{Error::INTERNAL}; } in6_addr addr; @@ -392,7 +392,7 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { } if (in_addr_empty(ia)) { - return -1; + return std::unexpected{Error::NOT_FOUND}; } // Read ACK @@ -411,9 +411,9 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { } while (nread == -1 && errno == EINTR); if (nread == -1) { - std::cerr << "recvmsg: Could not receive netlink message: " - << strerror(errno) << std::endl; - return -1; + std::println(stderr, "recvmsg: Could not receive netlink message: {}", + strerror(errno)); + return std::unexpected{Error::SYSCALL}; } error = -1; @@ -421,20 +421,21 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { for (auto hdr = reinterpret_cast(buf.data()); NLMSG_OK(hdr, nread); hdr = NLMSG_NEXT(hdr, nread)) { if (seq != hdr->nlmsg_seq) { - std::cerr << "netlink: unexpected sequence number " << hdr->nlmsg_seq - << " while expecting " << seq << std::endl; - return -1; + std::println(stderr, + "netlink: unexpected sequence number {} while expecting {}", + hdr->nlmsg_seq, seq); + return std::unexpected{Error::INTERNAL}; } if (hdr->nlmsg_flags & NLM_F_MULTI) { - std::cerr << "netlink: unexpected NLM_F_MULTI flag set" << std::endl; - return -1; + std::println(stderr, "netlink: unexpected NLM_F_MULTI flag set"); + return std::unexpected{Error::INTERNAL}; } switch (hdr->nlmsg_type) { case NLMSG_DONE: - std::cerr << "netlink: unexpected NLMSG_DONE" << std::endl; - return -1; + std::println(stderr, "netlink: unexpected NLMSG_DONE"); + return std::unexpected{Error::INTERNAL}; case NLMSG_NOOP: continue; case NLMSG_ERROR: @@ -443,47 +444,47 @@ int recv_netlink_msg(InAddr &ia, int fd, uint32_t seq) { break; } - std::cerr << "netlink: " << strerror(error) << std::endl; + std::println(stderr, "netlink: {}", strerror(error)); - return -1; + return std::unexpected{Error::INTERNAL}; } } if (error != 0) { - return -1; + return std::unexpected{Error::INTERNAL}; } - return 0; + return ia; } } // namespace -int get_local_addr(InAddr &ia, const Address &remote_addr) { +std::expected get_local_addr(const Address &remote_addr) { sockaddr_nl sa{ .nl_family = AF_NETLINK, }; auto fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); if (fd == -1) { - std::cerr << "socket: Could not create netlink socket: " << strerror(errno) - << std::endl; - return -1; + std::println(stderr, "socket: Could not create netlink socket: {}", + strerror(errno)); + return std::unexpected{Error::SYSCALL}; } auto fd_d = defer([fd] { close(fd); }); if (bind(fd, reinterpret_cast(&sa), sizeof(sa)) == -1) { - std::cerr << "bind: Could not bind netlink socket: " << strerror(errno) - << std::endl; - return -1; + std::println(stderr, "bind: Could not bind netlink socket: {}", + strerror(errno)); + return std::unexpected{Error::SYSCALL}; } uint32_t seq = 1; - if (send_netlink_msg(fd, remote_addr, seq) != 0) { - return -1; + if (auto rv = send_netlink_msg(fd, remote_addr, seq); !rv) { + return std::unexpected{rv.error()}; } - return recv_netlink_msg(ia, fd, seq); + return recv_netlink_msg(fd, seq); } #endif // defined(HAVE_LINUX_NETLINK_H) diff --git a/deps/ngtcp2/ngtcp2/examples/shared.h b/deps/ngtcp2/ngtcp2/examples/shared.h index 26e678816e8f98..5c4a97646a06be 100644 --- a/deps/ngtcp2/ngtcp2/examples/shared.h +++ b/deps/ngtcp2/ngtcp2/examples/shared.h @@ -32,6 +32,8 @@ #include #include #include +#include +#include #include @@ -41,23 +43,61 @@ using namespace std::literals; namespace ngtcp2 { +enum class Error { + // the generic errors that are not covered by more specific error + // codes. + INTERNAL, + // function arguments are invalid + INVALID_ARGUMENT, + // integer overflow error + INTEGER_OVERFLOW, + // file I/O error + IO, + // function is not implemented yet + NOT_IMPLEMENTED, + // the operation is not supported + UNSUPPORTED, + // entity is not found (e.g., file not found) + NOT_FOUND, + // crypto related error (e.g., error from TLS stack) + CRYPTO, + // system call error + SYSCALL, + // C library error (e.g., error from getaddrinfo) + LIBC, + // HTTP3 library error (e.g., error from nghttp3 API) + HTTP3, + // QUIC library error (e.g., error from ngtcp2 API) + QUIC, + // sending packet is blocked by kernel + SEND_BLOCKED, + // QUIC connection is in close-wait. + CLOSE_WAIT, + // QUIC connection should be retried. + RETRY_CONN, + // QUIC connection should be dropped. + DROP_CONN, + // Retry token is unreadable, and should be ignored. + UNREADABLE_TOKEN, +}; + enum class AppProtocol { H3, HQ, }; template -consteval std::span as_uint8_span(const uint8_t (&s)[N]) { +consteval std::span span_from_lit(const uint8_t (&s)[N]) { return {s, N - 1}; } -inline constexpr uint8_t RAW_HQ_ALPN[] = "\xahq-interop"; -inline constexpr auto HQ_ALPN = as_uint8_span(RAW_HQ_ALPN); -inline constexpr auto HQ_ALPN_V1 = as_uint8_span(RAW_HQ_ALPN); +inline constexpr uint8_t RAW_HQ_ALPN[] = "\xAhq-interop"; +inline constexpr auto HQ_ALPN = span_from_lit(RAW_HQ_ALPN); +inline constexpr auto HQ_ALPN_V1 = span_from_lit(RAW_HQ_ALPN); inline constexpr uint8_t RAW_H3_ALPN[] = "\x2h3"; -inline constexpr auto H3_ALPN = as_uint8_span(RAW_H3_ALPN); -inline constexpr auto H3_ALPN_V1 = as_uint8_span(RAW_H3_ALPN); +inline constexpr auto H3_ALPN = span_from_lit(RAW_H3_ALPN); +inline constexpr auto H3_ALPN_V1 = span_from_lit(RAW_H3_ALPN); inline constexpr uint32_t TLS_ALERT_ECH_REQUIRED = 121; @@ -81,15 +121,15 @@ void fd_set_ip_dontfrag(int fd, int family); // fd_set_udp_gro sets UDP_GRO socket option to |fd|. void fd_set_udp_gro(int fd); -std::optional
msghdr_get_local_addr(msghdr *msg, int family); +std::expected msghdr_get_local_addr(msghdr *msg, int family); // msghdr_get_udp_gro returns UDP_GRO value from |msg|. If UDP_GRO is // not found, or UDP_GRO is not supported, this function returns 0. size_t msghdr_get_udp_gro(msghdr *msg); -// get_local_addr stores preferred local address (interface address) -// in |ia| for a given destination address |remote_addr|. -int get_local_addr(InAddr &ia, const Address &remote_addr); +// get_local_addr returns the preferred local address (interface +// address) for a given destination address |remote_addr|. +std::expected get_local_addr(const Address &remote_addr); // addreq returns true if |addr| and |ia| contain the same address. bool addreq(const Address &addr, const InAddr &ia); @@ -145,4 +185,67 @@ void sockaddr_set(Sockaddr &skaddr, const sockaddr *sa); } // namespace ngtcp2 +template <> +struct std::formatter : public std::formatter { + auto format(ngtcp2::Error e, format_context &ctx) const { + auto s = "unknown"sv; + + switch (e) { + case ngtcp2::Error::INTERNAL: + s = "internal"sv; + break; + case ngtcp2::Error::INVALID_ARGUMENT: + s = "invalid argument"sv; + break; + case ngtcp2::Error::INTEGER_OVERFLOW: + s = "integer overflow"sv; + break; + case ngtcp2::Error::IO: + s = "I/O"sv; + break; + case ngtcp2::Error::NOT_IMPLEMENTED: + s = "not implemented"sv; + break; + case ngtcp2::Error::UNSUPPORTED: + s = "unsupported"sv; + break; + case ngtcp2::Error::NOT_FOUND: + s = "not found"sv; + break; + case ngtcp2::Error::CRYPTO: + s = "crypto"sv; + break; + case ngtcp2::Error::SYSCALL: + s = "syscall"sv; + break; + case ngtcp2::Error::LIBC: + s = "libc"sv; + break; + case ngtcp2::Error::HTTP3: + s = "HTTP3"sv; + break; + case ngtcp2::Error::QUIC: + s = "QUIC"sv; + break; + case ngtcp2::Error::SEND_BLOCKED: + s = "send blocked"sv; + break; + case ngtcp2::Error::CLOSE_WAIT: + s = "close wait"sv; + break; + case ngtcp2::Error::RETRY_CONN: + s = "retry connection"sv; + break; + case ngtcp2::Error::DROP_CONN: + s = "drop connection"sv; + break; + case ngtcp2::Error::UNREADABLE_TOKEN: + s = "unreadable token"sv; + break; + } + + return std::formatter::format(s, ctx); + } +}; + #endif // !defined(SHARED_H) diff --git a/deps/ngtcp2/ngtcp2/examples/sim.cc b/deps/ngtcp2/ngtcp2/examples/sim.cc index b1e778f165dbbc..326c3701caf18c 100644 --- a/deps/ngtcp2/ngtcp2/examples/sim.cc +++ b/deps/ngtcp2/ngtcp2/examples/sim.cc @@ -36,7 +36,6 @@ #include "ngtcp2/ngtcp2_crypto_wolfssl.h" #include "util.h" -#include "shared.h" #include "debug.h" using namespace std::literals; @@ -48,30 +47,31 @@ constexpr auto ALPN_LIST = "ngtcp2-sim"sv; constexpr size_t CIDLEN = 10; constexpr uint8_t SERVER_SECRET[] = "server_secret"; -int generate_secure_random(std::span data) { +std::expected generate_secure_random(std::span data) { if (wolfSSL_RAND_bytes(data.data(), static_cast(data.size())) != 1) { - return -1; + return std::unexpected{Error::CRYPTO}; } - return 0; + return {}; } void rand_bytes(uint8_t *dest, size_t destlen, const ngtcp2_rand_ctx *rand_ctx) { auto rv = generate_secure_random({dest, destlen}); (void)rv; - assert(0 == rv); + assert(rv); } -int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token, - size_t cidlen, void *user_data) { - if (generate_secure_random({cid->data, cidlen}) != 0) { +int get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, + ngtcp2_stateless_reset_token *token, size_t cidlen, + void *user_data) { + if (!generate_secure_random({cid->data, cidlen})) { return NGTCP2_ERR_CALLBACK_FAILURE; } cid->datalen = cidlen; if (ngtcp2_crypto_generate_stateless_reset_token( - token, SERVER_SECRET, sizeof(SERVER_SECRET) - 1, cid) != 0) { + token->data, SERVER_SECRET, sizeof(SERVER_SECRET) - 1, cid) != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -124,12 +124,12 @@ ngtcp2_callbacks default_client_callbacks() { .recv_stream_data = recv_stream_data, .recv_retry = ngtcp2_crypto_recv_retry_cb, .rand = rand_bytes, - .get_new_connection_id = get_new_connection_id, .update_key = ngtcp2_crypto_update_key_cb, .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb, .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb, - .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb, .version_negotiation = ngtcp2_crypto_version_negotiation_cb, + .get_new_connection_id2 = get_new_connection_id, + .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb, }; } @@ -142,12 +142,12 @@ ngtcp2_callbacks default_server_callbacks() { .hp_mask = ngtcp2_crypto_hp_mask_cb, .recv_stream_data = recv_stream_data, .rand = rand_bytes, - .get_new_connection_id = get_new_connection_id, .update_key = ngtcp2_crypto_update_key_cb, .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb, .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb, - .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb, .version_negotiation = ngtcp2_crypto_version_negotiation_cb, + .get_new_connection_id2 = get_new_connection_id, + .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb, }; } @@ -325,17 +325,16 @@ SJ9Gq0lvEXEcAiBwWBNUASBqLaje3hmtgwxcF7EIqqiGo5j8f9Ufgu6SRg== )"sv; } // namespace -int Endpoint::setup_server(std::span original_dcid, - std::span client_scid, - uint32_t version, const ngtcp2_addr *remote_addr) { - int rv; - +std::expected +Endpoint::setup_server(std::span original_dcid, + std::span client_scid, uint32_t version, + const ngtcp2_addr *remote_addr) { ngtcp2_cid scid{ .datalen = CIDLEN, }; - if (generate_secure_random({scid.data, scid.datalen}) != 0) { - return -1; + if (auto rv = generate_secure_random({scid.data, scid.datalen}); !rv) { + return rv; } ngtcp2_cid dcid; @@ -348,8 +347,8 @@ int Endpoint::setup_server(std::span original_dcid, if (ngtcp2_crypto_generate_stateless_reset_token( params.stateless_reset_token, SERVER_SECRET, sizeof(SERVER_SECRET) - 1, - &scid)) { - return -1; + &scid) != 0) { + return std::unexpected{Error::QUIC}; } auto path = ngtcp2_path{ @@ -357,43 +356,42 @@ int Endpoint::setup_server(std::span original_dcid, .remote = *remote_addr, }; - rv = ngtcp2_conn_server_new(&conn_, &dcid, &scid, &path, version, - &config_.callbacks, &config_.settings, ¶ms, - nullptr, config_.user_data); - if (rv != 0) { - return -1; + if (ngtcp2_conn_server_new(&conn_, &dcid, &scid, &path, version, + &config_.callbacks, &config_.settings, ¶ms, + nullptr, config_.user_data) != 0) { + return std::unexpected{Error::QUIC}; } ssl_ctx_ = wolfSSL_CTX_new(wolfTLSv1_3_server_method()); if (!ssl_ctx_) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_wolfssl_configure_server_context(ssl_ctx_) != 0) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_use_certificate_buffer( ssl_ctx_, reinterpret_cast(tls_crt.data()), static_cast(tls_crt.size()), SSL_FILETYPE_PEM) != SSL_SUCCESS) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_use_PrivateKey_buffer( ssl_ctx_, reinterpret_cast(tls_key.data()), static_cast(tls_key.size()), SSL_FILETYPE_PEM) != SSL_SUCCESS) { - return -1; + return std::unexpected{Error::CRYPTO}; } ssl_ = wolfSSL_new(ssl_ctx_); if (!ssl_) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_UseALPN(ssl_, const_cast(ALPN_LIST.data()), ALPN_LIST.size(), WOLFSSL_ALPN_FAILED_ON_MISMATCH) != WOLFSSL_SUCCESS) { - return -1; + return std::unexpected{Error::CRYPTO}; } wolfSSL_set_app_data(ssl_, &conn_ref_); @@ -404,12 +402,11 @@ int Endpoint::setup_server(std::span original_dcid, initialized_ = true; - return 0; + return {}; } -int Endpoint::setup_client(const ngtcp2_addr *remote_addr) { - int rv; - +std::expected +Endpoint::setup_client(const ngtcp2_addr *remote_addr) { ngtcp2_cid dcid{ .datalen = CIDLEN, }; @@ -417,10 +414,12 @@ int Endpoint::setup_client(const ngtcp2_addr *remote_addr) { .datalen = CIDLEN, }; - if (generate_secure_random({dcid.data, dcid.datalen}) != 0 || - generate_secure_random({scid.data, scid.datalen}) != 0) { - assert(0); - return -1; + if (auto rv = generate_secure_random({dcid.data, dcid.datalen}); !rv) { + return rv; + } + + if (auto rv = generate_secure_random({scid.data, scid.datalen}); !rv) { + return rv; } auto path = ngtcp2_path{ @@ -428,31 +427,30 @@ int Endpoint::setup_client(const ngtcp2_addr *remote_addr) { .remote = *remote_addr, }; - rv = ngtcp2_conn_client_new(&conn_, &dcid, &scid, &path, NGTCP2_PROTO_VER_V1, - &config_.callbacks, &config_.settings, - &config_.params, nullptr, config_.user_data); - if (rv != 0) { - return -1; + if (ngtcp2_conn_client_new( + &conn_, &dcid, &scid, &path, NGTCP2_PROTO_VER_V1, &config_.callbacks, + &config_.settings, &config_.params, nullptr, config_.user_data) != 0) { + return std::unexpected{Error::QUIC}; } ssl_ctx_ = wolfSSL_CTX_new(wolfTLSv1_3_client_method()); if (!ssl_ctx_) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx_) != 0) { - return -1; + return std::unexpected{Error::CRYPTO}; } ssl_ = wolfSSL_new(ssl_ctx_); if (!ssl_) { - return -1; + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_UseALPN(ssl_, const_cast(ALPN_LIST.data()), ALPN_LIST.size(), WOLFSSL_ALPN_FAILED_ON_MISMATCH) != WOLFSSL_SUCCESS) { - return -1; + return std::unexpected{Error::CRYPTO}; } wolfSSL_set_app_data(ssl_, &conn_ref_); @@ -463,11 +461,12 @@ int Endpoint::setup_client(const ngtcp2_addr *remote_addr) { initialized_ = true; - return 0; + return {}; } -int Endpoint::on_read(const NetworkPath &path, std::span pkt, - const Context &ctx) { +std::expected Endpoint::on_read(const NetworkPath &path, + std::span pkt, + const Context &ctx) { auto ts = to_ngtcp2_tstamp(ctx.ts); auto cpath = to_ngtcp2_path(path); @@ -475,35 +474,35 @@ int Endpoint::on_read(const NetworkPath &path, std::span pkt, ngtcp2_conn_read_pkt(conn_, &cpath, nullptr, pkt.data(), pkt.size(), ts); if (rv != 0) { std::cerr << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv) << std::endl; - return -1; + return std::unexpected{Error::QUIC}; } ctx.endpoint->get_channel().schedule_timeout(ctx.ts); - return 0; + return {}; } -int Endpoint::on_write(const Context &ctx) { - if (config_.on_write(conn_, ctx) != 0) { - return -1; +std::expected Endpoint::on_write(const Context &ctx) { + if (auto rv = config_.on_write(conn_, ctx); !rv) { + return rv; } auto next_expiry_ts = ngtcp2_conn_get_expiry(conn_); if (next_expiry_ts == UINT64_MAX) { - return 0; + return {}; } ctx.endpoint->get_channel().schedule_timeout(to_timestamp(next_expiry_ts)); - return 0; + return {}; } -int Endpoint::on_timeout(const Context &ctx) { +std::expected Endpoint::on_timeout(const Context &ctx) { auto rv = ngtcp2_conn_handle_expiry(conn_, to_ngtcp2_tstamp(ctx.ts)); if (rv != 0) { std::cerr << "ngtcp2_conn_handle_expiry: " << ngtcp2_strerror(rv) << std::endl; - return -1; + return std::unexpected{Error::QUIC}; } return on_write(ctx); @@ -701,10 +700,14 @@ std::optional> Simulator::get_next_event() { return {{std::move(ev), server_}}; } -int Simulator::run() { - if (client_.get_initialized() || - client_.setup_client(&server_.get_endpoint_config().local_addr) != 0) { - return -1; +std::expected Simulator::run() { + if (client_.get_initialized()) { + return std::unexpected{Error::INTERNAL}; + } + + if (auto rv = client_.setup_client(&server_.get_endpoint_config().local_addr); + !rv) { + return rv; } auto ts = Timestamp{}; @@ -744,15 +747,15 @@ int Simulator::run() { .endpoint = &ep, }; - if (ep.on_timeout(ctx) != 0) { - return -1; + if (auto rv = ep.on_timeout(ctx); !rv) { + return rv; } break; } case EVENT_TYPE_PKT: - if (deliver_pkt(ep, event.path.invert(), event.pkt, ts) != 0) { - return -1; + if (auto rv = deliver_pkt(ep, event.path.invert(), event.pkt, ts); !rv) { + return rv; } break; @@ -760,18 +763,20 @@ int Simulator::run() { } if (k == max_events_) { - return -1; + return std::unexpected{Error::INTERNAL}; } - return 0; + return {}; } Endpoint &Simulator::get_opposite_endpoint(const Endpoint &ep) { return &ep == &client_ ? server_ : client_; } -int Simulator::deliver_pkt(Endpoint &remote_ep, const NetworkPath &path, - std::span pkt, Timestamp ts) { +std::expected Simulator::deliver_pkt(Endpoint &remote_ep, + const NetworkPath &path, + std::span pkt, + Timestamp ts) { auto &local_ep = get_opposite_endpoint(remote_ep); if (!local_ep.get_initialized() && local_ep.get_endpoint_config().server) { @@ -780,19 +785,20 @@ int Simulator::deliver_pkt(Endpoint &remote_ep, const NetworkPath &path, auto rv = ngtcp2_pkt_decode_version_cid(&vcid, pkt.data(), pkt.size(), CIDLEN); if (rv != 0) { - return 0; + return std::unexpected{Error::QUIC}; } ngtcp2_pkt_hd hd; if (ngtcp2_accept(&hd, pkt.data(), pkt.size()) != 0) { - return 0; + return {}; } - if (local_ep.setup_server( + if (auto rv = local_ep.setup_server( {vcid.dcid, vcid.dcidlen}, {vcid.scid, vcid.scidlen}, vcid.version, - &remote_ep.get_endpoint_config().local_addr) != 0) { - return -1; + &remote_ep.get_endpoint_config().local_addr); + !rv) { + return rv; } } @@ -820,7 +826,8 @@ void HandshakeApp::configure(EndpointConfig &config) { config.callbacks.handshake_confirmed = handshake_confirmed; } - config.on_write = [](ngtcp2_conn *conn, const Context &ctx) { + config.on_write = [](ngtcp2_conn *conn, + const Context &ctx) -> std::expected { std::array buf; auto ts = to_ngtcp2_tstamp(ctx.ts); @@ -833,11 +840,11 @@ void HandshakeApp::configure(EndpointConfig &config) { if (nwrite < 0) { std::cerr << "ngtcp2_conn_write_pkt: " << ngtcp2_strerror(static_cast(nwrite)) << std::endl; - return -1; + return std::unexpected{Error::QUIC}; } if (nwrite == 0) { - return 0; + return {}; } ngtcp2_conn_update_pkt_tx_time(conn, ts); @@ -845,7 +852,7 @@ void HandshakeApp::configure(EndpointConfig &config) { ctx.endpoint->get_channel().send_pkt( to_network_path(&ps.path), {buf.data(), static_cast(nwrite)}); - return 0; + return {}; }; config.user_data = this; @@ -872,7 +879,11 @@ void UniStreamApp::configure(EndpointConfig &config) { [](ngtcp2_conn *conn, uint64_t max_streams, void *user_data) { auto app = static_cast(user_data); - return app->extend_max_local_streams_uni(conn); + if (!app->extend_max_local_streams_uni(conn)) { + return NGTCP2_ERR_CALLBACK_FAILURE; + } + + return 0; }; config.on_write = [this](ngtcp2_conn *conn, const Context &ctx) { @@ -903,9 +914,10 @@ void UniStreamApp::stream_close(ngtcp2_conn *conn, int64_t stream_id) { } } -int UniStreamApp::extend_max_local_streams_uni(ngtcp2_conn *conn) { +std::expected +UniStreamApp::extend_max_local_streams_uni(ngtcp2_conn *conn) { if (stream_id_ != -1) { - return 0; + return {}; } int64_t stream_id; @@ -914,16 +926,17 @@ int UniStreamApp::extend_max_local_streams_uni(ngtcp2_conn *conn) { if (rv != 0) { std::cerr << "ngtcp2_conn_open_uni_stream: " << ngtcp2_strerror(rv) << std::endl; - return NGTCP2_ERR_CALLBACK_FAILURE; + return std::unexpected{Error::QUIC}; } stream_id_ = stream_id; start_ts_ = to_timestamp(ngtcp2_conn_get_timestamp(conn)); - return 0; + return {}; } -int UniStreamApp::on_write(ngtcp2_conn *conn, const Context &ctx) { +std::expected UniStreamApp::on_write(ngtcp2_conn *conn, + const Context &ctx) { std::array buf; int64_t stream_id; @@ -958,17 +971,17 @@ int UniStreamApp::on_write(ngtcp2_conn *conn, const Context &ctx) { &ndatalen, flags, stream_id, &vec, veccnt, ts); if (nwrite < 0) { if (nwrite == NGTCP2_ERR_STREAM_DATA_BLOCKED) { - return 0; + return {}; } std::cerr << "ngtcp2_conn_writev_stream: " << ngtcp2_strerror(static_cast(nwrite)) << std::endl; - return -1; + return std::unexpected{Error::QUIC}; } if (nwrite == 0) { - return 0; + return {}; } if (ndatalen > 0) { @@ -980,7 +993,7 @@ int UniStreamApp::on_write(ngtcp2_conn *conn, const Context &ctx) { ctx.endpoint->get_channel().send_pkt( to_network_path(&ps.path), {buf.data(), static_cast(nwrite)}); - return 0; + return {}; } } // namespace ngtcp2 diff --git a/deps/ngtcp2/ngtcp2/examples/sim.h b/deps/ngtcp2/ngtcp2/examples/sim.h index a70388686ae9da..c8fa7c203045d3 100644 --- a/deps/ngtcp2/ngtcp2/examples/sim.h +++ b/deps/ngtcp2/ngtcp2/examples/sim.h @@ -42,6 +42,7 @@ #include #include "network.h" +#include "shared.h" namespace ngtcp2 { inline constexpr size_t MAX_UDP_PAYLOAD_SIZE = 1500; @@ -106,7 +107,8 @@ struct EndpointConfig { void *user_data{}; LinkConfig link; - std::function on_write; + std::function(ngtcp2_conn *, const Context &)> + on_write; }; ngtcp2_callbacks default_client_callbacks(); @@ -206,17 +208,19 @@ class Endpoint { Endpoint &operator=(const Endpoint &) = delete; Endpoint &operator=(Endpoint &&) noexcept; - int setup_client(const ngtcp2_addr *remote_addr); - int setup_server(std::span original_dcid, - std::span client_scid, uint32_t version, - const ngtcp2_addr *remote_addr); + std::expected setup_client(const ngtcp2_addr *remote_addr); + std::expected + setup_server(std::span original_dcid, + std::span client_scid, uint32_t version, + const ngtcp2_addr *remote_addr); ngtcp2_conn *get_conn() const { return conn_; } bool get_initialized() const { return initialized_; } const EndpointConfig &get_endpoint_config() const { return config_; } - int on_read(const NetworkPath &path, std::span pkt, - const Context &ctx); - int on_write(const Context &ctx); - int on_timeout(const Context &ctx); + std::expected on_read(const NetworkPath &path, + std::span pkt, + const Context &ctx); + std::expected on_write(const Context &ctx); + std::expected on_timeout(const Context &ctx); Channel &get_channel() { return channel_; } private: @@ -238,14 +242,16 @@ class Simulator { Simulator &operator=(const Simulator &) = delete; Simulator &operator=(Simulator &&) noexcept; - int run(); + std::expected run(); void set_max_events(size_t n) { max_events_ = n; } private: Endpoint &get_opposite_endpoint(const Endpoint &ep); std::optional> get_next_event(); - int deliver_pkt(Endpoint &remote_ep, const NetworkPath &path, - std::span pkt, Timestamp ts); + std::expected deliver_pkt(Endpoint &remote_ep, + const NetworkPath &path, + std::span pkt, + Timestamp ts); Endpoint client_; Endpoint server_; @@ -279,8 +285,8 @@ class UniStreamApp { private: void stream_close(ngtcp2_conn *conn, int64_t stream_id); - int extend_max_local_streams_uni(ngtcp2_conn *conn); - int on_write(ngtcp2_conn *conn, const Context &ctx); + std::expected extend_max_local_streams_uni(ngtcp2_conn *conn); + std::expected on_write(ngtcp2_conn *conn, const Context &ctx); int64_t stream_id_{-1}; uint64_t max_bytes_{}; diff --git a/deps/ngtcp2/ngtcp2/examples/sim_test.cc b/deps/ngtcp2/ngtcp2/examples/sim_test.cc index 76e1c1e498f7fb..6755907ec5605e 100644 --- a/deps/ngtcp2/ngtcp2/examples/sim_test.cc +++ b/deps/ngtcp2/ngtcp2/examples/sim_test.cc @@ -80,13 +80,9 @@ void test_sim_handshake(void) { svapp.configure(sv); sv.link = link; - int rv; + auto rv = Simulator{Endpoint(cl), Endpoint(sv)}.run(); - { - rv = Simulator{Endpoint(cl), Endpoint(sv)}.run(); - } - - assert_int(0, ==, rv); + assert_true(rv.has_value()); assert_true(clapp.get_handshake_confirmed()); assert_true(svapp.get_handshake_confirmed()); } @@ -132,13 +128,9 @@ void test_sim_unistream(void) { svapp.configure(sv); sv.link = link; - int rv; - - { - rv = Simulator{Endpoint(cl), Endpoint(sv)}.run(); - } + auto rv = Simulator{Endpoint(cl), Endpoint(sv)}.run(); - assert_int(0, ==, rv); + assert_true(rv.has_value()); assert_true(svapp.is_all_bytes_sent()); assert_uint64(link.compute_expected_goodput(link.delay * 2), <=, svapp.compute_goodput()); diff --git a/deps/ngtcp2/ngtcp2/examples/simpleclient.c b/deps/ngtcp2/ngtcp2/examples/simpleclient.c index 549aeb68a90246..fb0b8862979c94 100644 --- a/deps/ngtcp2/ngtcp2/examples/simpleclient.c +++ b/deps/ngtcp2/ngtcp2/examples/simpleclient.c @@ -48,7 +48,7 @@ #define REMOTE_HOST "127.0.0.1" #define REMOTE_PORT "4433" -#define ALPN "\xahq-interop" +#define ALPN "\xAhq-interop" #define MESSAGE "GET /\r\n" /* @@ -206,8 +206,8 @@ static void rand_cb(uint8_t *dest, size_t destlen, } static int get_new_connection_id_cb(ngtcp2_conn *conn, ngtcp2_cid *cid, - uint8_t *token, size_t cidlen, - void *user_data) { + ngtcp2_stateless_reset_token *token, + size_t cidlen, void *user_data) { (void)conn; (void)user_data; @@ -217,7 +217,7 @@ static int get_new_connection_id_cb(ngtcp2_conn *conn, ngtcp2_cid *cid, cid->datalen = cidlen; - if (RAND_bytes(token, NGTCP2_STATELESS_RESET_TOKENLEN) != 1) { + if (RAND_bytes(token->data, sizeof(token->data)) != 1) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -293,12 +293,12 @@ static int client_quic_init(struct client *c, .recv_retry = ngtcp2_crypto_recv_retry_cb, .extend_max_local_streams_bidi = extend_max_local_streams_bidi, .rand = rand_cb, - .get_new_connection_id = get_new_connection_id_cb, .update_key = ngtcp2_crypto_update_key_cb, .delete_crypto_aead_ctx = ngtcp2_crypto_delete_crypto_aead_ctx_cb, .delete_crypto_cipher_ctx = ngtcp2_crypto_delete_crypto_cipher_ctx_cb, - .get_path_challenge_data = ngtcp2_crypto_get_path_challenge_data_cb, .version_negotiation = ngtcp2_crypto_version_negotiation_cb, + .get_new_connection_id2 = get_new_connection_id_cb, + .get_path_challenge_data2 = ngtcp2_crypto_get_path_challenge_data2_cb, }; ngtcp2_cid dcid, scid; ngtcp2_settings settings; @@ -593,7 +593,7 @@ static int client_init(struct client *c) { struct sockaddr_storage remote_addr, local_addr; socklen_t remote_addrlen, local_addrlen = sizeof(local_addr); - memset(c, 0, sizeof(*c)); + *c = (struct client){0}; ngtcp2_ccerr_default(&c->last_error); diff --git a/deps/ngtcp2/ngtcp2/examples/siphash.cc b/deps/ngtcp2/ngtcp2/examples/siphash.cc index ceeb4c93ea830d..58cad9d1b775ba 100644 --- a/deps/ngtcp2/ngtcp2/examples/siphash.cc +++ b/deps/ngtcp2/ngtcp2/examples/siphash.cc @@ -79,9 +79,9 @@ uint64_t siphash24(std::span key, std::span input) { const auto orig_input_len = input.size(); uint64_t v[]{ - key[0] ^ UINT64_C(0x736f6d6570736575), - key[1] ^ UINT64_C(0x646f72616e646f6d), - key[0] ^ UINT64_C(0x6c7967656e657261), + key[0] ^ UINT64_C(0x736F6D6570736575), + key[1] ^ UINT64_C(0x646F72616E646F6D), + key[0] ^ UINT64_C(0x6C7967656E657261), key[1] ^ UINT64_C(0x7465646279746573), }; @@ -97,7 +97,7 @@ uint64_t siphash24(std::span key, std::array last_block{}; std::ranges::copy(input, std::ranges::begin(last_block)); - last_block.back() = orig_input_len & 0xff; + last_block.back() = orig_input_len & 0xFF; auto last_block_word = CRYPTO_load_u64_le(last_block); v[3] ^= last_block_word; @@ -105,7 +105,7 @@ uint64_t siphash24(std::span key, siphash_round(v); v[0] ^= last_block_word; - v[2] ^= 0xff; + v[2] ^= 0xFF; siphash_round(v); siphash_round(v); siphash_round(v); diff --git a/deps/ngtcp2/ngtcp2/examples/siphash_test.cc b/deps/ngtcp2/ngtcp2/examples/siphash_test.cc index 9c64c69963563c..54f300444efa6e 100644 --- a/deps/ngtcp2/ngtcp2/examples/siphash_test.cc +++ b/deps/ngtcp2/ngtcp2/examples/siphash_test.cc @@ -62,7 +62,7 @@ void test_siphash(void) { std::array input; std::iota(std::ranges::begin(input), std::ranges::end(input), 0); - assert_uint64(0xa129ca6149be45e5ull, ==, siphash24(key, input)); + assert_uint64(0xA129CA6149BE45E5ULL, ==, siphash24(key, input)); } void test_siphash_vector(void) { diff --git a/deps/ngtcp2/ngtcp2/examples/siphash_vector.h b/deps/ngtcp2/ngtcp2/examples/siphash_vector.h index 62cc0e218c9341..5f4c294cf365cf 100644 --- a/deps/ngtcp2/ngtcp2/examples/siphash_vector.h +++ b/deps/ngtcp2/ngtcp2/examples/siphash_vector.h @@ -4,293 +4,293 @@ const uint8_t vectors_sip64[64][8] = { { 0x31, - 0x0e, - 0x0e, - 0xdd, + 0x0E, + 0x0E, + 0xDD, 0x47, - 0xdb, - 0x6f, + 0xDB, + 0x6F, 0x72, }, { - 0xfd, + 0xFD, 0x67, - 0xdc, + 0xDC, 0x93, - 0xc5, + 0xC5, 0x39, - 0xf8, + 0xF8, 0x74, }, { - 0x5a, - 0x4f, - 0xa9, - 0xd9, + 0x5A, + 0x4F, + 0xA9, + 0xD9, 0x09, 0x80, - 0x6c, - 0x0d, + 0x6C, + 0x0D, }, { - 0x2d, - 0x7e, - 0xfb, - 0xd7, + 0x2D, + 0x7E, + 0xFB, + 0xD7, 0x96, 0x66, 0x67, 0x85, }, { - 0xb7, + 0xB7, 0x87, 0x71, 0x27, - 0xe0, + 0xE0, 0x94, 0x27, - 0xcf, + 0xCF, }, { - 0x8d, - 0xa6, + 0x8D, + 0xA6, 0x99, - 0xcd, + 0xCD, 0x64, 0x55, 0x76, 0x18, }, { - 0xce, - 0xe3, - 0xfe, + 0xCE, + 0xE3, + 0xFE, 0x58, - 0x6e, + 0x6E, 0x46, - 0xc9, - 0xcb, + 0xC9, + 0xCB, }, { 0x37, - 0xd1, + 0xD1, 0x01, - 0x8b, - 0xf5, + 0x8B, + 0xF5, 0x00, 0x02, - 0xab, + 0xAB, }, { 0x62, 0x24, 0x93, - 0x9a, + 0x9A, 0x79, - 0xf5, - 0xf5, + 0xF5, + 0xF5, 0x93, }, { - 0xb0, - 0xe4, - 0xa9, - 0x0b, - 0xdf, + 0xB0, + 0xE4, + 0xA9, + 0x0B, + 0xDF, 0x82, 0x00, - 0x9e, + 0x9E, }, { - 0xf3, - 0xb9, - 0xdd, + 0xF3, + 0xB9, + 0xDD, 0x94, - 0xc5, - 0xbb, - 0x5d, - 0x7a, + 0xC5, + 0xBB, + 0x5D, + 0x7A, }, { - 0xa7, - 0xad, - 0x6b, + 0xA7, + 0xAD, + 0x6B, 0x22, 0x46, - 0x2f, - 0xb3, - 0xf4, + 0x2F, + 0xB3, + 0xF4, }, { - 0xfb, - 0xe5, - 0x0e, + 0xFB, + 0xE5, + 0x0E, 0x86, - 0xbc, - 0x8f, - 0x1e, + 0xBC, + 0x8F, + 0x1E, 0x75, }, { 0x90, - 0x3d, + 0x3D, 0x84, - 0xc0, + 0xC0, 0x27, 0x56, - 0xea, + 0xEA, 0x14, }, { - 0xee, - 0xf2, - 0x7a, - 0x8e, + 0xEE, + 0xF2, + 0x7A, + 0x8E, 0x90, - 0xca, + 0xCA, 0x23, - 0xf7, + 0xF7, }, { - 0xe5, + 0xE5, 0x45, - 0xbe, + 0xBE, 0x49, 0x61, - 0xca, + 0xCA, 0x29, - 0xa1, + 0xA1, }, { - 0xdb, - 0x9b, - 0xc2, + 0xDB, + 0x9B, + 0xC2, 0x57, - 0x7f, - 0xcc, - 0x2a, - 0x3f, + 0x7F, + 0xCC, + 0x2A, + 0x3F, }, { 0x94, 0x47, - 0xbe, - 0x2c, - 0xf5, - 0xe9, - 0x9a, + 0xBE, + 0x2C, + 0xF5, + 0xE9, + 0x9A, 0x69, }, { - 0x9c, - 0xd3, - 0x8d, + 0x9C, + 0xD3, + 0x8D, 0x96, - 0xf0, - 0xb3, - 0xc1, - 0x4b, + 0xF0, + 0xB3, + 0xC1, + 0x4B, }, { - 0xbd, + 0xBD, 0x61, 0x79, - 0xa7, - 0x1d, - 0xc9, - 0x6d, - 0xbb, + 0xA7, + 0x1D, + 0xC9, + 0x6D, + 0xBB, }, { 0x98, - 0xee, - 0xa2, - 0x1a, - 0xf2, - 0x5c, - 0xd6, - 0xbe, + 0xEE, + 0xA2, + 0x1A, + 0xF2, + 0x5C, + 0xD6, + 0xBE, }, { - 0xc7, + 0xC7, 0x67, - 0x3b, - 0x2e, - 0xb0, - 0xcb, - 0xf2, - 0xd0, + 0x3B, + 0x2E, + 0xB0, + 0xCB, + 0xF2, + 0xD0, }, { 0x88, - 0x3e, - 0xa3, - 0xe3, + 0x3E, + 0xA3, + 0xE3, 0x95, 0x67, 0x53, 0x93, }, { - 0xc8, - 0xce, - 0x5c, - 0xcd, - 0x8c, + 0xC8, + 0xCE, + 0x5C, + 0xCD, + 0x8C, 0x03, - 0x0c, - 0xa8, + 0x0C, + 0xA8, }, { 0x94, - 0xaf, + 0xAF, 0x49, - 0xf6, - 0xc6, + 0xF6, + 0xC6, 0x50, - 0xad, - 0xb8, + 0xAD, + 0xB8, }, { - 0xea, - 0xb8, + 0xEA, + 0xB8, 0x85, - 0x8a, - 0xde, + 0x8A, + 0xDE, 0x92, - 0xe1, - 0xbc, + 0xE1, + 0xBC, }, { - 0xf3, + 0xF3, 0x15, - 0xbb, - 0x5b, - 0xb8, + 0xBB, + 0x5B, + 0xB8, 0x35, - 0xd8, + 0xD8, 0x17, }, { - 0xad, - 0xcf, - 0x6b, + 0xAD, + 0xCF, + 0x6B, 0x07, 0x63, 0x61, - 0x2e, - 0x2f, + 0x2E, + 0x2F, }, { - 0xa5, - 0xc9, - 0x1d, - 0xa7, - 0xac, - 0xaa, - 0x4d, - 0xde, + 0xA5, + 0xC9, + 0x1D, + 0xA7, + 0xAC, + 0xAA, + 0x4D, + 0xDE, }, { 0x71, @@ -299,77 +299,77 @@ const uint8_t vectors_sip64[64][8] = { 0x87, 0x66, 0x50, - 0xa2, - 0xa6, + 0xA2, + 0xA6, }, { 0x28, - 0xef, + 0xEF, 0x49, - 0x5c, + 0x5C, 0x53, - 0xa3, + 0xA3, 0x87, - 0xad, + 0xAD, }, { 0x42, - 0xc3, + 0xC3, 0x41, - 0xd8, - 0xfa, + 0xD8, + 0xFA, 0x92, - 0xd8, + 0xD8, 0x32, }, { - 0xce, - 0x7c, - 0xf2, + 0xCE, + 0x7C, + 0xF2, 0x72, - 0x2f, + 0x2F, 0x51, 0x27, 0x71, }, { - 0xe3, + 0xE3, 0x78, 0x59, - 0xf9, + 0xF9, 0x46, 0x23, - 0xf3, - 0xa7, + 0xF3, + 0xA7, }, { 0x38, 0x12, 0x05, - 0xbb, - 0x1a, - 0xb0, - 0xe0, + 0xBB, + 0x1A, + 0xB0, + 0xE0, 0x12, }, { - 0xae, + 0xAE, 0x97, - 0xa1, - 0x0f, - 0xd4, + 0xA1, + 0x0F, + 0xD4, 0x34, - 0xe0, + 0xE0, 0x15, }, { - 0xb4, - 0xa3, + 0xB4, + 0xA3, 0x15, 0x08, - 0xbe, - 0xff, - 0x4d, + 0xBE, + 0xFF, + 0x4D, 0x31, }, { @@ -377,80 +377,80 @@ const uint8_t vectors_sip64[64][8] = { 0x39, 0x62, 0x29, - 0xf0, + 0xF0, 0x90, 0x79, 0x02, }, { - 0x4d, - 0x0c, - 0xf4, - 0x9e, - 0xe5, - 0xd4, - 0xdc, - 0xca, + 0x4D, + 0x0C, + 0xF4, + 0x9E, + 0xE5, + 0xD4, + 0xDC, + 0xCA, }, { - 0x5c, + 0x5C, 0x73, 0x33, - 0x6a, + 0x6A, 0x76, - 0xd8, - 0xbf, - 0x9a, + 0xD8, + 0xBF, + 0x9A, }, { - 0xd0, - 0xa7, + 0xD0, + 0xA7, 0x04, 0x53, - 0x6b, - 0xa9, - 0x3e, - 0x0e, + 0x6B, + 0xA9, + 0x3E, + 0x0E, }, { 0x92, 0x59, 0x58, - 0xfc, - 0xd6, + 0xFC, + 0xD6, 0x42, - 0x0c, - 0xad, + 0x0C, + 0xAD, }, { - 0xa9, + 0xA9, 0x15, - 0xc2, - 0x9b, - 0xc8, + 0xC2, + 0x9B, + 0xC8, 0x06, 0x73, 0x18, }, { 0x95, - 0x2b, + 0x2B, 0x79, - 0xf3, - 0xbc, - 0x0a, - 0xa6, - 0xd4, - }, - { - 0xf2, - 0x1d, - 0xf2, - 0xe4, - 0x1d, + 0xF3, + 0xBC, + 0x0A, + 0xA6, + 0xD4, + }, + { + 0xF2, + 0x1D, + 0xF2, + 0xE4, + 0x1D, 0x45, 0x35, - 0xf9, + 0xF9, }, { 0x87, @@ -458,188 +458,188 @@ const uint8_t vectors_sip64[64][8] = { 0x75, 0x19, 0x04, - 0x8f, + 0x8F, 0x53, - 0xa9, + 0xA9, }, { 0x10, - 0xa5, - 0x6c, - 0xf5, - 0xdf, - 0xcd, - 0x9a, - 0xdb, + 0xA5, + 0x6C, + 0xF5, + 0xDF, + 0xCD, + 0x9A, + 0xDB, }, { - 0xeb, + 0xEB, 0x75, 0x09, - 0x5c, - 0xcd, + 0x5C, + 0xCD, 0x98, - 0x6c, - 0xd0, + 0x6C, + 0xD0, }, { 0x51, - 0xa9, - 0xcb, - 0x9e, - 0xcb, - 0xa3, + 0xA9, + 0xCB, + 0x9E, + 0xCB, + 0xA3, 0x12, - 0xe6, + 0xE6, }, { 0x96, - 0xaf, - 0xad, - 0xfc, - 0x2c, - 0xe6, + 0xAF, + 0xAD, + 0xFC, + 0x2C, + 0xE6, 0x66, - 0xc7, + 0xC7, }, { 0x72, - 0xfe, + 0xFE, 0x52, 0x97, - 0x5a, + 0x5A, 0x43, 0x64, - 0xee, + 0xEE, }, { - 0x5a, + 0x5A, 0x16, 0x45, - 0xb2, + 0xB2, 0x76, - 0xd5, + 0xD5, 0x92, - 0xa1, + 0xA1, }, { - 0xb2, + 0xB2, 0x74, - 0xcb, - 0x8e, - 0xbf, + 0xCB, + 0x8E, + 0xBF, 0x87, 0x87, - 0x0a, + 0x0A, }, { - 0x6f, - 0x9b, - 0xb4, + 0x6F, + 0x9B, + 0xB4, 0x20, - 0x3d, - 0xe7, - 0xb3, + 0x3D, + 0xE7, + 0xB3, 0x81, }, { - 0xea, - 0xec, - 0xb2, - 0xa3, - 0x0b, + 0xEA, + 0xEC, + 0xB2, + 0xA3, + 0x0B, 0x22, - 0xa8, - 0x7f, + 0xA8, + 0x7F, }, { 0x99, 0x24, - 0xa4, - 0x3c, - 0xc1, + 0xA4, + 0x3C, + 0xC1, 0x31, 0x57, 0x24, }, { - 0xbd, + 0xBD, 0x83, - 0x8d, - 0x3a, - 0xaf, - 0xbf, - 0x8d, - 0xb7, + 0x8D, + 0x3A, + 0xAF, + 0xBF, + 0x8D, + 0xB7, }, { - 0x0b, - 0x1a, - 0x2a, + 0x0B, + 0x1A, + 0x2A, 0x32, 0x65, - 0xd5, - 0x1a, - 0xea, + 0xD5, + 0x1A, + 0xEA, }, { 0x13, 0x50, 0x79, - 0xa3, + 0xA3, 0x23, - 0x1c, - 0xe6, + 0x1C, + 0xE6, 0x60, }, { 0x93, - 0x2b, + 0x2B, 0x28, 0x46, - 0xe4, - 0xd7, + 0xE4, + 0xD7, 0x06, 0x66, }, { - 0xe1, + 0xE1, 0x91, - 0x5f, - 0x5c, - 0xb1, - 0xec, - 0xa4, - 0x6c, + 0x5F, + 0x5C, + 0xB1, + 0xEC, + 0xA4, + 0x6C, }, { - 0xf3, + 0xF3, 0x25, 0x96, - 0x5c, - 0xa1, - 0x6d, + 0x5C, + 0xA1, + 0x6D, 0x62, - 0x9f, + 0x9F, }, { 0x57, - 0x5f, - 0xf2, - 0x8e, + 0x5F, + 0xF2, + 0x8E, 0x60, 0x38, - 0x1b, - 0xe5, + 0x1B, + 0xE5, }, { 0x72, 0x45, 0x06, - 0xeb, - 0x4c, + 0xEB, + 0x4C, 0x32, - 0x8a, + 0x8A, 0x95, }, }; diff --git a/deps/ngtcp2/ngtcp2/examples/template.h b/deps/ngtcp2/ngtcp2/examples/template.h index 8c73bbf307483e..43ebe0b31e4056 100644 --- a/deps/ngtcp2/ngtcp2/examples/template.h +++ b/deps/ngtcp2/ngtcp2/examples/template.h @@ -41,6 +41,13 @@ template return static_cast>(n); } +template +[[nodiscard]] auto as_uint8_span(std::span s) noexcept { + return std::span{ + reinterpret_cast(s.data()), s.size_bytes()}; +} + template struct Defer { explicit Defer(F &&f) noexcept(std::is_nothrow_constructible_v) : f(std::forward(f)) {} @@ -89,4 +96,16 @@ as_writable_uint8_span(std::span s) noexcept { reinterpret_cast(s.data()), s.size_bytes()}; } +template +requires(std::ranges::contiguous_range && std::ranges::sized_range && + std::ranges::borrowed_range && + !std::is_array_v> && + sizeof(std::ranges::range_value_t) == + sizeof(std::string_view::value_type)) +[[nodiscard]] std::string_view as_string_view(R &&r) { + return std::string_view{ + reinterpret_cast(std::ranges::data(r)), + std::ranges::size(r)}; +} + #endif // !defined(TEMPLATE_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.cc index c7f0bf7e2086b8..40205ace4e72a2 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.cc @@ -55,13 +55,13 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { auto f = BIO_new_file(config.session_file, "w"); if (f == nullptr) { - std::cerr << "Could not write TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not write TLS session in {}", + config.session_file); return 0; } if (!PEM_write_bio_SSL_SESSION(f, session)) { - std::cerr << "Unable to write TLS session to file" << std::endl; + std::println(stderr, "Unable to write TLS session to file"); } BIO_free(f); @@ -70,40 +70,40 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { } } // namespace -int TLSClientContext::init(const char *private_key_file, - const char *cert_file) { +std::expected TLSClientContext::init(const char *private_key_file, + const char *cert_file) { ssl_ctx_ = SSL_CTX_new(TLS_client_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_boringssl_configure_client_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_boringssl_configure_client_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_boringssl_configure_client_context failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_default_verify_paths(ssl_ctx_); if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } if (private_key_file && cert_file) { if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } } @@ -117,12 +117,12 @@ int TLSClientContext::init(const char *private_key_file, if (!SSL_CTX_add_cert_compression_alg( ssl_ctx_, ngtcp2::tls::CERTIFICATE_COMPRESSION_ALGO_BROTLI, ngtcp2::tls::cert_compress, ngtcp2::tls::cert_decompress)) { - std::cerr << "SSL_CTX_add_cert_compression_alg failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_add_cert_compression_alg failed"); + return std::unexpected{Error::CRYPTO}; } #endif // defined(HAVE_LIBBROTLI) - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.h index 47e7b02e097241..3f3fab08380cde 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_boringssl.h @@ -31,12 +31,17 @@ #include +#include "shared.h" + +using namespace ngtcp2; + class TLSClientContext { public: TLSClientContext() = default; ~TLSClientContext(); - int init(const char *private_key_file, const char *cert_file); + std::expected init(const char *private_key_file, + const char *cert_file); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc index 561db9473144d1..5eab5bc8fe47ec 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc @@ -67,17 +67,17 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { if (SSL_SESSION_get_max_early_data(session) != std::numeric_limits::max()) { - std::cerr << "max_early_data_size is not 0xffffffff" << std::endl; + std::println(stderr, "max_early_data_size is not 0xffffffff"); } auto f = BIO_new_file(config.session_file, "w"); if (f == nullptr) { - std::cerr << "Could not write TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not write TLS session in {}", + config.session_file); return 0; } if (!PEM_write_bio_SSL_SESSION(f, session)) { - std::cerr << "Unable to write TLS session to file" << std::endl; + std::println(stderr, "Unable to write TLS session to file"); } BIO_free(f); @@ -86,40 +86,40 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { } } // namespace -int TLSClientContext::init(const char *private_key_file, - const char *cert_file) { +std::expected TLSClientContext::init(const char *private_key_file, + const char *cert_file) { ssl_ctx_ = SSL_CTX_new(TLS_client_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_default_verify_paths(ssl_ctx_); if (SSL_CTX_set_ciphersuites(ssl_ctx_, config.ciphers) != 1) { - std::cerr << "SSL_CTX_set_ciphersuites: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set_ciphersuites: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } if (private_key_file && cert_file) { if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } } @@ -129,7 +129,7 @@ int TLSClientContext::init(const char *private_key_file, SSL_CTX_sess_set_new_cb(ssl_ctx_, new_session_cb); } - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h index 5c33bfbeadfdeb..fad71595f2579c 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h @@ -31,12 +31,17 @@ #include +#include "shared.h" + +using namespace ngtcp2; + class TLSClientContext { public: TLSClientContext() = default; ~TLSClientContext(); - int init(const char *private_key_file, const char *cert_file); + std::expected init(const char *private_key_file, + const char *cert_file); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.cc index 72ce8dd69f8810..f70df693ef44cd 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.cc @@ -47,14 +47,14 @@ int save_ticket_cb(ptls_save_ticket_t *self, ptls_t *ptls, ptls_iovec_t input) { auto f = BIO_new_file(config.session_file, "w"); if (f == nullptr) { - std::cerr << "Could not write TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not write TLS session in {}", + config.session_file); return 0; } if (!PEM_write_bio(f, "PICOTLS SESSION PARAMETERS", "", input.base, static_cast(input.len))) { - std::cerr << "Unable to write TLS session to file" << std::endl; + std::println(stderr, "Unable to write TLS session to file"); } BIO_free(f); @@ -113,12 +113,12 @@ TLSClientContext::~TLSClientContext() { ptls_context_t *TLSClientContext::get_native_handle() { return &ctx_; } -int TLSClientContext::init(const char *private_key_file, - const char *cert_file) { +std::expected TLSClientContext::init(const char *private_key_file, + const char *cert_file) { if (ngtcp2_crypto_picotls_configure_client_context(&ctx_) != 0) { - std::cerr << "ngtcp2_crypto_picotls_configure_client_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_picotls_configure_client_context failed"); + return std::unexpected{Error::CRYPTO}; } if (config.session_file) { @@ -127,45 +127,46 @@ int TLSClientContext::init(const char *private_key_file, if (private_key_file && cert_file) { if (ptls_load_certificates(&ctx_, cert_file) != 0) { - std::cerr << "ptls_load_certificates failed" << std::endl; - return -1; + std::println(stderr, "ptls_load_certificates failed"); + return std::unexpected{Error::CRYPTO}; } - if (load_private_key(private_key_file) != 0) { - return -1; + if (auto rv = load_private_key(private_key_file); !rv) { + return rv; } } - return 0; + return {}; } -int TLSClientContext::load_private_key(const char *private_key_file) { +std::expected +TLSClientContext::load_private_key(const char *private_key_file) { auto fp = fopen(private_key_file, "rb"); if (fp == nullptr) { - std::cerr << "Could not open private key file " << private_key_file << ": " - << strerror(errno) << std::endl; - return -1; + std::println(stderr, "Could not open private key file {}: {}", + private_key_file, strerror(errno)); + return std::unexpected{Error::IO}; } auto fp_d = defer([fp] { fclose(fp); }); auto pkey = PEM_read_PrivateKey(fp, nullptr, nullptr, nullptr); if (pkey == nullptr) { - std::cerr << "Could not read private key file " << private_key_file - << std::endl; - return -1; + std::println(stderr, "Could not read private key file {}", + private_key_file); + return std::unexpected{Error::IO}; } auto pkey_d = defer([pkey] { EVP_PKEY_free(pkey); }); if (ptls_openssl_init_sign_certificate(&sign_cert_, pkey) != 0) { - std::cerr << "ptls_openssl_init_sign_certificate failed" << std::endl; - return -1; + std::println(stderr, "ptls_openssl_init_sign_certificate failed"); + return std::unexpected{Error::CRYPTO}; } ctx_.sign_certificate = &sign_cert_.super; - return 0; + return {}; } void TLSClientContext::enable_keylog() { ctx_.log_event = &log_event; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.h index b07a2023817991..7f111fd58e0df9 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_picotls.h @@ -32,19 +32,24 @@ #include #include +#include "shared.h" + +using namespace ngtcp2; + class TLSClientContext { public: TLSClientContext(); ~TLSClientContext(); - int init(const char *private_key_file, const char *cert_file); + std::expected init(const char *private_key_file, + const char *cert_file); ptls_context_t *get_native_handle(); void enable_keylog(); private: - int load_private_key(const char *private_key_file); + std::expected load_private_key(const char *private_key_file); ptls_context_t ctx_; ptls_openssl_sign_certificate_t sign_cert_{}; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.cc index 6b5a37b4b09783..ce4ac8dbf7d29b 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.cc @@ -67,17 +67,17 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { if (SSL_SESSION_get_max_early_data(session) != std::numeric_limits::max()) { - std::cerr << "max_early_data_size is not 0xffffffff" << std::endl; + std::println(stderr, "max_early_data_size is not 0xffffffff"); } auto f = BIO_new_file(config.session_file, "w"); if (f == nullptr) { - std::cerr << "Could not write TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not write TLS session in {}", + config.session_file); return 0; } if (!PEM_write_bio_SSL_SESSION(f, session)) { - std::cerr << "Unable to write TLS session to file" << std::endl; + std::println(stderr, "Unable to write TLS session to file"); } BIO_free(f); @@ -86,46 +86,46 @@ int new_session_cb(SSL *ssl, SSL_SESSION *session) { } } // namespace -int TLSClientContext::init(const char *private_key_file, - const char *cert_file) { +std::expected TLSClientContext::init(const char *private_key_file, + const char *cert_file) { ssl_ctx_ = SSL_CTX_new(TLS_client_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_quictls_configure_client_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_quictls_configure_client_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_quictls_configure_client_context failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_default_verify_paths(ssl_ctx_); if (SSL_CTX_set_ciphersuites(ssl_ctx_, config.ciphers) != 1) { - std::cerr << "SSL_CTX_set_ciphersuites: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set_ciphersuites: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } if (private_key_file && cert_file) { if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } } @@ -135,7 +135,7 @@ int TLSClientContext::init(const char *private_key_file, SSL_CTX_sess_set_new_cb(ssl_ctx_, new_session_cb); } - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.h index c76353c89e9670..97cb478f75ac4b 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_quictls.h @@ -31,12 +31,17 @@ #include +#include "shared.h" + +using namespace ngtcp2; + class TLSClientContext { public: TLSClientContext() = default; ~TLSClientContext(); - int init(const char *private_key_file, const char *cert_file); + std::expected init(const char *private_key_file, + const char *cert_file); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.cc index 4d287c42ce75a5..cca571a7c1da36 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.cc @@ -49,8 +49,6 @@ WOLFSSL_CTX *TLSClientContext::get_native_handle() const { return ssl_ctx_; } namespace { int new_session_cb(WOLFSSL *ssl, WOLFSSL_SESSION *session) { - std::cerr << "new_session_cb called" << std::endl; - auto conn_ref = static_cast(wolfSSL_get_app_data(ssl)); auto c = static_cast(conn_ref->user_data); @@ -60,18 +58,18 @@ int new_session_cb(WOLFSSL *ssl, WOLFSSL_SESSION *session) { #ifdef HAVE_SESSION_TICKET if (wolfSSL_SESSION_get_max_early_data(session) != std::numeric_limits::max()) { - std::cerr << "max_early_data_size is not 0xffffffff" << std::endl; + std::println(stderr, "max_early_data_size is not 0xffffffff"); } unsigned char sbuffer[16 * 1024], *data; auto sz = wolfSSL_i2d_SSL_SESSION(session, nullptr); if (sz <= 0) { - std::cerr << "Could not export TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not export TLS session in {}", + config.session_file); return 0; } if (static_cast(sz) > sizeof(sbuffer)) { - std::cerr << "Exported TLS session too large" << std::endl; + std::println(stderr, "Exported TLS session too large"); return 0; } data = sbuffer; @@ -79,8 +77,8 @@ int new_session_cb(WOLFSSL *ssl, WOLFSSL_SESSION *session) { auto f = wolfSSL_BIO_new_file(config.session_file, "w"); if (f == nullptr) { - std::cerr << "Could not write TLS session in " << config.session_file - << std::endl; + std::println(stderr, "Could not write TLS session in {}", + config.session_file); return 0; } @@ -88,32 +86,29 @@ int new_session_cb(WOLFSSL *ssl, WOLFSSL_SESSION *session) { if (!wolfSSL_PEM_write_bio(f, "WOLFSSL SESSION PARAMETERS", "", sbuffer, sz)) { - std::cerr << "Unable to write TLS session to file" << std::endl; + std::println(stderr, "Unable to write TLS session to file"); return 0; } - std::cerr << "new_session_cb: wrote " << sz << " of session data" - << std::endl; #else // !defined(HAVE_SESSION_TICKET) - std::cerr << "TLS session tickets not enabled in wolfSSL " << std::endl; + std::println(stderr, "TLS session tickets not enabled in wolfSSL"); #endif // !defined(HAVE_SESSION_TICKET) return 0; } } // namespace -int TLSClientContext::init(const char *private_key_file, - const char *cert_file) { +std::expected TLSClientContext::init(const char *private_key_file, + const char *cert_file) { ssl_ctx_ = wolfSSL_CTX_new(wolfTLSv1_3_client_method()); if (!ssl_ctx_) { - std::cerr << "wolfSSL_CTX_new: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_new: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_wolfssl_configure_client_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_wolfssl_configure_client_context failed"); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_set_default_verify_paths(ssl_ctx_) == @@ -124,34 +119,31 @@ int TLSClientContext::init(const char *private_key_file, if (wolfSSL_CTX_set_cipher_list(ssl_ctx_, config.ciphers) != WOLFSSL_SUCCESS) { - std::cerr << "wolfSSL_CTX_set_cipher_list: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_set_cipher_list: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_set1_groups_list( ssl_ctx_, const_cast(config.groups)) != WOLFSSL_SUCCESS) { - std::cerr << "wolfSSL_CTX_set1_groups_list(" << config.groups << ") failed" - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_set1_groups_list({}) failed", + config.groups); + return std::unexpected{Error::CRYPTO}; } if (private_key_file && cert_file) { if (wolfSSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) { - std::cerr << "wolfSSL_CTX_use_PrivateKey_file: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_use_PrivateKey_file: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != WOLFSSL_SUCCESS) { - std::cerr << "wolfSSL_CTX_use_certificate_chain_file: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_use_certificate_chain_file: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } } @@ -160,7 +152,7 @@ int TLSClientContext::init(const char *private_key_file, wolfSSL_CTX_sess_set_new_cb(ssl_ctx_, new_session_cb); } - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.h index 07d967026d9de2..a8a66ed50d0a60 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_wolfssl.h @@ -33,12 +33,17 @@ #include #include +#include "shared.h" + +using namespace ngtcp2; + class TLSClientContext { public: TLSClientContext() = default; ~TLSClientContext(); - int init(const char *private_key_file, const char *cert_file); + std::expected init(const char *private_key_file, + const char *cert_file); WOLFSSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.cc index e72405cb6a2794..109265641a52c5 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.cc @@ -35,19 +35,20 @@ extern Config config; -int TLSClientSession::init(bool &early_data_enabled, - const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, - uint32_t quic_version, AppProtocol app_proto) { +std::expected +TLSClientSession::init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, const char *remote_addr, + ClientBase *client, uint32_t quic_version, + AppProtocol app_proto) { early_data_enabled = false; auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = SSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl_, client->conn_ref()); @@ -75,17 +76,17 @@ int TLSClientSession::init(bool &early_data_enabled, if (config.session_file) { auto f = BIO_new_file(config.session_file, "r"); if (f == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { auto session = PEM_read_bio_SSL_SESSION(f, nullptr, 0, nullptr); BIO_free(f); if (session == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { if (!SSL_set_session(ssl_, session)) { - std::cerr << "Could not set session" << std::endl; + std::println(stderr, "Could not set session"); } else if (!config.disable_early_data && SSL_SESSION_early_data_capable(session)) { early_data_enabled = true; @@ -99,12 +100,12 @@ int TLSClientSession::init(bool &early_data_enabled, if (!config.ech_config_list.empty() && SSL_set1_ech_config_list(ssl_, config.ech_config_list.data(), config.ech_config_list.size()) != 1) { - std::cerr << "Could not set ECHConfigList: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "Could not set ECHConfigList: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } - return 0; + return {}; } bool TLSClientSession::get_early_data_accepted() const { @@ -115,20 +116,21 @@ bool TLSClientSession::get_ech_accepted() const { return SSL_ech_accepted(ssl_); } -int TLSClientSession::write_ech_config_list(const char *path) const { +std::expected +TLSClientSession::write_ech_config_list(const char *path) const { const uint8_t *retry_configs; size_t retry_configslen; SSL_get0_ech_retry_configs(ssl_, &retry_configs, &retry_configslen); if (retry_configslen == 0) { - std::cerr << "No ECH retry configs found" << std::endl; - return -1; + std::println(stderr, "No ECH retry configs found"); + return std::unexpected{Error::CRYPTO}; } auto f = std::ofstream(path); if (!f) { - return -1; + return std::unexpected{Error::IO}; } f.write(reinterpret_cast(retry_configs), @@ -136,8 +138,8 @@ int TLSClientSession::write_ech_config_list(const char *path) const { f.close(); if (!f) { - return -1; + return std::unexpected{Error::IO}; } - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.h index 3ce70e9e363415..fad6372cc801c1 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_boringssl.h @@ -41,13 +41,14 @@ class TLSClientSession : public TLSSessionBase { public: TLSClientSession() = default; - int init(bool &early_data_enabled, const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, uint32_t quic_version, - AppProtocol app_proto); + std::expected init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto); bool get_early_data_accepted() const; bool get_ech_accepted() const; - int write_ech_config_list(const char *path) const; + std::expected write_ech_config_list(const char *path) const; }; #endif // !defined(TLS_CLIENT_SESSION_BORINGSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.cc index 74871bf019f120..c5edb78881ce91 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.cc @@ -36,27 +36,27 @@ extern Config config; -int TLSClientSession::init(bool &early_data_enabled, - const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, - uint32_t quic_version, AppProtocol app_proto) { +std::expected +TLSClientSession::init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, const char *remote_addr, + ClientBase *client, uint32_t quic_version, + AppProtocol app_proto) { early_data_enabled = false; auto ssl_ctx = tls_ctx.get_native_handle(); auto ssl = SSL_new(ssl_ctx); if (!ssl) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } ngtcp2_crypto_ossl_ctx_set_ssl(ossl_ctx_, ssl); if (ngtcp2_crypto_ossl_configure_client_session(ssl) != 0) { - std::cerr << "ngtcp2_crypto_ossl_configure_client_session failed" - << std::endl; - return -1; + std::println(stderr, "ngtcp2_crypto_ossl_configure_client_session failed"); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl, client->conn_ref()); @@ -84,17 +84,17 @@ int TLSClientSession::init(bool &early_data_enabled, if (config.session_file) { auto f = BIO_new_file(config.session_file, "r"); if (f == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { auto session = PEM_read_bio_SSL_SESSION(f, nullptr, 0, nullptr); BIO_free(f); if (session == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { if (!SSL_set_session(ssl, session)) { - std::cerr << "Could not set session" << std::endl; + std::println(stderr, "Could not set session"); } else if (!config.disable_early_data && SSL_SESSION_get_max_early_data(session)) { early_data_enabled = true; @@ -106,7 +106,7 @@ int TLSClientSession::init(bool &early_data_enabled, } } - return 0; + return {}; } bool TLSClientSession::get_early_data_accepted() const { diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.h index c11e94cd264507..9b08292f9679f3 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_ossl.h @@ -41,13 +41,16 @@ class TLSClientSession : public TLSSessionBase { public: TLSClientSession() = default; - int init(bool &early_data_enabled, const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, uint32_t quic_version, - AppProtocol app_proto); + std::expected init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto); bool get_early_data_accepted() const; bool get_ech_accepted() const { return false; } - int write_ech_config_list(const char *path) const { return 0; } + std::expected write_ech_config_list(const char *path) const { + return {}; + } }; #endif // !defined(TLS_CLIENT_SESSION_OSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.cc index 3f68bc48ad5503..31b26653899f6e 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.cc @@ -68,13 +68,14 @@ auto negotiated_protocols_hq = std::to_array({ }); } // namespace -int TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, - uint32_t quic_version, AppProtocol app_proto) { +std::expected +TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto) { cptls_.ptls = ptls_client_new(tls_ctx.get_native_handle()); if (!cptls_.ptls) { - std::cerr << "ptls_client_new failed" << std::endl; - return -1; + std::println(stderr, "ptls_client_new failed"); + return std::unexpected{Error::CRYPTO}; } *ptls_get_data_ptr(cptls_.ptls) = client->conn_ref(); @@ -92,9 +93,9 @@ int TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, }; if (ngtcp2_crypto_picotls_configure_client_session(&cptls_, conn) != 0) { - std::cerr << "ngtcp2_crypto_picotls_configure_client_session failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_picotls_configure_client_session failed"); + return std::unexpected{Error::CRYPTO}; } switch (app_proto) { @@ -121,8 +122,8 @@ int TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, if (config.session_file) { auto f = BIO_new_file(config.session_file, "r"); if (f == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { auto f_d = defer([f] { BIO_free(f); }); @@ -131,12 +132,12 @@ int TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, long datalen; if (PEM_read_bio(f, &name, &header, &data, &datalen) != 1) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { if ("PICOTLS SESSION PARAMETERS"sv != name) { - std::cerr << "TLS session file contains unexpected name: " << name - << std::endl; + std::println(stderr, "TLS session file contains unexpected name: {}", + name); } else { hsprops.client.session_ticket.base = new uint8_t[static_cast(datalen)]; @@ -158,7 +159,7 @@ int TLSClientSession::init(bool &early_data_enabled, TLSClientContext &tls_ctx, } } - return 0; + return {}; } bool TLSClientSession::get_early_data_accepted() const { diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.h b/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.h index 6410caf0ab085d..1dd36a2732f242 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_picotls.h @@ -42,13 +42,16 @@ class TLSClientSession : public TLSSessionBase { TLSClientSession() = default; ~TLSClientSession(); - int init(bool &early_data_enabled, TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, uint32_t quic_version, - AppProtocol app_proto); + std::expected init(bool &early_data_enabled, + TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto); bool get_early_data_accepted() const; bool get_ech_accepted() const { return false; } - int write_ech_config_list(const char *path) const { return 0; } + std::expected write_ech_config_list(const char *path) const { + return {}; + } }; #endif // !defined(TLS_CLIENT_SESSION_PICOTLS_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.cc index 1693530255c732..11aa3174018c32 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.cc @@ -36,19 +36,20 @@ extern Config config; -int TLSClientSession::init(bool &early_data_enabled, - const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, - uint32_t quic_version, AppProtocol app_proto) { +std::expected +TLSClientSession::init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, const char *remote_addr, + ClientBase *client, uint32_t quic_version, + AppProtocol app_proto) { early_data_enabled = false; auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = SSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl_, client->conn_ref()); @@ -76,17 +77,17 @@ int TLSClientSession::init(bool &early_data_enabled, if (config.session_file) { auto f = BIO_new_file(config.session_file, "r"); if (f == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { auto session = PEM_read_bio_SSL_SESSION(f, nullptr, 0, nullptr); BIO_free(f); if (session == nullptr) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { if (!SSL_set_session(ssl_, session)) { - std::cerr << "Could not set session" << std::endl; + std::println(stderr, "Could not set session"); } #ifndef LIBRESSL_VERSION_NUMBER else if (!config.disable_early_data && @@ -100,7 +101,7 @@ int TLSClientSession::init(bool &early_data_enabled, } } - return 0; + return {}; } bool TLSClientSession::get_early_data_accepted() const { diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.h b/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.h index e462c0a5021f64..53e7a474fddb2b 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_quictls.h @@ -41,13 +41,16 @@ class TLSClientSession : public TLSSessionBase { public: TLSClientSession() = default; - int init(bool &early_data_enabled, const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, uint32_t quic_version, - AppProtocol app_proto); + std::expected init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto); bool get_early_data_accepted() const; bool get_ech_accepted() const { return false; } - int write_ech_config_list(const char *path) const { return 0; } + std::expected write_ech_config_list(const char *path) const { + return {}; + } }; #endif // !defined(TLS_CLIENT_SESSION_QUICTLS_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.cc index e487c143f9e05b..ad9c2d16faf1fc 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.cc @@ -37,27 +37,20 @@ using namespace std::literals; extern Config config; -namespace { -int wolfssl_session_ticket_cb(WOLFSSL *ssl, const unsigned char *ticket, - int ticketSz, void *cb_ctx) { - std::cerr << "session ticket callback invoked" << std::endl; - return 0; -} -} // namespace - -int TLSClientSession::init(bool &early_data_enabled, - const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, - uint32_t quic_version, AppProtocol app_proto) { +std::expected +TLSClientSession::init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, const char *remote_addr, + ClientBase *client, uint32_t quic_version, + AppProtocol app_proto) { early_data_enabled = false; auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = wolfSSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "wolfSSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } wolfSSL_set_app_data(ssl_, client->conn_ref()); @@ -92,8 +85,8 @@ int TLSClientSession::init(bool &early_data_enabled, #ifdef HAVE_SESSION_TICKET auto f = wolfSSL_BIO_new_file(config.session_file, "r"); if (f == nullptr) { - std::cerr << "Could not open TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not open TLS session file {}", + config.session_file); } else { char *name, *header; unsigned char *data; @@ -102,23 +95,23 @@ int TLSClientSession::init(bool &early_data_enabled, WOLFSSL_SESSION *session; if (wolfSSL_PEM_read_bio(f, &name, &header, &data, &datalen) != 1) { - std::cerr << "Could not read TLS session file " << config.session_file - << std::endl; + std::println(stderr, "Could not read TLS session file {}", + config.session_file); } else { if ("WOLFSSL SESSION PARAMETERS"sv != name) { - std::cerr << "TLS session file contains unexpected name: " << name - << std::endl; + std::println(stderr, "TLS session file contains unexpected name: {}", + name); } else { pdata = data; session = wolfSSL_d2i_SSL_SESSION(nullptr, &pdata, datalen); if (session == nullptr) { - std::cerr << "Could not parse TLS session from file " - << config.session_file << std::endl; + std::println(stderr, "Could not parse TLS session from file {}", + config.session_file); } else { auto ret = wolfSSL_set_session(ssl_, session); if (ret != WOLFSSL_SUCCESS) { - std::cerr << "Could not install TLS session from file " - << config.session_file << std::endl; + std::println(stderr, "Could not install TLS session from file {}", + config.session_file); } else { if (!config.disable_early_data && wolfSSL_SESSION_get_max_early_data(session)) { @@ -137,13 +130,12 @@ int TLSClientSession::init(bool &early_data_enabled, wolfSSL_BIO_free(f); } wolfSSL_UseSessionTicket(ssl_); - wolfSSL_set_SessionTicket_cb(ssl_, wolfssl_session_ticket_cb, nullptr); #else // !defined(HAVE_SESSION_TICKET) - std::cerr << "TLS session im-/export not enabled in wolfSSL" << std::endl; + std::println(stderr, "TLS session im-/export not enabled in wolfSSL"); #endif // !defined(HAVE_SESSION_TICKET) } - return 0; + return {}; } bool TLSClientSession::get_early_data_accepted() const { diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.h index d3a6e166b796ca..0621a8b21f2939 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_session_wolfssl.h @@ -41,13 +41,16 @@ class TLSClientSession : public TLSSessionBase { public: TLSClientSession() = default; - int init(bool &early_data_enabled, const TLSClientContext &tls_ctx, - const char *remote_addr, ClientBase *client, uint32_t quic_version, - AppProtocol app_proto); + std::expected init(bool &early_data_enabled, + const TLSClientContext &tls_ctx, + const char *remote_addr, ClientBase *client, + uint32_t quic_version, AppProtocol app_proto); bool get_early_data_accepted() const; bool get_ech_accepted() const { return false; } - int write_ech_config_list(const char *path) const { return 0; } + std::expected write_ech_config_list(const char *path) const { + return {}; + } }; #endif // !defined(TLS_CLIENT_SESSION_WOLFSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.cc index 2c168514cca7cd..06b7c34c9fed22 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.cc @@ -64,8 +64,7 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -80,7 +79,8 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &H3_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(H3_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -103,8 +103,7 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -119,7 +118,8 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &HQ_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(HQ_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -134,15 +134,16 @@ int verify_cb(int preverify_ok, X509_STORE_CTX *ctx) { } } // namespace -int TLSServerContext::init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto) { +std::expected TLSServerContext::init(const char *private_key_file, + const char *cert_file, + AppProtocol app_proto) { constexpr static unsigned char sid_ctx[] = "ngtcp2 server"; ssl_ctx_ = SSL_CTX_new(TLS_server_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } constexpr auto ssl_opts = (SSL_OP_ALL & ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS) | @@ -152,16 +153,16 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, SSL_CTX_set_options(ssl_ctx_, ssl_opts); if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_mode(ssl_ctx_, SSL_MODE_RELEASE_BUFFERS); if (ngtcp2_crypto_boringssl_configure_server_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_boringssl_configure_server_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_boringssl_configure_server_context failed"); + return std::unexpected{Error::CRYPTO}; } switch (app_proto) { @@ -177,21 +178,21 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_check_private_key(ssl_ctx_) != 1) { - std::cerr << "SSL_CTX_check_private_key: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_check_private_key: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_session_id_context(ssl_ctx_, sid_ctx, sizeof(sid_ctx) - 1); @@ -207,8 +208,8 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (!SSL_CTX_add_cert_compression_alg( ssl_ctx_, ngtcp2::tls::CERTIFICATE_COMPRESSION_ALGO_BROTLI, ngtcp2::tls::cert_compress, ngtcp2::tls::cert_decompress)) { - std::cerr << "SSL_CTX_add_cert_compression_alg failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_add_cert_compression_alg failed"); + return std::unexpected{Error::CRYPTO}; } #endif // defined(HAVE_LIBBROTLI) @@ -220,10 +221,10 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (EVP_HPKE_KEY_init(pkey, EVP_hpke_x25519_hkdf_sha256(), echconf.private_key.bytes.data(), echconf.private_key.bytes.size()) != 1) { - std::cerr << "EVP_HPKE_KEY_init failed: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; + std::println(stderr, "EVP_HPKE_KEY_init failed: {}", + ERR_error_string(ERR_get_error(), nullptr)); - return -1; + return std::unexpected{Error::CRYPTO}; } auto pkey_d = defer([pkey] { EVP_HPKE_KEY_free(pkey); }); @@ -233,19 +234,19 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (SSL_ECH_KEYS_add(keys, 1, echconf.ech_config.data(), echconf.ech_config.size(), pkey) != 1) { - std::cerr << "SSL_ECH_KEYS_add failed: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_ECH_KEYS_add failed: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_set1_ech_keys(ssl_ctx_, keys) != 1) { - std::cerr << "SSL_CTX_set1_ech_keys failed: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_ech_keys failed: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } } - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.h index 57045c122ef4e3..c55e24c034fbbb 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_boringssl.h @@ -40,8 +40,8 @@ class TLSServerContext { TLSServerContext() = default; ~TLSServerContext(); - int init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto); + std::expected init(const char *private_key_file, + const char *cert_file, AppProtocol app_proto); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc index 148224651182dc..9b382351c51caf 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc @@ -75,8 +75,7 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -91,7 +90,8 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &H3_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(H3_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -114,8 +114,7 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -130,7 +129,8 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &HQ_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(HQ_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -212,15 +212,16 @@ SSL_TICKET_RETURN decrypt_ticket_cb(SSL *ssl, SSL_SESSION *session, } } // namespace -int TLSServerContext::init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto) { +std::expected TLSServerContext::init(const char *private_key_file, + const char *cert_file, + AppProtocol app_proto) { constexpr static unsigned char sid_ctx[] = "ngtcp2 server"; ssl_ctx_ = SSL_CTX_new(TLS_server_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_max_early_data(ssl_ctx_, UINT32_MAX); @@ -233,14 +234,14 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, SSL_CTX_set_options(ssl_ctx_, ssl_opts); if (SSL_CTX_set_ciphersuites(ssl_ctx_, config.ciphers) != 1) { - std::cerr << "SSL_CTX_set_ciphersuites: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set_ciphersuites: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_mode(ssl_ctx_, SSL_MODE_RELEASE_BUFFERS); @@ -258,21 +259,21 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_check_private_key(ssl_ctx_) != 1) { - std::cerr << "SSL_CTX_check_private_key: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_check_private_key: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_session_id_context(ssl_ctx_, sid_ctx, sizeof(sid_ctx) - 1); @@ -287,7 +288,7 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, SSL_CTX_set_session_ticket_cb(ssl_ctx_, gen_ticket_cb, decrypt_ticket_cb, nullptr); - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h index d187b25552f6bd..619f1310fec093 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h @@ -40,8 +40,8 @@ class TLSServerContext { TLSServerContext() = default; ~TLSServerContext(); - int init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto); + std::expected init(const char *private_key_file, + const char *cert_file, AppProtocol app_proto); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.cc index a1f8e4753fe695..e1498c159957e5 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.cc @@ -308,8 +308,9 @@ TLSServerContext::~TLSServerContext() { ptls_context_t *TLSServerContext::get_native_handle() { return &ctx_; } -int TLSServerContext::init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto) { +std::expected TLSServerContext::init(const char *private_key_file, + const char *cert_file, + AppProtocol app_proto) { switch (app_proto) { case AppProtocol::H3: ctx_.on_client_hello = &on_client_hello_h3; @@ -322,54 +323,55 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, } if (ngtcp2_crypto_picotls_configure_server_context(&ctx_) != 0) { - std::cerr << "ngtcp2_crypto_picotls_configure_server_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_picotls_configure_server_context failed"); + return std::unexpected{Error::CRYPTO}; } if (ptls_load_certificates(&ctx_, cert_file) != 0) { - std::cerr << "ptls_load_certificates failed" << std::endl; - return -1; + std::println(stderr, "ptls_load_certificates failed"); + return std::unexpected{Error::CRYPTO}; } - if (load_private_key(private_key_file) != 0) { - return -1; + if (auto rv = load_private_key(private_key_file); !rv) { + return rv; } if (config.verify_client) { ctx_.require_client_authentication = 1; } - return 0; + return {}; } -int TLSServerContext::load_private_key(const char *private_key_file) { +std::expected +TLSServerContext::load_private_key(const char *private_key_file) { auto fp = fopen(private_key_file, "rb"); if (fp == nullptr) { - std::cerr << "Could not open private key file " << private_key_file << ": " - << strerror(errno) << std::endl; - return -1; + std::println(stderr, "Could not open private key file {}: {}", + private_key_file, strerror(errno)); + return std::unexpected{Error::IO}; } auto fp_d = defer([fp] { fclose(fp); }); auto pkey = PEM_read_PrivateKey(fp, nullptr, nullptr, nullptr); if (pkey == nullptr) { - std::cerr << "Could not read private key file " << private_key_file - << std::endl; - return -1; + std::println(stderr, "Could not read private key file {}", + private_key_file); + return std::unexpected{Error::IO}; } auto pkey_d = defer([pkey] { EVP_PKEY_free(pkey); }); if (ptls_openssl_init_sign_certificate(&sign_cert_, pkey) != 0) { - std::cerr << "ptls_openssl_init_sign_certificate failed" << std::endl; - return -1; + std::println(stderr, "ptls_openssl_init_sign_certificate failed"); + return std::unexpected{Error::CRYPTO}; } ctx_.sign_certificate = &sign_cert_.super; - return 0; + return {}; } void TLSServerContext::enable_keylog() { ctx_.log_event = &log_event; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.h index acfa3d6bd2afc2..862568f96bed48 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_picotls.h @@ -41,15 +41,15 @@ class TLSServerContext { TLSServerContext(); ~TLSServerContext(); - int init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto); + std::expected init(const char *private_key_file, + const char *cert_file, AppProtocol app_proto); ptls_context_t *get_native_handle(); void enable_keylog(); private: - int load_private_key(const char *private_key_file); + std::expected load_private_key(const char *private_key_file); ptls_context_t ctx_; ptls_openssl_sign_certificate_t sign_cert_{}; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.cc index 664956814febd0..2a2be68510018f 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.cc @@ -75,8 +75,7 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -91,7 +90,8 @@ int alpn_select_proto_h3_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &H3_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(H3_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -114,8 +114,7 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -130,7 +129,8 @@ int alpn_select_proto_hq_cb(SSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &HQ_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(HQ_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -214,21 +214,22 @@ SSL_TICKET_RETURN decrypt_ticket_cb(SSL *ssl, SSL_SESSION *session, } // namespace #endif // !defined(LIBRESSL_VERSION_NUMBER) -int TLSServerContext::init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto) { +std::expected TLSServerContext::init(const char *private_key_file, + const char *cert_file, + AppProtocol app_proto) { constexpr static unsigned char sid_ctx[] = "ngtcp2 server"; ssl_ctx_ = SSL_CTX_new(TLS_server_method()); if (!ssl_ctx_) { - std::cerr << "SSL_CTX_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_CTX_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_quictls_configure_server_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_quictls_configure_server_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_quictls_configure_server_context failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_max_early_data(ssl_ctx_, UINT32_MAX); @@ -244,14 +245,14 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, SSL_CTX_set_options(ssl_ctx_, ssl_opts); if (SSL_CTX_set_ciphersuites(ssl_ctx_, config.ciphers) != 1) { - std::cerr << "SSL_CTX_set_ciphersuites: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set_ciphersuites: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_set1_groups_list(ssl_ctx_, config.groups) != 1) { - std::cerr << "SSL_CTX_set1_groups_list failed" << std::endl; - return -1; + std::println(stderr, "SSL_CTX_set1_groups_list failed"); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_mode(ssl_ctx_, SSL_MODE_RELEASE_BUFFERS); @@ -269,21 +270,21 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (SSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "SSL_CTX_use_PrivateKey_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_PrivateKey_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "SSL_CTX_use_certificate_chain_file: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_use_certificate_chain_file: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (SSL_CTX_check_private_key(ssl_ctx_) != 1) { - std::cerr << "SSL_CTX_check_private_key: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "SSL_CTX_check_private_key: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_CTX_set_session_id_context(ssl_ctx_, sid_ctx, sizeof(sid_ctx) - 1); @@ -300,7 +301,7 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, nullptr); #endif // !defined(LIBRESSL_VERSION_NUMBER) - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.h index 1f14349e3e7718..ccb485c48ac01a 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_quictls.h @@ -40,8 +40,8 @@ class TLSServerContext { TLSServerContext() = default; ~TLSServerContext(); - int init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto); + std::expected init(const char *private_key_file, + const char *cert_file, AppProtocol app_proto); SSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.cc index 53a22175e293d3..4c87a6d2666bcc 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.cc @@ -62,8 +62,7 @@ int alpn_select_proto_h3_cb(WOLFSSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -78,7 +77,8 @@ int alpn_select_proto_h3_cb(WOLFSSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &H3_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(H3_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -102,8 +102,7 @@ int alpn_select_proto_hq_cb(WOLFSSL *ssl, const unsigned char **out, break; default: if (!config.quiet) { - std::cerr << "Unexpected quic protocol version: " << std::hex << "0x" - << version << std::dec << std::endl; + std::println(stderr, "Unexpected quic protocol version: {:#x}", version); } return SSL_TLSEXT_ERR_ALERT_FATAL; } @@ -118,7 +117,8 @@ int alpn_select_proto_hq_cb(WOLFSSL *ssl, const unsigned char **out, } if (!config.quiet) { - std::cerr << "Client did not present ALPN " << &HQ_ALPN_V1[1] << std::endl; + std::println(stderr, "Client did not present ALPN {}", + as_string_view(HQ_ALPN_V1.subspan(1))); } return SSL_TLSEXT_ERR_ALERT_FATAL; @@ -133,8 +133,9 @@ int verify_cb(int preverify_ok, X509_STORE_CTX *ctx) { } } // namespace -int TLSServerContext::init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto) { +std::expected TLSServerContext::init(const char *private_key_file, + const char *cert_file, + AppProtocol app_proto) { constexpr static unsigned char sid_ctx[] = "ngtcp2 server"; #ifdef DEBUG_WOLFSSL @@ -145,16 +146,15 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, ssl_ctx_ = wolfSSL_CTX_new(wolfTLSv1_3_server_method()); if (!ssl_ctx_) { - std::cerr << "wolfSSL_CTX_new: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_new: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (ngtcp2_crypto_wolfssl_configure_server_context(ssl_ctx_) != 0) { - std::cerr << "ngtcp2_crypto_wolfssl_configure_server_context failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_wolfssl_configure_server_context failed"); + return std::unexpected{Error::CRYPTO}; } #ifdef WOLFSSL_EARLY_DATA @@ -168,16 +168,16 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, wolfSSL_CTX_set_options(ssl_ctx_, ssl_opts); if (wolfSSL_CTX_set_cipher_list(ssl_ctx_, config.ciphers) != 1) { - std::cerr << "wolfSSL_CTX_set_cipher_list: " - << ERR_error_string(ERR_get_error(), nullptr) << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_set_cipher_list: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_set1_groups_list(ssl_ctx_, const_cast(config.groups)) != 1) { - std::cerr << "wolfSSL_CTX_set1_groups_list(" << config.groups << ") failed" - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_set1_groups_list({}) failed", + config.groups); + return std::unexpected{Error::CRYPTO}; } wolfSSL_CTX_set_mode(ssl_ctx_, SSL_MODE_RELEASE_BUFFERS); @@ -195,24 +195,21 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, if (wolfSSL_CTX_use_PrivateKey_file(ssl_ctx_, private_key_file, SSL_FILETYPE_PEM) != 1) { - std::cerr << "wolfSSL_CTX_use_PrivateKey_file: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_use_PrivateKey_file: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_use_certificate_chain_file(ssl_ctx_, cert_file) != 1) { - std::cerr << "wolfSSL_CTX_use_certificate_chain_file: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_use_certificate_chain_file: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } if (wolfSSL_CTX_check_private_key(ssl_ctx_) != 1) { - std::cerr << "wolfSSL_CTX_check_private_key: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_CTX_check_private_key: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } wolfSSL_CTX_set_session_id_context(ssl_ctx_, sid_ctx, sizeof(sid_ctx) - 1); @@ -224,7 +221,7 @@ int TLSServerContext::init(const char *private_key_file, const char *cert_file, verify_cb); } - return 0; + return {}; } extern std::ofstream keylog_file; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.h index 0a5aa70e4bf8a5..2f235ca4570b47 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_wolfssl.h @@ -41,8 +41,8 @@ class TLSServerContext { TLSServerContext() = default; ~TLSServerContext(); - int init(const char *private_key_file, const char *cert_file, - AppProtocol app_proto); + std::expected init(const char *private_key_file, + const char *cert_file, AppProtocol app_proto); WOLFSSL_CTX *get_native_handle() const; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.cc index 99af497130f4e0..89c581708c3a99 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.cc @@ -34,15 +34,15 @@ extern Config config; -int TLSServerSession::init(const TLSServerContext &tls_ctx, - HandlerBase *handler) { +std::expected +TLSServerSession::init(const TLSServerContext &tls_ctx, HandlerBase *handler) { auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = SSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl_, handler->conn_ref()); @@ -63,18 +63,17 @@ int TLSServerSession::init(const TLSServerContext &tls_ctx, auto quic_early_data_ctxlen = ngtcp2_transport_params_encode( quic_early_data_ctx.data(), quic_early_data_ctx.size(), ¶ms); if (quic_early_data_ctxlen < 0) { - std::cerr << "ngtcp2_transport_params_encode: " - << ngtcp2_strerror(static_cast(quic_early_data_ctxlen)) - << std::endl; - return -1; + std::println(stderr, "ngtcp2_transport_params_encode: {}", + ngtcp2_strerror(static_cast(quic_early_data_ctxlen))); + return std::unexpected{Error::CRYPTO}; } if (SSL_set_quic_early_data_context(ssl_, quic_early_data_ctx.data(), as_unsigned(quic_early_data_ctxlen)) != 1) { - std::cerr << "SSL_set_quic_early_data_context failed" << std::endl; - return -1; + std::println(stderr, "SSL_set_quic_early_data_context failed"); + return std::unexpected{Error::CRYPTO}; } - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.h index 7ffa4f0214abb8..3599e9a6c12081 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_boringssl.h @@ -30,6 +30,9 @@ #endif // defined(HAVE_CONFIG_H) #include "tls_session_base_quictls.h" +#include "shared.h" + +using namespace ngtcp2; class TLSServerContext; class HandlerBase; @@ -38,9 +41,10 @@ class TLSServerSession : public TLSSessionBase { public: TLSServerSession() = default; - int init(const TLSServerContext &tls_ctx, HandlerBase *handler); + std::expected init(const TLSServerContext &tls_ctx, + HandlerBase *handler); // ticket is sent automatically. - int send_session_ticket() { return 0; } + std::expected send_session_ticket() { return {}; } }; #endif // !defined(TLS_SERVER_SESSION_BORINGSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.cc index 0857c83f0b6940..1b708ede2c0c3a 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.cc @@ -31,28 +31,27 @@ #include "tls_server_context_ossl.h" #include "server_base.h" -int TLSServerSession::init(const TLSServerContext &tls_ctx, - HandlerBase *handler) { +std::expected +TLSServerSession::init(const TLSServerContext &tls_ctx, HandlerBase *handler) { auto ssl_ctx = tls_ctx.get_native_handle(); auto ssl = SSL_new(ssl_ctx); if (!ssl) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } ngtcp2_crypto_ossl_ctx_set_ssl(ossl_ctx_, ssl); if (ngtcp2_crypto_ossl_configure_server_session(ssl) != 0) { - std::cerr << "ngtcp2_crypto_ossl_configure_server_session failed" - << std::endl; - return -1; + std::println(stderr, "ngtcp2_crypto_ossl_configure_server_session failed"); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl, handler->conn_ref()); SSL_set_accept_state(ssl); SSL_set_quic_tls_early_data_enabled(ssl, 1); - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.h index 195672c3cbb747..6f859e25e8d614 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_ossl.h @@ -30,6 +30,9 @@ #endif // defined(HAVE_CONFIG_H) #include "tls_session_base_ossl.h" +#include "shared.h" + +using namespace ngtcp2; class TLSServerContext; class HandlerBase; @@ -38,9 +41,10 @@ class TLSServerSession : public TLSSessionBase { public: TLSServerSession() = default; - int init(const TLSServerContext &tls_ctx, HandlerBase *handler); + std::expected init(const TLSServerContext &tls_ctx, + HandlerBase *handler); // ticket is sent automatically. - int send_session_ticket() { return 0; } + std::expected send_session_ticket() { return {}; } }; #endif // !defined(TLS_SERVER_SESSION_OSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.cc index 9039fd14ff34a9..1d7071df2fb916 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.cc @@ -37,11 +37,12 @@ using namespace ngtcp2; extern Config config; -int TLSServerSession::init(TLSServerContext &tls_ctx, HandlerBase *handler) { +std::expected TLSServerSession::init(TLSServerContext &tls_ctx, + HandlerBase *handler) { cptls_.ptls = ptls_server_new(tls_ctx.get_native_handle()); if (!cptls_.ptls) { - std::cerr << "ptls_server_new failed" << std::endl; - return -1; + std::println(stderr, "ptls_server_new failed"); + return std::unexpected{Error::CRYPTO}; } *ptls_get_data_ptr(cptls_.ptls) = handler->conn_ref(); @@ -57,10 +58,10 @@ int TLSServerSession::init(TLSServerContext &tls_ctx, HandlerBase *handler) { }; if (ngtcp2_crypto_picotls_configure_server_session(&cptls_) != 0) { - std::cerr << "ngtcp2_crypto_picotls_configure_server_session failed" - << std::endl; - return -1; + std::println(stderr, + "ngtcp2_crypto_picotls_configure_server_session failed"); + return std::unexpected{Error::CRYPTO}; } - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.h b/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.h index 811b44559d95c9..fb15ee81f4dd47 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_picotls.h @@ -30,6 +30,9 @@ #endif // defined(HAVE_CONFIG_H) #include "tls_session_base_picotls.h" +#include "shared.h" + +using namespace ngtcp2; class TLSServerContext; class HandlerBase; @@ -38,9 +41,10 @@ class TLSServerSession : public TLSSessionBase { public: TLSServerSession() = default; - int init(TLSServerContext &tls_ctx, HandlerBase *handler); + std::expected init(TLSServerContext &tls_ctx, + HandlerBase *handler); // ticket is sent automatically. - int send_session_ticket() { return 0; } + std::expected send_session_ticket() { return {}; } }; #endif // !defined(TLS_SERVER_SESSION_PICOTLS_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.cc index 39a57ac9a505e4..5600efea0ed87a 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.cc @@ -31,15 +31,15 @@ #include "tls_server_context_quictls.h" #include "server_base.h" -int TLSServerSession::init(const TLSServerContext &tls_ctx, - HandlerBase *handler) { +std::expected +TLSServerSession::init(const TLSServerContext &tls_ctx, HandlerBase *handler) { auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = SSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "SSL_new: " << ERR_error_string(ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "SSL_new: {}", + ERR_error_string(ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } SSL_set_app_data(ssl_, handler->conn_ref()); @@ -48,5 +48,5 @@ int TLSServerSession::init(const TLSServerContext &tls_ctx, SSL_set_quic_early_data_enabled(ssl_, 1); #endif // !defined(LIBRESSL_VERSION_NUMBER) - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.h b/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.h index 94c24f851cda7c..a5b493bd6bdf94 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_quictls.h @@ -30,6 +30,9 @@ #endif // defined(HAVE_CONFIG_H) #include "tls_session_base_quictls.h" +#include "shared.h" + +using namespace ngtcp2; class TLSServerContext; class HandlerBase; @@ -38,9 +41,10 @@ class TLSServerSession : public TLSSessionBase { public: TLSServerSession() = default; - int init(const TLSServerContext &tls_ctx, HandlerBase *handler); + std::expected init(const TLSServerContext &tls_ctx, + HandlerBase *handler); // ticket is sent automatically. - int send_session_ticket() { return 0; } + std::expected send_session_ticket() { return {}; } }; #endif // !defined(TLS_SERVER_SESSION_QUICTLS_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.cc index 0cc2dd64950b7d..c596b79893a3c4 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.cc @@ -29,16 +29,15 @@ #include "tls_server_context_wolfssl.h" #include "server_base.h" -int TLSServerSession::init(const TLSServerContext &tls_ctx, - HandlerBase *handler) { +std::expected +TLSServerSession::init(const TLSServerContext &tls_ctx, HandlerBase *handler) { auto ssl_ctx = tls_ctx.get_native_handle(); ssl_ = wolfSSL_new(ssl_ctx); if (!ssl_) { - std::cerr << "wolfSSL_new: " - << wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr) - << std::endl; - return -1; + std::println(stderr, "wolfSSL_new: {}", + wolfSSL_ERR_error_string(wolfSSL_ERR_get_error(), nullptr)); + return std::unexpected{Error::CRYPTO}; } wolfSSL_set_app_data(ssl_, handler->conn_ref()); @@ -49,5 +48,5 @@ int TLSServerSession::init(const TLSServerContext &tls_ctx, // Just use QUIC v1 wolfSSL_set_quic_transport_version(ssl_, 0x39); - return 0; + return {}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.h index 47458828939dbc..8d5f4bcc45eed8 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_session_wolfssl.h @@ -30,6 +30,9 @@ #endif // defined(HAVE_CONFIG_H) #include "tls_session_base_wolfssl.h" +#include "shared.h" + +using namespace ngtcp2; class TLSServerContext; class HandlerBase; @@ -38,9 +41,10 @@ class TLSServerSession : public TLSSessionBase { public: TLSServerSession() = default; - int init(const TLSServerContext &tls_ctx, HandlerBase *handler); + std::expected init(const TLSServerContext &tls_ctx, + HandlerBase *handler); // ticket is sent automatically. - int send_session_ticket() { return 0; } + std::expected send_session_ticket() { return {}; } }; #endif // !defined(TLS_SERVER_SESSION_WOLFSSL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.cc index d0465b8559f75a..ce5c2ebe9edbca 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.cc @@ -42,6 +42,17 @@ std::string TLSSessionBase::get_cipher_name() const { return wolfSSL_get_cipher_name(ssl_); } +std::string_view TLSSessionBase::get_negotiated_group() const { + using namespace std::literals; + + auto name = wolfSSL_get_curve_name(ssl_); + if (!name) { + return ""sv; + } + + return name; +} + std::string TLSSessionBase::get_selected_alpn() const { char *alpn = nullptr; unsigned short alpnlen; diff --git a/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.h b/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.h index ec9933da2be97c..b3942bc8e78d27 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_session_base_wolfssl.h @@ -44,11 +44,7 @@ class TLSSessionBase { WOLFSSL *get_native_handle() const; std::string get_cipher_name() const; - std::string_view get_negotiated_group() const { - using namespace std::literals; - - return ""sv; - } + std::string_view get_negotiated_group() const; std::string get_selected_alpn() const; // Keylog is enabled per SSL_CTX. void enable_keylog() {} diff --git a/deps/ngtcp2/ngtcp2/examples/util.cc b/deps/ngtcp2/ngtcp2/examples/util.cc index c5baac9073e9f3..b398210179e080 100644 --- a/deps/ngtcp2/ngtcp2/examples/util.cc +++ b/deps/ngtcp2/ngtcp2/examples/util.cc @@ -57,17 +57,19 @@ namespace ngtcp2 { namespace util { -std::optional -read_hpke_private_key_pem(const std::string_view &filename); +std::expected +read_hpke_private_key_pem(std::string_view filename); -std::optional> read_pem(const std::string_view &filename, - const std::string_view &name, - const std::string_view &type); +std::expected, Error> read_pem(std::string_view filename, + std::string_view name, + std::string_view type); -int write_pem(const std::string_view &filename, const std::string_view &name, - const std::string_view &type, std::span data); +std::expected write_pem(std::string_view filename, + std::string_view name, + std::string_view type, + std::span data); -std::string decode_hex(const std::string_view &s) { +std::string decode_hex(std::string_view s) { assert(s.size() % 2 == 0); std::string res(s.size() / 2, '0'); auto p = std::ranges::begin(res); @@ -182,7 +184,7 @@ uint8_t *hexdump_ascii(uint8_t *dest, std::span data) { *dest++ = '|'; for (auto c : data) { - if (0x20 <= c && c <= 0x7e) { + if (0x20 <= c && c <= 0x7E) { *dest++ = c; } else { *dest++ = '.'; @@ -244,23 +246,24 @@ uint8_t *hexdump_line(uint8_t *dest, std::span data, } // namespace namespace { -int hexdump_write(int fd, std::span data) { +std::expected hexdump_write(int fd, + std::span data) { ssize_t nwrite; for (; (nwrite = write(fd, data.data(), data.size())) == -1 && errno == EINTR;) ; if (nwrite == -1) { - return -1; + return std::unexpected{Error::IO}; } - return 0; + return {}; } } // namespace -int hexdump(FILE *out, const void *data, size_t datalen) { - if (datalen == 0) { - return 0; +std::expected hexdump(FILE *out, std::span data) { + if (data.empty()) { + return {}; } // min_space is the additional minimum space that the buffer must @@ -271,7 +274,7 @@ int hexdump(FILE *out, const void *data, size_t datalen) { auto fd = fileno(out); std::array buf; - auto input = std::span{reinterpret_cast(data), datalen}; + auto input = data; auto last = buf.data(); auto repeated = false; std::span s, last_s{}; @@ -298,22 +301,21 @@ int hexdump(FILE *out, const void *data, size_t datalen) { repeated = false; } - last = hexdump_line( - last, s, as_unsigned(s.data() - reinterpret_cast(data))); + last = hexdump_line(last, s, as_unsigned(s.data() - data.data())); *last++ = '\n'; last_s = s; auto len = static_cast(last - buf.data()); if (len + min_space > buf.size()) { - if (hexdump_write(fd, {buf.data(), len}) != 0) { - return -1; + if (auto rv = hexdump_write(fd, {buf.data(), len}); !rv) { + return rv; } last = buf.data(); } } - last = hexdump_addr(last, datalen); + last = hexdump_addr(last, data.size()); *last++ = '\n'; auto len = static_cast(last - buf.data()); @@ -321,7 +323,7 @@ int hexdump(FILE *out, const void *data, size_t datalen) { return hexdump_write(fd, {buf.data(), len}); } - return 0; + return {}; } ngtcp2_cid make_cid_key(std::span cid) { @@ -342,7 +344,7 @@ std::string straddr(const sockaddr *sa, socklen_t salen) { auto rv = getnameinfo(sa, salen, host.data(), host.size(), port.data(), port.size(), NI_NUMERICHOST | NI_NUMERICSERV); if (rv != 0) { - std::cerr << "getnameinfo: " << gai_strerror(rv) << std::endl; + std::println(stderr, "getnameinfo: {}", gai_strerror(rv)); return ""; } std::string res = "["; @@ -387,11 +389,11 @@ namespace { constexpr bool rws(char c) { return c == '\t' || c == ' '; } } // namespace -std::optional> -read_mime_types(const std::string_view &filename) { +std::expected, Error> +read_mime_types(std::string_view filename) { std::ifstream f(filename.data()); if (!f) { - return {}; + return std::unexpected{Error::IO}; } std::unordered_map dest; @@ -442,12 +444,12 @@ std::string format_duration(ngtcp2_duration n) { } namespace { -std::optional> -parse_uint_internal(const std::string_view &s) { +std::expected, Error> +parse_uint_internal(std::string_view s) { uint64_t res = 0; if (s.empty()) { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } for (size_t i = 0; i < s.size(); ++i) { @@ -458,7 +460,7 @@ parse_uint_internal(const std::string_view &s) { auto d = static_cast(c - '0'); if (res > (std::numeric_limits::max() - d) / 10) { - return {}; + return std::unexpected{Error::INTEGER_OVERFLOW}; } res *= 10; @@ -469,29 +471,29 @@ parse_uint_internal(const std::string_view &s) { } } // namespace -std::optional parse_uint(const std::string_view &s) { +std::expected parse_uint(std::string_view s) { auto o = parse_uint_internal(s); if (!o) { - return {}; + return std::unexpected{o.error()}; } auto [res, idx] = *o; if (idx != s.size()) { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } return res; } -std::optional parse_uint_iec(const std::string_view &s) { +std::expected parse_uint_iec(std::string_view s) { auto o = parse_uint_internal(s); if (!o) { - return {}; + return std::unexpected{o.error()}; } auto [res, idx] = *o; if (idx == s.size()) { return res; } if (idx + 1 != s.size()) { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } uint64_t m; @@ -509,20 +511,20 @@ std::optional parse_uint_iec(const std::string_view &s) { m = 1 << 10; break; default: - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } if (res > std::numeric_limits::max() / m) { - return {}; + return std::unexpected{Error::INTEGER_OVERFLOW}; } return res * m; } -std::optional parse_duration(const std::string_view &s) { +std::expected parse_duration(std::string_view s) { auto o = parse_uint_internal(s); if (!o) { - return {}; + return std::unexpected{o.error()}; } auto [res, idx] = *o; if (idx == s.size()) { @@ -545,7 +547,7 @@ std::optional parse_duration(const std::string_view &s) { m = NGTCP2_SECONDS; break; default: - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } } else if (idx + 2 == s.size() && (s[idx + 1] == 's' || s[idx + 1] == 'S')) { switch (s[idx]) { @@ -561,14 +563,14 @@ std::optional parse_duration(const std::string_view &s) { case 'n': return res; default: - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } } else { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } if (res > std::numeric_limits::max() / m) { - return {}; + return std::unexpected{Error::INTEGER_OVERFLOW}; } return res * m; @@ -611,12 +613,17 @@ template InputIt eat_dir(InputIt first, InputIt last) { } } // namespace -std::string normalize_path(const std::string_view &path) { - assert(path.size() <= 1024); +std::expected normalize_path(std::string_view path) { + constexpr size_t max_path = 1024; + + if (path.size() > max_path) { + return std::unexpected{Error::INVALID_ARGUMENT}; + } + assert(path.size() > 0); assert(path[0] == '/'); - std::array res; + std::array res; auto p = res.data(); auto first = std::ranges::begin(path); @@ -664,32 +671,37 @@ std::string normalize_path(const std::string_view &path) { return std::string{res.data(), p}; } -int make_socket_nonblocking(int fd) { +std::expected make_socket_nonblocking(int fd) { int rv; int flags; while ((flags = fcntl(fd, F_GETFL, 0)) == -1 && errno == EINTR) ; if (flags == -1) { - return -1; + return std::unexpected{Error::SYSCALL}; } while ((rv = fcntl(fd, F_SETFL, flags | O_NONBLOCK)) == -1 && errno == EINTR) ; - return rv; + if (rv == -1) { + return std::unexpected{Error::SYSCALL}; + } + + return {}; } -int create_nonblock_socket(int domain, int type, int protocol) { +std::expected create_nonblock_socket(int domain, int type, + int protocol) { #ifdef SOCK_NONBLOCK auto fd = socket(domain, type | SOCK_NONBLOCK, protocol); if (fd == -1) { - return -1; + return std::unexpected{Error::SYSCALL}; } #else // !defined(SOCK_NONBLOCK) auto fd = socket(domain, type, protocol); if (fd == -1) { - return -1; + return std::unexpected{Error::SYSCALL}; } make_socket_nonblocking(fd); @@ -698,7 +710,7 @@ int create_nonblock_socket(int domain, int type, int protocol) { return fd; } -std::vector split_str(const std::string_view &s, char delim) { +std::vector split_str(std::string_view s, char delim) { size_t len = 1; auto last = std::ranges::end(s); std::string_view::const_iterator d; @@ -722,85 +734,91 @@ std::vector split_str(const std::string_view &s, char delim) { return list; } -std::optional parse_version(const std::string_view &s) { +std::expected parse_version(std::string_view s) { if (!util::istarts_with(s, "0x"sv)) { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } auto k = s.substr(2); auto k_last = k.data() + k.size(); uint32_t v; auto rv = std::from_chars(k.data(), k_last, v, 16); if (rv.ptr != k_last || rv.ec != std::errc{}) { - return {}; + return std::unexpected{Error::INVALID_ARGUMENT}; } return v; } -std::optional> -read_token(const std::string_view &filename) { +std::expected, Error> +read_token(std::string_view filename) { return read_pem(filename, "token"sv, "QUIC TOKEN"sv); } -int write_token(const std::string_view &filename, - std::span token) { +std::expected write_token(std::string_view filename, + std::span token) { return write_pem(filename, "token"sv, "QUIC TOKEN"sv, token); } -std::optional> -read_transport_params(const std::string_view &filename) { +std::expected, Error> +read_transport_params(std::string_view filename) { return read_pem(filename, "transport parameters"sv, "QUIC TRANSPORT PARAMETERS"sv); } -int write_transport_params(const std::string_view &filename, - std::span data) { +std::expected +write_transport_params(std::string_view filename, + std::span data) { return write_pem(filename, "transport parameters"sv, "QUIC TRANSPORT PARAMETERS"sv, data); } -std::string percent_decode(const std::string_view &s) { +std::string percent_decode(std::string_view s) { std::string result; - result.resize(s.size()); - auto p = std::ranges::begin(result); - for (auto first = std::ranges::begin(s), last = std::ranges::end(s); - first != last; ++first) { - if (*first != '%') { + + result.resize_and_overwrite(s.size(), [s](auto p, auto len) { + auto head = p; + + for (auto first = std::ranges::begin(s), last = std::ranges::end(s); + first != last; ++first) { + if (*first != '%') { + *p++ = *first; + continue; + } + + if (first + 1 != last && first + 2 != last && + is_hex_digit(*(first + 1)) && is_hex_digit(*(first + 2))) { + *p++ = static_cast((hex_to_uint(*(first + 1)) << 4) + + hex_to_uint(*(first + 2))); + first += 2; + continue; + } + *p++ = *first; - continue; } - if (first + 1 != last && first + 2 != last && is_hex_digit(*(first + 1)) && - is_hex_digit(*(first + 2))) { - *p++ = static_cast((hex_to_uint(*(first + 1)) << 4) + - hex_to_uint(*(first + 2))); - first += 2; - continue; - } + return p - head; + }); - *p++ = *first; - } - result.resize(as_unsigned(p - std::ranges::begin(result))); return result; } -std::optional> read_file(const std::string_view &path) { +std::expected, Error> read_file(std::string_view path) { auto fd = open(path.data(), O_RDONLY); if (fd == -1) { - return {}; + return std::unexpected{Error::IO}; } auto fd_d = defer([fd] { close(fd); }); auto size = lseek(fd, 0, SEEK_END); if (size == static_cast(-1)) { - return {}; + return std::unexpected{Error::IO}; } auto addr = mmap(nullptr, static_cast(size), PROT_READ, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - return {}; + return std::unexpected{Error::IO}; } auto addr_d = @@ -825,16 +843,16 @@ bool recv_pkt_time_threshold_exceeded(bool time_sensitive, ngtcp2_tstamp start, util::timestamp() - start >= NGTCP2_MILLISECONDS; } -std::optional -read_ech_server_config(const std::string_view &path) { +std::expected +read_ech_server_config(std::string_view path) { auto pkey = read_hpke_private_key_pem(path); if (!pkey) { - return {}; + return std::unexpected{pkey.error()}; } auto ech_config = read_pem(path, "ECH config"sv, "ECHCONFIG"sv); if (!ech_config) { - return {}; + return std::unexpected{ech_config.error()}; } return ECHServerConfig{ @@ -847,8 +865,7 @@ std::span generate_siphash_key() { static auto key = [] { std::array key; - auto rv = generate_secure_random(as_writable_uint8_span(std::span{key})); - if (rv != 0) { + if (!generate_secure_random(as_writable_uint8_span(std::span{key}))) { assert(0); abort(); } diff --git a/deps/ngtcp2/ngtcp2/examples/util.h b/deps/ngtcp2/ngtcp2/examples/util.h index cccd13c3b1d23a..81306fd03d91a1 100644 --- a/deps/ngtcp2/ngtcp2/examples/util.h +++ b/deps/ngtcp2/ngtcp2/examples/util.h @@ -33,12 +33,12 @@ #include #include -#include #include #include #include #include #include +#include #include #include @@ -48,13 +48,14 @@ #include "network.h" #include "siphash.h" #include "template.h" +#include "shared.h" namespace ngtcp2 { namespace util { -inline nghttp3_nv make_nv(const std::string_view &name, - const std::string_view &value, uint8_t flags) { +inline nghttp3_nv make_nv(std::string_view name, std::string_view value, + uint8_t flags) { return nghttp3_nv{ reinterpret_cast(const_cast(std::ranges::data(name))), reinterpret_cast(const_cast(std::ranges::data(value))), @@ -64,18 +65,15 @@ inline nghttp3_nv make_nv(const std::string_view &name, }; } -inline nghttp3_nv make_nv_cc(const std::string_view &name, - const std::string_view &value) { +inline nghttp3_nv make_nv_cc(std::string_view name, std::string_view value) { return make_nv(name, value, NGHTTP3_NV_FLAG_NONE); } -inline nghttp3_nv make_nv_nc(const std::string_view &name, - const std::string_view &value) { +inline nghttp3_nv make_nv_nc(std::string_view name, std::string_view value) { return make_nv(name, value, NGHTTP3_NV_FLAG_NO_COPY_NAME); } -inline nghttp3_nv make_nv_nn(const std::string_view &name, - const std::string_view &value) { +inline nghttp3_nv make_nv_nn(std::string_view name, std::string_view value) { return make_nv(name, value, NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE); } @@ -90,7 +88,7 @@ constexpr O format_hex_uint8(uint8_t b, O result) { # pragma GCC diagnostic ignored "-Wsign-conversion" #endif // __GNUC__ *result++ = LOWER_XDIGITS[b >> 4]; - *result++ = LOWER_XDIGITS[b & 0xf]; + *result++ = LOWER_XDIGITS[b & 0xF]; #ifdef __GNUC__ # pragma GCC diagnostic pop #endif // __GNUC__ @@ -135,9 +133,12 @@ constexpr std::string format_hex(I first, std::iter_difference_t n) { std::string res; - res.resize(as_unsigned(n * 2)); + res.resize_and_overwrite(as_unsigned(n * 2), [first = std::move(first), + n](auto p, auto len) mutable { + format_hex(std::move(first), n, p); - format_hex(std::move(first), std::move(n), std::ranges::begin(res)); + return len; + }); return res; } @@ -155,15 +156,18 @@ constexpr O format_hex(R &&r, O result) { } // format_hex converts |R| in hex format, and returns the result. -template +template requires(!std::is_array_v> && sizeof(std::ranges::range_value_t) == sizeof(uint8_t)) constexpr std::string format_hex(R &&r) { std::string res; - res.resize(as_unsigned(std::ranges::distance(r) * 2)); + res.resize_and_overwrite(as_unsigned(std::ranges::distance(r) * 2), + [&r](auto p, auto len) { + format_hex(r, p); - format_hex(std::forward(r), std::ranges::begin(res)); + return len; + }); return res; } @@ -201,14 +205,16 @@ constexpr O format_hex(T n, O result) { template constexpr std::string format_hex(T n) { std::string res; - res.resize(sizeof(n) * 2); + res.resize_and_overwrite(sizeof(n) * 2, [n](auto p, auto len) { + format_hex(n, p); - format_hex(std::move(n), std::ranges::begin(res)); + return len; + }); return res; } -std::string decode_hex(const std::string_view &s); +std::string decode_hex(std::string_view s); // format_durationf formats |ns| in human readable manner. |ns| must // be nanoseconds resolution. This function uses the largest unit so @@ -228,10 +234,14 @@ bool numeric_host(const char *hostname); bool numeric_host(const char *hostname, int family); -// hexdump dumps |data| of length |datalen| in the format similar to -// hexdump(1) with -C option. This function returns 0 if it succeeds, -// or -1. -int hexdump(FILE *out, const void *data, size_t datalen); +// hexdump dumps |data| in the format similar to hexdump(1) with -C +// option. +std::expected hexdump(FILE *out, std::span data); + +template +std::expected hexdump(FILE *out, std::span data) { + return hexdump(out, as_uint8_span(data)); +} inline constexpr auto lowcase_tbl = [] { std::array tbl; @@ -259,8 +269,7 @@ struct CaseCmp { // istarts_with returns true if |s| starts with |prefix|. Comparison // is performed in case-insensitive manner. -constexpr bool istarts_with(const std::string_view &s, - const std::string_view &prefix) { +constexpr bool istarts_with(std::string_view s, std::string_view prefix) { return s.size() >= prefix.size() && std::ranges::equal(s.substr(0, prefix.size()), prefix, CaseCmp()); } @@ -285,8 +294,8 @@ std::string_view strccalgo(ngtcp2_cc_algo cc_algo); // read_mime_types reads "MIME media types and the extensions" file // denoted by |filename| and returns the mapping of extension to MIME // media type. -std::optional> -read_mime_types(const std::string_view &filename); +std::expected, Error> +read_mime_types(std::string_view filename); inline constexpr auto count_digit_tbl = [] { std::array::digits10> tbl; @@ -379,9 +388,11 @@ template constexpr std::string format_uint(T n) { std::string res; - res.resize(count_digit(n)); + res.resize_and_overwrite(count_digit(n), [n](auto p, auto len) { + utos(n, p); - utos(n, std::ranges::begin(res)); + return len; + }); return res; } @@ -411,31 +422,27 @@ std::string format_duration(ngtcp2_duration n); // parse_uint parses |s| as 64-bit unsigned integer. If it cannot // parse |s|, the return value does not contain a value. -std::optional parse_uint(const std::string_view &s); +std::expected parse_uint(std::string_view s); // parse_uint_iec parses |s| as 64-bit unsigned integer. It accepts // IEC unit letter (either "G", "M", or "K") in |s|. If it cannot // parse |s|, the return value does not contain a value. -std::optional parse_uint_iec(const std::string_view &s); +std::expected parse_uint_iec(std::string_view s); // parse_duration parses |s| as 64-bit unsigned integer. It accepts a // unit (either "h", "m", "s", "ms", "us", or "ns") in |s|. If no // unit is present, the unit "s" is assumed. If it cannot parse |s|, // the return value does not contain a value. -std::optional parse_duration(const std::string_view &s); +std::expected parse_duration(std::string_view s); // generate_secure_random generates a cryptographically secure pseudo // random data of |data|. -int generate_secure_random(std::span data); - -// generate_secret generates secret and writes it to |secret|. -// Currently, |secret| must be 32 bytes long. -int generate_secret(std::span secret); +std::expected generate_secure_random(std::span data); // normalize_path removes ".." by consuming a previous path component. // It also removes ".". It assumes that |path| starts with "/". If // it cannot consume a previous path component, it just removes "..". -std::string normalize_path(const std::string_view &path); +std::expected normalize_path(std::string_view path); template Pred> consteval auto pred_tbl_gen256(Pred pred) { @@ -469,7 +476,7 @@ constexpr bool is_hex_digit(char c) noexcept { // is_hex_string returns true if the length of |s| is even, and |s| // does not contain a character other than [0-9A-Fa-f]. It returns // false otherwise. -template +template requires(!std::is_array_v>) constexpr bool is_hex_string(R &&r) { return !(std::ranges::size(r) & 1) && std::ranges::all_of(r, is_hex_digit); @@ -501,21 +508,23 @@ constexpr uint32_t hex_to_uint(char c) noexcept { return hex_to_uint_tbl[static_cast(c)]; } -std::string percent_decode(const std::string_view &s); +std::string percent_decode(std::string_view s); -int make_socket_nonblocking(int fd); +std::expected make_socket_nonblocking(int fd); -int create_nonblock_socket(int domain, int type, int protocol); +std::expected create_nonblock_socket(int domain, int type, + int protocol); -std::optional> -read_token(const std::string_view &filename); -int write_token(const std::string_view &filename, - std::span token); +std::expected, Error> +read_token(std::string_view filename); +std::expected write_token(std::string_view filename, + std::span token); -std::optional> -read_transport_params(const std::string_view &filename); -int write_transport_params(const std::string_view &filename, - std::span data); +std::expected, Error> +read_transport_params(std::string_view filename); +std::expected +write_transport_params(std::string_view filename, + std::span data); const char *crypto_default_ciphers(); @@ -524,15 +533,14 @@ const char *crypto_default_groups(); // split_str parses delimited strings in |s| and returns substrings // delimited by |delim|. The any white spaces around substring are // treated as a part of substring. -std::vector split_str(const std::string_view &s, - char delim = ','); +std::vector split_str(std::string_view s, char delim = ','); // parse_version parses |s| to get 4 byte QUIC version. |s| must be a // hex string and must start with "0x" (e.g., 0x00000001). -std::optional parse_version(const std::string_view &s); +std::expected parse_version(std::string_view s); // read_file reads a file denoted by |path| and returns its content. -std::optional> read_file(const std::string_view &path); +std::expected, Error> read_file(std::string_view path); size_t clamp_buffer_size(ngtcp2_conn *conn, size_t buflen, size_t gso_burst); @@ -562,16 +570,15 @@ struct ECHServerConfig { // read_ech_server_config reads server-side ECH configuration from a // file denoted by |path|. -std::optional -read_ech_server_config(const std::string_view &path); +std::expected +read_ech_server_config(std::string_view path); std::span generate_siphash_key(); // get_string returns a URL component specified by |f| of |uri|. This // function assumes that u.field_set & (1 << f) is nonzero. -constexpr std::string_view get_string(const std::string_view &uri, - const urlparse_url &u, - urlparse_url_fields f) { +constexpr std::string_view +get_string(std::string_view uri, const urlparse_url &u, urlparse_url_fields f) { assert(u.field_set & (1 << f)); auto p = &u.field_data[f]; @@ -606,4 +613,19 @@ inline bool operator==(const ngtcp2_cid &lhs, const ngtcp2_cid &rhs) { return ngtcp2_cid_eq(&lhs, &rhs); } +template <> +struct std::formatter : public std::formatter { + auto format(ngtcp2_cid cid, format_context &ctx) const { + std::array buf; + buf[0] = '0'; + buf[1] = 'x'; + + auto end = ngtcp2::util::format_hex(std::span{cid.data, cid.datalen}, + std::ranges::begin(buf) + 2); + + return std::formatter::format( + {std::ranges::begin(buf), end}, ctx); + } +}; + #endif // !defined(UTIL_H) diff --git a/deps/ngtcp2/ngtcp2/examples/util_openssl.cc b/deps/ngtcp2/ngtcp2/examples/util_openssl.cc index 85ff90d18d7e86..382eb3039c2f3d 100644 --- a/deps/ngtcp2/ngtcp2/examples/util_openssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/util_openssl.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -42,7 +43,7 @@ namespace ngtcp2 { namespace util { -int generate_secure_random(std::span data) { +std::expected generate_secure_random(std::span data) { #ifdef WITH_EXAMPLE_BORINGSSL using size_type = size_t; #else // !defined(WITH_EXAMPLE_BORINGSSL) @@ -50,49 +51,18 @@ int generate_secure_random(std::span data) { #endif // !defined(WITH_EXAMPLE_BORINGSSL) if (RAND_bytes(data.data(), static_cast(data.size())) != 1) { - return -1; + return std::unexpected{Error::CRYPTO}; } - return 0; + return {}; } -int generate_secret(std::span secret) { - std::array rand; - - if (generate_secure_random(rand) != 0) { - return -1; - } - - auto ctx = EVP_MD_CTX_new(); - if (ctx == nullptr) { - return -1; - } - - auto ctx_deleter = defer([ctx] { EVP_MD_CTX_free(ctx); }); - - static const auto sha256 = -#if OPENSSL_VERSION_NUMBER >= 0x30000000L - EVP_MD_fetch(nullptr, "sha256", nullptr); -#else // OPENSSL_VERSION_NUMBER < 0x30000000L - EVP_sha256(); -#endif // OPENSSL_VERSION_NUMBER < 0x30000000L - - auto mdlen = static_cast(secret.size()); - if (!EVP_DigestInit_ex(ctx, sha256, nullptr) || - !EVP_DigestUpdate(ctx, rand.data(), rand.size()) || - !EVP_DigestFinal_ex(ctx, secret.data(), &mdlen)) { - return -1; - } - - return 0; -} - -std::optional -read_hpke_private_key_pem(const std::string_view &filename) { +std::expected +read_hpke_private_key_pem(std::string_view filename) { auto f = BIO_new_file(filename.data(), "r"); if (f == nullptr) { - std::cerr << "Could not open file " << filename << std::endl; - return {}; + std::println(stderr, "Could not open file {}", filename); + return std::unexpected{Error::IO}; } auto f_d = defer([f] { BIO_free(f); }); @@ -100,7 +70,7 @@ read_hpke_private_key_pem(const std::string_view &filename) { EVP_PKEY *pkey; if (PEM_read_bio_PrivateKey(f, &pkey, nullptr, nullptr) == nullptr) { - return {}; + return std::unexpected{Error::IO}; } auto pkey_d = defer([pkey] { EVP_PKEY_free(pkey); }); @@ -122,19 +92,19 @@ read_hpke_private_key_pem(const std::string_view &filename) { break; } default: - return {}; + return std::unexpected{Error::UNSUPPORTED}; } return res; } -std::optional> read_pem(const std::string_view &filename, - const std::string_view &name, - const std::string_view &type) { +std::expected, Error> read_pem(std::string_view filename, + std::string_view name, + std::string_view type) { auto f = BIO_new_file(filename.data(), "r"); if (f == nullptr) { - std::cerr << "Could not open " << name << " file " << filename << std::endl; - return {}; + std::println(stderr, "Could not open {} file {}", name, filename); + return std::unexpected{Error::IO}; } auto f_d = defer([f] { BIO_free(f); }); @@ -145,9 +115,8 @@ std::optional> read_pem(const std::string_view &filename, long datalen; if (PEM_read_bio(f, &pem_type, &header, &data, &datalen) != 1) { - std::cerr << "Could not read " << name << " file " << filename - << std::endl; - return {}; + std::println(stderr, "Could not read {} file {}", name, filename); + return std::unexpected{Error::IO}; } auto pem_d = defer([pem_type, header, data] { @@ -164,19 +133,21 @@ std::optional> read_pem(const std::string_view &filename, } } -int write_pem(const std::string_view &filename, const std::string_view &name, - const std::string_view &type, std::span data) { +std::expected write_pem(std::string_view filename, + std::string_view name, + std::string_view type, + std::span data) { auto f = BIO_new_file(filename.data(), "w"); if (f == nullptr) { - std::cerr << "Could not write " << name << " in " << filename << std::endl; - return -1; + std::println(stderr, "Could not write {} in {}", name, filename); + return std::unexpected{Error::IO}; } PEM_write_bio(f, type.data(), "", data.data(), static_cast(data.size())); BIO_free(f); - return 0; + return {}; } const char *crypto_default_ciphers() { diff --git a/deps/ngtcp2/ngtcp2/examples/util_test.cc b/deps/ngtcp2/ngtcp2/examples/util_test.cc index f234de7c00480e..430a61a9734202 100644 --- a/deps/ngtcp2/ngtcp2/examples/util_test.cc +++ b/deps/ngtcp2/ngtcp2/examples/util_test.cc @@ -26,6 +26,8 @@ #include #include +#include +#include #include "util.h" @@ -57,29 +59,33 @@ const MunitSuite util_suite{ }; namespace util { -std::optional -read_hpke_private_key_pem(const std::string_view &filename) { - return {}; +std::expected +read_hpke_private_key_pem(std::string_view filename) { + return std::unexpected{Error::NOT_IMPLEMENTED}; } } // namespace util namespace util { -std::optional> read_pem(const std::string_view &filename, - const std::string_view &name, - const std::string_view &type) { - return {}; +std::expected, Error> read_pem(std::string_view filename, + std::string_view name, + std::string_view type) { + return std::unexpected{Error::NOT_IMPLEMENTED}; } } // namespace util namespace util { -int write_pem(const std::string_view &filename, const std::string_view &name, - const std::string_view &type, std::span data) { - return -1; +std::expected write_pem(std::string_view filename, + std::string_view name, + std::string_view type, + std::span data) { + return std::unexpected{Error::NOT_IMPLEMENTED}; } } // namespace util namespace util { -int generate_secure_random(std::span data) { return -1; } +std::expected generate_secure_random(std::span data) { + return std::unexpected{Error::NOT_IMPLEMENTED}; +} } // namespace util void test_util_format_durationf() { @@ -92,26 +98,26 @@ void test_util_format_durationf() { assert_stdstring_equal("2.00us", util::format_durationf(1999)); assert_stdstring_equal("1.00ms", util::format_durationf(999999)); assert_stdstring_equal("3.50ms", util::format_durationf(3500111)); - assert_stdstring_equal("9999.99s", util::format_durationf(9999990000000llu)); + assert_stdstring_equal("9999.99s", util::format_durationf(9999990000000ULL)); } void test_util_format_uint() { - assert_stdstring_equal("0"s, util::format_uint(0u)); + assert_stdstring_equal("0"s, util::format_uint(0U)); assert_stdstring_equal("18446744073709551615"s, - util::format_uint(18446744073709551615ull)); + util::format_uint(18446744073709551615ULL)); } void test_util_format_uint_iec() { - assert_stdstring_equal("0"s, util::format_uint_iec(0u)); - assert_stdstring_equal("1023"s, util::format_uint_iec((1u << 10) - 1)); - assert_stdstring_equal("1K"s, util::format_uint_iec(1u << 10)); - assert_stdstring_equal("1M"s, util::format_uint_iec(1u << 20)); - assert_stdstring_equal("1G"s, util::format_uint_iec(1u << 30)); + assert_stdstring_equal("0"s, util::format_uint_iec(0U)); + assert_stdstring_equal("1023"s, util::format_uint_iec((1U << 10) - 1)); + assert_stdstring_equal("1K"s, util::format_uint_iec(1U << 10)); + assert_stdstring_equal("1M"s, util::format_uint_iec(1U << 20)); + assert_stdstring_equal("1G"s, util::format_uint_iec(1U << 30)); assert_stdstring_equal( "18446744073709551615"s, util::format_uint_iec(std::numeric_limits::max())); assert_stdstring_equal("1025K"s, - util::format_uint_iec((1u << 20) + (1u << 10))); + util::format_uint_iec((1U << 20) + (1U << 10))); } void test_util_format_duration() { @@ -120,12 +126,12 @@ void test_util_format_duration() { assert_stdstring_equal("1us", util::format_duration(1000)); assert_stdstring_equal("1ms", util::format_duration(1000000)); assert_stdstring_equal("1s", util::format_duration(1000000000)); - assert_stdstring_equal("1m", util::format_duration(60000000000ull)); - assert_stdstring_equal("1h", util::format_duration(3600000000000ull)); + assert_stdstring_equal("1m", util::format_duration(60000000000ULL)); + assert_stdstring_equal("1h", util::format_duration(3600000000000ULL)); assert_stdstring_equal( "18446744073709551615ns", util::format_duration(std::numeric_limits::max())); - assert_stdstring_equal("61s", util::format_duration(61000000000ull)); + assert_stdstring_equal("61s", util::format_duration(61000000000ULL)); } void test_util_parse_uint() { @@ -142,7 +148,7 @@ void test_util_parse_uint() { { auto res = util::parse_uint("18446744073709551615"); assert_true(res.has_value()); - assert_uint64(18446744073709551615ull, ==, *res); + assert_uint64(18446744073709551615ULL, ==, *res); } { auto res = util::parse_uint("18446744073709551616"); @@ -187,7 +193,7 @@ void test_util_parse_uint_iec() { { auto res = util::parse_uint_iec("11G"); assert_true(res.has_value()); - assert_uint64((1ull << 30) * 11, ==, *res); + assert_uint64((1ULL << 30) * 11, ==, *res); } { auto res = util::parse_uint_iec("18446744073709551616"); @@ -273,19 +279,109 @@ void test_util_parse_duration() { } void test_util_normalize_path() { - assert_stdstring_equal("/", util::normalize_path("/")); - assert_stdstring_equal("/", util::normalize_path("//")); - assert_stdstring_equal("/foo", util::normalize_path("/foo")); - assert_stdstring_equal("/foo/bar/", util::normalize_path("/foo/bar/")); - assert_stdstring_equal("/foo/bar/", util::normalize_path("/foo/abc/../bar/")); - assert_stdstring_equal("/foo/bar/", - util::normalize_path("/../foo/abc/../bar/")); - assert_stdstring_equal("/foo/bar/", - util::normalize_path("/./foo/././abc///.././bar/./")); - assert_stdstring_equal("/foo/", util::normalize_path("/foo/.")); - assert_stdstring_equal("/foo/bar", util::normalize_path("/foo/./bar")); - assert_stdstring_equal("/bar", util::normalize_path("/foo/./../bar")); - assert_stdstring_equal("/bar", util::normalize_path("/../../bar")); + { + auto rv = util::normalize_path("/"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/", rv.value()); + } + + { + auto rv = util::normalize_path("//"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/", rv.value()); + } + + { + auto rv = util::normalize_path("/foo"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo", rv.value()); + } + + { + auto rv = util::normalize_path("/foo/bar/"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/bar/", rv.value()); + } + + { + auto rv = util::normalize_path("/foo/abc/../bar/"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/bar/", rv.value()); + } + + { + auto rv = util::normalize_path("/../foo/abc/../bar/"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/bar/", rv.value()); + } + + { + auto rv = util::normalize_path("/./foo/././abc///.././bar/./"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/bar/", rv.value()); + } + + { + auto rv = util::normalize_path("/foo/."); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/", rv.value()); + } + + { + auto rv = util::normalize_path("/foo/./bar"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/foo/bar", rv.value()); + } + + { + auto rv = util::normalize_path("/foo/./../bar"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/bar", rv.value()); + } + + { + auto rv = util::normalize_path("/../../bar"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/bar", rv.value()); + } + + { + auto rv = util::normalize_path(std::string(1024, '/')); + + assert_true(rv.has_value()); + assert_stdstring_equal("/", rv.value()); + } + + { + auto rv = util::normalize_path(std::string(1025, '/')); + + assert_false(rv); + } + + { + auto rv = util::normalize_path("/.."); + + assert_true(rv.has_value()); + assert_stdstring_equal("/", rv.value()); + } + + { + auto rv = util::normalize_path("/../../index.html"); + + assert_true(rv.has_value()); + assert_stdstring_equal("/index.html", rv.value()); + } } void test_util_hexdump() { @@ -349,7 +445,7 @@ void test_util_hexdump() { }, { .title = "Non-printables", - .data = "\0\a\b\t\n\v\f\r\x7f"sv, + .data = "\0\a\b\t\n\v\f\r\x7F"sv, .dump = "00000000 00 07 08 09 0a 0b 0c 0d 7f " "|.........|\n" "00000009\n"sv, @@ -399,9 +495,9 @@ void test_util_hexdump() { munit_log(MUNIT_LOG_INFO, t.title); auto f = tmpfile(); - auto rv = util::hexdump(f, t.data.data(), t.data.size()); + auto rv = util::hexdump(f, std::span{t.data}); - assert_int(0, ==, rv); + assert_true(rv.has_value()); fseek(f, 0, SEEK_SET); auto nread = fread(buf, 1, sizeof(buf), f); @@ -414,35 +510,35 @@ void test_util_hexdump() { } void test_util_format_hex() { - auto a = std::to_array({0xde, 0xad, 0xbe, 0xef}); + auto a = std::to_array({0xDE, 0xAD, 0xBE, 0xEF}); assert_stdstring_equal("deadbeef"s, util::format_hex(a)); - assert_stdstring_equal("deadbeef"s, util::format_hex(0xdeadbeef)); + assert_stdstring_equal("deadbeef"s, util::format_hex(0xDEADBEEF)); assert_stdstring_equal("beef"s, util::format_hex(a.data() + 2, 2)); std::array buf; assert_stdsv_equal( "00"sv, (std::string_view{std::ranges::begin(buf), - util::format_hex(static_cast(0u), + util::format_hex(static_cast(0U), std::ranges::begin(buf))})); assert_stdsv_equal( "ec"sv, (std::string_view{std::ranges::begin(buf), - util::format_hex(static_cast(0xecu), + util::format_hex(static_cast(0xECU), std::ranges::begin(buf))})); assert_stdsv_equal( "00000000"sv, (std::string_view{std::ranges::begin(buf), - util::format_hex(0u, std::ranges::begin(buf))})); + util::format_hex(0U, std::ranges::begin(buf))})); assert_stdsv_equal( "0000ab01"sv, (std::string_view{std::ranges::begin(buf), - util::format_hex(0xab01u, std::ranges::begin(buf))})); + util::format_hex(0xAB01U, std::ranges::begin(buf))})); assert_stdsv_equal( "deadbeefbaadf00d"sv, (std::string_view{ std::ranges::begin(buf), - util::format_hex(0xdeadbeefbaadf00du, std::ranges::begin(buf))})); + util::format_hex(0xDEADBEEFBAADF00DU, std::ranges::begin(buf))})); assert_stdsv_equal( "ffffffffffffffff"sv, (std::string_view{std::ranges::begin(buf), @@ -466,7 +562,7 @@ void test_util_format_hex() { } void test_util_decode_hex() { - assert_stdstring_equal("\xde\xad\xbe\xef"s, util::decode_hex("deadbeef"sv)); + assert_stdstring_equal("\xDE\xAD\xBE\xEF"s, util::decode_hex("deadbeef"sv)); assert_stdstring_equal(""s, util::decode_hex(""sv)); } diff --git a/deps/ngtcp2/ngtcp2/examples/util_wolfssl.cc b/deps/ngtcp2/ngtcp2/examples/util_wolfssl.cc index 1afbaec4502fb9..8918847da1a95f 100644 --- a/deps/ngtcp2/ngtcp2/examples/util_wolfssl.cc +++ b/deps/ngtcp2/ngtcp2/examples/util_wolfssl.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -41,50 +42,26 @@ namespace ngtcp2 { namespace util { -int generate_secure_random(std::span data) { +std::expected generate_secure_random(std::span data) { if (wolfSSL_RAND_bytes(data.data(), static_cast(data.size())) != 1) { - return -1; + return std::unexpected{Error::CRYPTO}; } - return 0; -} - -std::optional -read_hpke_private_key_pem(const std::string_view &filename) { return {}; } -int generate_secret(std::span secret) { - std::array rand; - - if (generate_secure_random(rand) != 0) { - return -1; - } - - auto ctx = wolfSSL_EVP_MD_CTX_new(); - if (ctx == nullptr) { - return -1; - } - - auto mdlen = static_cast(secret.size()); - if (!wolfSSL_EVP_DigestInit_ex(ctx, EVP_sha256(), nullptr) || - !wolfSSL_EVP_DigestUpdate(ctx, rand.data(), rand.size()) || - !wolfSSL_EVP_DigestFinal_ex(ctx, secret.data(), &mdlen)) { - wolfSSL_EVP_MD_CTX_free(ctx); - return -1; - } - - wolfSSL_EVP_MD_CTX_free(ctx); - return 0; +std::expected +read_hpke_private_key_pem(std::string_view filename) { + return std::unexpected{Error::NOT_IMPLEMENTED}; } -std::optional> read_pem(const std::string_view &filename, - const std::string_view &name, - const std::string_view &type) { +std::expected, Error> read_pem(std::string_view filename, + std::string_view name, + std::string_view type) { auto f = wolfSSL_BIO_new_file(filename.data(), "r"); if (f == nullptr) { - std::cerr << "Could not open " << name << " file " << filename << std::endl; - return {}; + std::println(stderr, "Could not open {} file {}", name, filename); + return std::unexpected{Error::IO}; } auto f_d = defer([f] { wolfSSL_BIO_free(f); }); @@ -94,8 +71,8 @@ std::optional> read_pem(const std::string_view &filename, long datalen; if (wolfSSL_PEM_read_bio(f, &pem_type, &header, &data, &datalen) != 1) { - std::cerr << "Could not read " << name << " file " << filename << std::endl; - return {}; + std::println(stderr, "Could not read {} file {}", name, filename); + return std::unexpected{Error::IO}; } auto pem_d = defer([pem_type, header, data] { @@ -105,27 +82,28 @@ std::optional> read_pem(const std::string_view &filename, }); if (type != pem_type) { - std::cerr << name << " file " << filename << " contains unexpected type" - << std::endl; - return {}; + std::println(stderr, "{} file {} contains unexpected type", name, filename); + return std::unexpected{Error::IO}; } return {{data, data + datalen}}; } -int write_pem(const std::string_view &filename, const std::string_view &name, - const std::string_view &type, std::span data) { +std::expected write_pem(std::string_view filename, + std::string_view name, + std::string_view type, + std::span data) { auto f = wolfSSL_BIO_new_file(filename.data(), "w"); if (f == nullptr) { - std::cerr << "Could not write " << name << " in " << filename << std::endl; - return -1; + std::println(stderr, "Could not write {} to {}", name, filename); + return std::unexpected{Error::IO}; } wolfSSL_PEM_write_bio(f, type.data(), "", data.data(), static_cast(data.size())); wolfSSL_BIO_free(f); - return 0; + return {}; } const char *crypto_default_ciphers() { diff --git a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h index ba3f7a7e1ae215..c71ff364e3099f 100644 --- a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +++ b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h @@ -262,7 +262,7 @@ typedef struct ngtcp2_mem { * * :macro:`NGTCP2_PROTO_VER_V1` is the QUIC version 1. */ -#define NGTCP2_PROTO_VER_V1 ((uint32_t)0x00000001u) +#define NGTCP2_PROTO_VER_V1 ((uint32_t)0x00000001U) /** * @macro @@ -270,7 +270,7 @@ typedef struct ngtcp2_mem { * :macro:`NGTCP2_PROTO_VER_V2` is the QUIC version 2. See * :rfc:`9369`. */ -#define NGTCP2_PROTO_VER_V2 ((uint32_t)0x6b3343cfu) +#define NGTCP2_PROTO_VER_V2 ((uint32_t)0x6B3343CFU) /** * @macro @@ -294,7 +294,7 @@ typedef struct ngtcp2_mem { * :macro:`NGTCP2_RESERVED_VERSION_MASK` is the bit mask of reserved * version. */ -#define NGTCP2_RESERVED_VERSION_MASK 0x0a0a0a0au +#define NGTCP2_RESERVED_VERSION_MASK 0x0A0A0A0AU /** * @macrosection @@ -377,7 +377,7 @@ typedef struct ngtcp2_mem { * integrity tag of Retry packet. It is used for QUIC v1. */ #define NGTCP2_RETRY_KEY_V1 \ - "\xbe\x0c\x69\x0b\x9f\x66\x57\x5a\x1d\x76\x6b\x54\xe3\x68\xc8\x4e" + "\xBE\x0C\x69\x0B\x9F\x66\x57\x5A\x1D\x76\x6B\x54\xE3\x68\xC8\x4E" /** * @macro @@ -385,7 +385,7 @@ typedef struct ngtcp2_mem { * :macro:`NGTCP2_RETRY_NONCE_V1` is nonce used when generating * integrity tag of Retry packet. It is used for QUIC v1. */ -#define NGTCP2_RETRY_NONCE_V1 "\x46\x15\x99\xd3\x5d\x63\x2b\xf2\x23\x98\x25\xbb" +#define NGTCP2_RETRY_NONCE_V1 "\x46\x15\x99\xD3\x5D\x63\x2B\xF2\x23\x98\x25\xBB" /** * @macro @@ -395,7 +395,7 @@ typedef struct ngtcp2_mem { * :rfc:`9369`. */ #define NGTCP2_RETRY_KEY_V2 \ - "\x8f\xb4\xb0\x1b\x56\xac\x48\xe2\x60\xfb\xcb\xce\xad\x7c\xcc\x92" + "\x8F\xB4\xB0\x1B\x56\xAC\x48\xE2\x60\xFB\xCB\xCE\xAD\x7C\xCC\x92" /** * @macro @@ -404,7 +404,7 @@ typedef struct ngtcp2_mem { * integrity tag of Retry packet. It is used for QUIC v2. See * :rfc:`9369`. */ -#define NGTCP2_RETRY_NONCE_V2 "\xd8\x69\x69\xbc\x2d\x7c\x6d\x99\x90\xef\xb0\x4a" +#define NGTCP2_RETRY_NONCE_V2 "\xD8\x69\x69\xBC\x2D\x7C\x6D\x99\x90\xEF\xB0\x4A" /** * @macro @@ -812,7 +812,7 @@ typedef struct NGTCP2_ALIGN(8) ngtcp2_pkt_info { * * :macro:`NGTCP2_PKT_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_PKT_FLAG_NONE 0x00u +#define NGTCP2_PKT_FLAG_NONE 0x00U /** * @macro @@ -820,7 +820,7 @@ typedef struct NGTCP2_ALIGN(8) ngtcp2_pkt_info { * :macro:`NGTCP2_PKT_FLAG_LONG_FORM` indicates the Long header packet * header. */ -#define NGTCP2_PKT_FLAG_LONG_FORM 0x01u +#define NGTCP2_PKT_FLAG_LONG_FORM 0x01U /** * @macro @@ -828,14 +828,14 @@ typedef struct NGTCP2_ALIGN(8) ngtcp2_pkt_info { * :macro:`NGTCP2_PKT_FLAG_FIXED_BIT_CLEAR` indicates that Fixed Bit * (aka QUIC bit) is not set. */ -#define NGTCP2_PKT_FLAG_FIXED_BIT_CLEAR 0x02u +#define NGTCP2_PKT_FLAG_FIXED_BIT_CLEAR 0x02U /** * @macro * * :macro:`NGTCP2_PKT_FLAG_KEY_PHASE` indicates Key Phase bit set. */ -#define NGTCP2_PKT_FLAG_KEY_PHASE 0x04u +#define NGTCP2_PKT_FLAG_KEY_PHASE 0x04U /** * @enum @@ -887,7 +887,7 @@ typedef enum ngtcp2_pkt_type { * * :macro:`NGTCP2_NO_ERROR` is QUIC transport error code ``NO_ERROR``. */ -#define NGTCP2_NO_ERROR 0x0u +#define NGTCP2_NO_ERROR 0x0U /** * @macro @@ -895,7 +895,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_INTERNAL_ERROR` is QUIC transport error code * ``INTERNAL_ERROR``. */ -#define NGTCP2_INTERNAL_ERROR 0x1u +#define NGTCP2_INTERNAL_ERROR 0x1U /** * @macro @@ -903,7 +903,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_CONNECTION_REFUSED` is QUIC transport error code * ``CONNECTION_REFUSED``. */ -#define NGTCP2_CONNECTION_REFUSED 0x2u +#define NGTCP2_CONNECTION_REFUSED 0x2U /** * @macro @@ -911,7 +911,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_FLOW_CONTROL_ERROR` is QUIC transport error code * ``FLOW_CONTROL_ERROR``. */ -#define NGTCP2_FLOW_CONTROL_ERROR 0x3u +#define NGTCP2_FLOW_CONTROL_ERROR 0x3U /** * @macro @@ -919,7 +919,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_STREAM_LIMIT_ERROR` is QUIC transport error code * ``STREAM_LIMIT_ERROR``. */ -#define NGTCP2_STREAM_LIMIT_ERROR 0x4u +#define NGTCP2_STREAM_LIMIT_ERROR 0x4U /** * @macro @@ -927,7 +927,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_STREAM_STATE_ERROR` is QUIC transport error code * ``STREAM_STATE_ERROR``. */ -#define NGTCP2_STREAM_STATE_ERROR 0x5u +#define NGTCP2_STREAM_STATE_ERROR 0x5U /** * @macro @@ -935,7 +935,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_FINAL_SIZE_ERROR` is QUIC transport error code * ``FINAL_SIZE_ERROR``. */ -#define NGTCP2_FINAL_SIZE_ERROR 0x6u +#define NGTCP2_FINAL_SIZE_ERROR 0x6U /** * @macro @@ -943,7 +943,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_FRAME_ENCODING_ERROR` is QUIC transport error code * ``FRAME_ENCODING_ERROR``. */ -#define NGTCP2_FRAME_ENCODING_ERROR 0x7u +#define NGTCP2_FRAME_ENCODING_ERROR 0x7U /** * @macro @@ -951,7 +951,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_TRANSPORT_PARAMETER_ERROR` is QUIC transport error * code ``TRANSPORT_PARAMETER_ERROR``. */ -#define NGTCP2_TRANSPORT_PARAMETER_ERROR 0x8u +#define NGTCP2_TRANSPORT_PARAMETER_ERROR 0x8U /** * @macro @@ -959,7 +959,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_CONNECTION_ID_LIMIT_ERROR` is QUIC transport error * code ``CONNECTION_ID_LIMIT_ERROR``. */ -#define NGTCP2_CONNECTION_ID_LIMIT_ERROR 0x9u +#define NGTCP2_CONNECTION_ID_LIMIT_ERROR 0x9U /** * @macro @@ -967,7 +967,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_PROTOCOL_VIOLATION` is QUIC transport error code * ``PROTOCOL_VIOLATION``. */ -#define NGTCP2_PROTOCOL_VIOLATION 0xau +#define NGTCP2_PROTOCOL_VIOLATION 0xAU /** * @macro @@ -975,7 +975,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_INVALID_TOKEN` is QUIC transport error code * ``INVALID_TOKEN``. */ -#define NGTCP2_INVALID_TOKEN 0xbu +#define NGTCP2_INVALID_TOKEN 0xBU /** * @macro @@ -983,7 +983,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_APPLICATION_ERROR` is QUIC transport error code * ``APPLICATION_ERROR``. */ -#define NGTCP2_APPLICATION_ERROR 0xcu +#define NGTCP2_APPLICATION_ERROR 0xCU /** * @macro @@ -991,7 +991,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_CRYPTO_BUFFER_EXCEEDED` is QUIC transport error code * ``CRYPTO_BUFFER_EXCEEDED``. */ -#define NGTCP2_CRYPTO_BUFFER_EXCEEDED 0xdu +#define NGTCP2_CRYPTO_BUFFER_EXCEEDED 0xDU /** * @macro @@ -999,7 +999,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_KEY_UPDATE_ERROR` is QUIC transport error code * ``KEY_UPDATE_ERROR``. */ -#define NGTCP2_KEY_UPDATE_ERROR 0xeu +#define NGTCP2_KEY_UPDATE_ERROR 0xEU /** * @macro @@ -1007,7 +1007,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_AEAD_LIMIT_REACHED` is QUIC transport error code * ``AEAD_LIMIT_REACHED``. */ -#define NGTCP2_AEAD_LIMIT_REACHED 0xfu +#define NGTCP2_AEAD_LIMIT_REACHED 0xFU /** * @macro @@ -1015,7 +1015,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_NO_VIABLE_PATH` is QUIC transport error code * ``NO_VIABLE_PATH``. */ -#define NGTCP2_NO_VIABLE_PATH 0x10u +#define NGTCP2_NO_VIABLE_PATH 0x10U /** * @macro @@ -1023,7 +1023,7 @@ typedef enum ngtcp2_pkt_type { * :macro:`NGTCP2_CRYPTO_ERROR` is QUIC transport error code * ``CRYPTO_ERROR``. */ -#define NGTCP2_CRYPTO_ERROR 0x100u +#define NGTCP2_CRYPTO_ERROR 0x100U /** * @macro @@ -1187,6 +1187,9 @@ typedef struct ngtcp2_pkt_hd { * @struct * * :type:`ngtcp2_pkt_stateless_reset` represents Stateless Reset. + * + * Deprecated since v1.22.0. Use :type:`ngtcp2_pkt_stateless_reset2` + * instead. */ typedef struct ngtcp2_pkt_stateless_reset { /** @@ -1204,6 +1207,40 @@ typedef struct ngtcp2_pkt_stateless_reset { size_t randlen; } ngtcp2_pkt_stateless_reset; +/** + * @struct + * + * :type:`ngtcp2_stateless_reset_token` stores stateless reset token. + * + * This struct has been available since v1.22.0. + */ +typedef struct ngtcp2_stateless_reset_token { + uint8_t data[NGTCP2_STATELESS_RESET_TOKENLEN]; +} ngtcp2_stateless_reset_token; + +/** + * @struct + * + * :type:`ngtcp2_pkt_stateless_reset2` represents Stateless Reset. + * + * This struct has been available since v1.22.0. + */ +typedef struct ngtcp2_pkt_stateless_reset2 { + /** + * :member:`token` contains stateless reset token. + */ + ngtcp2_stateless_reset_token token; + /** + * :member:`rand` points a buffer which contains random bytes + * section. + */ + const uint8_t *rand; + /** + * :member:`randlen` is the number of random bytes. + */ + size_t randlen; +} ngtcp2_pkt_stateless_reset2; + /** * @macrosection * @@ -1250,7 +1287,7 @@ typedef struct ngtcp2_pkt_stateless_reset { * :macro:`NGTCP2_TLSEXT_QUIC_TRANSPORT_PARAMETERS_V1` is TLS * extension type of quic_transport_parameters. */ -#define NGTCP2_TLSEXT_QUIC_TRANSPORT_PARAMETERS_V1 0x39u +#define NGTCP2_TLSEXT_QUIC_TRANSPORT_PARAMETERS_V1 0x39U #ifdef NGTCP2_USE_GENERIC_SOCKADDR # ifndef NGTCP2_AF_INET @@ -1703,14 +1740,14 @@ typedef void (*ngtcp2_printf)(void *user_data, const char *format, ...); * * :macro:`NGTCP2_QLOG_WRITE_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_QLOG_WRITE_FLAG_NONE 0x00u +#define NGTCP2_QLOG_WRITE_FLAG_NONE 0x00U /** * @macro * * :macro:`NGTCP2_QLOG_WRITE_FLAG_FIN` indicates that this is the * final call to :type:`ngtcp2_qlog_write` in the current connection. */ -#define NGTCP2_QLOG_WRITE_FLAG_FIN 0x01u +#define NGTCP2_QLOG_WRITE_FLAG_FIN 0x01U /** * @struct @@ -2444,11 +2481,42 @@ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_pkt_decode_hd_short(ngtcp2_pkt_hd *dest, * :macro:`NGTCP2_ERR_INVALID_ARGUMENT` * |randlen| is strictly less than * :macro:`NGTCP2_MIN_STATELESS_RESET_RANDLEN`. + * + * Deprecated since v1.22.0. Use `ngtcp2_pkt_write_stateless_reset2` + * instead. */ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_pkt_write_stateless_reset( uint8_t *dest, size_t destlen, const uint8_t *stateless_reset_token, const uint8_t *rand, size_t randlen); +/** + * @function + * + * `ngtcp2_pkt_write_stateless_reset2` writes Stateless Reset packet + * in the buffer pointed by |dest| whose length is |destlen|. |token| + * must store the Stateless Reset Token. |rand| specifies the random + * octets preceding Stateless Reset Token. The length of |rand| is + * specified by |randlen| which must be at least + * :macro:`NGTCP2_MIN_STATELESS_RESET_RANDLEN` bytes long. + * + * If |randlen| is too long to write them all in the buffer, |rand| is + * written to the buffer as much as possible, and is truncated. + * + * This function returns the number of bytes written to the buffer, or + * one of the following negative error codes: + * + * :macro:`NGTCP2_ERR_NOBUF` + * Buffer is too small. + * :macro:`NGTCP2_ERR_INVALID_ARGUMENT` + * |randlen| is strictly less than + * :macro:`NGTCP2_MIN_STATELESS_RESET_RANDLEN`. + * + * This function has been available since v1.22.0. + */ +NGTCP2_EXTERN ngtcp2_ssize ngtcp2_pkt_write_stateless_reset2( + uint8_t *dest, size_t destlen, const ngtcp2_stateless_reset_token *token, + const uint8_t *rand, size_t randlen); + /** * @function * @@ -2744,7 +2812,7 @@ typedef int (*ngtcp2_hp_mask)(uint8_t *dest, const ngtcp2_crypto_cipher *hp, * * :macro:`NGTCP2_STREAM_DATA_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_STREAM_DATA_FLAG_NONE 0x00u +#define NGTCP2_STREAM_DATA_FLAG_NONE 0x00U /** * @macro @@ -2752,7 +2820,7 @@ typedef int (*ngtcp2_hp_mask)(uint8_t *dest, const ngtcp2_crypto_cipher *hp, * :macro:`NGTCP2_STREAM_DATA_FLAG_FIN` indicates that this chunk of * data is final piece of an incoming stream. */ -#define NGTCP2_STREAM_DATA_FLAG_FIN 0x01u +#define NGTCP2_STREAM_DATA_FLAG_FIN 0x01U /** * @macro @@ -2761,7 +2829,7 @@ typedef int (*ngtcp2_hp_mask)(uint8_t *dest, const ngtcp2_crypto_cipher *hp, * data contains data received in 0-RTT packet, and the handshake has * not completed yet, which means that the data might be replayed. */ -#define NGTCP2_STREAM_DATA_FLAG_0RTT 0x02u +#define NGTCP2_STREAM_DATA_FLAG_0RTT 0x02U /** * @functypedef @@ -2816,7 +2884,7 @@ typedef int (*ngtcp2_stream_open)(ngtcp2_conn *conn, int64_t stream_id, * * :macro:`NGTCP2_STREAM_CLOSE_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_STREAM_CLOSE_FLAG_NONE 0x00u +#define NGTCP2_STREAM_CLOSE_FLAG_NONE 0x00U /** * @macro @@ -2824,7 +2892,7 @@ typedef int (*ngtcp2_stream_open)(ngtcp2_conn *conn, int64_t stream_id, * :macro:`NGTCP2_STREAM_CLOSE_FLAG_APP_ERROR_CODE_SET` indicates that * app_error_code parameter is set. */ -#define NGTCP2_STREAM_CLOSE_FLAG_APP_ERROR_CODE_SET 0x01u +#define NGTCP2_STREAM_CLOSE_FLAG_APP_ERROR_CODE_SET 0x01U /** * @functypedef @@ -2905,6 +2973,9 @@ typedef int (*ngtcp2_acked_stream_data_offset)( * The implementation of this callback should return 0 if it succeeds. * Returning :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library * call return immediately. + * + * Deprecated since v1.22.0. Use :type:`ngtcp2_recv_stateless_reset2` + * instead. */ typedef int (*ngtcp2_recv_stateless_reset)(ngtcp2_conn *conn, const ngtcp2_pkt_stateless_reset *sr, @@ -2969,6 +3040,9 @@ typedef void (*ngtcp2_rand)(uint8_t *dest, size_t destlen, * The callback function must return 0 if it succeeds. Returning * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return * immediately. + * + * Deprecated since v1.22.0. Use + * :type:`ngtcp2_get_new_connection_id2` instead. */ typedef int (*ngtcp2_get_new_connection_id)(ngtcp2_conn *conn, ngtcp2_cid *cid, uint8_t *token, size_t cidlen, @@ -3033,7 +3107,7 @@ typedef int (*ngtcp2_update_key)( * * :macro:`NGTCP2_PATH_VALIDATION_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_PATH_VALIDATION_FLAG_NONE 0x00u +#define NGTCP2_PATH_VALIDATION_FLAG_NONE 0x00U /** * @macro @@ -3042,7 +3116,7 @@ typedef int (*ngtcp2_update_key)( * validation involving server preferred address. This flag is only * set for client. */ -#define NGTCP2_PATH_VALIDATION_FLAG_PREFERRED_ADDR 0x01u +#define NGTCP2_PATH_VALIDATION_FLAG_PREFERRED_ADDR 0x01U /** * @macro @@ -3051,7 +3125,7 @@ typedef int (*ngtcp2_update_key)( * server should send NEW_TOKEN frame for the new remote address. * This flag is only set for server. */ -#define NGTCP2_PATH_VALIDATION_FLAG_NEW_TOKEN 0x02u +#define NGTCP2_PATH_VALIDATION_FLAG_NEW_TOKEN 0x02U /** * @functypedef @@ -3166,6 +3240,9 @@ typedef enum ngtcp2_connection_id_status_type { * The callback function must return 0 if it succeeds. Returning * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return * immediately. + * + * Deprecated since v1.22.0. Use :type:`ngtcp2_connection_id_status2` + * instead. */ typedef int (*ngtcp2_connection_id_status)( ngtcp2_conn *conn, ngtcp2_connection_id_status_type type, uint64_t seq, @@ -3221,7 +3298,7 @@ typedef void (*ngtcp2_delete_crypto_cipher_ctx)( * * :macro:`NGTCP2_DATAGRAM_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_DATAGRAM_FLAG_NONE 0x00u +#define NGTCP2_DATAGRAM_FLAG_NONE 0x00U /** * @macro @@ -3230,7 +3307,7 @@ typedef void (*ngtcp2_delete_crypto_cipher_ctx)( * received in 0-RTT packet, and the handshake has not completed yet, * which means that the data might be replayed. */ -#define NGTCP2_DATAGRAM_FLAG_0RTT 0x01u +#define NGTCP2_DATAGRAM_FLAG_0RTT 0x01U /** * @functypedef @@ -3293,6 +3370,9 @@ typedef int (*ngtcp2_lost_datagram)(ngtcp2_conn *conn, uint64_t dgram_id, * The callback function must return 0 if it succeeds. Returning * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return * immediately. + * + * Deprecated since v1.22.0. Use + * :type:`ngtcp2_get_path_challenge_data2` instead. */ typedef int (*ngtcp2_get_path_challenge_data)(ngtcp2_conn *conn, uint8_t *data, void *user_data); @@ -3364,9 +3444,99 @@ typedef int (*ngtcp2_recv_key)(ngtcp2_conn *conn, ngtcp2_encryption_level level, typedef int (*ngtcp2_tls_early_data_rejected)(ngtcp2_conn *conn, void *user_data); +/** + * @functypedef + * + * :type:`ngtcp2_recv_stateless_reset2` is a callback function which + * is called when Stateless Reset packet is received. The stateless + * reset details are given in |sr|. + * + * The implementation of this callback should return 0 if it succeeds. + * Returning :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library + * call return immediately. + * + * This type has been available since v1.22.0 + */ +typedef int (*ngtcp2_recv_stateless_reset2)( + ngtcp2_conn *conn, const ngtcp2_pkt_stateless_reset2 *sr, void *user_data); + +/** + * @functypedef + * + * :type:`ngtcp2_get_new_connection_id2` is a callback function to ask + * an application for new connection ID. Application must generate + * new unused connection ID with the exact |cidlen| bytes, and store + * it in |cid|. It also has to generate a stateless reset token, and + * store it in |token|. + * + * The callback function must return 0 if it succeeds. Returning + * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return + * immediately. + * + * This type has been available since v1.22.0 + */ +typedef int (*ngtcp2_get_new_connection_id2)( + ngtcp2_conn *conn, ngtcp2_cid *cid, ngtcp2_stateless_reset_token *token, + size_t cidlen, void *user_data); + +/** + * @functypedef + * + * :type:`ngtcp2_connection_id_status2` is a callback function which + * is called when the status of Destination Connection ID changes. + * + * |token| is the associated stateless reset token, and it is ``NULL`` + * if no token is present. + * + * |type| is the one of the value defined in + * :type:`ngtcp2_connection_id_status_type`. The new value might be + * added in the future release. + * + * The callback function must return 0 if it succeeds. Returning + * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return + * immediately. + * + * This type has been available since v1.22.0 + */ +typedef int (*ngtcp2_connection_id_status2)( + ngtcp2_conn *conn, ngtcp2_connection_id_status_type type, uint64_t seq, + const ngtcp2_cid *cid, const ngtcp2_stateless_reset_token *token, + void *user_data); + +/** + * @struct + * + * :type:`ngtcp2_path_challenge_data` stores path challenge data. + * + * This type has been available since v1.22.0. + */ +typedef struct ngtcp2_path_challenge_data { + uint8_t data[NGTCP2_PATH_CHALLENGE_DATALEN]; +} ngtcp2_path_challenge_data; + +/** + * @functypedef + * + * :type:`ngtcp2_get_path_challenge_data2` is a callback function to + * ask an application for new data that is sent in PATH_CHALLENGE + * frame. Application must generate new unpredictable, exactly + * :macro:`NGTCP2_PATH_CHALLENGE_DATALEN` bytes of random data, and + * store them into |data|. + * + * The callback function must return 0 if it succeeds. Returning + * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return + * immediately. + * + * This type has been available since v1.22.0. + */ +typedef int (*ngtcp2_get_path_challenge_data2)(ngtcp2_conn *conn, + ngtcp2_path_challenge_data *data, + void *user_data); + #define NGTCP2_CALLBACKS_V1 1 #define NGTCP2_CALLBACKS_V2 2 -#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V2 +#define NGTCP2_CALLBACKS_V3 3 +#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V3 /** * @struct @@ -3453,6 +3623,11 @@ typedef struct ngtcp2_callbacks { * :member:`recv_stateless_reset` is a callback function which is * invoked when Stateless Reset packet is received. This callback * function is optional. + * + * Deprecated since v1.22.0. Use :member:`recv_stateless_reset2` + * instead. If both :member:`recv_stateless_reset` and + * :member:`recv_stateless_reset2` are set, the latter has the + * precedence. */ ngtcp2_recv_stateless_reset recv_stateless_reset; /** @@ -3483,8 +3658,14 @@ typedef struct ngtcp2_callbacks { ngtcp2_rand rand; /** * :member:`get_new_connection_id` is a callback function which is - * invoked when the library needs new connection ID. This callback - * function must be specified. + * invoked when the library needs new connection ID. Either this + * callback function or :member:`get_new_connection_id2` must be + * specified. + * + * Deprecated since v1.22.0. Use :member:`get_new_connection_id2` + * instead. If both :member:`get_new_connection_id` and + * :member:`get_new_connection_id2` are set, the latter has the + * precedence. */ ngtcp2_get_new_connection_id get_new_connection_id; /** @@ -3545,6 +3726,10 @@ typedef struct ngtcp2_callbacks { * when the new Destination Connection ID is activated, or the * activated Destination Connection ID is now deactivated. This * callback function is optional. + * + * Deprecated since v1.22.0. Use :member:`dcid_status2` instead. + * If both :member:`dcid_status` and :member:`dcid_status2` are set, + * the latter has the precedence. */ ngtcp2_connection_id_status dcid_status; /** @@ -3595,6 +3780,9 @@ typedef struct ngtcp2_callbacks { * :member:`get_path_challenge_data` is a callback function which is * invoked when the library needs new data sent along with * PATH_CHALLENGE frame. This callback must be specified. + * + * Deprecated since v1.22.0. Use :member:`get_path_challenge_data2` + * instead. */ ngtcp2_get_path_challenge_data get_path_challenge_data; /** @@ -3638,6 +3826,35 @@ typedef struct ngtcp2_callbacks { * available since v1.14.0. */ ngtcp2_begin_path_validation begin_path_validation; + /* The following fields have been added since NGTCP2_CALLBACKS_V3. */ + /** + * :member:`recv_stateless_reset2` is a callback function which is + * invoked when Stateless Reset packet is received. This callback + * function is optional. This field is available since v1.22.0. + */ + ngtcp2_recv_stateless_reset2 recv_stateless_reset2; + /** + * :member:`get_new_connection_id2` is a callback function which is + * invoked when the library needs new connection ID. This callback + * function must be specified. This field is available since + * v1.22.0. + */ + ngtcp2_get_new_connection_id2 get_new_connection_id2; + /** + * :member:`dcid_status2` is a callback function which is invoked + * when the new Destination Connection ID is activated, or the + * activated Destination Connection ID is now deactivated. This + * callback function is optional. This field is available since + * v1.22.0. + */ + ngtcp2_connection_id_status2 dcid_status2; + /** + * :member:`get_path_challenge_data2` is a callback function which + * is invoked when the library needs new data sent along with + * PATH_CHALLENGE frame. This callback must be specified. This + * field is available since v1.22.0. + */ + ngtcp2_get_path_challenge_data2 get_path_challenge_data2; } ngtcp2_callbacks; /** @@ -3853,6 +4070,21 @@ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_conn_write_pkt_versioned( ngtcp2_conn *conn, ngtcp2_path *path, int pkt_info_version, ngtcp2_pkt_info *pi, uint8_t *dest, size_t destlen, ngtcp2_tstamp ts); +/** + * @function + * + * `ngtcp2_conn_continue_handshake` resumes handshake interrupted by + * TLS stack routine (e.g., private key operation offloading, + * certificate lookup, etc). + * + * This function returns 0 if it succeeds. In general, this function + * returns the same set of error codes from `ngtcp2_conn_read_pkt`. + * + * This function has been available since v1.22.0. + */ +NGTCP2_EXTERN int ngtcp2_conn_continue_handshake(ngtcp2_conn *conn, + ngtcp2_tstamp ts); + /** * @function * @@ -4512,7 +4744,7 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream_read(ngtcp2_conn *conn, * * :macro:`NGTCP2_WRITE_STREAM_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_WRITE_STREAM_FLAG_NONE 0x00u +#define NGTCP2_WRITE_STREAM_FLAG_NONE 0x00U /** * @macro @@ -4520,7 +4752,7 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream_read(ngtcp2_conn *conn, * :macro:`NGTCP2_WRITE_STREAM_FLAG_MORE` indicates that more data may * come, and should be coalesced into the same packet if possible. */ -#define NGTCP2_WRITE_STREAM_FLAG_MORE 0x01u +#define NGTCP2_WRITE_STREAM_FLAG_MORE 0x01U /** * @macro @@ -4528,7 +4760,7 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream_read(ngtcp2_conn *conn, * :macro:`NGTCP2_WRITE_STREAM_FLAG_FIN` indicates that a passed data * is the final part of a stream. */ -#define NGTCP2_WRITE_STREAM_FLAG_FIN 0x02u +#define NGTCP2_WRITE_STREAM_FLAG_FIN 0x02U /** * @macro @@ -4539,7 +4771,7 @@ NGTCP2_EXTERN int ngtcp2_conn_shutdown_stream_read(ngtcp2_conn *conn, * finalizing it. PATH_CHALLENGE, PATH_RESPONSE, CONNECTION_CLOSE * only packets and PMTUD packets are excluded. */ -#define NGTCP2_WRITE_STREAM_FLAG_PADDING 0x04u +#define NGTCP2_WRITE_STREAM_FLAG_PADDING 0x04U /** * @function @@ -4724,7 +4956,7 @@ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_conn_writev_stream_versioned( * * :macro:`NGTCP2_WRITE_DATAGRAM_FLAG_NONE` indicates no flag set. */ -#define NGTCP2_WRITE_DATAGRAM_FLAG_NONE 0x00u +#define NGTCP2_WRITE_DATAGRAM_FLAG_NONE 0x00U /** * @macro @@ -4732,7 +4964,7 @@ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_conn_writev_stream_versioned( * :macro:`NGTCP2_WRITE_DATAGRAM_FLAG_MORE` indicates that more data * may come, and should be coalesced into the same packet if possible. */ -#define NGTCP2_WRITE_DATAGRAM_FLAG_MORE 0x01u +#define NGTCP2_WRITE_DATAGRAM_FLAG_MORE 0x01U /** * @macro @@ -4743,7 +4975,7 @@ NGTCP2_EXTERN ngtcp2_ssize ngtcp2_conn_writev_stream_versioned( * finalizing it. PATH_CHALLENGE, PATH_RESPONSE, CONNECTION_CLOSE * only packets and PMTUD packets are excluded. */ -#define NGTCP2_WRITE_DATAGRAM_FLAG_PADDING 0x02u +#define NGTCP2_WRITE_DATAGRAM_FLAG_PADDING 0x02U /** * @function @@ -4980,6 +5212,8 @@ NGTCP2_EXTERN size_t ngtcp2_conn_get_scid(ngtcp2_conn *conn, ngtcp2_cid *dest); * * :type:`ngtcp2_cid_token` is the convenient struct to store * Connection ID, its associated path, and stateless reset token. + * + * Deprecated since v1.22.0. Use :type:`ngtcp2_cid_token2` instead. */ typedef struct ngtcp2_cid_token { /** @@ -5019,10 +5253,65 @@ typedef struct ngtcp2_cid_token { * sizeof(:type:`ngtcp2_cid_token`) * n bytes available, where n is * the return value of `ngtcp2_conn_get_active_dcid` with |dest| == * NULL. + * + * Deprecated since v1.22.0. Use `ngtcp2_conn_get_active_dcid2` + * instead. */ NGTCP2_EXTERN size_t ngtcp2_conn_get_active_dcid(ngtcp2_conn *conn, ngtcp2_cid_token *dest); +/** + * @struct + * + * :type:`ngtcp2_cid_token2` is the convenient struct to store + * Connection ID, its associated path, and stateless reset token. + * + * This type has been available since v1.22.0. + */ +typedef struct ngtcp2_cid_token2 { + /** + * :member:`seq` is the sequence number of this Connection ID. + */ + uint64_t seq; + /** + * :member:`cid` is Connection ID. + */ + ngtcp2_cid cid; + /** + * :member:`ps` is the path which this Connection ID is associated + * with. + */ + ngtcp2_path_storage ps; + /** + * :member:`token` is the stateless reset token for this Connection + * ID. + */ + ngtcp2_stateless_reset_token token; + /** + * :member:`token_present` is nonzero if token contains stateless + * reset token. + */ + uint8_t token_present; +} ngtcp2_cid_token2; + +/** + * @function + * + * `ngtcp2_conn_get_active_dcid2` writes the all active Destination + * Connection IDs and their tokens to |dest|. Before handshake + * completes, this function returns 0. If |dest| is NULL, this + * function does not write anything, and returns the number of + * Destination Connection IDs that would otherwise be written to the + * provided buffer. The buffer pointed by |dest| must have + * sizeof(:type:`ngtcp2_cid_token2`) * n bytes available, where n is + * the return value of `ngtcp2_conn_get_active_dcid2` with |dest| == + * NULL. + * + * This function has been available since v1.22.0. + */ +NGTCP2_EXTERN size_t ngtcp2_conn_get_active_dcid2(ngtcp2_conn *conn, + ngtcp2_cid_token2 *dest); + /** * @function * @@ -5553,7 +5842,7 @@ NGTCP2_EXTERN void ngtcp2_ccerr_set_application_error(ngtcp2_ccerr *ccerr, * @function * * `ngtcp2_conn_write_connection_close` writes a packet which contains - * CONNECTION_CLOSE frame(s) (type 0x1c or 0x1d) in the buffer pointed + * CONNECTION_CLOSE frame(s) (type 0x1C or 0x1D) in the buffer pointed * by |dest| whose capacity is |destlen|. * * For client, |destlen| should be at least @@ -5570,10 +5859,10 @@ NGTCP2_EXTERN void ngtcp2_ccerr_set_application_error(ngtcp2_ccerr *ccerr, * * If :member:`ccerr->type ` == * :enum:`ngtcp2_ccerr_type.NGTCP2_CCERR_TYPE_TRANSPORT`, this - * function sends CONNECTION_CLOSE (type 0x1c) frame. If + * function sends CONNECTION_CLOSE (type 0x1C) frame. If * :member:`ccerr->type ` == * :enum:`ngtcp2_ccerr_type.NGTCP2_CCERR_TYPE_APPLICATION`, it sends - * CONNECTION_CLOSE (type 0x1d) frame. Otherwise, it does not produce + * CONNECTION_CLOSE (type 0x1D) frame. Otherwise, it does not produce * any data, and returns 0. * * |destlen| could be shorten by some factors (e.g., server side diff --git a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h index ff43c9c8f8c7c0..88e0107a55ac85 100644 --- a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h +++ b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h @@ -36,7 +36,7 @@ * * Version number of the ngtcp2 library release. */ -#define NGTCP2_VERSION "1.21.0" +#define NGTCP2_VERSION "1.22.0" /** * @macro @@ -46,6 +46,6 @@ * number, 8 bits for minor and 8 bits for patch. Version 1.2.3 * becomes 0x010203. */ -#define NGTCP2_VERSION_NUM 0x011500 +#define NGTCP2_VERSION_NUM 0x011600 #endif /* !defined(NGTCP2_VERSION_H) */ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_acktr.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_acktr.h index 1a591c5ead84ea..026c2cabe8733b 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_acktr.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_acktr.h @@ -97,16 +97,16 @@ typedef struct ngtcp2_acktr_ack_entry { } ngtcp2_acktr_ack_entry; /* NGTCP2_ACKTR_FLAG_NONE indicates that no flag set. */ -#define NGTCP2_ACKTR_FLAG_NONE 0x00u +#define NGTCP2_ACKTR_FLAG_NONE 0x00U /* NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK indicates that immediate acknowledgement is required. */ -#define NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK 0x01u +#define NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK 0x01U /* NGTCP2_ACKTR_FLAG_ACTIVE_ACK indicates that there are pending protected packet to be acknowledged. */ -#define NGTCP2_ACKTR_FLAG_ACTIVE_ACK 0x02u +#define NGTCP2_ACKTR_FLAG_ACTIVE_ACK 0x02U /* NGTCP2_ACKTR_FLAG_CANCEL_TIMER is set when ACK delay timer is expired and canceled. */ -#define NGTCP2_ACKTR_FLAG_CANCEL_TIMER 0x0100u +#define NGTCP2_ACKTR_FLAG_CANCEL_TIMER 0x0100U ngtcp2_static_ringbuf_def(acks, 32, sizeof(ngtcp2_acktr_ack_entry)) diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_addr.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_addr.h index c2224f85cd9c11..6314b1afc81270 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_addr.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_addr.h @@ -46,14 +46,14 @@ void ngtcp2_addr_copy(ngtcp2_addr *dest, const ngtcp2_addr *src); int ngtcp2_addr_eq(const ngtcp2_addr *a, const ngtcp2_addr *b); /* NGTCP2_ADDR_CMP_FLAG_NONE indicates that no flag set. */ -#define NGTCP2_ADDR_CMP_FLAG_NONE 0x0u +#define NGTCP2_ADDR_CMP_FLAG_NONE 0x0U /* NGTCP2_ADDR_CMP_FLAG_ADDR indicates IP addresses do not match. */ -#define NGTCP2_ADDR_CMP_FLAG_ADDR 0x1u +#define NGTCP2_ADDR_CMP_FLAG_ADDR 0x1U /* NGTCP2_ADDR_CMP_FLAG_PORT indicates ports do not match. */ -#define NGTCP2_ADDR_CMP_FLAG_PORT 0x2u +#define NGTCP2_ADDR_CMP_FLAG_PORT 0x2U /* NGTCP2_ADDR_CMP_FLAG_FAMILY indicates address families do not match. */ -#define NGTCP2_ADDR_CMP_FLAG_FAMILY 0x4u +#define NGTCP2_ADDR_CMP_FLAG_FAMILY 0x4U /* * ngtcp2_addr_cmp compares address and port between |a| and |b|, and diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_balloc.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_balloc.c index cb865c5cefdf4c..fff7a9ef65bea1 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_balloc.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_balloc.c @@ -30,7 +30,7 @@ void ngtcp2_balloc_init(ngtcp2_balloc *balloc, size_t blklen, const ngtcp2_mem *mem) { - assert((blklen & 0xfu) == 0); + assert((blklen & 0xFU) == 0); balloc->mem = mem; balloc->blklen = blklen; @@ -66,7 +66,7 @@ int ngtcp2_balloc_get(ngtcp2_balloc *balloc, void **pbuf, size_t n) { if (ngtcp2_buf_left(&balloc->buf) < n) { p = ngtcp2_mem_malloc(balloc->mem, - sizeof(ngtcp2_memblock_hd) + 0x8u + balloc->blklen); + sizeof(ngtcp2_memblock_hd) + 0x8U + balloc->blklen); if (p == NULL) { return NGTCP2_ERR_NOMEM; } @@ -76,15 +76,15 @@ int ngtcp2_balloc_get(ngtcp2_balloc *balloc, void **pbuf, size_t n) { balloc->head = hd; ngtcp2_buf_init( &balloc->buf, - (uint8_t *)(((uintptr_t)p + sizeof(ngtcp2_memblock_hd) + 0xfu) & - ~(uintptr_t)0xfu), + (uint8_t *)(((uintptr_t)p + sizeof(ngtcp2_memblock_hd) + 0xFU) & + ~(uintptr_t)0xFU), balloc->blklen); } - assert(((uintptr_t)balloc->buf.last & 0xfu) == 0); + assert(((uintptr_t)balloc->buf.last & 0xFU) == 0); *pbuf = balloc->buf.last; - balloc->buf.last += (n + 0xfu) & ~(uintptr_t)0xfu; + balloc->buf.last += (n + 0xFU) & ~(uintptr_t)0xFU; return 0; } diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c index 7e77186772b762..1d65d93d566944 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c @@ -42,7 +42,7 @@ const ngtcp2_callbacks *ngtcp2_callbacks_convert_to_latest( return src; } - memset(dest, 0, sizeof(*dest)); + *dest = (ngtcp2_callbacks){0}; callbacks_copy(dest, src, callbacks_version); @@ -63,6 +63,9 @@ size_t ngtcp2_callbackslen_version(int callbacks_version) { switch (callbacks_version) { case NGTCP2_CALLBACKS_VERSION: return sizeof(callbacks); + case NGTCP2_CALLBACKS_V2: + return offsetof(ngtcp2_callbacks, begin_path_validation) + + sizeof(callbacks.begin_path_validation); case NGTCP2_CALLBACKS_V1: return offsetof(ngtcp2_callbacks, tls_early_data_rejected) + sizeof(callbacks.tls_early_data_rejected); diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.c index 42a4827664912f..4eba2aaca5d316 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.c @@ -29,8 +29,9 @@ #include "ngtcp2_path.h" #include "ngtcp2_str.h" +#include "ngtcp2_pkt.h" -void ngtcp2_cid_zero(ngtcp2_cid *cid) { memset(cid, 0, sizeof(*cid)); } +void ngtcp2_cid_zero(ngtcp2_cid *cid) { *cid = (ngtcp2_cid){0}; } void ngtcp2_cid_init(ngtcp2_cid *cid, const uint8_t *data, size_t datalen) { assert(datalen <= NGTCP2_MAX_CIDLEN); @@ -74,12 +75,12 @@ void ngtcp2_scid_copy(ngtcp2_scid *dest, const ngtcp2_scid *src) { } void ngtcp2_dcid_init(ngtcp2_dcid *dcid, uint64_t seq, const ngtcp2_cid *cid, - const uint8_t *token) { + const ngtcp2_stateless_reset_token *token) { dcid->seq = seq; dcid->cid = *cid; if (token) { - memcpy(dcid->token, token, NGTCP2_STATELESS_RESET_TOKENLEN); + dcid->token = *token; dcid->flags = NGTCP2_DCID_FLAG_TOKEN_PRESENT; } else { dcid->flags = NGTCP2_DCID_FLAG_NONE; @@ -93,11 +94,12 @@ void ngtcp2_dcid_init(ngtcp2_dcid *dcid, uint64_t seq, const ngtcp2_cid *cid, dcid->max_udp_payload_size = NGTCP2_MAX_UDP_PAYLOAD_SIZE; } -void ngtcp2_dcid_set_token(ngtcp2_dcid *dcid, const uint8_t *token) { +void ngtcp2_dcid_set_token(ngtcp2_dcid *dcid, + const ngtcp2_stateless_reset_token *token) { assert(token); dcid->flags |= NGTCP2_DCID_FLAG_TOKEN_PRESENT; - memcpy(dcid->token, token, NGTCP2_STATELESS_RESET_TOKENLEN); + dcid->token = *token; } void ngtcp2_dcid_set_path(ngtcp2_dcid *dcid, const ngtcp2_path *path) { @@ -106,7 +108,7 @@ void ngtcp2_dcid_set_path(ngtcp2_dcid *dcid, const ngtcp2_path *path) { void ngtcp2_dcid_copy(ngtcp2_dcid *dest, const ngtcp2_dcid *src) { ngtcp2_dcid_init(dest, src->seq, &src->cid, - (src->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) ? src->token + (src->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) ? &src->token : NULL); ngtcp2_path_copy(&dest->ps.path, &src->ps.path); dest->retired_ts = src->retired_ts; @@ -123,18 +125,19 @@ void ngtcp2_dcid_copy_cid_token(ngtcp2_dcid *dest, const ngtcp2_dcid *src) { if (src->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) { dest->flags |= NGTCP2_DCID_FLAG_TOKEN_PRESENT; - memcpy(dest->token, src->token, NGTCP2_STATELESS_RESET_TOKENLEN); + dest->token = src->token; } else if (dest->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) { dest->flags &= (uint8_t)~NGTCP2_DCID_FLAG_TOKEN_PRESENT; } } int ngtcp2_dcid_verify_uniqueness(const ngtcp2_dcid *dcid, uint64_t seq, - const ngtcp2_cid *cid, const uint8_t *token) { + const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token) { if (dcid->seq == seq) { return ngtcp2_cid_eq(&dcid->cid, cid) && (dcid->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) && - memcmp(dcid->token, token, NGTCP2_STATELESS_RESET_TOKENLEN) == 0 + ngtcp2_stateless_reset_token_eq(&dcid->token, token) ? 0 : NGTCP2_ERR_PROTO; } @@ -142,12 +145,12 @@ int ngtcp2_dcid_verify_uniqueness(const ngtcp2_dcid *dcid, uint64_t seq, return !ngtcp2_cid_eq(&dcid->cid, cid) ? 0 : NGTCP2_ERR_PROTO; } -int ngtcp2_dcid_verify_stateless_reset_token(const ngtcp2_dcid *dcid, - const ngtcp2_path *path, - const uint8_t *token) { +int ngtcp2_dcid_verify_stateless_reset_token( + const ngtcp2_dcid *dcid, const ngtcp2_path *path, + const ngtcp2_stateless_reset_token *token) { return ngtcp2_path_eq(&dcid->ps.path, path) && (dcid->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) && - ngtcp2_cmemeq(dcid->token, token, NGTCP2_STATELESS_RESET_TOKENLEN) + ngtcp2_cmemeq(dcid->token.data, token->data, sizeof(token->data)) ? 0 : NGTCP2_ERR_INVALID_ARGUMENT; } diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.h index 9321cfb64e6daf..f4956b0bac0ebe 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_cid.h @@ -35,13 +35,13 @@ #include "ngtcp2_path.h" /* NGTCP2_SCID_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_SCID_FLAG_NONE 0x00u +#define NGTCP2_SCID_FLAG_NONE 0x00U /* NGTCP2_SCID_FLAG_USED indicates that a local endpoint observed that a remote endpoint uses this particular Connection ID. */ -#define NGTCP2_SCID_FLAG_USED 0x01u +#define NGTCP2_SCID_FLAG_USED 0x01U /* NGTCP2_SCID_FLAG_RETIRED indicates that this particular Connection ID is retired. */ -#define NGTCP2_SCID_FLAG_RETIRED 0x02u +#define NGTCP2_SCID_FLAG_RETIRED 0x02U typedef struct ngtcp2_scid { ngtcp2_pq_entry pe; @@ -57,13 +57,13 @@ typedef struct ngtcp2_scid { } ngtcp2_scid; /* NGTCP2_DCID_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_DCID_FLAG_NONE 0x00u +#define NGTCP2_DCID_FLAG_NONE 0x00U /* NGTCP2_DCID_FLAG_PATH_VALIDATED indicates that an associated path has been validated. */ -#define NGTCP2_DCID_FLAG_PATH_VALIDATED 0x01u +#define NGTCP2_DCID_FLAG_PATH_VALIDATED 0x01U /* NGTCP2_DCID_FLAG_TOKEN_PRESENT indicates that a stateless reset token is set in token field. */ -#define NGTCP2_DCID_FLAG_TOKEN_PRESENT 0x02u +#define NGTCP2_DCID_FLAG_TOKEN_PRESENT 0x02U typedef struct ngtcp2_dcid { /* seq is the sequence number associated to the Connection ID. */ @@ -93,7 +93,7 @@ typedef struct ngtcp2_dcid { /* token is a stateless reset token received along with this Connection ID. The stateless reset token is tied to the connection, not to the particular Connection ID. */ - uint8_t token[NGTCP2_STATELESS_RESET_TOKENLEN]; + ngtcp2_stateless_reset_token token; } ngtcp2_dcid; /* ngtcp2_cid_zero makes |cid| zero-length. */ @@ -123,17 +123,18 @@ void ngtcp2_scid_copy(ngtcp2_scid *dest, const ngtcp2_scid *src); /* * ngtcp2_dcid_init initializes |dcid| with the given parameters. If - * |token| is NULL, the function fills dcid->token with 0. |token| - * must be NGTCP2_STATELESS_RESET_TOKENLEN bytes long. + * |token| is not NULL, the function sets + * NGTCP2_DCID_FLAG_TOKEN_PRESENT flag. */ void ngtcp2_dcid_init(ngtcp2_dcid *dcid, uint64_t seq, const ngtcp2_cid *cid, - const uint8_t *token); + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcid_set_token sets |token| to |dcid|. |token| must not be - * NULL, and must be NGTCP2_STATELESS_RESET_TOKENLEN bytes long. + * NULL. */ -void ngtcp2_dcid_set_token(ngtcp2_dcid *dcid, const uint8_t *token); +void ngtcp2_dcid_set_token(ngtcp2_dcid *dcid, + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcid_set_path sets |path| to |dcid|. It sets @@ -160,7 +161,8 @@ void ngtcp2_dcid_copy_cid_token(ngtcp2_dcid *dest, const ngtcp2_dcid *src); * |token|) tuple against |dcid|. */ int ngtcp2_dcid_verify_uniqueness(const ngtcp2_dcid *dcid, uint64_t seq, - const ngtcp2_cid *cid, const uint8_t *token); + const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcid_verify_stateless_reset_token verifies stateless reset @@ -172,9 +174,9 @@ int ngtcp2_dcid_verify_uniqueness(const ngtcp2_dcid *dcid, uint64_t seq, * NGTCP2_ERR_INVALID_ARGUMENT * Tokens do not match; or |dcid| does not contain a token. */ -int ngtcp2_dcid_verify_stateless_reset_token(const ngtcp2_dcid *dcid, - const ngtcp2_path *path, - const uint8_t *token); +int ngtcp2_dcid_verify_stateless_reset_token( + const ngtcp2_dcid *dcid, const ngtcp2_path *path, + const ngtcp2_stateless_reset_token *token); /* TODO It might be performance win if we store congestion state in this entry, and restore it when migrate back to this path. */ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c index 29fe7b03911aa3..c470eb05b0648d 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c @@ -255,13 +255,20 @@ static int conn_call_extend_max_local_streams_uni(ngtcp2_conn *conn, } static int conn_call_get_new_connection_id(ngtcp2_conn *conn, ngtcp2_cid *cid, - uint8_t *token, size_t cidlen) { + ngtcp2_stateless_reset_token *token, + size_t cidlen) { int rv; - assert(conn->callbacks.get_new_connection_id); + if (conn->callbacks.get_new_connection_id2) { + rv = conn->callbacks.get_new_connection_id2(conn, cid, token, cidlen, + conn->user_data); + } else { + assert(conn->callbacks.get_new_connection_id); + + rv = conn->callbacks.get_new_connection_id(conn, cid, token->data, cidlen, + conn->user_data); + } - rv = conn->callbacks.get_new_connection_id(conn, cid, token, cidlen, - conn->user_data); if (rv != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -424,14 +431,20 @@ static int conn_call_dcid_status(ngtcp2_conn *conn, const ngtcp2_dcid *dcid) { int rv; - if (!conn->callbacks.dcid_status) { + if (conn->callbacks.dcid_status2) { + rv = conn->callbacks.dcid_status2( + conn, type, dcid->seq, &dcid->cid, + (dcid->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) ? &dcid->token : NULL, + conn->user_data); + } else if (conn->callbacks.dcid_status) { + rv = conn->callbacks.dcid_status( + conn, type, dcid->seq, &dcid->cid, + (dcid->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) ? dcid->token.data : NULL, + conn->user_data); + } else { return 0; } - rv = conn->callbacks.dcid_status( - conn, type, dcid->seq, &dcid->cid, - (dcid->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) ? dcid->token : NULL, - conn->user_data); if (rv != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -504,12 +517,19 @@ static int conn_call_client_initial(ngtcp2_conn *conn) { return 0; } -static int conn_call_get_path_challenge_data(ngtcp2_conn *conn, uint8_t *data) { +static int conn_call_get_path_challenge_data(ngtcp2_conn *conn, + ngtcp2_path_challenge_data *data) { int rv; - assert(conn->callbacks.get_path_challenge_data); + if (conn->callbacks.get_path_challenge_data2) { + rv = conn->callbacks.get_path_challenge_data2(conn, data, conn->user_data); + } else { + assert(conn->callbacks.get_path_challenge_data); + + rv = conn->callbacks.get_path_challenge_data(conn, data->data, + conn->user_data); + } - rv = conn->callbacks.get_path_challenge_data(conn, data, conn->user_data); if (rv != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -550,14 +570,24 @@ static int conn_call_recv_retry(ngtcp2_conn *conn, const ngtcp2_pkt_hd *hd) { static int conn_call_recv_stateless_reset(ngtcp2_conn *conn, - const ngtcp2_pkt_stateless_reset *sr) { + const ngtcp2_pkt_stateless_reset2 *sr) { int rv; + ngtcp2_pkt_stateless_reset legacy_sr; + + if (conn->callbacks.recv_stateless_reset2) { + rv = conn->callbacks.recv_stateless_reset2(conn, sr, conn->user_data); + } else if (conn->callbacks.recv_stateless_reset) { + memcpy(legacy_sr.stateless_reset_token, sr->token.data, + sizeof(legacy_sr.stateless_reset_token)); + legacy_sr.rand = sr->rand; + legacy_sr.randlen = sr->randlen; - if (!conn->callbacks.recv_stateless_reset) { + rv = + conn->callbacks.recv_stateless_reset(conn, &legacy_sr, conn->user_data); + } else { return 0; } - rv = conn->callbacks.recv_stateless_reset(conn, sr, conn->user_data); if (rv != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -840,8 +870,8 @@ static void conn_reset_conn_stat_cc(ngtcp2_conn *conn, */ static void reset_conn_stat_recovery(ngtcp2_conn_stat *cstat) { /* Initializes them with UINT64_MAX. */ - memset(cstat->loss_time, 0xff, sizeof(cstat->loss_time)); - memset(cstat->last_tx_pkt_ts, 0xff, sizeof(cstat->last_tx_pkt_ts)); + memset(cstat->loss_time, 0xFF, sizeof(cstat->loss_time)); + memset(cstat->last_tx_pkt_ts, 0xFF, sizeof(cstat->last_tx_pkt_ts)); } /* @@ -1072,13 +1102,13 @@ static void conn_update_skip_pkt(ngtcp2_conn *conn, ngtcp2_pktns *pktns) { conn->callbacks.rand(&r, 1, &conn->local.settings.rand_ctx); - if (1ll << pktns->tx.skip_pkt.exponent > + if (1LL << pktns->tx.skip_pkt.exponent > (NGTCP2_MAX_PKT_NUM - min_gap) / ((int64_t)r + 1)) { pktns->tx.skip_pkt.next_pkt_num = INT64_MAX; return; } - gap = ((int64_t)r + 1) * (1ll << pktns->tx.skip_pkt.exponent++) + min_gap; + gap = ((int64_t)r + 1) * (1LL << pktns->tx.skip_pkt.exponent++) + min_gap; if (pktns->tx.last_pkt_num > NGTCP2_MAX_PKT_NUM - gap) { pktns->tx.skip_pkt.next_pkt_num = INT64_MAX; @@ -1196,11 +1226,12 @@ static int conn_new(ngtcp2_conn **pconn, const ngtcp2_cid *dcid, assert(callbacks->hp_mask); assert(server || callbacks->recv_retry); assert(callbacks->rand); - assert(callbacks->get_new_connection_id); + assert(callbacks->get_new_connection_id2 || callbacks->get_new_connection_id); assert(callbacks->update_key); assert(callbacks->delete_crypto_aead_ctx); assert(callbacks->delete_crypto_cipher_ctx); - assert(callbacks->get_path_challenge_data); + assert(callbacks->get_path_challenge_data2 || + callbacks->get_path_challenge_data); assert(!server || !ngtcp2_is_reserved_version(client_chosen_version)); for (i = 0; i < settings->pmtud_probeslen; ++i) { @@ -1860,13 +1891,13 @@ static size_t pktns_select_pkt_numlen(ngtcp2_pktns *pktns) { n = n * 2 - 1; - if (n > 0xffffff) { + if (n > 0xFFFFFF) { return 4; } - if (n > 0xffff) { + if (n > 0xFFFF) { return 3; } - if (n > 0xff) { + if (n > 0xFF) { return 2; } return 1; @@ -1974,6 +2005,16 @@ static int conn_verify_dcid(ngtcp2_conn *conn, int *pnew_cid_used, return 0; } +static int conn_can_send_next_pkt(ngtcp2_conn *conn, size_t left, + uint64_t min_payloadlen) { + /* TODO the next packet type should be taken into account */ + return left >= + /* TODO Assuming that pkt_num is encoded in 1 byte. */ + NGTCP2_MIN_LONG_HEADERLEN + conn->dcid.current.cid.datalen + + conn->oscid.datalen + NGTCP2_PKT_LENGTHLEN - 1 + min_payloadlen + + NGTCP2_MAX_AEAD_OVERHEAD; +} + /* * conn_should_pad_pkt returns nonzero if the packet should be padded. * |type| is the type of packet. |left| is the space left in packet @@ -2020,32 +2061,30 @@ static int conn_should_pad_pkt(ngtcp2_conn *conn, uint8_t type, size_t left, return 1; } } - } else { - assert(type == NGTCP2_PKT_HANDSHAKE); - if (!require_padding) { - return 0; - } + return !conn_can_send_next_pkt(conn, left, min_payloadlen); + } - if (!conn->pktns.crypto.tx.ckm) { - return 1; - } + assert(type == NGTCP2_PKT_HANDSHAKE); - /* We might send Handshake packet even if exceeding CWND. In that - case, we do not write non-probe 1RTT packet. */ - if (conn_cwnd_is_zero(conn) && conn->pktns.rtb.probe_pkt_left == 0) { - return 1; - } + if (!require_padding) { + /* If we have 1RTT key, pad this Handshake packet so that the next + 1RTT packet can be squeezed into the same GSO buffer. */ + return conn->pktns.crypto.tx.ckm && + !conn_can_send_next_pkt(conn, left, NGTCP2_MIN_COALESCED_PAYLOADLEN); + } + + if (!conn->pktns.crypto.tx.ckm) { + return 1; + } - min_payloadlen = NGTCP2_MIN_COALESCED_PAYLOADLEN; + /* We might send Handshake packet even if exceeding CWND. In that + case, we do not write non-probe 1RTT packet. */ + if (conn_cwnd_is_zero(conn) && conn->pktns.rtb.probe_pkt_left == 0) { + return 1; } - /* TODO the next packet type should be taken into account */ - return left < - /* TODO Assuming that pkt_num is encoded in 1 byte. */ - NGTCP2_MIN_LONG_HEADERLEN + conn->dcid.current.cid.datalen + - conn->oscid.datalen + NGTCP2_PKT_LENGTHLEN - 1 + min_payloadlen + - NGTCP2_MAX_AEAD_OVERHEAD; + return !conn_can_send_next_pkt(conn, left, NGTCP2_MIN_COALESCED_PAYLOADLEN); } static void conn_restart_timer_on_write(ngtcp2_conn *conn, ngtcp2_tstamp ts) { @@ -2888,7 +2927,7 @@ static void conn_discard_early_key(ngtcp2_conn *conn) { conn_call_delete_crypto_aead_ctx(conn, &conn->early.ckm->aead_ctx); conn_call_delete_crypto_cipher_ctx(conn, &conn->early.hp_ctx); - memset(&conn->early.hp_ctx, 0, sizeof(conn->early.hp_ctx)); + conn->early.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; ngtcp2_crypto_km_del(conn->early.ckm, conn->mem); conn->early.ckm = NULL; @@ -3205,58 +3244,59 @@ static size_t conn_required_num_new_connection_id(ngtcp2_conn *conn) { static int conn_enqueue_new_connection_id(ngtcp2_conn *conn) { size_t i, need = conn_required_num_new_connection_id(conn); size_t cidlen = conn->oscid.datalen; - ngtcp2_cid cid; - uint64_t seq; int rv; - uint8_t token[NGTCP2_STATELESS_RESET_TOKENLEN]; ngtcp2_frame_chain *nfrc; ngtcp2_pktns *pktns = &conn->pktns; ngtcp2_scid *scid; ngtcp2_ksl_it it; for (i = 0; i < need; ++i) { - rv = conn_call_get_new_connection_id(conn, &cid, token, cidlen); + rv = ngtcp2_frame_chain_objalloc_new(&nfrc, &conn->frc_objalloc); if (rv != 0) { return rv; } - if (cid.datalen != cidlen) { - return NGTCP2_ERR_CALLBACK_FAILURE; + nfrc->fr.new_connection_id.type = NGTCP2_FRAME_NEW_CONNECTION_ID; + nfrc->fr.new_connection_id.seq = ++conn->scid.last_seq; + nfrc->fr.new_connection_id.retire_prior_to = 0; + + rv = conn_call_get_new_connection_id(conn, &nfrc->fr.new_connection_id.cid, + &nfrc->fr.new_connection_id.token, + cidlen); + if (rv != 0) { + goto fail; + } + + if (nfrc->fr.new_connection_id.cid.datalen != cidlen) { + rv = NGTCP2_ERR_CALLBACK_FAILURE; + goto fail; } /* Assert uniqueness */ - it = ngtcp2_ksl_lower_bound(&conn->scid.set, &cid); + it = + ngtcp2_ksl_lower_bound(&conn->scid.set, &nfrc->fr.new_connection_id.cid); if (!ngtcp2_ksl_it_end(&it) && - ngtcp2_cid_eq(ngtcp2_ksl_it_key(&it), &cid)) { - return NGTCP2_ERR_CALLBACK_FAILURE; + ngtcp2_cid_eq(ngtcp2_ksl_it_key(&it), + &nfrc->fr.new_connection_id.cid)) { + rv = NGTCP2_ERR_CALLBACK_FAILURE; + goto fail; } - seq = ++conn->scid.last_seq; - scid = ngtcp2_mem_malloc(conn->mem, sizeof(*scid)); if (scid == NULL) { - return NGTCP2_ERR_NOMEM; + rv = NGTCP2_ERR_NOMEM; + goto fail; } - ngtcp2_scid_init(scid, seq, &cid); + ngtcp2_scid_init(scid, nfrc->fr.new_connection_id.seq, + &nfrc->fr.new_connection_id.cid); rv = ngtcp2_ksl_insert(&conn->scid.set, NULL, &scid->cid, scid); if (rv != 0) { ngtcp2_mem_free(conn->mem, scid); - return rv; - } - - rv = ngtcp2_frame_chain_objalloc_new(&nfrc, &conn->frc_objalloc); - if (rv != 0) { - return rv; + goto fail; } - nfrc->fr.new_connection_id.type = NGTCP2_FRAME_NEW_CONNECTION_ID; - nfrc->fr.new_connection_id.seq = seq; - nfrc->fr.new_connection_id.retire_prior_to = 0; - nfrc->fr.new_connection_id.cid = cid; - memcpy(nfrc->fr.new_connection_id.stateless_reset_token, token, - sizeof(token)); nfrc->next = pktns->tx.frq; pktns->tx.frq = nfrc; @@ -3266,6 +3306,11 @@ static int conn_enqueue_new_connection_id(ngtcp2_conn *conn) { } return 0; + +fail: + ngtcp2_frame_chain_objalloc_del(nfrc, &conn->frc_objalloc, conn->mem); + + return rv; } static int dcidtr_on_deactivate(const ngtcp2_dcid *dcid, void *user_data) { @@ -3605,9 +3650,10 @@ static ngtcp2_ssize conn_write_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, /* PATH_RESPONSE is bound to the path that the corresponding PATH_CHALLENGE is received. */ if (ngtcp2_path_eq(&conn->dcid.current.ps.path, &pcent->ps.path)) { - lfr.path_response.type = NGTCP2_FRAME_PATH_RESPONSE; - memcpy(lfr.path_response.data, pcent->data, - sizeof(lfr.path_response.data)); + lfr.path_response = (ngtcp2_path_response){ + .type = NGTCP2_FRAME_PATH_RESPONSE, + .data = pcent->data, + }; rv = conn_ppe_write_frame_hd_log(conn, ppe, &hd_logged, hd, &lfr); if (rv != 0) { @@ -5121,7 +5167,7 @@ static ngtcp2_ssize conn_write_path_challenge(ngtcp2_conn *conn, return 0; } - rv = conn_call_get_path_challenge_data(conn, lfr.path_challenge.data); + rv = conn_call_get_path_challenge_data(conn, &lfr.path_challenge.data); if (rv != 0) { return rv; } @@ -5153,7 +5199,7 @@ static ngtcp2_ssize conn_write_path_challenge(ngtcp2_conn *conn, flags = NGTCP2_PV_ENTRY_FLAG_NONE; } - ngtcp2_pv_add_entry(pv, lfr.path_challenge.data, expiry, flags, ts); + ngtcp2_pv_add_entry(pv, &lfr.path_challenge.data, expiry, flags, ts); nwrite = ngtcp2_conn_write_single_frame_pkt( conn, pi, dest, destlen, NGTCP2_PKT_1RTT, NGTCP2_WRITE_PKT_FLAG_NONE, @@ -5259,8 +5305,10 @@ static ngtcp2_ssize conn_write_path_response(ngtcp2_conn *conn, } } - lfr.path_response.type = NGTCP2_FRAME_PATH_RESPONSE; - memcpy(lfr.path_response.data, pcent->data, sizeof(lfr.path_response.data)); + lfr.path_response = (ngtcp2_path_response){ + .type = NGTCP2_FRAME_PATH_RESPONSE, + .data = pcent->data, + }; nwrite = ngtcp2_conn_write_single_frame_pkt( conn, pi, dest, destlen, NGTCP2_PKT_1RTT, NGTCP2_WRITE_PKT_FLAG_NONE, @@ -5877,9 +5925,9 @@ decrypt_hp(ngtcp2_pkt_hd *hd, uint8_t *dest, const ngtcp2_crypto_cipher *hp, } if (hd->flags & NGTCP2_PKT_FLAG_LONG_FORM) { - dest[0] = (uint8_t)(dest[0] ^ (mask[0] & 0x0f)); + dest[0] = (uint8_t)(dest[0] ^ (mask[0] & 0x0F)); } else { - dest[0] = (uint8_t)(dest[0] ^ (mask[0] & 0x1f)); + dest[0] = (uint8_t)(dest[0] ^ (mask[0] & 0x1F)); if (dest[0] & NGTCP2_SHORT_KEY_PHASE_BIT) { hd->flags |= NGTCP2_PKT_FLAG_KEY_PHASE; } @@ -5994,7 +6042,7 @@ static void conn_recv_path_challenge(ngtcp2_conn *conn, const ngtcp2_path *path, } ent = ngtcp2_ringbuf_push_front(&conn->rx.path_challenge.rb); - ngtcp2_path_challenge_entry_init(ent, path, fr->data); + ngtcp2_path_challenge_entry_init(ent, path, &fr->data); } /* @@ -6064,7 +6112,7 @@ static int conn_recv_path_response(ngtcp2_conn *conn, const ngtcp2_pkt_hd *hd, return 0; } - rv = ngtcp2_pv_validate(pv, &ent_flags, fr->data); + rv = ngtcp2_pv_validate(pv, &ent_flags, &fr->data); if (rv != 0) { assert(!ngtcp2_err_is_fatal(rv)); @@ -6947,6 +6995,10 @@ static ngtcp2_ssize conn_recv_handshake_cpkt(ngtcp2_conn *conn, const uint8_t *origpkt = pkt; uint32_t version; + if (pktlen == 0) { + return 0; + } + if (ngtcp2_path_eq(&conn->dcid.current.ps.path, path)) { conn->dcid.current.bytes_recv += dgramlen; } @@ -7882,9 +7934,8 @@ static int conn_recv_stop_sending(ngtcp2_conn *conn, */ static int check_stateless_reset(const ngtcp2_dcid *dcid, const ngtcp2_path *path, - const ngtcp2_pkt_stateless_reset *sr) { - return ngtcp2_dcid_verify_stateless_reset_token( - dcid, path, sr->stateless_reset_token) == 0; + const ngtcp2_pkt_stateless_reset2 *sr) { + return ngtcp2_dcid_verify_stateless_reset_token(dcid, path, &sr->token) == 0; } /* @@ -7908,7 +7959,7 @@ static int conn_on_stateless_reset(ngtcp2_conn *conn, const ngtcp2_path *path, const uint8_t *payload, size_t payloadlen) { int rv; ngtcp2_pv *pv = conn->pv; - ngtcp2_pkt_stateless_reset sr; + ngtcp2_pkt_stateless_reset2 sr; rv = ngtcp2_pkt_decode_stateless_reset(&sr, payload, payloadlen); if (rv != 0) { @@ -7919,8 +7970,7 @@ static int conn_on_stateless_reset(ngtcp2_conn *conn, const ngtcp2_path *path, (!pv || (!check_stateless_reset(&pv->dcid, path, &sr) && (!(pv->flags & NGTCP2_PV_FLAG_FALLBACK_PRESENT) || !check_stateless_reset(&pv->fallback_dcid, path, &sr))))) { - rv = ngtcp2_dcidtr_verify_stateless_reset(&conn->dcid.dtr, path, - sr.stateless_reset_token); + rv = ngtcp2_dcidtr_verify_stateless_reset(&conn->dcid.dtr, path, &sr.token); if (rv != 0) { return rv; } @@ -8000,7 +8050,7 @@ static int conn_recv_new_connection_id(ngtcp2_conn *conn, } rv = ngtcp2_dcid_verify_uniqueness(&conn->dcid.current, fr->seq, &fr->cid, - fr->stateless_reset_token); + &fr->token); if (rv != 0) { return rv; } @@ -8009,8 +8059,8 @@ static int conn_recv_new_connection_id(ngtcp2_conn *conn, } if (pv) { - rv = ngtcp2_dcid_verify_uniqueness(&pv->dcid, fr->seq, &fr->cid, - fr->stateless_reset_token); + rv = + ngtcp2_dcid_verify_uniqueness(&pv->dcid, fr->seq, &fr->cid, &fr->token); if (rv != 0) { return rv; } @@ -8019,8 +8069,8 @@ static int conn_recv_new_connection_id(ngtcp2_conn *conn, } } - rv = ngtcp2_dcidtr_verify_token_uniqueness( - &conn->dcid.dtr, &found, fr->seq, &fr->cid, fr->stateless_reset_token); + rv = ngtcp2_dcidtr_verify_token_uniqueness(&conn->dcid.dtr, &found, fr->seq, + &fr->cid, &fr->token); if (rv != 0) { return rv; } @@ -8098,8 +8148,7 @@ static int conn_recv_new_connection_id(ngtcp2_conn *conn, return 0; } - ngtcp2_dcidtr_push_unused(&conn->dcid.dtr, fr->seq, &fr->cid, - fr->stateless_reset_token); + ngtcp2_dcidtr_push_unused(&conn->dcid.dtr, fr->seq, &fr->cid, &fr->token); return 0; } @@ -10305,6 +10354,49 @@ int ngtcp2_conn_read_pkt_versioned(ngtcp2_conn *conn, const ngtcp2_path *path, return conn_recv_cpkt(conn, path, pi, pkt, pktlen, ts); } +int ngtcp2_conn_continue_handshake(ngtcp2_conn *conn, ngtcp2_tstamp ts) { + int rv; + ngtcp2_encryption_level encryption_level; + uint64_t offset; + + conn_update_timestamp(conn, ts); + + switch (conn->state) { + case NGTCP2_CS_CLIENT_INITIAL: + case NGTCP2_CS_CLIENT_WAIT_HANDSHAKE: + case NGTCP2_CS_SERVER_INITIAL: + case NGTCP2_CS_SERVER_WAIT_HANDSHAKE: + /* Most of the handshake interruption happens in Initial + encryption level, but this might not be the case depending on + the TLS stack and its functionality and where interruption + occurs. After all, we do not need to support all kinds of + interruptions. */ + if (conn->in_pktns) { + encryption_level = NGTCP2_ENCRYPTION_LEVEL_INITIAL; + offset = ngtcp2_strm_rx_offset(&conn->in_pktns->crypto.strm); + } else if (conn->hs_pktns) { + encryption_level = NGTCP2_ENCRYPTION_LEVEL_HANDSHAKE; + offset = ngtcp2_strm_rx_offset(&conn->hs_pktns->crypto.strm); + } else { + return 0; + } + + rv = conn_call_recv_crypto_data(conn, encryption_level, offset, NULL, 0); + if (rv != 0) { + return rv; + } + + return (int)conn_read_handshake(conn, /* path = */ NULL, /* pi = */ NULL, + /* pkt = */ NULL, 0, ts); + case NGTCP2_CS_CLOSING: + return NGTCP2_ERR_CLOSING; + case NGTCP2_CS_DRAINING: + return NGTCP2_ERR_DRAINING; + default: + return 0; + } +} + /* * conn_check_pkt_num_exhausted returns nonzero if packet number is * exhausted in at least one of packet number space. @@ -10406,6 +10498,7 @@ static ngtcp2_ssize conn_write_handshake(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, size_t origlen = destlen; uint64_t pending_early_datalen; ngtcp2_preferred_addr *paddr; + ngtcp2_stateless_reset_token token; switch (conn->state) { case NGTCP2_CS_CLIENT_INITIAL: @@ -10533,8 +10626,8 @@ static ngtcp2_ssize conn_write_handshake(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, assert(!ngtcp2_dcidtr_unused_full(&conn->dcid.dtr)); paddr = &conn->remote.transport_params->preferred_addr; - ngtcp2_dcidtr_push_unused(&conn->dcid.dtr, 1, &paddr->cid, - paddr->stateless_reset_token); + memcpy(token.data, paddr->stateless_reset_token, sizeof(token.data)); + ngtcp2_dcidtr_push_unused(&conn->dcid.dtr, 1, &paddr->cid, &token); rv = ngtcp2_gaptr_push(&conn->dcid.seqgap, 1, 1); if (rv != 0) { @@ -10542,12 +10635,12 @@ static ngtcp2_ssize conn_write_handshake(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, } } - if (conn->remote.transport_params->stateless_reset_token_present) { - assert(conn->dcid.current.seq == 0); + if (conn->remote.transport_params->stateless_reset_token_present && + conn->dcid.current.seq == 0) { assert(!(conn->dcid.current.flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT)); - ngtcp2_dcid_set_token( - &conn->dcid.current, - conn->remote.transport_params->stateless_reset_token); + memcpy(token.data, conn->remote.transport_params->stateless_reset_token, + sizeof(token.data)); + ngtcp2_dcid_set_token(&conn->dcid.current, &token); } rv = conn_call_activate_dcid(conn, &conn->dcid.current); @@ -10923,8 +11016,7 @@ int ngtcp2_conn_install_rx_handshake_key( if (rv != 0) { ngtcp2_crypto_km_del(pktns->crypto.rx.ckm, conn->mem); pktns->crypto.rx.ckm = NULL; - - memset(&pktns->crypto.rx.hp_ctx, 0, sizeof(pktns->crypto.rx.hp_ctx)); + pktns->crypto.rx.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; return rv; } @@ -10971,8 +11063,7 @@ int ngtcp2_conn_install_tx_handshake_key( to them. */ ngtcp2_crypto_km_del(pktns->crypto.tx.ckm, conn->mem); pktns->crypto.tx.ckm = NULL; - - memset(&pktns->crypto.tx.hp_ctx, 0, sizeof(pktns->crypto.tx.hp_ctx)); + pktns->crypto.tx.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; return rv; } @@ -11005,8 +11096,7 @@ int ngtcp2_conn_install_0rtt_key(ngtcp2_conn *conn, if (rv != 0) { ngtcp2_crypto_km_del(conn->early.ckm, conn->mem); conn->early.ckm = NULL; - - memset(&conn->early.hp_ctx, 0, sizeof(conn->early.hp_ctx)); + conn->early.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; return rv; } @@ -11053,8 +11143,7 @@ int ngtcp2_conn_install_rx_key(ngtcp2_conn *conn, const uint8_t *secret, if (rv != 0) { ngtcp2_crypto_km_del(pktns->crypto.rx.ckm, conn->mem); pktns->crypto.rx.ckm = NULL; - - memset(&pktns->crypto.rx.hp_ctx, 0, sizeof(pktns->crypto.rx.hp_ctx)); + pktns->crypto.rx.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; return rv; } @@ -11099,8 +11188,7 @@ int ngtcp2_conn_install_tx_key(ngtcp2_conn *conn, const uint8_t *secret, if (rv != 0) { ngtcp2_crypto_km_del(pktns->crypto.tx.ckm, conn->mem); pktns->crypto.tx.ckm = NULL; - - memset(&pktns->crypto.tx.hp_ctx, 0, sizeof(pktns->crypto.tx.hp_ctx)); + pktns->crypto.tx.hp_ctx = (ngtcp2_crypto_cipher_ctx){0}; return rv; } @@ -13485,20 +13573,46 @@ static size_t conn_get_num_active_dcid(ngtcp2_conn *conn) { return n; } -static void copy_dcid_to_cid_token(ngtcp2_cid_token *dest, +size_t ngtcp2_conn_get_active_dcid(ngtcp2_conn *conn, ngtcp2_cid_token *dest) { + ngtcp2_cid_token2 cid_tokens[/* current */ 1 + /* pv */ 2 + + NGTCP2_DCIDTR_MAX_RETIRED_DCID_SIZE]; + size_t n, i; + + if (!dest) { + return ngtcp2_conn_get_active_dcid2(conn, NULL); + } + + n = ngtcp2_conn_get_active_dcid2(conn, cid_tokens); + + for (i = 0; i < n; ++i) { + dest[i].seq = cid_tokens[i].seq; + dest[i].cid = cid_tokens[i].cid; + ngtcp2_path_storage_init2(&dest[i].ps, &cid_tokens[i].ps.path); + dest[i].token_present = cid_tokens[i].token_present; + + if (dest[i].token_present) { + memcpy(dest[i].token, cid_tokens[i].token.data, sizeof(dest[i].token)); + } + } + + return n; +} + +static void copy_dcid_to_cid_token(ngtcp2_cid_token2 *dest, const ngtcp2_dcid *src) { dest->seq = src->seq; dest->cid = src->cid; ngtcp2_path_storage_init2(&dest->ps, &src->ps.path); if ((dest->token_present = (src->flags & NGTCP2_DCID_FLAG_TOKEN_PRESENT) != 0)) { - memcpy(dest->token, src->token, NGTCP2_STATELESS_RESET_TOKENLEN); + dest->token = src->token; } } -size_t ngtcp2_conn_get_active_dcid(ngtcp2_conn *conn, ngtcp2_cid_token *dest) { +size_t ngtcp2_conn_get_active_dcid2(ngtcp2_conn *conn, + ngtcp2_cid_token2 *dest) { ngtcp2_pv *pv = conn->pv; - ngtcp2_cid_token *orig = dest; + ngtcp2_cid_token2 *orig = dest; ngtcp2_dcid *dcid; size_t len, i; @@ -14068,9 +14182,9 @@ ngtcp2_conn_find_path_history(ngtcp2_conn *conn, const ngtcp2_path *path, void ngtcp2_path_challenge_entry_init(ngtcp2_path_challenge_entry *pcent, const ngtcp2_path *path, - const uint8_t *data) { + const ngtcp2_path_challenge_data *data) { ngtcp2_path_storage_init2(&pcent->ps, path); - memcpy(pcent->data, data, sizeof(pcent->data)); + pcent->data = *data; } /* The functions prefixed with ngtcp2_pkt_ are usually put inside diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h index a6f7616ee0c7d6..47175736d422c7 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h @@ -94,35 +94,35 @@ typedef enum { #define NGTCP2_CCERR_MAX_REASONLEN 1024 /* NGTCP2_WRITE_PKT_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_WRITE_PKT_FLAG_NONE 0x00u +#define NGTCP2_WRITE_PKT_FLAG_NONE 0x00U /* NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING indicates that packet other than Initial packet should be padded so that UDP datagram payload is at least NGTCP2_MAX_UDP_PAYLOAD_SIZE bytes. Initial packet might be padded based on QUIC requirement regardless of this flag. */ -#define NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING 0x01u +#define NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING 0x01U /* NGTCP2_WRITE_PKT_FLAG_MORE indicates that more frames might come and it should be encoded into the current packet. */ -#define NGTCP2_WRITE_PKT_FLAG_MORE 0x02u +#define NGTCP2_WRITE_PKT_FLAG_MORE 0x02U /* NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING_FULL is just like NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING, but it requests to add padding to the full UDP datagram payload size. */ -#define NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING_FULL 0x04u +#define NGTCP2_WRITE_PKT_FLAG_REQUIRE_PADDING_FULL 0x04U /* NGTCP2_WRITE_PKT_FLAG_PADDING_IF_NOT_EMPTY adds padding to the QUIC packet as much as possible if the packet is not empty. */ -#define NGTCP2_WRITE_PKT_FLAG_PADDING_IF_NOT_EMPTY 0x08u +#define NGTCP2_WRITE_PKT_FLAG_PADDING_IF_NOT_EMPTY 0x08U typedef struct ngtcp2_path_challenge_entry { ngtcp2_path_storage ps; - uint8_t data[NGTCP2_PATH_CHALLENGE_DATALEN]; + ngtcp2_path_challenge_data data; } ngtcp2_path_challenge_entry; void ngtcp2_path_challenge_entry_init(ngtcp2_path_challenge_entry *pcent, const ngtcp2_path *path, - const uint8_t *data); + const ngtcp2_path_challenge_data *data); /* NGTCP2_CONN_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_CONN_FLAG_NONE 0x00u +#define NGTCP2_CONN_FLAG_NONE 0x00U /* NGTCP2_CONN_FLAG_TLS_HANDSHAKE_COMPLETED is set when TLS stack declares that TLS handshake has completed. The condition of this declaration varies between TLS implementations and this flag does @@ -130,69 +130,69 @@ void ngtcp2_path_challenge_entry_init(ngtcp2_path_challenge_entry *pcent, implementations declare TLS handshake completion as server when they write off Server Finished and before deriving application rx secret. */ -#define NGTCP2_CONN_FLAG_TLS_HANDSHAKE_COMPLETED 0x01u +#define NGTCP2_CONN_FLAG_TLS_HANDSHAKE_COMPLETED 0x01U /* NGTCP2_CONN_FLAG_INITIAL_PKT_PROCESSED is set when the first Initial packet has successfully been processed. */ -#define NGTCP2_CONN_FLAG_INITIAL_PKT_PROCESSED 0x02u +#define NGTCP2_CONN_FLAG_INITIAL_PKT_PROCESSED 0x02U /* NGTCP2_CONN_FLAG_TRANSPORT_PARAM_RECVED is set if transport parameters are received. */ -#define NGTCP2_CONN_FLAG_TRANSPORT_PARAM_RECVED 0x04u +#define NGTCP2_CONN_FLAG_TRANSPORT_PARAM_RECVED 0x04U /* NGTCP2_CONN_FLAG_LOCAL_TRANSPORT_PARAMS_COMMITTED is set when a local transport parameters are applied. */ -#define NGTCP2_CONN_FLAG_LOCAL_TRANSPORT_PARAMS_COMMITTED 0x08u +#define NGTCP2_CONN_FLAG_LOCAL_TRANSPORT_PARAMS_COMMITTED 0x08U /* NGTCP2_CONN_FLAG_RECV_RETRY is set when a client receives Retry packet. */ -#define NGTCP2_CONN_FLAG_RECV_RETRY 0x10u +#define NGTCP2_CONN_FLAG_RECV_RETRY 0x10U /* NGTCP2_CONN_FLAG_EARLY_DATA_REJECTED is set when 0-RTT packet is rejected by a peer. */ -#define NGTCP2_CONN_FLAG_EARLY_DATA_REJECTED 0x20u +#define NGTCP2_CONN_FLAG_EARLY_DATA_REJECTED 0x20U /* NGTCP2_CONN_FLAG_KEEP_ALIVE_CANCELLED is set when the expired keep-alive timer has been cancelled. */ -#define NGTCP2_CONN_FLAG_KEEP_ALIVE_CANCELLED 0x40u +#define NGTCP2_CONN_FLAG_KEEP_ALIVE_CANCELLED 0x40U /* NGTCP2_CONN_FLAG_HANDSHAKE_CONFIRMED is set when an endpoint confirmed completion of handshake. */ -#define NGTCP2_CONN_FLAG_HANDSHAKE_CONFIRMED 0x80u +#define NGTCP2_CONN_FLAG_HANDSHAKE_CONFIRMED 0x80U /* NGTCP2_CONN_FLAG_HANDSHAKE_COMPLETED is set when the library transitions its state to "post handshake". */ -#define NGTCP2_CONN_FLAG_HANDSHAKE_COMPLETED 0x0100u +#define NGTCP2_CONN_FLAG_HANDSHAKE_COMPLETED 0x0100U /* NGTCP2_CONN_FLAG_HANDSHAKE_EARLY_RETRANSMIT is set when the early handshake retransmission has done when server receives overlapping Initial crypto data. */ -#define NGTCP2_CONN_FLAG_HANDSHAKE_EARLY_RETRANSMIT 0x0200u +#define NGTCP2_CONN_FLAG_HANDSHAKE_EARLY_RETRANSMIT 0x0200U /* NGTCP2_CONN_FLAG_CLEAR_FIXED_BIT indicates that the local endpoint sends a QUIC packet without Fixed Bit set if a remote endpoint supports Greasing QUIC Bit extension. */ -#define NGTCP2_CONN_FLAG_CLEAR_FIXED_BIT 0x0400u +#define NGTCP2_CONN_FLAG_CLEAR_FIXED_BIT 0x0400U /* NGTCP2_CONN_FLAG_KEY_UPDATE_NOT_CONFIRMED is set when key update is not confirmed by the local endpoint. That is, it has not received ACK frame which acknowledges packet which is encrypted with new key. */ -#define NGTCP2_CONN_FLAG_KEY_UPDATE_NOT_CONFIRMED 0x0800u +#define NGTCP2_CONN_FLAG_KEY_UPDATE_NOT_CONFIRMED 0x0800U /* NGTCP2_CONN_FLAG_PPE_PENDING is set when NGTCP2_WRITE_STREAM_FLAG_MORE is used and the intermediate state of ngtcp2_ppe is stored in pkt struct of ngtcp2_conn. */ -#define NGTCP2_CONN_FLAG_PPE_PENDING 0x1000u +#define NGTCP2_CONN_FLAG_PPE_PENDING 0x1000U /* NGTCP2_CONN_FLAG_RESTART_IDLE_TIMER_ON_WRITE is set when idle timer should be restarted on next write. */ -#define NGTCP2_CONN_FLAG_RESTART_IDLE_TIMER_ON_WRITE 0x2000u +#define NGTCP2_CONN_FLAG_RESTART_IDLE_TIMER_ON_WRITE 0x2000U /* NGTCP2_CONN_FLAG_SERVER_ADDR_VERIFIED indicates that server as peer verified client address. This flag is only used by client. */ -#define NGTCP2_CONN_FLAG_SERVER_ADDR_VERIFIED 0x4000u +#define NGTCP2_CONN_FLAG_SERVER_ADDR_VERIFIED 0x4000U /* NGTCP2_CONN_FLAG_EARLY_KEY_INSTALLED indicates that an early key is installed. conn->early.ckm cannot be used for this purpose because it might be discarded when a certain condition is met. */ -#define NGTCP2_CONN_FLAG_EARLY_KEY_INSTALLED 0x8000u +#define NGTCP2_CONN_FLAG_EARLY_KEY_INSTALLED 0x8000U /* NGTCP2_CONN_FLAG_KEY_UPDATE_INITIATOR is set when the local endpoint has initiated key update. */ -#define NGTCP2_CONN_FLAG_KEY_UPDATE_INITIATOR 0x10000u +#define NGTCP2_CONN_FLAG_KEY_UPDATE_INITIATOR 0x10000U /* NGTCP2_CONN_FLAG_AGGREGATE_PKTS is set when ngtcp2_conn_writev_stream is called inside the callback invoked by ngtcp2_conn_write_aggregate_pkt. */ -#define NGTCP2_CONN_FLAG_AGGREGATE_PKTS 0x20000u +#define NGTCP2_CONN_FLAG_AGGREGATE_PKTS 0x20000U /* NGTCP2_CONN_FLAG_CRUMBLE_INITIAL_CRYPTO, if set, crumbles an Initial CRYPTO frame into pieces as a countermeasure against Deep Packet Inspection. */ -#define NGTCP2_CONN_FLAG_CRUMBLE_INITIAL_CRYPTO 0x40000u +#define NGTCP2_CONN_FLAG_CRUMBLE_INITIAL_CRYPTO 0x40000U typedef struct ngtcp2_pktns { struct { @@ -943,7 +943,7 @@ ngtcp2_conn_server_negotiate_version(ngtcp2_conn *conn, * @function * * `ngtcp2_conn_write_connection_close_pkt` writes a packet which - * contains a CONNECTION_CLOSE frame (type 0x1c) in the buffer pointed + * contains a CONNECTION_CLOSE frame (type 0x1C) in the buffer pointed * by |dest| whose capacity is |datalen|. * * If |path| is not ``NULL``, this function stores the network path @@ -985,7 +985,7 @@ ngtcp2_ssize ngtcp2_conn_write_connection_close_pkt( * @function * * `ngtcp2_conn_write_application_close_pkt` writes a packet which - * contains a CONNECTION_CLOSE frame (type 0x1d) in the buffer pointed + * contains a CONNECTION_CLOSE frame (type 0x1D) in the buffer pointed * by |dest| whose capacity is |datalen|. * * If |path| is not ``NULL``, this function stores the network path @@ -998,7 +998,7 @@ ngtcp2_ssize ngtcp2_conn_write_connection_close_pkt( * if it succeeds. The metadata includes ECN markings. * * If handshake has not been confirmed yet, CONNECTION_CLOSE (type - * 0x1c) with error code :macro:`NGTCP2_APPLICATION_ERROR` is written + * 0x1C) with error code :macro:`NGTCP2_APPLICATION_ERROR` is written * instead. * * This function must not be called from inside the callback diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conv.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conv.c index 7b2e02e5b10f5d..a0cef0c8643a6e 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conv.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conv.c @@ -74,21 +74,21 @@ static const uint8_t *get_uvarint(uint64_t *dest, const uint8_t *p) { case 1: memcpy(&n16, p, 2); n16 = ngtcp2_ntohs(n16); - n16 &= 0x3fff; + n16 &= 0x3FFF; *dest = n16; return p + 2; case 2: memcpy(&n32, p, 4); n32 = ngtcp2_ntohl(n32); - n32 &= 0x3fffffff; + n32 &= 0x3FFFFFFF; *dest = n32; return p + 4; case 3: memcpy(&n64, p, 8); n64 = ngtcp2_ntohl64(n64); - n64 &= 0x3fffffffffffffff; + n64 &= 0x3FFFFFFFFFFFFFFF; *dest = n64; return p + 8; @@ -168,7 +168,7 @@ uint8_t *ngtcp2_put_uvarint(uint8_t *p, uint64_t n) { } assert(n < 4611686018427387904ULL); rv = ngtcp2_put_uint64be(p, n); - *p |= 0xc0; + *p |= 0xC0; return rv; } @@ -200,7 +200,7 @@ uint8_t *ngtcp2_put_pkt_num(uint8_t *p, int64_t pkt_num, size_t len) { } size_t ngtcp2_get_uvarintlen(const uint8_t *p) { - return (size_t)(1u << (*p >> 6)); + return (size_t)(1U << (*p >> 6)); } size_t ngtcp2_put_uvarintlen(uint64_t n) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_crypto.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_crypto.h index ca6d494846f324..c1e786b5fc7b36 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_crypto.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_crypto.h @@ -42,10 +42,10 @@ #define NGTCP2_MAX_AEAD_OVERHEAD 16 /* NGTCP2_CRYPTO_KM_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_CRYPTO_KM_FLAG_NONE 0x00u +#define NGTCP2_CRYPTO_KM_FLAG_NONE 0x00U /* NGTCP2_CRYPTO_KM_FLAG_KEY_PHASE_ONE is set if key phase bit is set. */ -#define NGTCP2_CRYPTO_KM_FLAG_KEY_PHASE_ONE 0x01u +#define NGTCP2_CRYPTO_KM_FLAG_KEY_PHASE_ONE 0x01U typedef struct ngtcp2_crypto_km { ngtcp2_vec secret; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.c index 170b9f803cccec..a312398bbfaf97 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.c @@ -157,9 +157,9 @@ int ngtcp2_dcidtr_bind_dcid(ngtcp2_dcidtr *dtr, ngtcp2_dcid **pdest, return 0; } -int ngtcp2_dcidtr_verify_stateless_reset(const ngtcp2_dcidtr *dtr, - const ngtcp2_path *path, - const uint8_t *token) { +int ngtcp2_dcidtr_verify_stateless_reset( + const ngtcp2_dcidtr *dtr, const ngtcp2_path *path, + const ngtcp2_stateless_reset_token *token) { const ngtcp2_dcid *dcid; const ngtcp2_ringbuf *rb = &dtr->bound.rb; size_t i, len = ngtcp2_ringbuf_len(rb); @@ -176,7 +176,7 @@ int ngtcp2_dcidtr_verify_stateless_reset(const ngtcp2_dcidtr *dtr, static int verify_token_uniqueness(const ngtcp2_ringbuf *rb, int *pfound, uint64_t seq, const ngtcp2_cid *cid, - const uint8_t *token) { + const ngtcp2_stateless_reset_token *token) { const ngtcp2_dcid *dcid; size_t i, len = ngtcp2_ringbuf_len(rb); int rv; @@ -196,9 +196,9 @@ static int verify_token_uniqueness(const ngtcp2_ringbuf *rb, int *pfound, return 0; } -int ngtcp2_dcidtr_verify_token_uniqueness(const ngtcp2_dcidtr *dtr, int *pfound, - uint64_t seq, const ngtcp2_cid *cid, - const uint8_t *token) { +int ngtcp2_dcidtr_verify_token_uniqueness( + const ngtcp2_dcidtr *dtr, int *pfound, uint64_t seq, const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token) { int rv; rv = verify_token_uniqueness(&dtr->bound.rb, pfound, seq, cid, token); @@ -406,7 +406,8 @@ ngtcp2_tstamp ngtcp2_dcidtr_earliest_retired_ts(const ngtcp2_dcidtr *dtr) { } void ngtcp2_dcidtr_push_unused(ngtcp2_dcidtr *dtr, uint64_t seq, - const ngtcp2_cid *cid, const uint8_t *token) { + const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token) { ngtcp2_dcid *dcid = ngtcp2_ringbuf_push_back(&dtr->unused.rb); ngtcp2_dcid_init(dcid, seq, cid, token); diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.h index 63043427bc0900..945ed12bae145f 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_dcidtr.h @@ -154,9 +154,9 @@ int ngtcp2_dcidtr_bind_dcid(ngtcp2_dcidtr *dtr, ngtcp2_dcid **pdest, * There is no Destination Connection ID that matches the given * |path| and |token|. */ -int ngtcp2_dcidtr_verify_stateless_reset(const ngtcp2_dcidtr *dtr, - const ngtcp2_path *path, - const uint8_t *token); +int ngtcp2_dcidtr_verify_stateless_reset( + const ngtcp2_dcidtr *dtr, const ngtcp2_path *path, + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcidtr_verify_token_uniqueness verifies that the uniqueness @@ -180,9 +180,9 @@ int ngtcp2_dcidtr_verify_stateless_reset(const ngtcp2_dcidtr *dtr, * The given combination of values does not satisfy the above * conditions. */ -int ngtcp2_dcidtr_verify_token_uniqueness(const ngtcp2_dcidtr *dtr, int *pfound, - uint64_t seq, const ngtcp2_cid *cid, - const uint8_t *token); +int ngtcp2_dcidtr_verify_token_uniqueness( + const ngtcp2_dcidtr *dtr, int *pfound, uint64_t seq, const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcidtr_retire_inactive_dcid_prior_to retires inactive @@ -273,7 +273,8 @@ ngtcp2_tstamp ngtcp2_dcidtr_earliest_retired_ts(const ngtcp2_dcidtr *dtr); * buffer space is full, the earliest ngtcp2_dcid is removed. */ void ngtcp2_dcidtr_push_unused(ngtcp2_dcidtr *dtr, uint64_t seq, - const ngtcp2_cid *cid, const uint8_t *token); + const ngtcp2_cid *cid, + const ngtcp2_stateless_reset_token *token); /* * ngtcp2_dcidtr_pop_unused_cid_token removes an unused Destination diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_frame_chain.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_frame_chain.h index 5342b9fa7b1692..c73100dbcbaa4f 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_frame_chain.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_frame_chain.h @@ -36,10 +36,10 @@ /* NGTCP2_FRAME_CHAIN_BINDER_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_FRAME_CHAIN_BINDER_FLAG_NONE 0x00u +#define NGTCP2_FRAME_CHAIN_BINDER_FLAG_NONE 0x00U /* NGTCP2_FRAME_CHAIN_BINDER_FLAG_ACK indicates that an information which a frame carries has been acknowledged. */ -#define NGTCP2_FRAME_CHAIN_BINDER_FLAG_ACK 0x01u +#define NGTCP2_FRAME_CHAIN_BINDER_FLAG_ACK 0x01U /* * ngtcp2_frame_chain_binder binds 2 or more of ngtcp2_frame_chain to diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ksl.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ksl.c index be3c9e182b5d06..80000f42f9b834 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ksl.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ksl.c @@ -55,12 +55,12 @@ void ngtcp2_ksl_init(ngtcp2_ksl *ksl, ngtcp2_ksl_compar compar, assert(keylen >= sizeof(uint64_t)); - aligned_keylen = (keylen + 0x7u) & ~0x7u; + aligned_keylen = (keylen + 0x7U) & ~0x7U; assert(aligned_keylen <= UINT16_MAX); ngtcp2_objalloc_init(&ksl->blkalloc, - (ksl_blklen(aligned_keylen) + 0xfu) & ~(uintptr_t)0xfu, + (ksl_blklen(aligned_keylen) + 0xFU) & ~(uintptr_t)0xFU, mem); ksl->root = NULL; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.c index 39fd6969a5e3f6..191c64430b5b28 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.c @@ -47,7 +47,7 @@ void ngtcp2_log_init(ngtcp2_log *log, const ngtcp2_cid *scid, log->scid[0] = '\0'; } log->log_printf = log_printf; - log->events = 0xff; + log->events = 0xFF; log->ts = log->last_ts = ts; log->user_data = user_data; } @@ -134,7 +134,7 @@ static const char *strerrorcode(uint64_t error_code) { case NGTCP2_VERSION_NEGOTIATION_ERROR: return "VERSION_NEGOTIATION_ERROR"; default: - if (0x100u <= error_code && error_code <= 0x1ffu) { + if (0x100U <= error_code && error_code <= 0x1FFU) { return "CRYPTO_ERROR"; } return "(unknown)"; @@ -328,7 +328,7 @@ static void log_fr_streams_blocked(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, static void log_fr_new_connection_id(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, const ngtcp2_new_connection_id *fr, const char *dir) { - char buf[sizeof(fr->stateless_reset_token) * 2 + 1]; + char buf[sizeof(fr->token.data) * 2 + 1]; char cid[sizeof(fr->cid.data) * 2 + 1]; ngtcp2_log_infof_raw( @@ -339,8 +339,7 @@ static void log_fr_new_connection_id(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, NGTCP2_LOG_PKT_HD_FIELDS(dir), fr->type, fr->seq, ngtcp2_encode_hex_cstr(cid, fr->cid.data, fr->cid.datalen), fr->retire_prior_to, - ngtcp2_encode_hex_cstr(buf, fr->stateless_reset_token, - sizeof(fr->stateless_reset_token))); + ngtcp2_encode_hex_cstr(buf, fr->token.data, sizeof(fr->token.data))); } static void log_fr_stop_sending(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, @@ -357,25 +356,25 @@ static void log_fr_stop_sending(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, static void log_fr_path_challenge(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, const ngtcp2_path_challenge *fr, const char *dir) { - char buf[sizeof(fr->data) * 2 + 1]; + char buf[sizeof(fr->data.data) * 2 + 1]; - ngtcp2_log_infof_raw(log, NGTCP2_LOG_EVENT_FRM, - NGTCP2_LOG_PKT " PATH_CHALLENGE(0x%02" PRIx64 - ") data=0x%s", - NGTCP2_LOG_PKT_HD_FIELDS(dir), fr->type, - ngtcp2_encode_hex_cstr(buf, fr->data, sizeof(fr->data))); + ngtcp2_log_infof_raw( + log, NGTCP2_LOG_EVENT_FRM, + NGTCP2_LOG_PKT " PATH_CHALLENGE(0x%02" PRIx64 ") data=0x%s", + NGTCP2_LOG_PKT_HD_FIELDS(dir), fr->type, + ngtcp2_encode_hex_cstr(buf, fr->data.data, sizeof(fr->data.data))); } static void log_fr_path_response(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, const ngtcp2_path_response *fr, const char *dir) { - char buf[sizeof(fr->data) * 2 + 1]; + char buf[sizeof(fr->data.data) * 2 + 1]; - ngtcp2_log_infof_raw(log, NGTCP2_LOG_EVENT_FRM, - NGTCP2_LOG_PKT " PATH_RESPONSE(0x%02" PRIx64 - ") data=0x%s", - NGTCP2_LOG_PKT_HD_FIELDS(dir), fr->type, - ngtcp2_encode_hex_cstr(buf, fr->data, sizeof(fr->data))); + ngtcp2_log_infof_raw( + log, NGTCP2_LOG_EVENT_FRM, + NGTCP2_LOG_PKT " PATH_RESPONSE(0x%02" PRIx64 ") data=0x%s", + NGTCP2_LOG_PKT_HD_FIELDS(dir), fr->type, + ngtcp2_encode_hex_cstr(buf, fr->data.data, sizeof(fr->data.data))); } static void log_fr_crypto(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, @@ -542,8 +541,8 @@ void ngtcp2_log_rx_vn(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, } } -void ngtcp2_log_rx_sr(ngtcp2_log *log, const ngtcp2_pkt_stateless_reset *sr) { - char buf[sizeof(sr->stateless_reset_token) * 2 + 1]; +void ngtcp2_log_rx_sr(ngtcp2_log *log, const ngtcp2_pkt_stateless_reset2 *sr) { + char buf[sizeof(sr->token.data) * 2 + 1]; ngtcp2_pkt_hd shd; ngtcp2_pkt_hd *hd = &shd; @@ -558,14 +557,13 @@ void ngtcp2_log_rx_sr(ngtcp2_log *log, const ngtcp2_pkt_stateless_reset *sr) { ngtcp2_log_infof_raw( log, NGTCP2_LOG_EVENT_PKT, NGTCP2_LOG_PKT " token=0x%s randlen=%zu", NGTCP2_LOG_PKT_HD_FIELDS("rx"), - ngtcp2_encode_hex_cstr(buf, sr->stateless_reset_token, - sizeof(sr->stateless_reset_token)), + ngtcp2_encode_hex_cstr(buf, sr->token.data, sizeof(sr->token.data)), sr->randlen); } void ngtcp2_log_remote_tp(ngtcp2_log *log, const ngtcp2_transport_params *params) { - char token[NGTCP2_STATELESS_RESET_TOKENLEN * 2 + 1]; + char token[sizeof(params->stateless_reset_token) * 2 + 1]; char addr[16 * 2 + 7 + 1]; char cid[NGTCP2_MAX_CIDLEN * 2 + 1]; size_t i; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.h index 02726bc19ded6f..b8bccb9d09ebca 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_log.h @@ -107,7 +107,7 @@ void ngtcp2_log_tx_fr(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, void ngtcp2_log_rx_vn(ngtcp2_log *log, const ngtcp2_pkt_hd *hd, const uint32_t *sv, size_t nsv); -void ngtcp2_log_rx_sr(ngtcp2_log *log, const ngtcp2_pkt_stateless_reset *sr); +void ngtcp2_log_rx_sr(ngtcp2_log *log, const ngtcp2_pkt_stateless_reset2 *sr); void ngtcp2_log_remote_tp(ngtcp2_log *log, const ngtcp2_transport_params *params); diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_map.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_map.c index 6b332f6b58dbd8..3ad4b9f1ef0591 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_map.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_map.c @@ -77,10 +77,10 @@ int ngtcp2_map_each(const ngtcp2_map *map, int (*func)(void *data, void *ptr), /* Hasher from https://github.com/rust-lang/rustc-hash/blob/dc5c33f1283de2da64d8d7a06401d91aded03ad4/src/lib.rs to maximize the output's sensitivity to all input bits. */ -#define NGTCP2_MAP_HASHER 0xf1357aea2e62a9c5ull +#define NGTCP2_MAP_HASHER 0xF1357AEA2E62A9C5ULL /* 64-bit Fibonacci hashing constant, Golden Ratio constant, to get the high bits with the good distribution. */ -#define NGTCP2_MAP_FIBO 0x9e3779b97f4a7c15ull +#define NGTCP2_MAP_FIBO 0x9E3779B97F4A7C15ULL static size_t map_index(const ngtcp2_map *map, ngtcp2_map_key_type key) { key += map->seed; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_net.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_net.h index 103a2fb2d80714..35a807f9fed29f 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_net.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_net.h @@ -97,9 +97,9 @@ STIN uint32_t ngtcp2_htonl(uint32_t hostlong) { uint32_t res; unsigned char *p = (unsigned char *)&res; *p++ = (unsigned char)(hostlong >> 24); - *p++ = (hostlong >> 16) & 0xffu; - *p++ = (hostlong >> 8) & 0xffu; - *p = hostlong & 0xffu; + *p++ = (hostlong >> 16) & 0xFFU; + *p++ = (hostlong >> 8) & 0xFFU; + *p = hostlong & 0xFFU; return res; } @@ -107,7 +107,7 @@ STIN uint16_t ngtcp2_htons(uint16_t hostshort) { uint16_t res; unsigned char *p = (unsigned char *)&res; *p++ = (unsigned char)(hostshort >> 8); - *p = hostshort & 0xffu; + *p = hostshort & 0xFFU; return res; } diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_objalloc.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_objalloc.h index cf23de7b2b7f20..4b6df53857a5b8 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_objalloc.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_objalloc.h @@ -69,7 +69,7 @@ void ngtcp2_objalloc_clear(ngtcp2_objalloc *objalloc); inline static void ngtcp2_objalloc_##NAME##_init( \ ngtcp2_objalloc *objalloc, size_t nmemb, const ngtcp2_mem *mem) { \ ngtcp2_objalloc_init( \ - objalloc, ((sizeof(TYPE) + 0xfu) & ~(uintptr_t)0xfu) * nmemb, mem); \ + objalloc, ((sizeof(TYPE) + 0xFU) & ~(uintptr_t)0xFU) * nmemb, mem); \ } \ \ TYPE *ngtcp2_objalloc_##NAME##_get(ngtcp2_objalloc *objalloc); \ @@ -123,7 +123,7 @@ void ngtcp2_objalloc_clear(ngtcp2_objalloc *objalloc); inline static void ngtcp2_objalloc_##NAME##_init( \ ngtcp2_objalloc *objalloc, size_t nmemb, const ngtcp2_mem *mem) { \ ngtcp2_objalloc_init( \ - objalloc, ((sizeof(TYPE) + 0xfu) & ~(uintptr_t)0xfu) * nmemb, mem); \ + objalloc, ((sizeof(TYPE) + 0xFU) & ~(uintptr_t)0xFU) * nmemb, mem); \ } \ \ inline static TYPE *ngtcp2_objalloc_##NAME##_get( \ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pcg.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pcg.c index c8490467e43614..ddaf94a779ab36 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pcg.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pcg.c @@ -70,8 +70,8 @@ static uint32_t pcg_rotr_32(uint32_t value, unsigned int rot) { } static uint32_t pcg_output_xsh_rr_64_32(uint64_t state) { - return pcg_rotr_32((uint32_t)(((state >> 18u) ^ state) >> 27u), - (unsigned int)(state >> 59u)); + return pcg_rotr_32((uint32_t)(((state >> 18U) ^ state) >> 27U), + (unsigned int)(state >> 59U)); } uint32_t ngtcp2_pcg32_rand(ngtcp2_pcg32 *pcg) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.c index a63913f8af797a..f86e65118df7d8 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.c @@ -565,7 +565,7 @@ ngtcp2_ssize ngtcp2_frame_decoder_decode(ngtcp2_frame_decoder *frd, return ngtcp2_pkt_decode_stream_frame(&dest->stream, payload, payloadlen); } - /* For frame types > 0xff, use ngtcp2_get_uvarintlen and + /* For frame types > 0xFF, use ngtcp2_get_uvarintlen and ngtcp2_get_uvarint to get a frame type, and then switch over it. Verify that payloadlen >= ngtcp2_get_uvarintlen(payload) before calling ngtcp2_get_uvarint(payload). */ @@ -1208,8 +1208,7 @@ ngtcp2_ssize ngtcp2_pkt_decode_new_connection_id_frame( ++p; ngtcp2_cid_init(&dest->cid, p, cil); p += cil; - p = ngtcp2_get_bytes(dest->stateless_reset_token, p, - NGTCP2_STATELESS_RESET_TOKENLEN); + p = ngtcp2_get_bytes(dest->token.data, p, sizeof(dest->token.data)); assert((size_t)(p - payload) == len); @@ -1268,7 +1267,7 @@ ngtcp2_ssize ngtcp2_pkt_decode_path_challenge_frame(ngtcp2_path_challenge *dest, p = payload + 1; dest->type = NGTCP2_FRAME_PATH_CHALLENGE; - ngtcp2_cpymem(dest->data, p, sizeof(dest->data)); + ngtcp2_cpymem(dest->data.data, p, sizeof(dest->data.data)); p += sizeof(dest->data); assert((size_t)(p - payload) == len); @@ -1289,7 +1288,7 @@ ngtcp2_ssize ngtcp2_pkt_decode_path_response_frame(ngtcp2_path_response *dest, p = payload + 1; dest->type = NGTCP2_FRAME_PATH_RESPONSE; - ngtcp2_cpymem(dest->data, p, sizeof(dest->data)); + ngtcp2_cpymem(dest->data.data, p, sizeof(dest->data.data)); p += sizeof(dest->data); assert((size_t)(p - payload) == len); @@ -1883,7 +1882,7 @@ ngtcp2_pkt_encode_new_connection_id_frame(uint8_t *out, size_t outlen, const ngtcp2_new_connection_id *fr) { size_t len = 1 + ngtcp2_put_uvarintlen(fr->seq) + ngtcp2_put_uvarintlen(fr->retire_prior_to) + 1 + - fr->cid.datalen + NGTCP2_STATELESS_RESET_TOKENLEN; + fr->cid.datalen + sizeof(fr->token.data); uint8_t *p; if (outlen < len) { @@ -1897,8 +1896,7 @@ ngtcp2_pkt_encode_new_connection_id_frame(uint8_t *out, size_t outlen, p = ngtcp2_put_uvarint(p, fr->retire_prior_to); *p++ = (uint8_t)fr->cid.datalen; p = ngtcp2_cpymem(p, fr->cid.data, fr->cid.datalen); - p = ngtcp2_cpymem(p, fr->stateless_reset_token, - NGTCP2_STATELESS_RESET_TOKENLEN); + p = ngtcp2_cpymem(p, fr->token.data, sizeof(fr->token.data)); assert((size_t)(p - out) == len); @@ -1940,7 +1938,7 @@ ngtcp2_pkt_encode_path_challenge_frame(uint8_t *out, size_t outlen, p = out; *p++ = NGTCP2_FRAME_PATH_CHALLENGE; - p = ngtcp2_cpymem(p, fr->data, sizeof(fr->data)); + p = ngtcp2_cpymem(p, fr->data.data, sizeof(fr->data.data)); assert((size_t)(p - out) == len); @@ -1960,7 +1958,7 @@ ngtcp2_pkt_encode_path_response_frame(uint8_t *out, size_t outlen, p = out; *p++ = NGTCP2_FRAME_PATH_RESPONSE; - p = ngtcp2_cpymem(p, fr->data, sizeof(fr->data)); + p = ngtcp2_cpymem(p, fr->data.data, sizeof(fr->data.data)); assert((size_t)(p - out) == len); @@ -2116,7 +2114,7 @@ ngtcp2_ssize ngtcp2_pkt_write_version_negotiation( p = dest; - *p++ = 0xc0 | unused_random; + *p++ = 0xC0 | unused_random; p = ngtcp2_put_uint32be(p, 0); *p++ = (uint8_t)dcidlen; @@ -2153,20 +2151,20 @@ size_t ngtcp2_pkt_decode_version_negotiation(uint32_t *dest, return payloadlen / sizeof(uint32_t); } -int ngtcp2_pkt_decode_stateless_reset(ngtcp2_pkt_stateless_reset *sr, +int ngtcp2_pkt_decode_stateless_reset(ngtcp2_pkt_stateless_reset2 *sr, const uint8_t *payload, size_t payloadlen) { const uint8_t *p = payload; if (payloadlen < - NGTCP2_MIN_STATELESS_RESET_RANDLEN + NGTCP2_STATELESS_RESET_TOKENLEN) { + NGTCP2_MIN_STATELESS_RESET_RANDLEN + sizeof(sr->token.data)) { return NGTCP2_ERR_INVALID_ARGUMENT; } sr->rand = p; - sr->randlen = payloadlen - NGTCP2_STATELESS_RESET_TOKENLEN; + sr->randlen = payloadlen - sizeof(sr->token.data); p += sr->randlen; - memcpy(sr->stateless_reset_token, p, NGTCP2_STATELESS_RESET_TOKENLEN); + memcpy(sr->token.data, p, sizeof(sr->token.data)); return 0; } @@ -2245,10 +2243,21 @@ ngtcp2_ssize ngtcp2_pkt_write_stateless_reset(uint8_t *dest, size_t destlen, const uint8_t *stateless_reset_token, const uint8_t *rand, size_t randlen) { + ngtcp2_stateless_reset_token token; + + memcpy(token.data, stateless_reset_token, sizeof(token.data)); + + return ngtcp2_pkt_write_stateless_reset2(dest, destlen, &token, rand, + randlen); +} + +ngtcp2_ssize +ngtcp2_pkt_write_stateless_reset2(uint8_t *dest, size_t destlen, + const ngtcp2_stateless_reset_token *token, + const uint8_t *rand, size_t randlen) { uint8_t *p; - if (destlen < - NGTCP2_MIN_STATELESS_RESET_RANDLEN + NGTCP2_STATELESS_RESET_TOKENLEN) { + if (destlen < NGTCP2_MIN_STATELESS_RESET_RANDLEN + sizeof(token->data)) { return NGTCP2_ERR_NOBUF; } @@ -2258,11 +2267,11 @@ ngtcp2_pkt_write_stateless_reset(uint8_t *dest, size_t destlen, p = dest; - randlen = ngtcp2_min_size(destlen - NGTCP2_STATELESS_RESET_TOKENLEN, randlen); + randlen = ngtcp2_min_size(destlen - sizeof(token->data), randlen); p = ngtcp2_cpymem(p, rand, randlen); - p = ngtcp2_cpymem(p, stateless_reset_token, NGTCP2_STATELESS_RESET_TOKENLEN); - *dest = (uint8_t)((*dest & 0x7fu) | 0x40u); + p = ngtcp2_cpymem(p, token->data, sizeof(token->data)); + *dest = (uint8_t)((*dest & 0x3FU) | 0x40U); return p - dest; } @@ -2356,7 +2365,7 @@ ngtcp2_ssize ngtcp2_pkt_encode_pseudo_retry( return NGTCP2_ERR_NOBUF; } - *p &= 0xf0; + *p &= 0xF0; *p |= unused; p += nwrite; @@ -2430,7 +2439,7 @@ size_t ngtcp2_pkt_stream_max_datalen(int64_t stream_id, uint64_t offset, left -= n; if (left > 8 + 1073741823 && len > 1073741823) { - len = ngtcp2_min_uint64(len, 4611686018427387903lu); + len = ngtcp2_min_uint64(len, 4611686018427387903UL); return (size_t)ngtcp2_min_uint64(len, (uint64_t)(left - 8)); } @@ -2461,7 +2470,7 @@ size_t ngtcp2_pkt_crypto_max_datalen(uint64_t offset, size_t len, size_t left) { if (left > 8 + 1073741823 && len > 1073741823) { #if SIZE_MAX == UINT64_MAX - len = ngtcp2_min_size(len, 4611686018427387903lu); + len = ngtcp2_min_size(len, 4611686018427387903UL); #endif /* SIZE_MAX == UINT64_MAX */ return ngtcp2_min_size(len, left - 8); } @@ -2869,3 +2878,8 @@ size_t ngtcp2_pkt_remove_vec_partial(ngtcp2_vec *removed_data, ngtcp2_vec *data, return datacnt + 1; } + +int ngtcp2_stateless_reset_token_eq(const ngtcp2_stateless_reset_token *a, + const ngtcp2_stateless_reset_token *b) { + return memcmp(a->data, b->data, sizeof(a->data)) == 0; +} diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.h index abf13693b916e7..bfdb065b74ca91 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pkt.h @@ -38,14 +38,14 @@ /* Long header specific macros */ #define NGTCP2_LONG_TYPE_MASK 0x30 -#define NGTCP2_LONG_RESERVED_BIT_MASK 0x0c +#define NGTCP2_LONG_RESERVED_BIT_MASK 0x0C /* Short header specific macros */ #define NGTCP2_SHORT_RESERVED_BIT_MASK 0x18 #define NGTCP2_SHORT_KEY_PHASE_BIT 0x04 /* NGTCP2_SR_TYPE is a Type field of Stateless Reset. */ -#define NGTCP2_SR_TYPE 0x1f +#define NGTCP2_SR_TYPE 0x1F /* NGTCP2_MIN_LONG_HEADERLEN is the minimum length of long header. That is (1|1|TT|RR|PP)<1> + VERSION<4> + DCIL<1> + SCIL<1> + @@ -78,23 +78,23 @@ /* NGTCP2_MAX_SERVER_STREAM_ID_BIDI is the maximum bidirectional server stream ID. */ -#define NGTCP2_MAX_SERVER_STREAM_ID_BIDI ((int64_t)0x3ffffffffffffffdll) +#define NGTCP2_MAX_SERVER_STREAM_ID_BIDI ((int64_t)0x3FFFFFFFFFFFFFFDLL) /* NGTCP2_MAX_CLIENT_STREAM_ID_BIDI is the maximum bidirectional client stream ID. */ -#define NGTCP2_MAX_CLIENT_STREAM_ID_BIDI ((int64_t)0x3ffffffffffffffcll) +#define NGTCP2_MAX_CLIENT_STREAM_ID_BIDI ((int64_t)0x3FFFFFFFFFFFFFFCLL) /* NGTCP2_MAX_SERVER_STREAM_ID_UNI is the maximum unidirectional server stream ID. */ -#define NGTCP2_MAX_SERVER_STREAM_ID_UNI ((int64_t)0x3fffffffffffffffll) +#define NGTCP2_MAX_SERVER_STREAM_ID_UNI ((int64_t)0x3FFFFFFFFFFFFFFFLL) /* NGTCP2_MAX_CLIENT_STREAM_ID_UNI is the maximum unidirectional client stream ID. */ -#define NGTCP2_MAX_CLIENT_STREAM_ID_UNI ((int64_t)0x3ffffffffffffffell) +#define NGTCP2_MAX_CLIENT_STREAM_ID_UNI ((int64_t)0x3FFFFFFFFFFFFFFELL) /* NGTCP2_MAX_NUM_ACK_RANGES is the maximum number of Additional ACK ranges which this library can create, or decode. */ #define NGTCP2_MAX_ACK_RANGES 32 /* NGTCP2_MAX_PKT_NUM is the maximum packet number. */ -#define NGTCP2_MAX_PKT_NUM ((int64_t)((1ll << 62) - 1)) +#define NGTCP2_MAX_PKT_NUM ((int64_t)((1LL << 62) - 1)) /* NGTCP2_MIN_PKT_EXPANDLEN is the minimum packet size expansion to hide/trigger Stateless Reset. */ @@ -172,11 +172,11 @@ typedef struct ngtcp2_pkt_retry { #define NGTCP2_FRAME_STREAMS_BLOCKED_UNI 0x17 #define NGTCP2_FRAME_NEW_CONNECTION_ID 0x18 #define NGTCP2_FRAME_RETIRE_CONNECTION_ID 0x19 -#define NGTCP2_FRAME_PATH_CHALLENGE 0x1a -#define NGTCP2_FRAME_PATH_RESPONSE 0x1b -#define NGTCP2_FRAME_CONNECTION_CLOSE 0x1c -#define NGTCP2_FRAME_CONNECTION_CLOSE_APP 0x1d -#define NGTCP2_FRAME_HANDSHAKE_DONE 0x1e +#define NGTCP2_FRAME_PATH_CHALLENGE 0x1A +#define NGTCP2_FRAME_PATH_RESPONSE 0x1B +#define NGTCP2_FRAME_CONNECTION_CLOSE 0x1C +#define NGTCP2_FRAME_CONNECTION_CLOSE_APP 0x1D +#define NGTCP2_FRAME_HANDSHAKE_DONE 0x1E #define NGTCP2_FRAME_DATAGRAM 0x30 #define NGTCP2_FRAME_DATAGRAM_LEN 0x31 @@ -300,7 +300,7 @@ typedef struct ngtcp2_new_connection_id { uint64_t seq; uint64_t retire_prior_to; ngtcp2_cid cid; - uint8_t stateless_reset_token[NGTCP2_STATELESS_RESET_TOKENLEN]; + ngtcp2_stateless_reset_token token; } ngtcp2_new_connection_id; typedef struct ngtcp2_stop_sending { @@ -311,12 +311,12 @@ typedef struct ngtcp2_stop_sending { typedef struct ngtcp2_path_challenge { uint64_t type; - uint8_t data[NGTCP2_PATH_CHALLENGE_DATALEN]; + ngtcp2_path_challenge_data data; } ngtcp2_path_challenge; typedef struct ngtcp2_path_response { uint64_t type; - uint8_t data[NGTCP2_PATH_CHALLENGE_DATALEN]; + ngtcp2_path_challenge_data data; } ngtcp2_path_response; typedef struct ngtcp2_new_token { @@ -514,7 +514,7 @@ size_t ngtcp2_pkt_decode_version_negotiation(uint32_t *dest, * NGTCP2_ERR_INVALID_ARGUMENT * Payloadlen is too short. */ -int ngtcp2_pkt_decode_stateless_reset(ngtcp2_pkt_stateless_reset *sr, +int ngtcp2_pkt_decode_stateless_reset(ngtcp2_pkt_stateless_reset2 *sr, const uint8_t *payload, size_t payloadlen); @@ -1323,4 +1323,11 @@ size_t ngtcp2_pkt_remove_vec_partial(ngtcp2_vec *removed_data, ngtcp2_vec *data, size_t datacnt, uint64_t *offsets, ngtcp2_pcg32 *pcg, const ngtcp2_vec *part); +/* + * ngtcp2_stateless_reset_token_eq returns nonzero if |a| and |b| + * share the same token. + */ +int ngtcp2_stateless_reset_token_eq(const ngtcp2_stateless_reset_token *a, + const ngtcp2_stateless_reset_token *b); + #endif /* !defined(NGTCP2_PKT_H) */ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.c index 4d193125ae8e89..3054732db047e6 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ppe.c @@ -154,9 +154,9 @@ ngtcp2_ssize ngtcp2_ppe_final(ngtcp2_ppe *ppe, const uint8_t **ppkt) { p = buf->begin; if (*p & NGTCP2_HEADER_FORM_BIT) { - *p = (uint8_t)(*p ^ (mask[0] & 0x0f)); + *p = (uint8_t)(*p ^ (mask[0] & 0x0F)); } else { - *p = (uint8_t)(*p ^ (mask[0] & 0x1f)); + *p = (uint8_t)(*p ^ (mask[0] & 0x1F)); } p = buf->begin + ppe->pkt_num_offset; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.c index 471f84c76440fe..972c27f395a28d 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.c @@ -31,12 +31,16 @@ #include "ngtcp2_log.h" #include "ngtcp2_macro.h" #include "ngtcp2_addr.h" +#include "ngtcp2_str.h" -void ngtcp2_pv_entry_init(ngtcp2_pv_entry *pvent, const uint8_t *data, +void ngtcp2_pv_entry_init(ngtcp2_pv_entry *pvent, + const ngtcp2_path_challenge_data *data, ngtcp2_tstamp expiry, uint8_t flags) { - memcpy(pvent->data, data, sizeof(pvent->data)); - pvent->expiry = expiry; - pvent->flags = flags; + *pvent = (ngtcp2_pv_entry){ + .expiry = expiry, + .flags = flags, + .data = *data, + }; } int ngtcp2_pv_new(ngtcp2_pv **ppv, const ngtcp2_dcid *dcid, @@ -70,7 +74,7 @@ void ngtcp2_pv_del(ngtcp2_pv *pv) { ngtcp2_mem_free(pv->mem, pv); } -void ngtcp2_pv_add_entry(ngtcp2_pv *pv, const uint8_t *data, +void ngtcp2_pv_add_entry(ngtcp2_pv *pv, const ngtcp2_path_challenge_data *data, ngtcp2_tstamp expiry, uint8_t flags, ngtcp2_tstamp ts) { ngtcp2_pv_entry *ent; @@ -88,7 +92,8 @@ void ngtcp2_pv_add_entry(ngtcp2_pv *pv, const uint8_t *data, --pv->probe_pkt_left; } -int ngtcp2_pv_validate(ngtcp2_pv *pv, uint8_t *pflags, const uint8_t *data) { +int ngtcp2_pv_validate(ngtcp2_pv *pv, uint8_t *pflags, + const ngtcp2_path_challenge_data *data) { size_t len = ngtcp2_ringbuf_len(&pv->ents.rb); size_t i; ngtcp2_pv_entry *ent; @@ -99,7 +104,7 @@ int ngtcp2_pv_validate(ngtcp2_pv *pv, uint8_t *pflags, const uint8_t *data) { for (i = 0; i < len; ++i) { ent = ngtcp2_ringbuf_get(&pv->ents.rb, i); - if (memcmp(ent->data, data, sizeof(ent->data)) == 0) { + if (ngtcp2_cmemeq(ent->data.data, data->data, sizeof(ent->data.data))) { *pflags = ent->flags; ngtcp2_log_info(pv->log, NGTCP2_LOG_EVENT_PTV, "path has been validated"); return 0; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.h index b62ab204b216a5..28bdf722b2047f 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_pv.h @@ -46,10 +46,10 @@ typedef struct ngtcp2_log ngtcp2_log; typedef struct ngtcp2_frame_chain ngtcp2_frame_chain; /* NGTCP2_PV_ENTRY_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_PV_ENTRY_FLAG_NONE 0x00u +#define NGTCP2_PV_ENTRY_FLAG_NONE 0x00U /* NGTCP2_PV_ENTRY_FLAG_UNDERSIZED indicates that UDP datagram which contains PATH_CHALLENGE is undersized (< 1200 bytes) */ -#define NGTCP2_PV_ENTRY_FLAG_UNDERSIZED 0x01u +#define NGTCP2_PV_ENTRY_FLAG_UNDERSIZED 0x01U typedef struct ngtcp2_pv_entry { /* expiry is the timestamp when this PATH_CHALLENGE expires. */ @@ -57,30 +57,31 @@ typedef struct ngtcp2_pv_entry { /* flags is zero or more of NGTCP2_PV_ENTRY_FLAG_*. */ uint8_t flags; /* data is a byte string included in PATH_CHALLENGE. */ - uint8_t data[NGTCP2_PATH_CHALLENGE_DATALEN]; + ngtcp2_path_challenge_data data; } ngtcp2_pv_entry; -void ngtcp2_pv_entry_init(ngtcp2_pv_entry *pvent, const uint8_t *data, +void ngtcp2_pv_entry_init(ngtcp2_pv_entry *pvent, + const ngtcp2_path_challenge_data *data, ngtcp2_tstamp expiry, uint8_t flags); /* NGTCP2_PV_FLAG_NONE indicates no flag is set. */ -#define NGTCP2_PV_FLAG_NONE 0x00u +#define NGTCP2_PV_FLAG_NONE 0x00U /* NGTCP2_PV_FLAG_DONT_CARE indicates that the outcome of path validation should be ignored entirely. */ -#define NGTCP2_PV_FLAG_DONT_CARE 0x01u +#define NGTCP2_PV_FLAG_DONT_CARE 0x01U /* NGTCP2_PV_FLAG_CANCEL_TIMER indicates that the expiry timer is cancelled. */ -#define NGTCP2_PV_FLAG_CANCEL_TIMER 0x02u +#define NGTCP2_PV_FLAG_CANCEL_TIMER 0x02U /* NGTCP2_PV_FLAG_FALLBACK_PRESENT indicates that a fallback Destination Connection ID and PTO are available in ngtcp2_pv. If path validation fails, then fallback to them. If path validation succeeds, the fallback Destination Connection ID is retired if it is not zero length, and does not equal to the current Destination Connection ID. */ -#define NGTCP2_PV_FLAG_FALLBACK_PRESENT 0x04u +#define NGTCP2_PV_FLAG_FALLBACK_PRESENT 0x04U /* NGTCP2_PV_FLAG_PREFERRED_ADDR indicates that client is migrating to server's preferred address. This flag is only used by client. */ -#define NGTCP2_PV_FLAG_PREFERRED_ADDR 0x10u +#define NGTCP2_PV_FLAG_PREFERRED_ADDR 0x10U typedef struct ngtcp2_pv ngtcp2_pv; @@ -141,7 +142,7 @@ void ngtcp2_pv_del(ngtcp2_pv *pv); * ngtcp2_pv_add_entry adds new entry with |data|. |expiry| is the * expiry time of the entry. */ -void ngtcp2_pv_add_entry(ngtcp2_pv *pv, const uint8_t *data, +void ngtcp2_pv_add_entry(ngtcp2_pv *pv, const ngtcp2_path_challenge_data *data, ngtcp2_tstamp expiry, uint8_t flags, ngtcp2_tstamp ts); /* @@ -164,7 +165,8 @@ int ngtcp2_pv_full(ngtcp2_pv *pv); * NGTCP2_ERR_INVALID_ARGUMENT * |pv| does not have an entry which has |data| and |path| */ -int ngtcp2_pv_validate(ngtcp2_pv *pv, uint8_t *pflags, const uint8_t *data); +int ngtcp2_pv_validate(ngtcp2_pv *pv, uint8_t *pflags, + const ngtcp2_path_challenge_data *data); /* * ngtcp2_pv_handle_entry_expiry checks expiry of existing entries. diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.c index c10e2ff6700451..ed08eb1b5ac2b4 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.c @@ -194,7 +194,7 @@ void ngtcp2_qlog_start(ngtcp2_qlog *qlog, const ngtcp2_cid *odcid, int server) { } p = write_verbatim( - p, "\x1e{\"qlog_format\":\"JSON-SEQ\",\"qlog_version\":\"0.3\","); + p, "\x1E{\"qlog_format\":\"JSON-SEQ\",\"qlog_version\":\"0.3\","); p = write_trace(p, server, odcid); p = write_verbatim(p, "}\n"); @@ -547,8 +547,7 @@ write_new_connection_id_frame(uint8_t *p, const ngtcp2_new_connection_id *fr) { *p++ = ','; p = write_pair_cid(p, "connection_id", &fr->cid); p = write_verbatim(p, ",\"stateless_reset_token\":{"); - p = write_pair_hex(p, "data", fr->stateless_reset_token, - sizeof(fr->stateless_reset_token)); + p = write_pair_hex(p, "data", fr->token.data, sizeof(fr->token.data)); *p++ = '}'; *p++ = '}'; @@ -578,7 +577,7 @@ static uint8_t *write_path_challenge_frame(uint8_t *p, #define NGTCP2_QLOG_PATH_CHALLENGE_FRAME_OVERHEAD 57 p = write_verbatim(p, "{\"frame_type\":\"path_challenge\","); - p = write_pair_hex(p, "data", fr->data, sizeof(fr->data)); + p = write_pair_hex(p, "data", fr->data.data, sizeof(fr->data.data)); *p++ = '}'; return p; @@ -592,7 +591,7 @@ static uint8_t *write_path_response_frame(uint8_t *p, #define NGTCP2_QLOG_PATH_RESPONSE_FRAME_OVERHEAD 56 p = write_verbatim(p, "{\"frame_type\":\"path_response\","); - p = write_pair_hex(p, "data", fr->data, sizeof(fr->data)); + p = write_pair_hex(p, "data", fr->data.data, sizeof(fr->data.data)); *p++ = '}'; return p; @@ -662,7 +661,7 @@ static void qlog_pkt_write_start(ngtcp2_qlog *qlog, int sent) { ngtcp2_buf_reset(&qlog->buf); p = qlog->buf.last; - *p++ = '\x1e'; + *p++ = '\x1E'; *p++ = '{'; p = qlog_write_time(qlog, p); p = write_verbatim(p, ",\"name\":"); @@ -913,7 +912,7 @@ void ngtcp2_qlog_parameters_set_transport_params( return; } - *p++ = '\x1e'; + *p++ = '\x1E'; *p++ = '{'; p = qlog_write_time(qlog, p); p = write_verbatim( @@ -1029,7 +1028,7 @@ void ngtcp2_qlog_metrics_updated(ngtcp2_qlog *qlog, return; } - *p++ = '\x1e'; + *p++ = '\x1E'; *p++ = '{'; p = qlog_write_time(qlog, p); p = write_verbatim(p, ",\"name\":\"recovery:metrics_updated\",\"data\":{"); @@ -1068,7 +1067,7 @@ void ngtcp2_qlog_pkt_lost(ngtcp2_qlog *qlog, ngtcp2_rtb_entry *ent) { return; } - *p++ = '\x1e'; + *p++ = '\x1E'; *p++ = '{'; p = qlog_write_time(qlog, p); p = write_verbatim( @@ -1096,7 +1095,7 @@ void ngtcp2_qlog_retry_pkt_received(ngtcp2_qlog *qlog, const ngtcp2_pkt_hd *hd, ngtcp2_buf_init(&buf, rawbuf, sizeof(rawbuf)); - *buf.last++ = '\x1e'; + *buf.last++ = '\x1E'; *buf.last++ = '{'; buf.last = qlog_write_time(qlog, buf.last); buf.last = write_verbatim( @@ -1118,7 +1117,7 @@ void ngtcp2_qlog_retry_pkt_received(ngtcp2_qlog *qlog, const ngtcp2_pkt_hd *hd, } void ngtcp2_qlog_stateless_reset_pkt_received( - ngtcp2_qlog *qlog, const ngtcp2_pkt_stateless_reset *sr) { + ngtcp2_qlog *qlog, const ngtcp2_pkt_stateless_reset2 *sr) { uint8_t buf[256]; uint8_t *p = buf; @@ -1126,7 +1125,7 @@ void ngtcp2_qlog_stateless_reset_pkt_received( return; } - *p++ = '\x1e'; + *p++ = '\x1E'; *p++ = '{'; p = qlog_write_time(qlog, p); p = write_verbatim( @@ -1135,8 +1134,8 @@ void ngtcp2_qlog_stateless_reset_pkt_received( .type = NGTCP2_PKT_STATELESS_RESET, }); *p++ = ','; - p = write_pair_hex(p, "stateless_reset_token", sr->stateless_reset_token, - NGTCP2_STATELESS_RESET_TOKENLEN); + p = write_pair_hex(p, "stateless_reset_token", sr->token.data, + sizeof(sr->token.data)); p = write_verbatim(p, "}}\n"); qlog->write(qlog->user_data, NGTCP2_QLOG_WRITE_FLAG_NONE, buf, @@ -1158,7 +1157,7 @@ void ngtcp2_qlog_version_negotiation_pkt_received(ngtcp2_qlog *qlog, ngtcp2_buf_init(&buf, rawbuf, sizeof(rawbuf)); - *buf.last++ = '\x1e'; + *buf.last++ = '\x1E'; *buf.last++ = '{'; buf.last = qlog_write_time(qlog, buf.last); buf.last = write_verbatim( diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.h index d2a5f1038c0f42..17668a50233f4d 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_qlog.h @@ -147,7 +147,7 @@ void ngtcp2_qlog_retry_pkt_received(ngtcp2_qlog *qlog, const ngtcp2_pkt_hd *hd, * event for a received Stateless Reset packet. */ void ngtcp2_qlog_stateless_reset_pkt_received( - ngtcp2_qlog *qlog, const ngtcp2_pkt_stateless_reset *sr); + ngtcp2_qlog *qlog, const ngtcp2_pkt_stateless_reset2 *sr); /* * ngtcp2_qlog_version_negotiation_pkt_received writes packet_received diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.c index 88ec585e69d185..67aaa0493028f9 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.c @@ -200,10 +200,10 @@ static size_t rtb_on_remove(ngtcp2_rtb *rtb, ngtcp2_rtb_entry *ent, } /* NGTCP2_RECLAIM_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_RECLAIM_FLAG_NONE 0x00u +#define NGTCP2_RECLAIM_FLAG_NONE 0x00U /* NGTCP2_RECLAIM_FLAG_ON_LOSS indicates that frames are reclaimed because of the packet loss.*/ -#define NGTCP2_RECLAIM_FLAG_ON_LOSS 0x01u +#define NGTCP2_RECLAIM_FLAG_ON_LOSS 0x01U /* * rtb_reclaim_frame copies and queues frames included in |ent| for diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.h index 14684a458a60e6..62bcb381fa15bb 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rtb.h @@ -48,41 +48,41 @@ typedef struct ngtcp2_conn_stat ngtcp2_conn_stat; typedef struct ngtcp2_frame_chain ngtcp2_frame_chain; /* NGTCP2_RTB_ENTRY_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_RTB_ENTRY_FLAG_NONE 0x00u +#define NGTCP2_RTB_ENTRY_FLAG_NONE 0x00U /* NGTCP2_RTB_ENTRY_FLAG_PROBE indicates that the entry includes a probe packet. */ -#define NGTCP2_RTB_ENTRY_FLAG_PROBE 0x01u +#define NGTCP2_RTB_ENTRY_FLAG_PROBE 0x01U /* NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE indicates that the entry includes a frame which must be retransmitted until it is acknowledged. In most cases, this flag is used along with NGTCP2_RTB_ENTRY_FLAG_ACK_ELICITING and NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING. */ -#define NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE 0x02u +#define NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE 0x02U /* NGTCP2_RTB_ENTRY_FLAG_ACK_ELICITING indicates that the entry elicits acknowledgement. */ -#define NGTCP2_RTB_ENTRY_FLAG_ACK_ELICITING 0x04u +#define NGTCP2_RTB_ENTRY_FLAG_ACK_ELICITING 0x04U /* NGTCP2_RTB_ENTRY_FLAG_PTO_RECLAIMED indicates that the packet has been reclaimed on PTO. It is not marked lost yet and still consumes congestion window. */ -#define NGTCP2_RTB_ENTRY_FLAG_PTO_RECLAIMED 0x08u +#define NGTCP2_RTB_ENTRY_FLAG_PTO_RECLAIMED 0x08U /* NGTCP2_RTB_ENTRY_FLAG_LOST_RETRANSMITTED indicates that the entry has been marked lost and, optionally, scheduled to retransmit. */ -#define NGTCP2_RTB_ENTRY_FLAG_LOST_RETRANSMITTED 0x10u +#define NGTCP2_RTB_ENTRY_FLAG_LOST_RETRANSMITTED 0x10U /* NGTCP2_RTB_ENTRY_FLAG_ECN indicates that the entry is included in a UDP datagram with ECN marking. */ -#define NGTCP2_RTB_ENTRY_FLAG_ECN 0x20u +#define NGTCP2_RTB_ENTRY_FLAG_ECN 0x20U /* NGTCP2_RTB_ENTRY_FLAG_DATAGRAM indicates that the entry includes DATAGRAM frame. */ -#define NGTCP2_RTB_ENTRY_FLAG_DATAGRAM 0x40u +#define NGTCP2_RTB_ENTRY_FLAG_DATAGRAM 0x40U /* NGTCP2_RTB_ENTRY_FLAG_PMTUD_PROBE indicates that the entry includes a PMTUD probe packet. */ -#define NGTCP2_RTB_ENTRY_FLAG_PMTUD_PROBE 0x80u +#define NGTCP2_RTB_ENTRY_FLAG_PMTUD_PROBE 0x80U /* NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING indicates that the entry includes a packet which elicits PTO probe packets. */ -#define NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING 0x100u +#define NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING 0x100U /* NGTCP2_RTB_ENTRY_FLAG_SKIP indicates that the entry has the skipped packet number. */ -#define NGTCP2_RTB_ENTRY_FLAG_SKIP 0x200u +#define NGTCP2_RTB_ENTRY_FLAG_SKIP 0x200U typedef struct ngtcp2_rtb_entry ngtcp2_rtb_entry; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_str.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_str.c index 1ae0f10d91787a..2726571a504070 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_str.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_str.c @@ -50,7 +50,7 @@ uint8_t *ngtcp2_encode_hex(uint8_t *dest, const uint8_t *data, size_t len) { for (i = 0; i < len; ++i) { *dest++ = (uint8_t)LOWER_XDIGITS[data[i] >> 4]; - *dest++ = (uint8_t)LOWER_XDIGITS[data[i] & 0xf]; + *dest++ = (uint8_t)LOWER_XDIGITS[data[i] & 0xF]; } return dest; @@ -72,7 +72,7 @@ char *ngtcp2_encode_printable_ascii_cstr(char *dest, const uint8_t *data, for (i = 0; i < len; ++i) { c = data[i]; - if (0x20 <= c && c <= 0x7e) { + if (0x20 <= c && c <= 0x7E) { *p++ = (char)c; } else { *p++ = '.'; @@ -116,7 +116,7 @@ static char *write_hex_zsup(char *dest, const uint8_t *data, size_t len) { break; } - d &= 0xf; + d &= 0xF; if (d) { *p++ = LOWER_XDIGITS[d]; @@ -133,7 +133,7 @@ static char *write_hex_zsup(char *dest, const uint8_t *data, size_t len) { for (; i < len; ++i) { d = data[i]; *p++ = LOWER_XDIGITS[d >> 4]; - *p++ = LOWER_XDIGITS[d & 0xf]; + *p++ = LOWER_XDIGITS[d & 0xF]; } return p; @@ -235,7 +235,7 @@ static int countl_zero(uint64_t x) { }; int n = 0; - if (x >= 1ull << 32) { + if (x >= 1ULL << 32) { x >>= 32; n += 32; } @@ -263,25 +263,25 @@ static int countl_zero(uint64_t x) { */ static size_t count_digit(uint64_t x) { static const uint64_t count_digit_tbl[] = { - 9ull, - 99ull, - 999ull, - 9999ull, - 99999ull, - 999999ull, - 9999999ull, - 99999999ull, - 999999999ull, - 9999999999ull, - 99999999999ull, - 999999999999ull, - 9999999999999ull, - 99999999999999ull, - 999999999999999ull, - 9999999999999999ull, - 99999999999999999ull, - 999999999999999999ull, - 9999999999999999999ull, + 9ULL, + 99ULL, + 999ULL, + 9999ULL, + 99999ULL, + 999999ULL, + 9999999ULL, + 99999999ULL, + 999999999ULL, + 9999999999ULL, + 99999999999ULL, + 999999999999ULL, + 9999999999999ULL, + 99999999999999ULL, + 999999999999999ULL, + 9999999999999999ULL, + 99999999999999999ULL, + 999999999999999999ULL, + 9999999999999999999ULL, }; size_t y = (size_t)(19 * (63 - countl_zero(x | 1)) >> 6); diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_strm.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_strm.h index fb86bd1c23d6e5..0d5d8a63a62c62 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_strm.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_strm.h @@ -41,54 +41,54 @@ typedef struct ngtcp2_frame_chain ngtcp2_frame_chain; /* NGTCP2_STRM_FLAG_NONE indicates that no flag is set. */ -#define NGTCP2_STRM_FLAG_NONE 0x00u +#define NGTCP2_STRM_FLAG_NONE 0x00U /* NGTCP2_STRM_FLAG_SHUT_RD indicates that further reception of stream data is not allowed. */ -#define NGTCP2_STRM_FLAG_SHUT_RD 0x01u +#define NGTCP2_STRM_FLAG_SHUT_RD 0x01U /* NGTCP2_STRM_FLAG_SHUT_WR indicates that further transmission of stream data is not allowed. */ -#define NGTCP2_STRM_FLAG_SHUT_WR 0x02u +#define NGTCP2_STRM_FLAG_SHUT_WR 0x02U #define NGTCP2_STRM_FLAG_SHUT_RDWR \ (NGTCP2_STRM_FLAG_SHUT_RD | NGTCP2_STRM_FLAG_SHUT_WR) /* NGTCP2_STRM_FLAG_RESET_STREAM indicates that RESET_STREAM is sent from the local endpoint. In this case, NGTCP2_STRM_FLAG_SHUT_WR is also set. */ -#define NGTCP2_STRM_FLAG_RESET_STREAM 0x04u +#define NGTCP2_STRM_FLAG_RESET_STREAM 0x04U /* NGTCP2_STRM_FLAG_RESET_STREAM_RECVED indicates that RESET_STREAM is received from the remote endpoint. In this case, NGTCP2_STRM_FLAG_SHUT_RD is also set. */ -#define NGTCP2_STRM_FLAG_RESET_STREAM_RECVED 0x08u +#define NGTCP2_STRM_FLAG_RESET_STREAM_RECVED 0x08U /* NGTCP2_STRM_FLAG_STOP_SENDING indicates that STOP_SENDING is sent from the local endpoint. */ -#define NGTCP2_STRM_FLAG_STOP_SENDING 0x10u +#define NGTCP2_STRM_FLAG_STOP_SENDING 0x10U /* NGTCP2_STRM_FLAG_RESET_STREAM_ACKED indicates that the outgoing RESET_STREAM is acknowledged by peer. */ -#define NGTCP2_STRM_FLAG_RESET_STREAM_ACKED 0x20u +#define NGTCP2_STRM_FLAG_RESET_STREAM_ACKED 0x20U /* NGTCP2_STRM_FLAG_FIN_ACKED indicates that a STREAM with FIN bit set is acknowledged by a remote endpoint. */ -#define NGTCP2_STRM_FLAG_FIN_ACKED 0x40u +#define NGTCP2_STRM_FLAG_FIN_ACKED 0x40U /* NGTCP2_STRM_FLAG_ANY_ACKED indicates that any portion of stream data, including 0 length segment, is acknowledged. */ -#define NGTCP2_STRM_FLAG_ANY_ACKED 0x80u +#define NGTCP2_STRM_FLAG_ANY_ACKED 0x80U /* NGTCP2_STRM_FLAG_APP_ERROR_CODE_SET indicates that app_error_code field is set. This resolves the ambiguity that the initial app_error_code value 0 might be a proper application error code. In this case, without this flag, we are unable to distinguish assigned value from unassigned one. */ -#define NGTCP2_STRM_FLAG_APP_ERROR_CODE_SET 0x100u +#define NGTCP2_STRM_FLAG_APP_ERROR_CODE_SET 0x100U /* NGTCP2_STRM_FLAG_SEND_STOP_SENDING is set when STOP_SENDING frame should be sent. */ -#define NGTCP2_STRM_FLAG_SEND_STOP_SENDING 0x200u +#define NGTCP2_STRM_FLAG_SEND_STOP_SENDING 0x200U /* NGTCP2_STRM_FLAG_SEND_RESET_STREAM is set when RESET_STREAM frame should be sent. */ -#define NGTCP2_STRM_FLAG_SEND_RESET_STREAM 0x400u +#define NGTCP2_STRM_FLAG_SEND_RESET_STREAM 0x400U /* NGTCP2_STRM_FLAG_STOP_SENDING_RECVED indicates that STOP_SENDING is received from the remote endpoint. In this case, NGTCP2_STRM_FLAG_SHUT_WR is also set. */ -#define NGTCP2_STRM_FLAG_STOP_SENDING_RECVED 0x800u +#define NGTCP2_STRM_FLAG_STOP_SENDING_RECVED 0x800U /* NGTCP2_STRM_FLAG_ANY_SENT indicates that any STREAM frame, including empty one, has been sent. */ -#define NGTCP2_STRM_FLAG_ANY_SENT 0x1000u +#define NGTCP2_STRM_FLAG_ANY_SENT 0x1000U typedef struct ngtcp2_strm ngtcp2_strm; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.c index d652ece4e07a88..5d378176e16289 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.c @@ -150,8 +150,8 @@ ngtcp2_ssize ngtcp2_transport_params_encode_versioned( if (params->stateless_reset_token_present) { len += ngtcp2_put_uvarintlen(NGTCP2_TRANSPORT_PARAM_STATELESS_RESET_TOKEN) + - ngtcp2_put_uvarintlen(NGTCP2_STATELESS_RESET_TOKENLEN) + - NGTCP2_STATELESS_RESET_TOKENLEN; + ngtcp2_put_uvarintlen(sizeof(params->stateless_reset_token)) + + sizeof(params->stateless_reset_token); } if (params->preferred_addr_present) { @@ -160,7 +160,7 @@ ngtcp2_ssize ngtcp2_transport_params_encode_versioned( preferred_addrlen = 4 /* ipv4Address */ + 2 /* ipv4Port */ + 16 /* ipv6Address */ + 2 /* ipv6Port */ + 1 + params->preferred_addr.cid.datalen /* CID */ + - NGTCP2_STATELESS_RESET_TOKENLEN; + sizeof(params->preferred_addr.stateless_reset_token); len += ngtcp2_put_uvarintlen(NGTCP2_TRANSPORT_PARAM_PREFERRED_ADDRESS) + ngtcp2_put_uvarintlen(preferred_addrlen) + preferred_addrlen; } @@ -626,7 +626,8 @@ int ngtcp2_transport_params_decode_versioned(int transport_params_version, } len = 4 /* ipv4Address */ + 2 /* ipv4Port */ + 16 /* ipv6Address */ + 2 /* ipv6Port */ - + 1 /* cid length */ + NGTCP2_STATELESS_RESET_TOKENLEN; + + 1 /* cid length */ + + sizeof(params->preferred_addr.stateless_reset_token); if (valuelen < len) { return NGTCP2_ERR_MALFORMED_TRANSPORT_PARAM; } diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.h index c077f06a9dd717..d98d034b3c28be 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_transport_params.h @@ -45,16 +45,16 @@ typedef uint64_t ngtcp2_transport_param_id; #define NGTCP2_TRANSPORT_PARAM_INITIAL_MAX_STREAM_DATA_UNI 0x07 #define NGTCP2_TRANSPORT_PARAM_INITIAL_MAX_STREAMS_BIDI 0x08 #define NGTCP2_TRANSPORT_PARAM_INITIAL_MAX_STREAMS_UNI 0x09 -#define NGTCP2_TRANSPORT_PARAM_ACK_DELAY_EXPONENT 0x0a -#define NGTCP2_TRANSPORT_PARAM_MAX_ACK_DELAY 0x0b -#define NGTCP2_TRANSPORT_PARAM_DISABLE_ACTIVE_MIGRATION 0x0c -#define NGTCP2_TRANSPORT_PARAM_PREFERRED_ADDRESS 0x0d -#define NGTCP2_TRANSPORT_PARAM_ACTIVE_CONNECTION_ID_LIMIT 0x0e -#define NGTCP2_TRANSPORT_PARAM_INITIAL_SOURCE_CONNECTION_ID 0x0f +#define NGTCP2_TRANSPORT_PARAM_ACK_DELAY_EXPONENT 0x0A +#define NGTCP2_TRANSPORT_PARAM_MAX_ACK_DELAY 0x0B +#define NGTCP2_TRANSPORT_PARAM_DISABLE_ACTIVE_MIGRATION 0x0C +#define NGTCP2_TRANSPORT_PARAM_PREFERRED_ADDRESS 0x0D +#define NGTCP2_TRANSPORT_PARAM_ACTIVE_CONNECTION_ID_LIMIT 0x0E +#define NGTCP2_TRANSPORT_PARAM_INITIAL_SOURCE_CONNECTION_ID 0x0F #define NGTCP2_TRANSPORT_PARAM_RETRY_SOURCE_CONNECTION_ID 0x10 /* https://datatracker.ietf.org/doc/html/rfc9221 */ #define NGTCP2_TRANSPORT_PARAM_MAX_DATAGRAM_FRAME_SIZE 0x20 -#define NGTCP2_TRANSPORT_PARAM_GREASE_QUIC_BIT 0x2ab2 +#define NGTCP2_TRANSPORT_PARAM_GREASE_QUIC_BIT 0x2AB2 /* https://datatracker.ietf.org/doc/html/rfc9368 */ #define NGTCP2_TRANSPORT_PARAM_VERSION_INFORMATION 0x11 diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c index 39f3d408a741ba..707cd570799e46 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c @@ -39,7 +39,7 @@ void ngtcp2_window_filter_init(ngtcp2_window_filter *wf, uint64_t window_length) { wf->window_length = window_length; - memset(wf->estimates, 0xff, sizeof(wf->estimates)); + memset(wf->estimates, 0xFF, sizeof(wf->estimates)); } void ngtcp2_window_filter_update(ngtcp2_window_filter *wf, uint64_t new_sample, diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index ddcb05d2c6ae5c..556e77976c1a8f 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -23,7 +23,7 @@ Note that nested packages will *also* show the paths to the specified packages. For example, running `npm ls promzard` in npm's source tree will show: ```bash -npm@11.12.1 /path/to/npm +npm@11.13.0 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 ``` diff --git a/deps/npm/docs/content/commands/npm-update.md b/deps/npm/docs/content/commands/npm-update.md index 60cb3c9ada4c2c..979f1c1de333d9 100644 --- a/deps/npm/docs/content/commands/npm-update.md +++ b/deps/npm/docs/content/commands/npm-update.md @@ -9,7 +9,7 @@ description: Update packages ```bash npm update [...] -aliases: up, upgrade, udpate +aliases: u, up, upgrade, udpate ``` ### Description diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index 2013ee7f8205f1..242c61509bc1c7 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -14,7 +14,7 @@ Note: This command is unaware of workspaces. ### Version -11.12.1 +11.13.0 ### Description diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html index fc29ba6a871af0..329fad79ba9d15 100644 --- a/deps/npm/docs/output/commands/npm-access.html +++ b/deps/npm/docs/output/commands/npm-access.html @@ -186,9 +186,9 @@
-

+

npm-access - @11.12.1 + @11.13.0

Set access level on published packages
diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html index b9fb04905a4df5..52fc19c7942228 100644 --- a/deps/npm/docs/output/commands/npm-adduser.html +++ b/deps/npm/docs/output/commands/npm-adduser.html @@ -186,9 +186,9 @@
-

+

npm-adduser - @11.12.1 + @11.13.0

Add a registry user account
diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html index 9cd06e991464b3..e935f919dfd483 100644 --- a/deps/npm/docs/output/commands/npm-audit.html +++ b/deps/npm/docs/output/commands/npm-audit.html @@ -186,9 +186,9 @@
-

+

npm-audit - @11.12.1 + @11.13.0

Run a security audit
diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html index 2b040aad7a9742..f6eb47691c1842 100644 --- a/deps/npm/docs/output/commands/npm-bugs.html +++ b/deps/npm/docs/output/commands/npm-bugs.html @@ -186,9 +186,9 @@
-

+

npm-bugs - @11.12.1 + @11.13.0

Report bugs for a package in a web browser
diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html index 59bc15e64b4f78..761f44801dcd58 100644 --- a/deps/npm/docs/output/commands/npm-cache.html +++ b/deps/npm/docs/output/commands/npm-cache.html @@ -186,9 +186,9 @@
-

+

npm-cache - @11.12.1 + @11.13.0

Manipulates packages cache
diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html index e713c926853b7a..8762c8463177d5 100644 --- a/deps/npm/docs/output/commands/npm-ci.html +++ b/deps/npm/docs/output/commands/npm-ci.html @@ -186,9 +186,9 @@
-

+

npm-ci - @11.12.1 + @11.13.0

Clean install a project
diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html index 868929c5cf1294..8d92430c9b6822 100644 --- a/deps/npm/docs/output/commands/npm-completion.html +++ b/deps/npm/docs/output/commands/npm-completion.html @@ -186,9 +186,9 @@
-

+

npm-completion - @11.12.1 + @11.13.0

Tab Completion for npm
diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html index 5f5ace326516ec..9f23af17c2ba2a 100644 --- a/deps/npm/docs/output/commands/npm-config.html +++ b/deps/npm/docs/output/commands/npm-config.html @@ -186,9 +186,9 @@
-

+

npm-config - @11.12.1 + @11.13.0

Manage the npm configuration files
diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html index 21749194ae31bc..c4ded5d1e93e0e 100644 --- a/deps/npm/docs/output/commands/npm-dedupe.html +++ b/deps/npm/docs/output/commands/npm-dedupe.html @@ -186,9 +186,9 @@
-

+

npm-dedupe - @11.12.1 + @11.13.0

Reduce duplication in the package tree
diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index 0fb8cadb29d5ba..5bc588535e092e 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -186,9 +186,9 @@
-

+

npm-deprecate - @11.12.1 + @11.13.0

Deprecate a version of a package
diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html index 7ed4d107d8ae48..a65a7c15e9dfd8 100644 --- a/deps/npm/docs/output/commands/npm-diff.html +++ b/deps/npm/docs/output/commands/npm-diff.html @@ -186,9 +186,9 @@
-

+

npm-diff - @11.12.1 + @11.13.0

The registry diff command
diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html index f4a5b6f8e5ca57..374fcd8ceaa270 100644 --- a/deps/npm/docs/output/commands/npm-dist-tag.html +++ b/deps/npm/docs/output/commands/npm-dist-tag.html @@ -186,9 +186,9 @@
-

+

npm-dist-tag - @11.12.1 + @11.13.0

Modify package distribution tags
diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html index 17244edf83a6be..1f445117b93cab 100644 --- a/deps/npm/docs/output/commands/npm-docs.html +++ b/deps/npm/docs/output/commands/npm-docs.html @@ -186,9 +186,9 @@
-

+

npm-docs - @11.12.1 + @11.13.0

Open documentation for a package in a web browser
diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html index eda670272c9296..b16a27077ccfd7 100644 --- a/deps/npm/docs/output/commands/npm-doctor.html +++ b/deps/npm/docs/output/commands/npm-doctor.html @@ -186,9 +186,9 @@
-

+

npm-doctor - @11.12.1 + @11.13.0

Check the health of your npm environment
diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html index 1f3ce25c4b064a..3660272c77fc56 100644 --- a/deps/npm/docs/output/commands/npm-edit.html +++ b/deps/npm/docs/output/commands/npm-edit.html @@ -186,9 +186,9 @@
-

+

npm-edit - @11.12.1 + @11.13.0

Edit an installed package
diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html index 4e6c048645c38a..eaab3d41205b80 100644 --- a/deps/npm/docs/output/commands/npm-exec.html +++ b/deps/npm/docs/output/commands/npm-exec.html @@ -186,9 +186,9 @@
-

+

npm-exec - @11.12.1 + @11.13.0

Run a command from a local or remote npm package
diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html index 6bae2eef58312c..bd64b49a29f4b5 100644 --- a/deps/npm/docs/output/commands/npm-explain.html +++ b/deps/npm/docs/output/commands/npm-explain.html @@ -186,9 +186,9 @@
-

+

npm-explain - @11.12.1 + @11.13.0

Explain installed packages
diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html index 554827e26da756..aed39e77a6c4dd 100644 --- a/deps/npm/docs/output/commands/npm-explore.html +++ b/deps/npm/docs/output/commands/npm-explore.html @@ -186,9 +186,9 @@
-

+

npm-explore - @11.12.1 + @11.13.0

Browse an installed package
diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html index 808a61c64167c1..bbe3222494c0b7 100644 --- a/deps/npm/docs/output/commands/npm-find-dupes.html +++ b/deps/npm/docs/output/commands/npm-find-dupes.html @@ -186,9 +186,9 @@
-

+

npm-find-dupes - @11.12.1 + @11.13.0

Find duplication in the package tree
diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html index 282ceffce8563f..85b66955b516b3 100644 --- a/deps/npm/docs/output/commands/npm-fund.html +++ b/deps/npm/docs/output/commands/npm-fund.html @@ -186,9 +186,9 @@
-

+

npm-fund - @11.12.1 + @11.13.0

Retrieve funding information
diff --git a/deps/npm/docs/output/commands/npm-get.html b/deps/npm/docs/output/commands/npm-get.html index 3a3cf6c4a626b1..eb4bde934ce801 100644 --- a/deps/npm/docs/output/commands/npm-get.html +++ b/deps/npm/docs/output/commands/npm-get.html @@ -186,9 +186,9 @@
-

+

npm-get - @11.12.1 + @11.13.0

Get a value from the npm configuration
diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html index bbfe72d189246a..cad8a79a483727 100644 --- a/deps/npm/docs/output/commands/npm-help-search.html +++ b/deps/npm/docs/output/commands/npm-help-search.html @@ -186,9 +186,9 @@
-

+

npm-help-search - @11.12.1 + @11.13.0

Search npm help documentation
diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html index 28af6a41d2c2fe..519fde8cf07841 100644 --- a/deps/npm/docs/output/commands/npm-help.html +++ b/deps/npm/docs/output/commands/npm-help.html @@ -186,9 +186,9 @@
-

+

npm-help - @11.12.1 + @11.13.0

Get help on npm
diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html index 0822f07ef6e0f8..a26b848890dffd 100644 --- a/deps/npm/docs/output/commands/npm-init.html +++ b/deps/npm/docs/output/commands/npm-init.html @@ -186,9 +186,9 @@
-

+

npm-init - @11.12.1 + @11.13.0

Create a package.json file
diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index ac340b4f0af3fd..bb65682760d46e 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -186,9 +186,9 @@
-

+

npm-install-ci-test - @11.12.1 + @11.13.0

Install a project with a clean slate and run tests
diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html index 4f3b150a4a1967..dff8ea97a81ae3 100644 --- a/deps/npm/docs/output/commands/npm-install-test.html +++ b/deps/npm/docs/output/commands/npm-install-test.html @@ -186,9 +186,9 @@
-

+

npm-install-test - @11.12.1 + @11.13.0

Install package(s) and run tests
diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index af3fd1724aeac1..69d2207db9df91 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -186,9 +186,9 @@
-

+

npm-install - @11.12.1 + @11.13.0

Install a package
diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html index dce1cd126c74a0..aed7d7f511bfad 100644 --- a/deps/npm/docs/output/commands/npm-link.html +++ b/deps/npm/docs/output/commands/npm-link.html @@ -186,9 +186,9 @@
-

+

npm-link - @11.12.1 + @11.13.0

Symlink a package folder
diff --git a/deps/npm/docs/output/commands/npm-ll.html b/deps/npm/docs/output/commands/npm-ll.html index 324f2fc7574735..ce891f5976b960 100644 --- a/deps/npm/docs/output/commands/npm-ll.html +++ b/deps/npm/docs/output/commands/npm-ll.html @@ -186,9 +186,9 @@
-

+

npm-ll - @11.12.1 + @11.13.0

List installed packages
diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html index 3469d2b6432aad..a442b2e7e76669 100644 --- a/deps/npm/docs/output/commands/npm-login.html +++ b/deps/npm/docs/output/commands/npm-login.html @@ -186,9 +186,9 @@
-

+

npm-login - @11.12.1 + @11.13.0

Login to a registry user account
diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html index 75200db0db47e3..28482bfd2a53f1 100644 --- a/deps/npm/docs/output/commands/npm-logout.html +++ b/deps/npm/docs/output/commands/npm-logout.html @@ -186,9 +186,9 @@
-

+

npm-logout - @11.12.1 + @11.13.0

Log out of the registry
diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 8e9edae452abe2..2f5dd885004c16 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -186,9 +186,9 @@
-

+

npm-ls - @11.12.1 + @11.13.0

List installed packages
@@ -209,7 +209,7 @@

Description

Positional arguments are name@version-range identifiers, which will limit the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

-
npm@11.12.1 /path/to/npm
+
npm@11.13.0 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 
diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html index 22657f36b8727a..02bd129659dc32 100644 --- a/deps/npm/docs/output/commands/npm-org.html +++ b/deps/npm/docs/output/commands/npm-org.html @@ -186,9 +186,9 @@
-

+

npm-org - @11.12.1 + @11.13.0

Manage orgs
diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html index c19a6b4900927c..2b4702dc5eefdd 100644 --- a/deps/npm/docs/output/commands/npm-outdated.html +++ b/deps/npm/docs/output/commands/npm-outdated.html @@ -186,9 +186,9 @@
-

+

npm-outdated - @11.12.1 + @11.13.0

Check for outdated packages
diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index 7712718fd66615..7519b7eafa17bd 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -186,9 +186,9 @@
-

+

npm-owner - @11.12.1 + @11.13.0

Manage package owners
diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html index cdcd15b910c862..3290b6a50cb74f 100644 --- a/deps/npm/docs/output/commands/npm-pack.html +++ b/deps/npm/docs/output/commands/npm-pack.html @@ -186,9 +186,9 @@
-

+

npm-pack - @11.12.1 + @11.13.0

Create a tarball from a package
diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html index db7b4741c06ba3..4fe67beb9b00a9 100644 --- a/deps/npm/docs/output/commands/npm-ping.html +++ b/deps/npm/docs/output/commands/npm-ping.html @@ -186,9 +186,9 @@
-

+

npm-ping - @11.12.1 + @11.13.0

Ping npm registry
diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html index 13a3549b580c3d..82928d2a503eae 100644 --- a/deps/npm/docs/output/commands/npm-pkg.html +++ b/deps/npm/docs/output/commands/npm-pkg.html @@ -186,9 +186,9 @@
-

+

npm-pkg - @11.12.1 + @11.13.0

Manages your package.json
diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html index 8da182a2e749a7..6bbab9ec8b6baa 100644 --- a/deps/npm/docs/output/commands/npm-prefix.html +++ b/deps/npm/docs/output/commands/npm-prefix.html @@ -186,9 +186,9 @@
-

+

npm-prefix - @11.12.1 + @11.13.0

Display prefix
diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html index d983bcdc4c2959..a201918112143a 100644 --- a/deps/npm/docs/output/commands/npm-profile.html +++ b/deps/npm/docs/output/commands/npm-profile.html @@ -186,9 +186,9 @@
-

+

npm-profile - @11.12.1 + @11.13.0

Change settings on your registry profile
diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html index ca7b6c433add08..485ad8c114bca1 100644 --- a/deps/npm/docs/output/commands/npm-prune.html +++ b/deps/npm/docs/output/commands/npm-prune.html @@ -186,9 +186,9 @@
-

+

npm-prune - @11.12.1 + @11.13.0

Remove extraneous packages
diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html index 17dc857fd2badc..9f16f9a0732631 100644 --- a/deps/npm/docs/output/commands/npm-publish.html +++ b/deps/npm/docs/output/commands/npm-publish.html @@ -186,9 +186,9 @@
-

+

npm-publish - @11.12.1 + @11.13.0

Publish a package
diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html index f1a1650a101967..caadf8dffcf929 100644 --- a/deps/npm/docs/output/commands/npm-query.html +++ b/deps/npm/docs/output/commands/npm-query.html @@ -186,9 +186,9 @@
-

+

npm-query - @11.12.1 + @11.13.0

Dependency selector query
diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html index 94969d6c331c7f..51386d3290beab 100644 --- a/deps/npm/docs/output/commands/npm-rebuild.html +++ b/deps/npm/docs/output/commands/npm-rebuild.html @@ -186,9 +186,9 @@
-

+

npm-rebuild - @11.12.1 + @11.13.0

Rebuild a package
diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html index 2c1243ef0247c1..1b4db65a41f8a1 100644 --- a/deps/npm/docs/output/commands/npm-repo.html +++ b/deps/npm/docs/output/commands/npm-repo.html @@ -186,9 +186,9 @@
-

+

npm-repo - @11.12.1 + @11.13.0

Open package repository page in the browser
diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html index 776d742edcb859..3bfb26e5b83c35 100644 --- a/deps/npm/docs/output/commands/npm-restart.html +++ b/deps/npm/docs/output/commands/npm-restart.html @@ -186,9 +186,9 @@
-

+

npm-restart - @11.12.1 + @11.13.0

Restart a package
diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html index 12d8e38c7414d7..f224de42549133 100644 --- a/deps/npm/docs/output/commands/npm-root.html +++ b/deps/npm/docs/output/commands/npm-root.html @@ -186,9 +186,9 @@
-

+

npm-root - @11.12.1 + @11.13.0

Display npm root
diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html index ea63a7e17bb527..c61048f31cf8e2 100644 --- a/deps/npm/docs/output/commands/npm-run.html +++ b/deps/npm/docs/output/commands/npm-run.html @@ -186,9 +186,9 @@
-

+

npm-run - @11.12.1 + @11.13.0

Run arbitrary package scripts
diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html index d656ee241b6a7b..ddee5f40af3896 100644 --- a/deps/npm/docs/output/commands/npm-sbom.html +++ b/deps/npm/docs/output/commands/npm-sbom.html @@ -186,9 +186,9 @@
-

+

npm-sbom - @11.12.1 + @11.13.0

Generate a Software Bill of Materials (SBOM)
diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html index 94f58f495a6629..5c01a0fd8bfe66 100644 --- a/deps/npm/docs/output/commands/npm-search.html +++ b/deps/npm/docs/output/commands/npm-search.html @@ -186,9 +186,9 @@
-

+

npm-search - @11.12.1 + @11.13.0

Search for packages
diff --git a/deps/npm/docs/output/commands/npm-set.html b/deps/npm/docs/output/commands/npm-set.html index 363a444be92aa1..b5bd610f6d999a 100644 --- a/deps/npm/docs/output/commands/npm-set.html +++ b/deps/npm/docs/output/commands/npm-set.html @@ -186,9 +186,9 @@
-

+

npm-set - @11.12.1 + @11.13.0

Set a value in the npm configuration
diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html index f5cbb0c34edc42..ac415a958f178d 100644 --- a/deps/npm/docs/output/commands/npm-shrinkwrap.html +++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html @@ -186,9 +186,9 @@
-

+

npm-shrinkwrap - @11.12.1 + @11.13.0

Lock down dependency versions for publication
diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html index 3533e05441276f..977756cc679403 100644 --- a/deps/npm/docs/output/commands/npm-star.html +++ b/deps/npm/docs/output/commands/npm-star.html @@ -186,9 +186,9 @@
-

+

npm-star - @11.12.1 + @11.13.0

Mark your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html index 0b34ca23a66c80..66164fa7780b94 100644 --- a/deps/npm/docs/output/commands/npm-stars.html +++ b/deps/npm/docs/output/commands/npm-stars.html @@ -186,9 +186,9 @@
-

+

npm-stars - @11.12.1 + @11.13.0

View packages marked as favorites
diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html index d08c5474a3b97c..c5079ac37a31da 100644 --- a/deps/npm/docs/output/commands/npm-start.html +++ b/deps/npm/docs/output/commands/npm-start.html @@ -186,9 +186,9 @@
-

+

npm-start - @11.12.1 + @11.13.0

Start a package
diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html index 64b460da80b30e..92500df777600a 100644 --- a/deps/npm/docs/output/commands/npm-stop.html +++ b/deps/npm/docs/output/commands/npm-stop.html @@ -186,9 +186,9 @@
-

+

npm-stop - @11.12.1 + @11.13.0

Stop a package
diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html index 4a2891e78f6c68..f83bbe0ee6bbe3 100644 --- a/deps/npm/docs/output/commands/npm-team.html +++ b/deps/npm/docs/output/commands/npm-team.html @@ -186,9 +186,9 @@
-

+

npm-team - @11.12.1 + @11.13.0

Manage organization teams and team memberships
diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html index 9a4d40757e343b..9466dd432374db 100644 --- a/deps/npm/docs/output/commands/npm-test.html +++ b/deps/npm/docs/output/commands/npm-test.html @@ -186,9 +186,9 @@
-

+

npm-test - @11.12.1 + @11.13.0

Test a package
diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html index 328d7aeb798b6f..7b956c64d1d11e 100644 --- a/deps/npm/docs/output/commands/npm-token.html +++ b/deps/npm/docs/output/commands/npm-token.html @@ -186,9 +186,9 @@
-

+

npm-token - @11.12.1 + @11.13.0

Manage your authentication tokens
diff --git a/deps/npm/docs/output/commands/npm-trust.html b/deps/npm/docs/output/commands/npm-trust.html index 7814567feb0a1e..d2f7cfb44c024a 100644 --- a/deps/npm/docs/output/commands/npm-trust.html +++ b/deps/npm/docs/output/commands/npm-trust.html @@ -186,9 +186,9 @@
-

+

npm-trust - @11.12.1 + @11.13.0

Manage trusted publishing relationships between packages and CI/CD providers
diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html index f92ff69ee51fb6..f4a4530423d3f2 100644 --- a/deps/npm/docs/output/commands/npm-undeprecate.html +++ b/deps/npm/docs/output/commands/npm-undeprecate.html @@ -186,9 +186,9 @@
-

+

npm-undeprecate - @11.12.1 + @11.13.0

Undeprecate a version of a package
diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html index 35e934b77ec199..dbad4b89328bfa 100644 --- a/deps/npm/docs/output/commands/npm-uninstall.html +++ b/deps/npm/docs/output/commands/npm-uninstall.html @@ -186,9 +186,9 @@
-

+

npm-uninstall - @11.12.1 + @11.13.0

Remove a package
diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html index 4091e5c782d264..2437c08a3d38b1 100644 --- a/deps/npm/docs/output/commands/npm-unpublish.html +++ b/deps/npm/docs/output/commands/npm-unpublish.html @@ -186,9 +186,9 @@
-

+

npm-unpublish - @11.12.1 + @11.13.0

Remove a package from the registry
diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html index 6be57361f2a502..78b27c53c751dc 100644 --- a/deps/npm/docs/output/commands/npm-unstar.html +++ b/deps/npm/docs/output/commands/npm-unstar.html @@ -186,9 +186,9 @@
-

+

npm-unstar - @11.12.1 + @11.13.0

Remove an item from your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html index 0a30a7356746f8..9396c8a6834ed1 100644 --- a/deps/npm/docs/output/commands/npm-update.html +++ b/deps/npm/docs/output/commands/npm-update.html @@ -186,9 +186,9 @@
-

+

npm-update - @11.12.1 + @11.13.0

Update packages
@@ -201,7 +201,7 @@

Table of contents

Synopsis

npm update [<pkg>...]
 
-aliases: up, upgrade, udpate
+aliases: u, up, upgrade, udpate
 

Description

This command will update all the packages listed to the latest version (specified by the tag config), respecting the semver constraints of both your package and its dependencies (if they also require the same package).

diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html index 1d3e9cc5f74fe0..f80e5161e98b82 100644 --- a/deps/npm/docs/output/commands/npm-version.html +++ b/deps/npm/docs/output/commands/npm-version.html @@ -186,9 +186,9 @@
-

+

npm-version - @11.12.1 + @11.13.0

Bump a package version
diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html index e93a7028ec7667..2636be46817ead 100644 --- a/deps/npm/docs/output/commands/npm-view.html +++ b/deps/npm/docs/output/commands/npm-view.html @@ -186,9 +186,9 @@
-

+

npm-view - @11.12.1 + @11.13.0

View registry info
diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html index ca4e63f8736443..2b456c4450622d 100644 --- a/deps/npm/docs/output/commands/npm-whoami.html +++ b/deps/npm/docs/output/commands/npm-whoami.html @@ -186,9 +186,9 @@
-

+

npm-whoami - @11.12.1 + @11.13.0

Display npm username
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index 901b9d11514e3f..d9807c608a8289 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -186,9 +186,9 @@
-

+

npm - @11.12.1 + @11.13.0

javascript package manager
@@ -203,7 +203,7 @@

Table of contents

Note: This command is unaware of workspaces.

Version

-

11.12.1

+

11.13.0

Description

npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.

diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html index 00f5702e081fcc..ce14ad68a0a9a9 100644 --- a/deps/npm/docs/output/commands/npx.html +++ b/deps/npm/docs/output/commands/npx.html @@ -186,9 +186,9 @@
-

+

npx - @11.12.1 + @11.13.0

Run a command from a local or remote npm package
diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html index 974d42b2c656a9..2ebf3eb7ee4ea0 100644 --- a/deps/npm/docs/output/configuring-npm/folders.html +++ b/deps/npm/docs/output/configuring-npm/folders.html @@ -186,9 +186,9 @@
-

+

Folders - @11.12.1 + @11.13.0

Folder structures used by npm
diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html index 0fda7ec593cefa..1c928d1e45ad9b 100644 --- a/deps/npm/docs/output/configuring-npm/install.html +++ b/deps/npm/docs/output/configuring-npm/install.html @@ -186,9 +186,9 @@
-

+

Install - @11.12.1 + @11.13.0

Download and install node and npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html index 974d42b2c656a9..2ebf3eb7ee4ea0 100644 --- a/deps/npm/docs/output/configuring-npm/npm-global.html +++ b/deps/npm/docs/output/configuring-npm/npm-global.html @@ -186,9 +186,9 @@
-

+

Folders - @11.12.1 + @11.13.0

Folder structures used by npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html index 07422781b58f05..b7b4f7545043b0 100644 --- a/deps/npm/docs/output/configuring-npm/npm-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-json.html @@ -186,9 +186,9 @@
-

+

package.json - @11.12.1 + @11.13.0

Specifics of npm's package.json handling
diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html index 0eea07f189f72c..5205dd37e7dbae 100644 --- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html @@ -186,9 +186,9 @@
-

+

npm-shrinkwrap.json - @11.12.1 + @11.13.0

A publishable lockfile
diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html index 1f91d117c07f84..0980887d978241 100644 --- a/deps/npm/docs/output/configuring-npm/npmrc.html +++ b/deps/npm/docs/output/configuring-npm/npmrc.html @@ -186,9 +186,9 @@
-

+

.npmrc - @11.12.1 + @11.13.0

The npm config files
diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index 07422781b58f05..b7b4f7545043b0 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -186,9 +186,9 @@
-

+

package.json - @11.12.1 + @11.13.0

Specifics of npm's package.json handling
diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html index 9eedd77093b0c3..9cefaff6c908e1 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -186,9 +186,9 @@
-

+

package-lock.json - @11.12.1 + @11.13.0

A manifestation of the manifest
diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html index 0d0ef99c6b6335..83655e009e7117 100644 --- a/deps/npm/docs/output/using-npm/config.html +++ b/deps/npm/docs/output/using-npm/config.html @@ -186,9 +186,9 @@
-

+

Config - @11.12.1 + @11.13.0

About npm configuration
diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html index 98647db6cbde4d..35ad12b72bacd2 100644 --- a/deps/npm/docs/output/using-npm/dependency-selectors.html +++ b/deps/npm/docs/output/using-npm/dependency-selectors.html @@ -186,9 +186,9 @@
-

+

Dependency Selectors - @11.12.1 + @11.13.0

Dependency Selector Syntax & Querying
diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html index 017ed86fef451d..45ef5924245796 100644 --- a/deps/npm/docs/output/using-npm/developers.html +++ b/deps/npm/docs/output/using-npm/developers.html @@ -186,9 +186,9 @@
-

+

Developers - @11.12.1 + @11.13.0

Developer guide
diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html index ba8b0b1132fd83..c34d3d7c8f32fd 100644 --- a/deps/npm/docs/output/using-npm/logging.html +++ b/deps/npm/docs/output/using-npm/logging.html @@ -186,9 +186,9 @@
-

+

Logging - @11.12.1 + @11.13.0

Why, What & How we Log
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html index b761c39e1d4648..7beb2e2cd5e0c2 100644 --- a/deps/npm/docs/output/using-npm/orgs.html +++ b/deps/npm/docs/output/using-npm/orgs.html @@ -186,9 +186,9 @@
-

+

Organizations - @11.12.1 + @11.13.0

Working with teams & organizations
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html index 3459ab9906b253..e75963512474ca 100644 --- a/deps/npm/docs/output/using-npm/package-spec.html +++ b/deps/npm/docs/output/using-npm/package-spec.html @@ -186,9 +186,9 @@
-

+

Package spec - @11.12.1 + @11.13.0

Package name specifier
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html index 22a6220ca11145..54d3618031c5c3 100644 --- a/deps/npm/docs/output/using-npm/registry.html +++ b/deps/npm/docs/output/using-npm/registry.html @@ -186,9 +186,9 @@
-

+

Registry - @11.12.1 + @11.13.0

The JavaScript Package Registry
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html index 0eab4f7bf7b098..068f758e2e872f 100644 --- a/deps/npm/docs/output/using-npm/removal.html +++ b/deps/npm/docs/output/using-npm/removal.html @@ -186,9 +186,9 @@
-

+

Removal - @11.12.1 + @11.13.0

Cleaning the slate
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html index 7083e3a3e03e62..26a0718f94a470 100644 --- a/deps/npm/docs/output/using-npm/scope.html +++ b/deps/npm/docs/output/using-npm/scope.html @@ -186,9 +186,9 @@
-

+

Scope - @11.12.1 + @11.13.0

Scoped packages
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html index 710045adf98fa0..dc8aed1c724c2c 100644 --- a/deps/npm/docs/output/using-npm/scripts.html +++ b/deps/npm/docs/output/using-npm/scripts.html @@ -186,9 +186,9 @@
-

+

Scripts - @11.12.1 + @11.13.0

How npm handles the "scripts" field
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html index be0ce097c25254..af84abf262b3db 100644 --- a/deps/npm/docs/output/using-npm/workspaces.html +++ b/deps/npm/docs/output/using-npm/workspaces.html @@ -186,9 +186,9 @@
-

+

Workspaces - @11.12.1 + @11.13.0

Working with workspaces
diff --git a/deps/npm/lib/commands/outdated.js b/deps/npm/lib/commands/outdated.js index e6f2cd006b60fb..9140cdbc9fea51 100644 --- a/deps/npm/lib/commands/outdated.js +++ b/deps/npm/lib/commands/outdated.js @@ -204,7 +204,7 @@ class Outdated extends ArboristWorkspaceCmd { } catch (err) { // silently catch and ignore ETARGET, E403 & E404 errors // deps are just skipped - if (!['ETARGET', 'E404', 'E404'].includes(err.code)) { + if (!['ETARGET', 'E403', 'E404'].includes(err.code)) { throw err } } diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js index 8740977cb7619a..9cd2346f0ff98f 100644 --- a/deps/npm/lib/utils/cmd-list.js +++ b/deps/npm/lib/utils/cmd-list.js @@ -98,6 +98,7 @@ const aliases = { i: 'install', it: 'install-test', cit: 'install-ci-test', + u: 'update', up: 'update', c: 'config', s: 'search', diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index fe5817bd028550..13c9af41efc167 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM-ACCESS" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-ACCESS" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-access\fR - Set access level on published packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index ef295a68a0448e..a9ce18423f7286 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM-ADDUSER" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-ADDUSER" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-adduser\fR - Add a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index e2547bf58265bc..6760fe1e954125 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM-AUDIT" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-AUDIT" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-audit\fR - Run a security audit .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index fa16e14c8d1419..474b08f5d76a26 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM-BUGS" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-BUGS" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-bugs\fR - Report bugs for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 4bbc439ed78a0a..e20349de377056 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM-CACHE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-CACHE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-cache\fR - Manipulates packages cache .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 97528d31e77c07..21f461e0fdd1db 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM-CI" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-CI" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-ci\fR - Clean install a project .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 7996ae51424e02..ad07723f8e19dd 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM-COMPLETION" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-COMPLETION" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-completion\fR - Tab Completion for npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 29621e37b88807..cb4f7c4a21f478 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM-CONFIG" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-CONFIG" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-config\fR - Manage the npm configuration files .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index fbf53bfbedbc28..97eb2af71fde23 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEDUPE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DEDUPE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-dedupe\fR - Reduce duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index 092e0270c8040e..8c44f55a1a52b0 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEPRECATE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DEPRECATE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-deprecate\fR - Deprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index 1dd968ae5d644c..5b4ab2fcebcb1d 100644 --- a/deps/npm/man/man1/npm-diff.1 +++ b/deps/npm/man/man1/npm-diff.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIFF" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DIFF" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-diff\fR - The registry diff command .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 6670e19b8a36f9..768fe6d575ea48 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIST-TAG" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DIST-TAG" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-dist-tag\fR - Modify package distribution tags .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index d8c56b505a97e1..ed9f35f00bebea 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCS" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DOCS" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-docs\fR - Open documentation for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index 1467c59172d481..d7f5ef43edf1f4 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCTOR" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-DOCTOR" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-doctor\fR - Check the health of your npm environment .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index f13a69a4a7fb60..83753a5fc423ab 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM-EDIT" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-EDIT" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-edit\fR - Edit an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1 index 267d42cd4c7979..d6f20fe3b587b6 100644 --- a/deps/npm/man/man1/npm-exec.1 +++ b/deps/npm/man/man1/npm-exec.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXEC" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-EXEC" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-exec\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1 index ee9fae25c4f827..3f981b60850469 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLAIN" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-EXPLAIN" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-explain\fR - Explain installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 39c3b059382285..f8fad8822edd5b 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLORE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-EXPLORE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-explore\fR - Browse an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1 index c607a2473d4869..5ea1a5e19df5b9 100644 --- a/deps/npm/man/man1/npm-find-dupes.1 +++ b/deps/npm/man/man1/npm-find-dupes.1 @@ -1,4 +1,4 @@ -.TH "NPM-FIND-DUPES" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-FIND-DUPES" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-find-dupes\fR - Find duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index 75120f042dfbb4..fc0e31efb0f96e 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM-FUND" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-FUND" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-fund\fR - Retrieve funding information .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-get.1 b/deps/npm/man/man1/npm-get.1 index ed7e2133a83270..e05435badd204c 100644 --- a/deps/npm/man/man1/npm-get.1 +++ b/deps/npm/man/man1/npm-get.1 @@ -1,4 +1,4 @@ -.TH "NPM-GET" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-GET" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-get\fR - Get a value from the npm configuration .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 171b3563193162..ed23a840be992b 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP-SEARCH" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-HELP-SEARCH" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-help-search\fR - Search npm help documentation .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 2dcdb3758e1189..191480d5c3fe4e 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-HELP" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-help\fR - Get help on npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 101d656bfb5ea4..6c7f7af97d5a0e 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM-INIT" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-INIT" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-init\fR - Create a package.json file .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index c002a1303b98f3..c1855691bfbc14 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-CI-TEST" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-INSTALL-CI-TEST" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index 622c89df74af5d..ce4172bf42b0ad 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-TEST" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-INSTALL-TEST" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-install-test\fR - Install package(s) and run tests .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 9221a74d6ec11c..92df99f6437c96 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-INSTALL" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-install\fR - Install a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 855137368a7ec5..749145e10948f0 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM-LINK" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-LINK" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-link\fR - Symlink a package folder .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ll.1 b/deps/npm/man/man1/npm-ll.1 index c0752d0dca049c..d7eb6abb2be468 100644 --- a/deps/npm/man/man1/npm-ll.1 +++ b/deps/npm/man/man1/npm-ll.1 @@ -1,4 +1,4 @@ -.TH "NPM-LL" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-LL" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-ll\fR - List installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1 index 59809a10c7217a..159897bd393f39 100644 --- a/deps/npm/man/man1/npm-login.1 +++ b/deps/npm/man/man1/npm-login.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGIN" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-LOGIN" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-login\fR - Login to a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 530d8216fb6a24..2f8be327eb1816 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGOUT" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-LOGOUT" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-logout\fR - Log out of the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index 51afaf81e0f6c0..0a6f9a49df3c5d 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM-LS" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-LS" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-ls\fR - List installed packages .SS "Synopsis" @@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit .P .RS 2 .nf -npm@11.12.1 /path/to/npm +npm@11.13.0 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 5aa0c33d6dad71..4afed2e97b2cc5 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM-ORG" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-ORG" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-org\fR - Manage orgs .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index adaf686880c67f..59a87bd862c9c7 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM-OUTDATED" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-OUTDATED" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-outdated\fR - Check for outdated packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 29e15fcd5cbc10..9be1dad02c0ca6 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM-OWNER" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-OWNER" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-owner\fR - Manage package owners .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 7e9e44926960cc..7491a4154ec658 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM-PACK" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PACK" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-pack\fR - Create a tarball from a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 616d928771c2e6..cf20722885fa78 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM-PING" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PING" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-ping\fR - Ping npm registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1 index 0a7a4a2eda63ce..8622f1fe5aaba7 100644 --- a/deps/npm/man/man1/npm-pkg.1 +++ b/deps/npm/man/man1/npm-pkg.1 @@ -1,4 +1,4 @@ -.TH "NPM-PKG" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PKG" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-pkg\fR - Manages your package.json .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index 58fdc6e0637cf9..83b8d8cc0df771 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM-PREFIX" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PREFIX" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-prefix\fR - Display prefix .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index f4d456a011d2ed..703f320dc298c3 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM-PROFILE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PROFILE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-profile\fR - Change settings on your registry profile .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 5cc3651dda1ead..7f3d08ca5633d2 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM-PRUNE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PRUNE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-prune\fR - Remove extraneous packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 305d75cb590968..f527741ac1963a 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM-PUBLISH" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-PUBLISH" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-publish\fR - Publish a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1 index 982c771d4c6624..d8e792f3d0be1f 100644 --- a/deps/npm/man/man1/npm-query.1 +++ b/deps/npm/man/man1/npm-query.1 @@ -1,4 +1,4 @@ -.TH "NPM-QUERY" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-QUERY" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-query\fR - Dependency selector query .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 1542cb847a9fd5..c19b76fe7597ec 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM-REBUILD" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-REBUILD" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-rebuild\fR - Rebuild a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index d36c0ae61635b4..71c912c1f672b6 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM-REPO" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-REPO" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-repo\fR - Open package repository page in the browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 7c4eb5f61d8ef8..75f8758112eb29 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM-RESTART" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-RESTART" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-restart\fR - Restart a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index dec2ae082ab0ea..b8b6f31b2d979c 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM-ROOT" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-ROOT" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-root\fR - Display npm root .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-run.1 b/deps/npm/man/man1/npm-run.1 index 226c791c846b26..c6c0bf5325f5d9 100644 --- a/deps/npm/man/man1/npm-run.1 +++ b/deps/npm/man/man1/npm-run.1 @@ -1,4 +1,4 @@ -.TH "NPM-RUN" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-RUN" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-run\fR - Run arbitrary package scripts .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1 index 3c51502f529880..34d5972e568556 100644 --- a/deps/npm/man/man1/npm-sbom.1 +++ b/deps/npm/man/man1/npm-sbom.1 @@ -1,4 +1,4 @@ -.TH "NPM-SBOM" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-SBOM" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM) .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 2481037a382c04..b901d6872d770c 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-SEARCH" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-SEARCH" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-search\fR - Search for packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-set.1 b/deps/npm/man/man1/npm-set.1 index b77a942abfa1f3..a9a1506e540526 100644 --- a/deps/npm/man/man1/npm-set.1 +++ b/deps/npm/man/man1/npm-set.1 @@ -1,4 +1,4 @@ -.TH "NPM-SET" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-SET" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-set\fR - Set a value in the npm configuration .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 5f0ed829e939b9..2c872c9723d832 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-SHRINKWRAP" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index d70556d2c65c51..ffc44d6728e6c4 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM-STAR" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-STAR" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-star\fR - Mark your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 11707121f7af14..40e1fac243e72e 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM-STARS" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-STARS" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-stars\fR - View packages marked as favorites .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index 4c138de64d3126..e5d324c7a459c5 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM-START" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-START" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-start\fR - Start a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 386f070a906553..4f3f31a8111ddb 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM-STOP" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-STOP" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-stop\fR - Stop a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index f6ed3de147b149..a3a69befb065d4 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEAM" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-TEAM" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-team\fR - Manage organization teams and team memberships .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index fe1c15b35895de..50a813a18c1f08 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEST" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-TEST" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-test\fR - Test a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index c1b0e1acb21157..396df16d27d5c2 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM-TOKEN" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-TOKEN" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-token\fR - Manage your authentication tokens .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-trust.1 b/deps/npm/man/man1/npm-trust.1 index 81e67e7c17b800..91744a56b13b4d 100644 --- a/deps/npm/man/man1/npm-trust.1 +++ b/deps/npm/man/man1/npm-trust.1 @@ -1,4 +1,4 @@ -.TH "NPM-TRUST" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-TRUST" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-trust\fR - Manage trusted publishing relationships between packages and CI/CD providers .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1 index 7d2848a33ef9f7..86b6ed7fc73ae7 100644 --- a/deps/npm/man/man1/npm-undeprecate.1 +++ b/deps/npm/man/man1/npm-undeprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNDEPRECATE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-UNDEPRECATE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-undeprecate\fR - Undeprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 5255c3104c7e1b..0d89545bc3d13a 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNINSTALL" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-UNINSTALL" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-uninstall\fR - Remove a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index a10179d140cb17..465ee175b738e8 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNPUBLISH" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-UNPUBLISH" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-unpublish\fR - Remove a package from the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index 21ddfa859aead3..60a6e600a49ddc 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNSTAR" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-UNSTAR" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-unstar\fR - Remove an item from your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 83acac8d81f052..0eacbf369b37d5 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM-UPDATE" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-UPDATE" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-update\fR - Update packages .SS "Synopsis" @@ -7,7 +7,7 @@ .nf npm update \[lB]...\[rB] -aliases: up, upgrade, udpate +aliases: u, up, upgrade, udpate .fi .RE .SS "Description" diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 709a8bfb00c34d..70feae9fc4509b 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM-VERSION" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-VERSION" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-version\fR - Bump a package version .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index d45d8b38277c9d..e587954fc4be25 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM-VIEW" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-VIEW" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-view\fR - View registry info .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index f246bfc4781cb2..a944920ca2e7c5 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM-WHOAMI" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM-WHOAMI" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-whoami\fR - Display npm username .SS "Synopsis" diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index a7ca1f48a0f4bc..a32d7b13b182e9 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPM" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm\fR - javascript package manager .SS "Synopsis" @@ -12,7 +12,7 @@ npm Note: This command is unaware of workspaces. .SS "Version" .P -11.12.1 +11.13.0 .SS "Description" .P npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently. diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index 050afc7ab98e21..8878334eb8a297 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "March 2026" "NPM@11.12.1" "" +.TH "NPX" "1" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpx\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 6d8dbbe2d0930d..c9d7a23cfd2916 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "March 2026" "NPM@11.12.1" "" +.TH "FOLDERS" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBFolders\fR - Folder structures used by npm .SS "Description" diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 8ebd081e06497d..c43ef43f621d5d 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "March 2026" "NPM@11.12.1" "" +.TH "INSTALL" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBInstall\fR - Download and install node and npm .SS "Description" diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 6d8dbbe2d0930d..c9d7a23cfd2916 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "March 2026" "NPM@11.12.1" "" +.TH "FOLDERS" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBFolders\fR - Folder structures used by npm .SS "Description" diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index 02241289fdd8a0..f26a307d85a111 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.12.1" "" +.TH "PACKAGE.JSON" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5 index 34361a3d7bc5e3..dff972eeacec67 100644 --- a/deps/npm/man/man5/npm-shrinkwrap-json.5 +++ b/deps/npm/man/man5/npm-shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP.JSON" "5" "March 2026" "NPM@11.12.1" "" +.TH "NPM-SHRINKWRAP.JSON" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR - A publishable lockfile .SS "Description" diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index bf27bcb5939f20..ff767b87c10dcb 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH ".NPMRC" "5" "March 2026" "NPM@11.12.1" "" +.TH ".NPMRC" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fB.npmrc\fR - The npm config files .SS "Description" diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index 02241289fdd8a0..f26a307d85a111 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "March 2026" "NPM@11.12.1" "" +.TH "PACKAGE.JSON" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 63ee956145c2a7..f66b38335b28ff 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE-LOCK.JSON" "5" "March 2026" "NPM@11.12.1" "" +.TH "PACKAGE-LOCK.JSON" "5" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBpackage-lock.json\fR - A manifestation of the manifest .SS "Description" diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index 8452593e01eb4b..1b93498c84818e 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "March 2026" "NPM@11.12.1" "" +.TH "CONFIG" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBConfig\fR - About npm configuration .SS "Description" diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7 index 9ad3c02c5cc23c..3b5e9f8faa2333 100644 --- a/deps/npm/man/man7/dependency-selectors.7 +++ b/deps/npm/man/man7/dependency-selectors.7 @@ -1,4 +1,4 @@ -.TH "SELECTORS" "7" "March 2026" "NPM@11.12.1" "" +.TH "SELECTORS" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBSelectors\fR - Dependency Selector Syntax & Querying .SS "Description" diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index 809ae04b8ab770..6ed01ced244362 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "March 2026" "NPM@11.12.1" "" +.TH "DEVELOPERS" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBDevelopers\fR - Developer guide .SS "Description" diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index 434e1af696ceeb..0a114670022595 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "March 2026" "NPM@11.12.1" "" +.TH "LOGGING" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBLogging\fR - Why, What & How we Log .SS "Description" diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 325210226876e5..502ef7d6f9b521 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGANIZATIONS" "7" "March 2026" "NPM@11.12.1" "" +.TH "ORGANIZATIONS" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBOrganizations\fR - Working with teams & organizations .SS "Description" diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 index fbcfeafd019d5d..3644ebecde9732 100644 --- a/deps/npm/man/man7/package-spec.7 +++ b/deps/npm/man/man7/package-spec.7 @@ -1,4 +1,4 @@ -.TH "SPEC" "7" "March 2026" "NPM@11.12.1" "" +.TH "SPEC" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBspec\fR - Package name specifier .SS "Description" diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index f2be8c14b15940..62edddcc6d591b 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "March 2026" "NPM@11.12.1" "" +.TH "REGISTRY" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBRegistry\fR - The JavaScript Package Registry .SS "Description" diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 7b8773deb192ba..3758202663fa2e 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "March 2026" "NPM@11.12.1" "" +.TH "REMOVAL" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBRemoval\fR - Cleaning the slate .SS "Synopsis" diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index f8b9d4a406532f..fec92c73e43eab 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "March 2026" "NPM@11.12.1" "" +.TH "SCOPE" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBScope\fR - Scoped packages .SS "Description" diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index 7244c685d5b83e..f6d85659db5872 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "March 2026" "NPM@11.12.1" "" +.TH "SCRIPTS" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBScripts\fR - How npm handles the "scripts" field .SS "Description" diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 4c4ed3324d997b..e32fbf3c9b124f 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "March 2026" "NPM@11.12.1" "" +.TH "WORKSPACES" "7" "April 2026" "NPM@11.13.0" "" .SH "NAME" \fBWorkspaces\fR - Working with workspaces .SS "Description" diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js index a256b79049eba6..fdbbd4679bd80a 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js @@ -950,7 +950,7 @@ This is a one-time fix-up, please be patient... tree: pd, getChildren: pd => pd.children, visit: pd => { - const { placed, edge, canPlace: cpd } = pd + const { placed, edge, canPlace: cpd, parent } = pd // if we didn't place anything, nothing to do here if (!placed) { return @@ -1011,8 +1011,7 @@ This is a one-time fix-up, please be patient... return } - // lastly, also check for the missing deps of the node we placed, - // and any holes created by pruning out conflicted peer sets. + // lastly, also check for the missing deps of the node we placed, and any holes created by pruning out conflicted peer sets. this.#depsQueue.push(placed) for (const dep of pd.needEvaluation) { this.#depsSeen.delete(dep) @@ -1020,16 +1019,14 @@ This is a one-time fix-up, please be patient... } // pre-fetch any problem edges, since we'll need these soon - // if it fails at this point, though, don't worry because it - // may well be an optional dep that has gone missing. it'll - // fail later anyway. + // if it fails at this point, though, don't worry because it may well be an optional dep that has gone missing + // it'll fail later anyway for (const e of this.#problemEdges(placed)) { - // XXX This is somehow load bearing. This makes tests that print - // the ideal tree of a tree with tarball dependencies fail. This - // can't be changed or removed till we figure out why + // XXX This is somehow load bearing. This makes tests that print the ideal tree of a tree with tarball dependencies fail + // This can't be changed or removed till we figure out why // The test is named "tarball deps with transitive tarball deps" promises.push(() => - this.#fetchManifest(npa.resolve(e.name, e.spec, fromPath(placed, e))) + this.#fetchManifest(npa.resolve(e.name, e.spec, fromPath(placed, e)), parent) .catch(() => null) ) } @@ -1047,26 +1044,18 @@ This is a one-time fix-up, please be patient... return this.#buildDepStep() } - // loads a node from an edge, and then loads its peer deps (and their - // peer deps, on down the line) into a virtual root parent. + // loads a node from an edge, and then loads its peer deps (and their peer deps, on down the line) into a virtual root parent. async #nodeFromEdge (edge, parent_, secondEdge, required) { - // create a virtual root node with the same deps as the node that - // is requesting this one, so that we can get all the peer deps in - // a context where they're likely to be resolvable. - // Note that the virtual root will also have virtual copies of the - // targets of any child Links, so that they resolve appropriately. + // create a virtual root node with the same deps as the node that is requesting this one, so that we can get all the peer deps in a context where they're likely to be resolvable. + // Note that the virtual root will also have virtual copies of the targets of any child Links, so that they resolve appropriately. const parent = parent_ || this.#virtualRoot(edge.from) const spec = npa.resolve(edge.name, edge.spec, edge.from.path) const first = await this.#nodeFromSpec(edge.name, spec, parent, edge) - // we might have a case where the parent has a peer dependency on - // `foo@*` which resolves to v2, but another dep in the set has a - // peerDependency on `foo@1`. In that case, if we force it to be v2, - // we're unnecessarily triggering an ERESOLVE. - // If we have a second edge to worry about, and it's not satisfied - // by the first node, try a second and see if that satisfies the - // original edge here. + // we might have a case where the parent has a peer dependency on `foo@*` which resolves to v2, but another dep in the set has a peerDependency on `foo@1`. + // In that case, if we force it to be v2, we're unnecessarily triggering an ERESOLVE. + // If we have a second edge to worry about, and it's not satisfied by the first node, try a second and see if that satisfies the original edge here. const spec2 = secondEdge && npa.resolve( edge.name, secondEdge.spec, @@ -1210,11 +1199,12 @@ This is a one-time fix-up, please be patient... return problems } - async #fetchManifest (spec) { + async #fetchManifest (spec, parent) { const options = { ...this.options, avoid: this.#avoidRange(spec.name), fullMetadata: true, + _isRoot: parent?.isProjectRoot || parent?.isWorkspace, } // get the intended spec and stored metadata from yarn.lock file, // if available and valid. @@ -1231,10 +1221,8 @@ This is a one-time fix-up, please be patient... } async #nodeFromSpec (name, spec, parent, edge) { - // pacote will slap integrity on its options, so we have to clone - // the object so it doesn't get mutated. - // Don't bother to load the manifest for link deps, because the target - // might be within another package that doesn't exist yet. + // pacote will slap integrity on its options, so we have to clone the object so it doesn't get mutated. + // Don't bother to load the manifest for link deps, because the target might be within another package that doesn't exist yet. const { installLinks, legacyPeerDeps } = this const isWorkspace = this.idealTree.workspaces && this.idealTree.workspaces.has(spec.name) @@ -1287,7 +1275,7 @@ This is a one-time fix-up, please be patient... // spec isn't a directory, and either isn't a workspace or the workspace we have // doesn't satisfy the edge. try to fetch a manifest and build a node from that. - return this.#fetchManifest(spec) + return this.#fetchManifest(spec, parent) .then(pkg => new Node({ name, pkg, parent, installLinks, legacyPeerDeps }), error => { error.requiredBy = edge.from.location || '.' diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js index 121ad0effc8f6d..1f086e97b3cd59 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js @@ -113,7 +113,11 @@ module.exports = cls => class IsolatedReifier extends cls { }) // local `file:` deps are in fsChildren but are not workspaces. // they are already handled as workspace-like proxies above and should not go through the external/store extraction path. - if (!next.isProjectRoot && !next.isWorkspace && !next.inert && !idealTree.fsChildren.has(next) && !idealTree.fsChildren.has(next.target)) { + // Links with file: resolved paths (from `npm link`) should also be treated as local dependencies and symlinked directly instead of being extracted into the store. + const isLocalFileDep = next.isLink && next.resolved?.startsWith('file:') + if (isLocalFileDep && !idealTree.fsChildren.has(next) && !idealTree.fsChildren.has(next.target)) { + this.idealGraph.workspaces.push(await this.#workspaceProxy(next.target)) + } else if (!next.isProjectRoot && !next.isWorkspace && !next.inert && !idealTree.fsChildren.has(next) && !idealTree.fsChildren.has(next.target)) { this.idealGraph.external.push(await this.#externalProxy(next)) } } @@ -157,6 +161,7 @@ module.exports = cls => class IsolatedReifier extends cls { ...this.options, resolved: node.resolved, integrity: node.integrity, + // TODO _isRoot }) const Arborist = this.constructor const arb = new Arborist({ ...this.options, path: dir }) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js index 44ac7cd34dcbc1..26ad0016be3a95 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -737,6 +737,7 @@ module.exports = cls => class Reifier extends cls { ...this.options, resolved: node.resolved, integrity: node.integrity, + _isRoot: node.parent?.isProjectRoot || node.parent?.isWorkspace, }) // store nodes don't use Node class so node.package doesn't get updated if (node.isInStore) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js index 021a0ef72aa172..891961fe2cd95d 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js @@ -26,7 +26,7 @@ const optionalSet = node => { // now that we've hit the boundary, gather the rest of the nodes in // the optional section that don't have dependents outside the set. - return gatherDepSet(set, edge => !set.has(edge.to)) + return gatherDepSet(set, edge => !set.has(edge.to) && !edge.from?.inert) } module.exports = optionalSet diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index 58ddb99f8e3593..d0f823e61d3481 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/arborist", - "version": "9.4.2", + "version": "9.4.3", "description": "Manage node_modules trees", "dependencies": { "@gar/promise-retry": "^1.0.0", diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js index 5c4f37bfaf3fb1..9ae2847c5e4e04 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: envelope.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Signature = exports.Envelope = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/events.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/events.js index 6138fef5672fc2..e62ac4ad8ebd68 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/events.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/events.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: events.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudEventBatch = exports.CloudEvent_CloudEventAttributeValue = exports.CloudEvent_AttributesEntry = exports.CloudEvent = void 0; @@ -17,7 +17,7 @@ exports.CloudEvent = { specVersion: isSet(object.specVersion) ? globalThis.String(object.specVersion) : "", type: isSet(object.type) ? globalThis.String(object.type) : "", attributes: isObject(object.attributes) - ? Object.entries(object.attributes).reduce((acc, [key, value]) => { + ? globalThis.Object.entries(object.attributes).reduce((acc, [key, value]) => { acc[key] = exports.CloudEvent_CloudEventAttributeValue.fromJSON(value); return acc; }, {}) @@ -46,7 +46,7 @@ exports.CloudEvent = { obj.type = message.type; } if (message.attributes) { - const entries = Object.entries(message.attributes); + const entries = globalThis.Object.entries(message.attributes); if (entries.length > 0) { obj.attributes = {}; entries.forEach(([k, v]) => { diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js index b4d9ccc781c2f9..d267964861fb0e 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: google/api/field_behavior.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldBehavior = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/any.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/any.js index f0c8aab773e4c9..42943d3fbbcad9 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/any.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/any.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: google/protobuf/any.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Any = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js index d6f8ddddf799db..2a70277fe98e74 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js @@ -1,14 +1,16 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: google/protobuf/descriptor.proto Object.defineProperty(exports, "__esModule", { value: true }); -exports.GeneratedCodeInfo = exports.SourceCodeInfo_Location = exports.SourceCodeInfo = exports.FeatureSetDefaults_FeatureSetEditionDefault = exports.FeatureSetDefaults = exports.FeatureSet = exports.UninterpretedOption_NamePart = exports.UninterpretedOption = exports.MethodOptions = exports.ServiceOptions = exports.EnumValueOptions = exports.EnumOptions = exports.OneofOptions = exports.FieldOptions_FeatureSupport = exports.FieldOptions_EditionDefault = exports.FieldOptions = exports.MessageOptions = exports.FileOptions = exports.MethodDescriptorProto = exports.ServiceDescriptorProto = exports.EnumValueDescriptorProto = exports.EnumDescriptorProto_EnumReservedRange = exports.EnumDescriptorProto = exports.OneofDescriptorProto = exports.FieldDescriptorProto = exports.ExtensionRangeOptions_Declaration = exports.ExtensionRangeOptions = exports.DescriptorProto_ReservedRange = exports.DescriptorProto_ExtensionRange = exports.DescriptorProto = exports.FileDescriptorProto = exports.FileDescriptorSet = exports.GeneratedCodeInfo_Annotation_Semantic = exports.FeatureSet_EnforceNamingStyle = exports.FeatureSet_JsonFormat = exports.FeatureSet_MessageEncoding = exports.FeatureSet_Utf8Validation = exports.FeatureSet_RepeatedFieldEncoding = exports.FeatureSet_EnumType = exports.FeatureSet_FieldPresence = exports.MethodOptions_IdempotencyLevel = exports.FieldOptions_OptionTargetType = exports.FieldOptions_OptionRetention = exports.FieldOptions_JSType = exports.FieldOptions_CType = exports.FileOptions_OptimizeMode = exports.FieldDescriptorProto_Label = exports.FieldDescriptorProto_Type = exports.ExtensionRangeOptions_VerificationState = exports.Edition = void 0; -exports.GeneratedCodeInfo_Annotation = void 0; +exports.FeatureSetDefaults_FeatureSetEditionDefault = exports.FeatureSetDefaults = exports.FeatureSet_VisibilityFeature = exports.FeatureSet = exports.UninterpretedOption_NamePart = exports.UninterpretedOption = exports.MethodOptions = exports.ServiceOptions = exports.EnumValueOptions = exports.EnumOptions = exports.OneofOptions = exports.FieldOptions_FeatureSupport = exports.FieldOptions_EditionDefault = exports.FieldOptions = exports.MessageOptions = exports.FileOptions = exports.MethodDescriptorProto = exports.ServiceDescriptorProto = exports.EnumValueDescriptorProto = exports.EnumDescriptorProto_EnumReservedRange = exports.EnumDescriptorProto = exports.OneofDescriptorProto = exports.FieldDescriptorProto = exports.ExtensionRangeOptions_Declaration = exports.ExtensionRangeOptions = exports.DescriptorProto_ReservedRange = exports.DescriptorProto_ExtensionRange = exports.DescriptorProto = exports.FileDescriptorProto = exports.FileDescriptorSet = exports.GeneratedCodeInfo_Annotation_Semantic = exports.FeatureSet_VisibilityFeature_DefaultSymbolVisibility = exports.FeatureSet_EnforceNamingStyle = exports.FeatureSet_JsonFormat = exports.FeatureSet_MessageEncoding = exports.FeatureSet_Utf8Validation = exports.FeatureSet_RepeatedFieldEncoding = exports.FeatureSet_EnumType = exports.FeatureSet_FieldPresence = exports.MethodOptions_IdempotencyLevel = exports.FieldOptions_OptionTargetType = exports.FieldOptions_OptionRetention = exports.FieldOptions_JSType = exports.FieldOptions_CType = exports.FileOptions_OptimizeMode = exports.FieldDescriptorProto_Label = exports.FieldDescriptorProto_Type = exports.ExtensionRangeOptions_VerificationState = exports.SymbolVisibility = exports.Edition = void 0; +exports.GeneratedCodeInfo_Annotation = exports.GeneratedCodeInfo = exports.SourceCodeInfo_Location = exports.SourceCodeInfo = void 0; exports.editionFromJSON = editionFromJSON; exports.editionToJSON = editionToJSON; +exports.symbolVisibilityFromJSON = symbolVisibilityFromJSON; +exports.symbolVisibilityToJSON = symbolVisibilityToJSON; exports.extensionRangeOptions_VerificationStateFromJSON = extensionRangeOptions_VerificationStateFromJSON; exports.extensionRangeOptions_VerificationStateToJSON = extensionRangeOptions_VerificationStateToJSON; exports.fieldDescriptorProto_TypeFromJSON = fieldDescriptorProto_TypeFromJSON; @@ -41,6 +43,8 @@ exports.featureSet_JsonFormatFromJSON = featureSet_JsonFormatFromJSON; exports.featureSet_JsonFormatToJSON = featureSet_JsonFormatToJSON; exports.featureSet_EnforceNamingStyleFromJSON = featureSet_EnforceNamingStyleFromJSON; exports.featureSet_EnforceNamingStyleToJSON = featureSet_EnforceNamingStyleToJSON; +exports.featureSet_VisibilityFeature_DefaultSymbolVisibilityFromJSON = featureSet_VisibilityFeature_DefaultSymbolVisibilityFromJSON; +exports.featureSet_VisibilityFeature_DefaultSymbolVisibilityToJSON = featureSet_VisibilityFeature_DefaultSymbolVisibilityToJSON; exports.generatedCodeInfo_Annotation_SemanticFromJSON = generatedCodeInfo_Annotation_SemanticFromJSON; exports.generatedCodeInfo_Annotation_SemanticToJSON = generatedCodeInfo_Annotation_SemanticToJSON; /* eslint-disable */ @@ -69,6 +73,8 @@ var Edition; */ Edition[Edition["EDITION_2023"] = 1000] = "EDITION_2023"; Edition[Edition["EDITION_2024"] = 1001] = "EDITION_2024"; + /** EDITION_UNSTABLE - A placeholder edition for developing and testing unscheduled features. */ + Edition[Edition["EDITION_UNSTABLE"] = 9999] = "EDITION_UNSTABLE"; /** * EDITION_1_TEST_ONLY - Placeholder editions for testing feature resolution. These should not be * used or relied on outside of tests. @@ -105,6 +111,9 @@ function editionFromJSON(object) { case 1001: case "EDITION_2024": return Edition.EDITION_2024; + case 9999: + case "EDITION_UNSTABLE": + return Edition.EDITION_UNSTABLE; case 1: case "EDITION_1_TEST_ONLY": return Edition.EDITION_1_TEST_ONLY; @@ -141,6 +150,8 @@ function editionToJSON(object) { return "EDITION_2023"; case Edition.EDITION_2024: return "EDITION_2024"; + case Edition.EDITION_UNSTABLE: + return "EDITION_UNSTABLE"; case Edition.EDITION_1_TEST_ONLY: return "EDITION_1_TEST_ONLY"; case Edition.EDITION_2_TEST_ONLY: @@ -157,6 +168,46 @@ function editionToJSON(object) { throw new globalThis.Error("Unrecognized enum value " + object + " for enum Edition"); } } +/** + * Describes the 'visibility' of a symbol with respect to the proto import + * system. Symbols can only be imported when the visibility rules do not prevent + * it (ex: local symbols cannot be imported). Visibility modifiers can only set + * on `message` and `enum` as they are the only types available to be referenced + * from other files. + */ +var SymbolVisibility; +(function (SymbolVisibility) { + SymbolVisibility[SymbolVisibility["VISIBILITY_UNSET"] = 0] = "VISIBILITY_UNSET"; + SymbolVisibility[SymbolVisibility["VISIBILITY_LOCAL"] = 1] = "VISIBILITY_LOCAL"; + SymbolVisibility[SymbolVisibility["VISIBILITY_EXPORT"] = 2] = "VISIBILITY_EXPORT"; +})(SymbolVisibility || (exports.SymbolVisibility = SymbolVisibility = {})); +function symbolVisibilityFromJSON(object) { + switch (object) { + case 0: + case "VISIBILITY_UNSET": + return SymbolVisibility.VISIBILITY_UNSET; + case 1: + case "VISIBILITY_LOCAL": + return SymbolVisibility.VISIBILITY_LOCAL; + case 2: + case "VISIBILITY_EXPORT": + return SymbolVisibility.VISIBILITY_EXPORT; + default: + throw new globalThis.Error("Unrecognized enum value " + object + " for enum SymbolVisibility"); + } +} +function symbolVisibilityToJSON(object) { + switch (object) { + case SymbolVisibility.VISIBILITY_UNSET: + return "VISIBILITY_UNSET"; + case SymbolVisibility.VISIBILITY_LOCAL: + return "VISIBILITY_LOCAL"; + case SymbolVisibility.VISIBILITY_EXPORT: + return "VISIBILITY_EXPORT"; + default: + throw new globalThis.Error("Unrecognized enum value " + object + " for enum SymbolVisibility"); + } +} /** The verification state of the extension range. */ var ExtensionRangeOptions_VerificationState; (function (ExtensionRangeOptions_VerificationState) { @@ -877,6 +928,59 @@ function featureSet_EnforceNamingStyleToJSON(object) { throw new globalThis.Error("Unrecognized enum value " + object + " for enum FeatureSet_EnforceNamingStyle"); } } +var FeatureSet_VisibilityFeature_DefaultSymbolVisibility; +(function (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) { + FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility["DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"; + /** EXPORT_ALL - Default pre-EDITION_2024, all UNSET visibility are export. */ + FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility["EXPORT_ALL"] = 1] = "EXPORT_ALL"; + /** EXPORT_TOP_LEVEL - All top-level symbols default to export, nested default to local. */ + FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility["EXPORT_TOP_LEVEL"] = 2] = "EXPORT_TOP_LEVEL"; + /** LOCAL_ALL - All symbols default to local. */ + FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility["LOCAL_ALL"] = 3] = "LOCAL_ALL"; + /** + * STRICT - All symbols local by default. Nested types cannot be exported. + * With special case caveat for message { enum {} reserved 1 to max; } + * This is the recommended setting for new protos. + */ + FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility["STRICT"] = 4] = "STRICT"; +})(FeatureSet_VisibilityFeature_DefaultSymbolVisibility || (exports.FeatureSet_VisibilityFeature_DefaultSymbolVisibility = FeatureSet_VisibilityFeature_DefaultSymbolVisibility = {})); +function featureSet_VisibilityFeature_DefaultSymbolVisibilityFromJSON(object) { + switch (object) { + case 0: + case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": + return FeatureSet_VisibilityFeature_DefaultSymbolVisibility.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN; + case 1: + case "EXPORT_ALL": + return FeatureSet_VisibilityFeature_DefaultSymbolVisibility.EXPORT_ALL; + case 2: + case "EXPORT_TOP_LEVEL": + return FeatureSet_VisibilityFeature_DefaultSymbolVisibility.EXPORT_TOP_LEVEL; + case 3: + case "LOCAL_ALL": + return FeatureSet_VisibilityFeature_DefaultSymbolVisibility.LOCAL_ALL; + case 4: + case "STRICT": + return FeatureSet_VisibilityFeature_DefaultSymbolVisibility.STRICT; + default: + throw new globalThis.Error("Unrecognized enum value " + object + " for enum FeatureSet_VisibilityFeature_DefaultSymbolVisibility"); + } +} +function featureSet_VisibilityFeature_DefaultSymbolVisibilityToJSON(object) { + switch (object) { + case FeatureSet_VisibilityFeature_DefaultSymbolVisibility.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN: + return "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"; + case FeatureSet_VisibilityFeature_DefaultSymbolVisibility.EXPORT_ALL: + return "EXPORT_ALL"; + case FeatureSet_VisibilityFeature_DefaultSymbolVisibility.EXPORT_TOP_LEVEL: + return "EXPORT_TOP_LEVEL"; + case FeatureSet_VisibilityFeature_DefaultSymbolVisibility.LOCAL_ALL: + return "LOCAL_ALL"; + case FeatureSet_VisibilityFeature_DefaultSymbolVisibility.STRICT: + return "STRICT"; + default: + throw new globalThis.Error("Unrecognized enum value " + object + " for enum FeatureSet_VisibilityFeature_DefaultSymbolVisibility"); + } +} /** * Represents the identified object's effect on the element in the original * .proto file. @@ -945,6 +1049,9 @@ exports.FileDescriptorProto = { weakDependency: globalThis.Array.isArray(object?.weakDependency) ? object.weakDependency.map((e) => globalThis.Number(e)) : [], + optionDependency: globalThis.Array.isArray(object?.optionDependency) + ? object.optionDependency.map((e) => globalThis.String(e)) + : [], messageType: globalThis.Array.isArray(object?.messageType) ? object.messageType.map((e) => exports.DescriptorProto.fromJSON(e)) : [], @@ -980,6 +1087,9 @@ exports.FileDescriptorProto = { if (message.weakDependency?.length) { obj.weakDependency = message.weakDependency.map((e) => Math.round(e)); } + if (message.optionDependency?.length) { + obj.optionDependency = message.optionDependency; + } if (message.messageType?.length) { obj.messageType = message.messageType.map((e) => exports.DescriptorProto.toJSON(e)); } @@ -1036,6 +1146,7 @@ exports.DescriptorProto = { reservedName: globalThis.Array.isArray(object?.reservedName) ? object.reservedName.map((e) => globalThis.String(e)) : [], + visibility: isSet(object.visibility) ? symbolVisibilityFromJSON(object.visibility) : 0, }; }, toJSON(message) { @@ -1070,6 +1181,9 @@ exports.DescriptorProto = { if (message.reservedName?.length) { obj.reservedName = message.reservedName; } + if (message.visibility !== undefined && message.visibility !== 0) { + obj.visibility = symbolVisibilityToJSON(message.visibility); + } return obj; }, }; @@ -1261,6 +1375,7 @@ exports.EnumDescriptorProto = { reservedName: globalThis.Array.isArray(object?.reservedName) ? object.reservedName.map((e) => globalThis.String(e)) : [], + visibility: isSet(object.visibility) ? symbolVisibilityFromJSON(object.visibility) : 0, }; }, toJSON(message) { @@ -1280,6 +1395,9 @@ exports.EnumDescriptorProto = { if (message.reservedName?.length) { obj.reservedName = message.reservedName; } + if (message.visibility !== undefined && message.visibility !== 0) { + obj.visibility = symbolVisibilityToJSON(message.visibility); + } return obj; }, }; @@ -1624,6 +1742,7 @@ exports.FieldOptions_FeatureSupport = { editionDeprecated: isSet(object.editionDeprecated) ? editionFromJSON(object.editionDeprecated) : 0, deprecationWarning: isSet(object.deprecationWarning) ? globalThis.String(object.deprecationWarning) : "", editionRemoved: isSet(object.editionRemoved) ? editionFromJSON(object.editionRemoved) : 0, + removalError: isSet(object.removalError) ? globalThis.String(object.removalError) : "", }; }, toJSON(message) { @@ -1640,6 +1759,9 @@ exports.FieldOptions_FeatureSupport = { if (message.editionRemoved !== undefined && message.editionRemoved !== 0) { obj.editionRemoved = editionToJSON(message.editionRemoved); } + if (message.removalError !== undefined && message.removalError !== "") { + obj.removalError = message.removalError; + } return obj; }, }; @@ -1857,6 +1979,9 @@ exports.FeatureSet = { enforceNamingStyle: isSet(object.enforceNamingStyle) ? featureSet_EnforceNamingStyleFromJSON(object.enforceNamingStyle) : 0, + defaultSymbolVisibility: isSet(object.defaultSymbolVisibility) + ? featureSet_VisibilityFeature_DefaultSymbolVisibilityFromJSON(object.defaultSymbolVisibility) + : 0, }; }, toJSON(message) { @@ -1882,6 +2007,18 @@ exports.FeatureSet = { if (message.enforceNamingStyle !== undefined && message.enforceNamingStyle !== 0) { obj.enforceNamingStyle = featureSet_EnforceNamingStyleToJSON(message.enforceNamingStyle); } + if (message.defaultSymbolVisibility !== undefined && message.defaultSymbolVisibility !== 0) { + obj.defaultSymbolVisibility = featureSet_VisibilityFeature_DefaultSymbolVisibilityToJSON(message.defaultSymbolVisibility); + } + return obj; + }, +}; +exports.FeatureSet_VisibilityFeature = { + fromJSON(_) { + return {}; + }, + toJSON(_) { + const obj = {}; return obj; }, }; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js index 9d24cbba10de9f..138ecae8eb4a29 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: google/protobuf/timestamp.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Timestamp = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/dsse.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/dsse.js index abc766bed3b881..ca878c08c70559 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/dsse.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/dsse.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: rekor/v2/dsse.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.DSSELogEntryV002 = exports.DSSERequestV002 = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/entry.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/entry.js index c5eccb10e0a680..f54d7d266114cf 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/entry.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/entry.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: rekor/v2/entry.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateEntryRequest = exports.Spec = exports.Entry = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/hashedrekord.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/hashedrekord.js index d3fd1af2483d18..8143a9fc25a77d 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/hashedrekord.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/hashedrekord.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: rekor/v2/hashedrekord.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.HashedRekordLogEntryV002 = exports.HashedRekordRequestV002 = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/verifier.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/verifier.js index c437d5053a3cb6..1275300b2a3abb 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/verifier.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/rekor/v2/verifier.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: rekor/v2/verifier.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Signature = exports.Verifier = exports.PublicKey = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js index aed636f00e7cf6..7052260f04225a 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: sigstore_bundle.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Bundle = exports.VerificationMaterial = exports.TimestampVerificationData = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js index b900516ed3b557..23d8ab34d3bb8a 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: sigstore_common.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.TimeRange = exports.X509CertificateChain = exports.SubjectAlternativeName = exports.X509Certificate = exports.DistinguishedName = exports.ObjectIdentifierValuePair = exports.ObjectIdentifier = exports.PublicKeyIdentifier = exports.PublicKey = exports.RFC3161SignedTimestamp = exports.LogId = exports.MessageSignature = exports.HashOutput = exports.SubjectAlternativeNameType = exports.PublicKeyDetails = exports.HashAlgorithm = void 0; @@ -29,7 +29,17 @@ var HashAlgorithm; HashAlgorithm[HashAlgorithm["SHA2_256"] = 1] = "SHA2_256"; HashAlgorithm[HashAlgorithm["SHA2_384"] = 2] = "SHA2_384"; HashAlgorithm[HashAlgorithm["SHA2_512"] = 3] = "SHA2_512"; + /** + * SHA3_256 - Used for LMS + * + * @deprecated + */ HashAlgorithm[HashAlgorithm["SHA3_256"] = 4] = "SHA3_256"; + /** + * SHA3_384 - Used for LMS + * + * @deprecated + */ HashAlgorithm[HashAlgorithm["SHA3_384"] = 5] = "SHA3_384"; })(HashAlgorithm || (exports.HashAlgorithm = HashAlgorithm = {})); function hashAlgorithmFromJSON(object) { @@ -146,9 +156,7 @@ var PublicKeyDetails; * LMS_SHA256 - LMS and LM-OTS * * These algorithms are deprecated and should not be used. - * Keys and signatures MAY be used by private Sigstore - * deployments, but will not be supported by the public - * good instance. + * There are no plans to support SLH-DSA at this time. * * USER WARNING: LMS and LM-OTS are both stateful signature schemes. * Using them correctly requires discretion and careful consideration @@ -164,20 +172,23 @@ var PublicKeyDetails; /** @deprecated */ PublicKeyDetails[PublicKeyDetails["LMOTS_SHA256"] = 15] = "LMOTS_SHA256"; /** - * ML_DSA_65 - ML-DSA + * ML_DSA_44 - ML-DSA * - * These ML_DSA_65 and ML-DSA_87 algorithms are the pure variants that - * take data to sign rather than the prehash variants (HashML-DSA), which - * take digests. While considered quantum-resistant, their usage + * These ML_DSA_44, ML_DSA_65 and ML-DSA_87 algorithms are the pure variants + * that take data to sign rather than the prehash variants (HashML-DSA), which + * take digests. While considered quantum-resistant, their usage * involves tradeoffs in that signatures and keys are much larger, and * this makes deployments more costly. * - * USER WARNING: ML_DSA_65 and ML_DSA_87 are experimental algorithms. + * USER WARNING: ML_DSA_44, ML_DSA_65 and ML_DSA_87 are experimental algorithms. * In the future they MAY be used by private Sigstore deployments, but - * they are not yet fully functional. This warning will be removed when + * they are not yet fully functional. This warning will be removed when * these algorithms are widely supported by Sigstore clients and servers, * but care should still be taken for production environments. + * + * See NIST FIPS 204, RFC 9881 for algorithm identifiers */ + PublicKeyDetails[PublicKeyDetails["ML_DSA_44"] = 23] = "ML_DSA_44"; PublicKeyDetails[PublicKeyDetails["ML_DSA_65"] = 21] = "ML_DSA_65"; PublicKeyDetails[PublicKeyDetails["ML_DSA_87"] = 22] = "ML_DSA_87"; })(PublicKeyDetails || (exports.PublicKeyDetails = PublicKeyDetails = {})); @@ -246,6 +257,9 @@ function publicKeyDetailsFromJSON(object) { case 15: case "LMOTS_SHA256": return PublicKeyDetails.LMOTS_SHA256; + case 23: + case "ML_DSA_44": + return PublicKeyDetails.ML_DSA_44; case 21: case "ML_DSA_65": return PublicKeyDetails.ML_DSA_65; @@ -300,6 +314,8 @@ function publicKeyDetailsToJSON(object) { return "LMS_SHA256"; case PublicKeyDetails.LMOTS_SHA256: return "LMOTS_SHA256"; + case PublicKeyDetails.ML_DSA_44: + return "ML_DSA_44"; case PublicKeyDetails.ML_DSA_65: return "ML_DSA_65"; case PublicKeyDetails.ML_DSA_87: diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js index fd8ea8384664d4..e5c32d57d37a25 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: sigstore_rekor.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.TransparencyLogEntry = exports.InclusionPromise = exports.InclusionProof = exports.Checkpoint = exports.KindVersion = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js index 1b5492fb1a77e3..978a41cb1162ee 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: sigstore_trustroot.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.ClientTrustConfig = exports.ServiceConfiguration = exports.Service = exports.SigningConfig = exports.TrustedRoot = exports.CertificateAuthority = exports.TransparencyLogInstance = exports.ServiceSelector = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js index 876fe9cc1db1d1..519242c96a9b22 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js @@ -1,8 +1,8 @@ "use strict"; // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.7.5 -// protoc v6.30.2 +// protoc-gen-ts_proto v2.11.5 +// protoc v7.34.1 // source: sigstore_verification.proto Object.defineProperty(exports, "__esModule", { value: true }); exports.Input = exports.Artifact = exports.ArtifactVerificationOptions_ObserverTimestampOptions = exports.ArtifactVerificationOptions_TlogIntegratedTimestampOptions = exports.ArtifactVerificationOptions_TimestampAuthorityOptions = exports.ArtifactVerificationOptions_CtlogOptions = exports.ArtifactVerificationOptions_TlogOptions = exports.ArtifactVerificationOptions = exports.PublicKeyIdentities = exports.CertificateIdentities = exports.CertificateIdentity = void 0; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/package.json b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json index f87b2540fbf986..bdd434efb8dbd5 100644 --- a/deps/npm/node_modules/@sigstore/protobuf-specs/package.json +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json @@ -1,6 +1,6 @@ { "name": "@sigstore/protobuf-specs", - "version": "0.5.0", + "version": "0.5.1", "description": "code-signing for npm packages", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js index 3323b505d9c05e..b9f3c6fdf6dfc7 100644 --- a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js +++ b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js @@ -144,7 +144,9 @@ function expand_(str, max, isTop) { const x = numeric(n[0]); const y = numeric(n[1]); const width = Math.max(n[0].length, n[1].length); - let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1; + let incr = n.length === 3 && n[2] !== undefined ? + Math.max(Math.abs(numeric(n[2])), 1) + : 1; let test = lte; const reverse = y < x; if (reverse) { diff --git a/deps/npm/node_modules/brace-expansion/dist/esm/index.js b/deps/npm/node_modules/brace-expansion/dist/esm/index.js index ca4124926adfd3..855e22cd71e824 100644 --- a/deps/npm/node_modules/brace-expansion/dist/esm/index.js +++ b/deps/npm/node_modules/brace-expansion/dist/esm/index.js @@ -140,7 +140,9 @@ function expand_(str, max, isTop) { const x = numeric(n[0]); const y = numeric(n[1]); const width = Math.max(n[0].length, n[1].length); - let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1; + let incr = n.length === 3 && n[2] !== undefined ? + Math.max(Math.abs(numeric(n[2])), 1) + : 1; let test = lte; const reverse = y < x; if (reverse) { diff --git a/deps/npm/node_modules/brace-expansion/package.json b/deps/npm/node_modules/brace-expansion/package.json index c2d66fa17cb035..83a8289641532c 100644 --- a/deps/npm/node_modules/brace-expansion/package.json +++ b/deps/npm/node_modules/brace-expansion/package.json @@ -1,7 +1,7 @@ { "name": "brace-expansion", "description": "Brace expansion as known from sh/bash", - "version": "5.0.4", + "version": "5.0.5", "files": [ "dist" ], diff --git a/deps/npm/node_modules/cidr-regex/dist/index.js b/deps/npm/node_modules/cidr-regex/dist/index.js index bb2d3133a7dc5b..29bb17cfcbdab9 100644 --- a/deps/npm/node_modules/cidr-regex/dist/index.js +++ b/deps/npm/node_modules/cidr-regex/dist/index.js @@ -1,3 +1,4 @@ +//#region index.ts const defaultOpts = { exact: false }; const v4src = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}\\/(3[0-2]|[12]?[0-9])"; const v6src = "(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4})?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|[a-fA-F\\d]{1,4}:(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|:(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))(?:%[0-9a-zA-Z]+)?\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])"; @@ -9,14 +10,12 @@ const v4global = new RegExp(v4src, "g"); const v6global = new RegExp(v6src, "g"); const v46global = new RegExp(v46src, "g"); function resetRegex(re) { - re.lastIndex = 0; - return re; + re.lastIndex = 0; + return re; } const cidrRegex = ({ exact } = defaultOpts) => exact ? v46exact : resetRegex(v46global); const v4 = cidrRegex.v4 = ({ exact } = defaultOpts) => exact ? v4exact : resetRegex(v4global); const v6 = cidrRegex.v6 = ({ exact } = defaultOpts) => exact ? v6exact : resetRegex(v6global); -export { - cidrRegex as default, - v4, - v6 -}; + +//#endregion +export { cidrRegex as default, v4, v6 }; \ No newline at end of file diff --git a/deps/npm/node_modules/cidr-regex/package.json b/deps/npm/node_modules/cidr-regex/package.json index a76a158d6169dc..1c2db1a6e28b30 100644 --- a/deps/npm/node_modules/cidr-regex/package.json +++ b/deps/npm/node_modules/cidr-regex/package.json @@ -1,6 +1,6 @@ { "name": "cidr-regex", - "version": "5.0.3", + "version": "5.0.4", "description": "Regular expression for matching IP addresses in CIDR notation", "author": "silverwind ", "contributors": [ @@ -20,19 +20,19 @@ "node": ">=20" }, "devDependencies": { - "@types/node": "25.0.10", - "@typescript/native-preview": "7.0.0-dev.20260212.1", - "eslint": "9.39.2", - "eslint-config-silverwind": "120.1.2", + "@types/node": "25.6.0", + "@typescript/native-preview": "7.0.0-dev.20260420.1", + "eslint": "10.2.1", + "eslint-config-silverwind": "131.0.5", "jest-extended": "7.0.0", - "typescript": "5.9.3", - "typescript-config-silverwind": "14.0.0", - "updates": "17.0.8", - "updates-config-silverwind": "1.0.3", - "versions": "14.0.3", - "vite": "7.3.1", - "vite-config-silverwind": "6.0.9", - "vitest": "4.0.18", - "vitest-config-silverwind": "10.6.1" + "tsdown": "0.21.9", + "tsdown-config-silverwind": "2.1.0", + "typescript": "6.0.3", + "typescript-config-silverwind": "18.0.0", + "updates": "17.15.5", + "updates-config-silverwind": "2.1.0", + "versions": "15.0.0", + "vitest": "4.1.4", + "vitest-config-silverwind": "11.3.0" } } \ No newline at end of file diff --git a/deps/npm/node_modules/diff/CONTRIBUTING.md b/deps/npm/node_modules/diff/CONTRIBUTING.md index 203d0245fc634d..320bd00edf9f72 100644 --- a/deps/npm/node_modules/diff/CONTRIBUTING.md +++ b/deps/npm/node_modules/diff/CONTRIBUTING.md @@ -19,7 +19,7 @@ A full release may be completed by first updating the `"version"` property in pa ``` yarn clean yarn build -yarn publish +yarn npm publish ``` After releasing, remember to: diff --git a/deps/npm/node_modules/diff/dist/diff.js b/deps/npm/node_modules/diff/dist/diff.js index 6b25f903236806..0e87972994c654 100644 --- a/deps/npm/node_modules/diff/dist/diff.js +++ b/deps/npm/node_modules/diff/dist/diff.js @@ -368,7 +368,46 @@ function hasOnlyUnixLineEndings(string) { return !string.includes('\r\n') && string.includes('\n'); } - function trailingWs(string) { + /** + * Split a string into segments using a word segmenter, merging consecutive + * segments if they are both whitespace segments. Whitespace segments can + * appear adjacent to one another for two reasons: + * - newlines always get their own segment + * - where a diacritic is attached to a whitespace character in the text, the + * segment ends after the diacritic, so e.g. " \u0300 " becomes two segments. + * This function therefore runs the segmenter's .segment() method and then + * merges consecutive segments of whitespace into a single part. + */ + function segment(string, segmenter) { + const parts = []; + for (const segmentObj of Array.from(segmenter.segment(string))) { + const segment = segmentObj.segment; + if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment)) { + parts[parts.length - 1] += segment; + } + else { + parts.push(segment); + } + } + return parts; + } + // The functions below take a `segmenter` argument so that, when called from + // diffWords when it is using a segmenter, they can use a notion of what + // constitutes "whitespace" that is consistent with the segmenter. + // + // USUALLY this will be identical to the result of the non-segmenter-based + // logic, but it differs in at least one case: when whitespace characters are + // modified by diacritics. A word segmenter considers these diacritics to be + // part of the whitespace, whereas our non-segmenter-based logic does not. + // + // Because the segmenter-based approach necessarily requires segmenting the + // entire string, we offer a leadingAndTrailingWs function to allow getting the + // whitespace prefix AND whitespace suffix with a single call to the segmenter, + // for efficiency's sake. + function trailingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[1]; + } // Yes, this looks overcomplicated and dumb - why not replace the whole function with // return string.match(/\s*$/)[0] // you ask? Because: @@ -388,11 +427,28 @@ } return string.substring(i + 1); } - function leadingWs(string) { + function leadingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[0]; + } // Thankfully the annoying considerations described in trailingWs don't apply here: const match = string.match(/^\s*/); return match ? match[0] : ''; } + function leadingAndTrailingWs(string, segmenter) { + if (!segmenter) { + return [leadingWs(string), trailingWs(string)]; + } + if (segmenter.resolvedOptions().granularity != 'word') { + throw new Error('The segmenter passed must have a granularity of "word"'); + } + const segments = segment(string, segmenter); + const firstSeg = segments[0]; + const lastSeg = segments[segments.length - 1]; + const head = (/\s/).test(firstSeg) ? firstSeg : ''; + const tail = (/\s/).test(lastSeg) ? lastSeg : ''; + return [head, tail]; + } // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode // @@ -458,22 +514,9 @@ // We want `parts` to be an array whose elements alternate between being // pure whitespace and being pure non-whitespace. This is ALMOST what the // segments returned by a word-based Intl.Segmenter already look like, - // and therefore we can ALMOST get what we want by simply doing... - // parts = Array.from(segmenter.segment(value), segment => segment.segment); - // ... but not QUITE, because there's of one annoying special case: every - // newline character gets its own segment, instead of sharing a segment - // with other surrounding whitespace. We therefore need to manually merge - // consecutive segments of whitespace into a single part: - parts = []; - for (const segmentObj of Array.from(segmenter.segment(value))) { - const segment = segmentObj.segment; - if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment)) { - parts[parts.length - 1] += segment; - } - else { - parts.push(segment); - } - } + // but not quite - see explanation in the docs of our custom segment() + // function. + parts = segment(value, segmenter); } else { parts = value.match(tokenizeIncludingWhitespace) || []; @@ -537,7 +580,7 @@ } else { if (insertion || deletion) { // May be false at start of text - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter); } lastKeep = change; insertion = null; @@ -545,7 +588,7 @@ } }); if (insertion || deletion) { - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter); } return changes; } @@ -561,7 +604,7 @@ } return wordDiff.diff(oldStr, newStr, options); } - function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) { + function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) { // Before returning, we tidy up the leading and trailing whitespace of the // change objects to eliminate cases where trailing whitespace in one object // is repeated as leading whitespace in the next. @@ -604,10 +647,8 @@ // * Just a "delete" // We handle the three cases separately. if (deletion && insertion) { - const oldWsPrefix = leadingWs(deletion.value); - const oldWsSuffix = trailingWs(deletion.value); - const newWsPrefix = leadingWs(insertion.value); - const newWsSuffix = trailingWs(insertion.value); + const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter); + const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter); if (startKeep) { const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix); startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix); @@ -629,17 +670,17 @@ // whitespace and deleting duplicate leading whitespace where // present. if (startKeep) { - const ws = leadingWs(insertion.value); + const ws = leadingWs(insertion.value, segmenter); insertion.value = insertion.value.substring(ws.length); } if (endKeep) { - const ws = leadingWs(endKeep.value); + const ws = leadingWs(endKeep.value, segmenter); endKeep.value = endKeep.value.substring(ws.length); } // otherwise we've got a deletion and no insertion } else if (startKeep && endKeep) { - const newWsFull = leadingWs(endKeep.value), delWsStart = leadingWs(deletion.value), delWsEnd = trailingWs(deletion.value); + const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter); // Any whitespace that comes straight after startKeep in both the old and // new texts, assign to startKeep and remove from the deletion. const newWsStart = longestCommonPrefix(newWsFull, delWsStart); @@ -658,8 +699,8 @@ // We are at the start of the text. Preserve all the whitespace on // endKeep, and just remove whitespace from the end of deletion to the // extent that it overlaps with the start of endKeep. - const endKeepWsPrefix = leadingWs(endKeep.value); - const deletionWsSuffix = trailingWs(deletion.value); + const endKeepWsPrefix = leadingWs(endKeep.value, segmenter); + const deletionWsSuffix = trailingWs(deletion.value, segmenter); const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix); deletion.value = removeSuffix(deletion.value, overlap); } @@ -667,8 +708,8 @@ // We are at the END of the text. Preserve all the whitespace on // startKeep, and just remove whitespace from the start of deletion to // the extent that it overlaps with the end of startKeep. - const startKeepWsSuffix = trailingWs(startKeep.value); - const deletionWsPrefix = leadingWs(deletion.value); + const startKeepWsSuffix = trailingWs(startKeep.value, segmenter); + const deletionWsPrefix = leadingWs(deletion.value, segmenter); const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix); deletion.value = removePrefix(deletion.value, overlap); } diff --git a/deps/npm/node_modules/diff/dist/diff.min.js b/deps/npm/node_modules/diff/dist/diff.min.js index 8ae55324ed93bc..663b37595c0d74 100644 --- a/deps/npm/node_modules/diff/dist/diff.min.js +++ b/deps/npm/node_modules/diff/dist/diff.min.js @@ -1 +1 @@ -((global,factory)=>{"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self).Diff={})})(this,function(exports){class Diff{diff(oldStr,newStr,options={}){let callback;"function"==typeof options?(callback=options,options={}):"callback"in options&&(callback=options.callback);oldStr=this.castInput(oldStr,options),newStr=this.castInput(newStr,options),oldStr=this.removeEmpty(this.tokenize(oldStr,options)),newStr=this.removeEmpty(this.tokenize(newStr,options));return this.diffWithOptionsObj(oldStr,newStr,options,callback)}diffWithOptionsObj(oldTokens,newTokens,options,callback){let _a,done=value=>{if(value=this.postProcess(value,options),!callback)return value;setTimeout(function(){callback(value)},0)},newLen=newTokens.length,oldLen=oldTokens.length,editLength=1,maxEditLength=newLen+oldLen;null!=options.maxEditLength&&(maxEditLength=Math.min(maxEditLength,options.maxEditLength));var maxExecutionTime=null!=(_a=options.timeout)?_a:1/0;let abortAfterTimestamp=Date.now()+maxExecutionTime,bestPath=[{oldPos:-1,lastComponent:void 0}],newPos=this.extractCommon(bestPath[0],newTokens,oldTokens,0,options);if(bestPath[0].oldPos+1>=oldLen&&newPos+1>=newLen)return done(this.buildValues(bestPath[0].lastComponent,newTokens,oldTokens));let minDiagonalToConsider=-1/0,maxDiagonalToConsider=1/0,execEditLength=()=>{for(let diagonalPath=Math.max(minDiagonalToConsider,-editLength);diagonalPath<=Math.min(maxDiagonalToConsider,editLength);diagonalPath+=2){let basePath;var removePath=bestPath[diagonalPath-1],addPath=bestPath[diagonalPath+1];removePath&&(bestPath[diagonalPath-1]=void 0);let canAdd=!1;addPath&&(addPathNewPos=addPath.oldPos-diagonalPath,canAdd=addPath&&0<=addPathNewPos&&addPathNewPos=oldLen&&newPos+1>=newLen)return done(this.buildValues(basePath.lastComponent,newTokens,oldTokens))||!0;(bestPath[diagonalPath]=basePath).oldPos+1>=oldLen&&(maxDiagonalToConsider=Math.min(maxDiagonalToConsider,diagonalPath-1)),newPos+1>=newLen&&(minDiagonalToConsider=Math.max(minDiagonalToConsider,diagonalPath+1))}else bestPath[diagonalPath]=void 0}editLength++};if(callback)!function exec(){setTimeout(function(){if(editLength>maxEditLength||Date.now()>abortAfterTimestamp)return callback(void 0);execEditLength()||exec()},0)}();else for(;editLength<=maxEditLength&&Date.now()<=abortAfterTimestamp;){var ret=execEditLength();if(ret)return ret}}addToPath(path,added,removed,oldPosInc,options){var last=path.lastComponent;return last&&!options.oneChangePerToken&&last.added===added&&last.removed===removed?{oldPos:path.oldPos+oldPosInc,lastComponent:{count:last.count+1,added:added,removed:removed,previousComponent:last.previousComponent}}:{oldPos:path.oldPos+oldPosInc,lastComponent:{count:1,added:added,removed:removed,previousComponent:last}}}extractCommon(basePath,newTokens,oldTokens,diagonalPath,options){var newLen=newTokens.length,oldLen=oldTokens.length;let oldPos=basePath.oldPos,newPos=oldPos-diagonalPath,commonCount=0;for(;newPos+1value.length?i:value}),component.value=this.join(value)}else component.value=this.join(newTokens.slice(newPos,newPos+component.count));newPos+=component.count,component.added||(oldPos+=component.count)}}return components}}class CharacterDiff extends Diff{}let characterDiff=new CharacterDiff;function longestCommonPrefix(str1,str2){let i;for(i=0;i{let startA=0,endB=(a.length>b.length&&(startA=a.length-b.length),b.length),map=(a.length{/\s/.test(part)?null==prevPart?tokens.push(part):tokens.push(tokens.pop()+part):null!=prevPart&&/\s/.test(prevPart)?tokens[tokens.length-1]==prevPart?tokens.push(tokens.pop()+part):tokens.push(prevPart+part):tokens.push(part),prevPart=part}),tokens}join(tokens){return tokens.map((token,i)=>0==i?token:token.replace(/^\s+/,"")).join("")}postProcess(changes,options){if(changes&&!options.oneChangePerToken){let lastKeep=null,insertion=null,deletion=null;changes.forEach(change=>{change.added?insertion=change:deletion=change.removed?change:((insertion||deletion)&&dedupeWhitespaceInChangeObjects(lastKeep,deletion,insertion,change),lastKeep=change,insertion=null)}),(insertion||deletion)&&dedupeWhitespaceInChangeObjects(lastKeep,deletion,insertion,null)}return changes}}let wordDiff=new WordDiff;function dedupeWhitespaceInChangeObjects(startKeep,deletion,insertion,endKeep){if(deletion&&insertion){var oldWsPrefix=leadingWs(deletion.value),oldWsSuffix=trailingWs(deletion.value),newWsPrefix=leadingWs(insertion.value),newWsSuffix=trailingWs(insertion.value);startKeep&&(oldWsPrefix=longestCommonPrefix(oldWsPrefix,newWsPrefix),startKeep.value=replaceSuffix(startKeep.value,newWsPrefix,oldWsPrefix),deletion.value=removePrefix(deletion.value,oldWsPrefix),insertion.value=removePrefix(insertion.value,oldWsPrefix)),endKeep&&(newWsPrefix=longestCommonSuffix(oldWsSuffix,newWsSuffix),endKeep.value=replacePrefix(endKeep.value,newWsSuffix,newWsPrefix),deletion.value=removeSuffix(deletion.value,newWsPrefix),insertion.value=removeSuffix(insertion.value,newWsPrefix))}else if(insertion){if(startKeep&&(oldWsPrefix=leadingWs(insertion.value),insertion.value=insertion.value.substring(oldWsPrefix.length)),endKeep){let ws=leadingWs(endKeep.value);endKeep.value=endKeep.value.substring(ws.length)}}else if(startKeep&&endKeep){oldWsSuffix=leadingWs(endKeep.value),newWsSuffix=leadingWs(deletion.value),newWsPrefix=trailingWs(deletion.value),insertion=longestCommonPrefix(oldWsSuffix,newWsSuffix),oldWsPrefix=(deletion.value=removePrefix(deletion.value,insertion),longestCommonSuffix(removePrefix(oldWsSuffix,insertion),newWsPrefix));deletion.value=removeSuffix(deletion.value,oldWsPrefix),endKeep.value=replacePrefix(endKeep.value,oldWsSuffix,oldWsPrefix),startKeep.value=replaceSuffix(startKeep.value,oldWsSuffix,oldWsSuffix.slice(0,oldWsSuffix.length-oldWsPrefix.length))}else if(endKeep){newWsSuffix=leadingWs(endKeep.value),insertion=maximumOverlap(trailingWs(deletion.value),newWsSuffix);deletion.value=removeSuffix(deletion.value,insertion)}else if(startKeep){let overlap=maximumOverlap(trailingWs(startKeep.value),leadingWs(deletion.value));deletion.value=removePrefix(deletion.value,overlap)}}class WordsWithSpaceDiff extends Diff{tokenize(value){var regex=new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`,"ug");return value.match(regex)||[]}}let wordsWithSpaceDiff=new WordsWithSpaceDiff;function diffWordsWithSpace(oldStr,newStr,options){return wordsWithSpaceDiff.diff(oldStr,newStr,options)}class LineDiff extends Diff{constructor(){super(...arguments),this.tokenize=tokenize}equals(left,right,options){return options.ignoreWhitespace?(options.newlineIsToken&&left.includes("\n")||(left=left.trim()),options.newlineIsToken&&right.includes("\n")||(right=right.trim())):options.ignoreNewlineAtEof&&!options.newlineIsToken&&(left.endsWith("\n")&&(left=left.slice(0,-1)),right.endsWith("\n"))&&(right=right.slice(0,-1)),super.equals(left,right,options)}}let lineDiff=new LineDiff;function diffLines(oldStr,newStr,options){return lineDiff.diff(oldStr,newStr,options)}function tokenize(value,options){var retLines=[],linesAndNewlines=(value=options.stripTrailingCr?value.replace(/\r\n/g,"\n"):value).split(/(\n|\r\n)/);linesAndNewlines[linesAndNewlines.length-1]||linesAndNewlines.pop();for(let i=0;ivoid 0===v?undefinedReplacement:v}=options;return"string"==typeof value?value:JSON.stringify(canonicalize(value,null,null,stringifyReplacer),null," ")}equals(left,right,options){return super.equals(left.replace(/,([\r\n])/g,"$1"),right.replace(/,([\r\n])/g,"$1"),options)}}let jsonDiff=new JsonDiff;function canonicalize(obj,stack,replacementStack,replacer,key){stack=stack||[],replacementStack=replacementStack||[],replacer&&(obj=replacer(void 0===key?"":key,obj));let i;for(i=0;i{var chunkHeaderIndex=i,chunkHeaderLine=diffstr[i++],hunk={oldStart:+(chunkHeaderLine=chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/))[1],oldLines:void 0===chunkHeaderLine[2]?1:+chunkHeaderLine[2],newStart:+chunkHeaderLine[3],newLines:void 0===chunkHeaderLine[4]?1:+chunkHeaderLine[4],lines:[]};0===hunk.oldLines&&(hunk.oldStart+=1),0===hunk.newLines&&(hunk.newStart+=1);let addCount=0,removeCount=0;for(;i{!options.autoConvertLineEndings&&null!=options.autoConvertLineEndings||((string=>string.includes("\r\n")&&!string.startsWith("\n")&&!string.match(/[^\r]\n/))(source)&&(patch=>!(patch=Array.isArray(patch)?patch:[patch]).some(index=>index.hunks.some(hunk=>hunk.lines.some(line=>!line.startsWith("\\")&&line.endsWith("\r")))))(patch)?patch=function unixToWin(patch){return Array.isArray(patch)?patch.map(p=>unixToWin(p)):Object.assign(Object.assign({},patch),{hunks:patch.hunks.map(hunk=>Object.assign(Object.assign({},hunk),{lines:hunk.lines.map((line,i)=>line.startsWith("\\")||line.endsWith("\r")||null!=(i=hunk.lines[i+1])&&i.startsWith("\\")?line:line+"\r")}))})}(patch):(string=>!string.includes("\r\n")&&string.includes("\n"))(source)&&(patch=>(patch=Array.isArray(patch)?patch:[patch]).some(index=>index.hunks.some(hunk=>hunk.lines.some(line=>line.endsWith("\r"))))&&patch.every(index=>index.hunks.every(hunk=>hunk.lines.every((line,i)=>line.startsWith("\\")||line.endsWith("\r")||(null==(line=hunk.lines[i+1])?void 0:line.startsWith("\\"))))))(patch)&&(patch=function winToUnix(patch){return Array.isArray(patch)?patch.map(p=>winToUnix(p)):Object.assign(Object.assign({},patch),{hunks:patch.hunks.map(hunk=>Object.assign(Object.assign({},hunk),{lines:hunk.lines.map(line=>line.endsWith("\r")?line.substring(0,line.length-1):line)}))})}(patch)));let lines=source.split("\n"),hunks=patch.hunks,compareLine=options.compareLine||((lineNumber,line,operation,patchContent)=>line===patchContent),fuzzFactor=options.fuzzFactor||0,minLine=0;if(fuzzFactor<0||!Number.isInteger(fuzzFactor))throw new Error("fuzzFactor must be a non-negative integer");if(!hunks.length)return source;let prevLine="",removeEOFNL=!1,addEOFNL=!1;for(let i=0;i{let wantForward=!0,backwardExhausted=!1,forwardExhausted=!1,localOffset=1;return function iterator(){if(wantForward&&!forwardExhausted){if(backwardExhausted?localOffset++:wantForward=!1,start+localOffset<=maxLine)return start+localOffset;forwardExhausted=!0}if(!backwardExhausted)return forwardExhausted||(wantForward=!0),minLine<=start-localOffset?start-localOffset++:(backwardExhausted=!0,iterator())}})(toPos=hunk.oldStart+prevHunkOffset-1,minLine,maxLine);void 0!==toPos&&!(hunkResult=function applyHunk(hunkLines,toPos,maxErrors,hunkLinesI=0,lastContextLineMatched=!0,patchedLines=[],patchedLinesLength=0){let nConsecutiveOldContextLines=0,nextContextLineMustMatch=!1;for(;hunkLinesI{diff=diffLinesResultToPatch(diff);callback(diff)}}))}function diffLinesResultToPatch(diff){if(diff){diff.push({value:"",lines:[]});var hunks=[];let oldRangeStart=0,newRangeStart=0,curRange=[],oldLine=1,newLine=1;for(let i=0;i{var hasTrailingNl=text.endsWith("\n"),text=text.split("\n").map(line=>line+"\n");return hasTrailingNl?text.pop():text.push(text.pop().slice(0,-1)),text})(current.value);if(current.lines=lines,current.added||current.removed){oldRangeStart||(prev=diff[i-1],oldRangeStart=oldLine,newRangeStart=newLine,prev&&(curRange=0formatPatch(p,headerOptions)).join("\n")}var ret=[];headerOptions.includeIndex&&patch.oldFileName==patch.newFileName&&ret.push("Index: "+patch.oldFileName),headerOptions.includeUnderline&&ret.push("==================================================================="),headerOptions.includeFileHeaders&&(ret.push("--- "+patch.oldFileName+(void 0===patch.oldHeader?"":"\t"+patch.oldHeader)),ret.push("+++ "+patch.newFileName+(void 0===patch.newHeader?"":"\t"+patch.newHeader)));for(let i=0;i{patchObj?callback(formatPatch(patchObj,options.headerOptions)):callback(void 0)}}))}else{oldFileName=structuredPatch(oldFileName,newFileName,oldStr,newStr,oldHeader,newHeader,options);if(oldFileName)return formatPatch(oldFileName,null==options?void 0:options.headerOptions)}}exports.Diff=Diff,exports.FILE_HEADERS_ONLY={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!0},exports.INCLUDE_HEADERS=INCLUDE_HEADERS,exports.OMIT_HEADERS={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!1},exports.applyPatch=applyPatch,exports.applyPatches=function(uniDiff,options){let spDiff="string"==typeof uniDiff?parsePatch(uniDiff):uniDiff,currentIndex=0;!function processIndex(){let index=spDiff[currentIndex++];if(!index)return options.complete();options.loadFile(index,function(err,data){if(err)return options.complete(err);err=applyPatch(data,index,options),options.patched(index,err,function(err){if(err)return options.complete(err);processIndex()})})}()},exports.arrayDiff=arrayDiff,exports.canonicalize=canonicalize,exports.characterDiff=characterDiff,exports.convertChangesToDMP=function(changes){var ret=[];let change,operation;for(let i=0;i"):change.removed&&ret.push(""),ret.push((s=>{let n=s;return n=(n=(n=(n=n.replace(/&/g,"&")).replace(//g,">")).replace(/"/g,""")})(change.value)),change.added?ret.push(""):change.removed&&ret.push("")}return ret.join("")},exports.createPatch=function(fileName,oldStr,newStr,oldHeader,newHeader,options){return createTwoFilesPatch(fileName,fileName,oldStr,newStr,oldHeader,newHeader,options)},exports.createTwoFilesPatch=createTwoFilesPatch,exports.cssDiff=cssDiff,exports.diffArrays=function(oldArr,newArr,options){return arrayDiff.diff(oldArr,newArr,options)},exports.diffChars=function(oldStr,newStr,options){return characterDiff.diff(oldStr,newStr,options)},exports.diffCss=function(oldStr,newStr,options){return cssDiff.diff(oldStr,newStr,options)},exports.diffJson=function(oldStr,newStr,options){return jsonDiff.diff(oldStr,newStr,options)},exports.diffLines=diffLines,exports.diffSentences=function(oldStr,newStr,options){return sentenceDiff.diff(oldStr,newStr,options)},exports.diffTrimmedLines=function(oldStr,newStr,options){return options=((options,defaults)=>{if("function"==typeof options)defaults.callback=options;else if(options)for(var name in options)Object.prototype.hasOwnProperty.call(options,name)&&(defaults[name]=options[name]);return defaults})(options,{ignoreWhitespace:!0}),lineDiff.diff(oldStr,newStr,options)},exports.diffWords=function(oldStr,newStr,options){return null==(null==options?void 0:options.ignoreWhitespace)||options.ignoreWhitespace?wordDiff.diff(oldStr,newStr,options):diffWordsWithSpace(oldStr,newStr,options)},exports.diffWordsWithSpace=diffWordsWithSpace,exports.formatPatch=formatPatch,exports.jsonDiff=jsonDiff,exports.lineDiff=lineDiff,exports.parsePatch=parsePatch,exports.reversePatch=function reversePatch(structuredPatch){return Array.isArray(structuredPatch)?structuredPatch.map(patch=>reversePatch(patch)).reverse():Object.assign(Object.assign({},structuredPatch),{oldFileName:structuredPatch.newFileName,oldHeader:structuredPatch.newHeader,newFileName:structuredPatch.oldFileName,newHeader:structuredPatch.oldHeader,hunks:structuredPatch.hunks.map(hunk=>({oldLines:hunk.newLines,oldStart:hunk.newStart,newLines:hunk.oldLines,newStart:hunk.oldStart,lines:hunk.lines.map(l=>l.startsWith("-")?"+"+l.slice(1):l.startsWith("+")?"-"+l.slice(1):l)}))})},exports.sentenceDiff=sentenceDiff,exports.structuredPatch=structuredPatch,exports.wordDiff=wordDiff,exports.wordsWithSpaceDiff=wordsWithSpaceDiff}); \ No newline at end of file +((global,factory)=>{"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self).Diff={})})(this,function(exports){class Diff{diff(oldStr,newStr,options={}){let callback;"function"==typeof options?(callback=options,options={}):"callback"in options&&(callback=options.callback);oldStr=this.castInput(oldStr,options),newStr=this.castInput(newStr,options),oldStr=this.removeEmpty(this.tokenize(oldStr,options)),newStr=this.removeEmpty(this.tokenize(newStr,options));return this.diffWithOptionsObj(oldStr,newStr,options,callback)}diffWithOptionsObj(oldTokens,newTokens,options,callback){let _a,done=value=>{if(value=this.postProcess(value,options),!callback)return value;setTimeout(function(){callback(value)},0)},newLen=newTokens.length,oldLen=oldTokens.length,editLength=1,maxEditLength=newLen+oldLen;null!=options.maxEditLength&&(maxEditLength=Math.min(maxEditLength,options.maxEditLength));var maxExecutionTime=null!=(_a=options.timeout)?_a:1/0;let abortAfterTimestamp=Date.now()+maxExecutionTime,bestPath=[{oldPos:-1,lastComponent:void 0}],newPos=this.extractCommon(bestPath[0],newTokens,oldTokens,0,options);if(bestPath[0].oldPos+1>=oldLen&&newPos+1>=newLen)return done(this.buildValues(bestPath[0].lastComponent,newTokens,oldTokens));let minDiagonalToConsider=-1/0,maxDiagonalToConsider=1/0,execEditLength=()=>{for(let diagonalPath=Math.max(minDiagonalToConsider,-editLength);diagonalPath<=Math.min(maxDiagonalToConsider,editLength);diagonalPath+=2){let basePath;var removePath=bestPath[diagonalPath-1],addPath=bestPath[diagonalPath+1];removePath&&(bestPath[diagonalPath-1]=void 0);let canAdd=!1;addPath&&(addPathNewPos=addPath.oldPos-diagonalPath,canAdd=addPath&&0<=addPathNewPos&&addPathNewPos=oldLen&&newPos+1>=newLen)return done(this.buildValues(basePath.lastComponent,newTokens,oldTokens))||!0;(bestPath[diagonalPath]=basePath).oldPos+1>=oldLen&&(maxDiagonalToConsider=Math.min(maxDiagonalToConsider,diagonalPath-1)),newPos+1>=newLen&&(minDiagonalToConsider=Math.max(minDiagonalToConsider,diagonalPath+1))}else bestPath[diagonalPath]=void 0}editLength++};if(callback)!function exec(){setTimeout(function(){if(editLength>maxEditLength||Date.now()>abortAfterTimestamp)return callback(void 0);execEditLength()||exec()},0)}();else for(;editLength<=maxEditLength&&Date.now()<=abortAfterTimestamp;){var ret=execEditLength();if(ret)return ret}}addToPath(path,added,removed,oldPosInc,options){var last=path.lastComponent;return last&&!options.oneChangePerToken&&last.added===added&&last.removed===removed?{oldPos:path.oldPos+oldPosInc,lastComponent:{count:last.count+1,added:added,removed:removed,previousComponent:last.previousComponent}}:{oldPos:path.oldPos+oldPosInc,lastComponent:{count:1,added:added,removed:removed,previousComponent:last}}}extractCommon(basePath,newTokens,oldTokens,diagonalPath,options){var newLen=newTokens.length,oldLen=oldTokens.length;let oldPos=basePath.oldPos,newPos=oldPos-diagonalPath,commonCount=0;for(;newPos+1value.length?i:value}),component.value=this.join(value)}else component.value=this.join(newTokens.slice(newPos,newPos+component.count));newPos+=component.count,component.added||(oldPos+=component.count)}}return components}}class CharacterDiff extends Diff{}let characterDiff=new CharacterDiff;function longestCommonPrefix(str1,str2){let i;for(i=0;i{let startA=0,endB=(a.length>b.length&&(startA=a.length-b.length),b.length),map=(a.length{/\s/.test(part)?null==prevPart?tokens.push(part):tokens.push(tokens.pop()+part):null!=prevPart&&/\s/.test(prevPart)?tokens[tokens.length-1]==prevPart?tokens.push(tokens.pop()+part):tokens.push(prevPart+part):tokens.push(part),prevPart=part}),tokens}join(tokens){return tokens.map((token,i)=>0==i?token:token.replace(/^\s+/,"")).join("")}postProcess(changes,options){if(changes&&!options.oneChangePerToken){let lastKeep=null,insertion=null,deletion=null;changes.forEach(change=>{change.added?insertion=change:deletion=change.removed?change:((insertion||deletion)&&dedupeWhitespaceInChangeObjects(lastKeep,deletion,insertion,change,options.intlSegmenter),lastKeep=change,insertion=null)}),(insertion||deletion)&&dedupeWhitespaceInChangeObjects(lastKeep,deletion,insertion,null,options.intlSegmenter)}return changes}}let wordDiff=new WordDiff;function dedupeWhitespaceInChangeObjects(startKeep,deletion,insertion,endKeep,segmenter){if(deletion&&insertion){var[oldWsPrefix,oldWsSuffix]=leadingAndTrailingWs(deletion.value,segmenter),[newWsPrefix,newWsSuffix]=leadingAndTrailingWs(insertion.value,segmenter);startKeep&&(oldWsPrefix=longestCommonPrefix(oldWsPrefix,newWsPrefix),startKeep.value=replaceSuffix(startKeep.value,newWsPrefix,oldWsPrefix),deletion.value=removePrefix(deletion.value,oldWsPrefix),insertion.value=removePrefix(insertion.value,oldWsPrefix)),endKeep&&(newWsPrefix=longestCommonSuffix(oldWsSuffix,newWsSuffix),endKeep.value=replacePrefix(endKeep.value,newWsSuffix,newWsPrefix),deletion.value=removeSuffix(deletion.value,newWsPrefix),insertion.value=removeSuffix(insertion.value,newWsPrefix))}else if(insertion){if(startKeep&&(oldWsPrefix=leadingWs(insertion.value,segmenter),insertion.value=insertion.value.substring(oldWsPrefix.length)),endKeep){let ws=leadingWs(endKeep.value,segmenter);endKeep.value=endKeep.value.substring(ws.length)}}else if(startKeep&&endKeep){var oldWsSuffix=leadingWs(endKeep.value,segmenter),[newWsSuffix,newWsPrefix]=leadingAndTrailingWs(deletion.value,segmenter),insertion=longestCommonPrefix(oldWsSuffix,newWsSuffix),oldWsPrefix=(deletion.value=removePrefix(deletion.value,insertion),longestCommonSuffix(removePrefix(oldWsSuffix,insertion),newWsPrefix));deletion.value=removeSuffix(deletion.value,oldWsPrefix),endKeep.value=replacePrefix(endKeep.value,oldWsSuffix,oldWsPrefix),startKeep.value=replaceSuffix(startKeep.value,oldWsSuffix,oldWsSuffix.slice(0,oldWsSuffix.length-oldWsPrefix.length))}else if(endKeep){newWsSuffix=leadingWs(endKeep.value,segmenter),insertion=maximumOverlap(trailingWs(deletion.value,segmenter),newWsSuffix);deletion.value=removeSuffix(deletion.value,insertion)}else if(startKeep){let overlap=maximumOverlap(trailingWs(startKeep.value,segmenter),leadingWs(deletion.value,segmenter));deletion.value=removePrefix(deletion.value,overlap)}}class WordsWithSpaceDiff extends Diff{tokenize(value){var regex=new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`,"ug");return value.match(regex)||[]}}let wordsWithSpaceDiff=new WordsWithSpaceDiff;function diffWordsWithSpace(oldStr,newStr,options){return wordsWithSpaceDiff.diff(oldStr,newStr,options)}class LineDiff extends Diff{constructor(){super(...arguments),this.tokenize=tokenize}equals(left,right,options){return options.ignoreWhitespace?(options.newlineIsToken&&left.includes("\n")||(left=left.trim()),options.newlineIsToken&&right.includes("\n")||(right=right.trim())):options.ignoreNewlineAtEof&&!options.newlineIsToken&&(left.endsWith("\n")&&(left=left.slice(0,-1)),right.endsWith("\n"))&&(right=right.slice(0,-1)),super.equals(left,right,options)}}let lineDiff=new LineDiff;function diffLines(oldStr,newStr,options){return lineDiff.diff(oldStr,newStr,options)}function tokenize(value,options){var retLines=[],linesAndNewlines=(value=options.stripTrailingCr?value.replace(/\r\n/g,"\n"):value).split(/(\n|\r\n)/);linesAndNewlines[linesAndNewlines.length-1]||linesAndNewlines.pop();for(let i=0;ivoid 0===v?undefinedReplacement:v}=options;return"string"==typeof value?value:JSON.stringify(canonicalize(value,null,null,stringifyReplacer),null," ")}equals(left,right,options){return super.equals(left.replace(/,([\r\n])/g,"$1"),right.replace(/,([\r\n])/g,"$1"),options)}}let jsonDiff=new JsonDiff;function canonicalize(obj,stack,replacementStack,replacer,key){stack=stack||[],replacementStack=replacementStack||[],replacer&&(obj=replacer(void 0===key?"":key,obj));let i;for(i=0;i{var chunkHeaderIndex=i,chunkHeaderLine=diffstr[i++],hunk={oldStart:+(chunkHeaderLine=chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/))[1],oldLines:void 0===chunkHeaderLine[2]?1:+chunkHeaderLine[2],newStart:+chunkHeaderLine[3],newLines:void 0===chunkHeaderLine[4]?1:+chunkHeaderLine[4],lines:[]};0===hunk.oldLines&&(hunk.oldStart+=1),0===hunk.newLines&&(hunk.newStart+=1);let addCount=0,removeCount=0;for(;i{!options.autoConvertLineEndings&&null!=options.autoConvertLineEndings||((string=>string.includes("\r\n")&&!string.startsWith("\n")&&!string.match(/[^\r]\n/))(source)&&(patch=>!(patch=Array.isArray(patch)?patch:[patch]).some(index=>index.hunks.some(hunk=>hunk.lines.some(line=>!line.startsWith("\\")&&line.endsWith("\r")))))(patch)?patch=function unixToWin(patch){return Array.isArray(patch)?patch.map(p=>unixToWin(p)):Object.assign(Object.assign({},patch),{hunks:patch.hunks.map(hunk=>Object.assign(Object.assign({},hunk),{lines:hunk.lines.map((line,i)=>line.startsWith("\\")||line.endsWith("\r")||null!=(i=hunk.lines[i+1])&&i.startsWith("\\")?line:line+"\r")}))})}(patch):(string=>!string.includes("\r\n")&&string.includes("\n"))(source)&&(patch=>(patch=Array.isArray(patch)?patch:[patch]).some(index=>index.hunks.some(hunk=>hunk.lines.some(line=>line.endsWith("\r"))))&&patch.every(index=>index.hunks.every(hunk=>hunk.lines.every((line,i)=>line.startsWith("\\")||line.endsWith("\r")||(null==(line=hunk.lines[i+1])?void 0:line.startsWith("\\"))))))(patch)&&(patch=function winToUnix(patch){return Array.isArray(patch)?patch.map(p=>winToUnix(p)):Object.assign(Object.assign({},patch),{hunks:patch.hunks.map(hunk=>Object.assign(Object.assign({},hunk),{lines:hunk.lines.map(line=>line.endsWith("\r")?line.substring(0,line.length-1):line)}))})}(patch)));let lines=source.split("\n"),hunks=patch.hunks,compareLine=options.compareLine||((lineNumber,line,operation,patchContent)=>line===patchContent),fuzzFactor=options.fuzzFactor||0,minLine=0;if(fuzzFactor<0||!Number.isInteger(fuzzFactor))throw new Error("fuzzFactor must be a non-negative integer");if(!hunks.length)return source;let prevLine="",removeEOFNL=!1,addEOFNL=!1;for(let i=0;i{let wantForward=!0,backwardExhausted=!1,forwardExhausted=!1,localOffset=1;return function iterator(){if(wantForward&&!forwardExhausted){if(backwardExhausted?localOffset++:wantForward=!1,start+localOffset<=maxLine)return start+localOffset;forwardExhausted=!0}if(!backwardExhausted)return forwardExhausted||(wantForward=!0),minLine<=start-localOffset?start-localOffset++:(backwardExhausted=!0,iterator())}})(toPos=hunk.oldStart+prevHunkOffset-1,minLine,maxLine);void 0!==toPos&&!(hunkResult=function applyHunk(hunkLines,toPos,maxErrors,hunkLinesI=0,lastContextLineMatched=!0,patchedLines=[],patchedLinesLength=0){let nConsecutiveOldContextLines=0,nextContextLineMustMatch=!1;for(;hunkLinesI{diff=diffLinesResultToPatch(diff);callback(diff)}}))}function diffLinesResultToPatch(diff){if(diff){diff.push({value:"",lines:[]});var hunks=[];let oldRangeStart=0,newRangeStart=0,curRange=[],oldLine=1,newLine=1;for(let i=0;i{var hasTrailingNl=text.endsWith("\n"),text=text.split("\n").map(line=>line+"\n");return hasTrailingNl?text.pop():text.push(text.pop().slice(0,-1)),text})(current.value);if(current.lines=lines,current.added||current.removed){oldRangeStart||(prev=diff[i-1],oldRangeStart=oldLine,newRangeStart=newLine,prev&&(curRange=0formatPatch(p,headerOptions)).join("\n")}var ret=[];headerOptions.includeIndex&&patch.oldFileName==patch.newFileName&&ret.push("Index: "+patch.oldFileName),headerOptions.includeUnderline&&ret.push("==================================================================="),headerOptions.includeFileHeaders&&(ret.push("--- "+patch.oldFileName+(void 0===patch.oldHeader?"":"\t"+patch.oldHeader)),ret.push("+++ "+patch.newFileName+(void 0===patch.newHeader?"":"\t"+patch.newHeader)));for(let i=0;i{patchObj?callback(formatPatch(patchObj,options.headerOptions)):callback(void 0)}}))}else{oldFileName=structuredPatch(oldFileName,newFileName,oldStr,newStr,oldHeader,newHeader,options);if(oldFileName)return formatPatch(oldFileName,null==options?void 0:options.headerOptions)}}exports.Diff=Diff,exports.FILE_HEADERS_ONLY={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!0},exports.INCLUDE_HEADERS=INCLUDE_HEADERS,exports.OMIT_HEADERS={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!1},exports.applyPatch=applyPatch,exports.applyPatches=function(uniDiff,options){let spDiff="string"==typeof uniDiff?parsePatch(uniDiff):uniDiff,currentIndex=0;!function processIndex(){let index=spDiff[currentIndex++];if(!index)return options.complete();options.loadFile(index,function(err,data){if(err)return options.complete(err);err=applyPatch(data,index,options),options.patched(index,err,function(err){if(err)return options.complete(err);processIndex()})})}()},exports.arrayDiff=arrayDiff,exports.canonicalize=canonicalize,exports.characterDiff=characterDiff,exports.convertChangesToDMP=function(changes){var ret=[];let change,operation;for(let i=0;i"):change.removed&&ret.push(""),ret.push((s=>{let n=s;return n=(n=(n=(n=n.replace(/&/g,"&")).replace(//g,">")).replace(/"/g,""")})(change.value)),change.added?ret.push(""):change.removed&&ret.push("")}return ret.join("")},exports.createPatch=function(fileName,oldStr,newStr,oldHeader,newHeader,options){return createTwoFilesPatch(fileName,fileName,oldStr,newStr,oldHeader,newHeader,options)},exports.createTwoFilesPatch=createTwoFilesPatch,exports.cssDiff=cssDiff,exports.diffArrays=function(oldArr,newArr,options){return arrayDiff.diff(oldArr,newArr,options)},exports.diffChars=function(oldStr,newStr,options){return characterDiff.diff(oldStr,newStr,options)},exports.diffCss=function(oldStr,newStr,options){return cssDiff.diff(oldStr,newStr,options)},exports.diffJson=function(oldStr,newStr,options){return jsonDiff.diff(oldStr,newStr,options)},exports.diffLines=diffLines,exports.diffSentences=function(oldStr,newStr,options){return sentenceDiff.diff(oldStr,newStr,options)},exports.diffTrimmedLines=function(oldStr,newStr,options){return options=((options,defaults)=>{if("function"==typeof options)defaults.callback=options;else if(options)for(var name in options)Object.prototype.hasOwnProperty.call(options,name)&&(defaults[name]=options[name]);return defaults})(options,{ignoreWhitespace:!0}),lineDiff.diff(oldStr,newStr,options)},exports.diffWords=function(oldStr,newStr,options){return null==(null==options?void 0:options.ignoreWhitespace)||options.ignoreWhitespace?wordDiff.diff(oldStr,newStr,options):diffWordsWithSpace(oldStr,newStr,options)},exports.diffWordsWithSpace=diffWordsWithSpace,exports.formatPatch=formatPatch,exports.jsonDiff=jsonDiff,exports.lineDiff=lineDiff,exports.parsePatch=parsePatch,exports.reversePatch=function reversePatch(structuredPatch){return Array.isArray(structuredPatch)?structuredPatch.map(patch=>reversePatch(patch)).reverse():Object.assign(Object.assign({},structuredPatch),{oldFileName:structuredPatch.newFileName,oldHeader:structuredPatch.newHeader,newFileName:structuredPatch.oldFileName,newHeader:structuredPatch.oldHeader,hunks:structuredPatch.hunks.map(hunk=>({oldLines:hunk.newLines,oldStart:hunk.newStart,newLines:hunk.oldLines,newStart:hunk.oldStart,lines:hunk.lines.map(l=>l.startsWith("-")?"+"+l.slice(1):l.startsWith("+")?"-"+l.slice(1):l)}))})},exports.sentenceDiff=sentenceDiff,exports.structuredPatch=structuredPatch,exports.wordDiff=wordDiff,exports.wordsWithSpaceDiff=wordsWithSpaceDiff}); \ No newline at end of file diff --git a/deps/npm/node_modules/diff/libcjs/diff/word.js b/deps/npm/node_modules/diff/libcjs/diff/word.js index e3cf8ba6bc1ee3..1a24ac51df2aa4 100644 --- a/deps/npm/node_modules/diff/libcjs/diff/word.js +++ b/deps/npm/node_modules/diff/libcjs/diff/word.js @@ -89,23 +89,9 @@ var WordDiff = /** @class */ (function (_super) { // We want `parts` to be an array whose elements alternate between being // pure whitespace and being pure non-whitespace. This is ALMOST what the // segments returned by a word-based Intl.Segmenter already look like, - // and therefore we can ALMOST get what we want by simply doing... - // parts = Array.from(segmenter.segment(value), segment => segment.segment); - // ... but not QUITE, because there's of one annoying special case: every - // newline character gets its own segment, instead of sharing a segment - // with other surrounding whitespace. We therefore need to manually merge - // consecutive segments of whitespace into a single part: - parts = []; - for (var _i = 0, _a = Array.from(segmenter.segment(value)); _i < _a.length; _i++) { - var segmentObj = _a[_i]; - var segment = segmentObj.segment; - if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment)) { - parts[parts.length - 1] += segment; - } - else { - parts.push(segment); - } - } + // but not quite - see explanation in the docs of our custom segment() + // function. + parts = (0, string_js_1.segment)(value, segmenter); } else { parts = value.match(tokenizeIncludingWhitespace) || []; @@ -169,7 +155,7 @@ var WordDiff = /** @class */ (function (_super) { } else { if (insertion || deletion) { // May be false at start of text - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter); } lastKeep = change; insertion = null; @@ -177,7 +163,7 @@ var WordDiff = /** @class */ (function (_super) { } }); if (insertion || deletion) { - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter); } return changes; }; @@ -194,7 +180,7 @@ function diffWords(oldStr, newStr, options) { } return exports.wordDiff.diff(oldStr, newStr, options); } -function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) { +function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) { // Before returning, we tidy up the leading and trailing whitespace of the // change objects to eliminate cases where trailing whitespace in one object // is repeated as leading whitespace in the next. @@ -237,10 +223,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // * Just a "delete" // We handle the three cases separately. if (deletion && insertion) { - var oldWsPrefix = (0, string_js_1.leadingWs)(deletion.value); - var oldWsSuffix = (0, string_js_1.trailingWs)(deletion.value); - var newWsPrefix = (0, string_js_1.leadingWs)(insertion.value); - var newWsSuffix = (0, string_js_1.trailingWs)(insertion.value); + var _a = (0, string_js_1.leadingAndTrailingWs)(deletion.value, segmenter), oldWsPrefix = _a[0], oldWsSuffix = _a[1]; + var _b = (0, string_js_1.leadingAndTrailingWs)(insertion.value, segmenter), newWsPrefix = _b[0], newWsSuffix = _b[1]; if (startKeep) { var commonWsPrefix = (0, string_js_1.longestCommonPrefix)(oldWsPrefix, newWsPrefix); startKeep.value = (0, string_js_1.replaceSuffix)(startKeep.value, newWsPrefix, commonWsPrefix); @@ -262,17 +246,17 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // whitespace and deleting duplicate leading whitespace where // present. if (startKeep) { - var ws = (0, string_js_1.leadingWs)(insertion.value); + var ws = (0, string_js_1.leadingWs)(insertion.value, segmenter); insertion.value = insertion.value.substring(ws.length); } if (endKeep) { - var ws = (0, string_js_1.leadingWs)(endKeep.value); + var ws = (0, string_js_1.leadingWs)(endKeep.value, segmenter); endKeep.value = endKeep.value.substring(ws.length); } // otherwise we've got a deletion and no insertion } else if (startKeep && endKeep) { - var newWsFull = (0, string_js_1.leadingWs)(endKeep.value), delWsStart = (0, string_js_1.leadingWs)(deletion.value), delWsEnd = (0, string_js_1.trailingWs)(deletion.value); + var newWsFull = (0, string_js_1.leadingWs)(endKeep.value, segmenter), _c = (0, string_js_1.leadingAndTrailingWs)(deletion.value, segmenter), delWsStart = _c[0], delWsEnd = _c[1]; // Any whitespace that comes straight after startKeep in both the old and // new texts, assign to startKeep and remove from the deletion. var newWsStart = (0, string_js_1.longestCommonPrefix)(newWsFull, delWsStart); @@ -291,8 +275,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // We are at the start of the text. Preserve all the whitespace on // endKeep, and just remove whitespace from the end of deletion to the // extent that it overlaps with the start of endKeep. - var endKeepWsPrefix = (0, string_js_1.leadingWs)(endKeep.value); - var deletionWsSuffix = (0, string_js_1.trailingWs)(deletion.value); + var endKeepWsPrefix = (0, string_js_1.leadingWs)(endKeep.value, segmenter); + var deletionWsSuffix = (0, string_js_1.trailingWs)(deletion.value, segmenter); var overlap = (0, string_js_1.maximumOverlap)(deletionWsSuffix, endKeepWsPrefix); deletion.value = (0, string_js_1.removeSuffix)(deletion.value, overlap); } @@ -300,8 +284,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // We are at the END of the text. Preserve all the whitespace on // startKeep, and just remove whitespace from the start of deletion to // the extent that it overlaps with the end of startKeep. - var startKeepWsSuffix = (0, string_js_1.trailingWs)(startKeep.value); - var deletionWsPrefix = (0, string_js_1.leadingWs)(deletion.value); + var startKeepWsSuffix = (0, string_js_1.trailingWs)(startKeep.value, segmenter); + var deletionWsPrefix = (0, string_js_1.leadingWs)(deletion.value, segmenter); var overlap = (0, string_js_1.maximumOverlap)(startKeepWsSuffix, deletionWsPrefix); deletion.value = (0, string_js_1.removePrefix)(deletion.value, overlap); } diff --git a/deps/npm/node_modules/diff/libcjs/util/string.js b/deps/npm/node_modules/diff/libcjs/util/string.js index a36bf61eea2e4b..0e5a048e646ae3 100644 --- a/deps/npm/node_modules/diff/libcjs/util/string.js +++ b/deps/npm/node_modules/diff/libcjs/util/string.js @@ -9,8 +9,10 @@ exports.removeSuffix = removeSuffix; exports.maximumOverlap = maximumOverlap; exports.hasOnlyWinLineEndings = hasOnlyWinLineEndings; exports.hasOnlyUnixLineEndings = hasOnlyUnixLineEndings; +exports.segment = segment; exports.trailingWs = trailingWs; exports.leadingWs = leadingWs; +exports.leadingAndTrailingWs = leadingAndTrailingWs; function longestCommonPrefix(str1, str2) { var i; for (i = 0; i < str1.length && i < str2.length; i++) { @@ -114,7 +116,47 @@ function hasOnlyWinLineEndings(string) { function hasOnlyUnixLineEndings(string) { return !string.includes('\r\n') && string.includes('\n'); } -function trailingWs(string) { +/** + * Split a string into segments using a word segmenter, merging consecutive + * segments if they are both whitespace segments. Whitespace segments can + * appear adjacent to one another for two reasons: + * - newlines always get their own segment + * - where a diacritic is attached to a whitespace character in the text, the + * segment ends after the diacritic, so e.g. " \u0300 " becomes two segments. + * This function therefore runs the segmenter's .segment() method and then + * merges consecutive segments of whitespace into a single part. + */ +function segment(string, segmenter) { + var parts = []; + for (var _i = 0, _a = Array.from(segmenter.segment(string)); _i < _a.length; _i++) { + var segmentObj = _a[_i]; + var segment_1 = segmentObj.segment; + if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment_1)) { + parts[parts.length - 1] += segment_1; + } + else { + parts.push(segment_1); + } + } + return parts; +} +// The functions below take a `segmenter` argument so that, when called from +// diffWords when it is using a segmenter, they can use a notion of what +// constitutes "whitespace" that is consistent with the segmenter. +// +// USUALLY this will be identical to the result of the non-segmenter-based +// logic, but it differs in at least one case: when whitespace characters are +// modified by diacritics. A word segmenter considers these diacritics to be +// part of the whitespace, whereas our non-segmenter-based logic does not. +// +// Because the segmenter-based approach necessarily requires segmenting the +// entire string, we offer a leadingAndTrailingWs function to allow getting the +// whitespace prefix AND whitespace suffix with a single call to the segmenter, +// for efficiency's sake. +function trailingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[1]; + } // Yes, this looks overcomplicated and dumb - why not replace the whole function with // return string.match(/\s*$/)[0] // you ask? Because: @@ -134,8 +176,25 @@ function trailingWs(string) { } return string.substring(i + 1); } -function leadingWs(string) { +function leadingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[0]; + } // Thankfully the annoying considerations described in trailingWs don't apply here: var match = string.match(/^\s*/); return match ? match[0] : ''; } +function leadingAndTrailingWs(string, segmenter) { + if (!segmenter) { + return [leadingWs(string), trailingWs(string)]; + } + if (segmenter.resolvedOptions().granularity != 'word') { + throw new Error('The segmenter passed must have a granularity of "word"'); + } + var segments = segment(string, segmenter); + var firstSeg = segments[0]; + var lastSeg = segments[segments.length - 1]; + var head = (/\s/).test(firstSeg) ? firstSeg : ''; + var tail = (/\s/).test(lastSeg) ? lastSeg : ''; + return [head, tail]; +} diff --git a/deps/npm/node_modules/diff/libesm/diff/word.js b/deps/npm/node_modules/diff/libesm/diff/word.js index e828f825020f4a..284231ef9d45a2 100644 --- a/deps/npm/node_modules/diff/libesm/diff/word.js +++ b/deps/npm/node_modules/diff/libesm/diff/word.js @@ -1,5 +1,5 @@ import Diff from './base.js'; -import { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs } from '../util/string.js'; +import { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs, leadingAndTrailingWs, segment } from '../util/string.js'; // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode // // Chars/ranges counted as "word" characters by this regex are as follows: @@ -64,22 +64,9 @@ class WordDiff extends Diff { // We want `parts` to be an array whose elements alternate between being // pure whitespace and being pure non-whitespace. This is ALMOST what the // segments returned by a word-based Intl.Segmenter already look like, - // and therefore we can ALMOST get what we want by simply doing... - // parts = Array.from(segmenter.segment(value), segment => segment.segment); - // ... but not QUITE, because there's of one annoying special case: every - // newline character gets its own segment, instead of sharing a segment - // with other surrounding whitespace. We therefore need to manually merge - // consecutive segments of whitespace into a single part: - parts = []; - for (const segmentObj of Array.from(segmenter.segment(value))) { - const segment = segmentObj.segment; - if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment)) { - parts[parts.length - 1] += segment; - } - else { - parts.push(segment); - } - } + // but not quite - see explanation in the docs of our custom segment() + // function. + parts = segment(value, segmenter); } else { parts = value.match(tokenizeIncludingWhitespace) || []; @@ -143,7 +130,7 @@ class WordDiff extends Diff { } else { if (insertion || deletion) { // May be false at start of text - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter); } lastKeep = change; insertion = null; @@ -151,7 +138,7 @@ class WordDiff extends Diff { } }); if (insertion || deletion) { - dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null); + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter); } return changes; } @@ -167,7 +154,7 @@ export function diffWords(oldStr, newStr, options) { } return wordDiff.diff(oldStr, newStr, options); } -function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) { +function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) { // Before returning, we tidy up the leading and trailing whitespace of the // change objects to eliminate cases where trailing whitespace in one object // is repeated as leading whitespace in the next. @@ -210,10 +197,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // * Just a "delete" // We handle the three cases separately. if (deletion && insertion) { - const oldWsPrefix = leadingWs(deletion.value); - const oldWsSuffix = trailingWs(deletion.value); - const newWsPrefix = leadingWs(insertion.value); - const newWsSuffix = trailingWs(insertion.value); + const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter); + const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter); if (startKeep) { const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix); startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix); @@ -235,17 +220,17 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // whitespace and deleting duplicate leading whitespace where // present. if (startKeep) { - const ws = leadingWs(insertion.value); + const ws = leadingWs(insertion.value, segmenter); insertion.value = insertion.value.substring(ws.length); } if (endKeep) { - const ws = leadingWs(endKeep.value); + const ws = leadingWs(endKeep.value, segmenter); endKeep.value = endKeep.value.substring(ws.length); } // otherwise we've got a deletion and no insertion } else if (startKeep && endKeep) { - const newWsFull = leadingWs(endKeep.value), delWsStart = leadingWs(deletion.value), delWsEnd = trailingWs(deletion.value); + const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter); // Any whitespace that comes straight after startKeep in both the old and // new texts, assign to startKeep and remove from the deletion. const newWsStart = longestCommonPrefix(newWsFull, delWsStart); @@ -264,8 +249,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // We are at the start of the text. Preserve all the whitespace on // endKeep, and just remove whitespace from the end of deletion to the // extent that it overlaps with the start of endKeep. - const endKeepWsPrefix = leadingWs(endKeep.value); - const deletionWsSuffix = trailingWs(deletion.value); + const endKeepWsPrefix = leadingWs(endKeep.value, segmenter); + const deletionWsSuffix = trailingWs(deletion.value, segmenter); const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix); deletion.value = removeSuffix(deletion.value, overlap); } @@ -273,8 +258,8 @@ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep // We are at the END of the text. Preserve all the whitespace on // startKeep, and just remove whitespace from the start of deletion to // the extent that it overlaps with the end of startKeep. - const startKeepWsSuffix = trailingWs(startKeep.value); - const deletionWsPrefix = leadingWs(deletion.value); + const startKeepWsSuffix = trailingWs(startKeep.value, segmenter); + const deletionWsPrefix = leadingWs(deletion.value, segmenter); const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix); deletion.value = removePrefix(deletion.value, overlap); } diff --git a/deps/npm/node_modules/diff/libesm/util/string.js b/deps/npm/node_modules/diff/libesm/util/string.js index 32ab86455bf3fb..edb6d14a9aa5aa 100644 --- a/deps/npm/node_modules/diff/libesm/util/string.js +++ b/deps/npm/node_modules/diff/libesm/util/string.js @@ -101,7 +101,46 @@ export function hasOnlyWinLineEndings(string) { export function hasOnlyUnixLineEndings(string) { return !string.includes('\r\n') && string.includes('\n'); } -export function trailingWs(string) { +/** + * Split a string into segments using a word segmenter, merging consecutive + * segments if they are both whitespace segments. Whitespace segments can + * appear adjacent to one another for two reasons: + * - newlines always get their own segment + * - where a diacritic is attached to a whitespace character in the text, the + * segment ends after the diacritic, so e.g. " \u0300 " becomes two segments. + * This function therefore runs the segmenter's .segment() method and then + * merges consecutive segments of whitespace into a single part. + */ +export function segment(string, segmenter) { + const parts = []; + for (const segmentObj of Array.from(segmenter.segment(string))) { + const segment = segmentObj.segment; + if (parts.length && (/\s/).test(parts[parts.length - 1]) && (/\s/).test(segment)) { + parts[parts.length - 1] += segment; + } + else { + parts.push(segment); + } + } + return parts; +} +// The functions below take a `segmenter` argument so that, when called from +// diffWords when it is using a segmenter, they can use a notion of what +// constitutes "whitespace" that is consistent with the segmenter. +// +// USUALLY this will be identical to the result of the non-segmenter-based +// logic, but it differs in at least one case: when whitespace characters are +// modified by diacritics. A word segmenter considers these diacritics to be +// part of the whitespace, whereas our non-segmenter-based logic does not. +// +// Because the segmenter-based approach necessarily requires segmenting the +// entire string, we offer a leadingAndTrailingWs function to allow getting the +// whitespace prefix AND whitespace suffix with a single call to the segmenter, +// for efficiency's sake. +export function trailingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[1]; + } // Yes, this looks overcomplicated and dumb - why not replace the whole function with // return string.match(/\s*$/)[0] // you ask? Because: @@ -121,8 +160,25 @@ export function trailingWs(string) { } return string.substring(i + 1); } -export function leadingWs(string) { +export function leadingWs(string, segmenter) { + if (segmenter) { + return leadingAndTrailingWs(string, segmenter)[0]; + } // Thankfully the annoying considerations described in trailingWs don't apply here: const match = string.match(/^\s*/); return match ? match[0] : ''; } +export function leadingAndTrailingWs(string, segmenter) { + if (!segmenter) { + return [leadingWs(string), trailingWs(string)]; + } + if (segmenter.resolvedOptions().granularity != 'word') { + throw new Error('The segmenter passed must have a granularity of "word"'); + } + const segments = segment(string, segmenter); + const firstSeg = segments[0]; + const lastSeg = segments[segments.length - 1]; + const head = (/\s/).test(firstSeg) ? firstSeg : ''; + const tail = (/\s/).test(lastSeg) ? lastSeg : ''; + return [head, tail]; +} diff --git a/deps/npm/node_modules/diff/package.json b/deps/npm/node_modules/diff/package.json index f5a87f0610a884..7d021f318c1107 100644 --- a/deps/npm/node_modules/diff/package.json +++ b/deps/npm/node_modules/diff/package.json @@ -1,6 +1,6 @@ { "name": "diff", - "version": "8.0.3", + "version": "8.0.4", "description": "A JavaScript text diff implementation.", "keywords": [ "diff", @@ -83,35 +83,33 @@ "run-mocha": "mocha --require ./runtime 'test/**/*.js'" }, "devDependencies": { - "@arethetypeswrong/cli": "^0.17.4", - "@babel/core": "^7.26.9", - "@babel/preset-env": "^7.26.9", - "@babel/register": "^7.25.9", + "@arethetypeswrong/cli": "^0.18.2", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.2", + "@babel/register": "^7.28.6", "@colors/colors": "^1.6.0", - "@eslint/js": "^9.25.1", - "babel-loader": "^10.0.0", - "babel-plugin-istanbul": "^7.0.0", - "chai": "^5.2.0", - "cross-env": "^7.0.3", - "eslint": "^9.25.1", - "globals": "^16.0.0", + "@eslint/js": "^10.0.1", + "babel-loader": "^10.1.1", + "babel-plugin-istanbul": "^7.0.1", + "chai": "^6.2.2", + "cross-env": "^10.1.0", + "eslint": "^10.1.0", + "globals": "^17.4.0", "karma": "^6.4.4", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.1", - "mocha": "^11.1.0", - "nyc": "^17.1.0", - "rollup": "^4.40.1", - "tsd": "^0.32.0", - "typescript": "^5.8.3", - "typescript-eslint": "^8.31.0", + "mocha": "^11.7.5", + "nyc": "^18.0.0", + "rollup": "^4.60.0", + "tsd": "^0.33.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.57.1", "uglify-js": "^3.19.3", - "webpack": "^5.99.7", - "webpack-dev-server": "^5.2.1" + "webpack": "^5.105.4", + "webpack-dev-server": "^5.2.3" }, - "optionalDependencies": {}, - "dependencies": {}, "nyc": { "require": [ "@babel/register" @@ -128,5 +126,5 @@ "functions": 100, "statements": 100 }, - "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610" -} + "packageManager": "yarn@4.12.0" +} \ No newline at end of file diff --git a/deps/npm/node_modules/diff/release-notes.md b/deps/npm/node_modules/diff/release-notes.md index 28b633788c3949..00a277084c8bfb 100644 --- a/deps/npm/node_modules/diff/release-notes.md +++ b/deps/npm/node_modules/diff/release-notes.md @@ -1,5 +1,9 @@ # Release Notes +## 8.0.4 + +- [#667](https://github.com/kpdecker/jsdiff/pull/667) - **fix another bug in `diffWords` when used with an `Intl.Segmenter`**. If the text to be diffed included a combining mark after a whitespace character (i.e. roughly speaking, an accented space), `diffWords` would previously crash. Now this case is handled correctly. + ## 8.0.3 - [#631](https://github.com/kpdecker/jsdiff/pull/631) - **fix support for using an `Intl.Segmenter` with `diffWords`**. This has been almost completely broken since the feature was added in v6.0.0, since it would outright crash on any text that featured two consecutive newlines between a pair of words (a very common case). @@ -87,6 +91,14 @@ This is a release containing many, *many* breaking changes. The objective of thi - [#535](https://github.com/kpdecker/jsdiff/pull/535) **Passing `newlineIsToken: true` to *patch*-generation functions is no longer allowed.** (Passing it to `diffLines` is still supported - it's only functions like `createPatch` where passing `newlineIsToken` is now an error.) Allowing it to be passed never really made sense, since in cases where the option had any effect on the output at all, the effect tended to be causing a garbled patch to be created that couldn't actually be applied to the source file. - [#539](https://github.com/kpdecker/jsdiff/pull/539) **`diffWords` now takes an optional `intlSegmenter` option** which should be an `Intl.Segmenter` with word-level granularity. This provides better tokenization of text into words than the default behaviour, even for English but especially for some other languages for which the default behaviour is poor. +## v5.2.2 - January 2026 + +Only change from 5.2.0 is a backport of the fix to https://github.com/kpdecker/jsdiff/security/advisories/GHSA-73rr-hh4g-fpgx. + +## v5.2.1 (deprecated) + +Accidental release - do not use. + ## v5.2.0 [Commits](https://github.com/kpdecker/jsdiff/compare/v5.1.0...v5.2.0) @@ -113,6 +125,18 @@ This is a release containing many, *many* breaking changes. The objective of thi [Commits](https://github.com/kpdecker/jsdiff/compare/v4.0.1...v5.0.0) +## v4.0.4 - January 2026 + +Only change from 4.0.2 is a backport of the fix to https://github.com/kpdecker/jsdiff/security/advisories/GHSA-73rr-hh4g-fpgx. + +## v4.0.3 (deprecated) + +Accidental release - do not use. + +## v4.0.2 + +No meaningful changes from v4.0.1 - just removed some cruft that shouldn't've been published. + ## v4.0.1 - January 6th, 2019 - Fix main reference path - b826104 @@ -138,6 +162,10 @@ Compatibility notes: [Commits](https://github.com/kpdecker/jsdiff/compare/v3.5.0...v4.0.0) +## v3.5.1 - January 2026 + +Only change from 3.5.0 is a backport of the fix to https://github.com/kpdecker/jsdiff/security/advisories/GHSA-73rr-hh4g-fpgx. + ## v3.5.0 - March 4th, 2018 - Omit redundant slice in join method of diffArrays - 1023590 diff --git a/deps/npm/node_modules/is-cidr/dist/index.js b/deps/npm/node_modules/is-cidr/dist/index.js index 35fba31c48c663..e035837673a7ec 100644 --- a/deps/npm/node_modules/is-cidr/dist/index.js +++ b/deps/npm/node_modules/is-cidr/dist/index.js @@ -1,11 +1,11 @@ import { v4 as v4$1, v6 as v6$1 } from "cidr-regex"; + +//#region index.ts const re4 = v4$1({ exact: true }); const re6 = v6$1({ exact: true }); const isCidr = (str) => re4.test(str) ? 4 : re6.test(str) ? 6 : 0; const v4 = isCidr.v4 = (str) => re4.test(str); const v6 = isCidr.v6 = (str) => re6.test(str); -export { - isCidr as default, - v4, - v6 -}; + +//#endregion +export { isCidr as default, v4, v6 }; \ No newline at end of file diff --git a/deps/npm/node_modules/is-cidr/package.json b/deps/npm/node_modules/is-cidr/package.json index ac27bc877aecb5..2aed432996af41 100644 --- a/deps/npm/node_modules/is-cidr/package.json +++ b/deps/npm/node_modules/is-cidr/package.json @@ -1,6 +1,6 @@ { "name": "is-cidr", - "version": "6.0.3", + "version": "6.0.4", "description": "Check if a string is an IP address in CIDR notation", "author": "silverwind ", "contributors": [ @@ -20,20 +20,22 @@ "node": ">=20" }, "dependencies": { - "cidr-regex": "^5.0.1" + "cidr-regex": "^5.0.4" }, "devDependencies": { - "@types/node": "25.0.10", - "eslint": "9.39.2", - "eslint-config-silverwind": "120.1.2", + "@types/node": "25.6.0", + "@typescript/native-preview": "7.0.0-dev.20260420.1", + "eslint": "10.2.1", + "eslint-config-silverwind": "131.0.5", "jest-extended": "7.0.0", - "typescript": "5.9.3", - "typescript-config-silverwind": "14.0.0", - "updates": "17.0.8", - "versions": "14.0.3", - "vite": "7.3.1", - "vite-config-silverwind": "6.0.9", - "vitest": "4.0.18", - "vitest-config-silverwind": "10.6.1" + "tsdown": "0.21.9", + "tsdown-config-silverwind": "2.1.0", + "typescript": "6.0.3", + "typescript-config-silverwind": "18.0.0", + "updates": "17.15.5", + "updates-config-silverwind": "2.1.0", + "versions": "15.0.0", + "vitest": "4.1.4", + "vitest-config-silverwind": "11.3.0" } } \ No newline at end of file diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index 943fa219aeff65..a59017ff3d9731 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "8.1.5", + "version": "8.1.6", "description": "The registry diff", "repository": { "type": "git", @@ -47,7 +47,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", diff --git a/deps/npm/node_modules/libnpmexec/lib/index.js b/deps/npm/node_modules/libnpmexec/lib/index.js index 502082c6b0dccb..3681653d8217d6 100644 --- a/deps/npm/node_modules/libnpmexec/lib/index.js +++ b/deps/npm/node_modules/libnpmexec/lib/index.js @@ -72,12 +72,12 @@ const missingFromTree = async ({ spec, tree, flatOptions, isNpxTree, shallow }) // non-registry spec, or a specific tag, or name only in npx tree. Look up // manifest and check resolved to see if it's in the tree. const manifest = await getManifest(spec, flatOptions) - if (spec.type === 'directory') { + if (spec.type === 'directory' && !isNpxTree) { return { manifest } } const nodesByManifest = tree.inventory.query('packageName', manifest.name) for (const node of nodesByManifest) { - if (node.package.resolved === manifest._resolved) { + if (node.package.resolved === manifest._resolved || node.realpath === manifest._resolved) { // we have a package by the same name and the same resolved destination, nothing to add. return { node } } diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index 1338bc4073236d..078c5618a4cd33 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "10.2.5", + "version": "10.2.6", "files": [ "bin/", "lib/" @@ -61,7 +61,7 @@ }, "dependencies": { "@gar/promise-retry": "^1.0.0", - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index 3ab87f9c7a394d..62e73f5ef6436b 100644 --- a/deps/npm/node_modules/libnpmfund/package.json +++ b/deps/npm/node_modules/libnpmfund/package.json @@ -1,6 +1,6 @@ { "name": "libnpmfund", - "version": "7.0.19", + "version": "7.0.20", "main": "lib/index.js", "files": [ "bin/", @@ -46,7 +46,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.4.2" + "@npmcli/arborist": "^9.4.3" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index ad76fc3b746010..befca6090e66b8 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "9.1.5", + "version": "9.1.6", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -37,7 +37,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" diff --git a/deps/npm/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js b/deps/npm/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js new file mode 100644 index 00000000000000..3a3c4e1be38b28 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tracing = exports.metrics = void 0; +// simple node version that imports from node builtin +// this gets compiled to a require() commonjs-style override, +// not using top level await on a conditional dynamic import +const node_diagnostics_channel_1 = require("node:diagnostics_channel"); +exports.metrics = (0, node_diagnostics_channel_1.channel)('lru-cache:metrics'); +exports.tracing = (0, node_diagnostics_channel_1.tracingChannel)('lru-cache'); +//# sourceMappingURL=diagnostics-channel.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/commonjs/index.js b/deps/npm/node_modules/lru-cache/dist/commonjs/index.js index a97b9f7ecc5301..bb8256253be5f8 100644 --- a/deps/npm/node_modules/lru-cache/dist/commonjs/index.js +++ b/deps/npm/node_modules/lru-cache/dist/commonjs/index.js @@ -4,6 +4,8 @@ */ Object.defineProperty(exports, "__esModule", { value: true }); exports.LRUCache = void 0; +const diagnostics_channel_js_1 = require("./diagnostics-channel.js"); +const hasSubscribers = () => diagnostics_channel_js_1.metrics.hasSubscribers || diagnostics_channel_js_1.tracing.hasSubscribers; const defaultPerf = (typeof performance === 'object' && performance && typeof performance.now === 'function') ? @@ -14,65 +16,19 @@ const warned = new Set(); const PROCESS = (typeof process === 'object' && !!process ? process : {}); -/* c8 ignore start */ +/* c8 ignore stop */ const emitWarning = (msg, type, code, fn) => { - typeof PROCESS.emitWarning === 'function' ? - PROCESS.emitWarning(msg, type, code, fn) - : console.error(`[${code}] ${type}: ${msg}`); + if (typeof PROCESS.emitWarning === 'function') { + PROCESS.emitWarning(msg, type, code, fn); + } + else { + //oxlint-disable-next-line no-console + console.error(`[${code}] ${type}: ${msg}`); + } }; -let AC = globalThis.AbortController; -let AS = globalThis.AbortSignal; -/* c8 ignore start */ -if (typeof AC === 'undefined') { - //@ts-ignore - AS = class AbortSignal { - onabort; - _onabort = []; - reason; - aborted = false; - addEventListener(_, fn) { - this._onabort.push(fn); - } - }; - //@ts-ignore - AC = class AbortController { - constructor() { - warnACPolyfill(); - } - signal = new AS(); - abort(reason) { - if (this.signal.aborted) - return; - //@ts-ignore - this.signal.reason = reason; - //@ts-ignore - this.signal.aborted = true; - //@ts-ignore - for (const fn of this.signal._onabort) { - fn(reason); - } - this.signal.onabort?.(reason); - } - }; - let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'; - const warnACPolyfill = () => { - if (!printACPolyfillWarning) - return; - printACPolyfillWarning = false; - emitWarning('AbortController is not defined. If using lru-cache in ' + - 'node 14, load an AbortController polyfill from the ' + - '`node-abort-controller` package. A minimal polyfill is ' + - 'provided for use by LRUCache.fetch(), but it should not be ' + - 'relied upon in other contexts (eg, passing it to other APIs that ' + - 'use AbortController/AbortSignal might have undesirable effects). ' + - 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill); - }; -} -/* c8 ignore stop */ const shouldWarn = (code) => !warned.has(code); const TYPE = Symbol('type'); -const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); -/* c8 ignore start */ +const isPosInt = (n) => !!n && n === Math.floor(n) && n > 0 && isFinite(n); // This is a little bit ridiculous, tbh. // The maximum array length is 2^32-1 or thereabouts on most JS impls. // And well before that point, you're caching the entire world, I mean, @@ -81,6 +37,7 @@ const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); // zeroes at init time is brutal when you get that big. // But why not be complete? // Maybe in the future, these limits will have expanded. +/* c8 ignore start */ const getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array @@ -361,8 +318,8 @@ class LRUCache { this.#fetchMethod = fetchMethod; this.#hasFetchMethod = !!fetchMethod; this.#keyMap = new Map(); - this.#keyList = new Array(max).fill(undefined); - this.#valList = new Array(max).fill(undefined); + this.#keyList = Array.from({ length: max }).fill(undefined); + this.#valList = Array.from({ length: max }).fill(undefined); this.#next = new UintArray(max); this.#prev = new UintArray(max); this.#head = 0; @@ -446,7 +403,9 @@ class LRUCache { this.#ttls = ttls; this.#starts = starts; const purgeTimers = this.ttlAutopurge ? - new Array(this.#max) + Array.from({ + length: this.#max, + }) : undefined; this.#autopurgeTimers = purgeTimers; this.#setItemTTL = (index, ttl, start = this.#perf.now()) => { @@ -488,9 +447,11 @@ class LRUCache { if (ttls[index]) { const ttl = ttls[index]; const start = starts[index]; - /* c8 ignore next */ - if (!ttl || !start) + /* c8 ignore start */ + if (!ttl || !start) { return; + } + /* c8 ignore stop */ status.ttl = ttl; status.start = start; status.now = cachedNow || getNow(); @@ -597,10 +558,7 @@ class LRUCache { }; *#indexes({ allowStale = this.allowStale } = {}) { if (this.#size) { - for (let i = this.#tail; true;) { - if (!this.#isValidIndex(i)) { - break; - } + for (let i = this.#tail; this.#isValidIndex(i);) { if (allowStale || !this.#isStale(i)) { yield i; } @@ -615,10 +573,7 @@ class LRUCache { } *#rindexes({ allowStale = this.allowStale } = {}) { if (this.#size) { - for (let i = this.#head; true;) { - if (!this.#isValidIndex(i)) { - break; - } + for (let i = this.#head; this.#isValidIndex(i);) { if (allowStale || !this.#isStale(i)) { yield i; } @@ -739,7 +694,7 @@ class LRUCache { if (value === undefined) continue; if (fn(value, this.#keyList[i], this)) { - return this.get(this.#keyList[i], getOptions); + return this.#get(this.#keyList[i], getOptions); } } } @@ -812,7 +767,7 @@ class LRUCache { const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === undefined) return undefined; - /* c8 ignore end */ + /* c8 ignore stop */ const entry = { value }; if (this.#ttls && this.#starts) { const ttl = this.#ttls[i]; @@ -886,7 +841,7 @@ class LRUCache { const age = Date.now() - entry.start; entry.start = this.#perf.now() - age; } - this.set(key, entry.value, entry); + this.#set(key, entry.value, entry); } } /** @@ -920,22 +875,41 @@ class LRUCache { * `cache.delete(key)`. `undefined` is never stored in the cache. */ set(k, v, setOptions = {}) { + const { status = diagnostics_channel_js_1.metrics.hasSubscribers ? {} : undefined } = setOptions; + setOptions.status = status; + if (status) { + status.op = 'set'; + status.key = k; + if (v !== undefined) + status.value = v; + } + const result = this.#set(k, v, setOptions); + if (status && diagnostics_channel_js_1.metrics.hasSubscribers) { + diagnostics_channel_js_1.metrics.publish(status); + } + return result; + } + #set(k, v, setOptions = {}) { + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; if (v === undefined) { + if (status) + status.set = 'deleted'; this.delete(k); return this; } - const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; let { noUpdateTTL = this.noUpdateTTL } = setOptions; - const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation); + if (status && !this.#isBackgroundFetch(v)) + status.value = v; + const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation, status); // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + // have to delete, in case something is there already. + this.#delete(k, 'set'); if (status) { status.set = 'miss'; status.maxEntrySizeExceeded = true; } - // have to delete, in case something is there already. - this.#delete(k, 'set'); return this; } let index = this.#size === 0 ? undefined : this.#keyMap.get(k); @@ -1106,6 +1080,18 @@ class LRUCache { * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. */ has(k, hasOptions = {}) { + const { status = diagnostics_channel_js_1.metrics.hasSubscribers ? {} : undefined } = hasOptions; + hasOptions.status = status; + if (status) { + status.op = 'has'; + status.key = k; + } + const result = this.#has(k, hasOptions); + if (diagnostics_channel_js_1.metrics.hasSubscribers) + diagnostics_channel_js_1.metrics.publish(status); + return result; + } + #has(k, hasOptions = {}) { const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; const index = this.#keyMap.get(k); if (index !== undefined) { @@ -1142,21 +1128,45 @@ class LRUCache { * {@link LRUCache.OptionsBase.allowStale} is set. */ peek(k, peekOptions = {}) { - const { allowStale = this.allowStale } = peekOptions; + const { status = hasSubscribers() ? {} : undefined } = peekOptions; + if (status) { + status.op = 'peek'; + status.key = k; + } + peekOptions.status = status; + const result = this.#peek(k, peekOptions); + if (diagnostics_channel_js_1.metrics.hasSubscribers) { + diagnostics_channel_js_1.metrics.publish(status); + } + return result; + } + #peek(k, peekOptions) { + const { status, allowStale = this.allowStale } = peekOptions; const index = this.#keyMap.get(k); if (index === undefined || (!allowStale && this.#isStale(index))) { - return; + if (status) + status.peek = index === undefined ? 'miss' : 'stale'; + return undefined; } const v = this.#valList[index]; - // either stale and allowed, or forcing a refresh of non-stale value - return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + const val = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (status) { + if (val !== undefined) { + status.peek = 'hit'; + status.value = val; + } + else { + status.peek = 'miss'; + } + } + return val; } #backgroundFetch(k, index, options, context) { const v = index === undefined ? undefined : this.#valList[index]; if (this.#isBackgroundFetch(v)) { return v; } - const ac = new AC(); + const ac = new AbortController(); const { signal } = options; // when/if our AC signals, then stop listening to theirs. signal?.addEventListener('abort', () => ac.abort(signal.reason), { @@ -1192,7 +1202,7 @@ class LRUCache { // cache and ignore the abort, or if it's still pending on this specific // background request, then write it to the cache. const vl = this.#valList[index]; - if (vl === p || (ignoreAbort && updateCache && vl === undefined)) { + if (vl === p || (vl === undefined && ignoreAbort && updateCache)) { if (v === undefined) { if (bf.__staleWhileFetching !== undefined) { this.#valList[index] = bf.__staleWhileFetching; @@ -1204,7 +1214,7 @@ class LRUCache { else { if (options.status) options.status.fetchUpdated = true; - this.set(k, v, fetchOpts.options); + this.#set(k, v, fetchOpts.options); } } return v; @@ -1276,7 +1286,7 @@ class LRUCache { }); if (index === undefined) { // internal, don't expose status. - this.set(k, bf, { ...fetchOpts.options, status: undefined }); + this.#set(k, bf, { ...fetchOpts.options, status: undefined }); index = this.#keyMap.get(k); } else { @@ -1291,9 +1301,25 @@ class LRUCache { return (!!b && b instanceof Promise && b.hasOwnProperty('__staleWhileFetching') && - b.__abortController instanceof AC); + b.__abortController instanceof AbortController); + } + fetch(k, fetchOptions = {}) { + const ths = diagnostics_channel_js_1.tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#fetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + diagnostics_channel_js_1.tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; } - async fetch(k, fetchOptions = {}) { + async #fetch(k, fetchOptions = {}) { const { // get options allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, @@ -1301,10 +1327,16 @@ class LRUCache { ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; + if (status) { + status.op = 'fetch'; + status.key = k; + if (forceRefresh) + status.forceRefresh = true; + } if (!this.#hasFetchMethod) { if (status) status.fetch = 'get'; - return this.get(k, { + return this.#get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, @@ -1373,26 +1405,69 @@ class LRUCache { return staleVal ? p.__staleWhileFetching : (p.__returned = p); } } - async forceFetch(k, fetchOptions = {}) { - const v = await this.fetch(k, fetchOptions); + forceFetch(k, fetchOptions = {}) { + const ths = diagnostics_channel_js_1.tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#forceFetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + diagnostics_channel_js_1.tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #forceFetch(k, fetchOptions = {}) { + const v = await this.#fetch(k, fetchOptions); if (v === undefined) throw new Error('fetch() returned undefined'); return v; } memo(k, memoOptions = {}) { + const { status = diagnostics_channel_js_1.metrics.hasSubscribers ? {} : undefined } = memoOptions; + memoOptions.status = status; + if (status) { + status.op = 'memo'; + status.key = k; + if (memoOptions.context) { + status.context = memoOptions.context; + } + } + const result = this.#memo(k, memoOptions); + if (status) + status.value = result; + if (diagnostics_channel_js_1.metrics.hasSubscribers) + diagnostics_channel_js_1.metrics.publish(status); + return result; + } + #memo(k, memoOptions = {}) { const memoMethod = this.#memoMethod; if (!memoMethod) { throw new Error('no memoMethod provided to constructor'); } - const { context, forceRefresh, ...options } = memoOptions; - const v = this.get(k, options); - if (!forceRefresh && v !== undefined) + const { context, status, forceRefresh, ...options } = memoOptions; + if (status && forceRefresh) + status.forceRefresh = true; + const v = this.#get(k, options); + const refresh = forceRefresh || v === undefined; + if (status) { + status.memo = refresh ? 'miss' : 'hit'; + if (!refresh) + status.value = v; + } + if (!refresh) return v; const vv = memoMethod(k, v, { options, context, }); - this.set(k, vv, options); + if (status) + status.value = vv; + this.#set(k, vv, options); return vv; } /** @@ -1402,55 +1477,70 @@ class LRUCache { * If the key is not found, get() will return `undefined`. */ get(k, getOptions = {}) { + const { status = diagnostics_channel_js_1.metrics.hasSubscribers ? {} : undefined } = getOptions; + getOptions.status = status; + if (status) { + status.op = 'get'; + status.key = k; + } + const result = this.#get(k, getOptions); + if (status) { + if (result !== undefined) + status.value = result; + if (diagnostics_channel_js_1.metrics.hasSubscribers) + diagnostics_channel_js_1.metrics.publish(status); + } + return result; + } + #get(k, getOptions = {}) { const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; const index = this.#keyMap.get(k); - if (index !== undefined) { - const value = this.#valList[index]; - const fetching = this.#isBackgroundFetch(value); + if (index === undefined) { if (status) - this.#statusTTL(status, index); - if (this.#isStale(index)) { + status.get = 'miss'; + return undefined; + } + const value = this.#valList[index]; + const fetching = this.#isBackgroundFetch(value); + if (status) + this.#statusTTL(status, index); + if (this.#isStale(index)) { + // delete only if not an in-flight background fetch + if (!fetching) { + if (!noDeleteOnStaleGet) { + this.#delete(k, 'expire'); + } if (status) status.get = 'stale'; - // delete only if not an in-flight background fetch - if (!fetching) { - if (!noDeleteOnStaleGet) { - this.#delete(k, 'expire'); - } - if (status && allowStale) + if (allowStale) { + if (status) status.returnedStale = true; - return allowStale ? value : undefined; - } - else { - if (status && - allowStale && - value.__staleWhileFetching !== undefined) { - status.returnedStale = true; - } - return allowStale ? value.__staleWhileFetching : undefined; + return value; } + return undefined; } - else { + if (status) + status.get = 'stale-fetching'; + if (allowStale && value.__staleWhileFetching !== undefined) { if (status) - status.get = 'hit'; - // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching. - // If it's not stale, and fetching, AND has a __staleWhileFetching - // value, then that means the user fetched with {forceRefresh:true}, - // so it's safe to return that value. - if (fetching) { - return value.__staleWhileFetching; - } - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - return value; + status.returnedStale = true; + return value.__staleWhileFetching; } + return undefined; } - else if (status) { - status.get = 'miss'; - } + // not stale + if (status) + status.get = fetching ? 'fetching' : 'hit'; + // if we're currently fetching it, we don't actually have it yet + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + return fetching ? value.__staleWhileFetching : value; } #connect(p, n) { this.#prev[n] = p; @@ -1485,6 +1575,13 @@ class LRUCache { return this.#delete(k, 'delete'); } #delete(k, reason) { + if (diagnostics_channel_js_1.metrics.hasSubscribers) { + diagnostics_channel_js_1.metrics.publish({ + op: 'delete', + delete: reason, + key: k, + }); + } let deleted = false; if (this.#size !== 0) { const index = this.#keyMap.get(k); diff --git a/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js b/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js index 5a001c2d833615..383a09d043d362 100644 --- a/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js +++ b/deps/npm/node_modules/lru-cache/dist/commonjs/index.min.js @@ -1,2 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.LRUCache=void 0;var G=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,R=typeof process=="object"&&process?process:{},I=(c,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>"u"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{c&&(c=!1,I("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var x=c=>!U.has(c),H=Symbol("type"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class c{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??G,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?M(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=S,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a=="function"&&(this.#w=a),typeof w=="function"&&(this.#C=w),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";x(E)&&(U.add(E),I("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],"expire")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#G(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set="add"),a=!1,this.#I&&this.#C?.(e,t,"add");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else o||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#I&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#G(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#G(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#z(s,n));else return i&&this.#R(n),s&&(s.has="hit",this.#z(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener("abort",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch="miss");let u=this.#x(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#x(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get="stale"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,"expire"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get="hit"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D; +"use strict";var G=(c,t)=>()=>(t||c((t={exports:{}}).exports,t),t.exports);var M=G(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.tracing=O.metrics=void 0;var L=require("node:diagnostics_channel");O.metrics=(0,L.channel)("lru-cache:metrics");O.tracing=(0,L.tracingChannel)("lru-cache")});Object.defineProperty(exports,"__esModule",{value:!0});exports.LRUCache=void 0;var u=M(),D=()=>u.metrics.hasSubscribers||u.tracing.hasSubscribers,P=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,j=typeof process=="object"&&process?process:{},H=(c,t,e,i)=>{typeof j.emitWarning=="function"?j.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},N=c=>!U.has(c),B=Symbol("type"),F=c=>!!c&&c===Math.floor(c)&&c>0&&isFinite(c),I=c=>F(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?W:null:null,W=class extends Array{constructor(t){super(t),this.fill(0)}},C=class c{heap;length;static#o=!1;static create(t){let e=I(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},x=class c{#o;#c;#m;#D;#w;#M;#j;#S;get perf(){return this.#S}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#b;#s;#i;#t;#l;#u;#a;#h;#y;#r;#_;#F;#d;#g;#T;#O;#f;#U;static unsafeExposeInternals(t){return{starts:t.#F,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#_,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#l,prev:t.#u,get head(){return t.#a},get tail(){return t.#h},free:t.#y,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#P(e,i,s,n),moveToTail:e=>t.#L(e),indexes:e=>t.#A(e),rindexes:e=>t.#v(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#b}get size(){return this.#n}get fetchMethod(){return this.#M}get memoMethod(){return this.#j}get dispose(){return this.#m}get onInsert(){return this.#D}get disposeAfter(){return this.#w}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:r,allowStale:h,dispose:a,onInsert:d,disposeAfter:f,noDisposeOnSet:p,noUpdateTTL:m,maxSize:T=0,maxEntrySize:w=0,sizeCalculation:y,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:_,noDeleteOnStaleGet:b,allowStaleOnFetchRejection:g,allowStaleOnFetchAbort:A,ignoreFetchAbort:v,perf:R}=t;if(R!==void 0&&typeof R?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#S=R??P,e!==0&&!F(e))throw new TypeError("max option must be a nonnegative integer");let z=e?I(e):Array;if(!z)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=T,this.maxEntrySize=w||this.#c,this.sizeCalculation=y,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#j=S,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=l,this.#O=!!l,this.#s=new Map,this.#i=Array.from({length:e}).fill(void 0),this.#t=Array.from({length:e}).fill(void 0),this.#l=new z(e),this.#u=new z(e),this.#a=0,this.#h=0,this.#y=C.create(e),this.#n=0,this.#b=0,typeof a=="function"&&(this.#m=a),typeof d=="function"&&(this.#D=d),typeof f=="function"?(this.#w=f,this.#r=[]):(this.#w=void 0,this.#r=void 0),this.#T=!!this.#m,this.#U=!!this.#D,this.#f=!!this.#w,this.noDisposeOnSet=!!p,this.noUpdateTTL=!!m,this.noDeleteOnFetchRejection=!!_,this.allowStaleOnFetchRejection=!!g,this.allowStaleOnFetchAbort=!!A,this.ignoreFetchAbort=!!v,this.maxEntrySize!==0){if(this.#c!==0&&!F(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!F(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#X()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!b,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!r,this.ttlResolution=F(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!F(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";N(E)&&(U.add(E),H("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#H(){let t=new W(this.#o),e=new W(this.#o);this.#d=t,this.#F=e;let i=this.ttlAutopurge?Array.from({length:this.#o}):void 0;this.#g=i,this.#N=(r,h,a=this.#S.now())=>{e[r]=h!==0?a:0,t[r]=h,s(r,h)},this.#R=r=>{e[r]=t[r]!==0?this.#S.now():0,s(r,t[r])};let s=this.ttlAutopurge?(r,h)=>{if(i?.[r]&&(clearTimeout(i[r]),i[r]=void 0),h&&h!==0&&i){let a=setTimeout(()=>{this.#p(r)&&this.#z(this.#i[r],"expire")},h+1);a.unref&&a.unref(),i[r]=a}}:()=>{};this.#E=(r,h)=>{if(t[h]){let a=t[h],d=e[h];if(!a||!d)return;r.ttl=a,r.start=d,r.now=n||o();let f=r.now-d;r.remainingTTL=a-f}};let n=0,o=()=>{let r=this.#S.now();if(this.ttlResolution>0){n=r;let h=setTimeout(()=>n=0,this.ttlResolution);h.unref&&h.unref()}return r};this.getRemainingTTL=r=>{let h=this.#s.get(r);if(h===void 0)return 0;let a=t[h],d=e[h];if(!a||!d)return 1/0;let f=(n||o())-d;return a-f},this.#p=r=>{let h=e[r],a=t[r];return!!a&&!!h&&(n||o())-h>a}}#R=()=>{};#E=()=>{};#N=()=>{};#p=()=>!1;#X(){let t=new W(this.#o);this.#b=0,this.#_=t,this.#C=e=>{this.#b-=t[e],t[e]=0},this.#k=(e,i,s,n)=>{if(this.#e(i))return 0;if(!F(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!F(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#I=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#b>n;)this.#G(!0)}this.#b+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#b)}}#C=t=>{};#I=(t,e,i)=>{};#k=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;this.#V(e)&&((t||!this.#p(e))&&(yield e),e!==this.#a);)e=this.#u[e]}*#v({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#a;this.#V(e)&&((t||!this.#p(e))&&(yield e),e!==this.#h);)e=this.#l[e]}#V(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#A())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#v())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#A()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#v()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#A())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#v())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.#x(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#v()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#v({allowStale:!0}))this.#p(e)&&(this.#z(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#F){let o=this.#d[e],r=this.#F[e];if(o&&r){let h=o-(this.#S.now()-r);n.ttl=h,n.start=Date.now()}}return this.#_&&(n.size=this.#_[e]),n}dump(){let t=[];for(let e of this.#A({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#F){o.ttl=this.#d[e];let r=this.#S.now()-this.#F[e];o.start=Math.floor(Date.now()-r)}this.#_&&(o.size=this.#_[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#S.now()-s}this.#W(e,i.value,i)}}set(t,e,i={}){let{status:s=u.metrics.hasSubscribers?{}:void 0}=i;i.status=s,s&&(s.op="set",s.key=t,e!==void 0&&(s.value=e));let n=this.#W(t,e,i);return s&&u.metrics.hasSubscribers&&u.metrics.publish(s),n}#W(t,e,i={}){let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:r=this.sizeCalculation,status:h}=i;if(e===void 0)return h&&(h.set="deleted"),this.delete(t),this;let{noUpdateTTL:a=this.noUpdateTTL}=i;h&&!this.#e(e)&&(h.value=e);let d=this.#k(t,e,i.size||0,r,h);if(this.maxEntrySize&&d>this.maxEntrySize)return this.#z(t,"set"),h&&(h.set="miss",h.maxEntrySizeExceeded=!0),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#y.length!==0?this.#y.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#l[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#I(f,d,h),h&&(h.set="add"),a=!1,this.#U&&this.#D?.(e,t,"add");else{this.#L(f);let p=this.#t[f];if(e!==p){if(this.#O&&this.#e(p)){p.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:m}=p;m!==void 0&&!o&&(this.#T&&this.#m?.(m,t,"set"),this.#f&&this.#r?.push([m,t,"set"]))}else o||(this.#T&&this.#m?.(p,t,"set"),this.#f&&this.#r?.push([p,t,"set"]));if(this.#C(f),this.#I(f,d,h),this.#t[f]=e,h){h.set="replace";let m=p&&this.#e(p)?p.__staleWhileFetching:p;m!==void 0&&(h.oldValue=m)}}else h&&(h.set="update");this.#U&&this.onInsert?.(e,t,e===p?"update":"replace")}if(s!==0&&!this.#d&&this.#H(),this.#d&&(a||this.#N(f,s,n),h&&this.#E(h,f)),!o&&this.#f&&this.#r){let p=this.#r,m;for(;m=p?.shift();)this.#w?.(...m)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#a];if(this.#G(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#w?.(...e)}}}#G(t){let e=this.#a,i=this.#i[e],s=this.#t[e];return this.#O&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#m?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#C(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#y.push(e)),this.#n===1?(this.#a=this.#h=0,this.#y.length=0):this.#a=this.#l[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{status:i=u.metrics.hasSubscribers?{}:void 0}=e;e.status=i,i&&(i.op="has",i.key=t);let s=this.#Y(t,e);return u.metrics.hasSubscribers&&u.metrics.publish(i),s}#Y(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#E(s,n));else return i&&this.#R(n),s&&(s.has="hit",this.#E(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{status:i=D()?{}:void 0}=e;i&&(i.op="peek",i.key=t),e.status=i;let s=this.#J(t,e);return u.metrics.hasSubscribers&&u.metrics.publish(i),s}#J(t,e){let{status:i,allowStale:s=this.allowStale}=e,n=this.#s.get(t);if(n===void 0||!s&&this.#p(n)){i&&(i.peek=n===void 0?"miss":"stale");return}let o=this.#t[n],r=this.#e(o)?o.__staleWhileFetching:o;return i&&(r!==void 0?(i.peek="hit",i.value=r):i.peek="miss"),r}#P(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new AbortController,{signal:r}=i;r?.addEventListener("abort",()=>o.abort(r.reason),{signal:o.signal});let h={signal:o.signal,options:i,context:s},a=(w,y=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&w!==void 0,_=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&w!==void 0);if(i.status&&(l&&!y?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!y)return f(o.signal.reason,_);let b=m,g=this.#t[e];return(g===m||g===void 0&&S&&y)&&(w===void 0?b.__staleWhileFetching!==void 0?this.#t[e]=b.__staleWhileFetching:this.#z(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.#W(t,w,h.options))),w},d=w=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=w),f(w,!1)),f=(w,y)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,_=S||i.allowStaleOnFetchRejection,b=_||i.noDeleteOnFetchRejection,g=m;if(this.#t[e]===m&&(!b||!y&&g.__staleWhileFetching===void 0?this.#z(t,"fetch"):S||(this.#t[e]=g.__staleWhileFetching)),_)return i.status&&g.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),g.__staleWhileFetching;if(g.__returned===g)throw w},p=(w,y)=>{let l=this.#M?.(t,n,h);l&&l instanceof Promise&&l.then(S=>w(S===void 0?void 0:S),y),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(w(void 0),i.allowStaleOnFetchAbort&&(w=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let m=new Promise(p).then(a,d),T=Object.assign(m,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.#W(t,T,{...h.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=T,T}#e(t){if(!this.#O)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof AbortController}fetch(t,e={}){let i=u.tracing.hasSubscribers,{status:s=D()?{}:void 0}=e;e.status=s,s&&e.context&&(s.context=e.context);let n=this.#q(t,e);return s&&D()&&i&&(s.trace=!0,u.tracing.tracePromise(()=>n,s).catch(()=>{})),n}async#q(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:r=this.noDisposeOnSet,size:h=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:d=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:T=this.allowStaleOnFetchAbort,context:w,forceRefresh:y=!1,status:l,signal:S}=e;if(l&&(l.op="fetch",l.key=t,y&&(l.forceRefresh=!0)),!this.#O)return l&&(l.fetch="get"),this.#x(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let _={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:r,size:h,sizeCalculation:a,noUpdateTTL:d,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:T,ignoreFetchAbort:m,status:l,signal:S},b=this.#s.get(t);if(b===void 0){l&&(l.fetch="miss");let g=this.#P(t,b,_,w);return g.__returned=g}else{let g=this.#t[b];if(this.#e(g)){let E=i&&g.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?g.__staleWhileFetching:g.__returned=g}let A=this.#p(b);if(!y&&!A)return l&&(l.fetch="hit"),this.#L(b),s&&this.#R(b),l&&this.#E(l,b),g;let v=this.#P(t,b,_,w),z=v.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=A?"stale":"refresh",z&&A&&(l.returnedStale=!0)),z?v.__staleWhileFetching:v.__returned=v}}forceFetch(t,e={}){let i=u.tracing.hasSubscribers,{status:s=D()?{}:void 0}=e;e.status=s,s&&e.context&&(s.context=e.context);let n=this.#K(t,e);return s&&D()&&i&&(s.trace=!0,u.tracing.tracePromise(()=>n,s).catch(()=>{})),n}async#K(t,e={}){let i=await this.#q(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let{status:i=u.metrics.hasSubscribers?{}:void 0}=e;e.status=i,i&&(i.op="memo",i.key=t,e.context&&(i.context=e.context));let s=this.#Q(t,e);return i&&(i.value=s),u.metrics.hasSubscribers&&u.metrics.publish(i),s}#Q(t,e={}){let i=this.#j;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,status:n,forceRefresh:o,...r}=e;n&&o&&(n.forceRefresh=!0);let h=this.#x(t,r),a=o||h===void 0;if(n&&(n.memo=a?"miss":"hit",a||(n.value=h)),!a)return h;let d=i(t,h,{options:r,context:s});return n&&(n.value=d),this.#W(t,d,r),d}get(t,e={}){let{status:i=u.metrics.hasSubscribers?{}:void 0}=e;e.status=i,i&&(i.op="get",i.key=t);let s=this.#x(t,e);return i&&(s!==void 0&&(i.value=s),u.metrics.hasSubscribers&&u.metrics.publish(i)),s}#x(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,r=this.#s.get(t);if(r===void 0){o&&(o.get="miss");return}let h=this.#t[r],a=this.#e(h);return o&&this.#E(o,r),this.#p(r)?a?(o&&(o.get="stale-fetching"),i&&h.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),h.__staleWhileFetching):void 0):(n||this.#z(t,"expire"),o&&(o.get="stale"),i?(o&&(o.returnedStale=!0),h):void 0):(o&&(o.get=a?"fetching":"hit"),this.#L(r),s&&this.#R(r),a?h.__staleWhileFetching:h)}#B(t,e){this.#u[e]=t,this.#l[t]=e}#L(t){t!==this.#h&&(t===this.#a?this.#a=this.#l[t]:this.#B(this.#u[t],this.#l[t]),this.#B(this.#h,t),this.#h=t)}delete(t){return this.#z(t,"delete")}#z(t,e){u.metrics.hasSubscribers&&u.metrics.publish({op:"delete",delete:e,key:t});let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#$(e);else{this.#C(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#m?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#a)this.#a=this.#l[s];else{let o=this.#u[s];this.#l[o]=this.#l[s];let r=this.#l[s];this.#u[r]=this.#u[s]}this.#n--,this.#y.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#w?.(...n)}return i}clear(){return this.#$("delete")}#$(t){for(let e of this.#v({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#m?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#F){this.#d.fill(0),this.#F.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#_&&this.#_.fill(0),this.#a=0,this.#h=0,this.#y.length=0,this.#b=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#w?.(...i)}}};exports.LRUCache=x; //# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js b/deps/npm/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js new file mode 100644 index 00000000000000..08ec4d4d484b44 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js @@ -0,0 +1,4 @@ +const dummy = { hasSubscribers: false }; +export const metrics = dummy; +export const tracing = dummy; +//# sourceMappingURL=diagnostics-channel-browser.mjs.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/esm/browser/index.js b/deps/npm/node_modules/lru-cache/dist/esm/browser/index.js new file mode 100644 index 00000000000000..11c8cd8dfbf5cf --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/browser/index.js @@ -0,0 +1,1688 @@ +/** + * @module LRUCache + */ +import { metrics, tracing } from './diagnostics-channel.js'; +const hasSubscribers = () => metrics.hasSubscribers || tracing.hasSubscribers; +const defaultPerf = (typeof performance === 'object' && + performance && + typeof performance.now === 'function') ? + performance + : Date; +const warned = new Set(); +/* c8 ignore start */ +const PROCESS = (typeof process === 'object' && !!process ? + process + : {}); +/* c8 ignore stop */ +const emitWarning = (msg, type, code, fn) => { + if (typeof PROCESS.emitWarning === 'function') { + PROCESS.emitWarning(msg, type, code, fn); + } + else { + //oxlint-disable-next-line no-console + console.error(`[${code}] ${type}: ${msg}`); + } +}; +const shouldWarn = (code) => !warned.has(code); +const TYPE = Symbol('type'); +const isPosInt = (n) => !!n && n === Math.floor(n) && n > 0 && isFinite(n); +// This is a little bit ridiculous, tbh. +// The maximum array length is 2^32-1 or thereabouts on most JS impls. +// And well before that point, you're caching the entire world, I mean, +// that's ~32GB of just integers for the next/prev links, plus whatever +// else to hold that many keys and values. Just filling the memory with +// zeroes at init time is brutal when you get that big. +// But why not be complete? +// Maybe in the future, these limits will have expanded. +/* c8 ignore start */ +const getUintArray = (max) => !isPosInt(max) ? null + : max <= Math.pow(2, 8) ? Uint8Array + : max <= Math.pow(2, 16) ? Uint16Array + : max <= Math.pow(2, 32) ? Uint32Array + : max <= Number.MAX_SAFE_INTEGER ? ZeroArray + : null; +/* c8 ignore stop */ +class ZeroArray extends Array { + constructor(size) { + super(size); + this.fill(0); + } +} +class Stack { + heap; + length; + // private constructor + static #constructing = false; + static create(max) { + const HeapCls = getUintArray(max); + if (!HeapCls) + return []; + Stack.#constructing = true; + const s = new Stack(max, HeapCls); + Stack.#constructing = false; + return s; + } + constructor(max, HeapCls) { + /* c8 ignore start */ + if (!Stack.#constructing) { + throw new TypeError('instantiate Stack using Stack.create(n)'); + } + /* c8 ignore stop */ + this.heap = new HeapCls(max); + this.length = 0; + } + push(n) { + this.heap[this.length++] = n; + } + pop() { + return this.heap[--this.length]; + } +} +/** + * Default export, the thing you're using this module to get. + * + * The `K` and `V` types define the key and value types, respectively. The + * optional `FC` type defines the type of the `context` object passed to + * `cache.fetch()` and `cache.memo()`. + * + * Keys and values **must not** be `null` or `undefined`. + * + * All properties from the options object (with the exception of `max`, + * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are + * added as normal public members. (The listed options are read-only getters.) + * + * Changing any of these will alter the defaults for subsequent method calls. + */ +export class LRUCache { + // options that cannot be changed without disaster + #max; + #maxSize; + #dispose; + #onInsert; + #disposeAfter; + #fetchMethod; + #memoMethod; + #perf; + /** + * {@link LRUCache.OptionsBase.perf} + */ + get perf() { + return this.#perf; + } + /** + * {@link LRUCache.OptionsBase.ttl} + */ + ttl; + /** + * {@link LRUCache.OptionsBase.ttlResolution} + */ + ttlResolution; + /** + * {@link LRUCache.OptionsBase.ttlAutopurge} + */ + ttlAutopurge; + /** + * {@link LRUCache.OptionsBase.updateAgeOnGet} + */ + updateAgeOnGet; + /** + * {@link LRUCache.OptionsBase.updateAgeOnHas} + */ + updateAgeOnHas; + /** + * {@link LRUCache.OptionsBase.allowStale} + */ + allowStale; + /** + * {@link LRUCache.OptionsBase.noDisposeOnSet} + */ + noDisposeOnSet; + /** + * {@link LRUCache.OptionsBase.noUpdateTTL} + */ + noUpdateTTL; + /** + * {@link LRUCache.OptionsBase.maxEntrySize} + */ + maxEntrySize; + /** + * {@link LRUCache.OptionsBase.sizeCalculation} + */ + sizeCalculation; + /** + * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} + */ + noDeleteOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} + */ + noDeleteOnStaleGet; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} + */ + allowStaleOnFetchAbort; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} + */ + allowStaleOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.ignoreFetchAbort} + */ + ignoreFetchAbort; + // computed properties + #size; + #calculatedSize; + #keyMap; + #keyList; + #valList; + #next; + #prev; + #head; + #tail; + #free; + #disposed; + #sizes; + #starts; + #ttls; + #autopurgeTimers; + #hasDispose; + #hasFetchMethod; + #hasDisposeAfter; + #hasOnInsert; + /** + * Do not call this method unless you need to inspect the + * inner workings of the cache. If anything returned by this + * object is modified in any way, strange breakage may occur. + * + * These fields are private for a reason! + * + * @internal + */ + static unsafeExposeInternals(c) { + return { + // properties + starts: c.#starts, + ttls: c.#ttls, + autopurgeTimers: c.#autopurgeTimers, + sizes: c.#sizes, + keyMap: c.#keyMap, + keyList: c.#keyList, + valList: c.#valList, + next: c.#next, + prev: c.#prev, + get head() { + return c.#head; + }, + get tail() { + return c.#tail; + }, + free: c.#free, + // methods + isBackgroundFetch: (p) => c.#isBackgroundFetch(p), + backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context), + moveToTail: (index) => c.#moveToTail(index), + indexes: (options) => c.#indexes(options), + rindexes: (options) => c.#rindexes(options), + isStale: (index) => c.#isStale(index), + }; + } + // Protected read-only members + /** + * {@link LRUCache.OptionsBase.max} (read-only) + */ + get max() { + return this.#max; + } + /** + * {@link LRUCache.OptionsBase.maxSize} (read-only) + */ + get maxSize() { + return this.#maxSize; + } + /** + * The total computed size of items in the cache (read-only) + */ + get calculatedSize() { + return this.#calculatedSize; + } + /** + * The number of items stored in the cache (read-only) + */ + get size() { + return this.#size; + } + /** + * {@link LRUCache.OptionsBase.fetchMethod} (read-only) + */ + get fetchMethod() { + return this.#fetchMethod; + } + get memoMethod() { + return this.#memoMethod; + } + /** + * {@link LRUCache.OptionsBase.dispose} (read-only) + */ + get dispose() { + return this.#dispose; + } + /** + * {@link LRUCache.OptionsBase.onInsert} (read-only) + */ + get onInsert() { + return this.#onInsert; + } + /** + * {@link LRUCache.OptionsBase.disposeAfter} (read-only) + */ + get disposeAfter() { + return this.#disposeAfter; + } + constructor(options) { + const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, perf, } = options; + if (perf !== undefined) { + if (typeof perf?.now !== 'function') { + throw new TypeError('perf option must have a now() method if specified'); + } + } + this.#perf = perf ?? defaultPerf; + if (max !== 0 && !isPosInt(max)) { + throw new TypeError('max option must be a nonnegative integer'); + } + const UintArray = max ? getUintArray(max) : Array; + if (!UintArray) { + throw new Error('invalid max value: ' + max); + } + this.#max = max; + this.#maxSize = maxSize; + this.maxEntrySize = maxEntrySize || this.#maxSize; + this.sizeCalculation = sizeCalculation; + if (this.sizeCalculation) { + if (!this.#maxSize && !this.maxEntrySize) { + throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize'); + } + if (typeof this.sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation set to non-function'); + } + } + if (memoMethod !== undefined && typeof memoMethod !== 'function') { + throw new TypeError('memoMethod must be a function if defined'); + } + this.#memoMethod = memoMethod; + if (fetchMethod !== undefined && typeof fetchMethod !== 'function') { + throw new TypeError('fetchMethod must be a function if specified'); + } + this.#fetchMethod = fetchMethod; + this.#hasFetchMethod = !!fetchMethod; + this.#keyMap = new Map(); + this.#keyList = Array.from({ length: max }).fill(undefined); + this.#valList = Array.from({ length: max }).fill(undefined); + this.#next = new UintArray(max); + this.#prev = new UintArray(max); + this.#head = 0; + this.#tail = 0; + this.#free = Stack.create(max); + this.#size = 0; + this.#calculatedSize = 0; + if (typeof dispose === 'function') { + this.#dispose = dispose; + } + if (typeof onInsert === 'function') { + this.#onInsert = onInsert; + } + if (typeof disposeAfter === 'function') { + this.#disposeAfter = disposeAfter; + this.#disposed = []; + } + else { + this.#disposeAfter = undefined; + this.#disposed = undefined; + } + this.#hasDispose = !!this.#dispose; + this.#hasOnInsert = !!this.#onInsert; + this.#hasDisposeAfter = !!this.#disposeAfter; + this.noDisposeOnSet = !!noDisposeOnSet; + this.noUpdateTTL = !!noUpdateTTL; + this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; + this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; + this.ignoreFetchAbort = !!ignoreFetchAbort; + // NB: maxEntrySize is set to maxSize if it's set + if (this.maxEntrySize !== 0) { + if (this.#maxSize !== 0) { + if (!isPosInt(this.#maxSize)) { + throw new TypeError('maxSize must be a positive integer if specified'); + } + } + if (!isPosInt(this.maxEntrySize)) { + throw new TypeError('maxEntrySize must be a positive integer if specified'); + } + this.#initializeSizeTracking(); + } + this.allowStale = !!allowStale; + this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; + this.updateAgeOnGet = !!updateAgeOnGet; + this.updateAgeOnHas = !!updateAgeOnHas; + this.ttlResolution = + isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1; + this.ttlAutopurge = !!ttlAutopurge; + this.ttl = ttl || 0; + if (this.ttl) { + if (!isPosInt(this.ttl)) { + throw new TypeError('ttl must be a positive integer if specified'); + } + this.#initializeTTLTracking(); + } + // do not allow completely unbounded caches + if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) { + throw new TypeError('At least one of max, maxSize, or ttl is required'); + } + if (!this.ttlAutopurge && !this.#max && !this.#maxSize) { + const code = 'LRU_CACHE_UNBOUNDED'; + if (shouldWarn(code)) { + warned.add(code); + const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + + 'result in unbounded memory consumption.'; + emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache); + } + } + } + /** + * Return the number of ms left in the item's TTL. If item is not in cache, + * returns `0`. Returns `Infinity` if item is in cache without a defined TTL. + */ + getRemainingTTL(key) { + return this.#keyMap.has(key) ? Infinity : 0; + } + #initializeTTLTracking() { + const ttls = new ZeroArray(this.#max); + const starts = new ZeroArray(this.#max); + this.#ttls = ttls; + this.#starts = starts; + const purgeTimers = this.ttlAutopurge ? + Array.from({ + length: this.#max, + }) + : undefined; + this.#autopurgeTimers = purgeTimers; + this.#setItemTTL = (index, ttl, start = this.#perf.now()) => { + starts[index] = ttl !== 0 ? start : 0; + ttls[index] = ttl; + setPurgetTimer(index, ttl); + }; + this.#updateItemAge = index => { + starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0; + setPurgetTimer(index, ttls[index]); + }; + // clear out the purge timer if we're setting TTL to 0, and + // previously had a ttl purge timer running, so it doesn't + // fire unnecessarily. Don't need to do this if we're not doing + // autopurge. + const setPurgetTimer = !this.ttlAutopurge ? + () => { } + : (index, ttl) => { + if (purgeTimers?.[index]) { + clearTimeout(purgeTimers[index]); + purgeTimers[index] = undefined; + } + if (ttl && ttl !== 0 && purgeTimers) { + const t = setTimeout(() => { + if (this.#isStale(index)) { + this.#delete(this.#keyList[index], 'expire'); + } + }, ttl + 1); + // unref() not supported on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + purgeTimers[index] = t; + } + }; + this.#statusTTL = (status, index) => { + if (ttls[index]) { + const ttl = ttls[index]; + const start = starts[index]; + /* c8 ignore start */ + if (!ttl || !start) { + return; + } + /* c8 ignore stop */ + status.ttl = ttl; + status.start = start; + status.now = cachedNow || getNow(); + const age = status.now - start; + status.remainingTTL = ttl - age; + } + }; + // debounce calls to perf.now() to 1s so we're not hitting + // that costly call repeatedly. + let cachedNow = 0; + const getNow = () => { + const n = this.#perf.now(); + if (this.ttlResolution > 0) { + cachedNow = n; + const t = setTimeout(() => (cachedNow = 0), this.ttlResolution); + // not available on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + } + return n; + }; + this.getRemainingTTL = key => { + const index = this.#keyMap.get(key); + if (index === undefined) { + return 0; + } + const ttl = ttls[index]; + const start = starts[index]; + if (!ttl || !start) { + return Infinity; + } + const age = (cachedNow || getNow()) - start; + return ttl - age; + }; + this.#isStale = index => { + const s = starts[index]; + const t = ttls[index]; + return !!t && !!s && (cachedNow || getNow()) - s > t; + }; + } + // conditionally set private methods related to TTL + #updateItemAge = () => { }; + #statusTTL = () => { }; + #setItemTTL = () => { }; + /* c8 ignore stop */ + #isStale = () => false; + #initializeSizeTracking() { + const sizes = new ZeroArray(this.#max); + this.#calculatedSize = 0; + this.#sizes = sizes; + this.#removeItemSize = index => { + this.#calculatedSize -= sizes[index]; + sizes[index] = 0; + }; + this.#requireSize = (k, v, size, sizeCalculation) => { + // provisionally accept background fetches. + // actual value size will be checked when they return. + if (this.#isBackgroundFetch(v)) { + return 0; + } + if (!isPosInt(size)) { + if (sizeCalculation) { + if (typeof sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation must be a function'); + } + size = sizeCalculation(v, k); + if (!isPosInt(size)) { + throw new TypeError('sizeCalculation return invalid (expect positive integer)'); + } + } + else { + throw new TypeError('invalid size value (must be positive integer). ' + + 'When maxSize or maxEntrySize is used, sizeCalculation ' + + 'or size must be set.'); + } + } + return size; + }; + this.#addItemSize = (index, size, status) => { + sizes[index] = size; + if (this.#maxSize) { + const maxSize = this.#maxSize - sizes[index]; + while (this.#calculatedSize > maxSize) { + this.#evict(true); + } + } + this.#calculatedSize += sizes[index]; + if (status) { + status.entrySize = size; + status.totalCalculatedSize = this.#calculatedSize; + } + }; + } + #removeItemSize = _i => { }; + #addItemSize = (_i, _s, _st) => { }; + #requireSize = (_k, _v, size, sizeCalculation) => { + if (size || sizeCalculation) { + throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache'); + } + return 0; + }; + *#indexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#tail; this.#isValidIndex(i);) { + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#head) { + break; + } + else { + i = this.#prev[i]; + } + } + } + } + *#rindexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#head; this.#isValidIndex(i);) { + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#tail) { + break; + } + else { + i = this.#next[i]; + } + } + } + } + #isValidIndex(index) { + return (index !== undefined && + this.#keyMap.get(this.#keyList[index]) === index); + } + /** + * Return a generator yielding `[key, value]` pairs, + * in order from most recently used to least recently used. + */ + *entries() { + for (const i of this.#indexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Inverse order version of {@link LRUCache.entries} + * + * Return a generator yielding `[key, value]` pairs, + * in order from least recently used to most recently used. + */ + *rentries() { + for (const i of this.#rindexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Return a generator yielding the keys in the cache, + * in order from most recently used to least recently used. + */ + *keys() { + for (const i of this.#indexes()) { + const k = this.#keyList[i]; + if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Inverse order version of {@link LRUCache.keys} + * + * Return a generator yielding the keys in the cache, + * in order from least recently used to most recently used. + */ + *rkeys() { + for (const i of this.#rindexes()) { + const k = this.#keyList[i]; + if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Return a generator yielding the values in the cache, + * in order from most recently used to least recently used. + */ + *values() { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Inverse order version of {@link LRUCache.values} + * + * Return a generator yielding the values in the cache, + * in order from least recently used to most recently used. + */ + *rvalues() { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Iterating over the cache itself yields the same results as + * {@link LRUCache.entries} + */ + [Symbol.iterator]() { + return this.entries(); + } + /** + * A String value that is used in the creation of the default string + * description of an object. Called by the built-in method + * `Object.prototype.toString`. + */ + [Symbol.toStringTag] = 'LRUCache'; + /** + * Find a value for which the supplied fn method returns a truthy value, + * similar to `Array.find()`. fn is called as `fn(value, key, cache)`. + */ + find(fn, getOptions = {}) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + if (fn(value, this.#keyList[i], this)) { + return this.#get(this.#keyList[i], getOptions); + } + } + } + /** + * Call the supplied function on each item in the cache, in order from most + * recently used to least recently used. + * + * `fn` is called as `fn(value, key, cache)`. + * + * If `thisp` is provided, function will be called in the `this`-context of + * the provided object, or the cache if no `thisp` object is provided. + * + * Does not update age or recenty of use, or iterate over stale values. + */ + forEach(fn, thisp = this) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * The same as {@link LRUCache.forEach} but items are iterated over in + * reverse order. (ie, less recently used items are iterated over first.) + */ + rforEach(fn, thisp = this) { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * Delete any stale entries. Returns true if anything was removed, + * false otherwise. + */ + purgeStale() { + let deleted = false; + for (const i of this.#rindexes({ allowStale: true })) { + if (this.#isStale(i)) { + this.#delete(this.#keyList[i], 'expire'); + deleted = true; + } + } + return deleted; + } + /** + * Get the extended info about a given entry, to get its value, size, and + * TTL info simultaneously. Returns `undefined` if the key is not present. + * + * Unlike {@link LRUCache#dump}, which is designed to be portable and survive + * serialization, the `start` value is always the current timestamp, and the + * `ttl` is a calculated remaining time to live (negative if expired). + * + * Always returns stale values, if their info is found in the cache, so be + * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl}) + * if relevant. + */ + info(key) { + const i = this.#keyMap.get(key); + if (i === undefined) + return undefined; + const v = this.#valList[i]; + /* c8 ignore start - this isn't tested for the info function, + * but it's the same logic as found in other places. */ + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + return undefined; + /* c8 ignore stop */ + const entry = { value }; + if (this.#ttls && this.#starts) { + const ttl = this.#ttls[i]; + const start = this.#starts[i]; + if (ttl && start) { + const remain = ttl - (this.#perf.now() - start); + entry.ttl = remain; + entry.start = Date.now(); + } + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + return entry; + } + /** + * Return an array of [key, {@link LRUCache.Entry}] tuples which can be + * passed to {@link LRUCache#load}. + * + * The `start` fields are calculated relative to a portable `Date.now()` + * timestamp, even if `performance.now()` is available. + * + * Stale entries are always included in the `dump`, even if + * {@link LRUCache.OptionsBase.allowStale} is false. + * + * Note: this returns an actual array, not a generator, so it can be more + * easily passed around. + */ + dump() { + const arr = []; + for (const i of this.#indexes({ allowStale: true })) { + const key = this.#keyList[i]; + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined || key === undefined) + continue; + const entry = { value }; + if (this.#ttls && this.#starts) { + entry.ttl = this.#ttls[i]; + // always dump the start relative to a portable timestamp + // it's ok for this to be a bit slow, it's a rare operation. + const age = this.#perf.now() - this.#starts[i]; + entry.start = Math.floor(Date.now() - age); + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + arr.unshift([key, entry]); + } + return arr; + } + /** + * Reset the cache and load in the items in entries in the order listed. + * + * The shape of the resulting cache may be different if the same options are + * not used in both caches. + * + * The `start` fields are assumed to be calculated relative to a portable + * `Date.now()` timestamp, even if `performance.now()` is available. + */ + load(arr) { + this.clear(); + for (const [key, entry] of arr) { + if (entry.start) { + // entry.start is a portable timestamp, but we may be using + // node's performance.now(), so calculate the offset, so that + // we get the intended remaining TTL, no matter how long it's + // been on ice. + // + // it's ok for this to be a bit slow, it's a rare operation. + const age = Date.now() - entry.start; + entry.start = this.#perf.now() - age; + } + this.#set(key, entry.value, entry); + } + } + /** + * Add a value to the cache. + * + * Note: if `undefined` is specified as a value, this is an alias for + * {@link LRUCache#delete} + * + * Fields on the {@link LRUCache.SetOptions} options param will override + * their corresponding values in the constructor options for the scope + * of this single `set()` operation. + * + * If `start` is provided, then that will set the effective start + * time for the TTL calculation. Note that this must be a previous + * value of `performance.now()` if supported, or a previous value of + * `Date.now()` if not. + * + * Options object may also include `size`, which will prevent + * calling the `sizeCalculation` function and just use the specified + * number if it is a positive integer, and `noDisposeOnSet` which + * will prevent calling a `dispose` function in the case of + * overwrites. + * + * If the `size` (or return value of `sizeCalculation`) for a given + * entry is greater than `maxEntrySize`, then the item will not be + * added to the cache. + * + * Will update the recency of the entry. + * + * If the value is `undefined`, then this is an alias for + * `cache.delete(key)`. `undefined` is never stored in the cache. + */ + set(k, v, setOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = setOptions; + setOptions.status = status; + if (status) { + status.op = 'set'; + status.key = k; + if (v !== undefined) + status.value = v; + } + const result = this.#set(k, v, setOptions); + if (status && metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #set(k, v, setOptions = {}) { + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; + if (v === undefined) { + if (status) + status.set = 'deleted'; + this.delete(k); + return this; + } + let { noUpdateTTL = this.noUpdateTTL } = setOptions; + if (status && !this.#isBackgroundFetch(v)) + status.value = v; + const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation, status); + // if the item doesn't fit, don't do anything + // NB: maxEntrySize set to maxSize by default + if (this.maxEntrySize && size > this.maxEntrySize) { + // have to delete, in case something is there already. + this.#delete(k, 'set'); + if (status) { + status.set = 'miss'; + status.maxEntrySizeExceeded = true; + } + return this; + } + let index = this.#size === 0 ? undefined : this.#keyMap.get(k); + if (index === undefined) { + // addition + index = (this.#size === 0 ? this.#tail + : this.#free.length !== 0 ? this.#free.pop() + : this.#size === this.#max ? this.#evict(false) + : this.#size); + this.#keyList[index] = k; + this.#valList[index] = v; + this.#keyMap.set(k, index); + this.#next[this.#tail] = index; + this.#prev[index] = this.#tail; + this.#tail = index; + this.#size++; + this.#addItemSize(index, size, status); + if (status) + status.set = 'add'; + noUpdateTTL = false; + if (this.#hasOnInsert) { + this.#onInsert?.(v, k, 'add'); + } + } + else { + // update + this.#moveToTail(index); + const oldVal = this.#valList[index]; + if (v !== oldVal) { + if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) { + oldVal.__abortController.abort(new Error('replaced')); + const { __staleWhileFetching: s } = oldVal; + if (s !== undefined && !noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(s, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([s, k, 'set']); + } + } + } + else if (!noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(oldVal, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([oldVal, k, 'set']); + } + } + this.#removeItemSize(index); + this.#addItemSize(index, size, status); + this.#valList[index] = v; + if (status) { + status.set = 'replace'; + const oldValue = oldVal && this.#isBackgroundFetch(oldVal) ? + oldVal.__staleWhileFetching + : oldVal; + if (oldValue !== undefined) + status.oldValue = oldValue; + } + } + else if (status) { + status.set = 'update'; + } + if (this.#hasOnInsert) { + this.onInsert?.(v, k, v === oldVal ? 'update' : 'replace'); + } + } + if (ttl !== 0 && !this.#ttls) { + this.#initializeTTLTracking(); + } + if (this.#ttls) { + if (!noUpdateTTL) { + this.#setItemTTL(index, ttl, start); + } + if (status) + this.#statusTTL(status, index); + } + if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return this; + } + /** + * Evict the least recently used item, returning its value or + * `undefined` if cache is empty. + */ + pop() { + try { + while (this.#size) { + const val = this.#valList[this.#head]; + this.#evict(true); + if (this.#isBackgroundFetch(val)) { + if (val.__staleWhileFetching) { + return val.__staleWhileFetching; + } + } + else if (val !== undefined) { + return val; + } + } + } + finally { + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } + } + #evict(free) { + const head = this.#head; + const k = this.#keyList[head]; + const v = this.#valList[head]; + if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('evicted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, 'evict'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, 'evict']); + } + } + this.#removeItemSize(head); + if (this.#autopurgeTimers?.[head]) { + clearTimeout(this.#autopurgeTimers[head]); + this.#autopurgeTimers[head] = undefined; + } + // if we aren't about to use the index, then null these out + if (free) { + this.#keyList[head] = undefined; + this.#valList[head] = undefined; + this.#free.push(head); + } + if (this.#size === 1) { + this.#head = this.#tail = 0; + this.#free.length = 0; + } + else { + this.#head = this.#next[head]; + } + this.#keyMap.delete(k); + this.#size--; + return head; + } + /** + * Check if a key is in the cache, without updating the recency of use. + * Will return false if the item is stale, even though it is technically + * in the cache. + * + * Check if a key is in the cache, without updating the recency of + * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set + * to `true` in either the options or the constructor. + * + * Will return `false` if the item is stale, even though it is technically in + * the cache. The difference can be determined (if it matters) by using a + * `status` argument, and inspecting the `has` field. + * + * Will not update item age unless + * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. + */ + has(k, hasOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = hasOptions; + hasOptions.status = status; + if (status) { + status.op = 'has'; + status.key = k; + } + const result = this.#has(k, hasOptions); + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #has(k, hasOptions = {}) { + const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; + const index = this.#keyMap.get(k); + if (index !== undefined) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v) && + v.__staleWhileFetching === undefined) { + return false; + } + if (!this.#isStale(index)) { + if (updateAgeOnHas) { + this.#updateItemAge(index); + } + if (status) { + status.has = 'hit'; + this.#statusTTL(status, index); + } + return true; + } + else if (status) { + status.has = 'stale'; + this.#statusTTL(status, index); + } + } + else if (status) { + status.has = 'miss'; + } + return false; + } + /** + * Like {@link LRUCache#get} but doesn't update recency or delete stale + * items. + * + * Returns `undefined` if the item is stale, unless + * {@link LRUCache.OptionsBase.allowStale} is set. + */ + peek(k, peekOptions = {}) { + const { status = hasSubscribers() ? {} : undefined } = peekOptions; + if (status) { + status.op = 'peek'; + status.key = k; + } + peekOptions.status = status; + const result = this.#peek(k, peekOptions); + if (metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #peek(k, peekOptions) { + const { status, allowStale = this.allowStale } = peekOptions; + const index = this.#keyMap.get(k); + if (index === undefined || (!allowStale && this.#isStale(index))) { + if (status) + status.peek = index === undefined ? 'miss' : 'stale'; + return undefined; + } + const v = this.#valList[index]; + const val = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (status) { + if (val !== undefined) { + status.peek = 'hit'; + status.value = val; + } + else { + status.peek = 'miss'; + } + } + return val; + } + #backgroundFetch(k, index, options, context) { + const v = index === undefined ? undefined : this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + return v; + } + const ac = new AbortController(); + const { signal } = options; + // when/if our AC signals, then stop listening to theirs. + signal?.addEventListener('abort', () => ac.abort(signal.reason), { + signal: ac.signal, + }); + const fetchOpts = { + signal: ac.signal, + options, + context, + }; + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal; + const ignoreAbort = options.ignoreFetchAbort && v !== undefined; + const proceed = options.ignoreFetchAbort || + !!(options.allowStaleOnFetchAbort && v !== undefined); + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true; + options.status.fetchError = ac.signal.reason; + if (ignoreAbort) + options.status.fetchAbortIgnored = true; + } + else { + options.status.fetchResolved = true; + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason, proceed); + } + // either we didn't abort, and are still here, or we did, and ignored + const bf = p; + // if nothing else has been written there but we're set to update the + // cache and ignore the abort, or if it's still pending on this specific + // background request, then write it to the cache. + const vl = this.#valList[index]; + if (vl === p || (vl === undefined && ignoreAbort && updateCache)) { + if (v === undefined) { + if (bf.__staleWhileFetching !== undefined) { + this.#valList[index] = bf.__staleWhileFetching; + } + else { + this.#delete(k, 'fetch'); + } + } + else { + if (options.status) + options.status.fetchUpdated = true; + this.#set(k, v, fetchOpts.options); + } + } + return v; + }; + const eb = (er) => { + if (options.status) { + options.status.fetchRejected = true; + options.status.fetchError = er; + } + // do not pass go, do not collect $200 + return fetchFail(er, false); + }; + const fetchFail = (er, proceed) => { + const { aborted } = ac.signal; + const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; + const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; + const noDelete = allowStale || options.noDeleteOnFetchRejection; + const bf = p; + if (this.#valList[index] === p) { + // if we allow stale on fetch rejections, then we need to ensure that + // the stale value is not removed from the cache when the fetch fails. + const del = !noDelete || (!proceed && bf.__staleWhileFetching === undefined); + if (del) { + this.#delete(k, 'fetch'); + } + else if (!allowStaleAborted) { + // still replace the *promise* with the stale value, + // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. + this.#valList[index] = bf.__staleWhileFetching; + } + } + if (allowStale) { + if (options.status && bf.__staleWhileFetching !== undefined) { + options.status.returnedStale = true; + } + return bf.__staleWhileFetching; + } + else if (bf.__returned === bf) { + throw er; + } + }; + const pcall = (res, rej) => { + const fmp = this.#fetchMethod?.(k, v, fetchOpts); + if (fmp && fmp instanceof Promise) { + fmp.then(v => res(v === undefined ? undefined : v), rej); + } + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) { + res(undefined); + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true); + } + } + }); + }; + if (options.status) + options.status.fetchDispatched = true; + const p = new Promise(pcall).then(cb, eb); + const bf = Object.assign(p, { + __abortController: ac, + __staleWhileFetching: v, + __returned: undefined, + }); + if (index === undefined) { + // internal, don't expose status. + this.#set(k, bf, { ...fetchOpts.options, status: undefined }); + index = this.#keyMap.get(k); + } + else { + this.#valList[index] = bf; + } + return bf; + } + #isBackgroundFetch(p) { + if (!this.#hasFetchMethod) + return false; + const b = p; + return (!!b && + b instanceof Promise && + b.hasOwnProperty('__staleWhileFetching') && + b.__abortController instanceof AbortController); + } + fetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#fetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #fetch(k, fetchOptions = {}) { + const { + // get options + allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + // set options + ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; + if (status) { + status.op = 'fetch'; + status.key = k; + if (forceRefresh) + status.forceRefresh = true; + } + if (!this.#hasFetchMethod) { + if (status) + status.fetch = 'get'; + return this.#get(k, { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + status, + }); + } + const options = { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + ttl, + noDisposeOnSet, + size, + sizeCalculation, + noUpdateTTL, + noDeleteOnFetchRejection, + allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, + signal, + }; + let index = this.#keyMap.get(k); + if (index === undefined) { + if (status) + status.fetch = 'miss'; + const p = this.#backgroundFetch(k, index, options, context); + return (p.__returned = p); + } + else { + // in cache, maybe already fetching + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + const stale = allowStale && v.__staleWhileFetching !== undefined; + if (status) { + status.fetch = 'inflight'; + if (stale) + status.returnedStale = true; + } + return stale ? v.__staleWhileFetching : (v.__returned = v); + } + // if we force a refresh, that means do NOT serve the cached value, + // unless we are already in the process of refreshing the cache. + const isStale = this.#isStale(index); + if (!forceRefresh && !isStale) { + if (status) + status.fetch = 'hit'; + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + if (status) + this.#statusTTL(status, index); + return v; + } + // ok, it is stale or a forced refresh, and not already fetching. + // refresh the cache. + const p = this.#backgroundFetch(k, index, options, context); + const hasStale = p.__staleWhileFetching !== undefined; + const staleVal = hasStale && allowStale; + if (status) { + status.fetch = isStale ? 'stale' : 'refresh'; + if (staleVal && isStale) + status.returnedStale = true; + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p); + } + } + forceFetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#forceFetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #forceFetch(k, fetchOptions = {}) { + const v = await this.#fetch(k, fetchOptions); + if (v === undefined) + throw new Error('fetch() returned undefined'); + return v; + } + memo(k, memoOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = memoOptions; + memoOptions.status = status; + if (status) { + status.op = 'memo'; + status.key = k; + if (memoOptions.context) { + status.context = memoOptions.context; + } + } + const result = this.#memo(k, memoOptions); + if (status) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #memo(k, memoOptions = {}) { + const memoMethod = this.#memoMethod; + if (!memoMethod) { + throw new Error('no memoMethod provided to constructor'); + } + const { context, status, forceRefresh, ...options } = memoOptions; + if (status && forceRefresh) + status.forceRefresh = true; + const v = this.#get(k, options); + const refresh = forceRefresh || v === undefined; + if (status) { + status.memo = refresh ? 'miss' : 'hit'; + if (!refresh) + status.value = v; + } + if (!refresh) + return v; + const vv = memoMethod(k, v, { + options, + context, + }); + if (status) + status.value = vv; + this.#set(k, vv, options); + return vv; + } + /** + * Return a value from the cache. Will update the recency of the cache + * entry found. + * + * If the key is not found, get() will return `undefined`. + */ + get(k, getOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = getOptions; + getOptions.status = status; + if (status) { + status.op = 'get'; + status.key = k; + } + const result = this.#get(k, getOptions); + if (status) { + if (result !== undefined) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + } + return result; + } + #get(k, getOptions = {}) { + const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; + const index = this.#keyMap.get(k); + if (index === undefined) { + if (status) + status.get = 'miss'; + return undefined; + } + const value = this.#valList[index]; + const fetching = this.#isBackgroundFetch(value); + if (status) + this.#statusTTL(status, index); + if (this.#isStale(index)) { + // delete only if not an in-flight background fetch + if (!fetching) { + if (!noDeleteOnStaleGet) { + this.#delete(k, 'expire'); + } + if (status) + status.get = 'stale'; + if (allowStale) { + if (status) + status.returnedStale = true; + return value; + } + return undefined; + } + if (status) + status.get = 'stale-fetching'; + if (allowStale && value.__staleWhileFetching !== undefined) { + if (status) + status.returnedStale = true; + return value.__staleWhileFetching; + } + return undefined; + } + // not stale + if (status) + status.get = fetching ? 'fetching' : 'hit'; + // if we're currently fetching it, we don't actually have it yet + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + return fetching ? value.__staleWhileFetching : value; + } + #connect(p, n) { + this.#prev[n] = p; + this.#next[p] = n; + } + #moveToTail(index) { + // if tail already, nothing to do + // if head, move head to next[index] + // else + // move next[prev[index]] to next[index] (head has no prev) + // move prev[next[index]] to prev[index] + // prev[index] = tail + // next[tail] = index + // tail = index + if (index !== this.#tail) { + if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + this.#connect(this.#prev[index], this.#next[index]); + } + this.#connect(this.#tail, index); + this.#tail = index; + } + } + /** + * Deletes a key out of the cache. + * + * Returns true if the key was deleted, false otherwise. + */ + delete(k) { + return this.#delete(k, 'delete'); + } + #delete(k, reason) { + if (metrics.hasSubscribers) { + metrics.publish({ + op: 'delete', + delete: reason, + key: k, + }); + } + let deleted = false; + if (this.#size !== 0) { + const index = this.#keyMap.get(k); + if (index !== undefined) { + if (this.#autopurgeTimers?.[index]) { + clearTimeout(this.#autopurgeTimers?.[index]); + this.#autopurgeTimers[index] = undefined; + } + deleted = true; + if (this.#size === 1) { + this.#clear(reason); + } + else { + this.#removeItemSize(index); + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, reason); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, reason]); + } + } + this.#keyMap.delete(k); + this.#keyList[index] = undefined; + this.#valList[index] = undefined; + if (index === this.#tail) { + this.#tail = this.#prev[index]; + } + else if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + const pi = this.#prev[index]; + this.#next[pi] = this.#next[index]; + const ni = this.#next[index]; + this.#prev[ni] = this.#prev[index]; + } + this.#size--; + this.#free.push(index); + } + } + } + if (this.#hasDisposeAfter && this.#disposed?.length) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return deleted; + } + /** + * Clear the cache entirely, throwing away all values. + */ + clear() { + return this.#clear('delete'); + } + #clear(reason) { + for (const index of this.#rindexes({ allowStale: true })) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else { + const k = this.#keyList[index]; + if (this.#hasDispose) { + this.#dispose?.(v, k, reason); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, reason]); + } + } + } + this.#keyMap.clear(); + this.#valList.fill(undefined); + this.#keyList.fill(undefined); + if (this.#ttls && this.#starts) { + this.#ttls.fill(0); + this.#starts.fill(0); + for (const t of this.#autopurgeTimers ?? []) { + if (t !== undefined) + clearTimeout(t); + } + this.#autopurgeTimers?.fill(undefined); + } + if (this.#sizes) { + this.#sizes.fill(0); + } + this.#head = 0; + this.#tail = 0; + this.#free.length = 0; + this.#calculatedSize = 0; + this.#size = 0; + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/esm/browser/index.min.js b/deps/npm/node_modules/lru-cache/dist/esm/browser/index.min.js new file mode 100644 index 00000000000000..50dd21a570e15f --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/browser/index.min.js @@ -0,0 +1,2 @@ +var C={hasSubscribers:!1},S=C,W=C;var D=()=>S.hasSubscribers||W.hasSubscribers,I=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,L=typeof process=="object"&&process?process:{},G=(u,e,t,i)=>{typeof L.emitWarning=="function"?L.emitWarning(u,e,t,i):console.error(`[${t}] ${e}: ${u}`)},P=u=>!U.has(u),V=Symbol("type"),F=u=>!!u&&u===Math.floor(u)&&u>0&&isFinite(u),j=u=>F(u)?u<=Math.pow(2,8)?Uint8Array:u<=Math.pow(2,16)?Uint16Array:u<=Math.pow(2,32)?Uint32Array:u<=Number.MAX_SAFE_INTEGER?O:null:null,O=class extends Array{constructor(e){super(e),this.fill(0)}},R=class u{heap;length;static#o=!1;static create(e){let t=j(e);if(!t)return[];u.#o=!0;let i=new u(e,t);return u.#o=!1,i}constructor(e,t){if(!u.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},M=class u{#o;#u;#w;#D;#S;#M;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#b;#s;#i;#t;#a;#c;#l;#h;#y;#r;#_;#F;#d;#g;#T;#W;#f;#j;static unsafeExposeInternals(e){return{starts:e.#F,ttls:e.#d,autopurgeTimers:e.#g,sizes:e.#_,keyMap:e.#s,keyList:e.#i,valList:e.#t,next:e.#a,prev:e.#c,get head(){return e.#l},get tail(){return e.#h},free:e.#y,isBackgroundFetch:t=>e.#e(t),backgroundFetch:(t,i,s,n)=>e.#P(t,i,s,n),moveToTail:t=>e.#L(t),indexes:t=>e.#A(t),rindexes:t=>e.#z(t),isStale:t=>e.#p(t)}}get max(){return this.#o}get maxSize(){return this.#u}get calculatedSize(){return this.#b}get size(){return this.#n}get fetchMethod(){return this.#M}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#D}get disposeAfter(){return this.#S}constructor(e){let{max:t=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:r,allowStale:h,dispose:l,onInsert:c,disposeAfter:f,noDisposeOnSet:g,noUpdateTTL:p,maxSize:T=0,maxEntrySize:w=0,sizeCalculation:y,fetchMethod:a,memoMethod:m,noDeleteOnFetchRejection:_,noDeleteOnStaleGet:b,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:z,perf:x}=e;if(x!==void 0&&typeof x?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=x??I,t!==0&&!F(t))throw new TypeError("max option must be a nonnegative integer");let v=t?j(t):Array;if(!v)throw new Error("invalid max value: "+t);if(this.#o=t,this.#u=T,this.maxEntrySize=w||this.#u,this.sizeCalculation=y,this.sizeCalculation){if(!this.#u&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(m!==void 0&&typeof m!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=m,a!==void 0&&typeof a!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=a,this.#W=!!a,this.#s=new Map,this.#i=Array.from({length:t}).fill(void 0),this.#t=Array.from({length:t}).fill(void 0),this.#a=new v(t),this.#c=new v(t),this.#l=0,this.#h=0,this.#y=R.create(t),this.#n=0,this.#b=0,typeof l=="function"&&(this.#w=l),typeof c=="function"&&(this.#D=c),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#j=!!this.#D,this.#f=!!this.#S,this.noDisposeOnSet=!!g,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!_,this.allowStaleOnFetchRejection=!!d,this.allowStaleOnFetchAbort=!!A,this.ignoreFetchAbort=!!z,this.maxEntrySize!==0){if(this.#u!==0&&!F(this.#u))throw new TypeError("maxSize must be a positive integer if specified");if(!F(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#X()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!b,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!r,this.ttlResolution=F(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!F(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#o===0&&this.ttl===0&&this.#u===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#u){let E="LRU_CACHE_UNBOUNDED";P(E)&&(U.add(E),G("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,u))}}getRemainingTTL(e){return this.#s.has(e)?1/0:0}#H(){let e=new O(this.#o),t=new O(this.#o);this.#d=e,this.#F=t;let i=this.ttlAutopurge?Array.from({length:this.#o}):void 0;this.#g=i,this.#N=(r,h,l=this.#m.now())=>{t[r]=h!==0?l:0,e[r]=h,s(r,h)},this.#x=r=>{t[r]=e[r]!==0?this.#m.now():0,s(r,e[r])};let s=this.ttlAutopurge?(r,h)=>{if(i?.[r]&&(clearTimeout(i[r]),i[r]=void 0),h&&h!==0&&i){let l=setTimeout(()=>{this.#p(r)&&this.#v(this.#i[r],"expire")},h+1);l.unref&&l.unref(),i[r]=l}}:()=>{};this.#E=(r,h)=>{if(e[h]){let l=e[h],c=t[h];if(!l||!c)return;r.ttl=l,r.start=c,r.now=n||o();let f=r.now-c;r.remainingTTL=l-f}};let n=0,o=()=>{let r=this.#m.now();if(this.ttlResolution>0){n=r;let h=setTimeout(()=>n=0,this.ttlResolution);h.unref&&h.unref()}return r};this.getRemainingTTL=r=>{let h=this.#s.get(r);if(h===void 0)return 0;let l=e[h],c=t[h];if(!l||!c)return 1/0;let f=(n||o())-c;return l-f},this.#p=r=>{let h=t[r],l=e[r];return!!l&&!!h&&(n||o())-h>l}}#x=()=>{};#E=()=>{};#N=()=>{};#p=()=>!1;#X(){let e=new O(this.#o);this.#b=0,this.#_=e,this.#R=t=>{this.#b-=e[t],e[t]=0},this.#k=(t,i,s,n)=>{if(this.#e(i))return 0;if(!F(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,t),!F(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#I=(t,i,s)=>{if(e[t]=i,this.#u){let n=this.#u-e[t];for(;this.#b>n;)this.#G(!0)}this.#b+=e[t],s&&(s.entrySize=i,s.totalCalculatedSize=this.#b)}}#R=e=>{};#I=(e,t,i)=>{};#k=(e,t,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#h;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#l);)t=this.#c[t]}*#z({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#l;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#h);)t=this.#a[t]}#V(e){return e!==void 0&&this.#s.get(this.#i[e])===e}*entries(){for(let e of this.#A())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*rentries(){for(let e of this.#z())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*keys(){for(let e of this.#A()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*rkeys(){for(let e of this.#z()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*values(){for(let e of this.#A())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}*rvalues(){for(let e of this.#z())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&e(n,this.#i[i],this))return this.#C(this.#i[i],t)}}forEach(e,t=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}rforEach(e,t=this){for(let i of this.#z()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}purgeStale(){let e=!1;for(let t of this.#z({allowStale:!0}))this.#p(t)&&(this.#v(this.#i[t],"expire"),e=!0);return e}info(e){let t=this.#s.get(e);if(t===void 0)return;let i=this.#t[t],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#F){let o=this.#d[t],r=this.#F[t];if(o&&r){let h=o-(this.#m.now()-r);n.ttl=h,n.start=Date.now()}}return this.#_&&(n.size=this.#_[t]),n}dump(){let e=[];for(let t of this.#A({allowStale:!0})){let i=this.#i[t],s=this.#t[t],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#F){o.ttl=this.#d[t];let r=this.#m.now()-this.#F[t];o.start=Math.floor(Date.now()-r)}this.#_&&(o.size=this.#_[t]),e.unshift([i,o])}return e}load(e){this.clear();for(let[t,i]of e){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.#O(t,i.value,i)}}set(e,t,i={}){let{status:s=S.hasSubscribers?{}:void 0}=i;i.status=s,s&&(s.op="set",s.key=e,t!==void 0&&(s.value=t));let n=this.#O(e,t,i);return s&&S.hasSubscribers&&S.publish(s),n}#O(e,t,i={}){let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:r=this.sizeCalculation,status:h}=i;if(t===void 0)return h&&(h.set="deleted"),this.delete(e),this;let{noUpdateTTL:l=this.noUpdateTTL}=i;h&&!this.#e(t)&&(h.value=t);let c=this.#k(e,t,i.size||0,r,h);if(this.maxEntrySize&&c>this.maxEntrySize)return this.#v(e,"set"),h&&(h.set="miss",h.maxEntrySizeExceeded=!0),this;let f=this.#n===0?void 0:this.#s.get(e);if(f===void 0)f=this.#n===0?this.#h:this.#y.length!==0?this.#y.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=e,this.#t[f]=t,this.#s.set(e,f),this.#a[this.#h]=f,this.#c[f]=this.#h,this.#h=f,this.#n++,this.#I(f,c,h),h&&(h.set="add"),l=!1,this.#j&&this.#D?.(t,e,"add");else{this.#L(f);let g=this.#t[f];if(t!==g){if(this.#W&&this.#e(g)){g.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:p}=g;p!==void 0&&!o&&(this.#T&&this.#w?.(p,e,"set"),this.#f&&this.#r?.push([p,e,"set"]))}else o||(this.#T&&this.#w?.(g,e,"set"),this.#f&&this.#r?.push([g,e,"set"]));if(this.#R(f),this.#I(f,c,h),this.#t[f]=t,h){h.set="replace";let p=g&&this.#e(g)?g.__staleWhileFetching:g;p!==void 0&&(h.oldValue=p)}}else h&&(h.set="update");this.#j&&this.onInsert?.(t,e,t===g?"update":"replace")}if(s!==0&&!this.#d&&this.#H(),this.#d&&(l||this.#N(f,s,n),h&&this.#E(h,f)),!o&&this.#f&&this.#r){let g=this.#r,p;for(;p=g?.shift();)this.#S?.(...p)}return this}pop(){try{for(;this.#n;){let e=this.#t[this.#l];if(this.#G(!0),this.#e(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#f&&this.#r){let e=this.#r,t;for(;t=e?.shift();)this.#S?.(...t)}}}#G(e){let t=this.#l,i=this.#i[t],s=this.#t[t];return this.#W&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#R(t),this.#g?.[t]&&(clearTimeout(this.#g[t]),this.#g[t]=void 0),e&&(this.#i[t]=void 0,this.#t[t]=void 0,this.#y.push(t)),this.#n===1?(this.#l=this.#h=0,this.#y.length=0):this.#l=this.#a[t],this.#s.delete(i),this.#n--,t}has(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="has",i.key=e);let s=this.#Y(e,t);return S.hasSubscribers&&S.publish(i),s}#Y(e,t={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=t,n=this.#s.get(e);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#E(s,n));else return i&&this.#x(n),s&&(s.has="hit",this.#E(s,n)),!0}else s&&(s.has="miss");return!1}peek(e,t={}){let{status:i=D()?{}:void 0}=t;i&&(i.op="peek",i.key=e),t.status=i;let s=this.#J(e,t);return S.hasSubscribers&&S.publish(i),s}#J(e,t){let{status:i,allowStale:s=this.allowStale}=t,n=this.#s.get(e);if(n===void 0||!s&&this.#p(n)){i&&(i.peek=n===void 0?"miss":"stale");return}let o=this.#t[n],r=this.#e(o)?o.__staleWhileFetching:o;return i&&(r!==void 0?(i.peek="hit",i.value=r):i.peek="miss"),r}#P(e,t,i,s){let n=t===void 0?void 0:this.#t[t];if(this.#e(n))return n;let o=new AbortController,{signal:r}=i;r?.addEventListener("abort",()=>o.abort(r.reason),{signal:o.signal});let h={signal:o.signal,options:i,context:s},l=(w,y=!1)=>{let{aborted:a}=o.signal,m=i.ignoreFetchAbort&&w!==void 0,_=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&w!==void 0);if(i.status&&(a&&!y?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,m&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),a&&!m&&!y)return f(o.signal.reason,_);let b=p,d=this.#t[t];return(d===p||d===void 0&&m&&y)&&(w===void 0?b.__staleWhileFetching!==void 0?this.#t[t]=b.__staleWhileFetching:this.#v(e,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.#O(e,w,h.options))),w},c=w=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=w),f(w,!1)),f=(w,y)=>{let{aborted:a}=o.signal,m=a&&i.allowStaleOnFetchAbort,_=m||i.allowStaleOnFetchRejection,b=_||i.noDeleteOnFetchRejection,d=p;if(this.#t[t]===p&&(!b||!y&&d.__staleWhileFetching===void 0?this.#v(e,"fetch"):m||(this.#t[t]=d.__staleWhileFetching)),_)return i.status&&d.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw w},g=(w,y)=>{let a=this.#M?.(e,n,h);a&&a instanceof Promise&&a.then(m=>w(m===void 0?void 0:m),y),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(w(void 0),i.allowStaleOnFetchAbort&&(w=m=>l(m,!0)))})};i.status&&(i.status.fetchDispatched=!0);let p=new Promise(g).then(l,c),T=Object.assign(p,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return t===void 0?(this.#O(e,T,{...h.options,status:void 0}),t=this.#s.get(e)):this.#t[t]=T,T}#e(e){if(!this.#W)return!1;let t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof AbortController}fetch(e,t={}){let i=W.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#B(e,t);return s&&D()&&i&&(s.trace=!0,W.tracePromise(()=>n,s).catch(()=>{})),n}async#B(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:r=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:g=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:T=this.allowStaleOnFetchAbort,context:w,forceRefresh:y=!1,status:a,signal:m}=t;if(a&&(a.op="fetch",a.key=e,y&&(a.forceRefresh=!0)),!this.#W)return a&&(a.fetch="get"),this.#C(e,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:a});let _={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:r,size:h,sizeCalculation:l,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:g,allowStaleOnFetchAbort:T,ignoreFetchAbort:p,status:a,signal:m},b=this.#s.get(e);if(b===void 0){a&&(a.fetch="miss");let d=this.#P(e,b,_,w);return d.__returned=d}else{let d=this.#t[b];if(this.#e(d)){let E=i&&d.__staleWhileFetching!==void 0;return a&&(a.fetch="inflight",E&&(a.returnedStale=!0)),E?d.__staleWhileFetching:d.__returned=d}let A=this.#p(b);if(!y&&!A)return a&&(a.fetch="hit"),this.#L(b),s&&this.#x(b),a&&this.#E(a,b),d;let z=this.#P(e,b,_,w),v=z.__staleWhileFetching!==void 0&&i;return a&&(a.fetch=A?"stale":"refresh",v&&A&&(a.returnedStale=!0)),v?z.__staleWhileFetching:z.__returned=z}}forceFetch(e,t={}){let i=W.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#K(e,t);return s&&D()&&i&&(s.trace=!0,W.tracePromise(()=>n,s).catch(()=>{})),n}async#K(e,t={}){let i=await this.#B(e,t);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="memo",i.key=e,t.context&&(i.context=t.context));let s=this.#Q(e,t);return i&&(i.value=s),S.hasSubscribers&&S.publish(i),s}#Q(e,t={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,status:n,forceRefresh:o,...r}=t;n&&o&&(n.forceRefresh=!0);let h=this.#C(e,r),l=o||h===void 0;if(n&&(n.memo=l?"miss":"hit",l||(n.value=h)),!l)return h;let c=i(e,h,{options:r,context:s});return n&&(n.value=c),this.#O(e,c,r),c}get(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="get",i.key=e);let s=this.#C(e,t);return i&&(s!==void 0&&(i.value=s),S.hasSubscribers&&S.publish(i)),s}#C(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=t,r=this.#s.get(e);if(r===void 0){o&&(o.get="miss");return}let h=this.#t[r],l=this.#e(h);return o&&this.#E(o,r),this.#p(r)?l?(o&&(o.get="stale-fetching"),i&&h.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),h.__staleWhileFetching):void 0):(n||this.#v(e,"expire"),o&&(o.get="stale"),i?(o&&(o.returnedStale=!0),h):void 0):(o&&(o.get=l?"fetching":"hit"),this.#L(r),s&&this.#x(r),l?h.__staleWhileFetching:h)}#$(e,t){this.#c[t]=e,this.#a[e]=t}#L(e){e!==this.#h&&(e===this.#l?this.#l=this.#a[e]:this.#$(this.#c[e],this.#a[e]),this.#$(this.#h,e),this.#h=e)}delete(e){return this.#v(e,"delete")}#v(e,t){S.hasSubscribers&&S.publish({op:"delete",delete:t,key:e});let i=!1;if(this.#n!==0){let s=this.#s.get(e);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#q(t);else{this.#R(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,e,t),this.#f&&this.#r?.push([n,e,t])),this.#s.delete(e),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#c[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#c[s];this.#a[o]=this.#a[s];let r=this.#a[s];this.#c[r]=this.#c[s]}this.#n--,this.#y.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#q("delete")}#q(e){for(let t of this.#z({allowStale:!0})){let i=this.#t[t];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[t];this.#T&&this.#w?.(i,s,e),this.#f&&this.#r?.push([i,s,e])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#F){this.#d.fill(0),this.#F.fill(0);for(let t of this.#g??[])t!==void 0&&clearTimeout(t);this.#g?.fill(void 0)}if(this.#_&&this.#_.fill(0),this.#l=0,this.#h=0,this.#y.length=0,this.#b=0,this.#n=0,this.#f&&this.#r){let t=this.#r,i;for(;i=t?.shift();)this.#S?.(...i)}}};export{M as LRUCache}; +//# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/lru-cache/dist/esm/diagnostics-channel.js b/deps/npm/node_modules/lru-cache/dist/esm/diagnostics-channel.js new file mode 100644 index 00000000000000..76d86f8125aaa0 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/diagnostics-channel.js @@ -0,0 +1,19 @@ +/** + * no-op polyfills for non-node environments. tries to load the actual + * diagnostics_channel module on platforms that support it, but fails + * gracefully if not found. This means that the first tick of metrics + * and tracing will be missed, but that probably doesn't matter much. + */ +// conditionally import from diagnostic_channel, fall back to dummyfill +// all we actually have to mock is the hasSubscribers, since we always check +/* v8 ignore next */ +const dummy = { hasSubscribers: false }; +export let metrics = dummy; +export let tracing = dummy; +import('node:diagnostics_channel') + .then(dc => { + metrics = dc.channel('lru-cache:metrics'); + tracing = dc.tracingChannel('lru-cache'); +}) + .catch(() => { }); +//# sourceMappingURL=diagnostics-channel-esm.mjs.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/esm/index.js b/deps/npm/node_modules/lru-cache/dist/esm/index.js index 882d85dd71e51f..11c8cd8dfbf5cf 100644 --- a/deps/npm/node_modules/lru-cache/dist/esm/index.js +++ b/deps/npm/node_modules/lru-cache/dist/esm/index.js @@ -1,6 +1,8 @@ /** * @module LRUCache */ +import { metrics, tracing } from './diagnostics-channel.js'; +const hasSubscribers = () => metrics.hasSubscribers || tracing.hasSubscribers; const defaultPerf = (typeof performance === 'object' && performance && typeof performance.now === 'function') ? @@ -11,65 +13,19 @@ const warned = new Set(); const PROCESS = (typeof process === 'object' && !!process ? process : {}); -/* c8 ignore start */ +/* c8 ignore stop */ const emitWarning = (msg, type, code, fn) => { - typeof PROCESS.emitWarning === 'function' ? - PROCESS.emitWarning(msg, type, code, fn) - : console.error(`[${code}] ${type}: ${msg}`); + if (typeof PROCESS.emitWarning === 'function') { + PROCESS.emitWarning(msg, type, code, fn); + } + else { + //oxlint-disable-next-line no-console + console.error(`[${code}] ${type}: ${msg}`); + } }; -let AC = globalThis.AbortController; -let AS = globalThis.AbortSignal; -/* c8 ignore start */ -if (typeof AC === 'undefined') { - //@ts-ignore - AS = class AbortSignal { - onabort; - _onabort = []; - reason; - aborted = false; - addEventListener(_, fn) { - this._onabort.push(fn); - } - }; - //@ts-ignore - AC = class AbortController { - constructor() { - warnACPolyfill(); - } - signal = new AS(); - abort(reason) { - if (this.signal.aborted) - return; - //@ts-ignore - this.signal.reason = reason; - //@ts-ignore - this.signal.aborted = true; - //@ts-ignore - for (const fn of this.signal._onabort) { - fn(reason); - } - this.signal.onabort?.(reason); - } - }; - let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'; - const warnACPolyfill = () => { - if (!printACPolyfillWarning) - return; - printACPolyfillWarning = false; - emitWarning('AbortController is not defined. If using lru-cache in ' + - 'node 14, load an AbortController polyfill from the ' + - '`node-abort-controller` package. A minimal polyfill is ' + - 'provided for use by LRUCache.fetch(), but it should not be ' + - 'relied upon in other contexts (eg, passing it to other APIs that ' + - 'use AbortController/AbortSignal might have undesirable effects). ' + - 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill); - }; -} -/* c8 ignore stop */ const shouldWarn = (code) => !warned.has(code); const TYPE = Symbol('type'); -const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); -/* c8 ignore start */ +const isPosInt = (n) => !!n && n === Math.floor(n) && n > 0 && isFinite(n); // This is a little bit ridiculous, tbh. // The maximum array length is 2^32-1 or thereabouts on most JS impls. // And well before that point, you're caching the entire world, I mean, @@ -78,6 +34,7 @@ const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); // zeroes at init time is brutal when you get that big. // But why not be complete? // Maybe in the future, these limits will have expanded. +/* c8 ignore start */ const getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array @@ -358,8 +315,8 @@ export class LRUCache { this.#fetchMethod = fetchMethod; this.#hasFetchMethod = !!fetchMethod; this.#keyMap = new Map(); - this.#keyList = new Array(max).fill(undefined); - this.#valList = new Array(max).fill(undefined); + this.#keyList = Array.from({ length: max }).fill(undefined); + this.#valList = Array.from({ length: max }).fill(undefined); this.#next = new UintArray(max); this.#prev = new UintArray(max); this.#head = 0; @@ -443,7 +400,9 @@ export class LRUCache { this.#ttls = ttls; this.#starts = starts; const purgeTimers = this.ttlAutopurge ? - new Array(this.#max) + Array.from({ + length: this.#max, + }) : undefined; this.#autopurgeTimers = purgeTimers; this.#setItemTTL = (index, ttl, start = this.#perf.now()) => { @@ -485,9 +444,11 @@ export class LRUCache { if (ttls[index]) { const ttl = ttls[index]; const start = starts[index]; - /* c8 ignore next */ - if (!ttl || !start) + /* c8 ignore start */ + if (!ttl || !start) { return; + } + /* c8 ignore stop */ status.ttl = ttl; status.start = start; status.now = cachedNow || getNow(); @@ -594,10 +555,7 @@ export class LRUCache { }; *#indexes({ allowStale = this.allowStale } = {}) { if (this.#size) { - for (let i = this.#tail; true;) { - if (!this.#isValidIndex(i)) { - break; - } + for (let i = this.#tail; this.#isValidIndex(i);) { if (allowStale || !this.#isStale(i)) { yield i; } @@ -612,10 +570,7 @@ export class LRUCache { } *#rindexes({ allowStale = this.allowStale } = {}) { if (this.#size) { - for (let i = this.#head; true;) { - if (!this.#isValidIndex(i)) { - break; - } + for (let i = this.#head; this.#isValidIndex(i);) { if (allowStale || !this.#isStale(i)) { yield i; } @@ -736,7 +691,7 @@ export class LRUCache { if (value === undefined) continue; if (fn(value, this.#keyList[i], this)) { - return this.get(this.#keyList[i], getOptions); + return this.#get(this.#keyList[i], getOptions); } } } @@ -809,7 +764,7 @@ export class LRUCache { const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; if (value === undefined) return undefined; - /* c8 ignore end */ + /* c8 ignore stop */ const entry = { value }; if (this.#ttls && this.#starts) { const ttl = this.#ttls[i]; @@ -883,7 +838,7 @@ export class LRUCache { const age = Date.now() - entry.start; entry.start = this.#perf.now() - age; } - this.set(key, entry.value, entry); + this.#set(key, entry.value, entry); } } /** @@ -917,22 +872,41 @@ export class LRUCache { * `cache.delete(key)`. `undefined` is never stored in the cache. */ set(k, v, setOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = setOptions; + setOptions.status = status; + if (status) { + status.op = 'set'; + status.key = k; + if (v !== undefined) + status.value = v; + } + const result = this.#set(k, v, setOptions); + if (status && metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #set(k, v, setOptions = {}) { + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; if (v === undefined) { + if (status) + status.set = 'deleted'; this.delete(k); return this; } - const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; let { noUpdateTTL = this.noUpdateTTL } = setOptions; - const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation); + if (status && !this.#isBackgroundFetch(v)) + status.value = v; + const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation, status); // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + // have to delete, in case something is there already. + this.#delete(k, 'set'); if (status) { status.set = 'miss'; status.maxEntrySizeExceeded = true; } - // have to delete, in case something is there already. - this.#delete(k, 'set'); return this; } let index = this.#size === 0 ? undefined : this.#keyMap.get(k); @@ -1103,6 +1077,18 @@ export class LRUCache { * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. */ has(k, hasOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = hasOptions; + hasOptions.status = status; + if (status) { + status.op = 'has'; + status.key = k; + } + const result = this.#has(k, hasOptions); + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #has(k, hasOptions = {}) { const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; const index = this.#keyMap.get(k); if (index !== undefined) { @@ -1139,21 +1125,45 @@ export class LRUCache { * {@link LRUCache.OptionsBase.allowStale} is set. */ peek(k, peekOptions = {}) { - const { allowStale = this.allowStale } = peekOptions; + const { status = hasSubscribers() ? {} : undefined } = peekOptions; + if (status) { + status.op = 'peek'; + status.key = k; + } + peekOptions.status = status; + const result = this.#peek(k, peekOptions); + if (metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #peek(k, peekOptions) { + const { status, allowStale = this.allowStale } = peekOptions; const index = this.#keyMap.get(k); if (index === undefined || (!allowStale && this.#isStale(index))) { - return; + if (status) + status.peek = index === undefined ? 'miss' : 'stale'; + return undefined; } const v = this.#valList[index]; - // either stale and allowed, or forcing a refresh of non-stale value - return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + const val = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (status) { + if (val !== undefined) { + status.peek = 'hit'; + status.value = val; + } + else { + status.peek = 'miss'; + } + } + return val; } #backgroundFetch(k, index, options, context) { const v = index === undefined ? undefined : this.#valList[index]; if (this.#isBackgroundFetch(v)) { return v; } - const ac = new AC(); + const ac = new AbortController(); const { signal } = options; // when/if our AC signals, then stop listening to theirs. signal?.addEventListener('abort', () => ac.abort(signal.reason), { @@ -1189,7 +1199,7 @@ export class LRUCache { // cache and ignore the abort, or if it's still pending on this specific // background request, then write it to the cache. const vl = this.#valList[index]; - if (vl === p || (ignoreAbort && updateCache && vl === undefined)) { + if (vl === p || (vl === undefined && ignoreAbort && updateCache)) { if (v === undefined) { if (bf.__staleWhileFetching !== undefined) { this.#valList[index] = bf.__staleWhileFetching; @@ -1201,7 +1211,7 @@ export class LRUCache { else { if (options.status) options.status.fetchUpdated = true; - this.set(k, v, fetchOpts.options); + this.#set(k, v, fetchOpts.options); } } return v; @@ -1273,7 +1283,7 @@ export class LRUCache { }); if (index === undefined) { // internal, don't expose status. - this.set(k, bf, { ...fetchOpts.options, status: undefined }); + this.#set(k, bf, { ...fetchOpts.options, status: undefined }); index = this.#keyMap.get(k); } else { @@ -1288,9 +1298,25 @@ export class LRUCache { return (!!b && b instanceof Promise && b.hasOwnProperty('__staleWhileFetching') && - b.__abortController instanceof AC); + b.__abortController instanceof AbortController); + } + fetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#fetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; } - async fetch(k, fetchOptions = {}) { + async #fetch(k, fetchOptions = {}) { const { // get options allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, @@ -1298,10 +1324,16 @@ export class LRUCache { ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; + if (status) { + status.op = 'fetch'; + status.key = k; + if (forceRefresh) + status.forceRefresh = true; + } if (!this.#hasFetchMethod) { if (status) status.fetch = 'get'; - return this.get(k, { + return this.#get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, @@ -1370,26 +1402,69 @@ export class LRUCache { return staleVal ? p.__staleWhileFetching : (p.__returned = p); } } - async forceFetch(k, fetchOptions = {}) { - const v = await this.fetch(k, fetchOptions); + forceFetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#forceFetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #forceFetch(k, fetchOptions = {}) { + const v = await this.#fetch(k, fetchOptions); if (v === undefined) throw new Error('fetch() returned undefined'); return v; } memo(k, memoOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = memoOptions; + memoOptions.status = status; + if (status) { + status.op = 'memo'; + status.key = k; + if (memoOptions.context) { + status.context = memoOptions.context; + } + } + const result = this.#memo(k, memoOptions); + if (status) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #memo(k, memoOptions = {}) { const memoMethod = this.#memoMethod; if (!memoMethod) { throw new Error('no memoMethod provided to constructor'); } - const { context, forceRefresh, ...options } = memoOptions; - const v = this.get(k, options); - if (!forceRefresh && v !== undefined) + const { context, status, forceRefresh, ...options } = memoOptions; + if (status && forceRefresh) + status.forceRefresh = true; + const v = this.#get(k, options); + const refresh = forceRefresh || v === undefined; + if (status) { + status.memo = refresh ? 'miss' : 'hit'; + if (!refresh) + status.value = v; + } + if (!refresh) return v; const vv = memoMethod(k, v, { options, context, }); - this.set(k, vv, options); + if (status) + status.value = vv; + this.#set(k, vv, options); return vv; } /** @@ -1399,55 +1474,70 @@ export class LRUCache { * If the key is not found, get() will return `undefined`. */ get(k, getOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = getOptions; + getOptions.status = status; + if (status) { + status.op = 'get'; + status.key = k; + } + const result = this.#get(k, getOptions); + if (status) { + if (result !== undefined) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + } + return result; + } + #get(k, getOptions = {}) { const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; const index = this.#keyMap.get(k); - if (index !== undefined) { - const value = this.#valList[index]; - const fetching = this.#isBackgroundFetch(value); + if (index === undefined) { if (status) - this.#statusTTL(status, index); - if (this.#isStale(index)) { + status.get = 'miss'; + return undefined; + } + const value = this.#valList[index]; + const fetching = this.#isBackgroundFetch(value); + if (status) + this.#statusTTL(status, index); + if (this.#isStale(index)) { + // delete only if not an in-flight background fetch + if (!fetching) { + if (!noDeleteOnStaleGet) { + this.#delete(k, 'expire'); + } if (status) status.get = 'stale'; - // delete only if not an in-flight background fetch - if (!fetching) { - if (!noDeleteOnStaleGet) { - this.#delete(k, 'expire'); - } - if (status && allowStale) + if (allowStale) { + if (status) status.returnedStale = true; - return allowStale ? value : undefined; - } - else { - if (status && - allowStale && - value.__staleWhileFetching !== undefined) { - status.returnedStale = true; - } - return allowStale ? value.__staleWhileFetching : undefined; + return value; } + return undefined; } - else { + if (status) + status.get = 'stale-fetching'; + if (allowStale && value.__staleWhileFetching !== undefined) { if (status) - status.get = 'hit'; - // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching. - // If it's not stale, and fetching, AND has a __staleWhileFetching - // value, then that means the user fetched with {forceRefresh:true}, - // so it's safe to return that value. - if (fetching) { - return value.__staleWhileFetching; - } - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - return value; + status.returnedStale = true; + return value.__staleWhileFetching; } + return undefined; } - else if (status) { - status.get = 'miss'; - } + // not stale + if (status) + status.get = fetching ? 'fetching' : 'hit'; + // if we're currently fetching it, we don't actually have it yet + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + return fetching ? value.__staleWhileFetching : value; } #connect(p, n) { this.#prev[n] = p; @@ -1482,6 +1572,13 @@ export class LRUCache { return this.#delete(k, 'delete'); } #delete(k, reason) { + if (metrics.hasSubscribers) { + metrics.publish({ + op: 'delete', + delete: reason, + key: k, + }); + } let deleted = false; if (this.#size !== 0) { const index = this.#keyMap.get(k); diff --git a/deps/npm/node_modules/lru-cache/dist/esm/index.min.js b/deps/npm/node_modules/lru-cache/dist/esm/index.min.js index bb72f37e7d0643..fab73dbf022822 100644 --- a/deps/npm/node_modules/lru-cache/dist/esm/index.min.js +++ b/deps/npm/node_modules/lru-cache/dist/esm/index.min.js @@ -1,2 +1,2 @@ -var x=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,I=new Set,R=typeof process=="object"&&process?process:{},U=(c,t,e,i)=>{typeof R.emitWarning=="function"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,D=globalThis.AbortSignal;if(typeof C>"u"){D=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new D;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{c&&(c=!1,U("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var G=c=>!I.has(c),H=Symbol("type"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},L=class c{#o;#c;#w;#C;#S;#L;#I;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#U;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#G(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#I}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=v??x,e!==0&&!y(e))throw new TypeError("max option must be a nonnegative integer");let O=e?M(e):Array;if(!O)throw new Error("invalid max value: "+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#I=S,l!==void 0&&typeof l!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a=="function"&&(this.#w=a),typeof w=="function"&&(this.#C=w),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#U=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError("maxSize must be a positive integer if specified");if(!y(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E="LRU_CACHE_UNBOUNDED";G(E)&&(I.add(E),U("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],"expire")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!y(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#x(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#E(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#x(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set="add"),a=!1,this.#U&&this.#C?.(e,t,"add");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,"set"),this.#f&&this.#r?.push([g,t,"set"]))}else o||(this.#T&&this.#w?.(d,t,"set"),this.#f&&this.#r?.push([d,t,"set"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set="replace";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set="update");this.#U&&this.onInsert?.(e,t,e===d?"update":"replace")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#x(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#x(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#z(s,n));else return i&&this.#R(n),s&&(s.has="hit",this.#z(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#G(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener("abort",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,"fetch"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch="miss");let u=this.#G(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch="inflight",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch="hit"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#G(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?"stale":"refresh",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#I;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get="stale"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,"expire"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get="hit"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get="miss")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,"delete")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V("delete")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};export{L as LRUCache}; +var C={hasSubscribers:!1},S=C,A=C;import("node:diagnostics_channel").then(u=>{S=u.channel("lru-cache:metrics"),A=u.tracingChannel("lru-cache")}).catch(()=>{});var D=()=>S.hasSubscribers||A.hasSubscribers,I=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,U=new Set,L=typeof process=="object"&&process?process:{},G=(u,e,t,i)=>{typeof L.emitWarning=="function"?L.emitWarning(u,e,t,i):console.error(`[${t}] ${e}: ${u}`)},P=u=>!U.has(u),V=Symbol("type"),F=u=>!!u&&u===Math.floor(u)&&u>0&&isFinite(u),j=u=>F(u)?u<=Math.pow(2,8)?Uint8Array:u<=Math.pow(2,16)?Uint16Array:u<=Math.pow(2,32)?Uint32Array:u<=Number.MAX_SAFE_INTEGER?O:null:null,O=class extends Array{constructor(e){super(e),this.fill(0)}},R=class u{heap;length;static#o=!1;static create(e){let t=j(e);if(!t)return[];u.#o=!0;let i=new u(e,t);return u.#o=!1,i}constructor(e,t){if(!u.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},M=class u{#o;#u;#w;#D;#S;#M;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#b;#s;#i;#t;#a;#c;#l;#h;#y;#r;#_;#F;#d;#g;#T;#W;#f;#j;static unsafeExposeInternals(e){return{starts:e.#F,ttls:e.#d,autopurgeTimers:e.#g,sizes:e.#_,keyMap:e.#s,keyList:e.#i,valList:e.#t,next:e.#a,prev:e.#c,get head(){return e.#l},get tail(){return e.#h},free:e.#y,isBackgroundFetch:t=>e.#e(t),backgroundFetch:(t,i,s,n)=>e.#P(t,i,s,n),moveToTail:t=>e.#L(t),indexes:t=>e.#A(t),rindexes:t=>e.#z(t),isStale:t=>e.#p(t)}}get max(){return this.#o}get maxSize(){return this.#u}get calculatedSize(){return this.#b}get size(){return this.#n}get fetchMethod(){return this.#M}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#D}get disposeAfter(){return this.#S}constructor(e){let{max:t=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:r,allowStale:h,dispose:l,onInsert:c,disposeAfter:f,noDisposeOnSet:g,noUpdateTTL:p,maxSize:T=0,maxEntrySize:w=0,sizeCalculation:y,fetchMethod:a,memoMethod:m,noDeleteOnFetchRejection:_,noDeleteOnStaleGet:b,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:z,ignoreFetchAbort:v,perf:x}=e;if(x!==void 0&&typeof x?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=x??I,t!==0&&!F(t))throw new TypeError("max option must be a nonnegative integer");let E=t?j(t):Array;if(!E)throw new Error("invalid max value: "+t);if(this.#o=t,this.#u=T,this.maxEntrySize=w||this.#u,this.sizeCalculation=y,this.sizeCalculation){if(!this.#u&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(m!==void 0&&typeof m!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=m,a!==void 0&&typeof a!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=a,this.#W=!!a,this.#s=new Map,this.#i=Array.from({length:t}).fill(void 0),this.#t=Array.from({length:t}).fill(void 0),this.#a=new E(t),this.#c=new E(t),this.#l=0,this.#h=0,this.#y=R.create(t),this.#n=0,this.#b=0,typeof l=="function"&&(this.#w=l),typeof c=="function"&&(this.#D=c),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#j=!!this.#D,this.#f=!!this.#S,this.noDisposeOnSet=!!g,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!_,this.allowStaleOnFetchRejection=!!d,this.allowStaleOnFetchAbort=!!z,this.ignoreFetchAbort=!!v,this.maxEntrySize!==0){if(this.#u!==0&&!F(this.#u))throw new TypeError("maxSize must be a positive integer if specified");if(!F(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#X()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!b,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!r,this.ttlResolution=F(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!F(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#o===0&&this.ttl===0&&this.#u===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#u){let W="LRU_CACHE_UNBOUNDED";P(W)&&(U.add(W),G("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",W,u))}}getRemainingTTL(e){return this.#s.has(e)?1/0:0}#H(){let e=new O(this.#o),t=new O(this.#o);this.#d=e,this.#F=t;let i=this.ttlAutopurge?Array.from({length:this.#o}):void 0;this.#g=i,this.#N=(r,h,l=this.#m.now())=>{t[r]=h!==0?l:0,e[r]=h,s(r,h)},this.#x=r=>{t[r]=e[r]!==0?this.#m.now():0,s(r,e[r])};let s=this.ttlAutopurge?(r,h)=>{if(i?.[r]&&(clearTimeout(i[r]),i[r]=void 0),h&&h!==0&&i){let l=setTimeout(()=>{this.#p(r)&&this.#v(this.#i[r],"expire")},h+1);l.unref&&l.unref(),i[r]=l}}:()=>{};this.#E=(r,h)=>{if(e[h]){let l=e[h],c=t[h];if(!l||!c)return;r.ttl=l,r.start=c,r.now=n||o();let f=r.now-c;r.remainingTTL=l-f}};let n=0,o=()=>{let r=this.#m.now();if(this.ttlResolution>0){n=r;let h=setTimeout(()=>n=0,this.ttlResolution);h.unref&&h.unref()}return r};this.getRemainingTTL=r=>{let h=this.#s.get(r);if(h===void 0)return 0;let l=e[h],c=t[h];if(!l||!c)return 1/0;let f=(n||o())-c;return l-f},this.#p=r=>{let h=t[r],l=e[r];return!!l&&!!h&&(n||o())-h>l}}#x=()=>{};#E=()=>{};#N=()=>{};#p=()=>!1;#X(){let e=new O(this.#o);this.#b=0,this.#_=e,this.#R=t=>{this.#b-=e[t],e[t]=0},this.#k=(t,i,s,n)=>{if(this.#e(i))return 0;if(!F(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,t),!F(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#I=(t,i,s)=>{if(e[t]=i,this.#u){let n=this.#u-e[t];for(;this.#b>n;)this.#G(!0)}this.#b+=e[t],s&&(s.entrySize=i,s.totalCalculatedSize=this.#b)}}#R=e=>{};#I=(e,t,i)=>{};#k=(e,t,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#h;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#l);)t=this.#c[t]}*#z({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#l;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#h);)t=this.#a[t]}#V(e){return e!==void 0&&this.#s.get(this.#i[e])===e}*entries(){for(let e of this.#A())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*rentries(){for(let e of this.#z())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*keys(){for(let e of this.#A()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*rkeys(){for(let e of this.#z()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*values(){for(let e of this.#A())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}*rvalues(){for(let e of this.#z())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&e(n,this.#i[i],this))return this.#C(this.#i[i],t)}}forEach(e,t=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}rforEach(e,t=this){for(let i of this.#z()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}purgeStale(){let e=!1;for(let t of this.#z({allowStale:!0}))this.#p(t)&&(this.#v(this.#i[t],"expire"),e=!0);return e}info(e){let t=this.#s.get(e);if(t===void 0)return;let i=this.#t[t],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#F){let o=this.#d[t],r=this.#F[t];if(o&&r){let h=o-(this.#m.now()-r);n.ttl=h,n.start=Date.now()}}return this.#_&&(n.size=this.#_[t]),n}dump(){let e=[];for(let t of this.#A({allowStale:!0})){let i=this.#i[t],s=this.#t[t],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#F){o.ttl=this.#d[t];let r=this.#m.now()-this.#F[t];o.start=Math.floor(Date.now()-r)}this.#_&&(o.size=this.#_[t]),e.unshift([i,o])}return e}load(e){this.clear();for(let[t,i]of e){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.#O(t,i.value,i)}}set(e,t,i={}){let{status:s=S.hasSubscribers?{}:void 0}=i;i.status=s,s&&(s.op="set",s.key=e,t!==void 0&&(s.value=t));let n=this.#O(e,t,i);return s&&S.hasSubscribers&&S.publish(s),n}#O(e,t,i={}){let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:r=this.sizeCalculation,status:h}=i;if(t===void 0)return h&&(h.set="deleted"),this.delete(e),this;let{noUpdateTTL:l=this.noUpdateTTL}=i;h&&!this.#e(t)&&(h.value=t);let c=this.#k(e,t,i.size||0,r,h);if(this.maxEntrySize&&c>this.maxEntrySize)return this.#v(e,"set"),h&&(h.set="miss",h.maxEntrySizeExceeded=!0),this;let f=this.#n===0?void 0:this.#s.get(e);if(f===void 0)f=this.#n===0?this.#h:this.#y.length!==0?this.#y.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=e,this.#t[f]=t,this.#s.set(e,f),this.#a[this.#h]=f,this.#c[f]=this.#h,this.#h=f,this.#n++,this.#I(f,c,h),h&&(h.set="add"),l=!1,this.#j&&this.#D?.(t,e,"add");else{this.#L(f);let g=this.#t[f];if(t!==g){if(this.#W&&this.#e(g)){g.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:p}=g;p!==void 0&&!o&&(this.#T&&this.#w?.(p,e,"set"),this.#f&&this.#r?.push([p,e,"set"]))}else o||(this.#T&&this.#w?.(g,e,"set"),this.#f&&this.#r?.push([g,e,"set"]));if(this.#R(f),this.#I(f,c,h),this.#t[f]=t,h){h.set="replace";let p=g&&this.#e(g)?g.__staleWhileFetching:g;p!==void 0&&(h.oldValue=p)}}else h&&(h.set="update");this.#j&&this.onInsert?.(t,e,t===g?"update":"replace")}if(s!==0&&!this.#d&&this.#H(),this.#d&&(l||this.#N(f,s,n),h&&this.#E(h,f)),!o&&this.#f&&this.#r){let g=this.#r,p;for(;p=g?.shift();)this.#S?.(...p)}return this}pop(){try{for(;this.#n;){let e=this.#t[this.#l];if(this.#G(!0),this.#e(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#f&&this.#r){let e=this.#r,t;for(;t=e?.shift();)this.#S?.(...t)}}}#G(e){let t=this.#l,i=this.#i[t],s=this.#t[t];return this.#W&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#R(t),this.#g?.[t]&&(clearTimeout(this.#g[t]),this.#g[t]=void 0),e&&(this.#i[t]=void 0,this.#t[t]=void 0,this.#y.push(t)),this.#n===1?(this.#l=this.#h=0,this.#y.length=0):this.#l=this.#a[t],this.#s.delete(i),this.#n--,t}has(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="has",i.key=e);let s=this.#Y(e,t);return S.hasSubscribers&&S.publish(i),s}#Y(e,t={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=t,n=this.#s.get(e);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#E(s,n));else return i&&this.#x(n),s&&(s.has="hit",this.#E(s,n)),!0}else s&&(s.has="miss");return!1}peek(e,t={}){let{status:i=D()?{}:void 0}=t;i&&(i.op="peek",i.key=e),t.status=i;let s=this.#J(e,t);return S.hasSubscribers&&S.publish(i),s}#J(e,t){let{status:i,allowStale:s=this.allowStale}=t,n=this.#s.get(e);if(n===void 0||!s&&this.#p(n)){i&&(i.peek=n===void 0?"miss":"stale");return}let o=this.#t[n],r=this.#e(o)?o.__staleWhileFetching:o;return i&&(r!==void 0?(i.peek="hit",i.value=r):i.peek="miss"),r}#P(e,t,i,s){let n=t===void 0?void 0:this.#t[t];if(this.#e(n))return n;let o=new AbortController,{signal:r}=i;r?.addEventListener("abort",()=>o.abort(r.reason),{signal:o.signal});let h={signal:o.signal,options:i,context:s},l=(w,y=!1)=>{let{aborted:a}=o.signal,m=i.ignoreFetchAbort&&w!==void 0,_=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&w!==void 0);if(i.status&&(a&&!y?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,m&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),a&&!m&&!y)return f(o.signal.reason,_);let b=p,d=this.#t[t];return(d===p||d===void 0&&m&&y)&&(w===void 0?b.__staleWhileFetching!==void 0?this.#t[t]=b.__staleWhileFetching:this.#v(e,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.#O(e,w,h.options))),w},c=w=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=w),f(w,!1)),f=(w,y)=>{let{aborted:a}=o.signal,m=a&&i.allowStaleOnFetchAbort,_=m||i.allowStaleOnFetchRejection,b=_||i.noDeleteOnFetchRejection,d=p;if(this.#t[t]===p&&(!b||!y&&d.__staleWhileFetching===void 0?this.#v(e,"fetch"):m||(this.#t[t]=d.__staleWhileFetching)),_)return i.status&&d.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw w},g=(w,y)=>{let a=this.#M?.(e,n,h);a&&a instanceof Promise&&a.then(m=>w(m===void 0?void 0:m),y),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(w(void 0),i.allowStaleOnFetchAbort&&(w=m=>l(m,!0)))})};i.status&&(i.status.fetchDispatched=!0);let p=new Promise(g).then(l,c),T=Object.assign(p,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return t===void 0?(this.#O(e,T,{...h.options,status:void 0}),t=this.#s.get(e)):this.#t[t]=T,T}#e(e){if(!this.#W)return!1;let t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof AbortController}fetch(e,t={}){let i=A.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#B(e,t);return s&&D()&&i&&(s.trace=!0,A.tracePromise(()=>n,s).catch(()=>{})),n}async#B(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:r=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:g=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:T=this.allowStaleOnFetchAbort,context:w,forceRefresh:y=!1,status:a,signal:m}=t;if(a&&(a.op="fetch",a.key=e,y&&(a.forceRefresh=!0)),!this.#W)return a&&(a.fetch="get"),this.#C(e,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:a});let _={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:r,size:h,sizeCalculation:l,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:g,allowStaleOnFetchAbort:T,ignoreFetchAbort:p,status:a,signal:m},b=this.#s.get(e);if(b===void 0){a&&(a.fetch="miss");let d=this.#P(e,b,_,w);return d.__returned=d}else{let d=this.#t[b];if(this.#e(d)){let W=i&&d.__staleWhileFetching!==void 0;return a&&(a.fetch="inflight",W&&(a.returnedStale=!0)),W?d.__staleWhileFetching:d.__returned=d}let z=this.#p(b);if(!y&&!z)return a&&(a.fetch="hit"),this.#L(b),s&&this.#x(b),a&&this.#E(a,b),d;let v=this.#P(e,b,_,w),E=v.__staleWhileFetching!==void 0&&i;return a&&(a.fetch=z?"stale":"refresh",E&&z&&(a.returnedStale=!0)),E?v.__staleWhileFetching:v.__returned=v}}forceFetch(e,t={}){let i=A.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#K(e,t);return s&&D()&&i&&(s.trace=!0,A.tracePromise(()=>n,s).catch(()=>{})),n}async#K(e,t={}){let i=await this.#B(e,t);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="memo",i.key=e,t.context&&(i.context=t.context));let s=this.#Q(e,t);return i&&(i.value=s),S.hasSubscribers&&S.publish(i),s}#Q(e,t={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,status:n,forceRefresh:o,...r}=t;n&&o&&(n.forceRefresh=!0);let h=this.#C(e,r),l=o||h===void 0;if(n&&(n.memo=l?"miss":"hit",l||(n.value=h)),!l)return h;let c=i(e,h,{options:r,context:s});return n&&(n.value=c),this.#O(e,c,r),c}get(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="get",i.key=e);let s=this.#C(e,t);return i&&(s!==void 0&&(i.value=s),S.hasSubscribers&&S.publish(i)),s}#C(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=t,r=this.#s.get(e);if(r===void 0){o&&(o.get="miss");return}let h=this.#t[r],l=this.#e(h);return o&&this.#E(o,r),this.#p(r)?l?(o&&(o.get="stale-fetching"),i&&h.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),h.__staleWhileFetching):void 0):(n||this.#v(e,"expire"),o&&(o.get="stale"),i?(o&&(o.returnedStale=!0),h):void 0):(o&&(o.get=l?"fetching":"hit"),this.#L(r),s&&this.#x(r),l?h.__staleWhileFetching:h)}#$(e,t){this.#c[t]=e,this.#a[e]=t}#L(e){e!==this.#h&&(e===this.#l?this.#l=this.#a[e]:this.#$(this.#c[e],this.#a[e]),this.#$(this.#h,e),this.#h=e)}delete(e){return this.#v(e,"delete")}#v(e,t){S.hasSubscribers&&S.publish({op:"delete",delete:t,key:e});let i=!1;if(this.#n!==0){let s=this.#s.get(e);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#q(t);else{this.#R(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,e,t),this.#f&&this.#r?.push([n,e,t])),this.#s.delete(e),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#c[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#c[s];this.#a[o]=this.#a[s];let r=this.#a[s];this.#c[r]=this.#c[s]}this.#n--,this.#y.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#q("delete")}#q(e){for(let t of this.#z({allowStale:!0})){let i=this.#t[t];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[t];this.#T&&this.#w?.(i,s,e),this.#f&&this.#r?.push([i,s,e])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#F){this.#d.fill(0),this.#F.fill(0);for(let t of this.#g??[])t!==void 0&&clearTimeout(t);this.#g?.fill(void 0)}if(this.#_&&this.#_.fill(0),this.#l=0,this.#h=0,this.#y.length=0,this.#b=0,this.#n=0,this.#f&&this.#r){let t=this.#r,i;for(;i=t?.shift();)this.#S?.(...i)}}};export{M as LRUCache}; //# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js b/deps/npm/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js new file mode 100644 index 00000000000000..d6d8c48f2be7db --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js @@ -0,0 +1,7 @@ +// simple node version that imports from node builtin +// this gets compiled to a require() commonjs-style override, +// not using top level await on a conditional dynamic import +import { tracingChannel, channel } from 'node:diagnostics_channel'; +export const metrics = channel('lru-cache:metrics'); +export const tracing = tracingChannel('lru-cache'); +//# sourceMappingURL=diagnostics-channel-node.mjs.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/esm/node/index.js b/deps/npm/node_modules/lru-cache/dist/esm/node/index.js new file mode 100644 index 00000000000000..11c8cd8dfbf5cf --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/node/index.js @@ -0,0 +1,1688 @@ +/** + * @module LRUCache + */ +import { metrics, tracing } from './diagnostics-channel.js'; +const hasSubscribers = () => metrics.hasSubscribers || tracing.hasSubscribers; +const defaultPerf = (typeof performance === 'object' && + performance && + typeof performance.now === 'function') ? + performance + : Date; +const warned = new Set(); +/* c8 ignore start */ +const PROCESS = (typeof process === 'object' && !!process ? + process + : {}); +/* c8 ignore stop */ +const emitWarning = (msg, type, code, fn) => { + if (typeof PROCESS.emitWarning === 'function') { + PROCESS.emitWarning(msg, type, code, fn); + } + else { + //oxlint-disable-next-line no-console + console.error(`[${code}] ${type}: ${msg}`); + } +}; +const shouldWarn = (code) => !warned.has(code); +const TYPE = Symbol('type'); +const isPosInt = (n) => !!n && n === Math.floor(n) && n > 0 && isFinite(n); +// This is a little bit ridiculous, tbh. +// The maximum array length is 2^32-1 or thereabouts on most JS impls. +// And well before that point, you're caching the entire world, I mean, +// that's ~32GB of just integers for the next/prev links, plus whatever +// else to hold that many keys and values. Just filling the memory with +// zeroes at init time is brutal when you get that big. +// But why not be complete? +// Maybe in the future, these limits will have expanded. +/* c8 ignore start */ +const getUintArray = (max) => !isPosInt(max) ? null + : max <= Math.pow(2, 8) ? Uint8Array + : max <= Math.pow(2, 16) ? Uint16Array + : max <= Math.pow(2, 32) ? Uint32Array + : max <= Number.MAX_SAFE_INTEGER ? ZeroArray + : null; +/* c8 ignore stop */ +class ZeroArray extends Array { + constructor(size) { + super(size); + this.fill(0); + } +} +class Stack { + heap; + length; + // private constructor + static #constructing = false; + static create(max) { + const HeapCls = getUintArray(max); + if (!HeapCls) + return []; + Stack.#constructing = true; + const s = new Stack(max, HeapCls); + Stack.#constructing = false; + return s; + } + constructor(max, HeapCls) { + /* c8 ignore start */ + if (!Stack.#constructing) { + throw new TypeError('instantiate Stack using Stack.create(n)'); + } + /* c8 ignore stop */ + this.heap = new HeapCls(max); + this.length = 0; + } + push(n) { + this.heap[this.length++] = n; + } + pop() { + return this.heap[--this.length]; + } +} +/** + * Default export, the thing you're using this module to get. + * + * The `K` and `V` types define the key and value types, respectively. The + * optional `FC` type defines the type of the `context` object passed to + * `cache.fetch()` and `cache.memo()`. + * + * Keys and values **must not** be `null` or `undefined`. + * + * All properties from the options object (with the exception of `max`, + * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are + * added as normal public members. (The listed options are read-only getters.) + * + * Changing any of these will alter the defaults for subsequent method calls. + */ +export class LRUCache { + // options that cannot be changed without disaster + #max; + #maxSize; + #dispose; + #onInsert; + #disposeAfter; + #fetchMethod; + #memoMethod; + #perf; + /** + * {@link LRUCache.OptionsBase.perf} + */ + get perf() { + return this.#perf; + } + /** + * {@link LRUCache.OptionsBase.ttl} + */ + ttl; + /** + * {@link LRUCache.OptionsBase.ttlResolution} + */ + ttlResolution; + /** + * {@link LRUCache.OptionsBase.ttlAutopurge} + */ + ttlAutopurge; + /** + * {@link LRUCache.OptionsBase.updateAgeOnGet} + */ + updateAgeOnGet; + /** + * {@link LRUCache.OptionsBase.updateAgeOnHas} + */ + updateAgeOnHas; + /** + * {@link LRUCache.OptionsBase.allowStale} + */ + allowStale; + /** + * {@link LRUCache.OptionsBase.noDisposeOnSet} + */ + noDisposeOnSet; + /** + * {@link LRUCache.OptionsBase.noUpdateTTL} + */ + noUpdateTTL; + /** + * {@link LRUCache.OptionsBase.maxEntrySize} + */ + maxEntrySize; + /** + * {@link LRUCache.OptionsBase.sizeCalculation} + */ + sizeCalculation; + /** + * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} + */ + noDeleteOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} + */ + noDeleteOnStaleGet; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} + */ + allowStaleOnFetchAbort; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} + */ + allowStaleOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.ignoreFetchAbort} + */ + ignoreFetchAbort; + // computed properties + #size; + #calculatedSize; + #keyMap; + #keyList; + #valList; + #next; + #prev; + #head; + #tail; + #free; + #disposed; + #sizes; + #starts; + #ttls; + #autopurgeTimers; + #hasDispose; + #hasFetchMethod; + #hasDisposeAfter; + #hasOnInsert; + /** + * Do not call this method unless you need to inspect the + * inner workings of the cache. If anything returned by this + * object is modified in any way, strange breakage may occur. + * + * These fields are private for a reason! + * + * @internal + */ + static unsafeExposeInternals(c) { + return { + // properties + starts: c.#starts, + ttls: c.#ttls, + autopurgeTimers: c.#autopurgeTimers, + sizes: c.#sizes, + keyMap: c.#keyMap, + keyList: c.#keyList, + valList: c.#valList, + next: c.#next, + prev: c.#prev, + get head() { + return c.#head; + }, + get tail() { + return c.#tail; + }, + free: c.#free, + // methods + isBackgroundFetch: (p) => c.#isBackgroundFetch(p), + backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context), + moveToTail: (index) => c.#moveToTail(index), + indexes: (options) => c.#indexes(options), + rindexes: (options) => c.#rindexes(options), + isStale: (index) => c.#isStale(index), + }; + } + // Protected read-only members + /** + * {@link LRUCache.OptionsBase.max} (read-only) + */ + get max() { + return this.#max; + } + /** + * {@link LRUCache.OptionsBase.maxSize} (read-only) + */ + get maxSize() { + return this.#maxSize; + } + /** + * The total computed size of items in the cache (read-only) + */ + get calculatedSize() { + return this.#calculatedSize; + } + /** + * The number of items stored in the cache (read-only) + */ + get size() { + return this.#size; + } + /** + * {@link LRUCache.OptionsBase.fetchMethod} (read-only) + */ + get fetchMethod() { + return this.#fetchMethod; + } + get memoMethod() { + return this.#memoMethod; + } + /** + * {@link LRUCache.OptionsBase.dispose} (read-only) + */ + get dispose() { + return this.#dispose; + } + /** + * {@link LRUCache.OptionsBase.onInsert} (read-only) + */ + get onInsert() { + return this.#onInsert; + } + /** + * {@link LRUCache.OptionsBase.disposeAfter} (read-only) + */ + get disposeAfter() { + return this.#disposeAfter; + } + constructor(options) { + const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, perf, } = options; + if (perf !== undefined) { + if (typeof perf?.now !== 'function') { + throw new TypeError('perf option must have a now() method if specified'); + } + } + this.#perf = perf ?? defaultPerf; + if (max !== 0 && !isPosInt(max)) { + throw new TypeError('max option must be a nonnegative integer'); + } + const UintArray = max ? getUintArray(max) : Array; + if (!UintArray) { + throw new Error('invalid max value: ' + max); + } + this.#max = max; + this.#maxSize = maxSize; + this.maxEntrySize = maxEntrySize || this.#maxSize; + this.sizeCalculation = sizeCalculation; + if (this.sizeCalculation) { + if (!this.#maxSize && !this.maxEntrySize) { + throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize'); + } + if (typeof this.sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation set to non-function'); + } + } + if (memoMethod !== undefined && typeof memoMethod !== 'function') { + throw new TypeError('memoMethod must be a function if defined'); + } + this.#memoMethod = memoMethod; + if (fetchMethod !== undefined && typeof fetchMethod !== 'function') { + throw new TypeError('fetchMethod must be a function if specified'); + } + this.#fetchMethod = fetchMethod; + this.#hasFetchMethod = !!fetchMethod; + this.#keyMap = new Map(); + this.#keyList = Array.from({ length: max }).fill(undefined); + this.#valList = Array.from({ length: max }).fill(undefined); + this.#next = new UintArray(max); + this.#prev = new UintArray(max); + this.#head = 0; + this.#tail = 0; + this.#free = Stack.create(max); + this.#size = 0; + this.#calculatedSize = 0; + if (typeof dispose === 'function') { + this.#dispose = dispose; + } + if (typeof onInsert === 'function') { + this.#onInsert = onInsert; + } + if (typeof disposeAfter === 'function') { + this.#disposeAfter = disposeAfter; + this.#disposed = []; + } + else { + this.#disposeAfter = undefined; + this.#disposed = undefined; + } + this.#hasDispose = !!this.#dispose; + this.#hasOnInsert = !!this.#onInsert; + this.#hasDisposeAfter = !!this.#disposeAfter; + this.noDisposeOnSet = !!noDisposeOnSet; + this.noUpdateTTL = !!noUpdateTTL; + this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; + this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; + this.ignoreFetchAbort = !!ignoreFetchAbort; + // NB: maxEntrySize is set to maxSize if it's set + if (this.maxEntrySize !== 0) { + if (this.#maxSize !== 0) { + if (!isPosInt(this.#maxSize)) { + throw new TypeError('maxSize must be a positive integer if specified'); + } + } + if (!isPosInt(this.maxEntrySize)) { + throw new TypeError('maxEntrySize must be a positive integer if specified'); + } + this.#initializeSizeTracking(); + } + this.allowStale = !!allowStale; + this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; + this.updateAgeOnGet = !!updateAgeOnGet; + this.updateAgeOnHas = !!updateAgeOnHas; + this.ttlResolution = + isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1; + this.ttlAutopurge = !!ttlAutopurge; + this.ttl = ttl || 0; + if (this.ttl) { + if (!isPosInt(this.ttl)) { + throw new TypeError('ttl must be a positive integer if specified'); + } + this.#initializeTTLTracking(); + } + // do not allow completely unbounded caches + if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) { + throw new TypeError('At least one of max, maxSize, or ttl is required'); + } + if (!this.ttlAutopurge && !this.#max && !this.#maxSize) { + const code = 'LRU_CACHE_UNBOUNDED'; + if (shouldWarn(code)) { + warned.add(code); + const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + + 'result in unbounded memory consumption.'; + emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache); + } + } + } + /** + * Return the number of ms left in the item's TTL. If item is not in cache, + * returns `0`. Returns `Infinity` if item is in cache without a defined TTL. + */ + getRemainingTTL(key) { + return this.#keyMap.has(key) ? Infinity : 0; + } + #initializeTTLTracking() { + const ttls = new ZeroArray(this.#max); + const starts = new ZeroArray(this.#max); + this.#ttls = ttls; + this.#starts = starts; + const purgeTimers = this.ttlAutopurge ? + Array.from({ + length: this.#max, + }) + : undefined; + this.#autopurgeTimers = purgeTimers; + this.#setItemTTL = (index, ttl, start = this.#perf.now()) => { + starts[index] = ttl !== 0 ? start : 0; + ttls[index] = ttl; + setPurgetTimer(index, ttl); + }; + this.#updateItemAge = index => { + starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0; + setPurgetTimer(index, ttls[index]); + }; + // clear out the purge timer if we're setting TTL to 0, and + // previously had a ttl purge timer running, so it doesn't + // fire unnecessarily. Don't need to do this if we're not doing + // autopurge. + const setPurgetTimer = !this.ttlAutopurge ? + () => { } + : (index, ttl) => { + if (purgeTimers?.[index]) { + clearTimeout(purgeTimers[index]); + purgeTimers[index] = undefined; + } + if (ttl && ttl !== 0 && purgeTimers) { + const t = setTimeout(() => { + if (this.#isStale(index)) { + this.#delete(this.#keyList[index], 'expire'); + } + }, ttl + 1); + // unref() not supported on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + purgeTimers[index] = t; + } + }; + this.#statusTTL = (status, index) => { + if (ttls[index]) { + const ttl = ttls[index]; + const start = starts[index]; + /* c8 ignore start */ + if (!ttl || !start) { + return; + } + /* c8 ignore stop */ + status.ttl = ttl; + status.start = start; + status.now = cachedNow || getNow(); + const age = status.now - start; + status.remainingTTL = ttl - age; + } + }; + // debounce calls to perf.now() to 1s so we're not hitting + // that costly call repeatedly. + let cachedNow = 0; + const getNow = () => { + const n = this.#perf.now(); + if (this.ttlResolution > 0) { + cachedNow = n; + const t = setTimeout(() => (cachedNow = 0), this.ttlResolution); + // not available on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + } + return n; + }; + this.getRemainingTTL = key => { + const index = this.#keyMap.get(key); + if (index === undefined) { + return 0; + } + const ttl = ttls[index]; + const start = starts[index]; + if (!ttl || !start) { + return Infinity; + } + const age = (cachedNow || getNow()) - start; + return ttl - age; + }; + this.#isStale = index => { + const s = starts[index]; + const t = ttls[index]; + return !!t && !!s && (cachedNow || getNow()) - s > t; + }; + } + // conditionally set private methods related to TTL + #updateItemAge = () => { }; + #statusTTL = () => { }; + #setItemTTL = () => { }; + /* c8 ignore stop */ + #isStale = () => false; + #initializeSizeTracking() { + const sizes = new ZeroArray(this.#max); + this.#calculatedSize = 0; + this.#sizes = sizes; + this.#removeItemSize = index => { + this.#calculatedSize -= sizes[index]; + sizes[index] = 0; + }; + this.#requireSize = (k, v, size, sizeCalculation) => { + // provisionally accept background fetches. + // actual value size will be checked when they return. + if (this.#isBackgroundFetch(v)) { + return 0; + } + if (!isPosInt(size)) { + if (sizeCalculation) { + if (typeof sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation must be a function'); + } + size = sizeCalculation(v, k); + if (!isPosInt(size)) { + throw new TypeError('sizeCalculation return invalid (expect positive integer)'); + } + } + else { + throw new TypeError('invalid size value (must be positive integer). ' + + 'When maxSize or maxEntrySize is used, sizeCalculation ' + + 'or size must be set.'); + } + } + return size; + }; + this.#addItemSize = (index, size, status) => { + sizes[index] = size; + if (this.#maxSize) { + const maxSize = this.#maxSize - sizes[index]; + while (this.#calculatedSize > maxSize) { + this.#evict(true); + } + } + this.#calculatedSize += sizes[index]; + if (status) { + status.entrySize = size; + status.totalCalculatedSize = this.#calculatedSize; + } + }; + } + #removeItemSize = _i => { }; + #addItemSize = (_i, _s, _st) => { }; + #requireSize = (_k, _v, size, sizeCalculation) => { + if (size || sizeCalculation) { + throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache'); + } + return 0; + }; + *#indexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#tail; this.#isValidIndex(i);) { + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#head) { + break; + } + else { + i = this.#prev[i]; + } + } + } + } + *#rindexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#head; this.#isValidIndex(i);) { + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#tail) { + break; + } + else { + i = this.#next[i]; + } + } + } + } + #isValidIndex(index) { + return (index !== undefined && + this.#keyMap.get(this.#keyList[index]) === index); + } + /** + * Return a generator yielding `[key, value]` pairs, + * in order from most recently used to least recently used. + */ + *entries() { + for (const i of this.#indexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Inverse order version of {@link LRUCache.entries} + * + * Return a generator yielding `[key, value]` pairs, + * in order from least recently used to most recently used. + */ + *rentries() { + for (const i of this.#rindexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Return a generator yielding the keys in the cache, + * in order from most recently used to least recently used. + */ + *keys() { + for (const i of this.#indexes()) { + const k = this.#keyList[i]; + if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Inverse order version of {@link LRUCache.keys} + * + * Return a generator yielding the keys in the cache, + * in order from least recently used to most recently used. + */ + *rkeys() { + for (const i of this.#rindexes()) { + const k = this.#keyList[i]; + if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Return a generator yielding the values in the cache, + * in order from most recently used to least recently used. + */ + *values() { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Inverse order version of {@link LRUCache.values} + * + * Return a generator yielding the values in the cache, + * in order from least recently used to most recently used. + */ + *rvalues() { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Iterating over the cache itself yields the same results as + * {@link LRUCache.entries} + */ + [Symbol.iterator]() { + return this.entries(); + } + /** + * A String value that is used in the creation of the default string + * description of an object. Called by the built-in method + * `Object.prototype.toString`. + */ + [Symbol.toStringTag] = 'LRUCache'; + /** + * Find a value for which the supplied fn method returns a truthy value, + * similar to `Array.find()`. fn is called as `fn(value, key, cache)`. + */ + find(fn, getOptions = {}) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + if (fn(value, this.#keyList[i], this)) { + return this.#get(this.#keyList[i], getOptions); + } + } + } + /** + * Call the supplied function on each item in the cache, in order from most + * recently used to least recently used. + * + * `fn` is called as `fn(value, key, cache)`. + * + * If `thisp` is provided, function will be called in the `this`-context of + * the provided object, or the cache if no `thisp` object is provided. + * + * Does not update age or recenty of use, or iterate over stale values. + */ + forEach(fn, thisp = this) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * The same as {@link LRUCache.forEach} but items are iterated over in + * reverse order. (ie, less recently used items are iterated over first.) + */ + rforEach(fn, thisp = this) { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * Delete any stale entries. Returns true if anything was removed, + * false otherwise. + */ + purgeStale() { + let deleted = false; + for (const i of this.#rindexes({ allowStale: true })) { + if (this.#isStale(i)) { + this.#delete(this.#keyList[i], 'expire'); + deleted = true; + } + } + return deleted; + } + /** + * Get the extended info about a given entry, to get its value, size, and + * TTL info simultaneously. Returns `undefined` if the key is not present. + * + * Unlike {@link LRUCache#dump}, which is designed to be portable and survive + * serialization, the `start` value is always the current timestamp, and the + * `ttl` is a calculated remaining time to live (negative if expired). + * + * Always returns stale values, if their info is found in the cache, so be + * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl}) + * if relevant. + */ + info(key) { + const i = this.#keyMap.get(key); + if (i === undefined) + return undefined; + const v = this.#valList[i]; + /* c8 ignore start - this isn't tested for the info function, + * but it's the same logic as found in other places. */ + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined) + return undefined; + /* c8 ignore stop */ + const entry = { value }; + if (this.#ttls && this.#starts) { + const ttl = this.#ttls[i]; + const start = this.#starts[i]; + if (ttl && start) { + const remain = ttl - (this.#perf.now() - start); + entry.ttl = remain; + entry.start = Date.now(); + } + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + return entry; + } + /** + * Return an array of [key, {@link LRUCache.Entry}] tuples which can be + * passed to {@link LRUCache#load}. + * + * The `start` fields are calculated relative to a portable `Date.now()` + * timestamp, even if `performance.now()` is available. + * + * Stale entries are always included in the `dump`, even if + * {@link LRUCache.OptionsBase.allowStale} is false. + * + * Note: this returns an actual array, not a generator, so it can be more + * easily passed around. + */ + dump() { + const arr = []; + for (const i of this.#indexes({ allowStale: true })) { + const key = this.#keyList[i]; + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (value === undefined || key === undefined) + continue; + const entry = { value }; + if (this.#ttls && this.#starts) { + entry.ttl = this.#ttls[i]; + // always dump the start relative to a portable timestamp + // it's ok for this to be a bit slow, it's a rare operation. + const age = this.#perf.now() - this.#starts[i]; + entry.start = Math.floor(Date.now() - age); + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + arr.unshift([key, entry]); + } + return arr; + } + /** + * Reset the cache and load in the items in entries in the order listed. + * + * The shape of the resulting cache may be different if the same options are + * not used in both caches. + * + * The `start` fields are assumed to be calculated relative to a portable + * `Date.now()` timestamp, even if `performance.now()` is available. + */ + load(arr) { + this.clear(); + for (const [key, entry] of arr) { + if (entry.start) { + // entry.start is a portable timestamp, but we may be using + // node's performance.now(), so calculate the offset, so that + // we get the intended remaining TTL, no matter how long it's + // been on ice. + // + // it's ok for this to be a bit slow, it's a rare operation. + const age = Date.now() - entry.start; + entry.start = this.#perf.now() - age; + } + this.#set(key, entry.value, entry); + } + } + /** + * Add a value to the cache. + * + * Note: if `undefined` is specified as a value, this is an alias for + * {@link LRUCache#delete} + * + * Fields on the {@link LRUCache.SetOptions} options param will override + * their corresponding values in the constructor options for the scope + * of this single `set()` operation. + * + * If `start` is provided, then that will set the effective start + * time for the TTL calculation. Note that this must be a previous + * value of `performance.now()` if supported, or a previous value of + * `Date.now()` if not. + * + * Options object may also include `size`, which will prevent + * calling the `sizeCalculation` function and just use the specified + * number if it is a positive integer, and `noDisposeOnSet` which + * will prevent calling a `dispose` function in the case of + * overwrites. + * + * If the `size` (or return value of `sizeCalculation`) for a given + * entry is greater than `maxEntrySize`, then the item will not be + * added to the cache. + * + * Will update the recency of the entry. + * + * If the value is `undefined`, then this is an alias for + * `cache.delete(key)`. `undefined` is never stored in the cache. + */ + set(k, v, setOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = setOptions; + setOptions.status = status; + if (status) { + status.op = 'set'; + status.key = k; + if (v !== undefined) + status.value = v; + } + const result = this.#set(k, v, setOptions); + if (status && metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #set(k, v, setOptions = {}) { + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; + if (v === undefined) { + if (status) + status.set = 'deleted'; + this.delete(k); + return this; + } + let { noUpdateTTL = this.noUpdateTTL } = setOptions; + if (status && !this.#isBackgroundFetch(v)) + status.value = v; + const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation, status); + // if the item doesn't fit, don't do anything + // NB: maxEntrySize set to maxSize by default + if (this.maxEntrySize && size > this.maxEntrySize) { + // have to delete, in case something is there already. + this.#delete(k, 'set'); + if (status) { + status.set = 'miss'; + status.maxEntrySizeExceeded = true; + } + return this; + } + let index = this.#size === 0 ? undefined : this.#keyMap.get(k); + if (index === undefined) { + // addition + index = (this.#size === 0 ? this.#tail + : this.#free.length !== 0 ? this.#free.pop() + : this.#size === this.#max ? this.#evict(false) + : this.#size); + this.#keyList[index] = k; + this.#valList[index] = v; + this.#keyMap.set(k, index); + this.#next[this.#tail] = index; + this.#prev[index] = this.#tail; + this.#tail = index; + this.#size++; + this.#addItemSize(index, size, status); + if (status) + status.set = 'add'; + noUpdateTTL = false; + if (this.#hasOnInsert) { + this.#onInsert?.(v, k, 'add'); + } + } + else { + // update + this.#moveToTail(index); + const oldVal = this.#valList[index]; + if (v !== oldVal) { + if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) { + oldVal.__abortController.abort(new Error('replaced')); + const { __staleWhileFetching: s } = oldVal; + if (s !== undefined && !noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(s, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([s, k, 'set']); + } + } + } + else if (!noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(oldVal, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([oldVal, k, 'set']); + } + } + this.#removeItemSize(index); + this.#addItemSize(index, size, status); + this.#valList[index] = v; + if (status) { + status.set = 'replace'; + const oldValue = oldVal && this.#isBackgroundFetch(oldVal) ? + oldVal.__staleWhileFetching + : oldVal; + if (oldValue !== undefined) + status.oldValue = oldValue; + } + } + else if (status) { + status.set = 'update'; + } + if (this.#hasOnInsert) { + this.onInsert?.(v, k, v === oldVal ? 'update' : 'replace'); + } + } + if (ttl !== 0 && !this.#ttls) { + this.#initializeTTLTracking(); + } + if (this.#ttls) { + if (!noUpdateTTL) { + this.#setItemTTL(index, ttl, start); + } + if (status) + this.#statusTTL(status, index); + } + if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return this; + } + /** + * Evict the least recently used item, returning its value or + * `undefined` if cache is empty. + */ + pop() { + try { + while (this.#size) { + const val = this.#valList[this.#head]; + this.#evict(true); + if (this.#isBackgroundFetch(val)) { + if (val.__staleWhileFetching) { + return val.__staleWhileFetching; + } + } + else if (val !== undefined) { + return val; + } + } + } + finally { + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } + } + #evict(free) { + const head = this.#head; + const k = this.#keyList[head]; + const v = this.#valList[head]; + if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('evicted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, 'evict'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, 'evict']); + } + } + this.#removeItemSize(head); + if (this.#autopurgeTimers?.[head]) { + clearTimeout(this.#autopurgeTimers[head]); + this.#autopurgeTimers[head] = undefined; + } + // if we aren't about to use the index, then null these out + if (free) { + this.#keyList[head] = undefined; + this.#valList[head] = undefined; + this.#free.push(head); + } + if (this.#size === 1) { + this.#head = this.#tail = 0; + this.#free.length = 0; + } + else { + this.#head = this.#next[head]; + } + this.#keyMap.delete(k); + this.#size--; + return head; + } + /** + * Check if a key is in the cache, without updating the recency of use. + * Will return false if the item is stale, even though it is technically + * in the cache. + * + * Check if a key is in the cache, without updating the recency of + * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set + * to `true` in either the options or the constructor. + * + * Will return `false` if the item is stale, even though it is technically in + * the cache. The difference can be determined (if it matters) by using a + * `status` argument, and inspecting the `has` field. + * + * Will not update item age unless + * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. + */ + has(k, hasOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = hasOptions; + hasOptions.status = status; + if (status) { + status.op = 'has'; + status.key = k; + } + const result = this.#has(k, hasOptions); + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #has(k, hasOptions = {}) { + const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; + const index = this.#keyMap.get(k); + if (index !== undefined) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v) && + v.__staleWhileFetching === undefined) { + return false; + } + if (!this.#isStale(index)) { + if (updateAgeOnHas) { + this.#updateItemAge(index); + } + if (status) { + status.has = 'hit'; + this.#statusTTL(status, index); + } + return true; + } + else if (status) { + status.has = 'stale'; + this.#statusTTL(status, index); + } + } + else if (status) { + status.has = 'miss'; + } + return false; + } + /** + * Like {@link LRUCache#get} but doesn't update recency or delete stale + * items. + * + * Returns `undefined` if the item is stale, unless + * {@link LRUCache.OptionsBase.allowStale} is set. + */ + peek(k, peekOptions = {}) { + const { status = hasSubscribers() ? {} : undefined } = peekOptions; + if (status) { + status.op = 'peek'; + status.key = k; + } + peekOptions.status = status; + const result = this.#peek(k, peekOptions); + if (metrics.hasSubscribers) { + metrics.publish(status); + } + return result; + } + #peek(k, peekOptions) { + const { status, allowStale = this.allowStale } = peekOptions; + const index = this.#keyMap.get(k); + if (index === undefined || (!allowStale && this.#isStale(index))) { + if (status) + status.peek = index === undefined ? 'miss' : 'stale'; + return undefined; + } + const v = this.#valList[index]; + const val = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + if (status) { + if (val !== undefined) { + status.peek = 'hit'; + status.value = val; + } + else { + status.peek = 'miss'; + } + } + return val; + } + #backgroundFetch(k, index, options, context) { + const v = index === undefined ? undefined : this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + return v; + } + const ac = new AbortController(); + const { signal } = options; + // when/if our AC signals, then stop listening to theirs. + signal?.addEventListener('abort', () => ac.abort(signal.reason), { + signal: ac.signal, + }); + const fetchOpts = { + signal: ac.signal, + options, + context, + }; + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal; + const ignoreAbort = options.ignoreFetchAbort && v !== undefined; + const proceed = options.ignoreFetchAbort || + !!(options.allowStaleOnFetchAbort && v !== undefined); + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true; + options.status.fetchError = ac.signal.reason; + if (ignoreAbort) + options.status.fetchAbortIgnored = true; + } + else { + options.status.fetchResolved = true; + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason, proceed); + } + // either we didn't abort, and are still here, or we did, and ignored + const bf = p; + // if nothing else has been written there but we're set to update the + // cache and ignore the abort, or if it's still pending on this specific + // background request, then write it to the cache. + const vl = this.#valList[index]; + if (vl === p || (vl === undefined && ignoreAbort && updateCache)) { + if (v === undefined) { + if (bf.__staleWhileFetching !== undefined) { + this.#valList[index] = bf.__staleWhileFetching; + } + else { + this.#delete(k, 'fetch'); + } + } + else { + if (options.status) + options.status.fetchUpdated = true; + this.#set(k, v, fetchOpts.options); + } + } + return v; + }; + const eb = (er) => { + if (options.status) { + options.status.fetchRejected = true; + options.status.fetchError = er; + } + // do not pass go, do not collect $200 + return fetchFail(er, false); + }; + const fetchFail = (er, proceed) => { + const { aborted } = ac.signal; + const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; + const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; + const noDelete = allowStale || options.noDeleteOnFetchRejection; + const bf = p; + if (this.#valList[index] === p) { + // if we allow stale on fetch rejections, then we need to ensure that + // the stale value is not removed from the cache when the fetch fails. + const del = !noDelete || (!proceed && bf.__staleWhileFetching === undefined); + if (del) { + this.#delete(k, 'fetch'); + } + else if (!allowStaleAborted) { + // still replace the *promise* with the stale value, + // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. + this.#valList[index] = bf.__staleWhileFetching; + } + } + if (allowStale) { + if (options.status && bf.__staleWhileFetching !== undefined) { + options.status.returnedStale = true; + } + return bf.__staleWhileFetching; + } + else if (bf.__returned === bf) { + throw er; + } + }; + const pcall = (res, rej) => { + const fmp = this.#fetchMethod?.(k, v, fetchOpts); + if (fmp && fmp instanceof Promise) { + fmp.then(v => res(v === undefined ? undefined : v), rej); + } + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) { + res(undefined); + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true); + } + } + }); + }; + if (options.status) + options.status.fetchDispatched = true; + const p = new Promise(pcall).then(cb, eb); + const bf = Object.assign(p, { + __abortController: ac, + __staleWhileFetching: v, + __returned: undefined, + }); + if (index === undefined) { + // internal, don't expose status. + this.#set(k, bf, { ...fetchOpts.options, status: undefined }); + index = this.#keyMap.get(k); + } + else { + this.#valList[index] = bf; + } + return bf; + } + #isBackgroundFetch(p) { + if (!this.#hasFetchMethod) + return false; + const b = p; + return (!!b && + b instanceof Promise && + b.hasOwnProperty('__staleWhileFetching') && + b.__abortController instanceof AbortController); + } + fetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#fetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #fetch(k, fetchOptions = {}) { + const { + // get options + allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + // set options + ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; + if (status) { + status.op = 'fetch'; + status.key = k; + if (forceRefresh) + status.forceRefresh = true; + } + if (!this.#hasFetchMethod) { + if (status) + status.fetch = 'get'; + return this.#get(k, { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + status, + }); + } + const options = { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + ttl, + noDisposeOnSet, + size, + sizeCalculation, + noUpdateTTL, + noDeleteOnFetchRejection, + allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, + signal, + }; + let index = this.#keyMap.get(k); + if (index === undefined) { + if (status) + status.fetch = 'miss'; + const p = this.#backgroundFetch(k, index, options, context); + return (p.__returned = p); + } + else { + // in cache, maybe already fetching + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + const stale = allowStale && v.__staleWhileFetching !== undefined; + if (status) { + status.fetch = 'inflight'; + if (stale) + status.returnedStale = true; + } + return stale ? v.__staleWhileFetching : (v.__returned = v); + } + // if we force a refresh, that means do NOT serve the cached value, + // unless we are already in the process of refreshing the cache. + const isStale = this.#isStale(index); + if (!forceRefresh && !isStale) { + if (status) + status.fetch = 'hit'; + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + if (status) + this.#statusTTL(status, index); + return v; + } + // ok, it is stale or a forced refresh, and not already fetching. + // refresh the cache. + const p = this.#backgroundFetch(k, index, options, context); + const hasStale = p.__staleWhileFetching !== undefined; + const staleVal = hasStale && allowStale; + if (status) { + status.fetch = isStale ? 'stale' : 'refresh'; + if (staleVal && isStale) + status.returnedStale = true; + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p); + } + } + forceFetch(k, fetchOptions = {}) { + const ths = tracing.hasSubscribers; + const { status = hasSubscribers() ? {} : undefined } = fetchOptions; + fetchOptions.status = status; + if (status && fetchOptions.context) { + status.context = fetchOptions.context; + } + const p = this.#forceFetch(k, fetchOptions); + if (status && hasSubscribers()) { + if (ths) { + status.trace = true; + tracing.tracePromise(() => p, status).catch(() => { }); + } + } + return p; + } + async #forceFetch(k, fetchOptions = {}) { + const v = await this.#fetch(k, fetchOptions); + if (v === undefined) + throw new Error('fetch() returned undefined'); + return v; + } + memo(k, memoOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = memoOptions; + memoOptions.status = status; + if (status) { + status.op = 'memo'; + status.key = k; + if (memoOptions.context) { + status.context = memoOptions.context; + } + } + const result = this.#memo(k, memoOptions); + if (status) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + return result; + } + #memo(k, memoOptions = {}) { + const memoMethod = this.#memoMethod; + if (!memoMethod) { + throw new Error('no memoMethod provided to constructor'); + } + const { context, status, forceRefresh, ...options } = memoOptions; + if (status && forceRefresh) + status.forceRefresh = true; + const v = this.#get(k, options); + const refresh = forceRefresh || v === undefined; + if (status) { + status.memo = refresh ? 'miss' : 'hit'; + if (!refresh) + status.value = v; + } + if (!refresh) + return v; + const vv = memoMethod(k, v, { + options, + context, + }); + if (status) + status.value = vv; + this.#set(k, vv, options); + return vv; + } + /** + * Return a value from the cache. Will update the recency of the cache + * entry found. + * + * If the key is not found, get() will return `undefined`. + */ + get(k, getOptions = {}) { + const { status = metrics.hasSubscribers ? {} : undefined } = getOptions; + getOptions.status = status; + if (status) { + status.op = 'get'; + status.key = k; + } + const result = this.#get(k, getOptions); + if (status) { + if (result !== undefined) + status.value = result; + if (metrics.hasSubscribers) + metrics.publish(status); + } + return result; + } + #get(k, getOptions = {}) { + const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; + const index = this.#keyMap.get(k); + if (index === undefined) { + if (status) + status.get = 'miss'; + return undefined; + } + const value = this.#valList[index]; + const fetching = this.#isBackgroundFetch(value); + if (status) + this.#statusTTL(status, index); + if (this.#isStale(index)) { + // delete only if not an in-flight background fetch + if (!fetching) { + if (!noDeleteOnStaleGet) { + this.#delete(k, 'expire'); + } + if (status) + status.get = 'stale'; + if (allowStale) { + if (status) + status.returnedStale = true; + return value; + } + return undefined; + } + if (status) + status.get = 'stale-fetching'; + if (allowStale && value.__staleWhileFetching !== undefined) { + if (status) + status.returnedStale = true; + return value.__staleWhileFetching; + } + return undefined; + } + // not stale + if (status) + status.get = fetching ? 'fetching' : 'hit'; + // if we're currently fetching it, we don't actually have it yet + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + return fetching ? value.__staleWhileFetching : value; + } + #connect(p, n) { + this.#prev[n] = p; + this.#next[p] = n; + } + #moveToTail(index) { + // if tail already, nothing to do + // if head, move head to next[index] + // else + // move next[prev[index]] to next[index] (head has no prev) + // move prev[next[index]] to prev[index] + // prev[index] = tail + // next[tail] = index + // tail = index + if (index !== this.#tail) { + if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + this.#connect(this.#prev[index], this.#next[index]); + } + this.#connect(this.#tail, index); + this.#tail = index; + } + } + /** + * Deletes a key out of the cache. + * + * Returns true if the key was deleted, false otherwise. + */ + delete(k) { + return this.#delete(k, 'delete'); + } + #delete(k, reason) { + if (metrics.hasSubscribers) { + metrics.publish({ + op: 'delete', + delete: reason, + key: k, + }); + } + let deleted = false; + if (this.#size !== 0) { + const index = this.#keyMap.get(k); + if (index !== undefined) { + if (this.#autopurgeTimers?.[index]) { + clearTimeout(this.#autopurgeTimers?.[index]); + this.#autopurgeTimers[index] = undefined; + } + deleted = true; + if (this.#size === 1) { + this.#clear(reason); + } + else { + this.#removeItemSize(index); + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, reason); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, reason]); + } + } + this.#keyMap.delete(k); + this.#keyList[index] = undefined; + this.#valList[index] = undefined; + if (index === this.#tail) { + this.#tail = this.#prev[index]; + } + else if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + const pi = this.#prev[index]; + this.#next[pi] = this.#next[index]; + const ni = this.#next[index]; + this.#prev[ni] = this.#prev[index]; + } + this.#size--; + this.#free.push(index); + } + } + } + if (this.#hasDisposeAfter && this.#disposed?.length) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return deleted; + } + /** + * Clear the cache entirely, throwing away all values. + */ + clear() { + return this.#clear('delete'); + } + #clear(reason) { + for (const index of this.#rindexes({ allowStale: true })) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else { + const k = this.#keyList[index]; + if (this.#hasDispose) { + this.#dispose?.(v, k, reason); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, reason]); + } + } + } + this.#keyMap.clear(); + this.#valList.fill(undefined); + this.#keyList.fill(undefined); + if (this.#ttls && this.#starts) { + this.#ttls.fill(0); + this.#starts.fill(0); + for (const t of this.#autopurgeTimers ?? []) { + if (t !== undefined) + clearTimeout(t); + } + this.#autopurgeTimers?.fill(undefined); + } + if (this.#sizes) { + this.#sizes.fill(0); + } + this.#head = 0; + this.#tail = 0; + this.#free.length = 0; + this.#calculatedSize = 0; + this.#size = 0; + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/lru-cache/dist/esm/node/index.min.js b/deps/npm/node_modules/lru-cache/dist/esm/node/index.min.js new file mode 100644 index 00000000000000..bd92365ef37894 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/dist/esm/node/index.min.js @@ -0,0 +1,2 @@ +import{tracingChannel as j,channel as I}from"node:diagnostics_channel";var S=I("lru-cache:metrics"),W=j("lru-cache");var D=()=>S.hasSubscribers||W.hasSubscribers,G=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,M=new Set,C=typeof process=="object"&&process?process:{},P=(u,e,t,i)=>{typeof C.emitWarning=="function"?C.emitWarning(u,e,t,i):console.error(`[${t}] ${e}: ${u}`)},H=u=>!M.has(u),$=Symbol("type"),F=u=>!!u&&u===Math.floor(u)&&u>0&&isFinite(u),U=u=>F(u)?u<=Math.pow(2,8)?Uint8Array:u<=Math.pow(2,16)?Uint16Array:u<=Math.pow(2,32)?Uint32Array:u<=Number.MAX_SAFE_INTEGER?O:null:null,O=class extends Array{constructor(e){super(e),this.fill(0)}},R=class u{heap;length;static#o=!1;static create(e){let t=U(e);if(!t)return[];u.#o=!0;let i=new u(e,t);return u.#o=!1,i}constructor(e,t){if(!u.#o)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},L=class u{#o;#u;#w;#D;#S;#M;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#b;#s;#i;#t;#a;#c;#l;#h;#y;#r;#_;#F;#d;#g;#T;#W;#f;#j;static unsafeExposeInternals(e){return{starts:e.#F,ttls:e.#d,autopurgeTimers:e.#g,sizes:e.#_,keyMap:e.#s,keyList:e.#i,valList:e.#t,next:e.#a,prev:e.#c,get head(){return e.#l},get tail(){return e.#h},free:e.#y,isBackgroundFetch:t=>e.#e(t),backgroundFetch:(t,i,s,n)=>e.#P(t,i,s,n),moveToTail:t=>e.#L(t),indexes:t=>e.#A(t),rindexes:t=>e.#z(t),isStale:t=>e.#p(t)}}get max(){return this.#o}get maxSize(){return this.#u}get calculatedSize(){return this.#b}get size(){return this.#n}get fetchMethod(){return this.#M}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#D}get disposeAfter(){return this.#S}constructor(e){let{max:t=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:r,allowStale:h,dispose:l,onInsert:c,disposeAfter:f,noDisposeOnSet:g,noUpdateTTL:p,maxSize:T=0,maxEntrySize:w=0,sizeCalculation:y,fetchMethod:a,memoMethod:m,noDeleteOnFetchRejection:_,noDeleteOnStaleGet:b,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:z,perf:x}=e;if(x!==void 0&&typeof x?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#m=x??G,t!==0&&!F(t))throw new TypeError("max option must be a nonnegative integer");let v=t?U(t):Array;if(!v)throw new Error("invalid max value: "+t);if(this.#o=t,this.#u=T,this.maxEntrySize=w||this.#u,this.sizeCalculation=y,this.sizeCalculation){if(!this.#u&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(m!==void 0&&typeof m!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#U=m,a!==void 0&&typeof a!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=a,this.#W=!!a,this.#s=new Map,this.#i=Array.from({length:t}).fill(void 0),this.#t=Array.from({length:t}).fill(void 0),this.#a=new v(t),this.#c=new v(t),this.#l=0,this.#h=0,this.#y=R.create(t),this.#n=0,this.#b=0,typeof l=="function"&&(this.#w=l),typeof c=="function"&&(this.#D=c),typeof f=="function"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#j=!!this.#D,this.#f=!!this.#S,this.noDisposeOnSet=!!g,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!_,this.allowStaleOnFetchRejection=!!d,this.allowStaleOnFetchAbort=!!A,this.ignoreFetchAbort=!!z,this.maxEntrySize!==0){if(this.#u!==0&&!F(this.#u))throw new TypeError("maxSize must be a positive integer if specified");if(!F(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#X()}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!b,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!r,this.ttlResolution=F(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!F(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#o===0&&this.ttl===0&&this.#u===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#o&&!this.#u){let E="LRU_CACHE_UNBOUNDED";H(E)&&(M.add(E),P("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",E,u))}}getRemainingTTL(e){return this.#s.has(e)?1/0:0}#H(){let e=new O(this.#o),t=new O(this.#o);this.#d=e,this.#F=t;let i=this.ttlAutopurge?Array.from({length:this.#o}):void 0;this.#g=i,this.#N=(r,h,l=this.#m.now())=>{t[r]=h!==0?l:0,e[r]=h,s(r,h)},this.#x=r=>{t[r]=e[r]!==0?this.#m.now():0,s(r,e[r])};let s=this.ttlAutopurge?(r,h)=>{if(i?.[r]&&(clearTimeout(i[r]),i[r]=void 0),h&&h!==0&&i){let l=setTimeout(()=>{this.#p(r)&&this.#v(this.#i[r],"expire")},h+1);l.unref&&l.unref(),i[r]=l}}:()=>{};this.#E=(r,h)=>{if(e[h]){let l=e[h],c=t[h];if(!l||!c)return;r.ttl=l,r.start=c,r.now=n||o();let f=r.now-c;r.remainingTTL=l-f}};let n=0,o=()=>{let r=this.#m.now();if(this.ttlResolution>0){n=r;let h=setTimeout(()=>n=0,this.ttlResolution);h.unref&&h.unref()}return r};this.getRemainingTTL=r=>{let h=this.#s.get(r);if(h===void 0)return 0;let l=e[h],c=t[h];if(!l||!c)return 1/0;let f=(n||o())-c;return l-f},this.#p=r=>{let h=t[r],l=e[r];return!!l&&!!h&&(n||o())-h>l}}#x=()=>{};#E=()=>{};#N=()=>{};#p=()=>!1;#X(){let e=new O(this.#o);this.#b=0,this.#_=e,this.#R=t=>{this.#b-=e[t],e[t]=0},this.#k=(t,i,s,n)=>{if(this.#e(i))return 0;if(!F(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,t),!F(s))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return s},this.#I=(t,i,s)=>{if(e[t]=i,this.#u){let n=this.#u-e[t];for(;this.#b>n;)this.#G(!0)}this.#b+=e[t],s&&(s.entrySize=i,s.totalCalculatedSize=this.#b)}}#R=e=>{};#I=(e,t,i)=>{};#k=(e,t,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#h;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#l);)t=this.#c[t]}*#z({allowStale:e=this.allowStale}={}){if(this.#n)for(let t=this.#l;this.#V(t)&&((e||!this.#p(t))&&(yield t),t!==this.#h);)t=this.#a[t]}#V(e){return e!==void 0&&this.#s.get(this.#i[e])===e}*entries(){for(let e of this.#A())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*rentries(){for(let e of this.#z())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#e(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*keys(){for(let e of this.#A()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*rkeys(){for(let e of this.#z()){let t=this.#i[e];t!==void 0&&!this.#e(this.#t[e])&&(yield t)}}*values(){for(let e of this.#A())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}*rvalues(){for(let e of this.#z())this.#t[e]!==void 0&&!this.#e(this.#t[e])&&(yield this.#t[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&e(n,this.#i[i],this))return this.#C(this.#i[i],t)}}forEach(e,t=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}rforEach(e,t=this){for(let i of this.#z()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&e.call(t,n,this.#i[i],this)}}purgeStale(){let e=!1;for(let t of this.#z({allowStale:!0}))this.#p(t)&&(this.#v(this.#i[t],"expire"),e=!0);return e}info(e){let t=this.#s.get(e);if(t===void 0)return;let i=this.#t[t],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#F){let o=this.#d[t],r=this.#F[t];if(o&&r){let h=o-(this.#m.now()-r);n.ttl=h,n.start=Date.now()}}return this.#_&&(n.size=this.#_[t]),n}dump(){let e=[];for(let t of this.#A({allowStale:!0})){let i=this.#i[t],s=this.#t[t],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#F){o.ttl=this.#d[t];let r=this.#m.now()-this.#F[t];o.start=Math.floor(Date.now()-r)}this.#_&&(o.size=this.#_[t]),e.unshift([i,o])}return e}load(e){this.clear();for(let[t,i]of e){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.#O(t,i.value,i)}}set(e,t,i={}){let{status:s=S.hasSubscribers?{}:void 0}=i;i.status=s,s&&(s.op="set",s.key=e,t!==void 0&&(s.value=t));let n=this.#O(e,t,i);return s&&S.hasSubscribers&&S.publish(s),n}#O(e,t,i={}){let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:r=this.sizeCalculation,status:h}=i;if(t===void 0)return h&&(h.set="deleted"),this.delete(e),this;let{noUpdateTTL:l=this.noUpdateTTL}=i;h&&!this.#e(t)&&(h.value=t);let c=this.#k(e,t,i.size||0,r,h);if(this.maxEntrySize&&c>this.maxEntrySize)return this.#v(e,"set"),h&&(h.set="miss",h.maxEntrySizeExceeded=!0),this;let f=this.#n===0?void 0:this.#s.get(e);if(f===void 0)f=this.#n===0?this.#h:this.#y.length!==0?this.#y.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=e,this.#t[f]=t,this.#s.set(e,f),this.#a[this.#h]=f,this.#c[f]=this.#h,this.#h=f,this.#n++,this.#I(f,c,h),h&&(h.set="add"),l=!1,this.#j&&this.#D?.(t,e,"add");else{this.#L(f);let g=this.#t[f];if(t!==g){if(this.#W&&this.#e(g)){g.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:p}=g;p!==void 0&&!o&&(this.#T&&this.#w?.(p,e,"set"),this.#f&&this.#r?.push([p,e,"set"]))}else o||(this.#T&&this.#w?.(g,e,"set"),this.#f&&this.#r?.push([g,e,"set"]));if(this.#R(f),this.#I(f,c,h),this.#t[f]=t,h){h.set="replace";let p=g&&this.#e(g)?g.__staleWhileFetching:g;p!==void 0&&(h.oldValue=p)}}else h&&(h.set="update");this.#j&&this.onInsert?.(t,e,t===g?"update":"replace")}if(s!==0&&!this.#d&&this.#H(),this.#d&&(l||this.#N(f,s,n),h&&this.#E(h,f)),!o&&this.#f&&this.#r){let g=this.#r,p;for(;p=g?.shift();)this.#S?.(...p)}return this}pop(){try{for(;this.#n;){let e=this.#t[this.#l];if(this.#G(!0),this.#e(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#f&&this.#r){let e=this.#r,t;for(;t=e?.shift();)this.#S?.(...t)}}}#G(e){let t=this.#l,i=this.#i[t],s=this.#t[t];return this.#W&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,"evict"),this.#f&&this.#r?.push([s,i,"evict"])),this.#R(t),this.#g?.[t]&&(clearTimeout(this.#g[t]),this.#g[t]=void 0),e&&(this.#i[t]=void 0,this.#t[t]=void 0,this.#y.push(t)),this.#n===1?(this.#l=this.#h=0,this.#y.length=0):this.#l=this.#a[t],this.#s.delete(i),this.#n--,t}has(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="has",i.key=e);let s=this.#Y(e,t);return S.hasSubscribers&&S.publish(i),s}#Y(e,t={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=t,n=this.#s.get(e);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has="stale",this.#E(s,n));else return i&&this.#x(n),s&&(s.has="hit",this.#E(s,n)),!0}else s&&(s.has="miss");return!1}peek(e,t={}){let{status:i=D()?{}:void 0}=t;i&&(i.op="peek",i.key=e),t.status=i;let s=this.#J(e,t);return S.hasSubscribers&&S.publish(i),s}#J(e,t){let{status:i,allowStale:s=this.allowStale}=t,n=this.#s.get(e);if(n===void 0||!s&&this.#p(n)){i&&(i.peek=n===void 0?"miss":"stale");return}let o=this.#t[n],r=this.#e(o)?o.__staleWhileFetching:o;return i&&(r!==void 0?(i.peek="hit",i.value=r):i.peek="miss"),r}#P(e,t,i,s){let n=t===void 0?void 0:this.#t[t];if(this.#e(n))return n;let o=new AbortController,{signal:r}=i;r?.addEventListener("abort",()=>o.abort(r.reason),{signal:o.signal});let h={signal:o.signal,options:i,context:s},l=(w,y=!1)=>{let{aborted:a}=o.signal,m=i.ignoreFetchAbort&&w!==void 0,_=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&w!==void 0);if(i.status&&(a&&!y?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,m&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),a&&!m&&!y)return f(o.signal.reason,_);let b=p,d=this.#t[t];return(d===p||d===void 0&&m&&y)&&(w===void 0?b.__staleWhileFetching!==void 0?this.#t[t]=b.__staleWhileFetching:this.#v(e,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.#O(e,w,h.options))),w},c=w=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=w),f(w,!1)),f=(w,y)=>{let{aborted:a}=o.signal,m=a&&i.allowStaleOnFetchAbort,_=m||i.allowStaleOnFetchRejection,b=_||i.noDeleteOnFetchRejection,d=p;if(this.#t[t]===p&&(!b||!y&&d.__staleWhileFetching===void 0?this.#v(e,"fetch"):m||(this.#t[t]=d.__staleWhileFetching)),_)return i.status&&d.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),d.__staleWhileFetching;if(d.__returned===d)throw w},g=(w,y)=>{let a=this.#M?.(e,n,h);a&&a instanceof Promise&&a.then(m=>w(m===void 0?void 0:m),y),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(w(void 0),i.allowStaleOnFetchAbort&&(w=m=>l(m,!0)))})};i.status&&(i.status.fetchDispatched=!0);let p=new Promise(g).then(l,c),T=Object.assign(p,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return t===void 0?(this.#O(e,T,{...h.options,status:void 0}),t=this.#s.get(e)):this.#t[t]=T,T}#e(e){if(!this.#W)return!1;let t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof AbortController}fetch(e,t={}){let i=W.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#B(e,t);return s&&D()&&i&&(s.trace=!0,W.tracePromise(()=>n,s).catch(()=>{})),n}async#B(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:r=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:g=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:T=this.allowStaleOnFetchAbort,context:w,forceRefresh:y=!1,status:a,signal:m}=t;if(a&&(a.op="fetch",a.key=e,y&&(a.forceRefresh=!0)),!this.#W)return a&&(a.fetch="get"),this.#C(e,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:a});let _={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:r,size:h,sizeCalculation:l,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:g,allowStaleOnFetchAbort:T,ignoreFetchAbort:p,status:a,signal:m},b=this.#s.get(e);if(b===void 0){a&&(a.fetch="miss");let d=this.#P(e,b,_,w);return d.__returned=d}else{let d=this.#t[b];if(this.#e(d)){let E=i&&d.__staleWhileFetching!==void 0;return a&&(a.fetch="inflight",E&&(a.returnedStale=!0)),E?d.__staleWhileFetching:d.__returned=d}let A=this.#p(b);if(!y&&!A)return a&&(a.fetch="hit"),this.#L(b),s&&this.#x(b),a&&this.#E(a,b),d;let z=this.#P(e,b,_,w),v=z.__staleWhileFetching!==void 0&&i;return a&&(a.fetch=A?"stale":"refresh",v&&A&&(a.returnedStale=!0)),v?z.__staleWhileFetching:z.__returned=z}}forceFetch(e,t={}){let i=W.hasSubscribers,{status:s=D()?{}:void 0}=t;t.status=s,s&&t.context&&(s.context=t.context);let n=this.#K(e,t);return s&&D()&&i&&(s.trace=!0,W.tracePromise(()=>n,s).catch(()=>{})),n}async#K(e,t={}){let i=await this.#B(e,t);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="memo",i.key=e,t.context&&(i.context=t.context));let s=this.#Q(e,t);return i&&(i.value=s),S.hasSubscribers&&S.publish(i),s}#Q(e,t={}){let i=this.#U;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,status:n,forceRefresh:o,...r}=t;n&&o&&(n.forceRefresh=!0);let h=this.#C(e,r),l=o||h===void 0;if(n&&(n.memo=l?"miss":"hit",l||(n.value=h)),!l)return h;let c=i(e,h,{options:r,context:s});return n&&(n.value=c),this.#O(e,c,r),c}get(e,t={}){let{status:i=S.hasSubscribers?{}:void 0}=t;t.status=i,i&&(i.op="get",i.key=e);let s=this.#C(e,t);return i&&(s!==void 0&&(i.value=s),S.hasSubscribers&&S.publish(i)),s}#C(e,t={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=t,r=this.#s.get(e);if(r===void 0){o&&(o.get="miss");return}let h=this.#t[r],l=this.#e(h);return o&&this.#E(o,r),this.#p(r)?l?(o&&(o.get="stale-fetching"),i&&h.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),h.__staleWhileFetching):void 0):(n||this.#v(e,"expire"),o&&(o.get="stale"),i?(o&&(o.returnedStale=!0),h):void 0):(o&&(o.get=l?"fetching":"hit"),this.#L(r),s&&this.#x(r),l?h.__staleWhileFetching:h)}#$(e,t){this.#c[t]=e,this.#a[e]=t}#L(e){e!==this.#h&&(e===this.#l?this.#l=this.#a[e]:this.#$(this.#c[e],this.#a[e]),this.#$(this.#h,e),this.#h=e)}delete(e){return this.#v(e,"delete")}#v(e,t){S.hasSubscribers&&S.publish({op:"delete",delete:t,key:e});let i=!1;if(this.#n!==0){let s=this.#s.get(e);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#q(t);else{this.#R(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,e,t),this.#f&&this.#r?.push([n,e,t])),this.#s.delete(e),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#c[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#c[s];this.#a[o]=this.#a[s];let r=this.#a[s];this.#c[r]=this.#c[s]}this.#n--,this.#y.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#q("delete")}#q(e){for(let t of this.#z({allowStale:!0})){let i=this.#t[t];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[t];this.#T&&this.#w?.(i,s,e),this.#f&&this.#r?.push([i,s,e])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#F){this.#d.fill(0),this.#F.fill(0);for(let t of this.#g??[])t!==void 0&&clearTimeout(t);this.#g?.fill(void 0)}if(this.#_&&this.#_.fill(0),this.#l=0,this.#h=0,this.#y.length=0,this.#b=0,this.#n=0,this.#f&&this.#r){let t=this.#r,i;for(;i=t?.shift();)this.#S?.(...i)}}};export{L as LRUCache}; +//# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index aac56efd1920ed..b571016553e727 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "11.2.7", + "version": "11.3.5", "author": "Isaac Z. Schlueter ", "keywords": [ "mru", @@ -11,7 +11,7 @@ "sideEffects": false, "scripts": { "build": "npm run prepare", - "prepare": "tshy && bash fixup.sh", + "prepare": "tshy && bash scripts/build.sh", "pretest": "npm run prepare", "presnap": "npm run prepare", "test": "tap", @@ -25,15 +25,30 @@ "prebenchmark": "npm run prepare", "benchmark": "make -C benchmark", "preprofile": "npm run prepare", - "profile": "make -C benchmark profile" + "profile": "make -C benchmark profile", + "lint": "oxlint --fix src test", + "postsnap": "npm run lint", + "postlint": "npm run format" }, "main": "./dist/commonjs/index.min.js", "types": "./dist/commonjs/index.d.ts", "tshy": { + "esmDialects": [ + "node", + "browser" + ], "exports": { "./raw": "./src/index.ts", ".": { "import": { + "node": { + "types": "./dist/esm/node/index.d.ts", + "default": "./dist/esm/node/index.min.js" + }, + "browser": { + "types": "./dist/esm/browser/index.d.ts", + "default": "./dist/esm/browser/index.min.js" + }, "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.min.js" }, @@ -42,22 +57,24 @@ "default": "./dist/commonjs/index.min.js" } } - } + }, + "selfLink": false }, "repository": { "type": "git", "url": "git+ssh://git@github.com/isaacs/node-lru-cache.git" }, "devDependencies": { - "@types/node": "^24.3.0", "benchmark": "^2.1.4", "esbuild": "^0.25.9", "marked": "^4.2.12", "mkdirp": "^3.0.1", - "prettier": "^3.6.2", - "tap": "^21.1.0", - "tshy": "^3.0.2", - "typedoc": "^0.28.12" + "oxlint": "^1.58.0", + "oxlint-tsgolint": "^0.19.0", + "prettier": "^3.8.1", + "tap": "^21.6.3", + "tshy": "^4.1.1", + "typedoc": "^0.28.18" }, "license": "BlueOak-1.0.0", "files": [ @@ -69,6 +86,14 @@ "exports": { "./raw": { "import": { + "node": { + "types": "./dist/esm/node/index.d.ts", + "default": "./dist/esm/node/index.js" + }, + "browser": { + "types": "./dist/esm/browser/index.d.ts", + "default": "./dist/esm/browser/index.js" + }, "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js" }, @@ -79,6 +104,14 @@ }, ".": { "import": { + "node": { + "types": "./dist/esm/node/index.d.ts", + "default": "./dist/esm/node/index.min.js" + }, + "browser": { + "types": "./dist/esm/browser/index.d.ts", + "default": "./dist/esm/browser/index.min.js" + }, "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.min.js" }, diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js index 682be214093f9b..75177cc2b19f71 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js @@ -192,15 +192,14 @@ class AST { } // reconstructs the pattern toString() { - if (this.#toString !== undefined) - return this.#toString; - if (!this.type) { - return (this.#toString = this.#parts.map(p => String(p)).join('')); - } - else { - return (this.#toString = - this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); - } + return (this.#toString !== undefined ? this.#toString + : !this.type ? + (this.#toString = this.#parts.map(p => String(p)).join('')) + : (this.#toString = + this.type + + '(' + + this.#parts.map(p => String(p)).join('|') + + ')')); } #fillNegs() { /* c8 ignore start */ @@ -480,7 +479,7 @@ class AST { } #canUsurpType(c) { const m = usurpMap.get(this.type); - return !!(m?.has(c)); + return !!m?.has(c); } #canUsurp(child) { if (!child || diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/index.js b/deps/npm/node_modules/minimatch/dist/commonjs/index.js index b28f9b455ecf8b..ed63ecdbd1ea7b 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/index.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/index.js @@ -16,7 +16,7 @@ const minimatch = (p, pattern, options = {}) => { }; exports.minimatch = minimatch; // Optimized checking for the most common glob patterns. -const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; +const starDotExtRE = /^\*+([^+@!?*[(]*)$/; const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); const starDotExtTestNocase = (ext) => { @@ -35,7 +35,7 @@ const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); const starRE = /^\*+$/; const starTest = (f) => f.length !== 0 && !f.startsWith('.'); const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; -const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; +const qmarksRE = /^\?+([^+@!?*[(]*)?$/; const qmarksTestNocase = ([$0, ext = '']) => { const noext = qmarksTestNoExt([$0]); if (!ext) @@ -267,6 +267,7 @@ class Minimatch { // step 2: expand braces this.globSet = [...new Set(this.braceExpand())]; if (options.debug) { + //oxlint-disable-next-line no-console this.debug = (...args) => console.error(...args); } this.debug(this.pattern, this.globSet); @@ -329,10 +330,10 @@ class Minimatch { preprocess(globParts) { // if we're not in globstar mode, then turn ** into * if (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === '**') { - globParts[i][j] = '*'; + for (const partset of globParts) { + for (let j = 0; j < partset.length; j++) { + if (partset[j] === '**') { + partset[j] = '*'; } } } @@ -420,7 +421,11 @@ class Minimatch { let dd = 0; while (-1 !== (dd = parts.indexOf('..', dd + 1))) { const p = parts[dd - 1]; - if (p && p !== '.' && p !== '..' && p !== '**') { + if (p && + p !== '.' && + p !== '..' && + p !== '**' && + !(this.isWindows && /^[a-z]:$/i.test(p))) { didSomething = true; parts.splice(dd - 1, 2); dd -= 2; @@ -669,15 +674,17 @@ class Minimatch { // split the pattern up into globstar-delimited sections // the tail has to be at the end, and the others just have // to be found in order from the head. - const [head, body, tail] = partial ? [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1), - [], - ] : [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1, lastgs), - pattern.slice(lastgs + 1), - ]; + const [head, body, tail] = partial ? + [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1), + [], + ] + : [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1, lastgs), + pattern.slice(lastgs + 1), + ]; // check the head, from the current file/pattern index. if (head.length) { const fileHead = file.slice(fileIndex, fileIndex + head.length); @@ -1023,7 +1030,7 @@ class Minimatch { this.regexp = new RegExp(re, [...flags].join('')); /* c8 ignore start */ } - catch (ex) { + catch { // should be impossible this.regexp = false; } @@ -1038,7 +1045,7 @@ class Minimatch { if (this.preserveMultipleSlashes) { return p.split('/'); } - else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { + else if (this.isWindows && /^\/\/[^/]+/.test(p)) { // add an extra '' for the one we lose return ['', ...p.split(/\/+/)]; } @@ -1080,8 +1087,7 @@ class Minimatch { filename = ff[i]; } } - for (let i = 0; i < set.length; i++) { - const pattern = set[i]; + for (const pattern of set) { let file = ff; if (options.matchBase && pattern.length === 1) { file = [filename]; diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js index db8d0c847d21b1..ad648fba64d40d 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js @@ -23,16 +23,16 @@ exports.unescape = void 0; const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => { if (magicalBraces) { return windowsPathsNoEscape ? - s.replace(/\[([^\/\\])\]/g, '$1') + s.replace(/\[([^/\\])\]/g, '$1') : s - .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2') - .replace(/\\([^\/])/g, '$1'); + .replace(/((?!\\).|^)\[([^/\\])\]/g, '$1$2') + .replace(/\\([^/])/g, '$1'); } return windowsPathsNoEscape ? - s.replace(/\[([^\/\\{}])\]/g, '$1') + s.replace(/\[([^/\\{}])\]/g, '$1') : s - .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2') - .replace(/\\([^\/{}])/g, '$1'); + .replace(/((?!\\).|^)\[([^/\\{}])\]/g, '$1$2') + .replace(/\\([^/{}])/g, '$1'); }; exports.unescape = unescape; //# sourceMappingURL=unescape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/esm/ast.js b/deps/npm/node_modules/minimatch/dist/esm/ast.js index 4501f7208dbc02..03f3fdb49da442 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/ast.js +++ b/deps/npm/node_modules/minimatch/dist/esm/ast.js @@ -189,15 +189,14 @@ export class AST { } // reconstructs the pattern toString() { - if (this.#toString !== undefined) - return this.#toString; - if (!this.type) { - return (this.#toString = this.#parts.map(p => String(p)).join('')); - } - else { - return (this.#toString = - this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); - } + return (this.#toString !== undefined ? this.#toString + : !this.type ? + (this.#toString = this.#parts.map(p => String(p)).join('')) + : (this.#toString = + this.type + + '(' + + this.#parts.map(p => String(p)).join('|') + + ')')); } #fillNegs() { /* c8 ignore start */ @@ -477,7 +476,7 @@ export class AST { } #canUsurpType(c) { const m = usurpMap.get(this.type); - return !!(m?.has(c)); + return !!m?.has(c); } #canUsurp(child) { if (!child || diff --git a/deps/npm/node_modules/minimatch/dist/esm/index.js b/deps/npm/node_modules/minimatch/dist/esm/index.js index ac45d7c48e309f..75ad8f6ddeba4f 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/index.js +++ b/deps/npm/node_modules/minimatch/dist/esm/index.js @@ -12,7 +12,7 @@ export const minimatch = (p, pattern, options = {}) => { return new Minimatch(pattern, options).match(p); }; // Optimized checking for the most common glob patterns. -const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; +const starDotExtRE = /^\*+([^+@!?*[(]*)$/; const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); const starDotExtTestNocase = (ext) => { @@ -31,7 +31,7 @@ const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); const starRE = /^\*+$/; const starTest = (f) => f.length !== 0 && !f.startsWith('.'); const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; -const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; +const qmarksRE = /^\?+([^+@!?*[(]*)?$/; const qmarksTestNocase = ([$0, ext = '']) => { const noext = qmarksTestNoExt([$0]); if (!ext) @@ -258,6 +258,7 @@ export class Minimatch { // step 2: expand braces this.globSet = [...new Set(this.braceExpand())]; if (options.debug) { + //oxlint-disable-next-line no-console this.debug = (...args) => console.error(...args); } this.debug(this.pattern, this.globSet); @@ -320,10 +321,10 @@ export class Minimatch { preprocess(globParts) { // if we're not in globstar mode, then turn ** into * if (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === '**') { - globParts[i][j] = '*'; + for (const partset of globParts) { + for (let j = 0; j < partset.length; j++) { + if (partset[j] === '**') { + partset[j] = '*'; } } } @@ -411,7 +412,11 @@ export class Minimatch { let dd = 0; while (-1 !== (dd = parts.indexOf('..', dd + 1))) { const p = parts[dd - 1]; - if (p && p !== '.' && p !== '..' && p !== '**') { + if (p && + p !== '.' && + p !== '..' && + p !== '**' && + !(this.isWindows && /^[a-z]:$/i.test(p))) { didSomething = true; parts.splice(dd - 1, 2); dd -= 2; @@ -660,15 +665,17 @@ export class Minimatch { // split the pattern up into globstar-delimited sections // the tail has to be at the end, and the others just have // to be found in order from the head. - const [head, body, tail] = partial ? [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1), - [], - ] : [ - pattern.slice(patternIndex, firstgs), - pattern.slice(firstgs + 1, lastgs), - pattern.slice(lastgs + 1), - ]; + const [head, body, tail] = partial ? + [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1), + [], + ] + : [ + pattern.slice(patternIndex, firstgs), + pattern.slice(firstgs + 1, lastgs), + pattern.slice(lastgs + 1), + ]; // check the head, from the current file/pattern index. if (head.length) { const fileHead = file.slice(fileIndex, fileIndex + head.length); @@ -1014,7 +1021,7 @@ export class Minimatch { this.regexp = new RegExp(re, [...flags].join('')); /* c8 ignore start */ } - catch (ex) { + catch { // should be impossible this.regexp = false; } @@ -1029,7 +1036,7 @@ export class Minimatch { if (this.preserveMultipleSlashes) { return p.split('/'); } - else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { + else if (this.isWindows && /^\/\/[^/]+/.test(p)) { // add an extra '' for the one we lose return ['', ...p.split(/\/+/)]; } @@ -1071,8 +1078,7 @@ export class Minimatch { filename = ff[i]; } } - for (let i = 0; i < set.length; i++) { - const pattern = set[i]; + for (const pattern of set) { let file = ff; if (options.matchBase && pattern.length === 1) { file = [filename]; diff --git a/deps/npm/node_modules/minimatch/dist/esm/unescape.js b/deps/npm/node_modules/minimatch/dist/esm/unescape.js index b31bd40a028407..19ce86e7c86052 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/unescape.js +++ b/deps/npm/node_modules/minimatch/dist/esm/unescape.js @@ -20,15 +20,15 @@ export const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => { if (magicalBraces) { return windowsPathsNoEscape ? - s.replace(/\[([^\/\\])\]/g, '$1') + s.replace(/\[([^/\\])\]/g, '$1') : s - .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2') - .replace(/\\([^\/])/g, '$1'); + .replace(/((?!\\).|^)\[([^/\\])\]/g, '$1$2') + .replace(/\\([^/])/g, '$1'); } return windowsPathsNoEscape ? - s.replace(/\[([^\/\\{}])\]/g, '$1') + s.replace(/\[([^/\\{}])\]/g, '$1') : s - .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2') - .replace(/\\([^\/{}])/g, '$1'); + .replace(/((?!\\).|^)\[([^/\\{}])\]/g, '$1$2') + .replace(/\\([^/{}])/g, '$1'); }; //# sourceMappingURL=unescape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index 7967489f17fe98..211875c62b7249 100644 --- a/deps/npm/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/minimatch/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me)", "name": "minimatch", "description": "a glob matcher in javascript", - "version": "10.2.4", + "version": "10.2.5", "repository": { "type": "git", "url": "git@github.com:isaacs/minimatch" @@ -36,18 +36,23 @@ "snap": "tap", "format": "prettier --write .", "benchmark": "node benchmark/index.js", - "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts" + "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts", + "lint": "oxlint --fix src test", + "postsnap": "npm run lint", + "postlint": "npm run format" }, "engines": { "node": "18 || 20 || >=22" }, "devDependencies": { - "@types/node": "^25.3.0", + "@types/node": "^25.5.0", "mkdirp": "^3.0.1", - "prettier": "^3.6.2", + "oxlint": "^1.57.0", + "oxlint-tsgolint": "^0.18.1", + "prettier": "^3.8.1", "tap": "^21.6.2", - "tshy": "^3.0.2", - "typedoc": "^0.28.5" + "tshy": "^4.0.0", + "typedoc": "^0.28.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -57,11 +62,12 @@ "exports": { "./package.json": "./package.json", ".": "./src/index.ts" - } + }, + "selfLink": false }, "type": "module", "module": "./dist/esm/index.js", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" } } diff --git a/deps/npm/node_modules/minipass-flush/LICENSE b/deps/npm/node_modules/minipass-flush/LICENSE deleted file mode 100644 index 19129e315fe593..00000000000000 --- a/deps/npm/node_modules/minipass-flush/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/minipass-flush/LICENSE.md b/deps/npm/node_modules/minipass-flush/LICENSE.md new file mode 100644 index 00000000000000..c5402b9577a8cd --- /dev/null +++ b/deps/npm/node_modules/minipass-flush/LICENSE.md @@ -0,0 +1,55 @@ +# Blue Oak Model License + +Version 1.0.0 + +## Purpose + +This license gives everyone as much permission to work with +this software as possible, while protecting contributors +from liability. + +## Acceptance + +In order to receive this license, you must agree to its +rules. The rules of this license are both obligations +under that agreement and conditions to your license. +You must not do anything with this software that triggers +a rule that you cannot or will not follow. + +## Copyright + +Each contributor licenses you to do everything with this +software that would otherwise infringe that contributor's +copyright in it. + +## Notices + +You must ensure that everyone who gets a copy of +any part of this software from you, with or without +changes, also gets the text of this license or a link to +. + +## Excuse + +If anyone notifies you in writing that you have not +complied with [Notices](#notices), you can keep your +license by taking all practical steps to comply within 30 +days after the notice. If you do not do so, your license +ends immediately. + +## Patent + +Each contributor licenses you to do everything with this +software that would otherwise infringe any patent claims +they can license or become able to license. + +## Reliability + +No contributor can revoke this license. + +## No Liability + +***As far as the law allows, this software comes as is, +without any warranty or condition, and no contributor +will be liable to anyone for any damages related to this +software or this license, under any kind of legal claim.*** diff --git a/deps/npm/node_modules/minipass-flush/index.js b/deps/npm/node_modules/minipass-flush/index.js index cb2537fa6b2b57..f435f5d7fde518 100644 --- a/deps/npm/node_modules/minipass-flush/index.js +++ b/deps/npm/node_modules/minipass-flush/index.js @@ -1,4 +1,4 @@ -const Minipass = require('minipass') +const { Minipass } = require('minipass') const _flush = Symbol('_flush') const _flushed = Symbol('_flushed') const _flushing = Symbol('_flushing') diff --git a/deps/npm/node_modules/minipass-flush/node_modules/minipass/LICENSE b/deps/npm/node_modules/minipass-flush/node_modules/minipass/LICENSE deleted file mode 100644 index bf1dece2e1f122..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/minipass/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.js b/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.js deleted file mode 100644 index e8797aab6cc276..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.js +++ /dev/null @@ -1,649 +0,0 @@ -'use strict' -const proc = typeof process === 'object' && process ? process : { - stdout: null, - stderr: null, -} -const EE = require('events') -const Stream = require('stream') -const SD = require('string_decoder').StringDecoder - -const EOF = Symbol('EOF') -const MAYBE_EMIT_END = Symbol('maybeEmitEnd') -const EMITTED_END = Symbol('emittedEnd') -const EMITTING_END = Symbol('emittingEnd') -const EMITTED_ERROR = Symbol('emittedError') -const CLOSED = Symbol('closed') -const READ = Symbol('read') -const FLUSH = Symbol('flush') -const FLUSHCHUNK = Symbol('flushChunk') -const ENCODING = Symbol('encoding') -const DECODER = Symbol('decoder') -const FLOWING = Symbol('flowing') -const PAUSED = Symbol('paused') -const RESUME = Symbol('resume') -const BUFFERLENGTH = Symbol('bufferLength') -const BUFFERPUSH = Symbol('bufferPush') -const BUFFERSHIFT = Symbol('bufferShift') -const OBJECTMODE = Symbol('objectMode') -const DESTROYED = Symbol('destroyed') -const EMITDATA = Symbol('emitData') -const EMITEND = Symbol('emitEnd') -const EMITEND2 = Symbol('emitEnd2') -const ASYNC = Symbol('async') - -const defer = fn => Promise.resolve().then(fn) - -// TODO remove when Node v8 support drops -const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' -const ASYNCITERATOR = doIter && Symbol.asyncIterator - || Symbol('asyncIterator not implemented') -const ITERATOR = doIter && Symbol.iterator - || Symbol('iterator not implemented') - -// events that mean 'the stream is over' -// these are treated specially, and re-emitted -// if they are listened for after emitting. -const isEndish = ev => - ev === 'end' || - ev === 'finish' || - ev === 'prefinish' - -const isArrayBuffer = b => b instanceof ArrayBuffer || - typeof b === 'object' && - b.constructor && - b.constructor.name === 'ArrayBuffer' && - b.byteLength >= 0 - -const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) - -class Pipe { - constructor (src, dest, opts) { - this.src = src - this.dest = dest - this.opts = opts - this.ondrain = () => src[RESUME]() - dest.on('drain', this.ondrain) - } - unpipe () { - this.dest.removeListener('drain', this.ondrain) - } - // istanbul ignore next - only here for the prototype - proxyErrors () {} - end () { - this.unpipe() - if (this.opts.end) - this.dest.end() - } -} - -class PipeProxyErrors extends Pipe { - unpipe () { - this.src.removeListener('error', this.proxyErrors) - super.unpipe() - } - constructor (src, dest, opts) { - super(src, dest, opts) - this.proxyErrors = er => dest.emit('error', er) - src.on('error', this.proxyErrors) - } -} - -module.exports = class Minipass extends Stream { - constructor (options) { - super() - this[FLOWING] = false - // whether we're explicitly paused - this[PAUSED] = false - this.pipes = [] - this.buffer = [] - this[OBJECTMODE] = options && options.objectMode || false - if (this[OBJECTMODE]) - this[ENCODING] = null - else - this[ENCODING] = options && options.encoding || null - if (this[ENCODING] === 'buffer') - this[ENCODING] = null - this[ASYNC] = options && !!options.async || false - this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null - this[EOF] = false - this[EMITTED_END] = false - this[EMITTING_END] = false - this[CLOSED] = false - this[EMITTED_ERROR] = null - this.writable = true - this.readable = true - this[BUFFERLENGTH] = 0 - this[DESTROYED] = false - } - - get bufferLength () { return this[BUFFERLENGTH] } - - get encoding () { return this[ENCODING] } - set encoding (enc) { - if (this[OBJECTMODE]) - throw new Error('cannot set encoding in objectMode') - - if (this[ENCODING] && enc !== this[ENCODING] && - (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH])) - throw new Error('cannot change encoding') - - if (this[ENCODING] !== enc) { - this[DECODER] = enc ? new SD(enc) : null - if (this.buffer.length) - this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk)) - } - - this[ENCODING] = enc - } - - setEncoding (enc) { - this.encoding = enc - } - - get objectMode () { return this[OBJECTMODE] } - set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om } - - get ['async'] () { return this[ASYNC] } - set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a } - - write (chunk, encoding, cb) { - if (this[EOF]) - throw new Error('write after end') - - if (this[DESTROYED]) { - this.emit('error', Object.assign( - new Error('Cannot call write after a stream was destroyed'), - { code: 'ERR_STREAM_DESTROYED' } - )) - return true - } - - if (typeof encoding === 'function') - cb = encoding, encoding = 'utf8' - - if (!encoding) - encoding = 'utf8' - - const fn = this[ASYNC] ? defer : f => f() - - // convert array buffers and typed array views into buffers - // at some point in the future, we may want to do the opposite! - // leave strings and buffers as-is - // anything else switches us into object mode - if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { - if (isArrayBufferView(chunk)) - chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) - else if (isArrayBuffer(chunk)) - chunk = Buffer.from(chunk) - else if (typeof chunk !== 'string') - // use the setter so we throw if we have encoding set - this.objectMode = true - } - - // handle object mode up front, since it's simpler - // this yields better performance, fewer checks later. - if (this[OBJECTMODE]) { - /* istanbul ignore if - maybe impossible? */ - if (this.flowing && this[BUFFERLENGTH] !== 0) - this[FLUSH](true) - - if (this.flowing) - this.emit('data', chunk) - else - this[BUFFERPUSH](chunk) - - if (this[BUFFERLENGTH] !== 0) - this.emit('readable') - - if (cb) - fn(cb) - - return this.flowing - } - - // at this point the chunk is a buffer or string - // don't buffer it up or send it to the decoder - if (!chunk.length) { - if (this[BUFFERLENGTH] !== 0) - this.emit('readable') - if (cb) - fn(cb) - return this.flowing - } - - // fast-path writing strings of same encoding to a stream with - // an empty buffer, skipping the buffer/decoder dance - if (typeof chunk === 'string' && - // unless it is a string already ready for us to use - !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) { - chunk = Buffer.from(chunk, encoding) - } - - if (Buffer.isBuffer(chunk) && this[ENCODING]) - chunk = this[DECODER].write(chunk) - - // Note: flushing CAN potentially switch us into not-flowing mode - if (this.flowing && this[BUFFERLENGTH] !== 0) - this[FLUSH](true) - - if (this.flowing) - this.emit('data', chunk) - else - this[BUFFERPUSH](chunk) - - if (this[BUFFERLENGTH] !== 0) - this.emit('readable') - - if (cb) - fn(cb) - - return this.flowing - } - - read (n) { - if (this[DESTROYED]) - return null - - if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { - this[MAYBE_EMIT_END]() - return null - } - - if (this[OBJECTMODE]) - n = null - - if (this.buffer.length > 1 && !this[OBJECTMODE]) { - if (this.encoding) - this.buffer = [this.buffer.join('')] - else - this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])] - } - - const ret = this[READ](n || null, this.buffer[0]) - this[MAYBE_EMIT_END]() - return ret - } - - [READ] (n, chunk) { - if (n === chunk.length || n === null) - this[BUFFERSHIFT]() - else { - this.buffer[0] = chunk.slice(n) - chunk = chunk.slice(0, n) - this[BUFFERLENGTH] -= n - } - - this.emit('data', chunk) - - if (!this.buffer.length && !this[EOF]) - this.emit('drain') - - return chunk - } - - end (chunk, encoding, cb) { - if (typeof chunk === 'function') - cb = chunk, chunk = null - if (typeof encoding === 'function') - cb = encoding, encoding = 'utf8' - if (chunk) - this.write(chunk, encoding) - if (cb) - this.once('end', cb) - this[EOF] = true - this.writable = false - - // if we haven't written anything, then go ahead and emit, - // even if we're not reading. - // we'll re-emit if a new 'end' listener is added anyway. - // This makes MP more suitable to write-only use cases. - if (this.flowing || !this[PAUSED]) - this[MAYBE_EMIT_END]() - return this - } - - // don't let the internal resume be overwritten - [RESUME] () { - if (this[DESTROYED]) - return - - this[PAUSED] = false - this[FLOWING] = true - this.emit('resume') - if (this.buffer.length) - this[FLUSH]() - else if (this[EOF]) - this[MAYBE_EMIT_END]() - else - this.emit('drain') - } - - resume () { - return this[RESUME]() - } - - pause () { - this[FLOWING] = false - this[PAUSED] = true - } - - get destroyed () { - return this[DESTROYED] - } - - get flowing () { - return this[FLOWING] - } - - get paused () { - return this[PAUSED] - } - - [BUFFERPUSH] (chunk) { - if (this[OBJECTMODE]) - this[BUFFERLENGTH] += 1 - else - this[BUFFERLENGTH] += chunk.length - this.buffer.push(chunk) - } - - [BUFFERSHIFT] () { - if (this.buffer.length) { - if (this[OBJECTMODE]) - this[BUFFERLENGTH] -= 1 - else - this[BUFFERLENGTH] -= this.buffer[0].length - } - return this.buffer.shift() - } - - [FLUSH] (noDrain) { - do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]())) - - if (!noDrain && !this.buffer.length && !this[EOF]) - this.emit('drain') - } - - [FLUSHCHUNK] (chunk) { - return chunk ? (this.emit('data', chunk), this.flowing) : false - } - - pipe (dest, opts) { - if (this[DESTROYED]) - return - - const ended = this[EMITTED_END] - opts = opts || {} - if (dest === proc.stdout || dest === proc.stderr) - opts.end = false - else - opts.end = opts.end !== false - opts.proxyErrors = !!opts.proxyErrors - - // piping an ended stream ends immediately - if (ended) { - if (opts.end) - dest.end() - } else { - this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts) - : new PipeProxyErrors(this, dest, opts)) - if (this[ASYNC]) - defer(() => this[RESUME]()) - else - this[RESUME]() - } - - return dest - } - - unpipe (dest) { - const p = this.pipes.find(p => p.dest === dest) - if (p) { - this.pipes.splice(this.pipes.indexOf(p), 1) - p.unpipe() - } - } - - addListener (ev, fn) { - return this.on(ev, fn) - } - - on (ev, fn) { - const ret = super.on(ev, fn) - if (ev === 'data' && !this.pipes.length && !this.flowing) - this[RESUME]() - else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) - super.emit('readable') - else if (isEndish(ev) && this[EMITTED_END]) { - super.emit(ev) - this.removeAllListeners(ev) - } else if (ev === 'error' && this[EMITTED_ERROR]) { - if (this[ASYNC]) - defer(() => fn.call(this, this[EMITTED_ERROR])) - else - fn.call(this, this[EMITTED_ERROR]) - } - return ret - } - - get emittedEnd () { - return this[EMITTED_END] - } - - [MAYBE_EMIT_END] () { - if (!this[EMITTING_END] && - !this[EMITTED_END] && - !this[DESTROYED] && - this.buffer.length === 0 && - this[EOF]) { - this[EMITTING_END] = true - this.emit('end') - this.emit('prefinish') - this.emit('finish') - if (this[CLOSED]) - this.emit('close') - this[EMITTING_END] = false - } - } - - emit (ev, data, ...extra) { - // error and close are only events allowed after calling destroy() - if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) - return - else if (ev === 'data') { - return !data ? false - : this[ASYNC] ? defer(() => this[EMITDATA](data)) - : this[EMITDATA](data) - } else if (ev === 'end') { - return this[EMITEND]() - } else if (ev === 'close') { - this[CLOSED] = true - // don't emit close before 'end' and 'finish' - if (!this[EMITTED_END] && !this[DESTROYED]) - return - const ret = super.emit('close') - this.removeAllListeners('close') - return ret - } else if (ev === 'error') { - this[EMITTED_ERROR] = data - const ret = super.emit('error', data) - this[MAYBE_EMIT_END]() - return ret - } else if (ev === 'resume') { - const ret = super.emit('resume') - this[MAYBE_EMIT_END]() - return ret - } else if (ev === 'finish' || ev === 'prefinish') { - const ret = super.emit(ev) - this.removeAllListeners(ev) - return ret - } - - // Some other unknown event - const ret = super.emit(ev, data, ...extra) - this[MAYBE_EMIT_END]() - return ret - } - - [EMITDATA] (data) { - for (const p of this.pipes) { - if (p.dest.write(data) === false) - this.pause() - } - const ret = super.emit('data', data) - this[MAYBE_EMIT_END]() - return ret - } - - [EMITEND] () { - if (this[EMITTED_END]) - return - - this[EMITTED_END] = true - this.readable = false - if (this[ASYNC]) - defer(() => this[EMITEND2]()) - else - this[EMITEND2]() - } - - [EMITEND2] () { - if (this[DECODER]) { - const data = this[DECODER].end() - if (data) { - for (const p of this.pipes) { - p.dest.write(data) - } - super.emit('data', data) - } - } - - for (const p of this.pipes) { - p.end() - } - const ret = super.emit('end') - this.removeAllListeners('end') - return ret - } - - // const all = await stream.collect() - collect () { - const buf = [] - if (!this[OBJECTMODE]) - buf.dataLength = 0 - // set the promise first, in case an error is raised - // by triggering the flow here. - const p = this.promise() - this.on('data', c => { - buf.push(c) - if (!this[OBJECTMODE]) - buf.dataLength += c.length - }) - return p.then(() => buf) - } - - // const data = await stream.concat() - concat () { - return this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this.collect().then(buf => - this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength)) - } - - // stream.promise().then(() => done, er => emitted error) - promise () { - return new Promise((resolve, reject) => { - this.on(DESTROYED, () => reject(new Error('stream destroyed'))) - this.on('error', er => reject(er)) - this.on('end', () => resolve()) - }) - } - - // for await (let chunk of stream) - [ASYNCITERATOR] () { - const next = () => { - const res = this.read() - if (res !== null) - return Promise.resolve({ done: false, value: res }) - - if (this[EOF]) - return Promise.resolve({ done: true }) - - let resolve = null - let reject = null - const onerr = er => { - this.removeListener('data', ondata) - this.removeListener('end', onend) - reject(er) - } - const ondata = value => { - this.removeListener('error', onerr) - this.removeListener('end', onend) - this.pause() - resolve({ value: value, done: !!this[EOF] }) - } - const onend = () => { - this.removeListener('error', onerr) - this.removeListener('data', ondata) - resolve({ done: true }) - } - const ondestroy = () => onerr(new Error('stream destroyed')) - return new Promise((res, rej) => { - reject = rej - resolve = res - this.once(DESTROYED, ondestroy) - this.once('error', onerr) - this.once('end', onend) - this.once('data', ondata) - }) - } - - return { next } - } - - // for (let chunk of stream) - [ITERATOR] () { - const next = () => { - const value = this.read() - const done = value === null - return { value, done } - } - return { next } - } - - destroy (er) { - if (this[DESTROYED]) { - if (er) - this.emit('error', er) - else - this.emit(DESTROYED) - return this - } - - this[DESTROYED] = true - - // throw away all buffered data, it's never coming out - this.buffer.length = 0 - this[BUFFERLENGTH] = 0 - - if (typeof this.close === 'function' && !this[CLOSED]) - this.close() - - if (er) - this.emit('error', er) - else // if no error to emit, still reject pending promises - this.emit(DESTROYED) - - return this - } - - static isStream (s) { - return !!s && (s instanceof Minipass || s instanceof Stream || - s instanceof EE && ( - typeof s.pipe === 'function' || // readable - (typeof s.write === 'function' && typeof s.end === 'function') // writable - )) - } -} diff --git a/deps/npm/node_modules/minipass-flush/node_modules/minipass/package.json b/deps/npm/node_modules/minipass-flush/node_modules/minipass/package.json deleted file mode 100644 index 548d03fa6d5d4b..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/minipass/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "minipass", - "version": "3.3.6", - "description": "minimal implementation of a PassThrough stream", - "main": "index.js", - "types": "index.d.ts", - "dependencies": { - "yallist": "^4.0.0" - }, - "devDependencies": { - "@types/node": "^17.0.41", - "end-of-stream": "^1.4.0", - "prettier": "^2.6.2", - "tap": "^16.2.0", - "through2": "^2.0.3", - "ts-node": "^10.8.1", - "typescript": "^4.7.3" - }, - "scripts": { - "test": "tap", - "preversion": "npm test", - "postversion": "npm publish", - "postpublish": "git push origin --follow-tags" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/minipass.git" - }, - "keywords": [ - "passthrough", - "stream" - ], - "author": "Isaac Z. Schlueter (http://blog.izs.me/)", - "license": "ISC", - "files": [ - "index.d.ts", - "index.js" - ], - "tap": { - "check-coverage": true - }, - "engines": { - "node": ">=8" - }, - "prettier": { - "semi": false, - "printWidth": 80, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - } -} diff --git a/deps/npm/node_modules/minipass-flush/node_modules/yallist/LICENSE b/deps/npm/node_modules/minipass-flush/node_modules/yallist/LICENSE deleted file mode 100644 index 19129e315fe593..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/yallist/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/minipass-flush/node_modules/yallist/iterator.js b/deps/npm/node_modules/minipass-flush/node_modules/yallist/iterator.js deleted file mode 100644 index d41c97a19f9849..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/yallist/iterator.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' -module.exports = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value - } - } -} diff --git a/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json b/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json deleted file mode 100644 index 8a083867d72e00..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "yallist", - "version": "4.0.0", - "description": "Yet Another Linked List", - "main": "yallist.js", - "directories": { - "test": "test" - }, - "files": [ - "yallist.js", - "iterator.js" - ], - "dependencies": {}, - "devDependencies": { - "tap": "^12.1.0" - }, - "scripts": { - "test": "tap test/*.js --100", - "preversion": "npm test", - "postversion": "npm publish", - "postpublish": "git push origin --all; git push origin --tags" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/yallist.git" - }, - "author": "Isaac Z. Schlueter (http://blog.izs.me/)", - "license": "ISC" -} diff --git a/deps/npm/node_modules/minipass-flush/node_modules/yallist/yallist.js b/deps/npm/node_modules/minipass-flush/node_modules/yallist/yallist.js deleted file mode 100644 index 4e83ab1c542a51..00000000000000 --- a/deps/npm/node_modules/minipass-flush/node_modules/yallist/yallist.js +++ /dev/null @@ -1,426 +0,0 @@ -'use strict' -module.exports = Yallist - -Yallist.Node = Node -Yallist.create = Yallist - -function Yallist (list) { - var self = this - if (!(self instanceof Yallist)) { - self = new Yallist() - } - - self.tail = null - self.head = null - self.length = 0 - - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item) - }) - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]) - } - } - - return self -} - -Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list') - } - - var next = node.next - var prev = node.prev - - if (next) { - next.prev = prev - } - - if (prev) { - prev.next = next - } - - if (node === this.head) { - this.head = next - } - if (node === this.tail) { - this.tail = prev - } - - node.list.length-- - node.next = null - node.prev = null - node.list = null - - return next -} - -Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var head = this.head - node.list = this - node.next = head - if (head) { - head.prev = node - } - - this.head = node - if (!this.tail) { - this.tail = node - } - this.length++ -} - -Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var tail = this.tail - node.list = this - node.prev = tail - if (tail) { - tail.next = node - } - - this.tail = node - if (!this.head) { - this.head = node - } - this.length++ -} - -Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined - } - - var res = this.tail.value - this.tail = this.tail.prev - if (this.tail) { - this.tail.next = null - } else { - this.head = null - } - this.length-- - return res -} - -Yallist.prototype.shift = function () { - if (!this.head) { - return undefined - } - - var res = this.head.value - this.head = this.head.next - if (this.head) { - this.head.prev = null - } else { - this.tail = null - } - this.length-- - return res -} - -Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this) - walker = walker.next - } -} - -Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this) - walker = walker.prev - } -} - -Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.head; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.next - } - return res -} - -Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.prev - } - return res -} - -Yallist.prototype.reduce = function (fn, initial) { - var acc - var walker = this.head - if (arguments.length > 1) { - acc = initial - } else if (this.head) { - walker = this.head.next - acc = this.head.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i) - walker = walker.next - } - - return acc -} - -Yallist.prototype.reduceReverse = function (fn, initial) { - var acc - var walker = this.tail - if (arguments.length > 1) { - acc = initial - } else if (this.tail) { - walker = this.tail.prev - acc = this.tail.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i) - walker = walker.prev - } - - return acc -} - -Yallist.prototype.toArray = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value - walker = walker.next - } - return arr -} - -Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value - walker = walker.prev - } - return arr -} - -Yallist.prototype.slice = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1 - } - if (start < 0) { - start = this.length + start; - } - - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next - } - - var ret = [] - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value) - walker = this.removeNode(walker) - } - if (walker === null) { - walker = this.tail - } - - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev - } - - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]) - } - return ret; -} - -Yallist.prototype.reverse = function () { - var head = this.head - var tail = this.tail - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev - walker.prev = walker.next - walker.next = p - } - this.head = tail - this.tail = head - return this -} - -function insert (self, node, value) { - var inserted = node === self.head ? - new Node(value, null, node, self) : - new Node(value, node, node.next, self) - - if (inserted.next === null) { - self.tail = inserted - } - if (inserted.prev === null) { - self.head = inserted - } - - self.length++ - - return inserted -} - -function push (self, item) { - self.tail = new Node(item, self.tail, null, self) - if (!self.head) { - self.head = self.tail - } - self.length++ -} - -function unshift (self, item) { - self.head = new Node(item, null, self.head, self) - if (!self.tail) { - self.tail = self.head - } - self.length++ -} - -function Node (value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list) - } - - this.list = list - this.value = value - - if (prev) { - prev.next = this - this.prev = prev - } else { - this.prev = null - } - - if (next) { - next.prev = this - this.next = next - } else { - this.next = null - } -} - -try { - // add if support for Symbol.iterator is present - require('./iterator.js')(Yallist) -} catch (er) {} diff --git a/deps/npm/node_modules/minipass-flush/package.json b/deps/npm/node_modules/minipass-flush/package.json index 09127d0ec2015c..f4608a0c365b17 100644 --- a/deps/npm/node_modules/minipass-flush/package.json +++ b/deps/npm/node_modules/minipass-flush/package.json @@ -1,9 +1,9 @@ { "name": "minipass-flush", - "version": "1.0.5", + "version": "1.0.6", "description": "A Minipass stream that calls a flush function before emitting 'end'", "author": "Isaac Z. Schlueter (https://izs.me)", - "license": "ISC", + "license": "BlueOak-1.0.0", "scripts": { "test": "tap", "snap": "tap", @@ -15,10 +15,10 @@ "check-coverage": true }, "devDependencies": { - "tap": "^14.6.9" + "tap": "^15.1.6" }, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.1.3" }, "files": [ "index.js" @@ -34,6 +34,6 @@ "stream" ], "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" } } diff --git a/deps/npm/node_modules/node-gyp/.release-please-manifest.json b/deps/npm/node_modules/node-gyp/.release-please-manifest.json index 41c2c8154a015f..af7e1d8db1343b 100644 --- a/deps/npm/node_modules/node-gyp/.release-please-manifest.json +++ b/deps/npm/node_modules/node-gyp/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "12.2.0" + ".": "12.3.0" } diff --git a/deps/npm/node_modules/node-gyp/CHANGELOG.md b/deps/npm/node_modules/node-gyp/CHANGELOG.md index 4a83b4dfcd5c0d..1b02c2184ab23a 100644 --- a/deps/npm/node_modules/node-gyp/CHANGELOG.md +++ b/deps/npm/node_modules/node-gyp/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [12.3.0](https://github.com/nodejs/node-gyp/compare/v12.2.0...v12.3.0) (2026-04-21) + + +### Features + +* replace make-fetch-happen with built-in fetch ([#3302](https://github.com/nodejs/node-gyp/issues/3302)) ([393ec2b](https://github.com/nodejs/node-gyp/commit/393ec2be480195b585768eb18ac2d92b858b12db)) +* update gyp-next to v0.22.1 ([#3295](https://github.com/nodejs/node-gyp/issues/3295)) ([f4242fb](https://github.com/nodejs/node-gyp/commit/f4242fb7bf7592d71848bae5c7f8597f2718dc3f)) + + +### Bug Fixes + +* Switch to URL instead of url.resolve ([#3256](https://github.com/nodejs/node-gyp/issues/3256)) ([#3263](https://github.com/nodejs/node-gyp/issues/3263)) ([46d7576](https://github.com/nodejs/node-gyp/commit/46d75768018d10dc4b5693b35cf58f502425cbbe)) + + +### Core + +* **deps-dev:** bump neostandard from 0.12.2 to 0.13.0 ([#3289](https://github.com/nodejs/node-gyp/issues/3289)) ([19da158](https://github.com/nodejs/node-gyp/commit/19da1583b3876dce8c97263b168d9dfef637b76b)) +* improve Add-Type with -IgnoreWarnings ([#3280](https://github.com/nodejs/node-gyp/issues/3280)) ([1381458](https://github.com/nodejs/node-gyp/commit/13814583a476c85a84d5ac902c7ffa310120cb88)) + ## [12.2.0](https://github.com/nodejs/node-gyp/compare/v12.1.0...v12.2.0) (2026-01-26) diff --git a/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json b/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json index c825abab69803b..9242a4094d965a 100644 --- a/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json +++ b/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.21.1" + ".": "0.22.1" } diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py index 2d8e4ceab9a94c..02e6e7ed9209cf 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py @@ -87,7 +87,7 @@ def DefaultToolset(self): def _SetupScriptInternal(self, target_arch): """Returns a command (with arguments) to be used to set up the environment.""" - assert target_arch in ("x86", "x64"), "target_arch not supported" + assert target_arch in ("x86", "x64", "arm64"), "target_arch not supported" # If WindowsSDKDir is set and SetEnv.Cmd exists then we are using the # depot_tools build tools and should run SetEnv.Cmd to set up the # environment. The check for WindowsSDKDir alone is not sufficient because @@ -109,8 +109,16 @@ def _SetupScriptInternal(self, target_arch): ) # Always use a native executable, cross-compiling if necessary. - host_arch = "amd64" if is_host_arch_x64 else "x86" - msvc_target_arch = "amd64" if target_arch == "x64" else "x86" + host_arch = ( + "amd64" + if is_host_arch_x64 + else ( + "arm64" + if os.environ.get("PROCESSOR_ARCHITECTURE") == "ARM64" + else "x86" + ) + ) + msvc_target_arch = {"x64": "amd64"}.get(target_arch, target_arch) arg = host_arch if host_arch != msvc_target_arch: arg += "_" + msvc_target_arch diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py index 3a70cf076c8b47..c0a2637e94770f 100755 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py @@ -13,6 +13,7 @@ import shlex import sys import traceback +from importlib.metadata import version import gyp.input from gyp.common import GypError @@ -491,9 +492,7 @@ def gyp_main(args): options, build_files_arg = parser.parse_args(args) if options.version: - import pkg_resources # noqa: PLC0415 - - print(f"v{pkg_resources.get_distribution('gyp-next').version}") + print(f"v{version('gyp-next')}") return 0 build_files = build_files_arg diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py index 0f14c055049add..42bee33d9b63d8 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py @@ -857,7 +857,7 @@ def _EscapeCommandLineArgumentForMSBuild(s): """Escapes a Windows command-line argument for use by MSBuild.""" def _Replace(match): - return (len(match.group(1)) / 2 * 4) * "\\" + '\\"' + return (len(match.group(1)) // 2 * 4) * "\\" + '\\"' # Escape all quotes so that they are interpreted literally. s = quote_replacer_regex2.sub(_Replace, s) diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py index 4eac6cdb2707d7..3ceaf470cec203 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py @@ -246,7 +246,7 @@ def __init__( if flavor == "win": # See docstring of msvs_emulation.GenerateEnvironmentFiles(). self.win_env = {} - for arch in ("x86", "x64"): + for arch in ("x86", "x64", "arm64"): self.win_env[arch] = "environment." + arch # Relative path from build output dir to base dir. @@ -2339,6 +2339,7 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, config_name master_ninja.variable("rc", "rc.exe") master_ninja.variable("ml_x86", "ml.exe") master_ninja.variable("ml_x64", "ml64.exe") + master_ninja.variable("ml_arm64", "armasm64.exe") master_ninja.variable("mt", "mt.exe") else: master_ninja.variable("ld", CommandWithWrapper("LINK", wrappers, ld)) diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py index 616bc7aaf015a2..8b590af8eb3861 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py @@ -11,26 +11,36 @@ from pathlib import Path from gyp.generator import ninja +from gyp.MSVSVersion import SelectVisualStudioVersion + + +def _has_visual_studio(): + """Check if Visual Studio can be detected by gyp's registry-based detection.""" + if not sys.platform.startswith("win"): + return False + try: + SelectVisualStudioVersion("auto", allow_fallback=False) + return True + except ValueError: + return False class TestPrefixesAndSuffixes(unittest.TestCase): + @unittest.skipUnless( + _has_visual_studio(), + "requires Windows with a Visual Studio installation detected via the registry", + ) def test_BinaryNamesWindows(self): - # These cannot run on non-Windows as they require a VS installation to - # correctly handle variable expansion. - if sys.platform.startswith("win"): - writer = ninja.NinjaWriter( - "foo", "wee", ".", ".", "build.ninja", ".", "build.ninja", "win" - ) - spec = {"target_name": "wee"} - self.assertTrue( - writer.ComputeOutputFileName(spec, "executable").endswith(".exe") - ) - self.assertTrue( - writer.ComputeOutputFileName(spec, "shared_library").endswith(".dll") - ) - self.assertTrue( - writer.ComputeOutputFileName(spec, "static_library").endswith(".lib") - ) + writer = ninja.NinjaWriter( + "foo", "wee", ".", ".", "build.ninja", ".", "build.ninja", "win" + ) + spec = {"target_name": "wee"} + for key, ext in { + "executable": ".exe", + "shared_library": ".dll", + "static_library": ".lib", + }.items(): + self.assertTrue(writer.ComputeOutputFileName(spec, key).endswith(ext)) def test_BinaryNamesLinux(self): writer = ninja.NinjaWriter( diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py index 3710178e110ae5..4c38f0586c4c28 100755 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py @@ -545,7 +545,7 @@ def _FindProvisioningProfile(self, profile, bundle_identifier): # If the user has multiple provisioning profiles installed that can be # used for ${bundle_identifier}, pick the most specific one (ie. the # provisioning profile whose pattern is the longest). - selected_key = max(valid_provisioning_profiles, key=lambda v: len(v)) + selected_key = max(valid_provisioning_profiles, key=len) return valid_provisioning_profiles[selected_key] def _LoadProvisioningProfile(self, profile_path): diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py index 7c461a8fdf72d8..f1c1581981e3dd 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py @@ -1174,7 +1174,7 @@ def GenerateEnvironmentFiles( meet your requirement (e.g. for custom toolchains), you can pass "-G ninja_use_custom_environment_files" to the gyp to suppress file generation and use custom environment files prepared by yourself.""" - archs = ("x86", "x64") + archs = ("x86", "x64", "arm64") if generator_flags.get("ninja_use_custom_environment_files", 0): cl_paths = {} for arch in archs: diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py index 8b026642fc5ef0..2b9100f3e1ba80 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py @@ -24,8 +24,8 @@ def deepcopy(x): return _deepcopy_dispatch[type(x)](x) except KeyError: raise Error( - "Unsupported type %s for deepcopy. Use copy.deepcopy " - + "or expand simple_copy support." % type(x) + f"Unsupported type {type(x)} for deepcopy. Use copy.deepcopy " + + "or expand simple_copy support." ) diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py b/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py index 43f5c5b30df979..38fa645b4c950b 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py @@ -21,27 +21,10 @@ from . import requirements, specifiers, utils, version as version_module T = typing.TypeVar("T") -if sys.version_info[:2] >= (3, 8): # pragma: no cover - from typing import Literal, TypedDict -else: # pragma: no cover - if typing.TYPE_CHECKING: - from typing_extensions import Literal, TypedDict - else: - try: - from typing_extensions import Literal, TypedDict - except ImportError: - - class Literal: - def __init_subclass__(*_args, **_kwargs): - pass - - class TypedDict: - def __init_subclass__(*_args, **_kwargs): - pass - +from typing import Literal, TypedDict try: - ExceptionGroup + ExceptionGroup # Added in Python 3.11+ except NameError: # pragma: no cover class ExceptionGroup(Exception): # noqa: N818 @@ -504,7 +487,7 @@ def __set_name__(self, _owner: "Metadata", name: str) -> None: self.raw_name = _RAW_TO_EMAIL_MAPPING[name] def __get__(self, instance: "Metadata", _owner: Type["Metadata"]) -> T: - # With Python 3.8, the caching can be replaced with functools.cached_property(). + # With Python 3.8+, the caching can be replaced with functools.cached_property(). # No need to check the cache as attribute lookup will resolve into the # instance's __dict__ before __get__ is called. cache = instance.__dict__ diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py b/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py index 37f33b1ef849ed..f1da2b96d39c1c 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py @@ -127,10 +127,8 @@ def _normalize_string(string: str) -> str: def _abi3_applies(python_version: PythonVersion) -> bool: """ Determine if the Python version supports abi3. - - PEP 384 was first implemented in Python 3.2. """ - return len(python_version) > 1 and tuple(python_version) >= (3, 2) + return len(python_version) > 1 def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: @@ -146,17 +144,7 @@ def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: has_ext = "_d.pyd" in EXTENSION_SUFFIXES if with_debug or (with_debug is None and (has_refcount or has_ext)): debug = "d" - if py_version < (3, 8): - with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) - if with_pymalloc or with_pymalloc is None: - pymalloc = "m" - if py_version < (3, 3): - unicode_size = _get_config_var("Py_UNICODE_SIZE", warn) - if unicode_size == 4 or ( - unicode_size is None and sys.maxunicode == 0x10FFFF - ): - ucs4 = "u" - elif debug: + if debug: # Debug builds can also load "normal" extension modules. # We can also assume no UCS-4 or pymalloc requirement. abis.append(f"cp{version}") diff --git a/deps/npm/node_modules/node-gyp/gyp/pyproject.toml b/deps/npm/node_modules/node-gyp/gyp/pyproject.toml index fa30c8cf96da6f..239bef7844a659 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pyproject.toml +++ b/deps/npm/node_modules/node-gyp/gyp/pyproject.toml @@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta" [project] name = "gyp-next" -version = "0.21.1" +version = "0.22.1" authors = [ { name="Node.js contributors", email="ryzokuken@disroot.org" }, ] description = "A fork of the GYP build system for use in the Node.js projects" readme = "README.md" license = { file="LICENSE" } -requires-python = ">=3.8" +requires-python = ">=3.9" dependencies = ["packaging>=24.0", "setuptools>=69.5.1"] classifiers = [ "Development Status :: 3 - Alpha", @@ -21,10 +21,12 @@ classifiers = [ "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] [project.optional-dependencies] diff --git a/deps/npm/node_modules/node-gyp/lib/download.js b/deps/npm/node_modules/node-gyp/lib/download.js index ed0aa37f441165..a9866d8a63a53e 100644 --- a/deps/npm/node_modules/node-gyp/lib/download.js +++ b/deps/npm/node_modules/node-gyp/lib/download.js @@ -1,4 +1,5 @@ -const fetch = require('make-fetch-happen') +const { Readable } = require('stream') +const { EnvHttpProxyAgent } = require('undici') const { promises: fs } = require('graceful-fs') const log = require('./log') @@ -10,19 +11,65 @@ async function download (gyp, url) { 'User-Agent': `node-gyp v${gyp.version} (node ${process.version})`, Connection: 'keep-alive' }, - proxy: gyp.opts.proxy, - noProxy: gyp.opts.noproxy + dispatcher: await createDispatcher(gyp) } - const cafile = gyp.opts.cafile - if (cafile) { - requestOpts.ca = await readCAFile(cafile) + let res + try { + res = await fetch(url, requestOpts) + } catch (err) { + // Built-in fetch wraps low-level errors in "TypeError: fetch failed" with + // the underlying error on .cause. Callers inspect .code (e.g. ENOTFOUND). + if (err.cause) { + throw err.cause + } + throw err } - const res = await fetch(url, requestOpts) log.http(res.status, res.url) - return res + const body = res.body ? Readable.fromWeb(res.body) : Readable.from([]) + return { + status: res.status, + url: res.url, + body, + text: async () => { + let data = '' + body.setEncoding('utf8') + for await (const chunk of body) { + data += chunk + } + return data + } + } +} + +async function createDispatcher (gyp) { + const env = process.env + const hasProxyEnv = env.http_proxy || env.HTTP_PROXY || env.https_proxy || env.HTTPS_PROXY + if (!gyp.opts.proxy && !gyp.opts.cafile && !hasProxyEnv) { + return undefined + } + + const opts = {} + if (gyp.opts.cafile) { + const ca = await readCAFile(gyp.opts.cafile) + // EnvHttpProxyAgent forwards opts to both its internal Agent (direct) and + // ProxyAgent (proxied). Agent reads TLS config from `connect`; ProxyAgent + // reads it from `requestTls` (origin) / `proxyTls` (proxy). Set all three + // so the custom CA is applied regardless of which path a request takes. + opts.connect = { ca } + opts.requestTls = { ca } + opts.proxyTls = { ca } + } + if (gyp.opts.proxy) { + opts.httpProxy = gyp.opts.proxy + opts.httpsProxy = gyp.opts.proxy + } + if (gyp.opts.noproxy) { + opts.noProxy = gyp.opts.noproxy + } + return new EnvHttpProxyAgent(opts) } async function readCAFile (filename) { diff --git a/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js b/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js index 22fc4013f905f7..efb8b02a59155f 100644 --- a/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js +++ b/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js @@ -247,7 +247,7 @@ class VisualStudioFinder { 'Unrestricted', '-NoProfile', '-Command', - '&{Add-Type -Path \'' + csFile + '\';' + '[VisualStudioConfiguration.Main]::PrintJson()}' + '&{Add-Type -IgnoreWarnings -Path \'' + csFile + '\';' + '[VisualStudioConfiguration.Main]::PrintJson()}' ] this.log.silly('Running', ps, psArgs) diff --git a/deps/npm/node_modules/node-gyp/lib/process-release.js b/deps/npm/node_modules/node-gyp/lib/process-release.js index b92e8d5b833129..75f3fc136a35bd 100644 --- a/deps/npm/node_modules/node-gyp/lib/process-release.js +++ b/deps/npm/node_modules/node-gyp/lib/process-release.js @@ -1,9 +1,6 @@ -/* eslint-disable n/no-deprecated-api */ - 'use strict' const semver = require('semver') -const url = require('url') const path = require('path') const log = require('./log') @@ -74,11 +71,11 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) { } else { distBaseUrl = 'https://nodejs.org/dist' } - distBaseUrl += '/v' + version + '/' + distBaseUrl = new URL(distBaseUrl + '/v' + version + '/') // new style, based on process.release so we have a lot of the data we need if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) { - baseUrl = url.resolve(defaultRelease.headersUrl, './') + baseUrl = new URL('./', defaultRelease.headersUrl) libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major) libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major) libUrlArm64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'arm64', versionSemver.major) @@ -96,28 +93,28 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) { // have a *-headers.tar.gz file in its dist location, even some frankenstein // custom version canGetHeaders = semver.satisfies(versionSemver, headersTarballRange) - tarballUrl = url.resolve(baseUrl, name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz') + tarballUrl = new URL(name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz', baseUrl).href } return { version, semver: versionSemver, name, - baseUrl, + baseUrl: baseUrl.href, tarballUrl, - shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'), + shasumsUrl: new URL('SHASUMS256.txt', baseUrl).href, versionDir: (name !== 'node' ? name + '-' : '') + version, ia32: { - libUrl: libUrl32, - libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl32).pathname)) + libUrl: libUrl32.href, + libPath: normalizePath(path.relative(baseUrl.pathname, libUrl32.pathname)) }, x64: { - libUrl: libUrl64, - libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrl64).pathname)) + libUrl: libUrl64.href, + libPath: normalizePath(path.relative(baseUrl.pathname, libUrl64.pathname)) }, arm64: { - libUrl: libUrlArm64, - libPath: normalizePath(path.relative(new URL(baseUrl).pathname, new URL(libUrlArm64).pathname)) + libUrl: libUrlArm64.href, + libPath: normalizePath(path.relative(baseUrl.pathname, libUrlArm64.pathname)) } } } @@ -127,20 +124,21 @@ function normalizePath (p) { } function resolveLibUrl (name, defaultUrl, arch, versionMajor) { - const base = url.resolve(defaultUrl, './') - const hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl)) + if (!defaultUrl.pathname) defaultUrl = new URL(defaultUrl) + const base = new URL('./', defaultUrl) + const hasLibUrl = bitsre.test(defaultUrl.pathname) || (versionMajor === 3 && bitsreV3.test(defaultUrl.pathname)) if (!hasLibUrl) { // let's assume it's a baseUrl then if (versionMajor >= 1) { - return url.resolve(base, 'win-' + arch + '/' + name + '.lib') + return new URL('win-' + arch + '/' + name + '.lib', base) } // prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/ - return url.resolve(base, (arch === 'x86' ? '' : arch + '/') + name + '.lib') + return new URL((arch === 'x86' ? '' : arch + '/') + name + '.lib', base) } // else we have a proper url to a .lib, just make sure it's the right arch - return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/') + return new URL(defaultUrl.pathname.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/'), defaultUrl) } module.exports = processRelease diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json index f5dcf156decf00..29d95ad41b67e4 100644 --- a/deps/npm/node_modules/node-gyp/package.json +++ b/deps/npm/node_modules/node-gyp/package.json @@ -11,7 +11,7 @@ "bindings", "gyp" ], - "version": "12.2.0", + "version": "12.3.0", "installVersion": 11, "author": "Nathan Rajlich (http://tootallnate.net)", "repository": { @@ -25,12 +25,12 @@ "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.4", "tinyglobby": "^0.2.12", + "undici": "^6.25.0", "which": "^6.0.0" }, "engines": { @@ -42,7 +42,7 @@ "eslint": "^9.39.1", "mocha": "^11.7.5", "nan": "^2.23.1", - "neostandard": "^0.12.2", + "neostandard": "^0.13.0", "require-inject": "^1.4.4" }, "scripts": { diff --git a/deps/npm/node_modules/tar/dist/commonjs/create.js b/deps/npm/node_modules/tar/dist/commonjs/create.js index 3190afc48318f9..5339c93f47ca81 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/create.js +++ b/deps/npm/node_modules/tar/dist/commonjs/create.js @@ -28,7 +28,7 @@ const createFile = (opt, files) => { stream.on('close', res); p.on('error', rej); }); - addFilesAsync(p, files); + addFilesAsync(p, files).catch(er => p.emit('error', er)); return promise; }; const addFilesSync = (p, files) => { @@ -48,8 +48,7 @@ const addFilesSync = (p, files) => { p.end(); }; const addFilesAsync = async (p, files) => { - for (let i = 0; i < files.length; i++) { - const file = String(files[i]); + for (const file of files) { if (file.charAt(0) === '@') { await (0, list_js_1.list)({ file: node_path_1.default.resolve(String(p.cwd), file.slice(1)), @@ -72,7 +71,7 @@ const createSync = (opt, files) => { }; const createAsync = (opt, files) => { const p = new pack_js_1.Pack(opt); - addFilesAsync(p, files); + addFilesAsync(p, files).catch(er => p.emit('error', er)); return p; }; exports.create = (0, make_command_js_1.makeCommand)(createFileSync, createFile, createSync, createAsync, (_opt, files) => { diff --git a/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js b/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js index 94add8f6b2231c..82d7d502aeb83d 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js +++ b/deps/npm/node_modules/tar/dist/commonjs/get-write-flag.js @@ -15,7 +15,7 @@ const fs_1 = __importDefault(require("fs")); const platform = process.env.__FAKE_PLATFORM__ || process.platform; const isWindows = platform === 'win32'; /* c8 ignore start */ -const { O_CREAT, O_TRUNC, O_WRONLY } = fs_1.default.constants; +const { O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = fs_1.default.constants; const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || fs_1.default.constants.UV_FS_O_FILEMAP || 0; @@ -23,7 +23,10 @@ const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP; const fMapLimit = 512 * 1024; const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY; -exports.getWriteFlag = !fMapEnabled ? - () => 'w' - : (size) => (size < fMapLimit ? fMapFlag : 'w'); +const noFollowFlag = !isWindows && typeof O_NOFOLLOW === 'number' ? + O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY + : null; +exports.getWriteFlag = noFollowFlag !== null ? () => noFollowFlag + : !fMapEnabled ? () => 'w' + : (size) => (size < fMapLimit ? fMapFlag : 'w'); //# sourceMappingURL=get-write-flag.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/commonjs/header.js b/deps/npm/node_modules/tar/dist/commonjs/header.js index 12558ed9256234..16fb8120a29004 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/header.js +++ b/deps/npm/node_modules/tar/dist/commonjs/header.js @@ -83,8 +83,7 @@ class Header { this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8); this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8); this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12); - this.mtime = - ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12); + this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12); this.cksum = decNumber(buf, off + 148, 12); // if we have extended or global extended headers, apply them now // See https://github.com/npm/node-tar/pull/187 @@ -110,13 +109,10 @@ class Header { this.size = 0; } this.linkpath = decString(buf, off + 157, 100); - if (buf.subarray(off + 257, off + 265).toString() === - 'ustar\u000000') { + if (buf.subarray(off + 257, off + 265).toString() === 'ustar\u000000') { /* c8 ignore start */ - this.uname = - ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32); - this.gname = - ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32); + this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32); + this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32); this.devmaj = ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0; this.devmin = @@ -133,10 +129,8 @@ class Header { this.path = prefix + '/' + this.path; } /* c8 ignore start */ - this.atime = - ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12); - this.ctime = - ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12); + this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12); + this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12); /* c8 ignore stop */ } } @@ -180,17 +174,12 @@ class Header { const prefix = split[1]; this.needPax = !!split[2]; this.needPax = encString(buf, off, 100, path) || this.needPax; - this.needPax = - encNumber(buf, off + 100, 8, this.mode) || this.needPax; - this.needPax = - encNumber(buf, off + 108, 8, this.uid) || this.needPax; - this.needPax = - encNumber(buf, off + 116, 8, this.gid) || this.needPax; - this.needPax = - encNumber(buf, off + 124, 12, this.size) || this.needPax; - this.needPax = - encDate(buf, off + 136, 12, this.mtime) || this.needPax; - buf[off + 156] = this.#type.charCodeAt(0); + this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax; + this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax; + this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax; + this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax; + this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax; + buf[off + 156] = Number(this.#type.codePointAt(0)); this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax; buf.write('ustar\u000000', off + 257, 8); @@ -205,12 +194,10 @@ class Header { this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax; if (buf[off + 475] !== 0) { - this.needPax = - encString(buf, off + 345, 155, prefix) || this.needPax; + this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax; } else { - this.needPax = - encString(buf, off + 345, 130, prefix) || this.needPax; + this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax; this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax; this.needPax = diff --git a/deps/npm/node_modules/tar/dist/commonjs/index.min.js b/deps/npm/node_modules/tar/dist/commonjs/index.min.js index d7e71f819af1a5..6563e9e669054d 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/index.min.js +++ b/deps/npm/node_modules/tar/dist/commonjs/index.min.js @@ -1,4 +1,4 @@ -"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(C=>{"use strict";var yo=C&&C.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(C,"__esModule",{value:!0});C.Minipass=C.isWritable=C.isReadable=C.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},es=require("node:events"),xr=yo(require("node:stream")),Eo=require("node:string_decoder"),bo=s=>!!s&&typeof s=="object"&&(s instanceof Wt||s instanceof xr.default||(0,C.isReadable)(s)||(0,C.isWritable)(s));C.isStream=bo;var So=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==xr.default.Writable.prototype.pipe;C.isReadable=So;var go=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";C.isWritable=go;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),zt=Symbol("emittingEnd"),ft=Symbol("emittedError"),kt=Symbol("closed"),zr=Symbol("read"),jt=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Ki=Symbol("bufferPush"),xt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Vi=Symbol("error"),$i=Symbol("emitData"),jr=Symbol("emitEnd"),Xi=Symbol("emitEnd2"),J=Symbol("async"),Qi=Symbol("abort"),Ut=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Ro=s=>s(),Oo=s=>s==="end"||s==="finish"||s==="prefinish",vo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,To=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),qt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ji=class extends qt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Do=s=>!!s.objectMode,Po=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Wt=class extends es.EventEmitter{[R]=!1;[dt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[zt]=!1;[kt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[Ut]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Do(t)?(this[N]=!0,this[K]=null):Po(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Eo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Qi]():i.addEventListener("abort",()=>this[Qi]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Qi](){this[Ut]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[Ut]}set aborted(e){}write(e,t,i){if(this[Ut])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Ro;if(!this[N]&&!Buffer.isBuffer(e)){if(To(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(vo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[zr](e||null,this[O][0]);return this[ue](),t}[zr](e,t){if(this[N])this[xt]();else{let i=t;e===i.length||e===null?this[xt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[R]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[jt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[dt]}[Ki](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[xt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[jt](e=!1){do;while(this[kr](this[xt]())&&this[O].length);!e&&!this[O].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new Ji(this,e,t):new qt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Pe]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Oo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[zt]&&!this[_e]&&!this[y]&&this[O].length===0&&this[le]&&(this[zt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[kt]&&this.emit("close"),this[zt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[$i](i)),!0):this[$i](i);if(e==="end")return this[jr]();if(e==="close"){if(this[kt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit(Vi,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[$i](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[jr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Xi]()),!0):this[Xi]())}[Xi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off(Vi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Vi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[kt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return C.isStream}};C.Minipass=Wt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var No=Ur(require("events")),B=Ur(require("fs")),Mo=We(),Lo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),ts=Symbol("_finished"),fe=Symbol("_flags"),is=Symbol("_flush"),os=Symbol("_handleChunk"),as=Symbol("_makeBuf"),yt=Symbol("_mode"),Ht=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ss=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),rs=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),ns=Symbol("_size"),Zt=Symbol("_write"),Ne=Symbol("_writing"),Gt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Yt=class extends Mo.Minipass{[Me]=!1;[p];[V];[rs];[ce]=!1;[ns];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[rs]=t.readSize||16*1024*1024,this[ce]=!1,this[ns]=typeof t.size=="number"?t.size:1/0,this[wt]=this[ns],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[as](){return Buffer.allocUnsafe(Math.min(this[rs],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[as]();if(e.length===0)return process.nextTick(()=>this[ss](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ss](t,i,r))}}[ss](e,t,i){this[ce]=!1,e?this[Ge](e):this[os](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[os](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Gt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[is]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Ht]=!0,!1):(this[Ne]=!0,this[Zt](e),!0)}[Zt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[is]():(this[Ne]=!1,this[_t]&&!this[ts]?(this[ts]=!0,this[$](),this.emit("finish")):this[Ht]&&(this[Ht]=!1,this.emit("drain"))))}[is](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Zt](this[ee].pop());else{let e=this[ee];this[ee]=[],Lo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Kt;var ls=class extends Kt{[Ee](){let e;if(this[Gt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Zt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=ls});var Vt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Ao=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Io=s=>!!s.sync&&!!s.file;b.isSyncFile=Io;var Co=s=>!s.sync&&!!s.file;b.isAsyncFile=Co;var Fo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Fo;var Bo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Bo;var zo=s=>!!s.sync;b.isSync=zo;var ko=s=>!s.sync;b.isAsync=ko;var jo=s=>!!s.file;b.isFile=jo;var xo=s=>!s.file;b.isNoFile=xo;var Uo=s=>{let e=Ao.get(s);return e||s},qo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Uo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=qo});var Ve=d($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.makeCommand=void 0;var Et=Vt(),Wo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o?o=Array.from(o):o=[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o),u=a||void 0;return u?l.then(()=>u(),u):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});$t.makeCommand=Wo});var us=d($e=>{"use strict";var Ho=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Zo=Ho(require("zlib")),Go=Zo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Go))});var vs=d(f=>{"use strict";var Yo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ko=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vo=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,cs=Wr?.writable===!0||Wr?.set!==void 0?s=>{Le.Buffer.concat=s?ea:Jo}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var fs=Symbol("flushFlag"),bt=class extends Xo.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ds.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[fs]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ds.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},cs(!0);let a;try{let l=typeof e[fs]=="number"?e[fs]:this.#s;a=this.#t._processChunk(e,l),cs(!1)}catch(l){cs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ms=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ms;var ps=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ps;var _s=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=_s;var ws=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ws;var ys=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=ys;var Es=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=bs;var Xt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Ss=class extends Xt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Ss;var gs=class extends Xt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=gs;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Qt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var Os=class extends Qt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Os});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ta=(s,e)=>{if(Number.isSafeInteger(s))s<0?sa(s,e):ia(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ta;var ia=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},sa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ra=s=>{let e=s[0],t=e===128?oa(s.subarray(1,s.length)):e===255?na(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ra;var na=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},oa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ts=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var aa=s=>j.name.has(s);j.isCode=aa;var ha=s=>j.code.has(s);j.isName=ha;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var la=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ua=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Ce(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ds(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Ce(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Ce(e,t+265,32),this.gname=i?.gname??r?.gname??Ce(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Ce(e,t+345,155);this.path=a+"/"+this.path}else{let a=Ce(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ds(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ds(e,t+488,12)}let o=256;for(let a=t;a!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=ca(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Fe(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ps(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Fe(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Fe(e,t+265,32,this.uname)||this.needPax,this.needPax=Fe(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Fe(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Fe(e,t+345,155,o)||this.needPax:(this.needPax=Fe(e,t+345,130,o)||this.needPax,this.needPax=Ps(e,t+476,12,this.atime)||this.needPax,this.needPax=Ps(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ds=(s,e,t)=>fa(be(s,e,t)),fa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ma(s,e,t),da=s=>isNaN(s)?void 0:s,ma=(s,e,t)=>da(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),pa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>pa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(_a(s,e,t,i),!1),_a=(s,e,t,i)=>s.write(wa(i,t),e,t,"ascii"),wa=(s,e)=>ya(Math.floor(s).toString(8),e),ya=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ps=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ea=new Array(156).join("\0"),Fe=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ea,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ei=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Pax=void 0;var ba=require("node:path"),Sa=Je(),Ms=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Sa.Header({path:("PaxHeader/"+(0,ba.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(ga(Ra(e),t),i)}};Jt.Pax=Ms;var ga=(s,e)=>e?Object.assign({},e,s):s,Ra=s=>s.replace(/\n$/,"").split(` -`).reduce(Oa,Object.create(null)),Oa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.normalizeWindowsPath=void 0;var va=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ti.normalizeWindowsPath=va!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/")});var ri=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.ReadEntry=void 0;var Ta=We(),ii=et(),Ls=class extends Ta.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ii.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ii.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ii.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ii.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};si.ReadEntry=Ls});var oi=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.warnMethod=void 0;var Da=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ni.warnMethod=Da});var mi=d(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.Parser=void 0;var Pa=require("events"),As=vs(),Vr=Je(),$r=ei(),Na=ri(),Ma=oi(),La=1024*1024,zs=Buffer.from([31,139]),ks=Buffer.from([40,181,47,253]),Aa=Math.max(zs.length,ks.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Is=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Re=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),ai=Symbol("consumeChunk"),hi=Symbol("consumeChunkSub"),Fs=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Rt=Symbol("consuming"),Bs=Symbol("bufferConcat"),li=Symbol("maybeEnd"),tt=Symbol("writing"),Oe=Symbol("aborted"),ui=Symbol("onDone"),ke=Symbol("sawValidEntry"),ci=Symbol("sawNullBlock"),fi=Symbol("sawEOF"),tn=Symbol("closeStream"),Ia=()=>!0,js=class extends Pa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Re]=!1;[S];[Oe]=!1;[ke];[ci]=!1;[fi]=!1;[tt]=!1;[Rt]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ui,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ui,e.ondone):this.on(ui,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||La,this.filter=typeof e.filter=="function"?e.filter:Ia;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ma.warnMethod)(this,e,t,i)}[en](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[ci]?(this[fi]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[ci]=!0,this[ze]("nullBlock"));else if(this[ci]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Na.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Is]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Is]()),t=!1);return t}[Is](){do;while(this[Xr](this[me].shift()));if(!this[me].length){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Fs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Jr](e,t){let i=this[Be],r=this[Fs](e,t);return!this[Be]&&i&&this[Qr](i),r}[ze](e,t,i){!this[me].length&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Oe]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Oe])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.lengththis[ai](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Re]=!0,this[ai]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[ai](e),this[tt]=!1;let n=this[me].length?!1:this[de]?this[de].flowing:!0;return!n&&!this[me].length&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[Bs](e){e&&!this[Oe]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[li](){if(this[Re]&&!this[Cs]&&!this[Oe]&&!this[Rt]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ui)}}[ai](e){if(this[Rt]&&e)this[Bs](e);else if(!e&&!this[_])this[li]();else if(e){if(this[Rt]=!0,this[_]){this[Bs](e);let t=this[_];this[_]=void 0,this[hi](t)}else this[hi](e);for(;this[_]&&this[_]?.length>=512&&!this[Oe]&&!this[fi];){let t=this[_];this[_]=void 0,this[hi](t)}this[Rt]=!1}(!this[_]||this[Re])&&this[li]()}[hi](e){let t=0,i=e.length;for(;t+512<=i&&!this[Oe]&&!this[fi];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[Fs](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.stripTrailingSlashes=void 0;var Ca=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};pi.stripTrailingSlashes=Ca});var st=d(F=>{"use strict";var Fa=F&&F.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ba=F&&F.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),za=F&&F.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},qa=(s,e)=>{let t=new Map(e.map(n=>[(0,xs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,sn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);l!==void 0?h=l:h=r((0,sn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,xs.stripTrailingSlashes)(n)):n=>r((0,xs.stripTrailingSlashes)(n))};F.filesFilter=qa;var Wa=s=>{let e=new wi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new wi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ja.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};F.list=(0,xa.makeCommand)(Wa,Ha,s=>new wi.Parser(s),s=>new wi.Parser(s),(s,e)=>{e?.length&&(0,F.filesFilter)(s,e),s.noResume||Ua(s)})});var rn=d(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.modeFix=void 0;var Za=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);yi.modeFix=Za});var Us=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.stripAbsolutePath=void 0;var Ga=require("node:path"),{isAbsolute:Ya,parse:nn}=Ga.win32,Ka=s=>{let e="",t=nn(s);for(;Ya(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};Ei.stripAbsolutePath=Ka});var Ws=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var bi=["|","<",">","?",":"],qs=bi.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Va=new Map(bi.map((s,e)=>[s,qs[e]])),$a=new Map(qs.map((s,e)=>[s,bi[e]])),Xa=s=>bi.reduce((e,t)=>e.split(t).join(Va.get(t)),s);rt.encode=Xa;var Qa=s=>qs.reduce((e,t)=>e.split(t).join($a.get(t)),s);rt.decode=Qa});var er=d(M=>{"use strict";var Ja=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),eh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),th=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ih.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),rh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Zs=Symbol("symlink"),un=Symbol("hardlink"),Ot=Symbol("header"),Si=Symbol("read"),Gs=Symbol("lstat"),gi=Symbol("onlstat"),Ys=Symbol("onread"),Ks=Symbol("onreadlink"),Vs=Symbol("openfile"),$s=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Xs=Symbol("awaitDrain"),Hs=Symbol("ondrain"),ae=Symbol("prefix"),Oi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||rh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,wn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=sh.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[gi](n):this[Gs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Gs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[gi](t)})}[gi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=nh(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Zs]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Ot](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ot](),this.end()}[Zs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Ks](t)})}[Ks](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Ot](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Ot](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Ot](),this.stat.size===0)return this.end();this[Vs]()}[Vs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[$s](t)})}[$s](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Si]()}[Si](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ys](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ys](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Hs]())}[Xs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Si]()}};M.WriteEntry=Oi;var Qs=class extends Oi{sync=!0;[Gs](){this[gi](oe.default.lstatSync(this.absolute))}[Zs](){this[Ks](oe.default.readlinkSync(this.absolute))}[Vs](){this[$s](oe.default.openSync(this.absolute,"r"))}[Si](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ys](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Xs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Qs;var Js=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,wn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=Js;var nh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var tr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var lh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ch=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ir.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ir.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ir.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[or]()),this.on("resume",()=>t.resume())}else this.on("drain",this[or]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new dh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof mh.ReadEntry?this[gn](e):this[Ti](e),this.flowing}[gn](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new hr.WriteEntryTar(e,this[nr](i)),i.entry.on("end",()=>this[rr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Ti](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[lr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Mi.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[vi](e,r)})}[vi](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[sr](e):e.ignore=!0,this[xe]()}[ur](e){e.pending=!0,this[Q]+=1,Mi.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Di](e,i)})}[Di](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Rn](e){this[Q]+=1;try{return new this[Ni](e.path,this[nr](e)).on("end",()=>this[rr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[or](){this[je]&&this[je].entry&&this[je].entry.resume()}[Pi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,ph.warnMethod)(this,e,t,i)}};L.Pack=Li;var cr=class extends Li{sync=!0;constructor(e){super(e),this[Ni]=hr.WriteEntrySync}pause(){}resume(){}[lr](e){let t=this.follow?"statSync":"lstatSync";this[vi](e,Mi.default[t](e.absolute))}[ur](e){this[Di](e,Mi.default.readdirSync(e.absolute))}[Pi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=cr});var fr=d(at=>{"use strict";var _h=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Dn=Ke(),Pn=_h(require("node:path")),Nn=st(),wh=Ve(),Ii=Ai(),yh=(s,e)=>{let t=new Ii.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Eh=(s,e)=>{let t=new Ii.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t=0;t{s.add(r)}}):s.add(i)}s.end()},bh=(s,e)=>{let t=new Ii.PackSync(s);return Mn(t,e),t},Sh=(s,e)=>{let t=new Ii.Pack(s);return Ln(t,e),t};at.create=(0,wh.makeCommand)(yh,Eh,bh,Sh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Cn=d(ht=>{"use strict";var gh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var An=gh(require("fs")),Rh=process.env.__FAKE_PLATFORM__||process.platform,Oh=Rh==="win32",{O_CREAT:vh,O_TRUNC:Th,O_WRONLY:Dh}=An.default.constants,In=Number(process.env.__FAKE_FS_O_FILENAME__)||An.default.constants.UV_FS_O_FILEMAP||0,Ph=Oh&&!!In,Nh=512*1024,Mh=In|Th|vh|Dh;ht.getWriteFlag=Ph?s=>s"w"});var Bn=d(he=>{"use strict";var Fn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Fi=Fn(require("node:fs")),Pt=Fn(require("node:path")),dr=(s,e,t)=>{try{return Fi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Fi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Lh=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ah=(s,e,t,i)=>{Fi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Lh(s,l,e,t,h)})};he.chownr=Ah;var Ih=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),dr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Fi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return dr(s,e,t);throw n}for(let r of i)Ih(s,r,e,t);return dr(s,e,t)};he.chownrSync=Ch});var zn=d(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.CwdError=void 0;var mr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};Bi.CwdError=mr});var _r=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.SymlinkError=void 0;var pr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};zi.SymlinkError=pr});var qn=d(Te=>{"use strict";var yr=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var kn=Bn(),x=yr(require("node:fs")),Fh=yr(require("node:fs/promises")),ki=yr(require("node:path")),jn=zn(),pe=et(),xn=_r(),Bh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new jn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},zh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,kn.chownr)(P,o,a,Cr=>E(Cr)):n?x.default.chmod(s,r,t):t()};if(s===c)return Bh(s,E);if(l)return Fh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ki.default.relative(c,s)).split("/");wr(c,A,r,u,c,void 0,E)};Te.mkdir=zh;var wr=(s,e,t,i,r,n,o)=>{if(!e.length)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ki.default.resolve(s+"/"+a));x.default.mkdir(h,t,Un(h,e,t,i,r,n,o))},Un=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())wr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Un(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new xn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,wr(s,e,t,i,r,n,o))},kh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new jn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,kn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return kh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ki.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ki.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let Fr=x.default.lstatSync(P);if(Fr.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(Fr.isSymbolicLink())return new xn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=jh});var Hn=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.normalizeUnicode=void 0;var Er=Object.create(null),Wn=1e4,lt=new Set,xh=s=>{lt.has(s)?lt.delete(s):Er[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=Er[s],t=lt.size-Wn;if(t>Wn/10){for(let i of lt)if(lt.delete(i),delete Er[i],--t<=0)break}return e};ji.normalizeUnicode=xh});var Gn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.PathReservations=void 0;var Zn=require("node:path"),Uh=Hn(),qh=_i(),Wh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hh=Wh==="win32",Zh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t[t.length-1];return r!==void 0&&(i=(0,Zn.join)(r,i)),t.push(i||"/"),t},[]),br=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Hh?["win32 parallelization disabled"]:e.map(r=>(0,qh.stripTrailingSlashes)((0,Zn.join)((0,Uh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Zh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n[n.length-1];o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};xi.PathReservations=br});var Yn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.umask=void 0;var Gh=()=>process.umask();Ui.umask=Gh});var Lr=d(z=>{"use strict";var Yh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Kh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),so=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!Ft)return m.default.unlink(s,e);let t=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},rl=s=>{if(!Ft)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},io=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Hi=class extends Xh.Parser{[gr]=!1;[Ct]=!1;[qi]=0;reservations=new Jh.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[gr]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:il,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ft,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,el.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Vn](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[gr]&&this[qi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Sr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,Qh.stripAbsolutePath)(i),a=o.replace(/\\/g,"/").split("/");if(a.includes("..")||Ft&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;{let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[eo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Sr](e,"path")||!this[Sr](e,"linkpath"))return!1;if(g.default.isAbsolute(e.path)?e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Kn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Kn.encode(e.path.slice(n.length))}return!0}[Vn](e){if(!this[eo](e))return e.resume();switch($h.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Or](e);default:return this[Jn](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,oo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return io(this.uid,e.uid,this.processUid)}[It](e){return io(this.gid,e.gid,this.processGid)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new Vh.WriteStream(String(e.absolute),{flags:(0,no.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[Jn](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Wi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[Qn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Wi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new ao.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[to](){this[qi]++}[ut](){this[qi]--,this[Rr]()}[Pr](e){this[ut](),e.resume()}[vr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ft}[Or](e){this[to]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[$n](e,i))}[$n](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Pr](e),i();return}if(a||this[vr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);sl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Tr](t,i);case"Link":return this[Qn](t,i);case"SymbolicLink":return this[Xn](t,i);case"Directory":case"GNUDumpDir":return this[Dr](t,i)}}[Wi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Hi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Nr=class extends Hi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Or](e){if(!this[Ct]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Pr](e);if(t||this[vr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>rl(String(e.absolute)));this[Z](r,e)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,no.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,oo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||!i.length)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new ao.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Wi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Nr});var Ar=d(G=>{"use strict";var nl=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ol=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),al=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Zi.UnpackSync(s),t=s.file,i=lo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new ho.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},fl=(s,e)=>{let t=new Zi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),lo.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ho.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};G.extract=(0,ul.makeCommand)(cl,fl,s=>new Zi.UnpackSync(s),s=>new Zi.Unpack(s),(s,e)=>{e?.length&&(0,ll.filesFilter)(s,e)})});var Gi=d(ct=>{"use strict";var uo=ct&&ct.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ct,"__esModule",{value:!0});ct.replace=void 0;var co=Ke(),q=uo(require("node:fs")),fo=uo(require("node:path")),mo=Je(),po=st(),dl=Ve(),ml=Vt(),_o=Ai(),pl=(s,e)=>{let t=new _o.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,_l(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},_l=(s,e,t,i,r)=>{let n=new co.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),yl(e,r)},wl=(s,e)=>{e=Array.from(e);let t=new _o.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||typeof A>"u")return h(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return h(new Error("cannot append to compressed archives"));if(u<512)return h(null,l);let w=new mo.Header(c);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,u)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new co.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),El(t,e)})})};q.default.open(s.file,a,h)})},yl=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,po.list)({file:fo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},El=async(s,e)=>{for(let t=0;ts.add(r)}):s.add(i)}s.end()};ct.replace=(0,dl.makeCommand)(pl,wl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,ml.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Ir=d(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.update=void 0;var bl=Ve(),Bt=Gi();Yi.update=(0,bl.makeCommand)(Bt.replace.syncFile,Bt.replace.asyncFile,Bt.replace.syncNoFile,Bt.replace.asyncNoFile,(s,e=[])=>{Bt.replace.validate?.(s,e),Sl(s)});var Sl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var wo=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),gl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&wo(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(F=>{"use strict";var Oo=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.Minipass=F.isWritable=F.isReadable=F.isStream=void 0;var Cr=typeof process=="object"&&process?process:{stdout:null,stderr:null},ts=require("node:events"),jr=Oo(require("node:stream")),Ro=require("node:string_decoder"),vo=s=>!!s&&typeof s=="object"&&(s instanceof Ht||s instanceof jr.default||(0,F.isReadable)(s)||(0,F.isWritable)(s));F.isStream=vo;var To=s=>!!s&&typeof s=="object"&&s instanceof ts.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==jr.default.Writable.prototype.pipe;F.isReadable=To;var Do=s=>!!s&&typeof s=="object"&&s instanceof ts.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";F.isWritable=Do;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),kt=Symbol("emittingEnd"),ft=Symbol("emittedError"),jt=Symbol("closed"),Br=Symbol("read"),xt=Symbol("flush"),zr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),O=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),R=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Vi=Symbol("bufferPush"),Ut=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),$i=Symbol("error"),Xi=Symbol("emitData"),kr=Symbol("emitEnd"),Qi=Symbol("emitEnd2"),J=Symbol("async"),Ji=Symbol("abort"),qt=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Po=s=>s(),No=s=>s==="end"||s==="finish"||s==="prefinish",Mo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Lo=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Wt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},es=class extends Wt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Ao=s=>!!s.objectMode,Io=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Ht=class extends ts.EventEmitter{[O]=!1;[dt]=!1;[I]=[];[R]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[kt]=!1;[jt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[qt]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Ao(t)?(this[N]=!0,this[K]=null):Io(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Ro.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[R]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Ji]():i.addEventListener("abort",()=>this[Ji]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Ji](){this[qt]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[qt]}set aborted(e){}write(e,t,i){if(this[qt])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Po;if(!this[N]&&!Buffer.isBuffer(e)){if(Lo(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Mo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[O]&&this[v]!==0&&this[xt](!0),this[O]?this.emit("data",e):this[Vi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[O]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[O]&&this[v]!==0&&this[xt](!0),this[O]?this.emit("data",e):this[Vi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[O]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[O])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[R].length>1&&!this[N]&&(this[R]=[this[K]?this[R].join(""):Buffer.concat(this[R],this[v])]);let t=this[Br](e||null,this[R][0]);return this[ue](),t}[Br](e,t){if(this[N])this[Ut]();else{let i=t;e===i.length||e===null?this[Ut]():typeof i=="string"?(this[R][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[R][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[R].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[O]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[O]=!0,this.emit("resume"),this[R].length?this[xt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[O]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[O]}get paused(){return this[dt]}[Vi](e){this[N]?this[v]+=1:this[v]+=e.length,this[R].push(e)}[Ut](){return this[N]?this[v]-=1:this[v]-=this[R][0].length,this[R].shift()}[xt](e=!1){do;while(this[zr](this[Ut]())&&this[R].length);!e&&!this[R].length&&!this[le]&&this.emit("drain")}[zr](e){return this.emit("data",e),this[O]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Cr.stdout||e===Cr.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new es(this,e,t):new Wt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[O]&&this[Pe]===0&&(this[O]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[O]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(No(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[O]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[O]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[kt]&&!this[_e]&&!this[y]&&this[R].length===0&&this[le]&&(this[kt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jt]&&this.emit("close"),this[kt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[Xi](i)),!0):this[Xi](i);if(e==="end")return this[kr]();if(e==="close"){if(this[jt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit($i,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[Xi](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[kr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Qi]()),!0):this[Qi]())}[Qi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off($i,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once($i,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[R].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[jt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return F.isStream}};F.Minipass=Ht});var Ke=d(W=>{"use strict";var xr=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var Fo=xr(require("events")),B=xr(require("fs")),Co=We(),Bo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),is=Symbol("_finished"),fe=Symbol("_flags"),ss=Symbol("_flush"),as=Symbol("_handleChunk"),hs=Symbol("_makeBuf"),yt=Symbol("_mode"),Zt=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),rs=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),ns=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),os=Symbol("_size"),Gt=Symbol("_write"),Ne=Symbol("_writing"),Yt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Kt=class extends Co.Minipass{[Me]=!1;[p];[V];[ns];[ce]=!1;[os];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[ns]=t.readSize||16*1024*1024,this[ce]=!1,this[os]=typeof t.size=="number"?t.size:1/0,this[wt]=this[os],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[hs](){return Buffer.allocUnsafe(Math.min(this[ns],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[hs]();if(e.length===0)return process.nextTick(()=>this[rs](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[rs](t,i,r))}}[rs](e,t,i){this[ce]=!1,e?this[Ge](e):this[as](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[as](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Yt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[ss]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Zt]=!0,!1):(this[Ne]=!0,this[Gt](e),!0)}[Gt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[ss]():(this[Ne]=!1,this[_t]&&!this[is]?(this[is]=!0,this[$](),this.emit("finish")):this[Zt]&&(this[Zt]=!1,this.emit("drain"))))}[ss](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Gt](this[ee].pop());else{let e=this[ee];this[ee]=[],Bo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Vt;var us=class extends Vt{[Ee](){let e;if(this[Yt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Gt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=us});var $t=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var zo=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),ko=s=>!!s.sync&&!!s.file;b.isSyncFile=ko;var jo=s=>!s.sync&&!!s.file;b.isAsyncFile=jo;var xo=s=>!!s.sync&&!s.file;b.isSyncNoFile=xo;var Uo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Uo;var qo=s=>!!s.sync;b.isSync=qo;var Wo=s=>!s.sync;b.isAsync=Wo;var Ho=s=>!!s.file;b.isFile=Ho;var Zo=s=>!s.file;b.isNoFile=Zo;var Go=s=>{let e=zo.get(s);return e||s},Yo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Go(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=Yo});var Ve=d(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.makeCommand=void 0;var Et=$t(),Ko=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o=o?Array.from(o):[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o);return a?l.then(()=>a(),a):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});Xt.makeCommand=Ko});var cs=d($e=>{"use strict";var Vo=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var $o=Vo(require("zlib")),Xo=$o.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Xo))});var Ts=d(f=>{"use strict";var Qo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Jo=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ea=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,fs=qr?.writable===!0||qr?.set!==void 0?s=>{Le.Buffer.concat=s?na:ra}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var ds=Symbol("flushFlag"),bt=class extends ia.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof Ur[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new Ur[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ms.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[ds]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ms.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},fs(!0);let a;try{let l=typeof e[ds]=="number"?e[ds]:this.#s;a=this.#t._processChunk(e,l),fs(!1)}catch(l){fs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ps=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ps;var _s=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=_s;var ws=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=ws;var ys=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ys;var Es=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=bs;var Ss=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=Ss;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},gs=class extends Qt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=gs;var Os=class extends Qt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=Os;var Jt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Jt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var vs=class extends Jt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=vs});var Zr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var oa=(s,e)=>{if(Number.isSafeInteger(s))s<0?ha(s,e):aa(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=oa;var aa=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},ha=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Wr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Hr(r))}},la=s=>{let e=s[0],t=e===128?ca(s.subarray(1,s.length)):e===255?ua(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=la;var ua=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Wr(n):n===0?o=n:(i=!0,o=Hr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},ca=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Wr=s=>(255^s)&255,Hr=s=>(255^s)+1&255});var Ds=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var fa=s=>j.name.has(s);j.isCode=fa;var da=s=>j.code.has(s);j.isName=da;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var ma=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),pa=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Gr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Fe(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ps(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Fe(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Fe(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Fe(e,t+265,32),this.gname=i?.gname??r?.gname??Fe(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Fe(e,t+345,155);this.path=a+"/"+this.path}else{let a=Fe(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ps(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ps(e,t+488,12)}let o=256;for(let a=t;a!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=_a(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Ce(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ns(e,t+136,12,this.mtime)||this.needPax,e[t+156]=Number(this.#e.codePointAt(0)),this.needPax=Ce(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Ce(e,t+265,32,this.uname)||this.needPax,this.needPax=Ce(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Ce(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Ce(e,t+345,155,o)||this.needPax:(this.needPax=Ce(e,t+345,130,o)||this.needPax,this.needPax=Ns(e,t+476,12,this.atime)||this.needPax,this.needPax=Ns(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Fe=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ps=(s,e,t)=>wa(be(s,e,t)),wa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Yr.parse(s.subarray(e,e+t)):Ea(s,e,t),ya=s=>isNaN(s)?void 0:s,Ea=(s,e,t)=>ya(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),ba={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>ba[t]||i<0?(Yr.encode(i,s.subarray(e,e+t)),!0):(Sa(s,e,t,i),!1),Sa=(s,e,t,i)=>s.write(ga(i,t),e,t,"ascii"),ga=(s,e)=>Oa(Math.floor(s).toString(8),e),Oa=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ns=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ra=new Array(156).join("\0"),Ce=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ra,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ti=d(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.Pax=void 0;var va=require("node:path"),Ta=Je(),Ls=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Ta.Header({path:("PaxHeader/"+(0,va.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(Da(Pa(e),t),i)}};ei.Pax=Ls;var Da=(s,e)=>e?Object.assign({},e,s):s,Pa=s=>s.replace(/\n$/,"").split(` +`).reduce(Na,Object.create(null)),Na=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ii=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});ii.normalizeWindowsPath=void 0;var Ma=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ii.normalizeWindowsPath=Ma!=="win32"?s=>s:s=>s&&s.replaceAll(/\\/g,"/")});var ni=d(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.ReadEntry=void 0;var La=We(),si=et(),As=class extends La.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,si.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,si.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,si.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,si.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};ri.ReadEntry=As});var ai=d(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.warnMethod=void 0;var Aa=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};oi.warnMethod=Aa});var pi=d(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.Parser=void 0;var Ia=require("events"),Is=Ts(),Kr=Je(),Vr=ti(),Fa=ni(),Ca=ai(),Ba=1024*1024,ks=Buffer.from([31,139]),js=Buffer.from([40,181,47,253]),za=Math.max(ks.length,js.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Fs=Symbol("nextEntry"),$r=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Xr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Oe=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),hi=Symbol("consumeChunk"),li=Symbol("consumeChunkSub"),Bs=Symbol("consumeBody"),Qr=Symbol("consumeMeta"),Jr=Symbol("consumeHeader"),Ot=Symbol("consuming"),zs=Symbol("bufferConcat"),ui=Symbol("maybeEnd"),tt=Symbol("writing"),Re=Symbol("aborted"),ci=Symbol("onDone"),ke=Symbol("sawValidEntry"),fi=Symbol("sawNullBlock"),di=Symbol("sawEOF"),en=Symbol("closeStream"),ka=()=>!0,xs=class extends Ia.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Oe]=!1;[S];[Re]=!1;[ke];[fi]=!1;[di]=!1;[tt]=!1;[Ot]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ci,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ci,e.ondone):this.on(ci,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Ba,this.filter=typeof e.filter=="function"?e.filter:ka;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[en]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ca.warnMethod)(this,e,t,i)}[Jr](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Kr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[fi]?(this[di]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[fi]=!0,this[ze]("nullBlock"));else if(this[fi]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Fa.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Fs]())))}}}[en](){queueMicrotask(()=>this.emit("close"))}[$r](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Fs]()),t=!1);return t}[Fs](){do;while(this[$r](this[me].shift()));if(this[me].length===0){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Bs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Qr](e,t){let i=this[Be],r=this[Bs](e,t);return!this[Be]&&i&&this[Xr](i),r}[ze](e,t,i){this[me].length===0&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Xr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=Vr.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=Vr.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Re]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Re])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.lengththis[hi](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Oe]=!0,this[hi]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[hi](e),this[tt]=!1;let n=this[me].length>0?!1:this[de]?this[de].flowing:!0;return!n&&this[me].length===0&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[zs](e){e&&!this[Re]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[ui](){if(this[Oe]&&!this[Cs]&&!this[Re]&&!this[Ot]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ci)}}[hi](e){if(this[Ot]&&e)this[zs](e);else if(!e&&!this[_])this[ui]();else if(e){if(this[Ot]=!0,this[_]){this[zs](e);let t=this[_];this[_]=void 0,this[li](t)}else this[li](e);for(;this[_]&&this[_]?.length>=512&&!this[Re]&&!this[di];){let t=this[_];this[_]=void 0,this[li](t)}this[Ot]=!1}(!this[_]||this[Oe])&&this[ui]()}[li](e){let t=0,i=e.length;for(;t+512<=i&&!this[Re]&&!this[di];)switch(this[H]){case"begin":case"header":this[Jr](e,t),t+=512;break;case"ignore":case"body":t+=this[Bs](e,t);break;case"meta":t+=this[Qr](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.stripTrailingSlashes=void 0;var ja=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};_i.stripTrailingSlashes=ja});var st=d(C=>{"use strict";var xa=C&&C.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ua=C&&C.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),qa=C&&C.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},Ya=(s,e)=>{let t=new Map(e.map(n=>[(0,Us.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,tn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);h=l!==void 0?l:r((0,tn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,Us.stripTrailingSlashes)(n)):n=>r((0,Us.stripTrailingSlashes)(n))};C.filesFilter=Ya;var Ka=s=>{let e=new yi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new yi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new Ha.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};C.list=(0,Za.makeCommand)(Ka,Va,s=>new yi.Parser(s),s=>new yi.Parser(s),(s,e)=>{e?.length&&(0,C.filesFilter)(s,e),s.noResume||Ga(s)})});var sn=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.modeFix=void 0;var $a=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);Ei.modeFix=$a});var qs=d(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.stripAbsolutePath=void 0;var Xa=require("node:path"),{isAbsolute:Qa,parse:rn}=Xa.win32,Ja=s=>{let e="",t=rn(s);for(;Qa(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=rn(s)}return[e,s]};bi.stripAbsolutePath=Ja});var Hs=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var Si=["|","<",">","?",":"],Ws=Si.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),eh=new Map(Si.map((s,e)=>[s,Ws[e]])),th=new Map(Ws.map((s,e)=>[s,Si[e]])),ih=s=>Si.reduce((e,t)=>e.split(t).join(eh.get(t)),s);rt.encode=ih;var sh=s=>Ws.reduce((e,t)=>e.split(t).join(th.get(t)),s);rt.decode=sh});var tr=d(M=>{"use strict";var rh=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),nh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),oh=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ah.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),lh=16*1024*1024,on=Symbol("process"),an=Symbol("file"),hn=Symbol("directory"),Gs=Symbol("symlink"),ln=Symbol("hardlink"),Rt=Symbol("header"),gi=Symbol("read"),Ys=Symbol("lstat"),Oi=Symbol("onlstat"),Ks=Symbol("onread"),Vs=Symbol("onreadlink"),$s=Symbol("openfile"),Xs=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Qs=Symbol("awaitDrain"),Zs=Symbol("ondrain"),ae=Symbol("prefix"),vi=class extends cn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,mn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||lh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,_n.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=hh.decode(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||nn.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[Oi](n):this[Ys]()}warn(e,t,i={}){return(0,wn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Ys](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Oi](t)})}[Oi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=uh(e),this.emit("stat",e),this[on]()}[on](){switch(this.type){case"File":return this[an]();case"Directory":return this[hn]();case"SymbolicLink":return this[Gs]();default:return this.end()}}[Ri](e){return(0,dn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return yn(e,this.prefix)}[Rt](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new fn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new pn.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[hn](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Rt](),this.end()}[Gs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Vs](t)})}[Vs](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Rt](),this.end()}[ln](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(nn.default.relative(this.cwd,e)),this.stat.size=0,this[Rt](),this.end()}[an](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[ln](t);this.linkCache.set(e,this.absolute)}if(this[Rt](),this.stat.size===0)return this.end();this[$s]()}[$s](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[Xs](t)})}[Xs](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[gi]()}[gi](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ks](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ks](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Zs]())}[Qs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[gi]()}};M.WriteEntry=vi;var Js=class extends vi{sync=!0;[Ys](){this[Oi](oe.default.lstatSync(this.absolute))}[Gs](){this[Vs](oe.default.readlinkSync(this.absolute))}[$s](){this[Xs](oe.default.openSync(this.absolute,"r"))}[gi](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ks](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Qs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Js;var er=class extends cn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,wn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,mn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,_n.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new fn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new pn.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return yn(e,this.prefix)}[Ri](e){return(0,dn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=er;var uh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var En=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var ir=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var mh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ph=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),_h=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new sr.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new sr.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new sr.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[ar]()),this.on("resume",()=>t.resume())}else this.on("drain",this[ar]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new yh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[vn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof Eh.ReadEntry?this[Sn](e):this[Di](e),this.flowing}[Sn](e){let t=(0,hr.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new lr.WriteEntryTar(e,this[or](i)),i.entry.on("end",()=>this[nr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Di](e){let t=(0,hr.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[ur](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Li.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[Ti](e,r)})}[Ti](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[rr](e):e.ignore=!0,this[xe]()}[cr](e){e.pending=!0,this[Q]+=1,Li.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Pi](e,i)})}[Pi](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[gn](e){this[Q]+=1;try{return new this[Mi](e.path,this[or](e)).on("end",()=>this[nr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[ar](){this[je]&&this[je].entry&&this[je].entry.resume()}[Ni](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Di](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,bh.warnMethod)(this,e,t,i)}};L.Pack=Ai;var fr=class extends Ai{sync=!0;constructor(e){super(e),this[Mi]=lr.WriteEntrySync}pause(){}resume(){}[ur](e){let t=this.follow?"statSync":"lstatSync";this[Ti](e,Li.default[t](e.absolute))}[cr](e){this[Pi](e,Li.default.readdirSync(e.absolute))}[Ni](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Di](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[vn](r)})}};L.PackSync=fr});var dr=d(at=>{"use strict";var Sh=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Tn=Ke(),Dn=Sh(require("node:path")),Pn=st(),gh=Ve(),Fi=Ii(),Oh=(s,e)=>{let t=new Fi.PackSync(s),i=new Tn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Nn(t,e)},Rh=(s,e)=>{let t=new Fi.Pack(s),i=new Tn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Mn(t,e).catch(n=>t.emit("error",n)),r},Nn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Pn.list)({file:Dn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Mn=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,Pn.list)({file:Dn.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(t);s.end()},vh=(s,e)=>{let t=new Fi.PackSync(s);return Nn(t,e),t},Th=(s,e)=>{let t=new Fi.Pack(s);return Mn(t,e).catch(i=>t.emit("error",i)),t};at.create=(0,gh.makeCommand)(Oh,Rh,vh,Th,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var jn=d(ht=>{"use strict";var Dh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var In=Dh(require("fs")),Ph=process.env.__FAKE_PLATFORM__||process.platform,Fn=Ph==="win32",{O_CREAT:Cn,O_NOFOLLOW:Ln,O_TRUNC:Bn,O_WRONLY:zn}=In.default.constants,kn=Number(process.env.__FAKE_FS_O_FILENAME__)||In.default.constants.UV_FS_O_FILEMAP||0,Nh=Fn&&!!kn,Mh=512*1024,Lh=kn|Bn|Cn|zn,An=!Fn&&typeof Ln=="number"?Ln|Bn|Cn|zn:null;ht.getWriteFlag=An!==null?()=>An:Nh?s=>s"w"});var Un=d(he=>{"use strict";var xn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Bi=xn(require("node:fs")),Pt=xn(require("node:path")),mr=(s,e,t)=>{try{return Bi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Bi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Ah=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ih=(s,e,t,i)=>{Bi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Ah(s,l,e,t,h)})};he.chownr=Ih;var Fh=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),mr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Bi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return mr(s,e,t);throw n}for(let r of i)Fh(s,r,e,t);return mr(s,e,t)};he.chownrSync=Ch});var qn=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.CwdError=void 0;var pr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};zi.CwdError=pr});var wr=d(ki=>{"use strict";Object.defineProperty(ki,"__esModule",{value:!0});ki.SymlinkError=void 0;var _r=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};ki.SymlinkError=_r});var Yn=d(Te=>{"use strict";var Er=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var Wn=Un(),x=Er(require("node:fs")),Bh=Er(require("node:fs/promises")),ji=Er(require("node:path")),Hn=qn(),pe=et(),Zn=wr(),zh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new Hn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},kh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,Wn.chownr)(P,o,a,zt=>E(zt)):n?x.default.chmod(s,r,t):t()};if(s===c)return zh(s,E);if(l)return Bh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ji.default.relative(c,s)).split("/");yr(c,A,r,u,c,void 0,E)};Te.mkdir=kh;var yr=(s,e,t,i,r,n,o)=>{if(e.length===0)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ji.default.resolve(s+"/"+a));x.default.mkdir(h,t,Gn(h,e,t,i,r,n,o))},Gn=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())yr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Gn(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new Zn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,yr(s,e,t,i,r,n,o))},jh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new Hn.CwdError(s,t??"ENOTDIR")}},xh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,Wn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return jh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ji.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ji.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let zt=x.default.lstatSync(P);if(zt.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(zt.isSymbolicLink())return new Zn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=xh});var Vn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.normalizeUnicode=void 0;var br=Object.create(null),Kn=1e4,lt=new Set,Uh=s=>{lt.has(s)?lt.delete(s):br[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=br[s],t=lt.size-Kn;if(t>Kn/10){for(let i of lt)if(lt.delete(i),delete br[i],--t<=0)break}return e};xi.normalizeUnicode=Uh});var Xn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.PathReservations=void 0;var $n=require("node:path"),qh=Vn(),Wh=wi(),Hh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Zh=Hh==="win32",Gh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t.at(-1);return r!==void 0&&(i=(0,$n.join)(r,i)),t.push(i||"/"),t},[]),Sr=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Zh?["win32 parallelization disabled"]:e.map(r=>(0,Wh.stripTrailingSlashes)((0,$n.join)((0,qh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Gh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n.at(-1);o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};Ui.PathReservations=Sr});var Qn=d(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.umask=void 0;var Yh=()=>process.umask();qi.umask=Yh});var Ar=d(z=>{"use strict";var Kh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Vh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ho=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!Ct)return m.default.unlink(s,e);let t=s+".DELETE."+(0,lo.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},nl=s=>{if(!Ct)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,lo.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},ao=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Zi=class extends Qh.Parser{[Or]=!1;[Ft]=!1;[Wi]=0;reservations=new el.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Or]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?!!(process.getuid&&process.getuid()===0):!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:sl,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ct,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,tl.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[eo](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[Or]&&this[Wi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[gr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,Jh.stripAbsolutePath)(i),a=o.replaceAll(/\\/g,"/").split("/");if(a.includes("..")||Ct&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[no](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[gr](e,"path")||!this[gr](e,"linkpath"))return!1;if(e.absolute=g.default.isAbsolute(e.path)?(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Jn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Jn.encode(e.path.slice(n.length))}return!0}[eo](e){if(!this[no](e))return e.resume();switch(Xh.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[vr](e);default:return this[ro](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,co.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return ao(this.uid,e.uid,this.processUid)}[It](e){return ao(this.gid,e.gid,this.processGid)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new $h.WriteStream(String(e.absolute),{flags:(0,uo.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Pr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[ro](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[io](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Hi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[so](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Hi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new fo.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[oo](){this[Wi]++}[ut](){this[Wi]--,this[Rr]()}[Nr](e){this[ut](),e.resume()}[Tr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ct}[vr](e){this[oo]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[to](e,i))}[to](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ft]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Nr](e),i();return}if(a||this[Tr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);rl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ft]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Dr](t,i);case"Link":return this[so](t,i);case"SymbolicLink":return this[io](t,i);case"Directory":case"GNUDumpDir":return this[Pr](t,i)}}[Hi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Zi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Mr=class extends Zi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[vr](e){if(!this[Ft]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ft]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Nr](e);if(t||this[Tr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>nl(String(e.absolute)));this[Z](r,e)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,uo.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Pr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,co.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||i.length===0)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new fo.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Hi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Mr});var Ir=d(G=>{"use strict";var ol=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),al=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),hl=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Gi.UnpackSync(s),t=s.file,i=po.default.statSync(t),r=s.maxReadSize||16*1024*1024;new mo.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},dl=(s,e)=>{let t=new Gi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),po.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new mo.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};G.extract=(0,cl.makeCommand)(fl,dl,s=>new Gi.UnpackSync(s),s=>new Gi.Unpack(s),(s,e)=>{e?.length&&(0,ul.filesFilter)(s,e)})});var Yi=d(ct=>{"use strict";var _o=ct&&ct.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ct,"__esModule",{value:!0});ct.replace=void 0;var wo=Ke(),q=_o(require("node:fs")),yo=_o(require("node:path")),Eo=Je(),bo=st(),ml=Ve(),pl=$t(),So=Ii(),_l=(s,e)=>{let t=new So.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,wl(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},wl=(s,e,t,i,r)=>{let n=new wo.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),El(e,r)},yl=(s,e)=>{e=Array.from(e);let t=new So.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||A===void 0)return h(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return h(new Error("cannot append to compressed archives"));if(u<512)return h(null,l);let w=new Eo.Header(c);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,u)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new wo.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),bl(t,e)})})};q.default.open(s.file,a,h)})},El=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,bo.list)({file:yo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},bl=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,bo.list)({file:yo.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t);s.end()};ct.replace=(0,ml.makeCommand)(_l,yl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,pl.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Fr=d(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.update=void 0;var Sl=Ve(),Bt=Yi();Ki.update=(0,Sl.makeCommand)(Bt.replace.syncFile,Bt.replace.asyncFile,Bt.replace.syncNoFile,Bt.replace.asyncNoFile,(s,e=[])=>{Bt.replace.validate?.(s,e),gl(s)});var gl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var go=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ol=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&go(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r { ret = false; else { const m = map.get(file); - if (m !== undefined) { - ret = m; - } - else { - ret = mapHas((0, path_1.dirname)(file), root); - } + ret = m !== undefined ? m : mapHas((0, path_1.dirname)(file), root); } map.set(file, ret); return ret; @@ -114,7 +109,7 @@ const listFileSync = (opt) => { node_fs_1.default.closeSync(fd); /* c8 ignore next */ } - catch (er) { } + catch { } } } }; diff --git a/deps/npm/node_modules/tar/dist/commonjs/make-command.js b/deps/npm/node_modules/tar/dist/commonjs/make-command.js index 1814319e78bc62..d6fc6c7e38e80f 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/make-command.js +++ b/deps/npm/node_modules/tar/dist/commonjs/make-command.js @@ -12,12 +12,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => cb = entries; entries = undefined; } - if (!entries) { - entries = []; - } - else { - entries = Array.from(entries); - } + entries = !entries ? [] : Array.from(entries); const opt = (0, options_js_1.dealias)(opt_); validate?.(opt, entries); if ((0, options_js_1.isSyncFile)(opt)) { @@ -28,9 +23,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => } else if ((0, options_js_1.isAsyncFile)(opt)) { const p = asyncFile(opt, entries); - // weirdness to make TS happy - const c = cb ? cb : undefined; - return c ? p.then(() => c(), c) : p; + return cb ? p.then(() => cb(), cb) : p; } else if ((0, options_js_1.isSyncNoFile)(opt)) { if (typeof cb === 'function') { @@ -45,9 +38,7 @@ const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => return asyncNoFile(opt, entries); /* c8 ignore start */ } - else { - throw new Error('impossible options??'); - } + throw new Error('impossible options??'); /* c8 ignore stop */ }, { syncFile, diff --git a/deps/npm/node_modules/tar/dist/commonjs/mkdir.js b/deps/npm/node_modules/tar/dist/commonjs/mkdir.js index 606619efbcde39..050e6bb2ab6c6b 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/mkdir.js +++ b/deps/npm/node_modules/tar/dist/commonjs/mkdir.js @@ -72,7 +72,7 @@ const mkdir = (dir, opt, cb) => { }; exports.mkdir = mkdir; const mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => { - if (!parts.length) { + if (parts.length === 0) { return cb(null, created); } const p = parts.shift(); @@ -83,8 +83,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => { if (er) { node_fs_1.default.lstat(part, (statEr, st) => { if (statEr) { - statEr.path = - statEr.path && (0, normalize_windows_path_js_1.normalizeWindowsPath)(statEr.path); + statEr.path = statEr.path && (0, normalize_windows_path_js_1.normalizeWindowsPath)(statEr.path); cb(statEr); } else if (st.isDirectory()) { @@ -113,7 +112,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => { }; const checkCwdSync = (dir) => { let ok = false; - let code = undefined; + let code; try { ok = node_fs_1.default.statSync(dir).isDirectory(); } @@ -159,14 +158,14 @@ const mkdirSync = (dir, opt) => { } const sub = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.relative(cwd, dir)); const parts = sub.split('/'); - let created = undefined; + let created; for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) { part = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(part)); try { node_fs_1.default.mkdirSync(part, mode); created = created || part; } - catch (er) { + catch { const st = node_fs_1.default.lstatSync(part); if (st.isDirectory()) { continue; diff --git a/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js b/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js index b0c7aaa9f2d175..dd87c2856558ac 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js +++ b/deps/npm/node_modules/tar/dist/commonjs/normalize-windows-path.js @@ -8,5 +8,5 @@ exports.normalizeWindowsPath = void 0; const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform; exports.normalizeWindowsPath = platform !== 'win32' ? (p) => p - : (p) => p && p.replace(/\\/g, '/'); + : (p) => p && p.replaceAll(/\\/g, '/'); //# sourceMappingURL=normalize-windows-path.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/commonjs/pack.js b/deps/npm/node_modules/tar/dist/commonjs/pack.js index 67de8272c71f50..76a503a95f696a 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/pack.js +++ b/deps/npm/node_modules/tar/dist/commonjs/pack.js @@ -126,7 +126,6 @@ class Pack extends minipass_1.Minipass { [PROCESSING] = false; [ENDED] = false; constructor(opt = {}) { - //@ts-ignore super(); this.opt = opt; this.file = opt.file || ''; @@ -146,9 +145,7 @@ class Pack extends minipass_1.Minipass { } this.portable = !!opt.portable; if (opt.gzip || opt.brotli || opt.zstd) { - if ((opt.gzip ? 1 : 0) + - (opt.brotli ? 1 : 0) + - (opt.zstd ? 1 : 0) > + if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) { throw new TypeError('gzip, brotli, zstd are mutually exclusive'); } @@ -324,7 +321,7 @@ class Pack extends minipass_1.Minipass { } } this[PROCESSING] = false; - if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) { + if (this[ENDED] && this[QUEUE].length === 0 && this[JOBS] === 0) { if (this.zip) { this.zip.end(EOF); } @@ -368,9 +365,7 @@ class Pack extends minipass_1.Minipass { if (job.ignore) { return; } - if (!this.noDirRecurse && - job.stat.isDirectory() && - !job.readdir) { + if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) { const rc = this.readdirCache.get(job.absolute); if (rc) { this[ONREADDIR](job, rc); diff --git a/deps/npm/node_modules/tar/dist/commonjs/parse.js b/deps/npm/node_modules/tar/dist/commonjs/parse.js index ef88ab35095270..999873ec64032e 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/parse.js +++ b/deps/npm/node_modules/tar/dist/commonjs/parse.js @@ -92,8 +92,7 @@ class Parser extends events_1.EventEmitter { this.file = opt.file || ''; // these BADARCHIVE errors can't be detected early. listen on DONE. this.on(DONE, () => { - if (this[STATE] === 'begin' || - this[SAW_VALID_ENTRY] === false) { + if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) { // either less than 1 block of data, or all entries were invalid. // Either way, probably not even a tarball. this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format'); @@ -223,8 +222,7 @@ class Parser extends events_1.EventEmitter { } else { this[EX] = undefined; - entry.ignore = - entry.ignore || !this.filter(entry.path, entry); + entry.ignore = entry.ignore || !this.filter(entry.path, entry); if (entry.ignore) { // probably valid, just not something we care about this[EMIT]('ignoredEntry', entry); @@ -277,7 +275,7 @@ class Parser extends events_1.EventEmitter { } [NEXTENTRY]() { do { } while (this[PROCESSENTRY](this[QUEUE].shift())); - if (!this[QUEUE].length) { + if (this[QUEUE].length === 0) { // At this point, there's nothing in the queue, but we may have an // entry which is being consumed (readEntry). // If we don't, then we definitely can handle more data. @@ -327,7 +325,7 @@ class Parser extends events_1.EventEmitter { return ret; } [EMIT](ev, data, extra) { - if (!this[QUEUE].length && !this[READENTRY]) { + if (this[QUEUE].length === 0 && !this[READENTRY]) { this.emit(ev, data, extra); } else { @@ -474,11 +472,11 @@ class Parser extends events_1.EventEmitter { } this[WRITING] = false; // return false if there's a queue, or if the current entry isn't flowing - const ret = this[QUEUE].length ? false + const ret = this[QUEUE].length > 0 ? false : this[READENTRY] ? this[READENTRY].flowing : true; // if we have no queue, then that means a clogged READENTRY - if (!ret && !this[QUEUE].length) { + if (!ret && this[QUEUE].length === 0) { this[READENTRY]?.once('drain', () => this.emit('drain')); } /* c8 ignore next */ @@ -487,8 +485,7 @@ class Parser extends events_1.EventEmitter { } [BUFFERCONCAT](c) { if (c && !this[ABORTED]) { - this[BUFFER] = - this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c; + this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c; } } [MAYBEEND]() { @@ -547,9 +544,7 @@ class Parser extends events_1.EventEmitter { // the buffer. Advance the position and put any remainder in the buffer. let position = 0; const length = chunk.length; - while (position + 512 <= length && - !this[ABORTED] && - !this[SAW_EOF]) { + while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) { switch (this[STATE]) { case 'begin': case 'header': @@ -570,15 +565,10 @@ class Parser extends events_1.EventEmitter { } } if (position < length) { - if (this[BUFFER]) { - this[BUFFER] = Buffer.concat([ - chunk.subarray(position), - this[BUFFER], - ]); - } - else { - this[BUFFER] = chunk.subarray(position); - } + this[BUFFER] = + this[BUFFER] ? + Buffer.concat([chunk.subarray(position), this[BUFFER]]) + : chunk.subarray(position); } } end(chunk, encoding, cb) { diff --git a/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js b/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js index 525d233b2a45fc..68eeefbce6599c 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js +++ b/deps/npm/node_modules/tar/dist/commonjs/path-reservations.js @@ -20,7 +20,7 @@ const getDirs = (path) => { .split('/') .slice(0, -1) .reduce((set, path) => { - const s = set[set.length - 1]; + const s = set.at(-1); if (s !== undefined) { path = (0, node_path_1.join)(s, path); } @@ -63,7 +63,7 @@ class PathReservations { this.#queues.set(dir, [new Set([fn])]); } else { - const l = q[q.length - 1]; + const l = q.at(-1); if (l instanceof Set) { l.add(fn); } diff --git a/deps/npm/node_modules/tar/dist/commonjs/read-entry.js b/deps/npm/node_modules/tar/dist/commonjs/read-entry.js index 15e2d55c938a43..655d7dbc0d357b 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/read-entry.js +++ b/deps/npm/node_modules/tar/dist/commonjs/read-entry.js @@ -90,9 +90,7 @@ class ReadEntry extends minipass_1.Minipass { this.ctime = header.ctime; /* c8 ignore start */ this.linkpath = - header.linkpath ? - (0, normalize_windows_path_js_1.normalizeWindowsPath)(header.linkpath) - : undefined; + header.linkpath ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(header.linkpath) : undefined; /* c8 ignore stop */ this.uname = header.uname; this.gname = header.gname; @@ -130,9 +128,7 @@ class ReadEntry extends minipass_1.Minipass { // we slurp in everything except for the path attribute in // a global extended header, because that's weird. Also, any // null/undefined values are ignored. - return !(v === null || - v === undefined || - (k === 'path' && gex)); + return !(v === null || v === undefined || (k === 'path' && gex)); }))); } } diff --git a/deps/npm/node_modules/tar/dist/commonjs/replace.js b/deps/npm/node_modules/tar/dist/commonjs/replace.js index 1c6609cb57e79d..8305a3531ab508 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/replace.js +++ b/deps/npm/node_modules/tar/dist/commonjs/replace.js @@ -40,9 +40,7 @@ const replaceSync = (opt, files) => { POSITION: for (position = 0; position < st.size; position += 512) { for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) { bytes = node_fs_1.default.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos); - if (position === 0 && - headBuf[0] === 0x1f && - headBuf[1] === 0x8b) { + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) { throw new Error('cannot append to compressed archives'); } if (!bytes) { @@ -72,7 +70,7 @@ const replaceSync = (opt, files) => { try { node_fs_1.default.closeSync(fd); } - catch (er) { } + catch { } } } }; @@ -103,16 +101,14 @@ const replaceAsync = (opt, files) => { let bufPos = 0; const headBuf = Buffer.alloc(512); const onread = (er, bytes) => { - if (er || typeof bytes === 'undefined') { + if (er || bytes === undefined) { return cb(er); } bufPos += bytes; if (bufPos < 512 && bytes) { return node_fs_1.default.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread); } - if (position === 0 && - headBuf[0] === 0x1f && - headBuf[1] === 0x8b) { + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) { return cb(new Error('cannot append to compressed archives')); } // truncated header @@ -191,8 +187,7 @@ const addFilesSync = (p, files) => { p.end(); }; const addFilesAsync = async (p, files) => { - for (let i = 0; i < files.length; i++) { - const file = String(files[i]); + for (const file of files) { if (file.charAt(0) === '@') { await (0, list_js_1.list)({ file: node_path_1.default.resolve(String(p.cwd), file.slice(1)), diff --git a/deps/npm/node_modules/tar/dist/commonjs/unpack.js b/deps/npm/node_modules/tar/dist/commonjs/unpack.js index 7248fbacfc93a1..3df1031d84cbe5 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/unpack.js +++ b/deps/npm/node_modules/tar/dist/commonjs/unpack.js @@ -167,8 +167,7 @@ class Unpack extends parse_js_1.Parser { this.chmod = !!opt.chmod; if (typeof opt.uid === 'number' || typeof opt.gid === 'number') { // need both or neither - if (typeof opt.uid !== 'number' || - typeof opt.gid !== 'number') { + if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') { throw new TypeError('cannot set owner without number uid and gid'); } if (opt.preserveOwner) { @@ -184,13 +183,10 @@ class Unpack extends parse_js_1.Parser { this.setOwner = false; } // default true for root - if (opt.preserveOwner === undefined && - typeof opt.uid !== 'number') { - this.preserveOwner = !!(process.getuid && process.getuid() === 0); - } - else { - this.preserveOwner = !!opt.preserveOwner; - } + this.preserveOwner = + opt.preserveOwner === undefined && typeof opt.uid !== 'number' ? + !!(process.getuid && process.getuid() === 0) + : !!opt.preserveOwner; this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() @@ -202,9 +198,7 @@ class Unpack extends parse_js_1.Parser { // prevent excessively deep nesting of subfolders // set to `Infinity` to remove this restriction this.maxDepth = - typeof opt.maxDepth === 'number' ? - opt.maxDepth - : DEFAULT_MAX_DEPTH; + typeof opt.maxDepth === 'number' ? opt.maxDepth : DEFAULT_MAX_DEPTH; // mostly just for testing, but useful in some cases. // Forcibly trigger a chown on every entry, no matter what this.forceChown = opt.forceChown === true; @@ -262,7 +256,7 @@ class Unpack extends parse_js_1.Parser { return true; // strip off the root const [root, stripped] = (0, strip_absolute_path_js_1.stripAbsolutePath)(p); - const parts = stripped.replace(/\\/g, '/').split('/'); + const parts = stripped.replaceAll(/\\/g, '/').split('/'); if (parts.includes('..') || /* c8 ignore next */ (isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) { @@ -278,20 +272,18 @@ class Unpack extends parse_js_1.Parser { // not ok! return false; } - else { - // Resolve linkpath relative to the entry's directory. - // `path.posix` is safe to use because we're operating on - // tar paths, not a filesystem. - const entryDir = node_path_1.default.posix.dirname(entry.path); - const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, parts.join('/'))); - // If the resolved path escapes (starts with ..), reject it - if (resolved.startsWith('../') || resolved === '..') { - this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, { - entry, - [field]: p, - }); - return false; - } + // Resolve linkpath relative to the entry's directory. + // `path.posix` is safe to use because we're operating on + // tar paths, not a filesystem. + const entryDir = node_path_1.default.posix.dirname(entry.path); + const resolved = node_path_1.default.posix.normalize(node_path_1.default.posix.join(entryDir, parts.join('/'))); + // If the resolved path escapes (starts with ..), reject it + if (resolved.startsWith('../') || resolved === '..') { + this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, { + entry, + [field]: p, + }); + return false; } } if (root) { @@ -337,12 +329,10 @@ class Unpack extends parse_js_1.Parser { !this[STRIPABSOLUTEPATH](entry, 'linkpath')) { return false; } - if (node_path_1.default.isAbsolute(entry.path)) { - entry.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(entry.path)); - } - else { - entry.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(this.cwd, entry.path)); - } + entry.absolute = + node_path_1.default.isAbsolute(entry.path) ? + (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(entry.path)) + : (0, normalize_windows_path_js_1.normalizeWindowsPath)(node_path_1.default.resolve(this.cwd, entry.path)); // if we somehow ended up with a path that escapes the cwd, and we are // not in preservePaths mode, then something is fishy! This should have // been prevented above, so ignore this for coverage. @@ -437,8 +427,7 @@ class Unpack extends parse_js_1.Parser { entry.uid !== this.processUid) || (typeof entry.gid === 'number' && entry.gid !== this.processGid))) || - (typeof this.uid === 'number' && - this.uid !== this.processUid) || + (typeof this.uid === 'number' && this.uid !== this.processUid) || (typeof this.gid === 'number' && this.gid !== this.processGid)); } [UID](entry) { @@ -448,9 +437,7 @@ class Unpack extends parse_js_1.Parser { return uint32(this.gid, entry.gid, this.processGid); } [FILE](entry, fullyDone) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.fmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode; const stream = new fsm.WriteStream(String(entry.absolute), { // slight lie, but it can be numeric flags flags: (0, get_write_flag_js_1.getWriteFlag)(entry.size), @@ -513,16 +500,14 @@ class Unpack extends parse_js_1.Parser { const uid = this[UID](entry); const gid = this[GID](entry); if (typeof uid === 'number' && typeof gid === 'number') { - node_fs_1.default.fchown(fd, uid, gid, er => er ? - node_fs_1.default.chown(abs, uid, gid, er2 => done(er2 && er)) - : done()); + node_fs_1.default.fchown(fd, uid, gid, er => er ? node_fs_1.default.chown(abs, uid, gid, er2 => done(er2 && er)) : done()); } } done(); }); const tx = this.transform ? this.transform(entry) || entry : entry; if (tx !== entry) { - tx.on('error', (er) => { + tx.on('error', er => { this[ONERROR](er, entry); fullyDone(); }); @@ -531,9 +516,7 @@ class Unpack extends parse_js_1.Parser { tx.pipe(stream); } [DIRECTORY](entry, fullyDone) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.dmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode; this[MKDIR](String(entry.absolute), mode, er => { if (er) { this[ONERROR](er, entry); @@ -669,9 +652,7 @@ class Unpack extends parse_js_1.Parser { } if (st.isDirectory()) { if (entry.type === 'Directory') { - const needChmod = this.chmod && - entry.mode && - (st.mode & 0o7777) !== entry.mode; + const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode; const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done); if (!needChmod) { return afterChmod(); @@ -782,9 +763,7 @@ class UnpackSync extends Unpack { } if (st.isDirectory()) { if (entry.type === 'Directory') { - const needChmod = this.chmod && - entry.mode && - (st.mode & 0o7777) !== entry.mode; + const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode; const [er] = needChmod ? callSync(() => { node_fs_1.default.chmodSync(String(entry.absolute), Number(entry.mode)); @@ -804,9 +783,7 @@ class UnpackSync extends Unpack { this[MAKEFS](er, entry); } [FILE](entry, done) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.fmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode; const oner = (er) => { let closeError; try { @@ -834,7 +811,7 @@ class UnpackSync extends Unpack { /* c8 ignore stop */ const tx = this.transform ? this.transform(entry) || entry : entry; if (tx !== entry) { - tx.on('error', (er) => this[ONERROR](er, entry)); + tx.on('error', er => this[ONERROR](er, entry)); entry.pipe(tx); } tx.on('data', (chunk) => { @@ -859,7 +836,7 @@ class UnpackSync extends Unpack { try { node_fs_1.default.utimesSync(String(entry.absolute), atime, mtime); } - catch (utimeser) { + catch { er = futimeser; } } @@ -874,7 +851,7 @@ class UnpackSync extends Unpack { try { node_fs_1.default.chownSync(String(entry.absolute), Number(uid), Number(gid)); } - catch (chowner) { + catch { er = er || fchowner; } } @@ -883,9 +860,7 @@ class UnpackSync extends Unpack { }); } [DIRECTORY](entry, done) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.dmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode; const er = this[MKDIR](String(entry.absolute), mode); if (er) { this[ONERROR](er, entry); @@ -897,13 +872,13 @@ class UnpackSync extends Unpack { node_fs_1.default.utimesSync(String(entry.absolute), entry.atime || new Date(), entry.mtime); /* c8 ignore next */ } - catch (er) { } + catch { } } if (this[DOCHOWN](entry)) { try { node_fs_1.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry))); } - catch (er) { } + catch { } } done(); entry.resume(); @@ -927,7 +902,7 @@ class UnpackSync extends Unpack { } } [ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) { - if (this.preservePaths || !parts.length) + if (this.preservePaths || parts.length === 0) return done(); let t = cwd; for (const p of parts) { diff --git a/deps/npm/node_modules/tar/dist/commonjs/winchars.js b/deps/npm/node_modules/tar/dist/commonjs/winchars.js index c0a4405812929e..1ce09630d3df09 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/winchars.js +++ b/deps/npm/node_modules/tar/dist/commonjs/winchars.js @@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.decode = exports.encode = void 0; const raw = ['|', '<', '>', '?', ':']; -const win = raw.map(char => String.fromCharCode(0xf000 + char.charCodeAt(0))); +const win = raw.map(char => String.fromCodePoint(0xf000 + Number(char.codePointAt(0)))); const toWin = new Map(raw.map((char, i) => [char, win[i]])); const toRaw = new Map(win.map((char, i) => [char, raw[i]])); const encode = (s) => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s); diff --git a/deps/npm/node_modules/tar/dist/commonjs/write-entry.js b/deps/npm/node_modules/tar/dist/commonjs/write-entry.js index 20e14a0d6c0b6a..db4fa77afe258f 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/write-entry.js +++ b/deps/npm/node_modules/tar/dist/commonjs/write-entry.js @@ -122,8 +122,7 @@ class WriteEntry extends minipass_1.Minipass { this.noPax = !!opt.noPax; this.noMtime = !!opt.noMtime; this.mtime = opt.mtime; - this.prefix = - opt.prefix ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.prefix) : undefined; + this.prefix = opt.prefix ? (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.prefix) : undefined; this.onWriteEntry = opt.onWriteEntry; if (typeof opt.onwarn === 'function') { this.on('warn', opt.onwarn); @@ -140,8 +139,8 @@ class WriteEntry extends minipass_1.Minipass { if (this.win32) { // force the \ to / normalization, since we might not *actually* // be on windows, but want \ to be considered a path separator. - this.path = winchars.decode(this.path.replace(/\\/g, '/')); - p = p.replace(/\\/g, '/'); + this.path = winchars.decode(this.path.replaceAll(/\\/g, '/')); + p = p.replaceAll(/\\/g, '/'); } this.absolute = (0, normalize_windows_path_js_1.normalizeWindowsPath)(opt.absolute || path_1.default.resolve(this.cwd, p)); if (this.path === '') { @@ -243,7 +242,7 @@ class WriteEntry extends minipass_1.Minipass { atime: this.portable ? undefined : this.header.atime, ctime: this.portable ? undefined : this.header.ctime, gid: this.portable ? undefined : this.header.gid, - mtime: this.noMtime ? undefined : (this.mtime || this.header.mtime), + mtime: this.noMtime ? undefined : this.mtime || this.header.mtime, path: this[PREFIX](this.path), linkpath: this.type === 'Link' && this.linkpath !== undefined ? this[PREFIX](this.linkpath) @@ -446,7 +445,7 @@ class WriteEntry extends minipass_1.Minipass { if (this.blockRemain) { super.write(Buffer.alloc(this.blockRemain)); } - return this[CLOSE](er => er ? this.emit('error', er) : this.end()); + return this[CLOSE](er => (er ? this.emit('error', er) : this.end())); } /* c8 ignore start */ if (!this.buf) { @@ -495,7 +494,7 @@ class WriteEntrySync extends WriteEntry { try { this[CLOSE](() => { }); } - catch (er) { } + catch { } } } } @@ -565,16 +564,13 @@ class WriteEntryTar extends minipass_1.Minipass { this.prefix = opt.prefix; this.path = (0, normalize_windows_path_js_1.normalizeWindowsPath)(readEntry.path); this.mode = - readEntry.mode !== undefined ? - this[MODE](readEntry.mode) - : undefined; + readEntry.mode !== undefined ? this[MODE](readEntry.mode) : undefined; this.uid = this.portable ? undefined : readEntry.uid; this.gid = this.portable ? undefined : readEntry.gid; this.uname = this.portable ? undefined : readEntry.uname; this.gname = this.portable ? undefined : readEntry.gname; this.size = readEntry.size; - this.mtime = - this.noMtime ? undefined : opt.mtime || readEntry.mtime; + this.mtime = this.noMtime ? undefined : opt.mtime || readEntry.mtime; this.atime = this.portable ? undefined : readEntry.atime; this.ctime = this.portable ? undefined : readEntry.ctime; this.linkpath = @@ -686,7 +682,10 @@ class WriteEntryTar extends minipass_1.Minipass { } if (cb) this.once('finish', cb); - chunk ? super.end(chunk, cb) : super.end(cb); + if (chunk) + super.end(chunk, cb); + else + super.end(cb); /* c8 ignore stop */ return this; } diff --git a/deps/npm/node_modules/tar/dist/esm/create.js b/deps/npm/node_modules/tar/dist/esm/create.js index 512a9911d70d5b..4e88751690d86b 100644 --- a/deps/npm/node_modules/tar/dist/esm/create.js +++ b/deps/npm/node_modules/tar/dist/esm/create.js @@ -22,7 +22,7 @@ const createFile = (opt, files) => { stream.on('close', res); p.on('error', rej); }); - addFilesAsync(p, files); + addFilesAsync(p, files).catch(er => p.emit('error', er)); return promise; }; const addFilesSync = (p, files) => { @@ -42,8 +42,7 @@ const addFilesSync = (p, files) => { p.end(); }; const addFilesAsync = async (p, files) => { - for (let i = 0; i < files.length; i++) { - const file = String(files[i]); + for (const file of files) { if (file.charAt(0) === '@') { await list({ file: path.resolve(String(p.cwd), file.slice(1)), @@ -66,7 +65,7 @@ const createSync = (opt, files) => { }; const createAsync = (opt, files) => { const p = new Pack(opt); - addFilesAsync(p, files); + addFilesAsync(p, files).catch(er => p.emit('error', er)); return p; }; export const create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => { diff --git a/deps/npm/node_modules/tar/dist/esm/get-write-flag.js b/deps/npm/node_modules/tar/dist/esm/get-write-flag.js index 2c7f3e8b28fdaf..73d574522d8b3c 100644 --- a/deps/npm/node_modules/tar/dist/esm/get-write-flag.js +++ b/deps/npm/node_modules/tar/dist/esm/get-write-flag.js @@ -9,7 +9,7 @@ import fs from 'fs'; const platform = process.env.__FAKE_PLATFORM__ || process.platform; const isWindows = platform === 'win32'; /* c8 ignore start */ -const { O_CREAT, O_TRUNC, O_WRONLY } = fs.constants; +const { O_CREAT, O_NOFOLLOW, O_TRUNC, O_WRONLY } = fs.constants; const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || fs.constants.UV_FS_O_FILEMAP || 0; @@ -17,7 +17,10 @@ const UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP; const fMapLimit = 512 * 1024; const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY; -export const getWriteFlag = !fMapEnabled ? - () => 'w' - : (size) => (size < fMapLimit ? fMapFlag : 'w'); +const noFollowFlag = !isWindows && typeof O_NOFOLLOW === 'number' ? + O_NOFOLLOW | O_TRUNC | O_CREAT | O_WRONLY + : null; +export const getWriteFlag = noFollowFlag !== null ? () => noFollowFlag + : !fMapEnabled ? () => 'w' + : (size) => (size < fMapLimit ? fMapFlag : 'w'); //# sourceMappingURL=get-write-flag.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/esm/header.js b/deps/npm/node_modules/tar/dist/esm/header.js index 66db54527d838a..046d00374261f7 100644 --- a/deps/npm/node_modules/tar/dist/esm/header.js +++ b/deps/npm/node_modules/tar/dist/esm/header.js @@ -47,8 +47,7 @@ export class Header { this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8); this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8); this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12); - this.mtime = - ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12); + this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12); this.cksum = decNumber(buf, off + 148, 12); // if we have extended or global extended headers, apply them now // See https://github.com/npm/node-tar/pull/187 @@ -74,13 +73,10 @@ export class Header { this.size = 0; } this.linkpath = decString(buf, off + 157, 100); - if (buf.subarray(off + 257, off + 265).toString() === - 'ustar\u000000') { + if (buf.subarray(off + 257, off + 265).toString() === 'ustar\u000000') { /* c8 ignore start */ - this.uname = - ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32); - this.gname = - ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32); + this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32); + this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32); this.devmaj = ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0; this.devmin = @@ -97,10 +93,8 @@ export class Header { this.path = prefix + '/' + this.path; } /* c8 ignore start */ - this.atime = - ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12); - this.ctime = - ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12); + this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12); + this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12); /* c8 ignore stop */ } } @@ -144,17 +138,12 @@ export class Header { const prefix = split[1]; this.needPax = !!split[2]; this.needPax = encString(buf, off, 100, path) || this.needPax; - this.needPax = - encNumber(buf, off + 100, 8, this.mode) || this.needPax; - this.needPax = - encNumber(buf, off + 108, 8, this.uid) || this.needPax; - this.needPax = - encNumber(buf, off + 116, 8, this.gid) || this.needPax; - this.needPax = - encNumber(buf, off + 124, 12, this.size) || this.needPax; - this.needPax = - encDate(buf, off + 136, 12, this.mtime) || this.needPax; - buf[off + 156] = this.#type.charCodeAt(0); + this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax; + this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax; + this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax; + this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax; + this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax; + buf[off + 156] = Number(this.#type.codePointAt(0)); this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax; buf.write('ustar\u000000', off + 257, 8); @@ -169,12 +158,10 @@ export class Header { this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax; if (buf[off + 475] !== 0) { - this.needPax = - encString(buf, off + 345, 155, prefix) || this.needPax; + this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax; } else { - this.needPax = - encString(buf, off + 345, 130, prefix) || this.needPax; + this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax; this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax; this.needPax = diff --git a/deps/npm/node_modules/tar/dist/esm/index.min.js b/deps/npm/node_modules/tar/dist/esm/index.min.js index 40a573e4cce6c3..8b043cabab710d 100644 --- a/deps/npm/node_modules/tar/dist/esm/index.min.js +++ b/deps/npm/node_modules/tar/dist/esm/index.min.js @@ -1,4 +1,4 @@ -var Dr=Object.defineProperty;var Ar=(s,t)=>{for(var e in t)Dr(s,e,{get:t[e],enumerable:!0})};import Hr from"events";import I from"fs";import{EventEmitter as Oi}from"node:events";import Ds from"node:stream";import{StringDecoder as Ir}from"node:string_decoder";var Ts=typeof process=="object"&&process?process:{stdout:null,stderr:null},Cr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Ds||Fr(s)||kr(s)),Fr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.pipe=="function"&&s.pipe!==Ds.Writable.prototype.pipe,kr=s=>!!s&&typeof s=="object"&&s instanceof Oi&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),j=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),xe=Symbol("emittingEnd"),jt=Symbol("emittedError"),Le=Symbol("closed"),xs=Symbol("read"),Ne=Symbol("flush"),Ls=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),b=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),g=Symbol("buffer"),D=Symbol("pipes"),_=Symbol("bufferLength"),Si=Symbol("bufferPush"),De=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),yi=Symbol("error"),Ri=Symbol("emitData"),Ns=Symbol("emitEnd"),bi=Symbol("emitEnd2"),Z=Symbol("async"),gi=Symbol("abort"),Ae=Symbol("aborted"),Jt=Symbol("signal"),yt=Symbol("dataListeners"),C=Symbol("discarded"),te=s=>Promise.resolve().then(s),vr=s=>s(),Mr=s=>s==="end"||s==="finish"||s==="prefinish",Br=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Pr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ie=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},_i=class extends Ie{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},zr=s=>!!s.objectMode,Ur=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Oi{[b]=!1;[Qt]=!1;[D]=[];[g]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[xe]=!1;[Le]=!1;[jt]=null;[_]=0;[w]=!1;[Jt];[Ae]=!1;[yt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");zr(e)?(this[L]=!0,this[z]=null):Ur(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Ir(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[g]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[D]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[gi]():i.addEventListener("abort",()=>this[gi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[gi](){this[Ae]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ae]}set aborted(t){}write(t,e,i){if(this[Ae])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?te:vr;if(!this[L]&&!Buffer.isBuffer(t)){if(Pr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Br(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[b]&&this[_]!==0&&this[Ne](!0),this[b]?this.emit("data",t):this[Si](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[b]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[b])}read(t){if(this[w])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[j](),null;this[L]&&(t=null),this[g].length>1&&!this[L]&&(this[g]=[this[z]?this[g].join(""):Buffer.concat(this[g],this[_])]);let e=this[xs](t||null,this[g][0]);return this[j](),e}[xs](t,e){if(this[L])this[De]();else{let i=e;t===i.length||t===null?this[De]():typeof i=="string"?(this[g][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[g][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[g].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[b]||!this[Qt])&&this[j](),this}[Bt](){this[w]||(!this[yt]&&!this[D].length&&(this[C]=!0),this[Qt]=!1,this[b]=!0,this.emit("resume"),this[g].length?this[Ne]():this[q]?this[j]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[b]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[b]}get paused(){return this[Qt]}[Si](t){this[L]?this[_]+=1:this[_]+=t.length,this[g].push(t)}[De](){return this[L]?this[_]-=1:this[_]-=this[g][0].length,this[g].shift()}[Ne](t=!1){do;while(this[Ls](this[De]())&&this[g].length);!t&&!this[g].length&&!this[q]&&this.emit("drain")}[Ls](t){return this.emit("data",t),this[b]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[rt];return e=e||{},t===Ts.stdout||t===Ts.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[D].push(e.proxyErrors?new _i(this,t,e):new Ie(this,t,e)),this[Z]?te(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[D].find(i=>i.dest===t);e&&(this[D].length===1?(this[b]&&this[yt]===0&&(this[b]=!1),this[D]=[]):this[D].splice(this[D].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[yt]++,!this[D].length&&!this[b]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Mr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[jt]){let r=e;this[Z]?te(()=>r.call(this,this[jt])):r.call(this,this[jt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[yt]=this.listeners("data").length,this[yt]===0&&!this[C]&&!this[D].length&&(this[b]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[yt]=0,!this[C]&&!this[D].length&&(this[b]=!1)),e}get emittedEnd(){return this[rt]}[j](){!this[xe]&&!this[rt]&&!this[w]&&this[g].length===0&&this[q]&&(this[xe]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Le]&&this.emit("close"),this[xe]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(te(()=>this[Ri](i)),!0):this[Ri](i);if(t==="end")return this[Ns]();if(t==="close"){if(this[Le]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[jt]=i,super.emit(yi,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[j](),n}else if(t==="resume"){let n=super.emit("resume");return this[j](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[j](),r}[Ri](t){for(let i of this[D])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[j](),e}[Ns](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(te(()=>this[bi]()),!0):this[bi]())}[bi](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[D])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[D])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(yi,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(yi,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[g].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Le]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Cr}};var Wr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),ee=Symbol("_ended"),m=Symbol("_fd"),Ti=Symbol("_finished"),J=Symbol("_flags"),xi=Symbol("_flush"),Ai=Symbol("_handleChunk"),Ii=Symbol("_makeBuf"),se=Symbol("_mode"),Ce=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Li=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ni=Symbol("_readSize"),Q=Symbol("_reading"),ie=Symbol("_remain"),Di=Symbol("_size"),Fe=Symbol("_write"),Rt=Symbol("_writing"),ke=Symbol("_defaultFlag"),bt=Symbol("_errored"),gt=class extends A{[bt]=!1;[m];[U];[Ni];[Q]=!1;[Di];[ie];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ni]=e.readSize||16*1024*1024,this[Q]=!1,this[Di]=typeof e.size=="number"?e.size:1/0,this[ie]=this[Di],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[Ii](){return Buffer.allocUnsafe(Math.min(this[Ni],this[ie]))}[zt](){if(!this[Q]){this[Q]=!0;let t=this[Ii]();if(t.length===0)return process.nextTick(()=>this[Li](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Li](e,i,r))}}[Li](t,e,i){this[Q]=!1,t?this[Ut](t):this[Ai](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[Q]=!0,this[H](),this.emit("error",t)}[Ai](t,e){let i=!1;return this[ie]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[ke]&&this[J]==="r+"&&t&&t.code==="ENOENT"?(this[J]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[Rt]||this[xi]())}end(t,e){return t&&this.write(t,e),this[ee]=!0,!this[Rt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[ee]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[Rt]||this[Y].length?(this[Y].push(t),this[Ce]=!0,!1):(this[Rt]=!0,this[Fe](t),!0)}[Fe](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[xi]():(this[Rt]=!1,this[ee]&&!this[Ti]?(this[Ti]=!0,this[H](),this.emit("finish")):this[Ce]&&(this[Ce]=!1,this.emit("drain"))))}[xi](){if(this[Y].length===0)this[ee]&&this[Pt](null,0);else if(this[Y].length===1)this[Fe](this[Y].pop());else{let t=this[Y];this[Y]=[],Wr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ke]&&this[J]==="r+")try{t=I.openSync(this[U],this[J],this[se])}catch(e){if(e?.code==="ENOENT")return this[J]="w",this[ht]();throw e}else t=I.openSync(this[U],this[J],this[se]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[Fe](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import or from"node:path";import Vt from"node:fs";import{dirname as bn,parse as gn}from"path";var Gr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),As=s=>!!s.sync&&!!s.file,Is=s=>!s.sync&&!!s.file,Cs=s=>!!s.sync&&!s.file,Fs=s=>!s.sync&&!s.file;var ks=s=>!!s.file;var Zr=s=>{let t=Gr.get(s);return t||s},re=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Zr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o?o=Array.from(o):o=[];let a=re(n);if(r?.(a,o),As(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(Is(a)){let l=t(a,o),c=h||void 0;return c?l.then(()=>c(),c):l}else if(Cs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Fs(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as wn}from"events";import vi from"assert";import{Buffer as _t}from"buffer";import*as vs from"zlib";import Yr from"zlib";var Kr=Yr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Kr));var Vr=_t.concat,Ms=Object.getOwnPropertyDescriptor(_t,"concat"),$r=s=>s,Fi=Ms?.writable===!0||Ms?.set!==void 0?s=>{_t.concat=s?$r:Vr}:s=>{},Ot=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},ki=Symbol("flushFlag"),ne=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof vs[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new vs[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return vi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(_t.alloc(0),{[ki]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ot](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=_t.from(t,e)),this.#t)return;vi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Fi(!0);let h;try{let l=typeof t[ki]=="number"?t[ki]:this.#s;h=this.#e._processChunk(t,l),Fi(!1)}catch(l){Fi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ot](_t.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Be=class extends Me{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Ot](t){return this.#t?(this.#t=!1,t[9]=255,super[Ot](t)):super[Ot](t)}};var Pe=class extends Me{constructor(t){super(t,"Unzip")}},ze=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},Ue=class extends ze{constructor(t){super(t,"BrotliCompress")}},He=class extends ze{constructor(t){super(t,"BrotliDecompress")}},We=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ge=class extends We{constructor(t){super(t,"ZstdCompress")}},Ze=class extends We{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Bs=(s,t)=>{if(Number.isSafeInteger(s))s<0?jr(s,t):qr(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},qr=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},jr=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=zs(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Us(r))}},Ps=s=>{let t=s[0],e=t===128?Jr(s.subarray(1,s.length)):t===255?Qr(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},Qr=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=zs(n):n===0?o=n:(i=!0,o=Us(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},Jr=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},zs=s=>(255^s)&255,Us=s=>(255^s)+1&255;var Mi={};Ar(Mi,{code:()=>Ye,isCode:()=>oe,isName:()=>en,name:()=>he});var oe=s=>he.has(s),en=s=>Ye.has(s),he=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ye=new Map(Array.from(he).map(s=>[s[1],s[0]]));var F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");this.path=i?.path??Tt(t,e,100),this.mode=i?.mode??r?.mode??at(t,e+100,8),this.uid=i?.uid??r?.uid??at(t,e+108,8),this.gid=i?.gid??r?.gid??at(t,e+116,8),this.size=i?.size??r?.size??at(t,e+124,12),this.mtime=i?.mtime??r?.mtime??Bi(t,e+136,12),this.cksum=at(t,e+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Tt(t,e+156,1);if(oe(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=Tt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Tt(t,e+265,32),this.gname=i?.gname??r?.gname??Tt(t,e+297,32),this.devmaj=i?.devmaj??r?.devmaj??at(t,e+329,8)??0,this.devmin=i?.devmin??r?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let h=Tt(t,e+345,155);this.path=h+"/"+this.path}else{let h=Tt(t,e+345,130);h&&(this.path=h+"/"+this.path),this.atime=i?.atime??r?.atime??Bi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Bi(t,e+488,12)}let o=256;for(let h=e;h!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=sn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=xt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=Pi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=this.#t.charCodeAt(0),this.needPax=xt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=xt(t,e+265,32,this.uname)||this.needPax,this.needPax=xt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=xt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=xt(t,e+345,155,o)||this.needPax:(this.needPax=xt(t,e+345,130,o)||this.needPax,this.needPax=Pi(t,e+476,12,this.atime)||this.needPax,this.needPax=Pi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Tt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Bi=(s,t,e)=>rn(at(s,t,e)),rn=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?Ps(s.subarray(t,t+e)):on(s,t,e),nn=s=>isNaN(s)?void 0:s,on=(s,t,e)=>nn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),hn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>hn[e]||i<0?(Bs(i,s.subarray(t,t+e)),!0):(an(s,t,e,i),!1),an=(s,t,e,i)=>s.write(ln(i,e),t,e,"ascii"),ln=(s,t)=>cn(Math.floor(s).toString(8),t),cn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Pi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),fn=new Array(156).join("\0"),xt=(s,t,e,i)=>i===void 0?!1:(s.write(i+fn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as dn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+dn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(un(mn(t),e),i)}},un=(s,t)=>t?Object.assign({},t,s):s,mn=s=>s.replace(/\n$/,"").split(` -`).reduce(pn,Object.create(null)),pn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var En=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=En!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/");var Yt=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Lt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Sn=1024*1024,Gi=Buffer.from([31,139]),Zi=Buffer.from([40,181,47,253]),yn=Math.max(Gi.length,Zi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),et=Symbol("readEntry"),zi=Symbol("nextEntry"),Hs=Symbol("processEntry"),V=Symbol("extendedHeader"),ae=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Ws=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Ui=Symbol("emittedEnd"),Dt=Symbol("emit"),y=Symbol("unzip"),Ke=Symbol("consumeChunk"),Ve=Symbol("consumeChunkSub"),Hi=Symbol("consumeBody"),Gs=Symbol("consumeMeta"),Zs=Symbol("consumeHeader"),le=Symbol("consuming"),Wi=Symbol("bufferConcat"),$e=Symbol("maybeEnd"),Kt=Symbol("writing"),ut=Symbol("aborted"),Xe=Symbol("onDone"),At=Symbol("sawValidEntry"),qe=Symbol("sawNullBlock"),je=Symbol("sawEOF"),Ys=Symbol("closeStream"),Rn=()=>!0,st=class extends wn{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Nt];[B]="begin";[ft]="";[V];[ae];[dt]=!1;[y];[ut]=!1;[At];[qe]=!1;[je]=!1;[Kt]=!1;[le]=!1;[Ui]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(Xe,()=>{(this[B]==="begin"||this[At]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Xe,t.ondone):this.on(Xe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Sn,this.filter=typeof t.filter=="function"?t.filter:Rn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Ys]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Lt(this,t,e,i)}[Zs](t,e){this[At]===void 0&&(this[At]=!1);let i;try{i=new F(t,e,this[V],this[ae])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[qe]?(this[je]=!0,this[B]==="begin"&&(this[B]="header"),this[Dt]("eof")):(this[qe]=!0,this[Dt]("nullBlock"));else if(this[qe]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new Yt(i,this[V],this[ae]);if(!this[At])if(n.remain){let o=()=>{n.invalid||(this[At]=!0)};n.on("end",o)}else this[At]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Dt]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Dt]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[zi]())))}}}[Ys](){queueMicrotask(()=>this.emit("close"))}[Hs](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[zi]()),e=!1);return e}[zi](){do;while(this[Hs](this[it].shift()));if(!this[it].length){let t=this[et];!t||t.flowing||t.size===t.remain?this[Kt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Hi](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Gs](t,e){let i=this[Nt],r=this[Hi](t,e);return!this[Nt]&&i&&this[Ws](i),r}[Dt](t,e,i){!this[it].length&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Ws](t){switch(this[Dt]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[ae]=ct.parse(this[ft],this[ae],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.lengththis[Ke](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[Ke]()}),this[Kt]=!0;let l=!!this[y][a?"end":"write"](t);return this[Kt]=!1,i?.(),l}}this[Kt]=!0,this[y]?this[y].write(t):this[Ke](t),this[Kt]=!1;let n=this[it].length?!1:this[et]?this[et].flowing:!0;return!n&&!this[it].length&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Wi](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[$e](){if(this[dt]&&!this[Ui]&&!this[ut]&&!this[le]){this[Ui]=!0;let t=this[Nt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[Dt](Xe)}}[Ke](t){if(this[le]&&t)this[Wi](t);else if(!t&&!this[p])this[$e]();else if(t){if(this[le]=!0,this[p]){this[Wi](t);let e=this[p];this[p]=void 0,this[Ve](e)}else this[Ve](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[je];){let e=this[p];this[p]=void 0,this[Ve](e)}this[le]=!1}(!this[p]||this[dt])&&this[$e]()}[Ve](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[je];)switch(this[B]){case"begin":case"header":this[Zs](t,e),e+=512;break;case"ignore":case"body":e+=this[Hi](t,e);break;case"meta":e+=this[Gs](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var _n=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Yi=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||gn(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);l!==void 0?a=l:a=r(bn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},On=s=>{let t=new st(s),e=s.file,i;try{i=Vt.openSync(e,"r");let r=Vt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Vt.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},It=K(On,Tn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Yi(s,t),s.noResume||_n(s)});import ci from"fs";import $ from"fs";import Xs from"path";var Ki=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as xn}from"node:path";var{isAbsolute:Ln,parse:Ks}=xn,ce=s=>{let t="",e=Ks(s);for(;Ln(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Ks(s)}return[t,s]};var Qe=["|","<",">","?",":"],Vi=Qe.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Nn=new Map(Qe.map((s,t)=>[s,Vi[t]])),Dn=new Map(Vi.map((s,t)=>[s,Qe[t]])),$i=s=>Qe.reduce((t,e)=>t.split(e).join(Nn.get(e)),s),Vs=s=>Vi.reduce((t,e)=>t.split(e).join(Dn.get(e)),s);var tr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),An=16*1024*1024,qs=Symbol("process"),js=Symbol("file"),Qs=Symbol("directory"),qi=Symbol("symlink"),Js=Symbol("hardlink"),fe=Symbol("header"),Je=Symbol("read"),ji=Symbol("lstat"),ti=Symbol("onlstat"),Qi=Symbol("onread"),Ji=Symbol("onreadlink"),ts=Symbol("openfile"),es=Symbol("onopenfile"),pt=Symbol("close"),ei=Symbol("mode"),is=Symbol("awaitDrain"),Xi=Symbol("ondrain"),X=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=re(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||An,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Vs(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=f(i.absolute||Xs.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ti](n):this[ji]()}warn(t,e,i={}){return Lt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ji](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ti](e)})}[ti](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=In(t),this.emit("stat",t),this[qs]()}[qs](){switch(this.type){case"File":return this[js]();case"Directory":return this[Qs]();case"SymbolicLink":return this[qi]();default:return this.end()}}[ei](t){return Ki(t,this.type==="Directory",this.portable)}[X](t){return tr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[ei](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[Qs](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[qi](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[Ji](e)})}[Ji](t){this.linkpath=f(t),this[fe](),this.end()}[Js](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(Xs.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[js](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[Js](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[ts]()}[ts](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[es](e)})}[es](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Je]()}[Je](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[Qi](h)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[Qi](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[Xi]())}[is](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Je]()}},ii=class extends de{sync=!0;[ji](){this[ti]($.lstatSync(this.absolute))}[qi](){this[Ji]($.readlinkSync(this.absolute))}[ts](){this[es]($.openSync(this.absolute,"r"))}[Je](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=$.readSync(e,i,r,n,o);this[Qi](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[is](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},si=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Lt(this,t,e,i)}constructor(t,e={}){let i=re(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ei](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return tr(t,this.prefix)}[ei](t){return Ki(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},In=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var ri=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Be(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new Ue(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ge(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[os]()),this.on("resume",()=>e.resume())}else this.on("drain",this[os]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new ri,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[me]=!1}[nr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return t instanceof Yt?this[ir](t):this[oi](t),this.flowing}[ir](t){let e=f(rr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new fi(t.path,e);i.entry=new si(t,this[ns](i)),i.entry.on("end",()=>this[rs](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[oi](t){let e=f(rr.resolve(this.cwd,t));this[W].push(new fi(t,e)),this[Ft]()}[hs](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ci[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[ni](t,r)})}[ni](t,e){this.statCache.set(t.absolute,e),t.stat=e,this.filter(t.path,e)?e.isFile()&&e.nlink>1&&t===this[Ct]&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync&&this[ss](t):t.ignore=!0,this[Ft]()}[as](t){t.pending=!0,this[G]+=1,ci.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[hi](t,i)})}[hi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[sr](t){this[G]+=1;try{return new this[li](t.path,this[ns](t)).on("end",()=>this[rs](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[os](){this[Ct]&&this[Ct].entry&&this[Ct].entry.resume()}[ai](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Lt(this,t,e,i)}},kt=class extends Et{sync=!0;constructor(t){super(t),this[li]=ii}pause(){}resume(){}[hs](t){let e=this.follow?"statSync":"lstatSync";this[ni](t,ci[e](t.absolute))}[as](t){this[hi](t,ci.readdirSync(t.absolute))}[ai](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[oi](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[nr](r)})}};var vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),hr(e,t)},Mn=(s,t)=>{let e=new Et(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return ar(e,t),r},hr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:or.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},ar=async(s,t)=>{for(let e=0;e{s.add(r)}}):s.add(i)}s.end()},Bn=(s,t)=>{let e=new kt(s);return hr(e,t),e},Pn=(s,t)=>{let e=new Et(s);return ar(e,t),e},zn=K(vn,Mn,Bn,Pn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Lr from"node:fs";import io from"node:assert";import{randomBytes as xr}from"node:crypto";import u from"node:fs";import R from"node:path";import lr from"fs";var Un=process.env.__FAKE_PLATFORM__||process.platform,Hn=Un==="win32",{O_CREAT:Wn,O_TRUNC:Gn,O_WRONLY:Zn}=lr.constants,cr=Number(process.env.__FAKE_FS_O_FILENAME__)||lr.constants.UV_FS_O_FILEMAP||0,Yn=Hn&&!!cr,Kn=512*1024,Vn=cr|Gn|Wn|Zn,ls=Yn?s=>s"w";import ui from"node:fs";import Ee from"node:path";var cs=(s,t,e)=>{try{return ui.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},di=(s,t,e,i)=>{ui.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},$n=(s,t,e,i,r)=>{if(t.isDirectory())fs(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);di(o,e,i,r)});else{let n=Ee.resolve(s,t.name);di(n,e,i,r)}},fs=(s,t,e,i)=>{ui.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return di(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return di(s,t,e,i)}};for(let l of n)$n(s,l,t,e,a)})},Xn=(s,t,e,i)=>{t.isDirectory()&&ds(Ee.resolve(s,t.name),e,i),cs(Ee.resolve(s,t.name),e,i)},ds=(s,t,e)=>{let i;try{i=ui.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return cs(s,t,e);throw n}for(let r of i)Xn(s,r,t,e);return cs(s,t,e)};import k from"node:fs";import qn from"node:fs/promises";import mi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var wt=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var jn=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},fr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?fs(x,o,h,_s=>S(_s)):n?k.chmod(s,r,e):e()};if(s===d)return jn(s,S);if(l)return qn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(mi.relative(d,s)).split("/");us(d,N,r,c,d,void 0,S)},us=(s,t,e,i,r,n,o)=>{if(!t.length)return o(null,n);let h=t.shift(),a=f(mi.resolve(s+"/"+h));k.mkdir(a,e,dr(a,t,e,i,r,n,o))},dr=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())us(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,dr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new wt(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,us(s,t,e,i,r,n,o))},Qn=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},ur=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ds(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return Qn(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(mi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(mi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let Os=k.lstatSync(x);if(Os.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(Os.isSymbolicLink())return new wt(x,x+"/"+T.join("/"))}}return d(N)};import{join as Er}from"node:path";var ms=Object.create(null),mr=1e4,$t=new Set,pr=s=>{$t.has(s)?$t.delete(s):ms[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),$t.add(s);let t=ms[s],e=$t.size-mr;if(e>mr/10){for(let i of $t)if($t.delete(i),delete ms[i],--e<=0)break}return t};var Jn=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,to=Jn==="win32",eo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e[e.length-1];return r!==void 0&&(i=Er(r,i)),e.push(i||"/"),e},[]),pi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=to?["win32 parallelization disabled"]:t.map(r=>mt(Er(pr(r))));let i=new Set(t.map(r=>eo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n[n.length-1];o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var wr=()=>process.umask();var Sr=Symbol("onEntry"),Ss=Symbol("checkFs"),yr=Symbol("checkFs2"),ys=Symbol("isReusable"),P=Symbol("makeFs"),Rs=Symbol("file"),bs=Symbol("directory"),wi=Symbol("link"),Rr=Symbol("symlink"),br=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),gr=Symbol("unsupported"),_r=Symbol("checkPath"),ps=Symbol("stripAbsolutePath"),St=Symbol("mkdir"),O=Symbol("onError"),Ei=Symbol("pending"),Or=Symbol("pend"),Xt=Symbol("unpend"),Es=Symbol("ended"),ws=Symbol("maybeClose"),gs=Symbol("skip"),Re=Symbol("doChown"),be=Symbol("uid"),ge=Symbol("gid"),_e=Symbol("checkedCwd"),so=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=so==="win32",ro=1024,no=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+xr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},oo=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+xr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Tr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,qt=class extends st{[Es]=!1;[_e]=!1;[Ei]=0;reservations=new pi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[Es]=!0,this[ws]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:ro,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:wr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Sr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[ws](){this[Es]&&this[Ei]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[ps](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replace(/\\/g,"/").split("/");if(h.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;{let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[_r](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[ps](t,"path")||!this[ps](t,"linkpath"))return!1;if(R.isAbsolute(t.path)?t.absolute=f(R.resolve(t.path)):t.absolute=f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+$i(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+$i(t.path.slice(n.length))}return!0}[Sr](t){if(!this[_r](t))return t.resume();switch(io.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ss](t);default:return this[gr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[Xt](),e.resume())}[St](t,e,i){fr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return Tr(this.uid,t.uid,this.processUid)}[ge](t){return Tr(this.gid,t.gid,this.processGid)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:ls(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[Xt](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[be](t),d=this[ge](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[St](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[Xt](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[ge](t)),o)),o()})}[gr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Rr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[wi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[br](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[wi](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new wt(h,R.resolve(h,i.join("/"))));this[ye](t,h,i,r,n)})}[Or](){this[Ei]++}[Xt](){this[Ei]--,this[ws]()}[gs](t){this[Xt](),t.resume()}[ys](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[Ss](t){this[Or]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[yr](t,i))}[yr](t,e){let i=h=>{e(h)},r=()=>{this[St](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[_e]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[St](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[gs](t),i();return}if(h||this[ys](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);no(String(t.absolute),l=>this[P](l??null,t,i))})};this[_e]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Rs](e,i);case"Link":return this[br](e,i);case"SymbolicLink":return this[Rr](e,i);case"Directory":case"GNUDumpDir":return this[bs](e,i)}}[wi](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[Xt](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends qt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[Ss](t){if(!this[_e]){let n=this[St](this.cwd,this.dmode);if(n)return this[O](n,t);this[_e]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[St](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[gs](t);if(e||this[ys](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>oo(String(t.absolute)));this[P](r,t)}[Rs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),ls(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[Re](t)){let a=this[be](t),l=this[ge](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[St](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[ge](t)))}catch{}e(),t.resume()}[St](t,e){try{return ur(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||!i.length)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=Se(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new wt(o,R.resolve(e,i.join("/"))))}r()}[wi](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var ho=s=>{let t=new Te(s),e=s.file,i=Lr.statSync(e),r=s.maxReadSize||16*1024*1024;new ve(e,{readSize:r,size:i.size}).pipe(t)},ao=(s,t)=>{let e=new qt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Lr.stat(r,(a,l)=>{if(a)h(a);else{let c=new gt(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},lo=K(ho,ao,s=>new Te(s),s=>new qt(s),(s,t)=>{t?.length&&Yi(s,t)});import v from"node:fs";import Nr from"node:path";var co=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,fo(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},fo=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),mo(t,r)},uo=(s,t)=>{t=Array.from(t);let e=new Et(s),i=(n,o,h)=>{let a=(T,N)=>{T?v.close(n,E=>h(T)):h(null,N)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||typeof N>"u")return a(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),po(e,t)})})};v.open(s.file,h,a)})},mo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:Nr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},po=async(s,t)=>{for(let e=0;es.add(r)}):s.add(i)}s.end()},vt=K(co,uo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!ks(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Eo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),wo(s)}),wo=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,Et as Pack,fi as PackJob,kt as PackSync,st as Parser,ct as Pax,Yt as ReadEntry,qt as Unpack,Te as UnpackSync,de as WriteEntry,ii as WriteEntrySync,si as WriteEntryTar,zn as c,zn as create,lo as extract,Yi as filesFilter,It as list,vt as r,vt as replace,It as t,Mi as types,Eo as u,Eo as update,lo as x}; +var kr=Object.defineProperty;var vr=(s,t)=>{for(var e in t)kr(s,e,{get:t[e],enumerable:!0})};import Kr from"events";import I from"fs";import{EventEmitter as Ti}from"node:events";import Ns from"node:stream";import{StringDecoder as Mr}from"node:string_decoder";var Os=typeof process=="object"&&process?process:{stdout:null,stderr:null},Br=s=>!!s&&typeof s=="object"&&(s instanceof D||s instanceof Ns||Pr(s)||zr(s)),Pr=s=>!!s&&typeof s=="object"&&s instanceof Ti&&typeof s.pipe=="function"&&s.pipe!==Ns.Writable.prototype.pipe,zr=s=>!!s&&typeof s=="object"&&s instanceof Ti&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),j=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),Le=Symbol("emittingEnd"),jt=Symbol("emittedError"),Ne=Symbol("closed"),Ts=Symbol("read"),Ae=Symbol("flush"),xs=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),b=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),_=Symbol("buffer"),A=Symbol("pipes"),g=Symbol("bufferLength"),yi=Symbol("bufferPush"),De=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),Ri=Symbol("error"),bi=Symbol("emitData"),Ls=Symbol("emitEnd"),_i=Symbol("emitEnd2"),Z=Symbol("async"),gi=Symbol("abort"),Ie=Symbol("aborted"),Jt=Symbol("signal"),yt=Symbol("dataListeners"),C=Symbol("discarded"),te=s=>Promise.resolve().then(s),Ur=s=>s(),Hr=s=>s==="end"||s==="finish"||s==="prefinish",Wr=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Gr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ce=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Oi=class extends Ce{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},Zr=s=>!!s.objectMode,Yr=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",D=class extends Ti{[b]=!1;[Qt]=!1;[A]=[];[_]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[Le]=!1;[Ne]=!1;[jt]=null;[g]=0;[w]=!1;[Jt];[Ie]=!1;[yt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Zr(e)?(this[L]=!0,this[z]=null):Yr(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Mr(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[_]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[A]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[gi]():i.addEventListener("abort",()=>this[gi]()))}get bufferLength(){return this[g]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[gi](){this[Ie]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ie]}set aborted(t){}write(t,e,i){if(this[Ie])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?te:Ur;if(!this[L]&&!Buffer.isBuffer(t)){if(Gr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Wr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[b]&&this[g]!==0&&this[Ae](!0),this[b]?this.emit("data",t):this[yi](t),this[g]!==0&&this.emit("readable"),i&&r(i),this[b]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[b]&&this[g]!==0&&this[Ae](!0),this[b]?this.emit("data",t):this[yi](t),this[g]!==0&&this.emit("readable"),i&&r(i),this[b]):(this[g]!==0&&this.emit("readable"),i&&r(i),this[b])}read(t){if(this[w])return null;if(this[C]=!1,this[g]===0||t===0||t&&t>this[g])return this[j](),null;this[L]&&(t=null),this[_].length>1&&!this[L]&&(this[_]=[this[z]?this[_].join(""):Buffer.concat(this[_],this[g])]);let e=this[Ts](t||null,this[_][0]);return this[j](),e}[Ts](t,e){if(this[L])this[De]();else{let i=e;t===i.length||t===null?this[De]():typeof i=="string"?(this[_][0]=i.slice(t),e=i.slice(0,t),this[g]-=t):(this[_][0]=i.subarray(t),e=i.subarray(0,t),this[g]-=t)}return this.emit("data",e),!this[_].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[b]||!this[Qt])&&this[j](),this}[Bt](){this[w]||(!this[yt]&&!this[A].length&&(this[C]=!0),this[Qt]=!1,this[b]=!0,this.emit("resume"),this[_].length?this[Ae]():this[q]?this[j]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[b]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[b]}get paused(){return this[Qt]}[yi](t){this[L]?this[g]+=1:this[g]+=t.length,this[_].push(t)}[De](){return this[L]?this[g]-=1:this[g]-=this[_][0].length,this[_].shift()}[Ae](t=!1){do;while(this[xs](this[De]())&&this[_].length);!t&&!this[_].length&&!this[q]&&this.emit("drain")}[xs](t){return this.emit("data",t),this[b]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[rt];return e=e||{},t===Os.stdout||t===Os.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[A].push(e.proxyErrors?new Oi(this,t,e):new Ce(this,t,e)),this[Z]?te(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[A].find(i=>i.dest===t);e&&(this[A].length===1?(this[b]&&this[yt]===0&&(this[b]=!1),this[A]=[]):this[A].splice(this[A].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[yt]++,!this[A].length&&!this[b]&&this[Bt]();else if(t==="readable"&&this[g]!==0)super.emit("readable");else if(Hr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[jt]){let r=e;this[Z]?te(()=>r.call(this,this[jt])):r.call(this,this[jt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[yt]=this.listeners("data").length,this[yt]===0&&!this[C]&&!this[A].length&&(this[b]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[yt]=0,!this[C]&&!this[A].length&&(this[b]=!1)),e}get emittedEnd(){return this[rt]}[j](){!this[Le]&&!this[rt]&&!this[w]&&this[_].length===0&&this[q]&&(this[Le]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[Le]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(te(()=>this[bi](i)),!0):this[bi](i);if(t==="end")return this[Ls]();if(t==="close"){if(this[Ne]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[jt]=i,super.emit(Ri,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[j](),n}else if(t==="resume"){let n=super.emit("resume");return this[j](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[j](),r}[bi](t){for(let i of this[A])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[j](),e}[Ls](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(te(()=>this[_i]()),!0):this[_i]())}[_i](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[A])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[A])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(Ri,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(Ri,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[_].length=0,this[g]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Br}};var Vr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),ee=Symbol("_ended"),m=Symbol("_fd"),xi=Symbol("_finished"),J=Symbol("_flags"),Li=Symbol("_flush"),Ii=Symbol("_handleChunk"),Ci=Symbol("_makeBuf"),se=Symbol("_mode"),Fe=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Ni=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ai=Symbol("_readSize"),Q=Symbol("_reading"),ie=Symbol("_remain"),Di=Symbol("_size"),ke=Symbol("_write"),Rt=Symbol("_writing"),ve=Symbol("_defaultFlag"),bt=Symbol("_errored"),_t=class extends D{[bt]=!1;[m];[U];[Ai];[Q]=!1;[Di];[ie];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ai]=e.readSize||16*1024*1024,this[Q]=!1,this[Di]=typeof e.size=="number"?e.size:1/0,this[ie]=this[Di],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[Ci](){return Buffer.allocUnsafe(Math.min(this[Ai],this[ie]))}[zt](){if(!this[Q]){this[Q]=!0;let t=this[Ci]();if(t.length===0)return process.nextTick(()=>this[Ni](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Ni](e,i,r))}}[Ni](t,e,i){this[Q]=!1,t?this[Ut](t):this[Ii](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[Q]=!0,this[H](),this.emit("error",t)}[Ii](t,e){let i=!1;return this[ie]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[ve]&&this[J]==="r+"&&t&&t.code==="ENOENT"?(this[J]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[Rt]||this[Li]())}end(t,e){return t&&this.write(t,e),this[ee]=!0,!this[Rt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[ee]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[Rt]||this[Y].length?(this[Y].push(t),this[Fe]=!0,!1):(this[Rt]=!0,this[ke](t),!0)}[ke](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[Li]():(this[Rt]=!1,this[ee]&&!this[xi]?(this[xi]=!0,this[H](),this.emit("finish")):this[Fe]&&(this[Fe]=!1,this.emit("drain"))))}[Li](){if(this[Y].length===0)this[ee]&&this[Pt](null,0);else if(this[Y].length===1)this[ke](this[Y].pop());else{let t=this[Y];this[Y]=[],Vr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ve]&&this[J]==="r+")try{t=I.openSync(this[U],this[J],this[se])}catch(e){if(e?.code==="ENOENT")return this[J]="w",this[ht]();throw e}else t=I.openSync(this[U],this[J],this[se]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[ke](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import nr from"node:path";import Vt from"node:fs";import{dirname as xn,parse as Ln}from"path";var $r=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),As=s=>!!s.sync&&!!s.file,Ds=s=>!s.sync&&!!s.file,Is=s=>!!s.sync&&!s.file,Cs=s=>!s.sync&&!s.file;var Fs=s=>!!s.file;var Xr=s=>{let t=$r.get(s);return t||s},re=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Xr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=re(n);if(r?.(a,o),As(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(Ds(a)){let l=t(a,o);return h?l.then(()=>h(),h):l}else if(Is(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Cs(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as _n}from"events";import Mi from"assert";import{Buffer as gt}from"buffer";import*as ks from"zlib";import qr from"zlib";var jr=qr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},jr));var Qr=gt.concat,vs=Object.getOwnPropertyDescriptor(gt,"concat"),Jr=s=>s,ki=vs?.writable===!0||vs?.set!==void 0?s=>{gt.concat=s?Jr:Qr}:s=>{},Ot=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},vi=Symbol("flushFlag"),ne=class extends D{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof ks[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new ks[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return Mi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(gt.alloc(0),{[vi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ot](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=gt.from(t,e)),this.#t)return;Mi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},ki(!0);let h;try{let l=typeof t[vi]=="number"?t[vi]:this.#s;h=this.#e._processChunk(t,l),ki(!1)}catch(l){ki(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ot](gt.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Pe=class extends Be{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Ot](t){return this.#t?(this.#t=!1,t[9]=255,super[Ot](t)):super[Ot](t)}};var ze=class extends Be{constructor(t){super(t,"Unzip")}},Ue=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},He=class extends Ue{constructor(t){super(t,"BrotliCompress")}},We=class extends Ue{constructor(t){super(t,"BrotliDecompress")}},Ge=class extends ne{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ze=class extends Ge{constructor(t){super(t,"ZstdCompress")}},Ye=class extends Ge{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Ms=(s,t)=>{if(Number.isSafeInteger(s))s<0?sn(s,t):en(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},en=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},sn=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=Ps(r):r===0?t[i-1]=0:(e=!0,t[i-1]=zs(r))}},Bs=s=>{let t=s[0],e=t===128?nn(s.subarray(1,s.length)):t===255?rn(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},rn=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=Ps(n):n===0?o=n:(i=!0,o=zs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},nn=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},Ps=s=>(255^s)&255,zs=s=>(255^s)+1&255;var Bi={};vr(Bi,{code:()=>Ke,isCode:()=>oe,isName:()=>hn,name:()=>he});var oe=s=>he.has(s),hn=s=>Ke.has(s),he=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ke=new Map(Array.from(he).map(s=>[s[1],s[0]]));var F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");this.path=i?.path??Tt(t,e,100),this.mode=i?.mode??r?.mode??at(t,e+100,8),this.uid=i?.uid??r?.uid??at(t,e+108,8),this.gid=i?.gid??r?.gid??at(t,e+116,8),this.size=i?.size??r?.size??at(t,e+124,12),this.mtime=i?.mtime??r?.mtime??Pi(t,e+136,12),this.cksum=at(t,e+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Tt(t,e+156,1);if(oe(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=Tt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Tt(t,e+265,32),this.gname=i?.gname??r?.gname??Tt(t,e+297,32),this.devmaj=i?.devmaj??r?.devmaj??at(t,e+329,8)??0,this.devmin=i?.devmin??r?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let h=Tt(t,e+345,155);this.path=h+"/"+this.path}else{let h=Tt(t,e+345,130);h&&(this.path=h+"/"+this.path),this.atime=i?.atime??r?.atime??Pi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Pi(t,e+488,12)}let o=256;for(let h=e;h!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=an(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=xt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=zi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=xt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=xt(t,e+265,32,this.uname)||this.needPax,this.needPax=xt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=xt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=xt(t,e+345,155,o)||this.needPax:(this.needPax=xt(t,e+345,130,o)||this.needPax,this.needPax=zi(t,e+476,12,this.atime)||this.needPax,this.needPax=zi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Tt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Pi=(s,t,e)=>ln(at(s,t,e)),ln=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?Bs(s.subarray(t,t+e)):fn(s,t,e),cn=s=>isNaN(s)?void 0:s,fn=(s,t,e)=>cn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),dn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>dn[e]||i<0?(Ms(i,s.subarray(t,t+e)),!0):(un(s,t,e,i),!1),un=(s,t,e,i)=>s.write(mn(i,e),t,e,"ascii"),mn=(s,t)=>pn(Math.floor(s).toString(8),t),pn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",zi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),En=new Array(156).join("\0"),xt=(s,t,e,i)=>i===void 0?!1:(s.write(i+En,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as wn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+wn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(Sn(yn(t),e),i)}},Sn=(s,t)=>t?Object.assign({},t,s):s,yn=s=>s.replace(/\n$/,"").split(` +`).reduce(Rn,Object.create(null)),Rn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var bn=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=bn!=="win32"?s=>s:s=>s&&s.replaceAll(/\\/g,"/");var Yt=class extends D{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Lt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var gn=1024*1024,Zi=Buffer.from([31,139]),Yi=Buffer.from([40,181,47,253]),On=Math.max(Zi.length,Yi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),et=Symbol("readEntry"),Ui=Symbol("nextEntry"),Us=Symbol("processEntry"),V=Symbol("extendedHeader"),ae=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Hs=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Hi=Symbol("emittedEnd"),At=Symbol("emit"),y=Symbol("unzip"),Ve=Symbol("consumeChunk"),$e=Symbol("consumeChunkSub"),Wi=Symbol("consumeBody"),Ws=Symbol("consumeMeta"),Gs=Symbol("consumeHeader"),le=Symbol("consuming"),Gi=Symbol("bufferConcat"),Xe=Symbol("maybeEnd"),Kt=Symbol("writing"),ut=Symbol("aborted"),qe=Symbol("onDone"),Dt=Symbol("sawValidEntry"),je=Symbol("sawNullBlock"),Qe=Symbol("sawEOF"),Zs=Symbol("closeStream"),Tn=()=>!0,st=class extends _n{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Nt];[B]="begin";[ft]="";[V];[ae];[dt]=!1;[y];[ut]=!1;[Dt];[je]=!1;[Qe]=!1;[Kt]=!1;[le]=!1;[Hi]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(qe,()=>{(this[B]==="begin"||this[Dt]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(qe,t.ondone):this.on(qe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||gn,this.filter=typeof t.filter=="function"?t.filter:Tn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Zs]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Lt(this,t,e,i)}[Gs](t,e){this[Dt]===void 0&&(this[Dt]=!1);let i;try{i=new F(t,e,this[V],this[ae])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[je]?(this[Qe]=!0,this[B]==="begin"&&(this[B]="header"),this[At]("eof")):(this[je]=!0,this[At]("nullBlock"));else if(this[je]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new Yt(i,this[V],this[ae]);if(!this[Dt])if(n.remain){let o=()=>{n.invalid||(this[Dt]=!0)};n.on("end",o)}else this[Dt]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[At]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[At]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[Ui]())))}}}[Zs](){queueMicrotask(()=>this.emit("close"))}[Us](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[Ui]()),e=!1);return e}[Ui](){do;while(this[Us](this[it].shift()));if(this[it].length===0){let t=this[et];!t||t.flowing||t.size===t.remain?this[Kt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Wi](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Ws](t,e){let i=this[Nt],r=this[Wi](t,e);return!this[Nt]&&i&&this[Hs](i),r}[At](t,e,i){this[it].length===0&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Hs](t){switch(this[At]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[ae]=ct.parse(this[ft],this[ae],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.lengththis[Ve](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[Ve]()}),this[Kt]=!0;let l=!!this[y][a?"end":"write"](t);return this[Kt]=!1,i?.(),l}}this[Kt]=!0,this[y]?this[y].write(t):this[Ve](t),this[Kt]=!1;let n=this[it].length>0?!1:this[et]?this[et].flowing:!0;return!n&&this[it].length===0&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Gi](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[Xe](){if(this[dt]&&!this[Hi]&&!this[ut]&&!this[le]){this[Hi]=!0;let t=this[Nt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[At](qe)}}[Ve](t){if(this[le]&&t)this[Gi](t);else if(!t&&!this[p])this[Xe]();else if(t){if(this[le]=!0,this[p]){this[Gi](t);let e=this[p];this[p]=void 0,this[$e](e)}else this[$e](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[Qe];){let e=this[p];this[p]=void 0,this[$e](e)}this[le]=!1}(!this[p]||this[dt])&&this[Xe]()}[$e](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[Qe];)switch(this[B]){case"begin":case"header":this[Gs](t,e),e+=512;break;case"ignore":case"body":e+=this[Wi](t,e);break;case"meta":e+=this[Ws](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var Nn=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Ki=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||Ln(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);a=l!==void 0?l:r(xn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},An=s=>{let t=new st(s),e=s.file,i;try{i=Vt.openSync(e,"r");let r=Vt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Vt.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},It=K(An,Dn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Ki(s,t),s.noResume||Nn(s)});import fi from"fs";import $ from"fs";import $s from"path";var Vi=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as In}from"node:path";var{isAbsolute:Cn,parse:Ys}=In,ce=s=>{let t="",e=Ys(s);for(;Cn(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Ys(s)}return[t,s]};var Je=["|","<",">","?",":"],$i=Je.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),Fn=new Map(Je.map((s,t)=>[s,$i[t]])),kn=new Map($i.map((s,t)=>[s,Je[t]])),Xi=s=>Je.reduce((t,e)=>t.split(e).join(Fn.get(e)),s),Ks=s=>$i.reduce((t,e)=>t.split(e).join(kn.get(e)),s);var Js=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),vn=16*1024*1024,Xs=Symbol("process"),qs=Symbol("file"),js=Symbol("directory"),ji=Symbol("symlink"),Qs=Symbol("hardlink"),fe=Symbol("header"),ti=Symbol("read"),Qi=Symbol("lstat"),ei=Symbol("onlstat"),Ji=Symbol("onread"),ts=Symbol("onreadlink"),es=Symbol("openfile"),is=Symbol("onopenfile"),pt=Symbol("close"),ii=Symbol("mode"),ss=Symbol("awaitDrain"),qi=Symbol("ondrain"),X=Symbol("prefix"),de=class extends D{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=re(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||vn,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Ks(this.path.replaceAll(/\\/g,"/")),t=t.replaceAll(/\\/g,"/")),this.absolute=f(i.absolute||$s.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ei](n):this[Qi]()}warn(t,e,i={}){return Lt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[Qi](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ei](e)})}[ei](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Mn(t),this.emit("stat",t),this[Xs]()}[Xs](){switch(this.type){case"File":return this[qs]();case"Directory":return this[js]();case"SymbolicLink":return this[ji]();default:return this.end()}}[ii](t){return Vi(t,this.type==="Directory",this.portable)}[X](t){return Js(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[ii](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[js](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[ji](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ts](e)})}[ts](t){this.linkpath=f(t),this[fe](),this.end()}[Qs](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f($s.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[qs](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[Qs](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[es]()}[es](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[is](e)})}[is](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ti]()}[ti](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[Ji](h)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[Ji](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[qi]())}[ss](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ti]()}},si=class extends de{sync=!0;[Qi](){this[ei]($.lstatSync(this.absolute))}[ji](){this[ts]($.readlinkSync(this.absolute))}[es](){this[is]($.openSync(this.absolute,"r"))}[ti](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=$.readSync(e,i,r,n,o);this[Ji](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[ss](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},ri=class extends D{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Lt(this,t,e,i)}constructor(t,e={}){let i=re(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ii](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return Js(t,this.prefix)}[ii](t){return Vi(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},Mn=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var ni=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Pe(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new He(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ze(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[hs]()),this.on("resume",()=>e.resume())}else this.on("drain",this[hs]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new ni,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[me]=!1}[rr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[me]=!0,this[Ft](),i&&i(),this}write(t){if(this[me])throw new Error("write after end");return t instanceof Yt?this[er](t):this[hi](t),this.flowing}[er](t){let e=f(sr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new di(t.path,e);i.entry=new ri(t,this[os](i)),i.entry.on("end",()=>this[ns](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[hi](t){let e=f(sr.resolve(this.cwd,t));this[W].push(new di(t,e)),this[Ft]()}[as](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";fi[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[oi](t,r)})}[oi](t,e){this.statCache.set(t.absolute,e),t.stat=e,this.filter(t.path,e)?e.isFile()&&e.nlink>1&&t===this[Ct]&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync&&this[rs](t):t.ignore=!0,this[Ft]()}[ls](t){t.pending=!0,this[G]+=1,fi.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[ai](t,i)})}[ai](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[ir](t){this[G]+=1;try{return new this[ci](t.path,this[os](t)).on("end",()=>this[ns](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[hs](){this[Ct]&&this[Ct].entry&&this[Ct].entry.resume()}[li](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[hi](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Lt(this,t,e,i)}},kt=class extends Et{sync=!0;constructor(t){super(t),this[ci]=si}pause(){}resume(){}[as](t){let e=this.follow?"statSync":"lstatSync";this[oi](t,fi[e](t.absolute))}[ls](t){this[ai](t,fi.readdirSync(t.absolute))}[li](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[hi](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[rr](r)})}};var Un=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),or(e,t)},Hn=(s,t)=>{let e=new Et(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return hr(e,t).catch(n=>e.emit("error",n)),r},or=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:nr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},hr=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await It({file:nr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(e);s.end()},Wn=(s,t)=>{let e=new kt(s);return or(e,t),e},Gn=(s,t)=>{let e=new Et(s);return hr(e,t).catch(i=>e.emit("error",i)),e},Zn=K(Un,Hn,Wn,Gn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Cr from"node:fs";import so from"node:assert";import{randomBytes as Ir}from"node:crypto";import u from"node:fs";import R from"node:path";import cr from"fs";var Yn=process.env.__FAKE_PLATFORM__||process.platform,fr=Yn==="win32",{O_CREAT:dr,O_NOFOLLOW:ar,O_TRUNC:ur,O_WRONLY:mr}=cr.constants,pr=Number(process.env.__FAKE_FS_O_FILENAME__)||cr.constants.UV_FS_O_FILEMAP||0,Kn=fr&&!!pr,Vn=512*1024,$n=pr|ur|dr|mr,lr=!fr&&typeof ar=="number"?ar|ur|dr|mr:null,cs=lr!==null?()=>lr:Kn?s=>s"w";import mi from"node:fs";import Ee from"node:path";var fs=(s,t,e)=>{try{return mi.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},ui=(s,t,e,i)=>{mi.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Xn=(s,t,e,i,r)=>{if(t.isDirectory())ds(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);ui(o,e,i,r)});else{let n=Ee.resolve(s,t.name);ui(n,e,i,r)}},ds=(s,t,e,i)=>{mi.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return ui(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return ui(s,t,e,i)}};for(let l of n)Xn(s,l,t,e,a)})},qn=(s,t,e,i)=>{t.isDirectory()&&us(Ee.resolve(s,t.name),e,i),fs(Ee.resolve(s,t.name),e,i)},us=(s,t,e)=>{let i;try{i=mi.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return fs(s,t,e);throw n}for(let r of i)qn(s,r,t,e);return fs(s,t,e)};import k from"node:fs";import jn from"node:fs/promises";import pi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var wt=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var Qn=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},Er=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?ds(x,o,h,xe=>S(xe)):n?k.chmod(s,r,e):e()};if(s===d)return Qn(s,S);if(l)return jn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(pi.relative(d,s)).split("/");ms(d,N,r,c,d,void 0,S)},ms=(s,t,e,i,r,n,o)=>{if(t.length===0)return o(null,n);let h=t.shift(),a=f(pi.resolve(s+"/"+h));k.mkdir(a,e,wr(a,t,e,i,r,n,o))},wr=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())ms(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,wr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new wt(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,ms(s,t,e,i,r,n,o))},Jn=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},Sr=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&us(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return Jn(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(pi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(pi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let xe=k.lstatSync(x);if(xe.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(xe.isSymbolicLink())return new wt(x,x+"/"+T.join("/"))}}return d(N)};import{join as br}from"node:path";var ps=Object.create(null),yr=1e4,$t=new Set,Rr=s=>{$t.has(s)?$t.delete(s):ps[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),$t.add(s);let t=ps[s],e=$t.size-yr;if(e>yr/10){for(let i of $t)if($t.delete(i),delete ps[i],--e<=0)break}return t};var to=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,eo=to==="win32",io=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e.at(-1);return r!==void 0&&(i=br(r,i)),e.push(i||"/"),e},[]),Ei=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=eo?["win32 parallelization disabled"]:t.map(r=>mt(br(Rr(r))));let i=new Set(t.map(r=>io(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n.at(-1);o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var _r=()=>process.umask();var gr=Symbol("onEntry"),ys=Symbol("checkFs"),Or=Symbol("checkFs2"),Rs=Symbol("isReusable"),P=Symbol("makeFs"),bs=Symbol("file"),_s=Symbol("directory"),Si=Symbol("link"),Tr=Symbol("symlink"),xr=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),Lr=Symbol("unsupported"),Nr=Symbol("checkPath"),Es=Symbol("stripAbsolutePath"),St=Symbol("mkdir"),O=Symbol("onError"),wi=Symbol("pending"),Ar=Symbol("pend"),Xt=Symbol("unpend"),ws=Symbol("ended"),Ss=Symbol("maybeClose"),gs=Symbol("skip"),Re=Symbol("doChown"),be=Symbol("uid"),_e=Symbol("gid"),ge=Symbol("checkedCwd"),ro=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=ro==="win32",no=1024,oo=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+Ir(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},ho=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+Ir(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Dr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,qt=class extends st{[ws]=!1;[ge]=!1;[wi]=0;reservations=new Ei;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[ws]=!0,this[Ss]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=t.preserveOwner===void 0&&typeof t.uid!="number"?!!(process.getuid&&process.getuid()===0):!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:no,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:_r():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[gr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[Ss](){this[ws]&&this[wi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Es](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replaceAll(/\\/g,"/").split("/");if(h.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[Nr](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Es](t,"path")||!this[Es](t,"linkpath"))return!1;if(t.absolute=R.isAbsolute(t.path)?f(R.resolve(t.path)):f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+Xi(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+Xi(t.path.slice(n.length))}return!0}[gr](t){if(!this[Nr](t))return t.resume();switch(so.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[ys](t);default:return this[Lr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[Xt](),e.resume())}[St](t,e,i){Er(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return Dr(this.uid,t.uid,this.processUid)}[_e](t){return Dr(this.gid,t.gid,this.processGid)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:cs(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&u.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[Xt](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[be](t),d=this[_e](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[_s](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[St](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[Xt](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[be](t)),Number(this[_e](t)),o)),o()})}[Lr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Tr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[Si](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[xr](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[Si](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);u.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new wt(h,R.resolve(h,i.join("/"))));this[ye](t,h,i,r,n)})}[Ar](){this[wi]++}[Xt](){this[wi]--,this[Ss]()}[gs](t){this[Xt](),t.resume()}[Rs](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[ys](t){this[Ar]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[Or](t,i))}[Or](t,e){let i=h=>{e(h)},r=()=>{this[St](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[ge]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[St](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[gs](t),i();return}if(h||this[Rs](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);oo(String(t.absolute),l=>this[P](l??null,t,i))})};this[ge]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[bs](e,i);case"Link":return this[xr](e,i);case"SymbolicLink":return this[Tr](e,i);case"Directory":case"GNUDumpDir":return this[_s](e,i)}}[Si](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[Xt](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends qt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[ys](t){if(!this[ge]){let n=this[St](this.cwd,this.dmode);if(n)return this[O](n,t);this[ge]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[St](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[gs](t);if(e||this[Rs](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>ho(String(t.absolute)));this[P](r,t)}[bs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{u.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=u.openSync(String(t.absolute),cs(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{u.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,a,l)}catch(c){try{u.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[Re](t)){let a=this[be](t),l=this[_e](t);try{u.fchownSync(n,Number(a),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[_s](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[St](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[be](t)),Number(this[_e](t)))}catch{}e(),t.resume()}[St](t,e){try{return Sr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||i.length===0)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=Se(()=>u.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new wt(o,R.resolve(e,i.join("/"))))}r()}[Si](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var ao=s=>{let t=new Te(s),e=s.file,i=Cr.statSync(e),r=s.maxReadSize||16*1024*1024;new Me(e,{readSize:r,size:i.size}).pipe(t)},lo=(s,t)=>{let e=new qt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Cr.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},co=K(ao,lo,s=>new Te(s),s=>new qt(s),(s,t)=>{t?.length&&Ki(s,t)});import v from"node:fs";import Fr from"node:path";var fo=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,uo(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},uo=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),po(t,r)},mo=(s,t)=>{t=Array.from(t);let e=new Et(s),i=(n,o,h)=>{let a=(T,N)=>{T?v.close(n,E=>h(T)):h(null,N)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||N===void 0)return a(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),Eo(e,t)})})};v.open(s.file,h,a)})},po=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?It({file:Fr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},Eo=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await It({file:Fr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e);s.end()},vt=K(fo,mo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!Fs(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var wo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),So(s)}),So=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,Et as Pack,di as PackJob,kt as PackSync,st as Parser,ct as Pax,Yt as ReadEntry,qt as Unpack,Te as UnpackSync,de as WriteEntry,si as WriteEntrySync,ri as WriteEntryTar,Zn as c,Zn as create,co as extract,Ki as filesFilter,It as list,vt as r,vt as replace,It as t,Bi as types,wo as u,wo as update,co as x}; //# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/tar/dist/esm/list.js b/deps/npm/node_modules/tar/dist/esm/list.js index a63a8841769a33..4c3af58192eceb 100644 --- a/deps/npm/node_modules/tar/dist/esm/list.js +++ b/deps/npm/node_modules/tar/dist/esm/list.js @@ -27,12 +27,7 @@ export const filesFilter = (opt, files) => { ret = false; else { const m = map.get(file); - if (m !== undefined) { - ret = m; - } - else { - ret = mapHas(dirname(file), root); - } + ret = m !== undefined ? m : mapHas(dirname(file), root); } map.set(file, ret); return ret; @@ -74,7 +69,7 @@ const listFileSync = (opt) => { fs.closeSync(fd); /* c8 ignore next */ } - catch (er) { } + catch { } } } }; diff --git a/deps/npm/node_modules/tar/dist/esm/make-command.js b/deps/npm/node_modules/tar/dist/esm/make-command.js index f2f737bca78fd7..b915bc04b74bad 100644 --- a/deps/npm/node_modules/tar/dist/esm/make-command.js +++ b/deps/npm/node_modules/tar/dist/esm/make-command.js @@ -9,12 +9,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida cb = entries; entries = undefined; } - if (!entries) { - entries = []; - } - else { - entries = Array.from(entries); - } + entries = !entries ? [] : Array.from(entries); const opt = dealias(opt_); validate?.(opt, entries); if (isSyncFile(opt)) { @@ -25,9 +20,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida } else if (isAsyncFile(opt)) { const p = asyncFile(opt, entries); - // weirdness to make TS happy - const c = cb ? cb : undefined; - return c ? p.then(() => c(), c) : p; + return cb ? p.then(() => cb(), cb) : p; } else if (isSyncNoFile(opt)) { if (typeof cb === 'function') { @@ -42,9 +35,7 @@ export const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, valida return asyncNoFile(opt, entries); /* c8 ignore start */ } - else { - throw new Error('impossible options??'); - } + throw new Error('impossible options??'); /* c8 ignore stop */ }, { syncFile, diff --git a/deps/npm/node_modules/tar/dist/esm/mkdir.js b/deps/npm/node_modules/tar/dist/esm/mkdir.js index 9dba701f2973f4..7679907aba19f5 100644 --- a/deps/npm/node_modules/tar/dist/esm/mkdir.js +++ b/deps/npm/node_modules/tar/dist/esm/mkdir.js @@ -65,7 +65,7 @@ export const mkdir = (dir, opt, cb) => { mkdir_(cwd, parts, mode, unlink, cwd, undefined, done); }; const mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => { - if (!parts.length) { + if (parts.length === 0) { return cb(null, created); } const p = parts.shift(); @@ -76,8 +76,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => { if (er) { fs.lstat(part, (statEr, st) => { if (statEr) { - statEr.path = - statEr.path && normalizeWindowsPath(statEr.path); + statEr.path = statEr.path && normalizeWindowsPath(statEr.path); cb(statEr); } else if (st.isDirectory()) { @@ -106,7 +105,7 @@ const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => { }; const checkCwdSync = (dir) => { let ok = false; - let code = undefined; + let code; try { ok = fs.statSync(dir).isDirectory(); } @@ -152,14 +151,14 @@ export const mkdirSync = (dir, opt) => { } const sub = normalizeWindowsPath(path.relative(cwd, dir)); const parts = sub.split('/'); - let created = undefined; + let created; for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) { part = normalizeWindowsPath(path.resolve(part)); try { fs.mkdirSync(part, mode); created = created || part; } - catch (er) { + catch { const st = fs.lstatSync(part); if (st.isDirectory()) { continue; diff --git a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js index 2d97d2b884e627..bde0c962344a30 100644 --- a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js +++ b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js @@ -5,5 +5,5 @@ const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform; export const normalizeWindowsPath = platform !== 'win32' ? (p) => p - : (p) => p && p.replace(/\\/g, '/'); + : (p) => p && p.replaceAll(/\\/g, '/'); //# sourceMappingURL=normalize-windows-path.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/esm/pack.js b/deps/npm/node_modules/tar/dist/esm/pack.js index 95d9342ac34e68..ed87ffd49b787c 100644 --- a/deps/npm/node_modules/tar/dist/esm/pack.js +++ b/deps/npm/node_modules/tar/dist/esm/pack.js @@ -26,7 +26,7 @@ import { Minipass } from 'minipass'; import * as zlib from 'minizlib'; import { Yallist } from 'yallist'; import { ReadEntry } from './read-entry.js'; -import { warnMethod, } from './warn-method.js'; +import { warnMethod } from './warn-method.js'; const EOF = Buffer.alloc(1024); const ONSTAT = Symbol('onStat'); const ENDED = Symbol('ended'); @@ -86,7 +86,6 @@ export class Pack extends Minipass { [PROCESSING] = false; [ENDED] = false; constructor(opt = {}) { - //@ts-ignore super(); this.opt = opt; this.file = opt.file || ''; @@ -106,9 +105,7 @@ export class Pack extends Minipass { } this.portable = !!opt.portable; if (opt.gzip || opt.brotli || opt.zstd) { - if ((opt.gzip ? 1 : 0) + - (opt.brotli ? 1 : 0) + - (opt.zstd ? 1 : 0) > + if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) { throw new TypeError('gzip, brotli, zstd are mutually exclusive'); } @@ -284,7 +281,7 @@ export class Pack extends Minipass { } } this[PROCESSING] = false; - if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) { + if (this[ENDED] && this[QUEUE].length === 0 && this[JOBS] === 0) { if (this.zip) { this.zip.end(EOF); } @@ -328,9 +325,7 @@ export class Pack extends Minipass { if (job.ignore) { return; } - if (!this.noDirRecurse && - job.stat.isDirectory() && - !job.readdir) { + if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) { const rc = this.readdirCache.get(job.absolute); if (rc) { this[ONREADDIR](job, rc); diff --git a/deps/npm/node_modules/tar/dist/esm/parse.js b/deps/npm/node_modules/tar/dist/esm/parse.js index da52cd852731b9..02454bfd2c4052 100644 --- a/deps/npm/node_modules/tar/dist/esm/parse.js +++ b/deps/npm/node_modules/tar/dist/esm/parse.js @@ -22,7 +22,7 @@ import { BrotliDecompress, Unzip, ZstdDecompress } from 'minizlib'; import { Header } from './header.js'; import { Pax } from './pax.js'; import { ReadEntry } from './read-entry.js'; -import { warnMethod, } from './warn-method.js'; +import { warnMethod } from './warn-method.js'; const maxMetaEntrySize = 1024 * 1024; const gzipHeader = Buffer.from([0x1f, 0x8b]); const zstdHeader = Buffer.from([0x28, 0xb5, 0x2f, 0xfd]); @@ -89,8 +89,7 @@ export class Parser extends EE { this.file = opt.file || ''; // these BADARCHIVE errors can't be detected early. listen on DONE. this.on(DONE, () => { - if (this[STATE] === 'begin' || - this[SAW_VALID_ENTRY] === false) { + if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) { // either less than 1 block of data, or all entries were invalid. // Either way, probably not even a tarball. this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format'); @@ -220,8 +219,7 @@ export class Parser extends EE { } else { this[EX] = undefined; - entry.ignore = - entry.ignore || !this.filter(entry.path, entry); + entry.ignore = entry.ignore || !this.filter(entry.path, entry); if (entry.ignore) { // probably valid, just not something we care about this[EMIT]('ignoredEntry', entry); @@ -274,7 +272,7 @@ export class Parser extends EE { } [NEXTENTRY]() { do { } while (this[PROCESSENTRY](this[QUEUE].shift())); - if (!this[QUEUE].length) { + if (this[QUEUE].length === 0) { // At this point, there's nothing in the queue, but we may have an // entry which is being consumed (readEntry). // If we don't, then we definitely can handle more data. @@ -324,7 +322,7 @@ export class Parser extends EE { return ret; } [EMIT](ev, data, extra) { - if (!this[QUEUE].length && !this[READENTRY]) { + if (this[QUEUE].length === 0 && !this[READENTRY]) { this.emit(ev, data, extra); } else { @@ -471,11 +469,11 @@ export class Parser extends EE { } this[WRITING] = false; // return false if there's a queue, or if the current entry isn't flowing - const ret = this[QUEUE].length ? false + const ret = this[QUEUE].length > 0 ? false : this[READENTRY] ? this[READENTRY].flowing : true; // if we have no queue, then that means a clogged READENTRY - if (!ret && !this[QUEUE].length) { + if (!ret && this[QUEUE].length === 0) { this[READENTRY]?.once('drain', () => this.emit('drain')); } /* c8 ignore next */ @@ -484,8 +482,7 @@ export class Parser extends EE { } [BUFFERCONCAT](c) { if (c && !this[ABORTED]) { - this[BUFFER] = - this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c; + this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c; } } [MAYBEEND]() { @@ -544,9 +541,7 @@ export class Parser extends EE { // the buffer. Advance the position and put any remainder in the buffer. let position = 0; const length = chunk.length; - while (position + 512 <= length && - !this[ABORTED] && - !this[SAW_EOF]) { + while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) { switch (this[STATE]) { case 'begin': case 'header': @@ -567,15 +562,10 @@ export class Parser extends EE { } } if (position < length) { - if (this[BUFFER]) { - this[BUFFER] = Buffer.concat([ - chunk.subarray(position), - this[BUFFER], - ]); - } - else { - this[BUFFER] = chunk.subarray(position); - } + this[BUFFER] = + this[BUFFER] ? + Buffer.concat([chunk.subarray(position), this[BUFFER]]) + : chunk.subarray(position); } } end(chunk, encoding, cb) { diff --git a/deps/npm/node_modules/tar/dist/esm/path-reservations.js b/deps/npm/node_modules/tar/dist/esm/path-reservations.js index f7535c15ea5320..117f6bead9408b 100644 --- a/deps/npm/node_modules/tar/dist/esm/path-reservations.js +++ b/deps/npm/node_modules/tar/dist/esm/path-reservations.js @@ -17,7 +17,7 @@ const getDirs = (path) => { .split('/') .slice(0, -1) .reduce((set, path) => { - const s = set[set.length - 1]; + const s = set.at(-1); if (s !== undefined) { path = join(s, path); } @@ -60,7 +60,7 @@ export class PathReservations { this.#queues.set(dir, [new Set([fn])]); } else { - const l = q[q.length - 1]; + const l = q.at(-1); if (l instanceof Set) { l.add(fn); } diff --git a/deps/npm/node_modules/tar/dist/esm/read-entry.js b/deps/npm/node_modules/tar/dist/esm/read-entry.js index 23cc673e610879..ef11b01368f11f 100644 --- a/deps/npm/node_modules/tar/dist/esm/read-entry.js +++ b/deps/npm/node_modules/tar/dist/esm/read-entry.js @@ -87,9 +87,7 @@ export class ReadEntry extends Minipass { this.ctime = header.ctime; /* c8 ignore start */ this.linkpath = - header.linkpath ? - normalizeWindowsPath(header.linkpath) - : undefined; + header.linkpath ? normalizeWindowsPath(header.linkpath) : undefined; /* c8 ignore stop */ this.uname = header.uname; this.gname = header.gname; @@ -127,9 +125,7 @@ export class ReadEntry extends Minipass { // we slurp in everything except for the path attribute in // a global extended header, because that's weird. Also, any // null/undefined values are ignored. - return !(v === null || - v === undefined || - (k === 'path' && gex)); + return !(v === null || v === undefined || (k === 'path' && gex)); }))); } } diff --git a/deps/npm/node_modules/tar/dist/esm/replace.js b/deps/npm/node_modules/tar/dist/esm/replace.js index be417fcbc232c8..077a65c0b042d3 100644 --- a/deps/npm/node_modules/tar/dist/esm/replace.js +++ b/deps/npm/node_modules/tar/dist/esm/replace.js @@ -5,7 +5,7 @@ import path from 'node:path'; import { Header } from './header.js'; import { list } from './list.js'; import { makeCommand } from './make-command.js'; -import { isFile, } from './options.js'; +import { isFile } from './options.js'; import { Pack, PackSync } from './pack.js'; // starting at the head of the file, read a Header // If the checksum is invalid, that's our position to start writing @@ -34,9 +34,7 @@ const replaceSync = (opt, files) => { POSITION: for (position = 0; position < st.size; position += 512) { for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) { bytes = fs.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos); - if (position === 0 && - headBuf[0] === 0x1f && - headBuf[1] === 0x8b) { + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) { throw new Error('cannot append to compressed archives'); } if (!bytes) { @@ -66,7 +64,7 @@ const replaceSync = (opt, files) => { try { fs.closeSync(fd); } - catch (er) { } + catch { } } } }; @@ -97,16 +95,14 @@ const replaceAsync = (opt, files) => { let bufPos = 0; const headBuf = Buffer.alloc(512); const onread = (er, bytes) => { - if (er || typeof bytes === 'undefined') { + if (er || bytes === undefined) { return cb(er); } bufPos += bytes; if (bufPos < 512 && bytes) { return fs.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread); } - if (position === 0 && - headBuf[0] === 0x1f && - headBuf[1] === 0x8b) { + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) { return cb(new Error('cannot append to compressed archives')); } // truncated header @@ -185,8 +181,7 @@ const addFilesSync = (p, files) => { p.end(); }; const addFilesAsync = async (p, files) => { - for (let i = 0; i < files.length; i++) { - const file = String(files[i]); + for (const file of files) { if (file.charAt(0) === '@') { await list({ file: path.resolve(String(p.cwd), file.slice(1)), diff --git a/deps/npm/node_modules/tar/dist/esm/unpack.js b/deps/npm/node_modules/tar/dist/esm/unpack.js index bc277018e4f169..46c53db2ad57c6 100644 --- a/deps/npm/node_modules/tar/dist/esm/unpack.js +++ b/deps/npm/node_modules/tar/dist/esm/unpack.js @@ -128,8 +128,7 @@ export class Unpack extends Parser { this.chmod = !!opt.chmod; if (typeof opt.uid === 'number' || typeof opt.gid === 'number') { // need both or neither - if (typeof opt.uid !== 'number' || - typeof opt.gid !== 'number') { + if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') { throw new TypeError('cannot set owner without number uid and gid'); } if (opt.preserveOwner) { @@ -145,13 +144,10 @@ export class Unpack extends Parser { this.setOwner = false; } // default true for root - if (opt.preserveOwner === undefined && - typeof opt.uid !== 'number') { - this.preserveOwner = !!(process.getuid && process.getuid() === 0); - } - else { - this.preserveOwner = !!opt.preserveOwner; - } + this.preserveOwner = + opt.preserveOwner === undefined && typeof opt.uid !== 'number' ? + !!(process.getuid && process.getuid() === 0) + : !!opt.preserveOwner; this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() @@ -163,9 +159,7 @@ export class Unpack extends Parser { // prevent excessively deep nesting of subfolders // set to `Infinity` to remove this restriction this.maxDepth = - typeof opt.maxDepth === 'number' ? - opt.maxDepth - : DEFAULT_MAX_DEPTH; + typeof opt.maxDepth === 'number' ? opt.maxDepth : DEFAULT_MAX_DEPTH; // mostly just for testing, but useful in some cases. // Forcibly trigger a chown on every entry, no matter what this.forceChown = opt.forceChown === true; @@ -223,7 +217,7 @@ export class Unpack extends Parser { return true; // strip off the root const [root, stripped] = stripAbsolutePath(p); - const parts = stripped.replace(/\\/g, '/').split('/'); + const parts = stripped.replaceAll(/\\/g, '/').split('/'); if (parts.includes('..') || /* c8 ignore next */ (isWindows && /^[a-z]:\.\.$/i.test(parts[0] ?? ''))) { @@ -239,20 +233,18 @@ export class Unpack extends Parser { // not ok! return false; } - else { - // Resolve linkpath relative to the entry's directory. - // `path.posix` is safe to use because we're operating on - // tar paths, not a filesystem. - const entryDir = path.posix.dirname(entry.path); - const resolved = path.posix.normalize(path.posix.join(entryDir, parts.join('/'))); - // If the resolved path escapes (starts with ..), reject it - if (resolved.startsWith('../') || resolved === '..') { - this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, { - entry, - [field]: p, - }); - return false; - } + // Resolve linkpath relative to the entry's directory. + // `path.posix` is safe to use because we're operating on + // tar paths, not a filesystem. + const entryDir = path.posix.dirname(entry.path); + const resolved = path.posix.normalize(path.posix.join(entryDir, parts.join('/'))); + // If the resolved path escapes (starts with ..), reject it + if (resolved.startsWith('../') || resolved === '..') { + this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, { + entry, + [field]: p, + }); + return false; } } if (root) { @@ -298,12 +290,10 @@ export class Unpack extends Parser { !this[STRIPABSOLUTEPATH](entry, 'linkpath')) { return false; } - if (path.isAbsolute(entry.path)) { - entry.absolute = normalizeWindowsPath(path.resolve(entry.path)); - } - else { - entry.absolute = normalizeWindowsPath(path.resolve(this.cwd, entry.path)); - } + entry.absolute = + path.isAbsolute(entry.path) ? + normalizeWindowsPath(path.resolve(entry.path)) + : normalizeWindowsPath(path.resolve(this.cwd, entry.path)); // if we somehow ended up with a path that escapes the cwd, and we are // not in preservePaths mode, then something is fishy! This should have // been prevented above, so ignore this for coverage. @@ -398,8 +388,7 @@ export class Unpack extends Parser { entry.uid !== this.processUid) || (typeof entry.gid === 'number' && entry.gid !== this.processGid))) || - (typeof this.uid === 'number' && - this.uid !== this.processUid) || + (typeof this.uid === 'number' && this.uid !== this.processUid) || (typeof this.gid === 'number' && this.gid !== this.processGid)); } [UID](entry) { @@ -409,9 +398,7 @@ export class Unpack extends Parser { return uint32(this.gid, entry.gid, this.processGid); } [FILE](entry, fullyDone) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.fmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode; const stream = new fsm.WriteStream(String(entry.absolute), { // slight lie, but it can be numeric flags flags: getWriteFlag(entry.size), @@ -474,16 +461,14 @@ export class Unpack extends Parser { const uid = this[UID](entry); const gid = this[GID](entry); if (typeof uid === 'number' && typeof gid === 'number') { - fs.fchown(fd, uid, gid, er => er ? - fs.chown(abs, uid, gid, er2 => done(er2 && er)) - : done()); + fs.fchown(fd, uid, gid, er => er ? fs.chown(abs, uid, gid, er2 => done(er2 && er)) : done()); } } done(); }); const tx = this.transform ? this.transform(entry) || entry : entry; if (tx !== entry) { - tx.on('error', (er) => { + tx.on('error', er => { this[ONERROR](er, entry); fullyDone(); }); @@ -492,9 +477,7 @@ export class Unpack extends Parser { tx.pipe(stream); } [DIRECTORY](entry, fullyDone) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.dmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode; this[MKDIR](String(entry.absolute), mode, er => { if (er) { this[ONERROR](er, entry); @@ -630,9 +613,7 @@ export class Unpack extends Parser { } if (st.isDirectory()) { if (entry.type === 'Directory') { - const needChmod = this.chmod && - entry.mode && - (st.mode & 0o7777) !== entry.mode; + const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode; const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done); if (!needChmod) { return afterChmod(); @@ -742,9 +723,7 @@ export class UnpackSync extends Unpack { } if (st.isDirectory()) { if (entry.type === 'Directory') { - const needChmod = this.chmod && - entry.mode && - (st.mode & 0o7777) !== entry.mode; + const needChmod = this.chmod && entry.mode && (st.mode & 0o7777) !== entry.mode; const [er] = needChmod ? callSync(() => { fs.chmodSync(String(entry.absolute), Number(entry.mode)); @@ -764,9 +743,7 @@ export class UnpackSync extends Unpack { this[MAKEFS](er, entry); } [FILE](entry, done) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.fmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.fmode; const oner = (er) => { let closeError; try { @@ -794,7 +771,7 @@ export class UnpackSync extends Unpack { /* c8 ignore stop */ const tx = this.transform ? this.transform(entry) || entry : entry; if (tx !== entry) { - tx.on('error', (er) => this[ONERROR](er, entry)); + tx.on('error', er => this[ONERROR](er, entry)); entry.pipe(tx); } tx.on('data', (chunk) => { @@ -819,7 +796,7 @@ export class UnpackSync extends Unpack { try { fs.utimesSync(String(entry.absolute), atime, mtime); } - catch (utimeser) { + catch { er = futimeser; } } @@ -834,7 +811,7 @@ export class UnpackSync extends Unpack { try { fs.chownSync(String(entry.absolute), Number(uid), Number(gid)); } - catch (chowner) { + catch { er = er || fchowner; } } @@ -843,9 +820,7 @@ export class UnpackSync extends Unpack { }); } [DIRECTORY](entry, done) { - const mode = typeof entry.mode === 'number' ? - entry.mode & 0o7777 - : this.dmode; + const mode = typeof entry.mode === 'number' ? entry.mode & 0o7777 : this.dmode; const er = this[MKDIR](String(entry.absolute), mode); if (er) { this[ONERROR](er, entry); @@ -857,13 +832,13 @@ export class UnpackSync extends Unpack { fs.utimesSync(String(entry.absolute), entry.atime || new Date(), entry.mtime); /* c8 ignore next */ } - catch (er) { } + catch { } } if (this[DOCHOWN](entry)) { try { fs.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry))); } - catch (er) { } + catch { } } done(); entry.resume(); @@ -887,7 +862,7 @@ export class UnpackSync extends Unpack { } } [ENSURE_NO_SYMLINK](_entry, cwd, parts, done, onError) { - if (this.preservePaths || !parts.length) + if (this.preservePaths || parts.length === 0) return done(); let t = cwd; for (const p of parts) { diff --git a/deps/npm/node_modules/tar/dist/esm/winchars.js b/deps/npm/node_modules/tar/dist/esm/winchars.js index c41eb86d69a4bb..4046778e14e0bd 100644 --- a/deps/npm/node_modules/tar/dist/esm/winchars.js +++ b/deps/npm/node_modules/tar/dist/esm/winchars.js @@ -1,7 +1,7 @@ // When writing files on Windows, translate the characters to their // 0xf000 higher-encoded versions. const raw = ['|', '<', '>', '?', ':']; -const win = raw.map(char => String.fromCharCode(0xf000 + char.charCodeAt(0))); +const win = raw.map(char => String.fromCodePoint(0xf000 + Number(char.codePointAt(0)))); const toWin = new Map(raw.map((char, i) => [char, win[i]])); const toRaw = new Map(win.map((char, i) => [char, raw[i]])); export const encode = (s) => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s); diff --git a/deps/npm/node_modules/tar/dist/esm/write-entry.js b/deps/npm/node_modules/tar/dist/esm/write-entry.js index 9028cd676b4cd2..158260236b2c3f 100644 --- a/deps/npm/node_modules/tar/dist/esm/write-entry.js +++ b/deps/npm/node_modules/tar/dist/esm/write-entry.js @@ -4,11 +4,11 @@ import path from 'path'; import { Header } from './header.js'; import { modeFix } from './mode-fix.js'; import { normalizeWindowsPath } from './normalize-windows-path.js'; -import { dealias, } from './options.js'; +import { dealias } from './options.js'; import { Pax } from './pax.js'; import { stripAbsolutePath } from './strip-absolute-path.js'; import { stripTrailingSlashes } from './strip-trailing-slashes.js'; -import { warnMethod, } from './warn-method.js'; +import { warnMethod } from './warn-method.js'; import * as winchars from './winchars.js'; const prefixPath = (path, prefix) => { if (!prefix) { @@ -83,8 +83,7 @@ export class WriteEntry extends Minipass { this.noPax = !!opt.noPax; this.noMtime = !!opt.noMtime; this.mtime = opt.mtime; - this.prefix = - opt.prefix ? normalizeWindowsPath(opt.prefix) : undefined; + this.prefix = opt.prefix ? normalizeWindowsPath(opt.prefix) : undefined; this.onWriteEntry = opt.onWriteEntry; if (typeof opt.onwarn === 'function') { this.on('warn', opt.onwarn); @@ -101,8 +100,8 @@ export class WriteEntry extends Minipass { if (this.win32) { // force the \ to / normalization, since we might not *actually* // be on windows, but want \ to be considered a path separator. - this.path = winchars.decode(this.path.replace(/\\/g, '/')); - p = p.replace(/\\/g, '/'); + this.path = winchars.decode(this.path.replaceAll(/\\/g, '/')); + p = p.replaceAll(/\\/g, '/'); } this.absolute = normalizeWindowsPath(opt.absolute || path.resolve(this.cwd, p)); if (this.path === '') { @@ -204,7 +203,7 @@ export class WriteEntry extends Minipass { atime: this.portable ? undefined : this.header.atime, ctime: this.portable ? undefined : this.header.ctime, gid: this.portable ? undefined : this.header.gid, - mtime: this.noMtime ? undefined : (this.mtime || this.header.mtime), + mtime: this.noMtime ? undefined : this.mtime || this.header.mtime, path: this[PREFIX](this.path), linkpath: this.type === 'Link' && this.linkpath !== undefined ? this[PREFIX](this.linkpath) @@ -407,7 +406,7 @@ export class WriteEntry extends Minipass { if (this.blockRemain) { super.write(Buffer.alloc(this.blockRemain)); } - return this[CLOSE](er => er ? this.emit('error', er) : this.end()); + return this[CLOSE](er => (er ? this.emit('error', er) : this.end())); } /* c8 ignore start */ if (!this.buf) { @@ -455,7 +454,7 @@ export class WriteEntrySync extends WriteEntry { try { this[CLOSE](() => { }); } - catch (er) { } + catch { } } } } @@ -524,16 +523,13 @@ export class WriteEntryTar extends Minipass { this.prefix = opt.prefix; this.path = normalizeWindowsPath(readEntry.path); this.mode = - readEntry.mode !== undefined ? - this[MODE](readEntry.mode) - : undefined; + readEntry.mode !== undefined ? this[MODE](readEntry.mode) : undefined; this.uid = this.portable ? undefined : readEntry.uid; this.gid = this.portable ? undefined : readEntry.gid; this.uname = this.portable ? undefined : readEntry.uname; this.gname = this.portable ? undefined : readEntry.gname; this.size = readEntry.size; - this.mtime = - this.noMtime ? undefined : opt.mtime || readEntry.mtime; + this.mtime = this.noMtime ? undefined : opt.mtime || readEntry.mtime; this.atime = this.portable ? undefined : readEntry.atime; this.ctime = this.portable ? undefined : readEntry.ctime; this.linkpath = @@ -645,7 +641,10 @@ export class WriteEntryTar extends Minipass { } if (cb) this.once('finish', cb); - chunk ? super.end(chunk, cb) : super.end(cb); + if (chunk) + super.end(chunk, cb); + else + super.end(cb); /* c8 ignore stop */ return this; } diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json index 27cdae830128d7..55d21bcf0b535d 100644 --- a/deps/npm/node_modules/tar/package.json +++ b/deps/npm/node_modules/tar/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter", "name": "tar", "description": "tar for node", - "version": "7.5.11", + "version": "7.5.13", "repository": { "type": "git", "url": "https://github.com/isaacs/node-tar.git" @@ -18,7 +18,10 @@ "postversion": "npm publish", "prepublishOnly": "git push origin --follow-tags", "format": "prettier --write . --log-level warn", - "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts" + "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts", + "lint": "oxlint --fix src test", + "postsnap": "npm run lint", + "postlint": "npm run format" }, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -28,13 +31,15 @@ "yallist": "^5.0.0" }, "devDependencies": { - "@types/node": "^25.3.3", + "@types/node": "^25.5.0", "chmodr": "^2.0.2", "end-of-stream": "^1.4.3", - "esbuild": "^0.27.3", + "esbuild": "^0.27.4", "events-to-array": "^2.0.3", "mutate-fs": "^2.1.1", "nock": "^13.5.4", + "oxlint": "^1.56.0", + "oxlint-tsgolint": "^0.17.0", "prettier": "^3.8.1", "rimraf": "^6.1.2", "tap": "^21.6.2", diff --git a/deps/npm/node_modules/tinyglobby/dist/index.cjs b/deps/npm/node_modules/tinyglobby/dist/index.cjs index e5cb03ccec9ac9..5badacb548b2d0 100644 --- a/deps/npm/node_modules/tinyglobby/dist/index.cjs +++ b/deps/npm/node_modules/tinyglobby/dist/index.cjs @@ -1,4 +1,5 @@ -//#region rolldown:runtime +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +//#region \0rolldown/runtime.js var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; @@ -19,51 +20,45 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge value: mod, enumerable: true }) : target, mod)); - //#endregion let fs = require("fs"); -fs = __toESM(fs); let path = require("path"); -path = __toESM(path); let url = require("url"); -url = __toESM(url); let fdir = require("fdir"); -fdir = __toESM(fdir); let picomatch = require("picomatch"); picomatch = __toESM(picomatch); - //#region src/utils.ts const isReadonlyArray = Array.isArray; +const BACKSLASHES = /\\/g; const isWin = process.platform === "win32"; const ONLY_PARENT_DIRECTORIES = /^(\/?\.\.)+$/; function getPartialMatcher(patterns, options = {}) { const patternsCount = patterns.length; const patternsParts = Array(patternsCount); const matchers = Array(patternsCount); - const globstarEnabled = !options.noglobstar; - for (let i = 0; i < patternsCount; i++) { + let i, j; + for (i = 0; i < patternsCount; i++) { const parts = splitPattern(patterns[i]); patternsParts[i] = parts; const partsCount = parts.length; const partMatchers = Array(partsCount); - for (let j = 0; j < partsCount; j++) partMatchers[j] = (0, picomatch.default)(parts[j], options); + for (j = 0; j < partsCount; j++) partMatchers[j] = (0, picomatch.default)(parts[j], options); matchers[i] = partMatchers; } return (input) => { const inputParts = input.split("/"); if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input)) return true; - for (let i = 0; i < patterns.length; i++) { + for (i = 0; i < patternsCount; i++) { const patternParts = patternsParts[i]; const matcher = matchers[i]; const inputPatternCount = inputParts.length; const minParts = Math.min(inputPatternCount, patternParts.length); - let j = 0; + j = 0; while (j < minParts) { const part = patternParts[j]; if (part.includes("/")) return true; - const match = matcher[j](inputParts[j]); - if (!match) break; - if (globstarEnabled && part === "**") return true; + if (!matcher[j](inputParts[j])) break; + if (!options.noglobstar && part === "**") return true; j++; } if (j === inputPatternCount) return true; @@ -77,7 +72,7 @@ const isRoot = isWin ? (p) => WIN32_ROOT_DIR.test(p) : (p) => p === "/"; function buildFormat(cwd, root, absolute) { if (cwd === root || root.startsWith(`${cwd}/`)) { if (absolute) { - const start = isRoot(cwd) ? cwd.length : cwd.length + 1; + const start = cwd.length + +!isRoot(cwd); return (p, isDir) => p.slice(start, isDir ? -1 : void 0) || "."; } const prefix = root.slice(cwd.length + 1); @@ -98,22 +93,21 @@ function buildRelative(cwd, root) { } return (p) => { const result = path.posix.relative(cwd, `${root}/${p}`); - if (p.endsWith("/") && result !== "") return `${result}/`; - return result || "."; + return p[p.length - 1] === "/" && result !== "" ? `${result}/` : result || "."; }; } const splitPatternOptions = { parts: true }; -function splitPattern(path$2) { +function splitPattern(path$1) { var _result$parts; - const result = picomatch.default.scan(path$2, splitPatternOptions); - return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path$2]; + const result = picomatch.default.scan(path$1, splitPatternOptions); + return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path$1]; } const ESCAPED_WIN32_BACKSLASHES = /\\(?![()[\]{}!+@])/g; function convertPosixPathToPattern(path$2) { return escapePosixPath(path$2); } -function convertWin32PathToPattern(path$2) { - return escapeWin32Path(path$2).replace(ESCAPED_WIN32_BACKSLASHES, "/"); +function convertWin32PathToPattern(path$3) { + return escapeWin32Path(path$3).replace(ESCAPED_WIN32_BACKSLASHES, "/"); } /** * Converts a path to a pattern depending on the platform. @@ -124,8 +118,8 @@ function convertWin32PathToPattern(path$2) { const convertPathToPattern = isWin ? convertWin32PathToPattern : convertPosixPathToPattern; const POSIX_UNESCAPED_GLOB_SYMBOLS = /(? path$2.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); -const escapeWin32Path = (path$2) => path$2.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapePosixPath = (path$4) => path$4.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapeWin32Path = (path$5) => path$5.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); /** * Escapes a path's special characters depending on the platform. * @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} @@ -152,31 +146,33 @@ function isDynamicPattern(pattern, options) { function log(...tasks) { console.log(`[tinyglobby ${(/* @__PURE__ */ new Date()).toLocaleTimeString("es")}]`, ...tasks); } - +function ensureStringArray(value) { + return typeof value === "string" ? [value] : value !== null && value !== void 0 ? value : []; +} //#endregion -//#region src/index.ts +//#region src/patterns.ts const PARENT_DIRECTORY = /^(\/?\.\.)+/; const ESCAPING_BACKSLASHES = /\\(?=[()[\]{}!*+?@|])/g; -const BACKSLASHES = /\\/g; -function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { +function normalizePattern(pattern, opts, props, isIgnore) { + var _PARENT_DIRECTORY$exe; + const cwd = opts.cwd; let result = pattern; - if (pattern.endsWith("/")) result = pattern.slice(0, -1); - if (!result.endsWith("*") && expandDirectories) result += "/**"; + if (pattern[pattern.length - 1] === "/") result = pattern.slice(0, -1); + if (result[result.length - 1] !== "*" && opts.expandDirectories) result += "/**"; const escapedCwd = escapePath(cwd); - if (path.default.isAbsolute(result.replace(ESCAPING_BACKSLASHES, ""))) result = path.posix.relative(escapedCwd, result); - else result = path.posix.normalize(result); - const parentDirectoryMatch = PARENT_DIRECTORY.exec(result); + result = (0, path.isAbsolute)(result.replace(ESCAPING_BACKSLASHES, "")) ? path.posix.relative(escapedCwd, result) : path.posix.normalize(result); + const parentDir = (_PARENT_DIRECTORY$exe = PARENT_DIRECTORY.exec(result)) === null || _PARENT_DIRECTORY$exe === void 0 ? void 0 : _PARENT_DIRECTORY$exe[0]; const parts = splitPattern(result); - if (parentDirectoryMatch === null || parentDirectoryMatch === void 0 ? void 0 : parentDirectoryMatch[0]) { - const n = (parentDirectoryMatch[0].length + 1) / 3; + if (parentDir) { + const n = (parentDir.length + 1) / 3; let i = 0; const cwdParts = escapedCwd.split("/"); while (i < n && parts[i + n] === cwdParts[cwdParts.length + i - n]) { result = result.slice(0, (n - i - 1) * 3) + result.slice((n - i) * 3 + parts[i + n].length + 1) || "."; i++; } - const potentialRoot = path.posix.join(cwd, parentDirectoryMatch[0].slice(i * 3)); - if (!potentialRoot.startsWith(".") && props.root.length > potentialRoot.length) { + const potentialRoot = path.posix.join(cwd, parentDir.slice(i * 3)); + if (potentialRoot[0] !== "." && props.root.length > potentialRoot.length) { props.root = potentialRoot; props.depthOffset = -n + i; } @@ -192,7 +188,7 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { newCommonPath.pop(); break; } - if (part !== props.commonPath[i] || isDynamicPattern(part) || i === parts.length - 1) break; + if (i === parts.length - 1 || part !== props.commonPath[i] || isDynamicPattern(part)) break; newCommonPath.push(part); } props.depthOffset = newCommonPath.length; @@ -201,150 +197,138 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { } return result; } -function processPatterns({ patterns = ["**/*"], ignore = [], expandDirectories = true }, cwd, props) { - if (typeof patterns === "string") patterns = [patterns]; - if (typeof ignore === "string") ignore = [ignore]; +function processPatterns(options, patterns, props) { const matchPatterns = []; const ignorePatterns = []; - for (const pattern of ignore) { + for (const pattern of options.ignore) { if (!pattern) continue; - if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, true)); + if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, options, props, true)); } for (const pattern of patterns) { if (!pattern) continue; - if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, false)); - else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), expandDirectories, cwd, props, true)); + if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, options, props, false)); + else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), options, props, true)); } return { match: matchPatterns, ignore: ignorePatterns }; } -function formatPaths(paths, relative) { - for (let i = paths.length - 1; i >= 0; i--) { - const path$2 = paths[i]; - paths[i] = relative(path$2); - } - return paths; -} -function normalizeCwd(cwd) { - if (!cwd) return process.cwd().replace(BACKSLASHES, "/"); - if (cwd instanceof URL) return (0, url.fileURLToPath)(cwd).replace(BACKSLASHES, "/"); - return path.default.resolve(cwd).replace(BACKSLASHES, "/"); -} -function getCrawler(patterns, inputOptions = {}) { - const options = process.env.TINYGLOBBY_DEBUG ? { - ...inputOptions, - debug: true - } : inputOptions; - const cwd = normalizeCwd(options.cwd); - if (options.debug) log("globbing with:", { - patterns, - options, - cwd - }); - if (Array.isArray(patterns) && patterns.length === 0) return [{ - sync: () => [], - withPromise: async () => [] - }, false]; +//#endregion +//#region src/crawler.ts +function buildCrawler(options, patterns) { + const cwd = options.cwd; const props = { root: cwd, - commonPath: null, depthOffset: 0 }; - const processed = processPatterns({ - ...options, - patterns - }, cwd, props); + const processed = processPatterns(options, patterns, props); if (options.debug) log("internal processing patterns:", processed); + const { absolute, caseSensitiveMatch, debug, dot, followSymbolicLinks, onlyDirectories } = options; + const root = props.root.replace(BACKSLASHES, ""); const matchOptions = { - dot: options.dot, + dot, nobrace: options.braceExpansion === false, - nocase: options.caseSensitiveMatch === false, + nocase: !caseSensitiveMatch, noextglob: options.extglob === false, noglobstar: options.globstar === false, posix: true }; - const matcher = (0, picomatch.default)(processed.match, { - ...matchOptions, - ignore: processed.ignore - }); + const matcher = (0, picomatch.default)(processed.match, matchOptions); const ignore = (0, picomatch.default)(processed.ignore, matchOptions); const partialMatcher = getPartialMatcher(processed.match, matchOptions); - const format = buildFormat(cwd, props.root, options.absolute); - const formatExclude = options.absolute ? format : buildFormat(cwd, props.root, true); - const fdirOptions = { - filters: [options.debug ? (p, isDirectory) => { - const path$2 = format(p, isDirectory); - const matches = matcher(path$2); - if (matches) log(`matched ${path$2}`); + const format = buildFormat(cwd, root, absolute); + const excludeFormatter = absolute ? format : buildFormat(cwd, root, true); + const excludePredicate = (_, p) => { + const relativePath = excludeFormatter(p, true); + return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); + }; + let maxDepth; + if (options.deep !== void 0) maxDepth = Math.round(options.deep - props.depthOffset); + const crawler = new fdir.fdir({ + filters: [debug ? (p, isDirectory) => { + const path = format(p, isDirectory); + const matches = matcher(path) && !ignore(path); + if (matches) log(`matched ${path}`); return matches; - } : (p, isDirectory) => matcher(format(p, isDirectory))], - exclude: options.debug ? (_, p) => { - const relativePath = formatExclude(p, true); - const skipped = relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); - if (skipped) log(`skipped ${p}`); - else log(`crawling ${p}`); + } : (p, isDirectory) => { + const path = format(p, isDirectory); + return matcher(path) && !ignore(path); + }], + exclude: debug ? (_, p) => { + const skipped = excludePredicate(_, p); + log(`${skipped ? "skipped" : "crawling"} ${p}`); return skipped; - } : (_, p) => { - const relativePath = formatExclude(p, true); - return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); - }, - fs: options.fs ? { - readdir: options.fs.readdir || fs.default.readdir, - readdirSync: options.fs.readdirSync || fs.default.readdirSync, - realpath: options.fs.realpath || fs.default.realpath, - realpathSync: options.fs.realpathSync || fs.default.realpathSync, - stat: options.fs.stat || fs.default.stat, - statSync: options.fs.statSync || fs.default.statSync - } : void 0, + } : excludePredicate, + fs: options.fs, pathSeparator: "/", - relativePaths: true, - resolveSymlinks: true, + relativePaths: !absolute, + resolvePaths: absolute, + includeBasePath: absolute, + resolveSymlinks: followSymbolicLinks, + excludeSymlinks: !followSymbolicLinks, + excludeFiles: onlyDirectories, + includeDirs: onlyDirectories || !options.onlyFiles, + maxDepth, signal: options.signal + }).crawl(root); + if (options.debug) log("internal properties:", { + ...props, + root + }); + return [crawler, cwd !== root && !absolute && buildRelative(cwd, root)]; +} +//#endregion +//#region src/index.ts +function formatPaths(paths, mapper) { + if (mapper) for (let i = paths.length - 1; i >= 0; i--) paths[i] = mapper(paths[i]); + return paths; +} +const defaultOptions = { + caseSensitiveMatch: true, + cwd: process.cwd(), + debug: !!process.env.TINYGLOBBY_DEBUG, + expandDirectories: true, + followSymbolicLinks: true, + onlyFiles: true +}; +function getOptions(options) { + const opts = { + ...defaultOptions, + ...options }; - if (options.deep !== void 0) fdirOptions.maxDepth = Math.round(options.deep - props.depthOffset); - if (options.absolute) { - fdirOptions.relativePaths = false; - fdirOptions.resolvePaths = true; - fdirOptions.includeBasePath = true; - } - if (options.followSymbolicLinks === false) { - fdirOptions.resolveSymlinks = false; - fdirOptions.excludeSymlinks = true; - } - if (options.onlyDirectories) { - fdirOptions.excludeFiles = true; - fdirOptions.includeDirs = true; - } else if (options.onlyFiles === false) fdirOptions.includeDirs = true; - props.root = props.root.replace(BACKSLASHES, ""); - const root = props.root; - if (options.debug) log("internal properties:", props); - const relative = cwd !== root && !options.absolute && buildRelative(cwd, props.root); - return [new fdir.fdir(fdirOptions).crawl(root), relative]; + opts.cwd = (opts.cwd instanceof URL ? (0, url.fileURLToPath)(opts.cwd) : (0, path.resolve)(opts.cwd)).replace(BACKSLASHES, "/"); + opts.ignore = ensureStringArray(opts.ignore); + opts.fs && (opts.fs = { + readdir: opts.fs.readdir || fs.readdir, + readdirSync: opts.fs.readdirSync || fs.readdirSync, + realpath: opts.fs.realpath || fs.realpath, + realpathSync: opts.fs.realpathSync || fs.realpathSync, + stat: opts.fs.stat || fs.stat, + statSync: opts.fs.statSync || fs.statSync + }); + if (opts.debug) log("globbing with options:", opts); + return opts; +} +function getCrawler(globInput, inputOptions = {}) { + var _ref; + if (globInput && (inputOptions === null || inputOptions === void 0 ? void 0 : inputOptions.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); + const isModern = isReadonlyArray(globInput) || typeof globInput === "string"; + const patterns = ensureStringArray((_ref = isModern ? globInput : globInput.patterns) !== null && _ref !== void 0 ? _ref : "**/*"); + const options = getOptions(isModern ? inputOptions : globInput); + return patterns.length > 0 ? buildCrawler(options, patterns) : []; } -async function glob(patternsOrOptions, options) { - if (patternsOrOptions && (options === null || options === void 0 ? void 0 : options.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); - const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string"; - const opts = isModern ? options : patternsOrOptions; - const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns; - const [crawler, relative] = getCrawler(patterns, opts); - if (!relative) return crawler.withPromise(); - return formatPaths(await crawler.withPromise(), relative); +async function glob(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(await crawler.withPromise(), relative) : []; } -function globSync(patternsOrOptions, options) { - if (patternsOrOptions && (options === null || options === void 0 ? void 0 : options.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); - const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string"; - const opts = isModern ? options : patternsOrOptions; - const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns; - const [crawler, relative] = getCrawler(patterns, opts); - if (!relative) return crawler.sync(); - return formatPaths(crawler.sync(), relative); +function globSync(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(crawler.sync(), relative) : []; } - //#endregion exports.convertPathToPattern = convertPathToPattern; exports.escapePath = escapePath; exports.glob = glob; exports.globSync = globSync; -exports.isDynamicPattern = isDynamicPattern; \ No newline at end of file +exports.isDynamicPattern = isDynamicPattern; diff --git a/deps/npm/node_modules/tinyglobby/dist/index.d.cts b/deps/npm/node_modules/tinyglobby/dist/index.d.cts index 9d67dae260a76a..3e8e16aa2e93e7 100644 --- a/deps/npm/node_modules/tinyglobby/dist/index.d.cts +++ b/deps/npm/node_modules/tinyglobby/dist/index.d.cts @@ -1,35 +1,7 @@ import { FSLike } from "fdir"; -//#region src/utils.d.ts - -/** -* Converts a path to a pattern depending on the platform. -* Identical to {@link escapePath} on POSIX systems. -* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} -*/ -declare const convertPathToPattern: (path: string) => string; -/** -* Escapes a path's special characters depending on the platform. -* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} -*/ -declare const escapePath: (path: string) => string; -/** -* Checks if a pattern has dynamic parts. -* -* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: -* -* - Doesn't necessarily return `false` on patterns that include `\`. -* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. -* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. -* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. -* -* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} -*/ -declare function isDynamicPattern(pattern: string, options?: { - caseSensitiveMatch: boolean; -}): boolean; -//#endregion -//#region src/index.d.ts +//#region src/types.d.ts +type FileSystemAdapter = Partial; interface GlobOptions { /** * Whether to return absolute paths. Disable to have relative paths. @@ -124,7 +96,36 @@ interface GlobOptions { */ signal?: AbortSignal; } -type FileSystemAdapter = Partial; +//#endregion +//#region src/utils.d.ts +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +declare const convertPathToPattern: (path: string) => string; +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +declare const escapePath: (path: string) => string; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +declare function isDynamicPattern(pattern: string, options?: { + caseSensitiveMatch: boolean; +}): boolean; +//#endregion +//#region src/index.d.ts /** * Asynchronously match files following a glob pattern. * @see {@link https://superchupu.dev/tinyglobby/documentation#glob} @@ -144,4 +145,4 @@ declare function globSync(patterns: string | readonly string[], options?: Omit string; -/** -* Escapes a path's special characters depending on the platform. -* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} -*/ -declare const escapePath: (path: string) => string; -/** -* Checks if a pattern has dynamic parts. -* -* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: -* -* - Doesn't necessarily return `false` on patterns that include `\`. -* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. -* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. -* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. -* -* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} -*/ -declare function isDynamicPattern(pattern: string, options?: { - caseSensitiveMatch: boolean; -}): boolean; -//#endregion -//#region src/index.d.ts +//#region src/types.d.ts +type FileSystemAdapter = Partial; interface GlobOptions { /** * Whether to return absolute paths. Disable to have relative paths. @@ -124,7 +96,36 @@ interface GlobOptions { */ signal?: AbortSignal; } -type FileSystemAdapter = Partial; +//#endregion +//#region src/utils.d.ts +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +declare const convertPathToPattern: (path: string) => string; +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +declare const escapePath: (path: string) => string; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +declare function isDynamicPattern(pattern: string, options?: { + caseSensitiveMatch: boolean; +}): boolean; +//#endregion +//#region src/index.d.ts /** * Asynchronously match files following a glob pattern. * @see {@link https://superchupu.dev/tinyglobby/documentation#glob} @@ -144,4 +145,4 @@ declare function globSync(patterns: string | readonly string[], options?: Omit { const inputParts = input.split("/"); if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input)) return true; - for (let i = 0; i < patterns.length; i++) { + for (i = 0; i < patternsCount; i++) { const patternParts = patternsParts[i]; const matcher = matchers[i]; const inputPatternCount = inputParts.length; const minParts = Math.min(inputPatternCount, patternParts.length); - let j = 0; + j = 0; while (j < minParts) { const part = patternParts[j]; if (part.includes("/")) return true; - const match = matcher[j](inputParts[j]); - if (!match) break; - if (globstarEnabled && part === "**") return true; + if (!matcher[j](inputParts[j])) break; + if (!options.noglobstar && part === "**") return true; j++; } if (j === inputPatternCount) return true; @@ -49,7 +48,7 @@ const isRoot = isWin ? (p) => WIN32_ROOT_DIR.test(p) : (p) => p === "/"; function buildFormat(cwd, root, absolute) { if (cwd === root || root.startsWith(`${cwd}/`)) { if (absolute) { - const start = isRoot(cwd) ? cwd.length : cwd.length + 1; + const start = cwd.length + +!isRoot(cwd); return (p, isDir) => p.slice(start, isDir ? -1 : void 0) || "."; } const prefix = root.slice(cwd.length + 1); @@ -70,22 +69,21 @@ function buildRelative(cwd, root) { } return (p) => { const result = posix.relative(cwd, `${root}/${p}`); - if (p.endsWith("/") && result !== "") return `${result}/`; - return result || "."; + return p[p.length - 1] === "/" && result !== "" ? `${result}/` : result || "."; }; } const splitPatternOptions = { parts: true }; -function splitPattern(path$1) { +function splitPattern(path) { var _result$parts; - const result = picomatch.scan(path$1, splitPatternOptions); - return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path$1]; + const result = picomatch.scan(path, splitPatternOptions); + return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path]; } const ESCAPED_WIN32_BACKSLASHES = /\\(?![()[\]{}!+@])/g; -function convertPosixPathToPattern(path$1) { - return escapePosixPath(path$1); +function convertPosixPathToPattern(path) { + return escapePosixPath(path); } -function convertWin32PathToPattern(path$1) { - return escapeWin32Path(path$1).replace(ESCAPED_WIN32_BACKSLASHES, "/"); +function convertWin32PathToPattern(path) { + return escapeWin32Path(path).replace(ESCAPED_WIN32_BACKSLASHES, "/"); } /** * Converts a path to a pattern depending on the platform. @@ -96,8 +94,8 @@ function convertWin32PathToPattern(path$1) { const convertPathToPattern = isWin ? convertWin32PathToPattern : convertPosixPathToPattern; const POSIX_UNESCAPED_GLOB_SYMBOLS = /(? path$1.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); -const escapeWin32Path = (path$1) => path$1.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapePosixPath = (path) => path.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapeWin32Path = (path) => path.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); /** * Escapes a path's special characters depending on the platform. * @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} @@ -124,31 +122,33 @@ function isDynamicPattern(pattern, options) { function log(...tasks) { console.log(`[tinyglobby ${(/* @__PURE__ */ new Date()).toLocaleTimeString("es")}]`, ...tasks); } - +function ensureStringArray(value) { + return typeof value === "string" ? [value] : value !== null && value !== void 0 ? value : []; +} //#endregion -//#region src/index.ts +//#region src/patterns.ts const PARENT_DIRECTORY = /^(\/?\.\.)+/; const ESCAPING_BACKSLASHES = /\\(?=[()[\]{}!*+?@|])/g; -const BACKSLASHES = /\\/g; -function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { +function normalizePattern(pattern, opts, props, isIgnore) { + var _PARENT_DIRECTORY$exe; + const cwd = opts.cwd; let result = pattern; - if (pattern.endsWith("/")) result = pattern.slice(0, -1); - if (!result.endsWith("*") && expandDirectories) result += "/**"; + if (pattern[pattern.length - 1] === "/") result = pattern.slice(0, -1); + if (result[result.length - 1] !== "*" && opts.expandDirectories) result += "/**"; const escapedCwd = escapePath(cwd); - if (path.isAbsolute(result.replace(ESCAPING_BACKSLASHES, ""))) result = posix.relative(escapedCwd, result); - else result = posix.normalize(result); - const parentDirectoryMatch = PARENT_DIRECTORY.exec(result); + result = isAbsolute(result.replace(ESCAPING_BACKSLASHES, "")) ? posix.relative(escapedCwd, result) : posix.normalize(result); + const parentDir = (_PARENT_DIRECTORY$exe = PARENT_DIRECTORY.exec(result)) === null || _PARENT_DIRECTORY$exe === void 0 ? void 0 : _PARENT_DIRECTORY$exe[0]; const parts = splitPattern(result); - if (parentDirectoryMatch === null || parentDirectoryMatch === void 0 ? void 0 : parentDirectoryMatch[0]) { - const n = (parentDirectoryMatch[0].length + 1) / 3; + if (parentDir) { + const n = (parentDir.length + 1) / 3; let i = 0; const cwdParts = escapedCwd.split("/"); while (i < n && parts[i + n] === cwdParts[cwdParts.length + i - n]) { result = result.slice(0, (n - i - 1) * 3) + result.slice((n - i) * 3 + parts[i + n].length + 1) || "."; i++; } - const potentialRoot = posix.join(cwd, parentDirectoryMatch[0].slice(i * 3)); - if (!potentialRoot.startsWith(".") && props.root.length > potentialRoot.length) { + const potentialRoot = posix.join(cwd, parentDir.slice(i * 3)); + if (potentialRoot[0] !== "." && props.root.length > potentialRoot.length) { props.root = potentialRoot; props.depthOffset = -n + i; } @@ -164,7 +164,7 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { newCommonPath.pop(); break; } - if (part !== props.commonPath[i] || isDynamicPattern(part) || i === parts.length - 1) break; + if (i === parts.length - 1 || part !== props.commonPath[i] || isDynamicPattern(part)) break; newCommonPath.push(part); } props.depthOffset = newCommonPath.length; @@ -173,146 +173,134 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) { } return result; } -function processPatterns({ patterns = ["**/*"], ignore = [], expandDirectories = true }, cwd, props) { - if (typeof patterns === "string") patterns = [patterns]; - if (typeof ignore === "string") ignore = [ignore]; +function processPatterns(options, patterns, props) { const matchPatterns = []; const ignorePatterns = []; - for (const pattern of ignore) { + for (const pattern of options.ignore) { if (!pattern) continue; - if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, true)); + if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, options, props, true)); } for (const pattern of patterns) { if (!pattern) continue; - if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, false)); - else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), expandDirectories, cwd, props, true)); + if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, options, props, false)); + else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), options, props, true)); } return { match: matchPatterns, ignore: ignorePatterns }; } -function formatPaths(paths, relative) { - for (let i = paths.length - 1; i >= 0; i--) { - const path$1 = paths[i]; - paths[i] = relative(path$1); - } - return paths; -} -function normalizeCwd(cwd) { - if (!cwd) return process.cwd().replace(BACKSLASHES, "/"); - if (cwd instanceof URL) return fileURLToPath(cwd).replace(BACKSLASHES, "/"); - return path.resolve(cwd).replace(BACKSLASHES, "/"); -} -function getCrawler(patterns, inputOptions = {}) { - const options = process.env.TINYGLOBBY_DEBUG ? { - ...inputOptions, - debug: true - } : inputOptions; - const cwd = normalizeCwd(options.cwd); - if (options.debug) log("globbing with:", { - patterns, - options, - cwd - }); - if (Array.isArray(patterns) && patterns.length === 0) return [{ - sync: () => [], - withPromise: async () => [] - }, false]; +//#endregion +//#region src/crawler.ts +function buildCrawler(options, patterns) { + const cwd = options.cwd; const props = { root: cwd, - commonPath: null, depthOffset: 0 }; - const processed = processPatterns({ - ...options, - patterns - }, cwd, props); + const processed = processPatterns(options, patterns, props); if (options.debug) log("internal processing patterns:", processed); + const { absolute, caseSensitiveMatch, debug, dot, followSymbolicLinks, onlyDirectories } = options; + const root = props.root.replace(BACKSLASHES, ""); const matchOptions = { - dot: options.dot, + dot, nobrace: options.braceExpansion === false, - nocase: options.caseSensitiveMatch === false, + nocase: !caseSensitiveMatch, noextglob: options.extglob === false, noglobstar: options.globstar === false, posix: true }; - const matcher = picomatch(processed.match, { - ...matchOptions, - ignore: processed.ignore - }); + const matcher = picomatch(processed.match, matchOptions); const ignore = picomatch(processed.ignore, matchOptions); const partialMatcher = getPartialMatcher(processed.match, matchOptions); - const format = buildFormat(cwd, props.root, options.absolute); - const formatExclude = options.absolute ? format : buildFormat(cwd, props.root, true); - const fdirOptions = { - filters: [options.debug ? (p, isDirectory) => { - const path$1 = format(p, isDirectory); - const matches = matcher(path$1); - if (matches) log(`matched ${path$1}`); + const format = buildFormat(cwd, root, absolute); + const excludeFormatter = absolute ? format : buildFormat(cwd, root, true); + const excludePredicate = (_, p) => { + const relativePath = excludeFormatter(p, true); + return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); + }; + let maxDepth; + if (options.deep !== void 0) maxDepth = Math.round(options.deep - props.depthOffset); + const crawler = new fdir({ + filters: [debug ? (p, isDirectory) => { + const path = format(p, isDirectory); + const matches = matcher(path) && !ignore(path); + if (matches) log(`matched ${path}`); return matches; - } : (p, isDirectory) => matcher(format(p, isDirectory))], - exclude: options.debug ? (_, p) => { - const relativePath = formatExclude(p, true); - const skipped = relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); - if (skipped) log(`skipped ${p}`); - else log(`crawling ${p}`); + } : (p, isDirectory) => { + const path = format(p, isDirectory); + return matcher(path) && !ignore(path); + }], + exclude: debug ? (_, p) => { + const skipped = excludePredicate(_, p); + log(`${skipped ? "skipped" : "crawling"} ${p}`); return skipped; - } : (_, p) => { - const relativePath = formatExclude(p, true); - return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); - }, - fs: options.fs ? { - readdir: options.fs.readdir || nativeFs.readdir, - readdirSync: options.fs.readdirSync || nativeFs.readdirSync, - realpath: options.fs.realpath || nativeFs.realpath, - realpathSync: options.fs.realpathSync || nativeFs.realpathSync, - stat: options.fs.stat || nativeFs.stat, - statSync: options.fs.statSync || nativeFs.statSync - } : void 0, + } : excludePredicate, + fs: options.fs, pathSeparator: "/", - relativePaths: true, - resolveSymlinks: true, + relativePaths: !absolute, + resolvePaths: absolute, + includeBasePath: absolute, + resolveSymlinks: followSymbolicLinks, + excludeSymlinks: !followSymbolicLinks, + excludeFiles: onlyDirectories, + includeDirs: onlyDirectories || !options.onlyFiles, + maxDepth, signal: options.signal + }).crawl(root); + if (options.debug) log("internal properties:", { + ...props, + root + }); + return [crawler, cwd !== root && !absolute && buildRelative(cwd, root)]; +} +//#endregion +//#region src/index.ts +function formatPaths(paths, mapper) { + if (mapper) for (let i = paths.length - 1; i >= 0; i--) paths[i] = mapper(paths[i]); + return paths; +} +const defaultOptions = { + caseSensitiveMatch: true, + cwd: process.cwd(), + debug: !!process.env.TINYGLOBBY_DEBUG, + expandDirectories: true, + followSymbolicLinks: true, + onlyFiles: true +}; +function getOptions(options) { + const opts = { + ...defaultOptions, + ...options }; - if (options.deep !== void 0) fdirOptions.maxDepth = Math.round(options.deep - props.depthOffset); - if (options.absolute) { - fdirOptions.relativePaths = false; - fdirOptions.resolvePaths = true; - fdirOptions.includeBasePath = true; - } - if (options.followSymbolicLinks === false) { - fdirOptions.resolveSymlinks = false; - fdirOptions.excludeSymlinks = true; - } - if (options.onlyDirectories) { - fdirOptions.excludeFiles = true; - fdirOptions.includeDirs = true; - } else if (options.onlyFiles === false) fdirOptions.includeDirs = true; - props.root = props.root.replace(BACKSLASHES, ""); - const root = props.root; - if (options.debug) log("internal properties:", props); - const relative = cwd !== root && !options.absolute && buildRelative(cwd, props.root); - return [new fdir(fdirOptions).crawl(root), relative]; + opts.cwd = (opts.cwd instanceof URL ? fileURLToPath(opts.cwd) : resolve(opts.cwd)).replace(BACKSLASHES, "/"); + opts.ignore = ensureStringArray(opts.ignore); + opts.fs && (opts.fs = { + readdir: opts.fs.readdir || readdir, + readdirSync: opts.fs.readdirSync || readdirSync, + realpath: opts.fs.realpath || realpath, + realpathSync: opts.fs.realpathSync || realpathSync, + stat: opts.fs.stat || stat, + statSync: opts.fs.statSync || statSync + }); + if (opts.debug) log("globbing with options:", opts); + return opts; +} +function getCrawler(globInput, inputOptions = {}) { + var _ref; + if (globInput && (inputOptions === null || inputOptions === void 0 ? void 0 : inputOptions.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); + const isModern = isReadonlyArray(globInput) || typeof globInput === "string"; + const patterns = ensureStringArray((_ref = isModern ? globInput : globInput.patterns) !== null && _ref !== void 0 ? _ref : "**/*"); + const options = getOptions(isModern ? inputOptions : globInput); + return patterns.length > 0 ? buildCrawler(options, patterns) : []; } -async function glob(patternsOrOptions, options) { - if (patternsOrOptions && (options === null || options === void 0 ? void 0 : options.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); - const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string"; - const opts = isModern ? options : patternsOrOptions; - const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns; - const [crawler, relative] = getCrawler(patterns, opts); - if (!relative) return crawler.withPromise(); - return formatPaths(await crawler.withPromise(), relative); +async function glob(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(await crawler.withPromise(), relative) : []; } -function globSync(patternsOrOptions, options) { - if (patternsOrOptions && (options === null || options === void 0 ? void 0 : options.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); - const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string"; - const opts = isModern ? options : patternsOrOptions; - const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns; - const [crawler, relative] = getCrawler(patterns, opts); - if (!relative) return crawler.sync(); - return formatPaths(crawler.sync(), relative); +function globSync(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(crawler.sync(), relative) : []; } - //#endregion -export { convertPathToPattern, escapePath, glob, globSync, isDynamicPattern }; \ No newline at end of file +export { convertPathToPattern, escapePath, glob, globSync, isDynamicPattern }; diff --git a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/constants.js b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/constants.js index 3f7ef7e53adaf9..f0aeda7d48171c 100644 --- a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/constants.js +++ b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/constants.js @@ -3,6 +3,8 @@ const WIN_SLASH = '\\\\/'; const WIN_NO_SLASH = `[^${WIN_SLASH}]`; +const DEFAULT_MAX_EXTGLOB_RECURSION = 0; + /** * Posix glob regex */ @@ -69,6 +71,7 @@ const WINDOWS_CHARS = { */ const POSIX_REGEX_SOURCE = { + __proto__: null, alnum: 'a-zA-Z0-9', alpha: 'a-zA-Z', ascii: '\\x00-\\x7F', @@ -86,6 +89,7 @@ const POSIX_REGEX_SOURCE = { }; module.exports = { + DEFAULT_MAX_EXTGLOB_RECURSION, MAX_LENGTH: 1024 * 64, POSIX_REGEX_SOURCE, diff --git a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/parse.js b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/parse.js index 8fd8ff499d182f..57d994a87896b3 100644 --- a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/parse.js +++ b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/parse.js @@ -45,6 +45,277 @@ const syntaxError = (type, char) => { return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; }; +const splitTopLevel = input => { + const parts = []; + let bracket = 0; + let paren = 0; + let quote = 0; + let value = ''; + let escaped = false; + + for (const ch of input) { + if (escaped === true) { + value += ch; + escaped = false; + continue; + } + + if (ch === '\\') { + value += ch; + escaped = true; + continue; + } + + if (ch === '"') { + quote = quote === 1 ? 0 : 1; + value += ch; + continue; + } + + if (quote === 0) { + if (ch === '[') { + bracket++; + } else if (ch === ']' && bracket > 0) { + bracket--; + } else if (bracket === 0) { + if (ch === '(') { + paren++; + } else if (ch === ')' && paren > 0) { + paren--; + } else if (ch === '|' && paren === 0) { + parts.push(value); + value = ''; + continue; + } + } + } + + value += ch; + } + + parts.push(value); + return parts; +}; + +const isPlainBranch = branch => { + let escaped = false; + + for (const ch of branch) { + if (escaped === true) { + escaped = false; + continue; + } + + if (ch === '\\') { + escaped = true; + continue; + } + + if (/[?*+@!()[\]{}]/.test(ch)) { + return false; + } + } + + return true; +}; + +const normalizeSimpleBranch = branch => { + let value = branch.trim(); + let changed = true; + + while (changed === true) { + changed = false; + + if (/^@\([^\\()[\]{}|]+\)$/.test(value)) { + value = value.slice(2, -1); + changed = true; + } + } + + if (!isPlainBranch(value)) { + return; + } + + return value.replace(/\\(.)/g, '$1'); +}; + +const hasRepeatedCharPrefixOverlap = branches => { + const values = branches.map(normalizeSimpleBranch).filter(Boolean); + + for (let i = 0; i < values.length; i++) { + for (let j = i + 1; j < values.length; j++) { + const a = values[i]; + const b = values[j]; + const char = a[0]; + + if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) { + continue; + } + + if (a === b || a.startsWith(b) || b.startsWith(a)) { + return true; + } + } + } + + return false; +}; + +const parseRepeatedExtglob = (pattern, requireEnd = true) => { + if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') { + return; + } + + let bracket = 0; + let paren = 0; + let quote = 0; + let escaped = false; + + for (let i = 1; i < pattern.length; i++) { + const ch = pattern[i]; + + if (escaped === true) { + escaped = false; + continue; + } + + if (ch === '\\') { + escaped = true; + continue; + } + + if (ch === '"') { + quote = quote === 1 ? 0 : 1; + continue; + } + + if (quote === 1) { + continue; + } + + if (ch === '[') { + bracket++; + continue; + } + + if (ch === ']' && bracket > 0) { + bracket--; + continue; + } + + if (bracket > 0) { + continue; + } + + if (ch === '(') { + paren++; + continue; + } + + if (ch === ')') { + paren--; + + if (paren === 0) { + if (requireEnd === true && i !== pattern.length - 1) { + return; + } + + return { + type: pattern[0], + body: pattern.slice(2, i), + end: i + }; + } + } + } +}; + +const getStarExtglobSequenceOutput = pattern => { + let index = 0; + const chars = []; + + while (index < pattern.length) { + const match = parseRepeatedExtglob(pattern.slice(index), false); + + if (!match || match.type !== '*') { + return; + } + + const branches = splitTopLevel(match.body).map(branch => branch.trim()); + if (branches.length !== 1) { + return; + } + + const branch = normalizeSimpleBranch(branches[0]); + if (!branch || branch.length !== 1) { + return; + } + + chars.push(branch); + index += match.end + 1; + } + + if (chars.length < 1) { + return; + } + + const source = chars.length === 1 + ? utils.escapeRegex(chars[0]) + : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`; + + return `${source}*`; +}; + +const repeatedExtglobRecursion = pattern => { + let depth = 0; + let value = pattern.trim(); + let match = parseRepeatedExtglob(value); + + while (match) { + depth++; + value = match.body.trim(); + match = parseRepeatedExtglob(value); + } + + return depth; +}; + +const analyzeRepeatedExtglob = (body, options) => { + if (options.maxExtglobRecursion === false) { + return { risky: false }; + } + + const max = + typeof options.maxExtglobRecursion === 'number' + ? options.maxExtglobRecursion + : constants.DEFAULT_MAX_EXTGLOB_RECURSION; + + const branches = splitTopLevel(body).map(branch => branch.trim()); + + if (branches.length > 1) { + if ( + branches.some(branch => branch === '') || + branches.some(branch => /^[*?]+$/.test(branch)) || + hasRepeatedCharPrefixOverlap(branches) + ) { + return { risky: true }; + } + } + + for (const branch of branches) { + const safeOutput = getStarExtglobSequenceOutput(branch); + if (safeOutput) { + return { risky: true, safeOutput }; + } + + if (repeatedExtglobRecursion(branch) > max) { + return { risky: true }; + } + } + + return { risky: false }; +}; + /** * Parse the given input string. * @param {String} input @@ -225,6 +496,8 @@ const parse = (input, options) => { token.prev = prev; token.parens = state.parens; token.output = state.output; + token.startIndex = state.index; + token.tokensIndex = tokens.length; const output = (opts.capture ? '(' : '') + token.open; increment('parens'); @@ -234,6 +507,34 @@ const parse = (input, options) => { }; const extglobClose = token => { + const literal = input.slice(token.startIndex, state.index + 1); + const body = input.slice(token.startIndex + 2, state.index); + const analysis = analyzeRepeatedExtglob(body, opts); + + if ((token.type === 'plus' || token.type === 'star') && analysis.risky) { + const safeOutput = analysis.safeOutput + ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput) + : undefined; + const open = tokens[token.tokensIndex]; + + open.type = 'text'; + open.value = literal; + open.output = safeOutput || utils.escapeRegex(literal); + + for (let i = token.tokensIndex + 1; i < tokens.length; i++) { + tokens[i].value = ''; + tokens[i].output = ''; + delete tokens[i].suffix; + } + + state.output = token.output + open.output; + state.backtrack = true; + + push({ type: 'paren', extglob: true, value, output: '' }); + decrement('parens'); + return; + } + let output = token.close + (opts.capture ? ')' : ''); let rest; diff --git a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/picomatch.js b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/picomatch.js index d0ebd9f163cf24..fbb8b1ca9f1e14 100644 --- a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/picomatch.js +++ b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/lib/picomatch.js @@ -233,6 +233,14 @@ picomatch.scan = (input, options) => scan(input, options); * Compile a regular expression from the `state` object returned by the * [parse()](#parse) method. * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` * @param {Object} `state` * @param {Object} `options` * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. @@ -268,10 +276,10 @@ picomatch.compileRe = (state, options, returnOutput = false, returnState = false * * ```js * const picomatch = require('picomatch'); - * const state = picomatch.parse('*.js'); - * // picomatch.compileRe(state[, options]); + * // picomatch.makeRe(state[, options]); * - * console.log(picomatch.compileRe(state)); + * const result = picomatch.makeRe('*.js'); + * console.log(result); * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ * ``` * @param {String} `state` The object returned from the `.parse` method. diff --git a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/package.json b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/package.json index 372e27e05f412f..9151f1d83587d9 100644 --- a/deps/npm/node_modules/tinyglobby/node_modules/picomatch/package.json +++ b/deps/npm/node_modules/tinyglobby/node_modules/picomatch/package.json @@ -1,7 +1,7 @@ { "name": "picomatch", "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.", - "version": "4.0.3", + "version": "4.0.4", "homepage": "https://github.com/micromatch/picomatch", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "funding": "https://github.com/sponsors/jonschlinkert", @@ -32,8 +32,7 @@ "fill-range": "^7.0.1", "gulp-format-md": "^2.0.0", "mocha": "^10.4.0", - "nyc": "^15.1.0", - "time-require": "github:jonschlinkert/time-require" + "nyc": "^15.1.0" }, "keywords": [ "glob", diff --git a/deps/npm/node_modules/tinyglobby/package.json b/deps/npm/node_modules/tinyglobby/package.json index d0247c25ae3a1e..06dadac3a61307 100644 --- a/deps/npm/node_modules/tinyglobby/package.json +++ b/deps/npm/node_modules/tinyglobby/package.json @@ -1,6 +1,6 @@ { "name": "tinyglobby", - "version": "0.2.15", + "version": "0.2.16", "description": "A fast and minimal alternative to globby and fast-glob", "type": "module", "main": "./dist/index.cjs", @@ -38,18 +38,18 @@ }, "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "devDependencies": { - "@biomejs/biome": "^2.2.3", - "@types/node": "^24.3.1", - "@types/picomatch": "^4.0.2", + "@biomejs/biome": "^2.4.10", + "@types/node": "^25.5.2", + "@types/picomatch": "^4.0.3", "fast-glob": "^3.3.3", - "fs-fixture": "^2.8.1", - "glob": "^11.0.3", - "tinybench": "^5.0.1", - "tsdown": "^0.14.2", - "typescript": "^5.9.2" + "fs-fixture": "^2.13.0", + "glob": "^13.0.6", + "tinybench": "^6.0.0", + "tsdown": "^0.21.7", + "typescript": "^6.0.2" }, "engines": { "node": ">=12.0.0" diff --git a/deps/npm/node_modules/undici/LICENSE b/deps/npm/node_modules/undici/LICENSE new file mode 100644 index 00000000000000..e7323bb52ec352 --- /dev/null +++ b/deps/npm/node_modules/undici/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +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. diff --git a/deps/npm/node_modules/undici/docs/docs/api/Agent.md b/deps/npm/node_modules/undici/docs/docs/api/Agent.md new file mode 100644 index 00000000000000..dd5d99bc1e1287 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Agent.md @@ -0,0 +1,80 @@ +# Agent + +Extends: `undici.Dispatcher` + +Agent allow dispatching requests against multiple different origins. + +Requests are not guaranteed to be dispatched in order of invocation. + +## `new undici.Agent([options])` + +Arguments: + +* **options** `AgentOptions` (optional) + +Returns: `Agent` + +### Parameter: `AgentOptions` + +Extends: [`PoolOptions`](Pool.md#parameter-pooloptions) + +* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Pool(origin, opts)` +* **maxRedirections** `Integer` - Default: `0`. The number of HTTP redirection to follow unless otherwise specified in `DispatchOptions`. +* **interceptors** `{ Agent: DispatchInterceptor[] }` - Default: `[RedirectInterceptor]` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching). Note that the behavior of interceptors is Experimental and might change at any given time. + +## Instance Properties + +### `Agent.closed` + +Implements [Client.closed](Client.md#clientclosed) + +### `Agent.destroyed` + +Implements [Client.destroyed](Client.md#clientdestroyed) + +## Instance Methods + +### `Agent.close([callback])` + +Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise). + +### `Agent.destroy([error, callback])` + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `Agent.dispatch(options, handler: AgentDispatchOptions)` + +Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +#### Parameter: `AgentDispatchOptions` + +Extends: [`DispatchOptions`](Dispatcher.md#parameter-dispatchoptions) + +* **origin** `string | URL` +* **maxRedirections** `Integer`. + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `Agent.connect(options[, callback])` + +See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback). + +### `Agent.dispatch(options, handler)` + +Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `Agent.pipeline(options, handler)` + +See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler). + +### `Agent.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +### `Agent.stream(options, factory[, callback])` + +See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback). + +### `Agent.upgrade(options[, callback])` + +See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback). diff --git a/deps/npm/node_modules/undici/docs/docs/api/BalancedPool.md b/deps/npm/node_modules/undici/docs/docs/api/BalancedPool.md new file mode 100644 index 00000000000000..183ef523185a90 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/BalancedPool.md @@ -0,0 +1,99 @@ +# Class: BalancedPool + +Extends: `undici.Dispatcher` + +A pool of [Pool](Pool.md) instances connected to multiple upstreams. + +Requests are not guaranteed to be dispatched in order of invocation. + +## `new BalancedPool(upstreams [, options])` + +Arguments: + +* **upstreams** `URL | string | string[]` - It should only include the **protocol, hostname, and port**. +* **options** `BalancedPoolOptions` (optional) + +### Parameter: `BalancedPoolOptions` + +Extends: [`PoolOptions`](Pool.md#parameter-pooloptions) + +* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Pool(origin, opts)` + +The `PoolOptions` are passed to each of the `Pool` instances being created. +## Instance Properties + +### `BalancedPool.upstreams` + +Returns an array of upstreams that were previously added. + +### `BalancedPool.closed` + +Implements [Client.closed](Client.md#clientclosed) + +### `BalancedPool.destroyed` + +Implements [Client.destroyed](Client.md#clientdestroyed) + +### `Pool.stats` + +Returns [`PoolStats`](PoolStats.md) instance for this pool. + +## Instance Methods + +### `BalancedPool.addUpstream(upstream)` + +Add an upstream. + +Arguments: + +* **upstream** `string` - It should only include the **protocol, hostname, and port**. + +### `BalancedPool.removeUpstream(upstream)` + +Removes an upstream that was previously added. + +### `BalancedPool.close([callback])` + +Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise). + +### `BalancedPool.destroy([error, callback])` + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `BalancedPool.connect(options[, callback])` + +See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback). + +### `BalancedPool.dispatch(options, handlers)` + +Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `BalancedPool.pipeline(options, handler)` + +See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler). + +### `BalancedPool.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +### `BalancedPool.stream(options, factory[, callback])` + +See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback). + +### `BalancedPool.upgrade(options[, callback])` + +See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback). + +## Instance Events + +### Event: `'connect'` + +See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect). + +### Event: `'disconnect'` + +See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect). + +### Event: `'drain'` + +See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain). diff --git a/deps/npm/node_modules/undici/docs/docs/api/CacheStorage.md b/deps/npm/node_modules/undici/docs/docs/api/CacheStorage.md new file mode 100644 index 00000000000000..08ee99fab148ce --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/CacheStorage.md @@ -0,0 +1,30 @@ +# CacheStorage + +Undici exposes a W3C spec-compliant implementation of [CacheStorage](https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage) and [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache). + +## Opening a Cache + +Undici exports a top-level CacheStorage instance. You can open a new Cache, or duplicate a Cache with an existing name, by using `CacheStorage.prototype.open`. If you open a Cache with the same name as an already-existing Cache, its list of cached Responses will be shared between both instances. + +```mjs +import { caches } from 'undici' + +const cache_1 = await caches.open('v1') +const cache_2 = await caches.open('v1') + +// Although .open() creates a new instance, +assert(cache_1 !== cache_2) +// The same Response is matched in both. +assert.deepStrictEqual(await cache_1.match('/req'), await cache_2.match('/req')) +``` + +## Deleting a Cache + +If a Cache is deleted, the cached Responses/Requests can still be used. + +```mjs +const response = await cache_1.match('/req') +await caches.delete('v1') + +await response.text() // the Response's body +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Client.md b/deps/npm/node_modules/undici/docs/docs/api/Client.md new file mode 100644 index 00000000000000..fdee5ea702671b --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Client.md @@ -0,0 +1,276 @@ +# Class: Client + +Extends: `undici.Dispatcher` + +A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default. + +Requests are not guaranteed to be dispatched in order of invocation. + +## `new Client(url[, options])` + +Arguments: + +* **url** `URL | string` - Should only include the **protocol, hostname, and port**. +* **options** `ClientOptions` (optional) + +Returns: `Client` + +### Parameter: `ClientOptions` + +> ⚠️ Warning: The `H2` support is experimental. + +* **bodyTimeout** `number | null` (optional) - Default: `300e3` - The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Defaults to 300 seconds. Please note the `timeout` will be reset if you keep writing data to the scoket everytime. +* **headersTimeout** `number | null` (optional) - Default: `300e3` - The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers while not sending the request. Defaults to 300 seconds. +* **keepAliveMaxTimeout** `number | null` (optional) - Default: `600e3` - The maximum allowed `keepAliveTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Defaults to 10 minutes. +* **keepAliveTimeout** `number | null` (optional) - Default: `4e3` - The timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. See [MDN: HTTP - Headers - Keep-Alive directives](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive#directives) for more details. Defaults to 4 seconds. +* **keepAliveTimeoutThreshold** `number | null` (optional) - Default: `2e3` - A number of milliseconds subtracted from server *keep-alive* hints when overriding `keepAliveTimeout` to account for timing inaccuracies caused by e.g. transport latency. Defaults to 2 seconds. +* **maxHeaderSize** `number | null` (optional) - Default: `--max-http-header-size` or `16384` - The maximum length of request headers in bytes. Defaults to Node.js' --max-http-header-size or 16KiB. +* **maxResponseSize** `number | null` (optional) - Default: `-1` - The maximum length of response body in bytes. Set to `-1` to disable. +* **webSocket** `WebSocketOptions` (optional) - WebSocket-specific configuration options. + * **maxPayloadSize** `number` (optional) - Default: `134217728` (128 MB) - Maximum allowed payload size in bytes for WebSocket messages. Applied to uncompressed messages, compressed frame payloads, and decompressed (permessage-deflate) messages. Set to 0 to disable the limit. +* **pipelining** `number | null` (optional) - Default: `1` - The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Carefully consider your workload and environment before enabling concurrent requests as pipelining may reduce performance if used incorrectly. Pipelining is sensitive to network stack settings as well as head of line blocking caused by e.g. long running requests. Set to `0` to disable keep-alive connections. +* **connect** `ConnectOptions | Function | null` (optional) - Default: `null`. +* **strictContentLength** `Boolean` (optional) - Default: `true` - Whether to treat request content length mismatches as errors. If true, an error is thrown when the request content-length header doesn't match the length of the request body. + +* **interceptors** `{ Client: DispatchInterceptor[] }` - Default: `[RedirectInterceptor]` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching). Note that the behavior of interceptors is Experimental and might change at any given time. **Note: this is deprecated in favor of [Dispatcher#compose](./Dispatcher.md#dispatcher). Support will be droped in next major.** +* **autoSelectFamily**: `boolean` (optional) - Default: depends on local Node version, on Node 18.13.0 and above is `false`. Enables a family autodetection algorithm that loosely implements section 5 of [RFC 8305](https://tools.ietf.org/html/rfc8305#section-5). See [here](https://nodejs.org/api/net.html#socketconnectoptions-connectlistener) for more details. This option is ignored if not supported by the current Node version. +* **autoSelectFamilyAttemptTimeout**: `number` - Default: depends on local Node version, on Node 18.13.0 and above is `250`. The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. See [here](https://nodejs.org/api/net.html#socketconnectoptions-connectlistener) for more details. +* **allowH2**: `boolean` - Default: `false`. Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation. +* **maxConcurrentStreams**: `number` - Default: `100`. Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame. + +#### Parameter: `ConnectOptions` + +Every Tls option, see [here](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback). +Furthermore, the following options can be passed: + +* **socketPath** `string | null` (optional) - Default: `null` - An IPC endpoint, either Unix domain socket or Windows named pipe. +* **maxCachedSessions** `number | null` (optional) - Default: `100` - Maximum number of TLS cached sessions. Use 0 to disable TLS session caching. Default: 100. +* **timeout** `number | null` (optional) - In milliseconds, Default `10e3`. +* **servername** `string | null` (optional) +* **keepAlive** `boolean | null` (optional) - Default: `true` - TCP keep-alive enabled +* **keepAliveInitialDelay** `number | null` (optional) - Default: `60000` - TCP keep-alive interval for the socket in milliseconds + +### Example - Basic Client instantiation + +This will instantiate the undici Client, but it will not connect to the origin until something is queued. Consider using `client.connect` to prematurely connect to the origin, or just call `client.request`. + +```js +'use strict' +import { Client } from 'undici' + +const client = new Client('http://localhost:3000') +``` + +### Example - Custom connector + +This will allow you to perform some additional check on the socket that will be used for the next request. + +```js +'use strict' +import { Client, buildConnector } from 'undici' + +const connector = buildConnector({ rejectUnauthorized: false }) +const client = new Client('https://localhost:3000', { + connect (opts, cb) { + connector(opts, (err, socket) => { + if (err) { + cb(err) + } else if (/* assertion */) { + socket.destroy() + cb(new Error('kaboom')) + } else { + cb(null, socket) + } + }) + } +}) +``` + +## Instance Methods + +### `Client.close([callback])` + +Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise). + +### `Client.destroy([error, callback])` + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +Waits until socket is closed before invoking the callback (or returning a promise if no callback is provided). + +### `Client.connect(options[, callback])` + +See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback). + +### `Client.dispatch(options, handlers)` + +Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `Client.pipeline(options, handler)` + +See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler). + +### `Client.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +### `Client.stream(options, factory[, callback])` + +See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback). + +### `Client.upgrade(options[, callback])` + +See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback). + +## Instance Properties + +### `Client.closed` + +* `boolean` + +`true` after `client.close()` has been called. + +### `Client.destroyed` + +* `boolean` + +`true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed. + +### `Client.pipelining` + +* `number` + +Property to get and set the pipelining factor. + +## Instance Events + +### Event: `'connect'` + +See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect). + +Parameters: + +* **origin** `URL` +* **targets** `Array` + +Emitted when a socket has been created and connected. The client will connect once `client.size > 0`. + +#### Example - Client connect event + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +client.on('connect', (origin) => { + console.log(`Connected to ${origin}`) // should print before the request body statement +}) + +try { + const { body } = await client.request({ + path: '/', + method: 'GET' + }) + body.setEncoding('utf-8') + body.on('data', console.log) + client.close() + server.close() +} catch (error) { + console.error(error) + client.close() + server.close() +} +``` + +### Event: `'disconnect'` + +See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect). + +Parameters: + +* **origin** `URL` +* **targets** `Array` +* **error** `Error` + +Emitted when socket has disconnected. The error argument of the event is the error which caused the socket to disconnect. The client will reconnect if or once `client.size > 0`. + +#### Example - Client disconnect event + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.destroy() +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +client.on('disconnect', (origin) => { + console.log(`Disconnected from ${origin}`) +}) + +try { + await client.request({ + path: '/', + method: 'GET' + }) +} catch (error) { + console.error(error.message) + client.close() + server.close() +} +``` + +### Event: `'drain'` + +Emitted when pipeline is no longer busy. + +See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain). + +#### Example - Client drain event + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +client.on('drain', () => { + console.log('drain event') + client.close() + server.close() +}) + +const requests = [ + client.request({ path: '/', method: 'GET' }), + client.request({ path: '/', method: 'GET' }), + client.request({ path: '/', method: 'GET' }) +] + +await Promise.all(requests) + +console.log('requests completed') +``` + +### Event: `'error'` + +Invoked for users errors such as throwing in the `onError` handler. diff --git a/deps/npm/node_modules/undici/docs/docs/api/Connector.md b/deps/npm/node_modules/undici/docs/docs/api/Connector.md new file mode 100644 index 00000000000000..56821bd6430279 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Connector.md @@ -0,0 +1,115 @@ +# Connector + +Undici creates the underlying socket via the connector builder. +Normally, this happens automatically and you don't need to care about this, +but if you need to perform some additional check over the currently used socket, +this is the right place. + +If you want to create a custom connector, you must import the `buildConnector` utility. + +#### Parameter: `buildConnector.BuildOptions` + +Every Tls option, see [here](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback). +Furthermore, the following options can be passed: + +* **socketPath** `string | null` (optional) - Default: `null` - An IPC endpoint, either Unix domain socket or Windows named pipe. +* **maxCachedSessions** `number | null` (optional) - Default: `100` - Maximum number of TLS cached sessions. Use 0 to disable TLS session caching. Default: `100`. +* **timeout** `number | null` (optional) - In milliseconds. Default `10e3`. +* **servername** `string | null` (optional) + +Once you call `buildConnector`, it will return a connector function, which takes the following parameters. + +#### Parameter: `connector.Options` + +* **hostname** `string` (required) +* **host** `string` (optional) +* **protocol** `string` (required) +* **port** `string` (required) +* **servername** `string` (optional) +* **localAddress** `string | null` (optional) Local address the socket should connect from. +* **httpSocket** `Socket` (optional) Establish secure connection on a given socket rather than creating a new socket. It can only be sent on TLS update. + +### Basic example + +```js +'use strict' + +import { Client, buildConnector } from 'undici' + +const connector = buildConnector({ rejectUnauthorized: false }) +const client = new Client('https://localhost:3000', { + connect (opts, cb) { + connector(opts, (err, socket) => { + if (err) { + cb(err) + } else if (/* assertion */) { + socket.destroy() + cb(new Error('kaboom')) + } else { + cb(null, socket) + } + }) + } +}) +``` + +### Example: validate the CA fingerprint + +```js +'use strict' + +import { Client, buildConnector } from 'undici' + +const caFingerprint = 'FO:OB:AR' +const connector = buildConnector({ rejectUnauthorized: false }) +const client = new Client('https://localhost:3000', { + connect (opts, cb) { + connector(opts, (err, socket) => { + if (err) { + cb(err) + } else if (getIssuerCertificate(socket).fingerprint256 !== caFingerprint) { + socket.destroy() + cb(new Error('Fingerprint does not match or malformed certificate')) + } else { + cb(null, socket) + } + }) + } +}) + +client.request({ + path: '/', + method: 'GET' +}, (err, data) => { + if (err) throw err + + const bufs = [] + data.body.on('data', (buf) => { + bufs.push(buf) + }) + data.body.on('end', () => { + console.log(Buffer.concat(bufs).toString('utf8')) + client.close() + }) +}) + +function getIssuerCertificate (socket) { + let certificate = socket.getPeerCertificate(true) + while (certificate && Object.keys(certificate).length > 0) { + // invalid certificate + if (certificate.issuerCertificate == null) { + return null + } + + // We have reached the root certificate. + // In case of self-signed certificates, `issuerCertificate` may be a circular reference. + if (certificate.fingerprint256 === certificate.issuerCertificate.fingerprint256) { + break + } + + // continue the loop + certificate = certificate.issuerCertificate + } + return certificate +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/ContentType.md b/deps/npm/node_modules/undici/docs/docs/api/ContentType.md new file mode 100644 index 00000000000000..2bcc9f71ca3252 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/ContentType.md @@ -0,0 +1,57 @@ +# MIME Type Parsing + +## `MIMEType` interface + +* **type** `string` +* **subtype** `string` +* **parameters** `Map` +* **essence** `string` + +## `parseMIMEType(input)` + +Implements [parse a MIME type](https://mimesniff.spec.whatwg.org/#parse-a-mime-type). + +Parses a MIME type, returning its type, subtype, and any associated parameters. If the parser can't parse an input it returns the string literal `'failure'`. + +```js +import { parseMIMEType } from 'undici' + +parseMIMEType('text/html; charset=gbk') +// { +// type: 'text', +// subtype: 'html', +// parameters: Map(1) { 'charset' => 'gbk' }, +// essence: 'text/html' +// } +``` + +Arguments: + +* **input** `string` + +Returns: `MIMEType|'failure'` + +## `serializeAMimeType(input)` + +Implements [serialize a MIME type](https://mimesniff.spec.whatwg.org/#serialize-a-mime-type). + +Serializes a MIMEType object. + +```js +import { serializeAMimeType } from 'undici' + +serializeAMimeType({ + type: 'text', + subtype: 'html', + parameters: new Map([['charset', 'gbk']]), + essence: 'text/html' +}) +// text/html;charset=gbk + +``` + +Arguments: + +* **mimeType** `MIMEType` + +Returns: `string` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Cookies.md b/deps/npm/node_modules/undici/docs/docs/api/Cookies.md new file mode 100644 index 00000000000000..0cad37914d6258 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Cookies.md @@ -0,0 +1,101 @@ +# Cookie Handling + +## `Cookie` interface + +* **name** `string` +* **value** `string` +* **expires** `Date|number` (optional) +* **maxAge** `number` (optional) +* **domain** `string` (optional) +* **path** `string` (optional) +* **secure** `boolean` (optional) +* **httpOnly** `boolean` (optional) +* **sameSite** `'String'|'Lax'|'None'` (optional) +* **unparsed** `string[]` (optional) Left over attributes that weren't parsed. + +## `deleteCookie(headers, name[, attributes])` + +Sets the expiry time of the cookie to the unix epoch, causing browsers to delete it when received. + +```js +import { deleteCookie, Headers } from 'undici' + +const headers = new Headers() +deleteCookie(headers, 'name') + +console.log(headers.get('set-cookie')) // name=; Expires=Thu, 01 Jan 1970 00:00:00 GMT +``` + +Arguments: + +* **headers** `Headers` +* **name** `string` +* **attributes** `{ path?: string, domain?: string }` (optional) + +Returns: `void` + +## `getCookies(headers)` + +Parses the `Cookie` header and returns a list of attributes and values. + +```js +import { getCookies, Headers } from 'undici' + +const headers = new Headers({ + cookie: 'get=cookies; and=attributes' +}) + +console.log(getCookies(headers)) // { get: 'cookies', and: 'attributes' } +``` + +Arguments: + +* **headers** `Headers` + +Returns: `Record` + +## `getSetCookies(headers)` + +Parses all `Set-Cookie` headers. + +```js +import { getSetCookies, Headers } from 'undici' + +const headers = new Headers({ 'set-cookie': 'undici=getSetCookies; Secure' }) + +console.log(getSetCookies(headers)) +// [ +// { +// name: 'undici', +// value: 'getSetCookies', +// secure: true +// } +// ] + +``` + +Arguments: + +* **headers** `Headers` + +Returns: `Cookie[]` + +## `setCookie(headers, cookie)` + +Appends a cookie to the `Set-Cookie` header. + +```js +import { setCookie, Headers } from 'undici' + +const headers = new Headers() +setCookie(headers, { name: 'undici', value: 'setCookie' }) + +console.log(headers.get('Set-Cookie')) // undici=setCookie +``` + +Arguments: + +* **headers** `Headers` +* **cookie** `Cookie` + +Returns: `void` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Debug.md b/deps/npm/node_modules/undici/docs/docs/api/Debug.md new file mode 100644 index 00000000000000..7efc99e3e31f5f --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Debug.md @@ -0,0 +1,62 @@ +# Debug + +Undici (and subsenquently `fetch` and `websocket`) exposes a debug statement that can be enabled by setting `NODE_DEBUG` within the environment. + +The flags availabile are: + +## `undici` + +This flag enables debug statements for the core undici library. + +```sh +NODE_DEBUG=undici node script.js + +UNDICI 16241: connecting to nodejs.org using https:h1 +UNDICI 16241: connecting to nodejs.org using https:h1 +UNDICI 16241: connected to nodejs.org using https:h1 +UNDICI 16241: sending request to GET https://nodejs.org// +UNDICI 16241: received response to GET https://nodejs.org// - HTTP 307 +UNDICI 16241: connecting to nodejs.org using https:h1 +UNDICI 16241: trailers received from GET https://nodejs.org// +UNDICI 16241: connected to nodejs.org using https:h1 +UNDICI 16241: sending request to GET https://nodejs.org//en +UNDICI 16241: received response to GET https://nodejs.org//en - HTTP 200 +UNDICI 16241: trailers received from GET https://nodejs.org//en +``` + +## `fetch` + +This flag enables debug statements for the `fetch` API. + +> **Note**: statements are pretty similar to the ones in the `undici` flag, but scoped to `fetch` + +```sh +NODE_DEBUG=fetch node script.js + +FETCH 16241: connecting to nodejs.org using https:h1 +FETCH 16241: connecting to nodejs.org using https:h1 +FETCH 16241: connected to nodejs.org using https:h1 +FETCH 16241: sending request to GET https://nodejs.org// +FETCH 16241: received response to GET https://nodejs.org// - HTTP 307 +FETCH 16241: connecting to nodejs.org using https:h1 +FETCH 16241: trailers received from GET https://nodejs.org// +FETCH 16241: connected to nodejs.org using https:h1 +FETCH 16241: sending request to GET https://nodejs.org//en +FETCH 16241: received response to GET https://nodejs.org//en - HTTP 200 +FETCH 16241: trailers received from GET https://nodejs.org//en +``` + +## `websocket` + +This flag enables debug statements for the `Websocket` API. + +> **Note**: statements can overlap with `UNDICI` ones if `undici` or `fetch` flag has been enabled as well. + +```sh +NODE_DEBUG=websocket node script.js + +WEBSOCKET 18309: connecting to echo.websocket.org using https:h1 +WEBSOCKET 18309: connected to echo.websocket.org using https:h1 +WEBSOCKET 18309: sending request to GET https://echo.websocket.org// +WEBSOCKET 18309: connection opened +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/DiagnosticsChannel.md b/deps/npm/node_modules/undici/docs/docs/api/DiagnosticsChannel.md new file mode 100644 index 00000000000000..099c072f6c6ca7 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/DiagnosticsChannel.md @@ -0,0 +1,204 @@ +# Diagnostics Channel Support + +Stability: Experimental. + +Undici supports the [`diagnostics_channel`](https://nodejs.org/api/diagnostics_channel.html) (currently available only on Node.js v16+). +It is the preferred way to instrument Undici and retrieve internal information. + +The channels available are the following. + +## `undici:request:create` + +This message is published when a new outgoing request is created. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:request:create').subscribe(({ request }) => { + console.log('origin', request.origin) + console.log('completed', request.completed) + console.log('method', request.method) + console.log('path', request.path) + console.log('headers') // array of strings, e.g: ['foo', 'bar'] + request.addHeader('hello', 'world') + console.log('headers', request.headers) // e.g. ['foo', 'bar', 'hello', 'world'] +}) +``` + +Note: a request is only loosely completed to a given socket. + + +## `undici:request:bodySent` + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:request:bodySent').subscribe(({ request }) => { + // request is the same object undici:request:create +}) +``` + +## `undici:request:headers` + +This message is published after the response headers have been received, i.e. the response has been completed. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:request:headers').subscribe(({ request, response }) => { + // request is the same object undici:request:create + console.log('statusCode', response.statusCode) + console.log(response.statusText) + // response.headers are buffers. + console.log(response.headers.map((x) => x.toString())) +}) +``` + +## `undici:request:trailers` + +This message is published after the response body and trailers have been received, i.e. the response has been completed. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:request:trailers').subscribe(({ request, trailers }) => { + // request is the same object undici:request:create + console.log('completed', request.completed) + // trailers are buffers. + console.log(trailers.map((x) => x.toString())) +}) +``` + +## `undici:request:error` + +This message is published if the request is going to error, but it has not errored yet. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:request:error').subscribe(({ request, error }) => { + // request is the same object undici:request:create +}) +``` + +## `undici:client:sendHeaders` + +This message is published right before the first byte of the request is written to the socket. + +*Note*: It will publish the exact headers that will be sent to the server in raw format. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(({ request, headers, socket }) => { + // request is the same object undici:request:create + console.log(`Full headers list ${headers.split('\r\n')}`); +}) +``` + +## `undici:client:beforeConnect` + +This message is published before creating a new connection for **any** request. +You can not assume that this event is related to any specific request. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(({ connectParams, connector }) => { + // const { host, hostname, protocol, port, servername, version } = connectParams + // connector is a function that creates the socket +}) +``` + +## `undici:client:connected` + +This message is published after a connection is established. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:client:connected').subscribe(({ socket, connectParams, connector }) => { + // const { host, hostname, protocol, port, servername, version } = connectParams + // connector is a function that creates the socket +}) +``` + +## `undici:client:connectError` + +This message is published if it did not succeed to create new connection + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:client:connectError').subscribe(({ error, socket, connectParams, connector }) => { + // const { host, hostname, protocol, port, servername, version } = connectParams + // connector is a function that creates the socket + console.log(`Connect failed with ${error.message}`) +}) +``` + +## `undici:websocket:open` + +This message is published after the client has successfully connected to a server. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:websocket:open').subscribe(({ address, protocol, extensions }) => { + console.log(address) // address, family, and port + console.log(protocol) // negotiated subprotocols + console.log(extensions) // negotiated extensions +}) +``` + +## `undici:websocket:close` + +This message is published after the connection has closed. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:websocket:close').subscribe(({ websocket, code, reason }) => { + console.log(websocket) // the WebSocket object + console.log(code) // the closing status code + console.log(reason) // the closing reason +}) +``` + +## `undici:websocket:socket_error` + +This message is published if the socket experiences an error. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:websocket:socket_error').subscribe((error) => { + console.log(error) +}) +``` + +## `undici:websocket:ping` + +This message is published after the client receives a ping frame, if the connection is not closing. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:websocket:ping').subscribe(({ payload }) => { + // a Buffer or undefined, containing the optional application data of the frame + console.log(payload) +}) +``` + +## `undici:websocket:pong` + +This message is published after the client receives a pong frame. + +```js +import diagnosticsChannel from 'diagnostics_channel' + +diagnosticsChannel.channel('undici:websocket:pong').subscribe(({ payload }) => { + // a Buffer or undefined, containing the optional application data of the frame + console.log(payload) +}) +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/DispatchInterceptor.md b/deps/npm/node_modules/undici/docs/docs/api/DispatchInterceptor.md new file mode 100644 index 00000000000000..7dfc260e32a9c8 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/DispatchInterceptor.md @@ -0,0 +1,60 @@ +# Interface: DispatchInterceptor + +Extends: `Function` + +A function that can be applied to the `Dispatcher.Dispatch` function before it is invoked with a dispatch request. + +This allows one to write logic to intercept both the outgoing request, and the incoming response. + +### Parameter: `Dispatcher.Dispatch` + +The base dispatch function you are decorating. + +### ReturnType: `Dispatcher.Dispatch` + +A dispatch function that has been altered to provide additional logic + +### Basic Example + +Here is an example of an interceptor being used to provide a JWT bearer token + +```js +'use strict' + +const insertHeaderInterceptor = dispatch => { + return function InterceptedDispatch(opts, handler){ + opts.headers.push('Authorization', 'Bearer [Some token]') + return dispatch(opts, handler) + } +} + +const client = new Client('https://localhost:3000', { + interceptors: { Client: [insertHeaderInterceptor] } +}) + +``` + +### Basic Example 2 + +Here is a contrived example of an interceptor stripping the headers from a response. + +```js +'use strict' + +const clearHeadersInterceptor = dispatch => { + const { DecoratorHandler } = require('undici') + class ResultInterceptor extends DecoratorHandler { + onHeaders (statusCode, headers, resume) { + return super.onHeaders(statusCode, [], resume) + } + } + return function InterceptedDispatch(opts, handler){ + return dispatch(opts, new ResultInterceptor(handler)) + } +} + +const client = new Client('https://localhost:3000', { + interceptors: { Client: [clearHeadersInterceptor] } +}) + +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Dispatcher.md b/deps/npm/node_modules/undici/docs/docs/api/Dispatcher.md new file mode 100644 index 00000000000000..107e133ebd4f09 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Dispatcher.md @@ -0,0 +1,1347 @@ +# Dispatcher + +Extends: `events.EventEmitter` + +Dispatcher is the core API used to dispatch requests. + +Requests are not guaranteed to be dispatched in order of invocation. + +## Instance Methods + +### `Dispatcher.close([callback]): Promise` + +Closes the dispatcher and gracefully waits for enqueued requests to complete before resolving. + +Arguments: + +* **callback** `(error: Error | null, data: null) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed + +```js +dispatcher.close() // -> Promise +dispatcher.close(() => {}) // -> void +``` + +#### Example - Request resolves before Client closes + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('undici') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const { body } = await client.request({ + path: '/', + method: 'GET' + }) + body.setEncoding('utf8') + body.on('data', console.log) +} catch (error) {} + +await client.close() + +console.log('Client closed') +server.close() +``` + +### `Dispatcher.connect(options[, callback])` + +Starts two-way communications with the requested resource using [HTTP CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT). + +Arguments: + +* **options** `ConnectOptions` +* **callback** `(err: Error | null, data: ConnectData | null) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed + +#### Parameter: `ConnectOptions` + +* **path** `string` +* **headers** `UndiciHeaders` (optional) - Default: `null` +* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null` +* **opaque** `unknown` (optional) - This argument parameter is passed through to `ConnectData` + +#### Parameter: `ConnectData` + +* **statusCode** `number` +* **headers** `Record` +* **socket** `stream.Duplex` +* **opaque** `unknown` + +#### Example - Connect request with echo + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + throw Error('should never get here') +}).listen() + +server.on('connect', (req, socket, head) => { + socket.write('HTTP/1.1 200 Connection established\r\n\r\n') + + let data = head.toString() + socket.on('data', (buf) => { + data += buf.toString() + }) + + socket.on('end', () => { + socket.end(data) + }) +}) + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const { socket } = await client.connect({ + path: '/' + }) + const wanted = 'Body' + let data = '' + socket.on('data', d => { data += d }) + socket.on('end', () => { + console.log(`Data received: ${data.toString()} | Data wanted: ${wanted}`) + client.close() + server.close() + }) + socket.write(wanted) + socket.end() +} catch (error) { } +``` + +### `Dispatcher.destroy([error, callback]): Promise` + +Destroy the dispatcher abruptly with the given error. All the pending and running requests will be asynchronously aborted and error. Since this operation is asynchronously dispatched there might still be some progress on dispatched requests. + +Both arguments are optional; the method can be called in four different ways: + +Arguments: + +* **error** `Error | null` (optional) +* **callback** `(error: Error | null, data: null) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed + +```js +dispatcher.destroy() // -> Promise +dispatcher.destroy(new Error()) // -> Promise +dispatcher.destroy(() => {}) // -> void +dispatcher.destroy(new Error(), () => {}) // -> void +``` + +#### Example - Request is aborted when Client is destroyed + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end() +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const request = client.request({ + path: '/', + method: 'GET' + }) + client.destroy() + .then(() => { + console.log('Client destroyed') + server.close() + }) + await request +} catch (error) { + console.error(error) +} +``` + +### `Dispatcher.dispatch(options, handler)` + +This is the low level API which all the preceding APIs are implemented on top of. +This API is expected to evolve through semver-major versions and is less stable than the preceding higher level APIs. +It is primarily intended for library developers who implement higher level APIs on top of this. + +Arguments: + +* **options** `DispatchOptions` +* **handler** `DispatchHandler` + +Returns: `Boolean` - `false` if dispatcher is busy and further dispatch calls won't make any progress until the `'drain'` event has been emitted. + +#### Parameter: `DispatchOptions` + +* **origin** `string | URL` +* **path** `string` +* **method** `string` +* **reset** `boolean` (optional) - Default: `false` - If `false`, the request will attempt to create a long-living connection by sending the `connection: keep-alive` header,otherwise will attempt to close it immediately after response by sending `connection: close` within the request and closing the socket afterwards. +* **body** `string | Buffer | Uint8Array | stream.Readable | Iterable | AsyncIterable | null` (optional) - Default: `null` +* **headers** `UndiciHeaders | string[]` (optional) - Default: `null`. +* **query** `Record | null` (optional) - Default: `null` - Query string params to be embedded in the request URL. Note that both keys and values of query are encoded using `encodeURIComponent`. If for some reason you need to send them unencoded, embed query params into path directly instead. +* **idempotent** `boolean` (optional) - Default: `true` if `method` is `'HEAD'` or `'GET'` - Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline has completed. +* **blocking** `boolean` (optional) - Default: `false` - Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. +* **upgrade** `string | null` (optional) - Default: `null` - Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. +* **bodyTimeout** `number | null` (optional) - The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Defaults to 300 seconds. +* **headersTimeout** `number | null` (optional) - The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers while not sending the request. Defaults to 300 seconds. +* **throwOnError** `boolean` (optional) - Default: `false` - Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. +* **expectContinue** `boolean` (optional) - Default: `false` - For H2, it appends the expect: 100-continue header, and halts the request body until a 100-continue is received from the remote server + +#### Parameter: `DispatchHandler` + +* **onConnect** `(abort: () => void, context: object) => void` - Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. +* **onError** `(error: Error) => void` - Invoked when an error has occurred. May not throw. +* **onUpgrade** `(statusCode: number, headers: Buffer[], socket: Duplex) => void` (optional) - Invoked when request is upgraded. Required if `DispatchOptions.upgrade` is defined or `DispatchOptions.method === 'CONNECT'`. +* **onResponseStarted** `() => void` (optional) - Invoked when response is received, before headers have been read. +* **onHeaders** `(statusCode: number, headers: Buffer[], resume: () => void, statusText: string) => boolean` - Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. Not required for `upgrade` requests. +* **onData** `(chunk: Buffer) => boolean` - Invoked when response payload data is received. Not required for `upgrade` requests. +* **onComplete** `(trailers: Buffer[]) => void` - Invoked when response payload and trailers have been received and the request has completed. Not required for `upgrade` requests. +* **onBodySent** `(chunk: string | Buffer | Uint8Array) => void` - Invoked when a body chunk is sent to the server. Not required. For a stream or iterable body this will be invoked for every chunk. For other body types, it will be invoked once after the body is sent. + +#### Example 1 - Dispatch GET request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +const data = [] + +client.dispatch({ + path: '/', + method: 'GET', + headers: { + 'x-foo': 'bar' + } +}, { + onConnect: () => { + console.log('Connected!') + }, + onError: (error) => { + console.error(error) + }, + onHeaders: (statusCode, headers) => { + console.log(`onHeaders | statusCode: ${statusCode} | headers: ${headers}`) + }, + onData: (chunk) => { + console.log('onData: chunk received') + data.push(chunk) + }, + onComplete: (trailers) => { + console.log(`onComplete | trailers: ${trailers}`) + const res = Buffer.concat(data).toString('utf8') + console.log(`Data: ${res}`) + client.close() + server.close() + } +}) +``` + +#### Example 2 - Dispatch Upgrade Request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end() +}).listen() + +await once(server, 'listening') + +server.on('upgrade', (request, socket, head) => { + console.log('Node.js Server - upgrade event') + socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n') + socket.write('Upgrade: WebSocket\r\n') + socket.write('Connection: Upgrade\r\n') + socket.write('\r\n') + socket.end() +}) + +const client = new Client(`http://localhost:${server.address().port}`) + +client.dispatch({ + path: '/', + method: 'GET', + upgrade: 'websocket' +}, { + onConnect: () => { + console.log('Undici Client - onConnect') + }, + onError: (error) => { + console.log('onError') // shouldn't print + }, + onUpgrade: (statusCode, headers, socket) => { + console.log('Undici Client - onUpgrade') + console.log(`onUpgrade Headers: ${headers}`) + socket.on('data', buffer => { + console.log(buffer.toString('utf8')) + }) + socket.on('end', () => { + client.close() + server.close() + }) + socket.end() + } +}) +``` + +#### Example 3 - Dispatch POST request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + request.on('data', (data) => { + console.log(`Request Data: ${data.toString('utf8')}`) + const body = JSON.parse(data) + body.message = 'World' + response.end(JSON.stringify(body)) + }) +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +const data = [] + +client.dispatch({ + path: '/', + method: 'POST', + headers: { + 'content-type': 'application/json' + }, + body: JSON.stringify({ message: 'Hello' }) +}, { + onConnect: () => { + console.log('Connected!') + }, + onError: (error) => { + console.error(error) + }, + onHeaders: (statusCode, headers) => { + console.log(`onHeaders | statusCode: ${statusCode} | headers: ${headers}`) + }, + onData: (chunk) => { + console.log('onData: chunk received') + data.push(chunk) + }, + onComplete: (trailers) => { + console.log(`onComplete | trailers: ${trailers}`) + const res = Buffer.concat(data).toString('utf8') + console.log(`Response Data: ${res}`) + client.close() + server.close() + } +}) +``` + +### `Dispatcher.pipeline(options, handler)` + +For easy use with [stream.pipeline](https://nodejs.org/api/stream.html#stream_stream_pipeline_source_transforms_destination_callback). The `handler` argument should return a `Readable` from which the result will be read. Usually it should just return the `body` argument unless some kind of transformation needs to be performed based on e.g. `headers` or `statusCode`. The `handler` should validate the response and save any required state. If there is an error, it should be thrown. The function returns a `Duplex` which writes to the request and reads from the response. + +Arguments: + +* **options** `PipelineOptions` +* **handler** `(data: PipelineHandlerData) => stream.Readable` + +Returns: `stream.Duplex` + +#### Parameter: PipelineOptions + +Extends: [`RequestOptions`](#parameter-requestoptions) + +* **objectMode** `boolean` (optional) - Default: `false` - Set to `true` if the `handler` will return an object stream. + +#### Parameter: PipelineHandlerData + +* **statusCode** `number` +* **headers** `Record` +* **opaque** `unknown` +* **body** `stream.Readable` +* **context** `object` +* **onInfo** `({statusCode: number, headers: Record}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received. + +#### Example 1 - Pipeline Echo + +```js +import { Readable, Writable, PassThrough, pipeline } from 'stream' +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + request.pipe(response) +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +let res = '' + +pipeline( + new Readable({ + read () { + this.push(Buffer.from('undici')) + this.push(null) + } + }), + client.pipeline({ + path: '/', + method: 'GET' + }, ({ statusCode, headers, body }) => { + console.log(`response received ${statusCode}`) + console.log('headers', headers) + return pipeline(body, new PassThrough(), () => {}) + }), + new Writable({ + write (chunk, _, callback) { + res += chunk.toString() + callback() + }, + final (callback) { + console.log(`Response pipelined to writable: ${res}`) + callback() + } + }), + error => { + if (error) { + console.error(error) + } + + client.close() + server.close() + } +) +``` + +### `Dispatcher.request(options[, callback])` + +Performs a HTTP request. + +Non-idempotent requests will not be pipelined in order +to avoid indirect failures. + +Idempotent requests will be automatically retried if +they fail due to indirect failure from the request +at the head of the pipeline. This does not apply to +idempotent requests with a stream request body. + +All response bodies must always be fully consumed or destroyed. + +Arguments: + +* **options** `RequestOptions` +* **callback** `(error: Error | null, data: ResponseData) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed. + +#### Parameter: `RequestOptions` + +Extends: [`DispatchOptions`](#parameter-dispatchoptions) + +* **opaque** `unknown` (optional) - Default: `null` - Used for passing through context to `ResponseData`. +* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null`. +* **onInfo** `({statusCode: number, headers: Record}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received. + +The `RequestOptions.method` property should not be value `'CONNECT'`. + +#### Parameter: `ResponseData` + +* **statusCode** `number` +* **headers** `Record` - Note that all header keys are lower-cased, e. g. `content-type`. +* **body** `stream.Readable` which also implements [the body mixin from the Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin). +* **trailers** `Record` - This object starts out + as empty and will be mutated to contain trailers after `body` has emitted `'end'`. +* **opaque** `unknown` +* **context** `object` + +`body` contains the following additional [body mixin](https://fetch.spec.whatwg.org/#body-mixin) methods and properties: + +* [`.arrayBuffer()`](https://fetch.spec.whatwg.org/#dom-body-arraybuffer) +* [`.blob()`](https://fetch.spec.whatwg.org/#dom-body-blob) +* [`.bytes()`](https://fetch.spec.whatwg.org/#dom-body-bytes) +* [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) +* [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) +* `body` +* `bodyUsed` + +`body` can not be consumed twice. For example, calling `text()` after `json()` throws `TypeError`. + +`body` contains the following additional extensions: + +- `dump({ limit: Integer })`, dump the response by reading up to `limit` bytes without killing the socket (optional) - Default: 262144. + +Note that body will still be a `Readable` even if it is empty, but attempting to deserialize it with `json()` will result in an exception. Recommended way to ensure there is a body to deserialize is to check if status code is not 204, and `content-type` header starts with `application/json`. + +#### Example 1 - Basic GET Request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const { body, headers, statusCode, trailers } = await client.request({ + path: '/', + method: 'GET' + }) + console.log(`response received ${statusCode}`) + console.log('headers', headers) + body.setEncoding('utf8') + body.on('data', console.log) + body.on('end', () => { + console.log('trailers', trailers) + }) + + client.close() + server.close() +} catch (error) { + console.error(error) +} +``` + +#### Example 2 - Aborting a request + +> Node.js v15+ is required to run this example + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) +const abortController = new AbortController() + +try { + client.request({ + path: '/', + method: 'GET', + signal: abortController.signal + }) +} catch (error) { + console.error(error) // should print an RequestAbortedError + client.close() + server.close() +} + +abortController.abort() +``` + +Alternatively, any `EventEmitter` that emits an `'abort'` event may be used as an abort controller: + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import EventEmitter, { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) +const ee = new EventEmitter() + +try { + client.request({ + path: '/', + method: 'GET', + signal: ee + }) +} catch (error) { + console.error(error) // should print an RequestAbortedError + client.close() + server.close() +} + +ee.emit('abort') +``` + +Destroying the request or response body will have the same effect. + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const { body } = await client.request({ + path: '/', + method: 'GET' + }) + body.destroy() +} catch (error) { + console.error(error) // should print an RequestAbortedError + client.close() + server.close() +} +``` + +### `Dispatcher.stream(options, factory[, callback])` + +A faster version of `Dispatcher.request`. This method expects the second argument `factory` to return a [`stream.Writable`](https://nodejs.org/api/stream.html#stream_class_stream_writable) stream which the response will be written to. This improves performance by avoiding creating an intermediate [`stream.Readable`](https://nodejs.org/api/stream.html#stream_readable_streams) stream when the user expects to directly pipe the response body to a [`stream.Writable`](https://nodejs.org/api/stream.html#stream_class_stream_writable) stream. + +As demonstrated in [Example 1 - Basic GET stream request](#example-1---basic-get-stream-request), it is recommended to use the `option.opaque` property to avoid creating a closure for the `factory` method. This pattern works well with Node.js Web Frameworks such as [Fastify](https://fastify.io). See [Example 2 - Stream to Fastify Response](#example-2---stream-to-fastify-response) for more details. + +Arguments: + +* **options** `RequestOptions` +* **factory** `(data: StreamFactoryData) => stream.Writable` +* **callback** `(error: Error | null, data: StreamData) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed + +#### Parameter: `StreamFactoryData` + +* **statusCode** `number` +* **headers** `Record` +* **opaque** `unknown` +* **onInfo** `({statusCode: number, headers: Record}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received. + +#### Parameter: `StreamData` + +* **opaque** `unknown` +* **trailers** `Record` +* **context** `object` + +#### Example 1 - Basic GET stream request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' +import { Writable } from 'stream' + +const server = createServer((request, response) => { + response.end('Hello, World!') +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +const bufs = [] + +try { + await client.stream({ + path: '/', + method: 'GET', + opaque: { bufs } + }, ({ statusCode, headers, opaque: { bufs } }) => { + console.log(`response received ${statusCode}`) + console.log('headers', headers) + return new Writable({ + write (chunk, encoding, callback) { + bufs.push(chunk) + callback() + } + }) + }) + + console.log(Buffer.concat(bufs).toString('utf-8')) + + client.close() + server.close() +} catch (error) { + console.error(error) +} +``` + +#### Example 2 - Stream to Fastify Response + +In this example, a (fake) request is made to the fastify server using `fastify.inject()`. This request then executes the fastify route handler which makes a subsequent request to the raw Node.js http server using `undici.dispatcher.stream()`. The fastify response is passed to the `opaque` option so that undici can tap into the underlying writable stream using `response.raw`. This methodology demonstrates how one could use undici and fastify together to create fast-as-possible requests from one backend server to another. + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' +import fastify from 'fastify' + +const nodeServer = createServer((request, response) => { + response.end('Hello, World! From Node.js HTTP Server') +}).listen() + +await once(nodeServer, 'listening') + +console.log('Node Server listening') + +const nodeServerUndiciClient = new Client(`http://localhost:${nodeServer.address().port}`) + +const fastifyServer = fastify() + +fastifyServer.route({ + url: '/', + method: 'GET', + handler: (request, response) => { + nodeServerUndiciClient.stream({ + path: '/', + method: 'GET', + opaque: response + }, ({ opaque }) => opaque.raw) + } +}) + +await fastifyServer.listen() + +console.log('Fastify Server listening') + +const fastifyServerUndiciClient = new Client(`http://localhost:${fastifyServer.server.address().port}`) + +try { + const { statusCode, body } = await fastifyServerUndiciClient.request({ + path: '/', + method: 'GET' + }) + + console.log(`response received ${statusCode}`) + body.setEncoding('utf8') + body.on('data', console.log) + + nodeServerUndiciClient.close() + fastifyServerUndiciClient.close() + fastifyServer.close() + nodeServer.close() +} catch (error) { } +``` + +### `Dispatcher.upgrade(options[, callback])` + +Upgrade to a different protocol. Visit [MDN - HTTP - Protocol upgrade mechanism](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism) for more details. + +Arguments: + +* **options** `UpgradeOptions` + +* **callback** `(error: Error | null, data: UpgradeData) => void` (optional) + +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed + +#### Parameter: `UpgradeOptions` + +* **path** `string` +* **method** `string` (optional) - Default: `'GET'` +* **headers** `UndiciHeaders` (optional) - Default: `null` +* **protocol** `string` (optional) - Default: `'Websocket'` - A string of comma separated protocols, in descending preference order. +* **signal** `AbortSignal | EventEmitter | null` (optional) - Default: `null` + +#### Parameter: `UpgradeData` + +* **headers** `http.IncomingHeaders` +* **socket** `stream.Duplex` +* **opaque** `unknown` + +#### Example 1 - Basic Upgrade Request + +```js +import { createServer } from 'http' +import { Client } from 'undici' +import { once } from 'events' + +const server = createServer((request, response) => { + response.statusCode = 101 + response.setHeader('connection', 'upgrade') + response.setHeader('upgrade', request.headers.upgrade) + response.end() +}).listen() + +await once(server, 'listening') + +const client = new Client(`http://localhost:${server.address().port}`) + +try { + const { headers, socket } = await client.upgrade({ + path: '/', + }) + socket.on('end', () => { + console.log(`upgrade: ${headers.upgrade}`) // upgrade: Websocket + client.close() + server.close() + }) + socket.end() +} catch (error) { + console.error(error) + client.close() + server.close() +} +``` + +### `Dispatcher.compose(interceptors[, interceptor])` + +Compose a new dispatcher from the current dispatcher and the given interceptors. + +> _Notes_: +> - The order of the interceptors matters. The first interceptor will be the first to be called. +> - It is important to note that the `interceptor` function should return a function that follows the `Dispatcher.dispatch` signature. +> - Any fork of the chain of `interceptors` can lead to unexpected results. + +Arguments: + +* **interceptors** `Interceptor[interceptor[]]`: It is an array of `Interceptor` functions passed as only argument, or several interceptors passed as separate arguments. + +Returns: `Dispatcher`. + +#### Parameter: `Interceptor` + +A function that takes a `dispatch` method and returns a `dispatch`-like function. + +#### Example 1 - Basic Compose + +```js +const { Client, RedirectHandler } = require('undici') + +const redirectInterceptor = dispatch => { + return (opts, handler) => { + const { maxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler( + dispatch, + maxRedirections, + opts, + handler + ) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) + } +} + +const client = new Client('http://localhost:3000') + .compose(redirectInterceptor) + +await client.request({ path: '/', method: 'GET' }) +``` + +#### Example 2 - Chained Compose + +```js +const { Client, RedirectHandler, RetryHandler } = require('undici') + +const redirectInterceptor = dispatch => { + return (opts, handler) => { + const { maxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler( + dispatch, + maxRedirections, + opts, + handler + ) + opts = { ...opts, maxRedirections: 0 } + return dispatch(opts, redirectHandler) + } +} + +const retryInterceptor = dispatch => { + return function retryInterceptor (opts, handler) { + return dispatch( + opts, + new RetryHandler(opts, { + handler, + dispatch + }) + ) + } +} + +const client = new Client('http://localhost:3000') + .compose(redirectInterceptor) + .compose(retryInterceptor) + +await client.request({ path: '/', method: 'GET' }) +``` + +#### Pre-built interceptors + +##### `redirect` + +The `redirect` interceptor allows you to customize the way your dispatcher handles redirects. + +It accepts the same arguments as the [`RedirectHandler` constructor](./RedirectHandler.md). + +**Example - Basic Redirect Interceptor** + +```js +const { Client, interceptors } = require("undici"); +const { redirect } = interceptors; + +const client = new Client("http://example.com").compose( + redirect({ maxRedirections: 3, throwOnMaxRedirects: true }) +); +client.request({ path: "/" }) +``` + +##### `retry` + +The `retry` interceptor allows you to customize the way your dispatcher handles retries. + +It accepts the same arguments as the [`RetryHandler` constructor](./RetryHandler.md). + +**Example - Basic Redirect Interceptor** + +```js +const { Client, interceptors } = require("undici"); +const { retry } = interceptors; + +const client = new Client("http://example.com").compose( + retry({ + maxRetries: 3, + minTimeout: 1000, + maxTimeout: 10000, + timeoutFactor: 2, + retryAfter: true, + }) +); +``` + +##### `dump` + +The `dump` interceptor enables you to dump the response body from a request upon a given limit. + +**Options** +- `maxSize` - The maximum size (in bytes) of the response body to dump. If the size of the request's body exceeds this value then the connection will be closed. Default: `1048576`. + +> The `Dispatcher#options` also gets extended with the options `dumpMaxSize`, `abortOnDumped`, and `waitForTrailers` which can be used to configure the interceptor at a request-per-request basis. + +**Example - Basic Dump Interceptor** + +```js +const { Client, interceptors } = require("undici"); +const { dump } = interceptors; + +const client = new Client("http://example.com").compose( + dump({ + maxSize: 1024, + }) +); + +// or +client.dispatch( + { + path: "/", + method: "GET", + dumpMaxSize: 1024, + }, + handler +); +``` + +##### `dns` + +The `dns` interceptor enables you to cache DNS lookups for a given duration, per origin. + +>It is well suited for scenarios where you want to cache DNS lookups to avoid the overhead of resolving the same domain multiple times + +**Options** +- `maxTTL` - The maximum time-to-live (in milliseconds) of the DNS cache. It should be a positive integer. Default: `10000`. + - Set `0` to disable TTL. +- `maxItems` - The maximum number of items to cache. It should be a positive integer. Default: `Infinity`. +- `dualStack` - Whether to resolve both IPv4 and IPv6 addresses. Default: `true`. + - It will also attempt a happy-eyeballs-like approach to connect to the available addresses in case of a connection failure. +- `affinity` - Whether to use IPv4 or IPv6 addresses. Default: `4`. + - It can be either `'4` or `6`. + - It will only take effect if `dualStack` is `false`. +- `lookup: (hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, addresses: DNSInterceptorRecord[]) => void) => void` - Custom lookup function. Default: `dns.lookup`. + - For more info see [dns.lookup](https://nodejs.org/api/dns.html#dns_dns_lookup_hostname_options_callback). +- `pick: (origin: URL, records: DNSInterceptorRecords, affinity: 4 | 6) => DNSInterceptorRecord` - Custom pick function. Default: `RoundRobin`. + - The function should return a single record from the records array. + - By default a simplified version of Round Robin is used. + - The `records` property can be mutated to store the state of the balancing algorithm. + +> The `Dispatcher#options` also gets extended with the options `dns.affinity`, `dns.dualStack`, `dns.lookup` and `dns.pick` which can be used to configure the interceptor at a request-per-request basis. + + +**DNSInterceptorRecord** +It represents a DNS record. +- `family` - (`number`) The IP family of the address. It can be either `4` or `6`. +- `address` - (`string`) The IP address. + +**DNSInterceptorOriginRecords** +It represents a map of DNS IP addresses records for a single origin. +- `4.ips` - (`DNSInterceptorRecord[] | null`) The IPv4 addresses. +- `6.ips` - (`DNSInterceptorRecord[] | null`) The IPv6 addresses. + +**Example - Basic DNS Interceptor** + +```js +const { Client, interceptors } = require("undici"); +const { dns } = interceptors; + +const client = new Agent().compose([ + dns({ ...opts }) +]) + +const response = await client.request({ + origin: `http://localhost:3030`, + ...requestOpts +}) +``` + +##### `Response Error Interceptor` + +**Introduction** + +The Response Error Interceptor is designed to handle HTTP response errors efficiently. It intercepts responses and throws detailed errors for responses with status codes indicating failure (4xx, 5xx). This interceptor enhances error handling by providing structured error information, including response headers, data, and status codes. + +**ResponseError Class** + +The `ResponseError` class extends the `UndiciError` class and encapsulates detailed error information. It captures the response status code, headers, and data, providing a structured way to handle errors. + +**Definition** + +```js +class ResponseError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message); + this.name = 'ResponseError'; + this.message = message || 'Response error'; + this.code = 'UND_ERR_RESPONSE'; + this.statusCode = code; + this.data = data; + this.headers = headers; + } +} +``` + +**Interceptor Handler** + +The interceptor's handler class extends `DecoratorHandler` and overrides methods to capture response details and handle errors based on the response status code. + +**Methods** + +- **onConnect**: Initializes response properties. +- **onHeaders**: Captures headers and status code. Decodes body if content type is `application/json` or `text/plain`. +- **onData**: Appends chunks to the body if status code indicates an error. +- **onComplete**: Finalizes error handling, constructs a `ResponseError`, and invokes the `onError` method. +- **onError**: Propagates errors to the handler. + +**Definition** + +```js +class Handler extends DecoratorHandler { + // Private properties + #handler; + #statusCode; + #contentType; + #decoder; + #headers; + #body; + + constructor (opts, { handler }) { + super(handler); + this.#handler = handler; + } + + onConnect (abort) { + this.#statusCode = 0; + this.#contentType = null; + this.#decoder = null; + this.#headers = null; + this.#body = ''; + return this.#handler.onConnect(abort); + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage, headers = parseHeaders(rawHeaders)) { + this.#statusCode = statusCode; + this.#headers = headers; + this.#contentType = headers['content-type']; + + if (this.#statusCode < 400) { + return this.#handler.onHeaders(statusCode, rawHeaders, resume, statusMessage, headers); + } + + if (this.#contentType === 'application/json' || this.#contentType === 'text/plain') { + this.#decoder = new TextDecoder('utf-8'); + } + } + + onData (chunk) { + if (this.#statusCode < 400) { + return this.#handler.onData(chunk); + } + this.#body += this.#decoder?.decode(chunk, { stream: true }) ?? ''; + } + + onComplete (rawTrailers) { + if (this.#statusCode >= 400) { + this.#body += this.#decoder?.decode(undefined, { stream: false }) ?? ''; + if (this.#contentType === 'application/json') { + try { + this.#body = JSON.parse(this.#body); + } catch { + // Do nothing... + } + } + + let err; + const stackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; + try { + err = new ResponseError('Response Error', this.#statusCode, this.#headers, this.#body); + } finally { + Error.stackTraceLimit = stackTraceLimit; + } + + this.#handler.onError(err); + } else { + this.#handler.onComplete(rawTrailers); + } + } + + onError (err) { + this.#handler.onError(err); + } +} + +module.exports = (dispatch) => (opts, handler) => opts.throwOnError + ? dispatch(opts, new Handler(opts, { handler })) + : dispatch(opts, handler); +``` + +**Tests** + +Unit tests ensure the interceptor functions correctly, handling both error and non-error responses appropriately. + +**Example Tests** + +- **No Error if `throwOnError` is False**: + +```js +test('should not error if request is not meant to throw error', async (t) => { + const opts = { throwOnError: false }; + const handler = { onError: () => {}, onData: () => {}, onComplete: () => {} }; + const interceptor = createResponseErrorInterceptor((opts, handler) => handler.onComplete()); + assert.doesNotThrow(() => interceptor(opts, handler)); +}); +``` + +- **Error if Status Code is in Specified Error Codes**: + +```js +test('should error if request status code is in the specified error codes', async (t) => { + const opts = { throwOnError: true, statusCodes: [500] }; + const response = { statusCode: 500 }; + let capturedError; + const handler = { + onError: (err) => { capturedError = err; }, + onData: () => {}, + onComplete: () => {} + }; + + const interceptor = createResponseErrorInterceptor((opts, handler) => { + if (opts.throwOnError && opts.statusCodes.includes(response.statusCode)) { + handler.onError(new Error('Response Error')); + } else { + handler.onComplete(); + } + }); + + interceptor({ ...opts, response }, handler); + + await new Promise(resolve => setImmediate(resolve)); + + assert(capturedError, 'Expected error to be captured but it was not.'); + assert.strictEqual(capturedError.message, 'Response Error'); + assert.strictEqual(response.statusCode, 500); +}); +``` + +- **No Error if Status Code is Not in Specified Error Codes**: + +```js +test('should not error if request status code is not in the specified error codes', async (t) => { + const opts = { throwOnError: true, statusCodes: [500] }; + const response = { statusCode: 404 }; + const handler = { + onError: () => {}, + onData: () => {}, + onComplete: () => {} + }; + + const interceptor = createResponseErrorInterceptor((opts, handler) => { + if (opts.throwOnError && opts.statusCodes.includes(response.statusCode)) { + handler.onError(new Error('Response Error')); + } else { + handler.onComplete(); + } + }); + + assert.doesNotThrow(() => interceptor({ ...opts, response }, handler)); +}); +``` + +**Conclusion** + +The Response Error Interceptor provides a robust mechanism for handling HTTP response errors by capturing detailed error information and propagating it through a structured `ResponseError` class. This enhancement improves error handling and debugging capabilities in applications using the interceptor. + +## Instance Events + +### Event: `'connect'` + +Parameters: + +* **origin** `URL` +* **targets** `Array` + +### Event: `'disconnect'` + +Parameters: + +* **origin** `URL` +* **targets** `Array` +* **error** `Error` + +Emitted when the dispatcher has been disconnected from the origin. + +> **Note**: For HTTP/2, this event is also emitted when the dispatcher has received the [GOAWAY Frame](https://webconcepts.info/concepts/http2-frame-type/0x7) with an Error with the message `HTTP/2: "GOAWAY" frame received` and the code `UND_ERR_INFO`. +> Due to nature of the protocol of using binary frames, it is possible that requests gets hanging as a frame can be received between the `HEADER` and `DATA` frames. +> It is recommended to handle this event and close the dispatcher to create a new HTTP/2 session. + +### Event: `'connectionError'` + +Parameters: + +* **origin** `URL` +* **targets** `Array` +* **error** `Error` + +Emitted when dispatcher fails to connect to +origin. + +### Event: `'drain'` + +Parameters: + +* **origin** `URL` + +Emitted when dispatcher is no longer busy. + +## Parameter: `UndiciHeaders` + +* `Record | string[] | Iterable<[string, string | string[] | undefined]> | null` + +Header arguments such as `options.headers` in [`Client.dispatch`](Client.md#clientdispatchoptions-handlers) can be specified in three forms: +* As an object specified by the `Record` (`IncomingHttpHeaders`) type. +* As an array of strings. An array representation of a header list must have an even length, or an `InvalidArgumentError` will be thrown. +* As an iterable that can encompass `Headers`, `Map`, or a custom iterator returning key-value pairs. +Keys are lowercase and values are not modified. + +Response headers will derive a `host` from the `url` of the [Client](Client.md#class-client) instance if no `host` header was previously specified. + +### Example 1 - Object + +```js +{ + 'content-length': '123', + 'content-type': 'text/plain', + connection: 'keep-alive', + host: 'mysite.com', + accept: '*/*' +} +``` + +### Example 2 - Array + +```js +[ + 'content-length', '123', + 'content-type', 'text/plain', + 'connection', 'keep-alive', + 'host', 'mysite.com', + 'accept', '*/*' +] +``` + +### Example 3 - Iterable + +```js +new Headers({ + 'content-length': '123', + 'content-type': 'text/plain', + connection: 'keep-alive', + host: 'mysite.com', + accept: '*/*' +}) +``` +or +```js +new Map([ + ['content-length', '123'], + ['content-type', 'text/plain'], + ['connection', 'keep-alive'], + ['host', 'mysite.com'], + ['accept', '*/*'] +]) +``` +or +```js +{ + *[Symbol.iterator] () { + yield ['content-length', '123'] + yield ['content-type', 'text/plain'] + yield ['connection', 'keep-alive'] + yield ['host', 'mysite.com'] + yield ['accept', '*/*'] + } +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md b/deps/npm/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md new file mode 100644 index 00000000000000..a4932de8be7908 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md @@ -0,0 +1,162 @@ +# Class: EnvHttpProxyAgent + +Stability: Experimental. + +Extends: `undici.Dispatcher` + +EnvHttpProxyAgent automatically reads the proxy configuration from the environment variables `http_proxy`, `https_proxy`, and `no_proxy` and sets up the proxy agents accordingly. When `http_proxy` and `https_proxy` are set, `http_proxy` is used for HTTP requests and `https_proxy` is used for HTTPS requests. If only `http_proxy` is set, `http_proxy` is used for both HTTP and HTTPS requests. If only `https_proxy` is set, it is only used for HTTPS requests. + +`no_proxy` is a comma or space-separated list of hostnames that should not be proxied. The list may contain leading wildcard characters (`*`). If `no_proxy` is set, the EnvHttpProxyAgent will bypass the proxy for requests to hosts that match the list. If `no_proxy` is set to `"*"`, the EnvHttpProxyAgent will bypass the proxy for all requests. + +Uppercase environment variables are also supported: `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY`. However, if both the lowercase and uppercase environment variables are set, the uppercase environment variables will be ignored. + +## `new EnvHttpProxyAgent([options])` + +Arguments: + +* **options** `EnvHttpProxyAgentOptions` (optional) - extends the `Agent` options. + +Returns: `EnvHttpProxyAgent` + +### Parameter: `EnvHttpProxyAgentOptions` + +Extends: [`AgentOptions`](Agent.md#parameter-agentoptions) + +* **httpProxy** `string` (optional) - When set, it will override the `HTTP_PROXY` environment variable. +* **httpsProxy** `string` (optional) - When set, it will override the `HTTPS_PROXY` environment variable. +* **noProxy** `string` (optional) - When set, it will override the `NO_PROXY` environment variable. + +Examples: + +```js +import { EnvHttpProxyAgent } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() +// or +const envHttpProxyAgent = new EnvHttpProxyAgent({ httpProxy: 'my.proxy.server:8080', httpsProxy: 'my.proxy.server:8443', noProxy: 'localhost' }) +``` + +#### Example - EnvHttpProxyAgent instantiation + +This will instantiate the EnvHttpProxyAgent. It will not do anything until registered as the agent to use with requests. + +```js +import { EnvHttpProxyAgent } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() +``` + +#### Example - Basic Proxy Fetch with global agent dispatcher + +```js +import { setGlobalDispatcher, fetch, EnvHttpProxyAgent } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() +setGlobalDispatcher(envHttpProxyAgent) + +const { status, json } = await fetch('http://localhost:3000/foo') + +console.log('response received', status) // response received 200 + +const data = await json() // data { foo: "bar" } +``` + +#### Example - Basic Proxy Request with global agent dispatcher + +```js +import { setGlobalDispatcher, request, EnvHttpProxyAgent } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() +setGlobalDispatcher(envHttpProxyAgent) + +const { statusCode, body } = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Proxy Request with local agent dispatcher + +```js +import { EnvHttpProxyAgent, request } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { dispatcher: envHttpProxyAgent }) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Proxy Fetch with local agent dispatcher + +```js +import { EnvHttpProxyAgent, fetch } from 'undici' + +const envHttpProxyAgent = new EnvHttpProxyAgent() + +const { + status, + json +} = await fetch('http://localhost:3000/foo', { dispatcher: envHttpProxyAgent }) + +console.log('response received', status) // response received 200 + +const data = await json() // data { foo: "bar" } +``` + +## Instance Methods + +### `EnvHttpProxyAgent.close([callback])` + +Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise). + +### `EnvHttpProxyAgent.destroy([error, callback])` + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `EnvHttpProxyAgent.dispatch(options, handler: AgentDispatchOptions)` + +Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +#### Parameter: `AgentDispatchOptions` + +Extends: [`DispatchOptions`](Dispatcher.md#parameter-dispatchoptions) + +* **origin** `string | URL` +* **maxRedirections** `Integer`. + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `EnvHttpProxyAgent.connect(options[, callback])` + +See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback). + +### `EnvHttpProxyAgent.dispatch(options, handler)` + +Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `EnvHttpProxyAgent.pipeline(options, handler)` + +See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler). + +### `EnvHttpProxyAgent.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +### `EnvHttpProxyAgent.stream(options, factory[, callback])` + +See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback). + +### `EnvHttpProxyAgent.upgrade(options[, callback])` + +See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback). diff --git a/deps/npm/node_modules/undici/docs/docs/api/Errors.md b/deps/npm/node_modules/undici/docs/docs/api/Errors.md new file mode 100644 index 00000000000000..a6af44de762c2f --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Errors.md @@ -0,0 +1,49 @@ +# Errors + +Undici exposes a variety of error objects that you can use to enhance your error handling. +You can find all the error objects inside the `errors` key. + +```js +import { errors } from 'undici' +``` + +| Error | Error Codes | Description | +| ------------------------------------ | ------------------------------------- | ------------------------------------------------------------------------- | +| `UndiciError` | `UND_ERR` | all errors below are extended from `UndiciError`. | +| `ConnectTimeoutError` | `UND_ERR_CONNECT_TIMEOUT` | socket is destroyed due to connect timeout. | +| `HeadersTimeoutError` | `UND_ERR_HEADERS_TIMEOUT` | socket is destroyed due to headers timeout. | +| `HeadersOverflowError` | `UND_ERR_HEADERS_OVERFLOW` | socket is destroyed due to headers' max size being exceeded. | +| `BodyTimeoutError` | `UND_ERR_BODY_TIMEOUT` | socket is destroyed due to body timeout. | +| `ResponseStatusCodeError` | `UND_ERR_RESPONSE_STATUS_CODE` | an error is thrown when `throwOnError` is `true` for status codes >= 400. | +| `InvalidArgumentError` | `UND_ERR_INVALID_ARG` | passed an invalid argument. | +| `InvalidReturnValueError` | `UND_ERR_INVALID_RETURN_VALUE` | returned an invalid value. | +| `RequestAbortedError` | `UND_ERR_ABORTED` | the request has been aborted by the user | +| `ClientDestroyedError` | `UND_ERR_DESTROYED` | trying to use a destroyed client. | +| `ClientClosedError` | `UND_ERR_CLOSED` | trying to use a closed client. | +| `SocketError` | `UND_ERR_SOCKET` | there is an error with the socket. | +| `NotSupportedError` | `UND_ERR_NOT_SUPPORTED` | encountered unsupported functionality. | +| `RequestContentLengthMismatchError` | `UND_ERR_REQ_CONTENT_LENGTH_MISMATCH` | request body does not match content-length header | +| `ResponseContentLengthMismatchError` | `UND_ERR_RES_CONTENT_LENGTH_MISMATCH` | response body does not match content-length header | +| `InformationalError` | `UND_ERR_INFO` | expected error with reason | +| `ResponseExceededMaxSizeError` | `UND_ERR_RES_EXCEEDED_MAX_SIZE` | response body exceed the max size allowed | +| `SecureProxyConnectionError` | `UND_ERR_PRX_TLS` | tls connection to a proxy failed | +| `MessageSizeExceededError` | `UND_ERR_WS_MESSAGE_SIZE_EXCEEDED` | WebSocket decompressed message exceeded the maximum allowed size | + +### `SocketError` + +The `SocketError` has a `.socket` property which holds socket metadata: + +```ts +interface SocketInfo { + localAddress?: string + localPort?: number + remoteAddress?: string + remotePort?: number + remoteFamily?: string + timeout?: number + bytesWritten?: number + bytesRead?: number +} +``` + +Be aware that in some cases the `.socket` property can be `null`. diff --git a/deps/npm/node_modules/undici/docs/docs/api/EventSource.md b/deps/npm/node_modules/undici/docs/docs/api/EventSource.md new file mode 100644 index 00000000000000..8244aa77ed9426 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/EventSource.md @@ -0,0 +1,45 @@ +# EventSource + +> ⚠️ Warning: the EventSource API is experimental. + +Undici exposes a WHATWG spec-compliant implementation of [EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) +for [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events). + +## Instantiating EventSource + +Undici exports a EventSource class. You can instantiate the EventSource as +follows: + +```mjs +import { EventSource } from 'undici' + +const eventSource = new EventSource('http://localhost:3000') +eventSource.onmessage = (event) => { + console.log(event.data) +} +``` + +## Using a custom Dispatcher + +undici allows you to set your own Dispatcher in the EventSource constructor. + +An example which allows you to modify the request headers is: + +```mjs +import { EventSource, Agent } from 'undici' + +class CustomHeaderAgent extends Agent { + dispatch (opts) { + opts.headers['x-custom-header'] = 'hello world' + return super.dispatch(...arguments) + } +} + +const eventSource = new EventSource('http://localhost:3000', { + dispatcher: new CustomHeaderAgent() +}) + +``` + +More information about the EventSource API can be found on +[MDN](https://developer.mozilla.org/en-US/docs/Web/API/EventSource). diff --git a/deps/npm/node_modules/undici/docs/docs/api/Fetch.md b/deps/npm/node_modules/undici/docs/docs/api/Fetch.md new file mode 100644 index 00000000000000..00c349847dcd33 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Fetch.md @@ -0,0 +1,52 @@ +# Fetch + +Undici exposes a fetch() method starts the process of fetching a resource from the network. + +Documentation and examples can be found on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/fetch). + +## FormData + +This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/FormData). + +If any parameters are passed to the FormData constructor other than `undefined`, an error will be thrown. Other parameters are ignored. + +## Response + +This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Response) + +## Request + +This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Request) + +## Header + +This API is implemented as per the standard, you can find documentation on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Headers) + +# Body Mixins + +`Response` and `Request` body inherit body mixin methods. These methods include: + +- [`.arrayBuffer()`](https://fetch.spec.whatwg.org/#dom-body-arraybuffer) +- [`.blob()`](https://fetch.spec.whatwg.org/#dom-body-blob) +- [`.bytes()`](https://fetch.spec.whatwg.org/#dom-body-bytes) +- [`.formData()`](https://fetch.spec.whatwg.org/#dom-body-formdata) +- [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) +- [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) + +There is an ongoing discussion regarding `.formData()` and its usefulness and performance in server environments. It is recommended to use a dedicated library for parsing `multipart/form-data` bodies, such as [Busboy](https://www.npmjs.com/package/busboy) or [@fastify/busboy](https://www.npmjs.com/package/@fastify/busboy). + +These libraries can be interfaced with fetch with the following example code: + +```mjs +import { Busboy } from '@fastify/busboy' +import { Readable } from 'node:stream' + +const response = await fetch('...') +const busboy = new Busboy({ + headers: { + 'content-type': response.headers.get('content-type') + } +}) + +Readable.fromWeb(response.body).pipe(busboy) +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/MockAgent.md b/deps/npm/node_modules/undici/docs/docs/api/MockAgent.md new file mode 100644 index 00000000000000..85ae69046e73f9 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/MockAgent.md @@ -0,0 +1,540 @@ +# Class: MockAgent + +Extends: `undici.Dispatcher` + +A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead. + +## `new MockAgent([options])` + +Arguments: + +* **options** `MockAgentOptions` (optional) - It extends the `Agent` options. + +Returns: `MockAgent` + +### Parameter: `MockAgentOptions` + +Extends: [`AgentOptions`](Agent.md#parameter-agentoptions) + +* **agent** `Agent` (optional) - Default: `new Agent([options])` - a custom agent encapsulated by the MockAgent. + +### Example - Basic MockAgent instantiation + +This will instantiate the MockAgent. It will not do anything until registered as the agent to use with requests and mock interceptions are added. + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent() +``` + +### Example - Basic MockAgent instantiation with custom agent + +```js +import { Agent, MockAgent } from 'undici' + +const agent = new Agent() + +const mockAgent = new MockAgent({ agent }) +``` + +## Instance Methods + +### `MockAgent.get(origin)` + +This method creates and retrieves MockPool or MockClient instances which can then be used to intercept HTTP requests. If the number of connections on the mock agent is set to 1, a MockClient instance is returned. Otherwise a MockPool instance is returned. + +For subsequent `MockAgent.get` calls on the same origin, the same mock instance will be returned. + +Arguments: + +* **origin** `string | RegExp | (value) => boolean` - a matcher for the pool origin to be retrieved from the MockAgent. + +| Matcher type | Condition to pass | +|:------------:| -------------------------- | +| `string` | Exact match against string | +| `RegExp` | Regex must pass | +| `Function` | Function must return true | + +Returns: `MockClient | MockPool`. + +| `MockAgentOptions` | Mock instance returned | +| -------------------- | ---------------------- | +| `connections === 1` | `MockClient` | +| `connections` > `1` | `MockPool` | + +#### Example - Basic Mocked Request + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { statusCode, body } = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Mocked Request with local mock agent dispatcher + +```js +import { MockAgent, request } from 'undici' + +const mockAgent = new MockAgent() + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { dispatcher: mockAgent }) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Mocked Request with local mock pool dispatcher + +```js +import { MockAgent, request } from 'undici' + +const mockAgent = new MockAgent() + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { dispatcher: mockPool }) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Mocked Request with local mock client dispatcher + +```js +import { MockAgent, request } from 'undici' + +const mockAgent = new MockAgent({ connections: 1 }) + +const mockClient = mockAgent.get('http://localhost:3000') +mockClient.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { dispatcher: mockClient }) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Mocked requests with multiple intercepts + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') +mockPool.intercept({ path: '/hello'}).reply(200, 'hello') + +const result1 = await request('http://localhost:3000/foo') + +console.log('response received', result1.statusCode) // response received 200 + +for await (const data of result1.body) { + console.log('data', data.toString('utf8')) // data foo +} + +const result2 = await request('http://localhost:3000/hello') + +console.log('response received', result2.statusCode) // response received 200 + +for await (const data of result2.body) { + console.log('data', data.toString('utf8')) // data hello +} +``` +#### Example - Mock different requests within the same file +```js +const { MockAgent, setGlobalDispatcher } = require('undici'); +const agent = new MockAgent(); +agent.disableNetConnect(); +setGlobalDispatcher(agent); +describe('Test', () => { + it('200', async () => { + const mockAgent = agent.get('http://test.com'); + // your test + }); + it('200', async () => { + const mockAgent = agent.get('http://testing.com'); + // your test + }); +}); +``` + +#### Example - Mocked request with query body, headers and trailers + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo?hello=there&see=ya', + method: 'POST', + body: 'form1=data1&form2=data2' +}).reply(200, { foo: 'bar' }, { + headers: { 'content-type': 'application/json' }, + trailers: { 'Content-MD5': 'test' } +}) + +const { + statusCode, + headers, + trailers, + body +} = await request('http://localhost:3000/foo?hello=there&see=ya', { + method: 'POST', + body: 'form1=data1&form2=data2' +}) + +console.log('response received', statusCode) // response received 200 +console.log('headers', headers) // { 'content-type': 'application/json' } + +for await (const data of body) { + console.log('data', data.toString('utf8')) // '{"foo":"bar"}' +} + +console.log('trailers', trailers) // { 'content-md5': 'test' } +``` + +#### Example - Mocked request with origin regex + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get(new RegExp('http://localhost:3000')) +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Mocked request with origin function + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get((origin) => origin === 'http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +### `MockAgent.close()` + +Closes the mock agent and waits for registered mock pools and clients to also close before resolving. + +Returns: `Promise` + +#### Example - clean up after tests are complete + +```js +import { MockAgent, setGlobalDispatcher } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +await mockAgent.close() +``` + +### `MockAgent.dispatch(options, handlers)` + +Implements [`Agent.dispatch(options, handlers)`](Agent.md#parameter-agentdispatchoptions). + +### `MockAgent.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +#### Example - MockAgent request + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent() + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await mockAgent.request({ + origin: 'http://localhost:3000', + path: '/foo', + method: 'GET' +}) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +### `MockAgent.deactivate()` + +This method disables mocking in MockAgent. + +Returns: `void` + +#### Example - Deactivate Mocking + +```js +import { MockAgent, setGlobalDispatcher } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.deactivate() +``` + +### `MockAgent.activate()` + +This method enables mocking in a MockAgent instance. When instantiated, a MockAgent is automatically activated. Therefore, this method is only effective after `MockAgent.deactivate` has been called. + +Returns: `void` + +#### Example - Activate Mocking + +```js +import { MockAgent, setGlobalDispatcher } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.deactivate() +// No mocking will occur + +// Later +mockAgent.activate() +``` + +### `MockAgent.enableNetConnect([host])` + +When requests are not matched in a MockAgent intercept, a real HTTP request is attempted. We can control this further through the use of `enableNetConnect`. This is achieved by defining host matchers so only matching requests will be attempted. + +When using a string, it should only include the **hostname and optionally, the port**. In addition, calling this method multiple times with a string will allow all HTTP requests that match these values. + +Arguments: + +* **host** `string | RegExp | (value) => boolean` - (optional) + +Returns: `void` + +#### Example - Allow all non-matching urls to be dispatched in a real HTTP request + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.enableNetConnect() + +await request('http://example.com') +// A real request is made +``` + +#### Example - Allow requests matching a host string to make real requests + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.enableNetConnect('example-1.com') +mockAgent.enableNetConnect('example-2.com:8080') + +await request('http://example-1.com') +// A real request is made + +await request('http://example-2.com:8080') +// A real request is made + +await request('http://example-3.com') +// Will throw +``` + +#### Example - Allow requests matching a host regex to make real requests + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.enableNetConnect(new RegExp('example.com')) + +await request('http://example.com') +// A real request is made +``` + +#### Example - Allow requests matching a host function to make real requests + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +mockAgent.enableNetConnect((value) => value === 'example.com') + +await request('http://example.com') +// A real request is made +``` + +### `MockAgent.disableNetConnect()` + +This method causes all requests to throw when requests are not matched in a MockAgent intercept. + +Returns: `void` + +#### Example - Disable all non-matching requests by throwing an error for each + +```js +import { MockAgent, request } from 'undici' + +const mockAgent = new MockAgent() + +mockAgent.disableNetConnect() + +await request('http://example.com') +// Will throw +``` + +### `MockAgent.pendingInterceptors()` + +This method returns any pending interceptors registered on a mock agent. A pending interceptor meets one of the following criteria: + +- Is registered with neither `.times()` nor `.persist()`, and has not been invoked; +- Is persistent (i.e., registered with `.persist()`) and has not been invoked; +- Is registered with `.times()` and has not been invoked `` of times. + +Returns: `PendingInterceptor[]` (where `PendingInterceptor` is a `MockDispatch` with an additional `origin: string`) + +#### Example - List all pending inteceptors + +```js +const agent = new MockAgent() +agent.disableNetConnect() + +agent + .get('https://example.com') + .intercept({ method: 'GET', path: '/' }) + .reply(200) + +const pendingInterceptors = agent.pendingInterceptors() +// Returns [ +// { +// timesInvoked: 0, +// times: 1, +// persist: false, +// consumed: false, +// pending: true, +// path: '/', +// method: 'GET', +// body: undefined, +// headers: undefined, +// data: { +// error: null, +// statusCode: 200, +// data: '', +// headers: {}, +// trailers: {} +// }, +// origin: 'https://example.com' +// } +// ] +``` + +### `MockAgent.assertNoPendingInterceptors([options])` + +This method throws if the mock agent has any pending interceptors. A pending interceptor meets one of the following criteria: + +- Is registered with neither `.times()` nor `.persist()`, and has not been invoked; +- Is persistent (i.e., registered with `.persist()`) and has not been invoked; +- Is registered with `.times()` and has not been invoked `` of times. + +#### Example - Check that there are no pending interceptors + +```js +const agent = new MockAgent() +agent.disableNetConnect() + +agent + .get('https://example.com') + .intercept({ method: 'GET', path: '/' }) + .reply(200) + +agent.assertNoPendingInterceptors() +// Throws an UndiciError with the following message: +// +// 1 interceptor is pending: +// +// ┌─────────┬────────┬───────────────────────┬──────┬─────────────┬────────────┬─────────────┬───────────┐ +// │ (index) │ Method │ Origin │ Path │ Status code │ Persistent │ Invocations │ Remaining │ +// ├─────────┼────────┼───────────────────────┼──────┼─────────────┼────────────┼─────────────┼───────────┤ +// │ 0 │ 'GET' │ 'https://example.com' │ '/' │ 200 │ '❌' │ 0 │ 1 │ +// └─────────┴────────┴───────────────────────┴──────┴─────────────┴────────────┴─────────────┴───────────┘ +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/MockClient.md b/deps/npm/node_modules/undici/docs/docs/api/MockClient.md new file mode 100644 index 00000000000000..ac546913d237d5 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/MockClient.md @@ -0,0 +1,77 @@ +# Class: MockClient + +Extends: `undici.Client` + +A mock client class that implements the same api as [MockPool](MockPool.md). + +## `new MockClient(origin, [options])` + +Arguments: + +* **origin** `string` - It should only include the **protocol, hostname, and port**. +* **options** `MockClientOptions` - It extends the `Client` options. + +Returns: `MockClient` + +### Parameter: `MockClientOptions` + +Extends: `ClientOptions` + +* **agent** `Agent` - the agent to associate this MockClient with. + +### Example - Basic MockClient instantiation + +We can use MockAgent to instantiate a MockClient ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered. + +```js +import { MockAgent } from 'undici' + +// Connections must be set to 1 to return a MockClient instance +const mockAgent = new MockAgent({ connections: 1 }) + +const mockClient = mockAgent.get('http://localhost:3000') +``` + +## Instance Methods + +### `MockClient.intercept(options)` + +Implements: [`MockPool.intercept(options)`](MockPool.md#mockpoolinterceptoptions) + +### `MockClient.close()` + +Implements: [`MockPool.close()`](MockPool.md#mockpoolclose) + +### `MockClient.dispatch(options, handlers)` + +Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `MockClient.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +#### Example - MockClient request + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent({ connections: 1 }) + +const mockClient = mockAgent.get('http://localhost:3000') +mockClient.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await mockClient.request({ + origin: 'http://localhost:3000', + path: '/foo', + method: 'GET' +}) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/MockErrors.md b/deps/npm/node_modules/undici/docs/docs/api/MockErrors.md new file mode 100644 index 00000000000000..c1aa3dbee8ec5e --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/MockErrors.md @@ -0,0 +1,12 @@ +# MockErrors + +Undici exposes a variety of mock error objects that you can use to enhance your mock error handling. +You can find all the mock error objects inside the `mockErrors` key. + +```js +import { mockErrors } from 'undici' +``` + +| Mock Error | Mock Error Codes | Description | +| --------------------- | ------------------------------- | ---------------------------------------------------------- | +| `MockNotMatchedError` | `UND_MOCK_ERR_MOCK_NOT_MATCHED` | The request does not match any registered mock dispatches. | diff --git a/deps/npm/node_modules/undici/docs/docs/api/MockPool.md b/deps/npm/node_modules/undici/docs/docs/api/MockPool.md new file mode 100644 index 00000000000000..96a986f57bb389 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/MockPool.md @@ -0,0 +1,547 @@ +# Class: MockPool + +Extends: `undici.Pool` + +A mock Pool class that implements the Pool API and is used by MockAgent to intercept real requests and return mocked responses. + +## `new MockPool(origin, [options])` + +Arguments: + +* **origin** `string` - It should only include the **protocol, hostname, and port**. +* **options** `MockPoolOptions` - It extends the `Pool` options. + +Returns: `MockPool` + +### Parameter: `MockPoolOptions` + +Extends: `PoolOptions` + +* **agent** `Agent` - the agent to associate this MockPool with. + +### Example - Basic MockPool instantiation + +We can use MockAgent to instantiate a MockPool ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered. + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent() + +const mockPool = mockAgent.get('http://localhost:3000') +``` + +## Instance Methods + +### `MockPool.intercept(options)` + +This method defines the interception rules for matching against requests for a MockPool or MockPool. We can intercept multiple times on a single instance, but each intercept is only used once. For example if you expect to make 2 requests inside a test, you need to call `intercept()` twice. Assuming you use `disableNetConnect()` you will get `MockNotMatchedError` on the second request when you only call `intercept()` once. + +When defining interception rules, all the rules must pass for a request to be intercepted. If a request is not intercepted, a real request will be attempted. + +| Matcher type | Condition to pass | +|:------------:| -------------------------- | +| `string` | Exact match against string | +| `RegExp` | Regex must pass | +| `Function` | Function must return true | + +Arguments: + +* **options** `MockPoolInterceptOptions` - Interception options. + +Returns: `MockInterceptor` corresponding to the input options. + +### Parameter: `MockPoolInterceptOptions` + +* **path** `string | RegExp | (path: string) => boolean` - a matcher for the HTTP request path. When a `RegExp` or callback is used, it will match against the request path including all query parameters in alphabetical order. When a `string` is provided, the query parameters can be conveniently specified through the `MockPoolInterceptOptions.query` setting. +* **method** `string | RegExp | (method: string) => boolean` - (optional) - a matcher for the HTTP request method. Defaults to `GET`. +* **body** `string | RegExp | (body: string) => boolean` - (optional) - a matcher for the HTTP request body. +* **headers** `Record boolean`> - (optional) - a matcher for the HTTP request headers. To be intercepted, a request must match all defined headers. Extra headers not defined here may (or may not) be included in the request and do not affect the interception in any way. +* **query** `Record | null` - (optional) - a matcher for the HTTP request query string params. Only applies when a `string` was provided for `MockPoolInterceptOptions.path`. + +### Return: `MockInterceptor` + +We can define the behaviour of an intercepted request with the following options. + +* **reply** `(statusCode: number, replyData: string | Buffer | object | MockInterceptor.MockResponseDataHandler, responseOptions?: MockResponseOptions) => MockScope` - define a reply for a matching request. You can define the replyData as a callback to read incoming request data. Default for `responseOptions` is `{}`. +* **reply** `(callback: MockInterceptor.MockReplyOptionsCallback) => MockScope` - define a reply for a matching request, allowing dynamic mocking of all reply options rather than just the data. +* **replyWithError** `(error: Error) => MockScope` - define an error for a matching request to throw. +* **defaultReplyHeaders** `(headers: Record) => MockInterceptor` - define default headers to be included in subsequent replies. These are in addition to headers on a specific reply. +* **defaultReplyTrailers** `(trailers: Record) => MockInterceptor` - define default trailers to be included in subsequent replies. These are in addition to trailers on a specific reply. +* **replyContentLength** `() => MockInterceptor` - define automatically calculated `content-length` headers to be included in subsequent replies. + +The reply data of an intercepted request may either be a string, buffer, or JavaScript object. Objects are converted to JSON while strings and buffers are sent as-is. + +By default, `reply` and `replyWithError` define the behaviour for the first matching request only. Subsequent requests will not be affected (this can be changed using the returned `MockScope`). + +### Parameter: `MockResponseOptions` + +* **headers** `Record` - headers to be included on the mocked reply. +* **trailers** `Record` - trailers to be included on the mocked reply. + +### Return: `MockScope` + +A `MockScope` is associated with a single `MockInterceptor`. With this, we can configure the default behaviour of a intercepted reply. + +* **delay** `(waitInMs: number) => MockScope` - delay the associated reply by a set amount in ms. +* **persist** `() => MockScope` - any matching request will always reply with the defined response indefinitely. +* **times** `(repeatTimes: number) => MockScope` - any matching request will reply with the defined response a fixed amount of times. This is overridden by **persist**. + +#### Example - Basic Mocked Request + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +// MockPool +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ path: '/foo' }).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Mocked request using reply data callbacks + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/echo', + method: 'GET', + headers: { + 'User-Agent': 'undici', + Host: 'example.com' + } +}).reply(200, ({ headers }) => ({ message: headers.get('message') })) + +const { statusCode, body, headers } = await request('http://localhost:3000', { + headers: { + message: 'hello world!' + } +}) + +console.log('response received', statusCode) // response received 200 +console.log('headers', headers) // { 'content-type': 'application/json' } + +for await (const data of body) { + console.log('data', data.toString('utf8')) // { "message":"hello world!" } +} +``` + +#### Example - Mocked request using reply options callback + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/echo', + method: 'GET', + headers: { + 'User-Agent': 'undici', + Host: 'example.com' + } +}).reply(({ headers }) => ({ statusCode: 200, data: { message: headers.get('message') }}))) + +const { statusCode, body, headers } = await request('http://localhost:3000', { + headers: { + message: 'hello world!' + } +}) + +console.log('response received', statusCode) // response received 200 +console.log('headers', headers) // { 'content-type': 'application/json' } + +for await (const data of body) { + console.log('data', data.toString('utf8')) // { "message":"hello world!" } +} +``` + +#### Example - Basic Mocked requests with multiple intercepts + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).reply(200, 'foo') + +mockPool.intercept({ + path: '/hello', + method: 'GET', +}).reply(200, 'hello') + +const result1 = await request('http://localhost:3000/foo') + +console.log('response received', result1.statusCode) // response received 200 + +for await (const data of result1.body) { + console.log('data', data.toString('utf8')) // data foo +} + +const result2 = await request('http://localhost:3000/hello') + +console.log('response received', result2.statusCode) // response received 200 + +for await (const data of result2.body) { + console.log('data', data.toString('utf8')) // data hello +} +``` + +#### Example - Mocked request with query body, request headers and response headers and trailers + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo?hello=there&see=ya', + method: 'POST', + body: 'form1=data1&form2=data2', + headers: { + 'User-Agent': 'undici', + Host: 'example.com' + } +}).reply(200, { foo: 'bar' }, { + headers: { 'content-type': 'application/json' }, + trailers: { 'Content-MD5': 'test' } +}) + +const { + statusCode, + headers, + trailers, + body +} = await request('http://localhost:3000/foo?hello=there&see=ya', { + method: 'POST', + body: 'form1=data1&form2=data2', + headers: { + foo: 'bar', + 'User-Agent': 'undici', + Host: 'example.com' + } + }) + +console.log('response received', statusCode) // response received 200 +console.log('headers', headers) // { 'content-type': 'application/json' } + +for await (const data of body) { + console.log('data', data.toString('utf8')) // '{"foo":"bar"}' +} + +console.log('trailers', trailers) // { 'content-md5': 'test' } +``` + +#### Example - Mocked request using different matchers + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: /^GET$/, + body: (value) => value === 'form=data', + headers: { + 'User-Agent': 'undici', + Host: /^example.com$/ + } +}).reply(200, 'foo') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { + method: 'GET', + body: 'form=data', + headers: { + foo: 'bar', + 'User-Agent': 'undici', + Host: 'example.com' + } +}) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Mocked request with reply with a defined error + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).replyWithError(new Error('kaboom')) + +try { + await request('http://localhost:3000/foo', { + method: 'GET' + }) +} catch (error) { + console.error(error) // Error: kaboom +} +``` + +#### Example - Mocked request with defaultReplyHeaders + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).defaultReplyHeaders({ foo: 'bar' }) + .reply(200, 'foo') + +const { headers } = await request('http://localhost:3000/foo') + +console.log('headers', headers) // headers { foo: 'bar' } +``` + +#### Example - Mocked request with defaultReplyTrailers + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).defaultReplyTrailers({ foo: 'bar' }) + .reply(200, 'foo') + +const { trailers } = await request('http://localhost:3000/foo') + +console.log('trailers', trailers) // trailers { foo: 'bar' } +``` + +#### Example - Mocked request with automatic content-length calculation + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).replyContentLength().reply(200, 'foo') + +const { headers } = await request('http://localhost:3000/foo') + +console.log('headers', headers) // headers { 'content-length': '3' } +``` + +#### Example - Mocked request with automatic content-length calculation on an object + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).replyContentLength().reply(200, { foo: 'bar' }) + +const { headers } = await request('http://localhost:3000/foo') + +console.log('headers', headers) // headers { 'content-length': '13' } +``` + +#### Example - Mocked request with persist enabled + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).reply(200, 'foo').persist() + +const result1 = await request('http://localhost:3000/foo') +// Will match and return mocked data + +const result2 = await request('http://localhost:3000/foo') +// Will match and return mocked data + +// Etc +``` + +#### Example - Mocked request with times enabled + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +mockPool.intercept({ + path: '/foo', + method: 'GET' +}).reply(200, 'foo').times(2) + +const result1 = await request('http://localhost:3000/foo') +// Will match and return mocked data + +const result2 = await request('http://localhost:3000/foo') +// Will match and return mocked data + +const result3 = await request('http://localhost:3000/foo') +// Will not match and make attempt a real request +``` + +#### Example - Mocked request with path callback + +```js +import { MockAgent, setGlobalDispatcher, request } from 'undici' +import querystring from 'querystring' + +const mockAgent = new MockAgent() +setGlobalDispatcher(mockAgent) + +const mockPool = mockAgent.get('http://localhost:3000') + +const matchPath = requestPath => { + const [pathname, search] = requestPath.split('?') + const requestQuery = querystring.parse(search) + + if (!pathname.startsWith('/foo')) { + return false + } + + if (!Object.keys(requestQuery).includes('foo') || requestQuery.foo !== 'bar') { + return false + } + + return true +} + +mockPool.intercept({ + path: matchPath, + method: 'GET' +}).reply(200, 'foo') + +const result = await request('http://localhost:3000/foo?foo=bar') +// Will match and return mocked data +``` + +### `MockPool.close()` + +Closes the mock pool and de-registers from associated MockAgent. + +Returns: `Promise` + +#### Example - clean up after tests are complete + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent() +const mockPool = mockAgent.get('http://localhost:3000') + +await mockPool.close() +``` + +### `MockPool.dispatch(options, handlers)` + +Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `MockPool.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +#### Example - MockPool request + +```js +import { MockAgent } from 'undici' + +const mockAgent = new MockAgent() + +const mockPool = mockAgent.get('http://localhost:3000') +mockPool.intercept({ + path: '/foo', + method: 'GET', +}).reply(200, 'foo') + +const { + statusCode, + body +} = await mockPool.request({ + origin: 'http://localhost:3000', + path: '/foo', + method: 'GET' +}) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Pool.md b/deps/npm/node_modules/undici/docs/docs/api/Pool.md new file mode 100644 index 00000000000000..8fcabac31541d9 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Pool.md @@ -0,0 +1,84 @@ +# Class: Pool + +Extends: `undici.Dispatcher` + +A pool of [Client](Client.md) instances connected to the same upstream target. + +Requests are not guaranteed to be dispatched in order of invocation. + +## `new Pool(url[, options])` + +Arguments: + +* **url** `URL | string` - It should only include the **protocol, hostname, and port**. +* **options** `PoolOptions` (optional) + +### Parameter: `PoolOptions` + +Extends: [`ClientOptions`](Client.md#parameter-clientoptions) + +* **factory** `(origin: URL, opts: Object) => Dispatcher` - Default: `(origin, opts) => new Client(origin, opts)` +* **connections** `number | null` (optional) - Default: `null` - The number of `Client` instances to create. When set to `null`, the `Pool` instance will create an unlimited amount of `Client` instances. +* **interceptors** `{ Pool: DispatchInterceptor[] } }` - Default: `{ Pool: [] }` - A list of interceptors that are applied to the dispatch method. Additional logic can be applied (such as, but not limited to: 302 status code handling, authentication, cookies, compression and caching). + +## Instance Properties + +### `Pool.closed` + +Implements [Client.closed](Client.md#clientclosed) + +### `Pool.destroyed` + +Implements [Client.destroyed](Client.md#clientdestroyed) + +### `Pool.stats` + +Returns [`PoolStats`](PoolStats.md) instance for this pool. + +## Instance Methods + +### `Pool.close([callback])` + +Implements [`Dispatcher.close([callback])`](Dispatcher.md#dispatcherclosecallback-promise). + +### `Pool.destroy([error, callback])` + +Implements [`Dispatcher.destroy([error, callback])`](Dispatcher.md#dispatcherdestroyerror-callback-promise). + +### `Pool.connect(options[, callback])` + +See [`Dispatcher.connect(options[, callback])`](Dispatcher.md#dispatcherconnectoptions-callback). + +### `Pool.dispatch(options, handler)` + +Implements [`Dispatcher.dispatch(options, handler)`](Dispatcher.md#dispatcherdispatchoptions-handler). + +### `Pool.pipeline(options, handler)` + +See [`Dispatcher.pipeline(options, handler)`](Dispatcher.md#dispatcherpipelineoptions-handler). + +### `Pool.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). + +### `Pool.stream(options, factory[, callback])` + +See [`Dispatcher.stream(options, factory[, callback])`](Dispatcher.md#dispatcherstreamoptions-factory-callback). + +### `Pool.upgrade(options[, callback])` + +See [`Dispatcher.upgrade(options[, callback])`](Dispatcher.md#dispatcherupgradeoptions-callback). + +## Instance Events + +### Event: `'connect'` + +See [Dispatcher Event: `'connect'`](Dispatcher.md#event-connect). + +### Event: `'disconnect'` + +See [Dispatcher Event: `'disconnect'`](Dispatcher.md#event-disconnect). + +### Event: `'drain'` + +See [Dispatcher Event: `'drain'`](Dispatcher.md#event-drain). diff --git a/deps/npm/node_modules/undici/docs/docs/api/PoolStats.md b/deps/npm/node_modules/undici/docs/docs/api/PoolStats.md new file mode 100644 index 00000000000000..16b6dc25364a21 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/PoolStats.md @@ -0,0 +1,35 @@ +# Class: PoolStats + +Aggregate stats for a [Pool](Pool.md) or [BalancedPool](BalancedPool.md). + +## `new PoolStats(pool)` + +Arguments: + +* **pool** `Pool` - Pool or BalancedPool from which to return stats. + +## Instance Properties + +### `PoolStats.connected` + +Number of open socket connections in this pool. + +### `PoolStats.free` + +Number of open socket connections in this pool that do not have an active request. + +### `PoolStats.pending` + +Number of pending requests across all clients in this pool. + +### `PoolStats.queued` + +Number of queued requests across all clients in this pool. + +### `PoolStats.running` + +Number of currently active requests across all clients in this pool. + +### `PoolStats.size` + +Number of active, pending, or queued requests across all clients in this pool. diff --git a/deps/npm/node_modules/undici/docs/docs/api/ProxyAgent.md b/deps/npm/node_modules/undici/docs/docs/api/ProxyAgent.md new file mode 100644 index 00000000000000..a1a0d4651c82be --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/ProxyAgent.md @@ -0,0 +1,131 @@ +# Class: ProxyAgent + +Extends: `undici.Dispatcher` + +A Proxy Agent class that implements the Agent API. It allows the connection through proxy in a simple way. + +## `new ProxyAgent([options])` + +Arguments: + +* **options** `ProxyAgentOptions` (required) - It extends the `Agent` options. + +Returns: `ProxyAgent` + +### Parameter: `ProxyAgentOptions` + +Extends: [`AgentOptions`](Agent.md#parameter-agentoptions) + +* **uri** `string | URL` (required) - The URI of the proxy server. This can be provided as a string, as an instance of the URL class, or as an object with a `uri` property of type string. +If the `uri` is provided as a string or `uri` is an object with an `uri` property of type string, then it will be parsed into a `URL` object according to the [WHATWG URL Specification](https://url.spec.whatwg.org). +For detailed information on the parsing process and potential validation errors, please refer to the ["Writing" section](https://url.spec.whatwg.org/#writing) of the WHATWG URL Specification. +* **token** `string` (optional) - It can be passed by a string of token for authentication. +* **auth** `string` (**deprecated**) - Use token. +* **clientFactory** `(origin: URL, opts: Object) => Dispatcher` (optional) - Default: `(origin, opts) => new Pool(origin, opts)` +* **requestTls** `BuildOptions` (optional) - Options object passed when creating the underlying socket via the connector builder for the request. It extends from [`Client#ConnectOptions`](/docs/docs/api/Client.md#parameter-connectoptions). +* **proxyTls** `BuildOptions` (optional) - Options object passed when creating the underlying socket via the connector builder for the proxy server. It extends from [`Client#ConnectOptions`](/docs/docs/api/Client.md#parameter-connectoptions). +* **proxyTunnel** `boolean` (optional) - For connections involving secure protocols, Undici will always establish a tunnel via the HTTP2 CONNECT extension. If proxyTunnel is set to true, this will occur for unsecured proxy/endpoint connections as well. Currently, there is no way to facilitate HTTP1 IP tunneling as described in https://www.rfc-editor.org/rfc/rfc9484.html#name-http-11-request. If proxyTunnel is set to false (the default), ProxyAgent connections where both the Proxy and Endpoint are unsecured will issue all requests to the Proxy, and prefix the endpoint request path with the endpoint origin address. + +Examples: + +```js +import { ProxyAgent } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') +// or +const proxyAgent = new ProxyAgent(new URL('my.proxy.server')) +// or +const proxyAgent = new ProxyAgent({ uri: 'my.proxy.server' }) +``` + +#### Example - Basic ProxyAgent instantiation + +This will instantiate the ProxyAgent. It will not do anything until registered as the agent to use with requests. + +```js +import { ProxyAgent } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') +``` + +#### Example - Basic Proxy Request with global agent dispatcher + +```js +import { setGlobalDispatcher, request, ProxyAgent } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') +setGlobalDispatcher(proxyAgent) + +const { statusCode, body } = await request('http://localhost:3000/foo') + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Proxy Request with local agent dispatcher + +```js +import { ProxyAgent, request } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') + +const { + statusCode, + body +} = await request('http://localhost:3000/foo', { dispatcher: proxyAgent }) + +console.log('response received', statusCode) // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')) // data foo +} +``` + +#### Example - Basic Proxy Request with authentication + +```js +import { setGlobalDispatcher, request, ProxyAgent } from 'undici'; + +const proxyAgent = new ProxyAgent({ + uri: 'my.proxy.server', + // token: 'Bearer xxxx' + token: `Basic ${Buffer.from('username:password').toString('base64')}` +}); +setGlobalDispatcher(proxyAgent); + +const { statusCode, body } = await request('http://localhost:3000/foo'); + +console.log('response received', statusCode); // response received 200 + +for await (const data of body) { + console.log('data', data.toString('utf8')); // data foo +} +``` + +### `ProxyAgent.close()` + +Closes the proxy agent and waits for registered pools and clients to also close before resolving. + +Returns: `Promise` + +#### Example - clean up after tests are complete + +```js +import { ProxyAgent, setGlobalDispatcher } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') +setGlobalDispatcher(proxyAgent) + +await proxyAgent.close() +``` + +### `ProxyAgent.dispatch(options, handlers)` + +Implements [`Agent.dispatch(options, handlers)`](Agent.md#parameter-agentdispatchoptions). + +### `ProxyAgent.request(options[, callback])` + +See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback). diff --git a/deps/npm/node_modules/undici/docs/docs/api/RedirectHandler.md b/deps/npm/node_modules/undici/docs/docs/api/RedirectHandler.md new file mode 100644 index 00000000000000..90a937e7c13b94 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/RedirectHandler.md @@ -0,0 +1,96 @@ +# Class: RedirectHandler + +A class that handles redirection logic for HTTP requests. + +## `new RedirectHandler(dispatch, maxRedirections, opts, handler, redirectionLimitReached)` + +Arguments: + +- **dispatch** `function` - The dispatch function to be called after every retry. +- **maxRedirections** `number` - Maximum number of redirections allowed. +- **opts** `object` - Options for handling redirection. +- **handler** `object` - An object containing handlers for different stages of the request lifecycle. +- **redirectionLimitReached** `boolean` (default: `false`) - A flag that the implementer can provide to enable or disable the feature. If set to `false`, it indicates that the caller doesn't want to use the feature and prefers the old behavior. + +Returns: `RedirectHandler` + +### Parameters + +- **dispatch** `(options: Dispatch.DispatchOptions, handlers: Dispatch.DispatchHandlers) => Promise` (required) - Dispatch function to be called after every redirection. +- **maxRedirections** `number` (required) - Maximum number of redirections allowed. +- **opts** `object` (required) - Options for handling redirection. +- **handler** `object` (required) - Handlers for different stages of the request lifecycle. +- **redirectionLimitReached** `boolean` (default: `false`) - A flag that the implementer can provide to enable or disable the feature. If set to `false`, it indicates that the caller doesn't want to use the feature and prefers the old behavior. + +### Properties + +- **location** `string` - The current redirection location. +- **abort** `function` - The abort function. +- **opts** `object` - The options for handling redirection. +- **maxRedirections** `number` - Maximum number of redirections allowed. +- **handler** `object` - Handlers for different stages of the request lifecycle. +- **history** `Array` - An array representing the history of URLs during redirection. +- **redirectionLimitReached** `boolean` - Indicates whether the redirection limit has been reached. + +### Methods + +#### `onConnect(abort)` + +Called when the connection is established. + +Parameters: + +- **abort** `function` - The abort function. + +#### `onUpgrade(statusCode, headers, socket)` + +Called when an upgrade is requested. + +Parameters: + +- **statusCode** `number` - The HTTP status code. +- **headers** `object` - The headers received in the response. +- **socket** `object` - The socket object. + +#### `onError(error)` + +Called when an error occurs. + +Parameters: + +- **error** `Error` - The error that occurred. + +#### `onHeaders(statusCode, headers, resume, statusText)` + +Called when headers are received. + +Parameters: + +- **statusCode** `number` - The HTTP status code. +- **headers** `object` - The headers received in the response. +- **resume** `function` - The resume function. +- **statusText** `string` - The status text. + +#### `onData(chunk)` + +Called when data is received. + +Parameters: + +- **chunk** `Buffer` - The data chunk received. + +#### `onComplete(trailers)` + +Called when the request is complete. + +Parameters: + +- **trailers** `object` - The trailers received. + +#### `onBodySent(chunk)` + +Called when the request body is sent. + +Parameters: + +- **chunk** `Buffer` - The chunk of the request body sent. diff --git a/deps/npm/node_modules/undici/docs/docs/api/RetryAgent.md b/deps/npm/node_modules/undici/docs/docs/api/RetryAgent.md new file mode 100644 index 00000000000000..53ce52313156d3 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/RetryAgent.md @@ -0,0 +1,45 @@ +# Class: RetryAgent + +Extends: `undici.Dispatcher` + +A `undici.Dispatcher` that allows to automatically retry a request. +Wraps a `undici.RetryHandler`. + +## `new RetryAgent(dispatcher, [options])` + +Arguments: + +* **dispatcher** `undici.Dispatcher` (required) - the dispatcher to wrap +* **options** `RetryHandlerOptions` (optional) - the options + +Returns: `ProxyAgent` + +### Parameter: `RetryHandlerOptions` + +- **retry** `(err: Error, context: RetryContext, callback: (err?: Error | null) => void) => void` (optional) - Function to be called after every retry. It should pass error if no more retries should be performed. +- **maxRetries** `number` (optional) - Maximum number of retries. Default: `5` +- **maxTimeout** `number` (optional) - Maximum number of milliseconds to wait before retrying. Default: `30000` (30 seconds) +- **minTimeout** `number` (optional) - Minimum number of milliseconds to wait before retrying. Default: `500` (half a second) +- **timeoutFactor** `number` (optional) - Factor to multiply the timeout by for each retry attempt. Default: `2` +- **retryAfter** `boolean` (optional) - It enables automatic retry after the `Retry-After` header is received. Default: `true` +- +- **methods** `string[]` (optional) - Array of HTTP methods to retry. Default: `['GET', 'PUT', 'HEAD', 'OPTIONS', 'DELETE']` +- **statusCodes** `number[]` (optional) - Array of HTTP status codes to retry. Default: `[429, 500, 502, 503, 504]` +- **errorCodes** `string[]` (optional) - Array of Error codes to retry. Default: `['ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ENETDOWN','ENETUNREACH', 'EHOSTDOWN', 'UND_ERR_SOCKET']` + +**`RetryContext`** + +- `state`: `RetryState` - Current retry state. It can be mutated. +- `opts`: `Dispatch.DispatchOptions & RetryOptions` - Options passed to the retry handler. + +Example: + +```js +import { Agent, RetryAgent } from 'undici' + +const agent = new RetryAgent(new Agent()) + +const res = await agent.request('http://example.com') +console.log(res.statuCode) +console.log(await res.body.text()) +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/RetryHandler.md b/deps/npm/node_modules/undici/docs/docs/api/RetryHandler.md new file mode 100644 index 00000000000000..0dd9f29533f861 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/RetryHandler.md @@ -0,0 +1,117 @@ +# Class: RetryHandler + +Extends: `undici.DispatcherHandlers` + +A handler class that implements the retry logic for a request. + +## `new RetryHandler(dispatchOptions, retryHandlers, [retryOptions])` + +Arguments: + +- **options** `Dispatch.DispatchOptions & RetryOptions` (required) - It is an intersection of `Dispatcher.DispatchOptions` and `RetryOptions`. +- **retryHandlers** `RetryHandlers` (required) - Object containing the `dispatch` to be used on every retry, and `handler` for handling the `dispatch` lifecycle. + +Returns: `retryHandler` + +### Parameter: `Dispatch.DispatchOptions & RetryOptions` + +Extends: [`Dispatch.DispatchOptions`](Dispatcher.md#parameter-dispatchoptions). + +#### `RetryOptions` + +- **retry** `(err: Error, context: RetryContext, callback: (err?: Error | null) => void) => number | null` (optional) - Function to be called after every retry. It should pass error if no more retries should be performed. +- **maxRetries** `number` (optional) - Maximum number of retries. Default: `5` +- **maxTimeout** `number` (optional) - Maximum number of milliseconds to wait before retrying. Default: `30000` (30 seconds) +- **minTimeout** `number` (optional) - Minimum number of milliseconds to wait before retrying. Default: `500` (half a second) +- **timeoutFactor** `number` (optional) - Factor to multiply the timeout by for each retry attempt. Default: `2` +- **retryAfter** `boolean` (optional) - It enables automatic retry after the `Retry-After` header is received. Default: `true` +- +- **methods** `string[]` (optional) - Array of HTTP methods to retry. Default: `['GET', 'PUT', 'HEAD', 'OPTIONS', 'DELETE']` +- **statusCodes** `number[]` (optional) - Array of HTTP status codes to retry. Default: `[429, 500, 502, 503, 504]` +- **errorCodes** `string[]` (optional) - Array of Error codes to retry. Default: `['ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ENETDOWN','ENETUNREACH', 'EHOSTDOWN', 'UND_ERR_SOCKET']` + +**`RetryContext`** + +- `state`: `RetryState` - Current retry state. It can be mutated. +- `opts`: `Dispatch.DispatchOptions & RetryOptions` - Options passed to the retry handler. + +**`RetryState`** + +It represents the retry state for a given request. + +- `counter`: `number` - Current retry attempt. + +### Parameter `RetryHandlers` + +- **dispatch** `(options: Dispatch.DispatchOptions, handlers: Dispatch.DispatchHandlers) => Promise` (required) - Dispatch function to be called after every retry. +- **handler** Extends [`Dispatch.DispatchHandlers`](Dispatcher.md#dispatcherdispatchoptions-handler) (required) - Handler function to be called after the request is successful or the retries are exhausted. + +>__Note__: The `RetryHandler` does not retry over stateful bodies (e.g. streams, AsyncIterable) as those, once consumed, are left in an state that cannot be reutilized. For these situations the `RetryHandler` will identify +>the body as stateful and will not retry the request rejecting with the error `UND_ERR_REQ_RETRY`. + +Examples: + +```js +const client = new Client(`http://localhost:${server.address().port}`); +const chunks = []; +const handler = new RetryHandler( + { + ...dispatchOptions, + retryOptions: { + // custom retry function + retry: function (err, state, callback) { + counter++; + + if (err.code && err.code === "UND_ERR_DESTROYED") { + callback(err); + return; + } + + if (err.statusCode === 206) { + callback(err); + return; + } + + setTimeout(() => callback(null), 1000); + }, + }, + }, + { + dispatch: (...args) => { + return client.dispatch(...args); + }, + handler: { + onConnect() {}, + onBodySent() {}, + onHeaders(status, _rawHeaders, resume, _statusMessage) { + // do something with headers + }, + onData(chunk) { + chunks.push(chunk); + return true; + }, + onComplete() {}, + onError() { + // handle error properly + }, + }, + } +); +``` + +#### Example - Basic RetryHandler with defaults + +```js +const client = new Client(`http://localhost:${server.address().port}`); +const handler = new RetryHandler(dispatchOptions, { + dispatch: client.dispatch.bind(client), + handler: { + onConnect() {}, + onBodySent() {}, + onHeaders(status, _rawHeaders, resume, _statusMessage) {}, + onData(chunk) {}, + onComplete() {}, + onError(err) {}, + }, +}); +``` diff --git a/deps/npm/node_modules/undici/docs/docs/api/Util.md b/deps/npm/node_modules/undici/docs/docs/api/Util.md new file mode 100644 index 00000000000000..53b96e3ed3f503 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/Util.md @@ -0,0 +1,25 @@ +# Util + +Utility API for third-party implementations of the dispatcher API. + +## `parseHeaders(headers, [obj])` + +Receives a header object and returns the parsed value. + +Arguments: + +- **headers** `(Buffer | string | (Buffer | string)[])[]` (required) - Header object. + +- **obj** `Record` (optional) - Object to specify a proxy object. The parsed value is assigned to this object. But, if **headers** is an object, it is not used. + +Returns: `Record` If **obj** is specified, it is equivalent to **obj**. + +## `headerNameToString(value)` + +Retrieves a header name and returns its lowercase value. + +Arguments: + +- **value** `string | Buffer` (required) - Header name. + +Returns: `string` diff --git a/deps/npm/node_modules/undici/docs/docs/api/WebSocket.md b/deps/npm/node_modules/undici/docs/docs/api/WebSocket.md new file mode 100644 index 00000000000000..8b6f7b9cfdaeac --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/WebSocket.md @@ -0,0 +1,51 @@ +# Class: WebSocket + +> ⚠️ Warning: the WebSocket API is experimental. + +Extends: [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) + +The WebSocket object provides a way to manage a WebSocket connection to a server, allowing bidirectional communication. The API follows the [WebSocket spec](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) and [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455). + +## `new WebSocket(url[, protocol])` + +Arguments: + +* **url** `URL | string` - The url's protocol *must* be `ws` or `wss`. +* **protocol** `string | string[] | WebSocketInit` (optional) - Subprotocol(s) to request the server use, or a [`Dispatcher`](./Dispatcher.md). + +### WebSocketInit + +When passing an object as the second argument, the following options are available: + +* **protocols** `string | string[]` (optional) - Subprotocol(s) to request the server use. +* **dispatcher** `Dispatcher` (optional) - A custom [`Dispatcher`](/docs/docs/api/Dispatcher.md) to use for the connection. +* **headers** `HeadersInit` (optional) - Custom headers to include in the WebSocket handshake request. + +### Example: + +This example will not work in browsers or other platforms that don't allow passing an object. + +```mjs +import { WebSocket, ProxyAgent } from 'undici' + +const proxyAgent = new ProxyAgent('my.proxy.server') + +const ws = new WebSocket('wss://echo.websocket.events', { + dispatcher: proxyAgent, + protocols: ['echo', 'chat'] +}) +``` + +If you do not need a custom Dispatcher, it's recommended to use the following pattern: + +```mjs +import { WebSocket } from 'undici' + +const ws = new WebSocket('wss://echo.websocket.events', ['echo', 'chat']) +``` + +## Read More + +- [MDN - WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) +- [The WebSocket Specification](https://www.rfc-editor.org/rfc/rfc6455) +- [The WHATWG WebSocket Specification](https://websockets.spec.whatwg.org/) diff --git a/deps/npm/node_modules/undici/docs/docs/api/api-lifecycle.md b/deps/npm/node_modules/undici/docs/docs/api/api-lifecycle.md new file mode 100644 index 00000000000000..69144b61538f7d --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/api/api-lifecycle.md @@ -0,0 +1,91 @@ +# Client Lifecycle + +An Undici [Client](Client.md) can be best described as a state machine. The following list is a summary of the various state transitions the `Client` will go through in its lifecycle. This document also contains detailed breakdowns of each state. + +> This diagram is not a perfect representation of the undici Client. Since the Client class is not actually implemented as a state-machine, actual execution may deviate slightly from what is described below. Consider this as a general resource for understanding the inner workings of the Undici client rather than some kind of formal specification. + +## State Transition Overview + +* A `Client` begins in the **idle** state with no socket connection and no requests in queue. + * The *connect* event transitions the `Client` to the **pending** state where requests can be queued prior to processing. + * The *close* and *destroy* events transition the `Client` to the **destroyed** state. Since there are no requests in the queue, the *close* event immediately transitions to the **destroyed** state. +* The **pending** state indicates the underlying socket connection has been successfully established and requests are queueing. + * The *process* event transitions the `Client` to the **processing** state where requests are processed. + * If requests are queued, the *close* event transitions to the **processing** state; otherwise, it transitions to the **destroyed** state. + * The *destroy* event transitions to the **destroyed** state. +* The **processing** state initializes to the **processing.running** state. + * If the current request requires draining, the *needDrain* event transitions the `Client` into the **processing.busy** state which will return to the **processing.running** state with the *drainComplete* event. + * After all queued requests are completed, the *keepalive* event transitions the `Client` back to the **pending** state. If no requests are queued during the timeout, the **close** event transitions the `Client` to the **destroyed** state. + * If the *close* event is fired while the `Client` still has queued requests, the `Client` transitions to the **process.closing** state where it will complete all existing requests before firing the *done* event. + * The *done* event gracefully transitions the `Client` to the **destroyed** state. + * At any point in time, the *destroy* event will transition the `Client` from the **processing** state to the **destroyed** state, destroying any queued requests. +* The **destroyed** state is a final state and the `Client` is no longer functional. + +A state diagram representing an Undici Client instance: + +```mermaid +stateDiagram-v2 + [*] --> idle + idle --> pending : connect + idle --> destroyed : destroy/close + + pending --> idle : timeout + pending --> destroyed : destroy + + state close_fork <> + pending --> close_fork : close + close_fork --> processing + close_fork --> destroyed + + pending --> processing : process + + processing --> pending : keepalive + processing --> destroyed : done + processing --> destroyed : destroy + + destroyed --> [*] + + state processing { + [*] --> running + running --> closing : close + running --> busy : needDrain + busy --> running : drainComplete + running --> [*] : keepalive + closing --> [*] : done + } +``` +## State details + +### idle + +The **idle** state is the initial state of a `Client` instance. While an `origin` is required for instantiating a `Client` instance, the underlying socket connection will not be established until a request is queued using [`Client.dispatch()`](Client.md#clientdispatchoptions-handlers). By calling `Client.dispatch()` directly or using one of the multiple implementations ([`Client.connect()`](Client.md#clientconnectoptions-callback), [`Client.pipeline()`](Client.md#clientpipelineoptions-handler), [`Client.request()`](Client.md#clientrequestoptions-callback), [`Client.stream()`](Client.md#clientstreamoptions-factory-callback), and [`Client.upgrade()`](Client.md#clientupgradeoptions-callback)), the `Client` instance will transition from **idle** to [**pending**](#pending) and then most likely directly to [**processing**](#processing). + +Calling [`Client.close()`](Client.md#clientclosecallback) or [`Client.destroy()`](Client.md#clientdestroyerror-callback) transitions directly to the [**destroyed**](#destroyed) state since the `Client` instance will have no queued requests in this state. + +### pending + +The **pending** state signifies a non-processing `Client`. Upon entering this state, the `Client` establishes a socket connection and emits the [`'connect'`](Client.md#event-connect) event signalling a connection was successfully established with the `origin` provided during `Client` instantiation. The internal queue is initially empty, and requests can start queueing. + +Calling [`Client.close()`](Client.md#clientclosecallback) with queued requests, transitions the `Client` to the [**processing**](#processing) state. Without queued requests, it transitions to the [**destroyed**](#destroyed) state. + +Calling [`Client.destroy()`](Client.md#clientdestroyerror-callback) transitions directly to the [**destroyed**](#destroyed) state regardless of existing requests. + +### processing + +The **processing** state is a state machine within itself. It initializes to the [**processing.running**](#running) state. The [`Client.dispatch()`](Client.md#clientdispatchoptions-handlers), [`Client.close()`](Client.md#clientclosecallback), and [`Client.destroy()`](Client.md#clientdestroyerror-callback) can be called at any time while the `Client` is in this state. `Client.dispatch()` will add more requests to the queue while existing requests continue to be processed. `Client.close()` will transition to the [**processing.closing**](#closing) state. And `Client.destroy()` will transition to [**destroyed**](#destroyed). + +#### running + +In the **processing.running** sub-state, queued requests are being processed in a FIFO order. If a request body requires draining, the *needDrain* event transitions to the [**processing.busy**](#busy) sub-state. The *close* event transitions the Client to the [**process.closing**](#closing) sub-state. If all queued requests are processed and neither [`Client.close()`](Client.md#clientclosecallback) nor [`Client.destroy()`](Client.md#clientdestroyerror-callback) are called, then the [**processing**](#processing) machine will trigger a *keepalive* event transitioning the `Client` back to the [**pending**](#pending) state. During this time, the `Client` is waiting for the socket connection to timeout, and once it does, it triggers the *timeout* event and transitions to the [**idle**](#idle) state. + +#### busy + +This sub-state is only entered when a request body is an instance of [Stream](https://nodejs.org/api/stream.html) and requires draining. The `Client` cannot process additional requests while in this state and must wait until the currently processing request body is completely drained before transitioning back to [**processing.running**](#running). + +#### closing + +This sub-state is only entered when a `Client` instance has queued requests and the [`Client.close()`](Client.md#clientclosecallback) method is called. In this state, the `Client` instance continues to process requests as usual, with the one exception that no additional requests can be queued. Once all of the queued requests are processed, the `Client` will trigger the *done* event gracefully entering the [**destroyed**](#destroyed) state without an error. + +### destroyed + +The **destroyed** state is a final state for the `Client` instance. Once in this state, a `Client` is nonfunctional. Calling any other `Client` methods will result in an `ClientDestroyedError`. diff --git a/deps/npm/node_modules/undici/docs/docs/best-practices/client-certificate.md b/deps/npm/node_modules/undici/docs/docs/best-practices/client-certificate.md new file mode 100644 index 00000000000000..9ead733af9e87e --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/best-practices/client-certificate.md @@ -0,0 +1,64 @@ +# Client certificate + +Client certificate authentication can be configured with the `Client`, the required options are passed along through the `connect` option. + +The client certificates must be signed by a trusted CA. The Node.js default is to trust the well-known CAs curated by Mozilla. + +Setting the server option `requestCert: true` tells the server to request the client certificate. + +The server option `rejectUnauthorized: false` allows us to handle any invalid certificate errors in client code. The `authorized` property on the socket of the incoming request will show if the client certificate was valid. The `authorizationError` property will give the reason if the certificate was not valid. + +### Client Certificate Authentication + +```js +const { readFileSync } = require('node:fs') +const { join } = require('node:path') +const { createServer } = require('node:https') +const { Client } = require('undici') + +const serverOptions = { + ca: [ + readFileSync(join(__dirname, 'client-ca-crt.pem'), 'utf8') + ], + key: readFileSync(join(__dirname, 'server-key.pem'), 'utf8'), + cert: readFileSync(join(__dirname, 'server-crt.pem'), 'utf8'), + requestCert: true, + rejectUnauthorized: false +} + +const server = createServer(serverOptions, (req, res) => { + // true if client cert is valid + if(req.client.authorized === true) { + console.log('valid') + } else { + console.error(req.client.authorizationError) + } + res.end() +}) + +server.listen(0, function () { + const tls = { + ca: [ + readFileSync(join(__dirname, 'server-ca-crt.pem'), 'utf8') + ], + key: readFileSync(join(__dirname, 'client-key.pem'), 'utf8'), + cert: readFileSync(join(__dirname, 'client-crt.pem'), 'utf8'), + rejectUnauthorized: false, + servername: 'agent1' + } + const client = new Client(`https://localhost:${server.address().port}`, { + connect: tls + }) + + client.request({ + path: '/', + method: 'GET' + }, (err, { body }) => { + body.on('data', (buf) => {}) + body.on('end', () => { + client.close() + server.close() + }) + }) +}) +``` diff --git a/deps/npm/node_modules/undici/docs/docs/best-practices/mocking-request.md b/deps/npm/node_modules/undici/docs/docs/best-practices/mocking-request.md new file mode 100644 index 00000000000000..695439274449a5 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/best-practices/mocking-request.md @@ -0,0 +1,136 @@ +# Mocking Request + +Undici has its own mocking [utility](../api/MockAgent.md). It allow us to intercept undici HTTP requests and return mocked values instead. It can be useful for testing purposes. + +Example: + +```js +// bank.mjs +import { request } from 'undici' + +export async function bankTransfer(recipient, amount) { + const { body } = await request('http://localhost:3000/bank-transfer', + { + method: 'POST', + headers: { + 'X-TOKEN-SECRET': 'SuperSecretToken', + }, + body: JSON.stringify({ + recipient, + amount + }) + } + ) + return await body.json() +} +``` + +And this is what the test file looks like: + +```js +// index.test.mjs +import { strict as assert } from 'assert' +import { MockAgent, setGlobalDispatcher, } from 'undici' +import { bankTransfer } from './bank.mjs' + +const mockAgent = new MockAgent(); + +setGlobalDispatcher(mockAgent); + +// Provide the base url to the request +const mockPool = mockAgent.get('http://localhost:3000'); + +// intercept the request +mockPool.intercept({ + path: '/bank-transfer', + method: 'POST', + headers: { + 'X-TOKEN-SECRET': 'SuperSecretToken', + }, + body: JSON.stringify({ + recipient: '1234567890', + amount: '100' + }) +}).reply(200, { + message: 'transaction processed' +}) + +const success = await bankTransfer('1234567890', '100') + +assert.deepEqual(success, { message: 'transaction processed' }) + +// if you dont want to check whether the body or the headers contain the same value +// just remove it from interceptor +mockPool.intercept({ + path: '/bank-transfer', + method: 'POST', +}).reply(400, { + message: 'bank account not found' +}) + +const badRequest = await bankTransfer('1234567890', '100') + +assert.deepEqual(badRequest, { message: 'bank account not found' }) +``` + +Explore other MockAgent functionality [here](../api/MockAgent.md) + +## Debug Mock Value + +When the interceptor and the request options are not the same, undici will automatically make a real HTTP request. To prevent real requests from being made, use `mockAgent.disableNetConnect()`: + +```js +const mockAgent = new MockAgent(); + +setGlobalDispatcher(mockAgent); +mockAgent.disableNetConnect() + +// Provide the base url to the request +const mockPool = mockAgent.get('http://localhost:3000'); + +mockPool.intercept({ + path: '/bank-transfer', + method: 'POST', +}).reply(200, { + message: 'transaction processed' +}) + +const badRequest = await bankTransfer('1234567890', '100') +// Will throw an error +// MockNotMatchedError: Mock dispatch not matched for path '/bank-transfer': +// subsequent request to origin http://localhost:3000 was not allowed (net.connect disabled) +``` + +## Reply with data based on request + +If the mocked response needs to be dynamically derived from the request parameters, you can provide a function instead of an object to `reply`: + +```js +mockPool.intercept({ + path: '/bank-transfer', + method: 'POST', + headers: { + 'X-TOKEN-SECRET': 'SuperSecretToken', + }, + body: JSON.stringify({ + recipient: '1234567890', + amount: '100' + }) +}).reply(200, (opts) => { + // do something with opts + + return { message: 'transaction processed' } +}) +``` + +in this case opts will be + +``` +{ + method: 'POST', + headers: { 'X-TOKEN-SECRET': 'SuperSecretToken' }, + body: '{"recipient":"1234567890","amount":"100"}', + origin: 'http://localhost:3000', + path: '/bank-transfer' +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/best-practices/proxy.md b/deps/npm/node_modules/undici/docs/docs/best-practices/proxy.md new file mode 100644 index 00000000000000..42f22461c15c77 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/best-practices/proxy.md @@ -0,0 +1,126 @@ +# Connecting through a proxy + +Connecting through a proxy is possible by: + +- Using [ProxyAgent](../api/ProxyAgent.md). +- Configuring `Client` or `Pool` constructor. + +The proxy url should be passed to the `Client` or `Pool` constructor, while the upstream server url +should be added to every request call in the `path`. +For instance, if you need to send a request to the `/hello` route of your upstream server, +the `path` should be `path: 'http://upstream.server:port/hello?foo=bar'`. + +If you proxy requires basic authentication, you can send it via the `proxy-authorization` header. + +### Connect without authentication + +```js +import { Client } from 'undici' +import { createServer } from 'http' +import { createProxy } from 'proxy' + +const server = await buildServer() +const proxyServer = await buildProxy() + +const serverUrl = `http://localhost:${server.address().port}` +const proxyUrl = `http://localhost:${proxyServer.address().port}` + +server.on('request', (req, res) => { + console.log(req.url) // '/hello?foo=bar' + res.setHeader('content-type', 'application/json') + res.end(JSON.stringify({ hello: 'world' })) +}) + +const client = new Client(proxyUrl) + +const response = await client.request({ + method: 'GET', + path: serverUrl + '/hello?foo=bar' +}) + +response.body.setEncoding('utf8') +let data = '' +for await (const chunk of response.body) { + data += chunk +} +console.log(response.statusCode) // 200 +console.log(JSON.parse(data)) // { hello: 'world' } + +server.close() +proxyServer.close() +client.close() + +function buildServer () { + return new Promise((resolve, reject) => { + const server = createServer() + server.listen(0, () => resolve(server)) + }) +} + +function buildProxy () { + return new Promise((resolve, reject) => { + const server = createProxy(createServer()) + server.listen(0, () => resolve(server)) + }) +} +``` + +### Connect with authentication + +```js +import { Client } from 'undici' +import { createServer } from 'http' +import { createProxy } from 'proxy' + +const server = await buildServer() +const proxyServer = await buildProxy() + +const serverUrl = `http://localhost:${server.address().port}` +const proxyUrl = `http://localhost:${proxyServer.address().port}` + +proxyServer.authenticate = function (req) { + return req.headers['proxy-authorization'] === `Basic ${Buffer.from('user:pass').toString('base64')}` +} + +server.on('request', (req, res) => { + console.log(req.url) // '/hello?foo=bar' + res.setHeader('content-type', 'application/json') + res.end(JSON.stringify({ hello: 'world' })) +}) + +const client = new Client(proxyUrl) + +const response = await client.request({ + method: 'GET', + path: serverUrl + '/hello?foo=bar', + headers: { + 'proxy-authorization': `Basic ${Buffer.from('user:pass').toString('base64')}` + } +}) + +response.body.setEncoding('utf8') +let data = '' +for await (const chunk of response.body) { + data += chunk +} +console.log(response.statusCode) // 200 +console.log(JSON.parse(data)) // { hello: 'world' } + +server.close() +proxyServer.close() +client.close() + +function buildServer () { + return new Promise((resolve, reject) => { + const server = createServer() + server.listen(0, () => resolve(server)) + }) +} + +function buildProxy () { + return new Promise((resolve, reject) => { + const server = createProxy(createServer()) + server.listen(0, () => resolve(server)) + }) +} +``` diff --git a/deps/npm/node_modules/undici/docs/docs/best-practices/writing-tests.md b/deps/npm/node_modules/undici/docs/docs/best-practices/writing-tests.md new file mode 100644 index 00000000000000..57549de63572a7 --- /dev/null +++ b/deps/npm/node_modules/undici/docs/docs/best-practices/writing-tests.md @@ -0,0 +1,20 @@ +# Writing tests + +Undici is tuned for a production use case and its default will keep +a socket open for a few seconds after an HTTP request is completed to +remove the overhead of opening up a new socket. These settings that makes +Undici shine in production are not a good fit for using Undici in automated +tests, as it will result in longer execution times. + +The following are good defaults that will keep the socket open for only 10ms: + +```js +import { request, setGlobalDispatcher, Agent } from 'undici' + +const agent = new Agent({ + keepAliveTimeout: 10, // milliseconds + keepAliveMaxTimeout: 10 // milliseconds +}) + +setGlobalDispatcher(agent) +``` diff --git a/deps/npm/node_modules/undici/index-fetch.js b/deps/npm/node_modules/undici/index-fetch.js new file mode 100644 index 00000000000000..711d7e8a1e4de5 --- /dev/null +++ b/deps/npm/node_modules/undici/index-fetch.js @@ -0,0 +1,35 @@ +'use strict' + +const { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global') +const EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent') +const fetchImpl = require('./lib/web/fetch').fetch + +module.exports.fetch = function fetch (resource, init = undefined) { + return fetchImpl(resource, init).catch((err) => { + if (err && typeof err === 'object') { + Error.captureStackTrace(err) + } + throw err + }) +} +module.exports.FormData = require('./lib/web/fetch/formdata').FormData +module.exports.Headers = require('./lib/web/fetch/headers').Headers +module.exports.Response = require('./lib/web/fetch/response').Response +module.exports.Request = require('./lib/web/fetch/request').Request + +const { CloseEvent, ErrorEvent, MessageEvent, createFastMessageEvent } = require('./lib/web/websocket/events') +module.exports.WebSocket = require('./lib/web/websocket/websocket').WebSocket +module.exports.CloseEvent = CloseEvent +module.exports.ErrorEvent = ErrorEvent +module.exports.MessageEvent = MessageEvent +module.exports.createFastMessageEvent = createFastMessageEvent + +module.exports.EventSource = require('./lib/web/eventsource/eventsource').EventSource + +const api = require('./lib/api') +const Dispatcher = require('./lib/dispatcher/dispatcher') +Object.assign(Dispatcher.prototype, api) +// Expose the fetch implementation to be enabled in Node.js core via a flag +module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent +module.exports.getGlobalDispatcher = getGlobalDispatcher +module.exports.setGlobalDispatcher = setGlobalDispatcher diff --git a/deps/npm/node_modules/undici/index.js b/deps/npm/node_modules/undici/index.js new file mode 100644 index 00000000000000..0c37ed4853b6ba --- /dev/null +++ b/deps/npm/node_modules/undici/index.js @@ -0,0 +1,169 @@ +'use strict' + +const Client = require('./lib/dispatcher/client') +const Dispatcher = require('./lib/dispatcher/dispatcher') +const Pool = require('./lib/dispatcher/pool') +const BalancedPool = require('./lib/dispatcher/balanced-pool') +const Agent = require('./lib/dispatcher/agent') +const ProxyAgent = require('./lib/dispatcher/proxy-agent') +const EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent') +const RetryAgent = require('./lib/dispatcher/retry-agent') +const errors = require('./lib/core/errors') +const util = require('./lib/core/util') +const { InvalidArgumentError } = errors +const api = require('./lib/api') +const buildConnector = require('./lib/core/connect') +const MockClient = require('./lib/mock/mock-client') +const MockAgent = require('./lib/mock/mock-agent') +const MockPool = require('./lib/mock/mock-pool') +const mockErrors = require('./lib/mock/mock-errors') +const RetryHandler = require('./lib/handler/retry-handler') +const { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global') +const DecoratorHandler = require('./lib/handler/decorator-handler') +const RedirectHandler = require('./lib/handler/redirect-handler') +const createRedirectInterceptor = require('./lib/interceptor/redirect-interceptor') + +Object.assign(Dispatcher.prototype, api) + +module.exports.Dispatcher = Dispatcher +module.exports.Client = Client +module.exports.Pool = Pool +module.exports.BalancedPool = BalancedPool +module.exports.Agent = Agent +module.exports.ProxyAgent = ProxyAgent +module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent +module.exports.RetryAgent = RetryAgent +module.exports.RetryHandler = RetryHandler + +module.exports.DecoratorHandler = DecoratorHandler +module.exports.RedirectHandler = RedirectHandler +module.exports.createRedirectInterceptor = createRedirectInterceptor +module.exports.interceptors = { + redirect: require('./lib/interceptor/redirect'), + retry: require('./lib/interceptor/retry'), + dump: require('./lib/interceptor/dump'), + dns: require('./lib/interceptor/dns') +} + +module.exports.buildConnector = buildConnector +module.exports.errors = errors +module.exports.util = { + parseHeaders: util.parseHeaders, + headerNameToString: util.headerNameToString +} + +function makeDispatcher (fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts + opts = null + } + + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url') + } + + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path') + } + + let path = opts.path + if (!opts.path.startsWith('/')) { + path = `/${path}` + } + + url = new URL(util.parseOrigin(url).origin + path) + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {} + } + + url = util.parseURL(url) + } + + const { agent, dispatcher = getGlobalDispatcher() } = opts + + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') + } + + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, handler) + } +} + +module.exports.setGlobalDispatcher = setGlobalDispatcher +module.exports.getGlobalDispatcher = getGlobalDispatcher + +const fetchImpl = require('./lib/web/fetch').fetch +module.exports.fetch = async function fetch (init, options = undefined) { + try { + return await fetchImpl(init, options) + } catch (err) { + if (err && typeof err === 'object') { + Error.captureStackTrace(err) + } + + throw err + } +} +module.exports.Headers = require('./lib/web/fetch/headers').Headers +module.exports.Response = require('./lib/web/fetch/response').Response +module.exports.Request = require('./lib/web/fetch/request').Request +module.exports.FormData = require('./lib/web/fetch/formdata').FormData +module.exports.File = globalThis.File ?? require('node:buffer').File +module.exports.FileReader = require('./lib/web/fileapi/filereader').FileReader + +const { setGlobalOrigin, getGlobalOrigin } = require('./lib/web/fetch/global') + +module.exports.setGlobalOrigin = setGlobalOrigin +module.exports.getGlobalOrigin = getGlobalOrigin + +const { CacheStorage } = require('./lib/web/cache/cachestorage') +const { kConstruct } = require('./lib/web/cache/symbols') + +// Cache & CacheStorage are tightly coupled with fetch. Even if it may run +// in an older version of Node, it doesn't have any use without fetch. +module.exports.caches = new CacheStorage(kConstruct) + +const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/web/cookies') + +module.exports.deleteCookie = deleteCookie +module.exports.getCookies = getCookies +module.exports.getSetCookies = getSetCookies +module.exports.setCookie = setCookie + +const { parseMIMEType, serializeAMimeType } = require('./lib/web/fetch/data-url') + +module.exports.parseMIMEType = parseMIMEType +module.exports.serializeAMimeType = serializeAMimeType + +const { CloseEvent, ErrorEvent, MessageEvent } = require('./lib/web/websocket/events') +module.exports.WebSocket = require('./lib/web/websocket/websocket').WebSocket +module.exports.CloseEvent = CloseEvent +module.exports.ErrorEvent = ErrorEvent +module.exports.MessageEvent = MessageEvent + +module.exports.request = makeDispatcher(api.request) +module.exports.stream = makeDispatcher(api.stream) +module.exports.pipeline = makeDispatcher(api.pipeline) +module.exports.connect = makeDispatcher(api.connect) +module.exports.upgrade = makeDispatcher(api.upgrade) + +module.exports.MockClient = MockClient +module.exports.MockPool = MockPool +module.exports.MockAgent = MockAgent +module.exports.mockErrors = mockErrors + +const { EventSource } = require('./lib/web/eventsource/eventsource') + +module.exports.EventSource = EventSource diff --git a/deps/npm/node_modules/undici/lib/api/abort-signal.js b/deps/npm/node_modules/undici/lib/api/abort-signal.js new file mode 100644 index 00000000000000..2afe747d3a1075 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/abort-signal.js @@ -0,0 +1,57 @@ +const { addAbortListener } = require('../core/util') +const { RequestAbortedError } = require('../core/errors') + +const kListener = Symbol('kListener') +const kSignal = Symbol('kSignal') + +function abort (self) { + if (self.abort) { + self.abort(self[kSignal]?.reason) + } else { + self.reason = self[kSignal]?.reason ?? new RequestAbortedError() + } + removeSignal(self) +} + +function addSignal (self, signal) { + self.reason = null + + self[kSignal] = null + self[kListener] = null + + if (!signal) { + return + } + + if (signal.aborted) { + abort(self) + return + } + + self[kSignal] = signal + self[kListener] = () => { + abort(self) + } + + addAbortListener(self[kSignal], self[kListener]) +} + +function removeSignal (self) { + if (!self[kSignal]) { + return + } + + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]) + } else { + self[kSignal].removeListener('abort', self[kListener]) + } + + self[kSignal] = null + self[kListener] = null +} + +module.exports = { + addSignal, + removeSignal +} diff --git a/deps/npm/node_modules/undici/lib/api/api-connect.js b/deps/npm/node_modules/undici/lib/api/api-connect.js new file mode 100644 index 00000000000000..f9dbbf64fe8074 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/api-connect.js @@ -0,0 +1,108 @@ +'use strict' + +const assert = require('node:assert') +const { AsyncResource } = require('node:async_hooks') +const { InvalidArgumentError, SocketError } = require('../core/errors') +const util = require('../core/util') +const { addSignal, removeSignal } = require('./abort-signal') + +class ConnectHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_CONNECT') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.callback = callback + this.abort = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (this.reason) { + abort(this.reason) + return + } + + assert(this.callback) + + this.abort = abort + this.context = context + } + + onHeaders () { + throw new SocketError('bad connect', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + removeSignal(this) + + this.callback = null + + let headers = rawHeaders + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + } + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function connect (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const connectHandler = new ConnectHandler(opts, callback) + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts?.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = connect diff --git a/deps/npm/node_modules/undici/lib/api/api-pipeline.js b/deps/npm/node_modules/undici/lib/api/api-pipeline.js new file mode 100644 index 00000000000000..e64b329496580a --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/api-pipeline.js @@ -0,0 +1,251 @@ +'use strict' + +const { + Readable, + Duplex, + PassThrough +} = require('node:stream') +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = require('../core/errors') +const util = require('../core/util') +const { AsyncResource } = require('node:async_hooks') +const { addSignal, removeSignal } = require('./abort-signal') +const assert = require('node:assert') + +const kResume = Symbol('resume') + +class PipelineRequest extends Readable { + constructor () { + super({ autoDestroy: true }) + + this[kResume] = null + } + + _read () { + const { [kResume]: resume } = this + + if (resume) { + this[kResume] = null + resume() + } + } + + _destroy (err, callback) { + this._read() + + callback(err) + } +} + +class PipelineResponse extends Readable { + constructor (resume) { + super({ autoDestroy: true }) + this[kResume] = resume + } + + _read () { + this[kResume]() + } + + _destroy (err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + callback(err) + } +} + +class PipelineHandler extends AsyncResource { + constructor (opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler') + } + + const { signal, method, opaque, onInfo, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_PIPELINE') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.handler = handler + this.abort = null + this.context = null + this.onInfo = onInfo || null + + this.req = new PipelineRequest().on('error', util.nop) + + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this + + if (body?.resume) { + body.resume() + } + }, + write: (chunk, encoding, callback) => { + const { req } = this + + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback() + } else { + req[kResume] = callback + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this + + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (abort && err) { + abort() + } + + util.destroy(body, err) + util.destroy(req, err) + util.destroy(res, err) + + removeSignal(this) + + callback(err) + } + }).on('prefinish', () => { + const { req } = this + + // Node < 15 does not call _final in same tick. + req.push(null) + }) + + this.res = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + const { ret, res } = this + + if (this.reason) { + abort(this.reason) + return + } + + assert(!res, 'pipeline cannot be retried') + assert(!ret.destroyed) + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this + + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.onInfo({ statusCode, headers }) + } + return + } + + this.res = new PipelineResponse(resume) + + let body + try { + this.handler = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }) + } catch (err) { + this.res.on('error', util.nop) + throw err + } + + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable') + } + + body + .on('data', (chunk) => { + const { ret, body } = this + + if (!ret.push(chunk) && body.pause) { + body.pause() + } + }) + .on('error', (err) => { + const { ret } = this + + util.destroy(ret, err) + }) + .on('end', () => { + const { ret } = this + + ret.push(null) + }) + .on('close', () => { + const { ret } = this + + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()) + } + }) + + this.body = body + } + + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + res.push(null) + } + + onError (err) { + const { ret } = this + this.handler = null + util.destroy(ret, err) + } +} + +function pipeline (opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler) + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) + return pipelineHandler.ret + } catch (err) { + return new PassThrough().destroy(err) + } +} + +module.exports = pipeline diff --git a/deps/npm/node_modules/undici/lib/api/api-request.js b/deps/npm/node_modules/undici/lib/api/api-request.js new file mode 100644 index 00000000000000..be17d62877403c --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/api-request.js @@ -0,0 +1,214 @@ +'use strict' + +const assert = require('node:assert') +const { Readable } = require('./readable') +const { InvalidArgumentError, RequestAbortedError } = require('../core/errors') +const util = require('../core/util') +const { getResolveErrorBodyCallback } = require('./util') +const { AsyncResource } = require('node:async_hooks') + +class RequestHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_REQUEST') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.method = method + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.res = null + this.abort = null + this.body = body + this.trailers = {} + this.context = null + this.onInfo = onInfo || null + this.throwOnError = throwOnError + this.highWaterMark = highWaterMark + this.signal = signal + this.reason = null + this.removeAbortListener = null + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + if (this.signal) { + if (this.signal.aborted) { + this.reason = this.signal.reason ?? new RequestAbortedError() + } else { + this.removeAbortListener = util.addAbortListener(this.signal, () => { + this.reason = this.signal.reason ?? new RequestAbortedError() + if (this.res) { + util.destroy(this.res.on('error', util.nop), this.reason) + } else if (this.abort) { + this.abort(this.reason) + } + + if (this.removeAbortListener) { + this.res?.off('close', this.removeAbortListener) + this.removeAbortListener() + this.removeAbortListener = null + } + }) + } + } + } + + onConnect (abort, context) { + if (this.reason) { + abort(this.reason) + return + } + + assert(this.callback) + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + const contentLength = parsedHeaders['content-length'] + const res = new Readable({ + resume, + abort, + contentType, + contentLength: this.method !== 'HEAD' && contentLength + ? Number(contentLength) + : null, + highWaterMark + }) + + if (this.removeAbortListener) { + res.on('close', this.removeAbortListener) + } + + this.callback = null + this.res = res + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body: res, + context + }) + } + } + } + + onData (chunk) { + return this.res.push(chunk) + } + + onComplete (trailers) { + util.parseHeaders(trailers, this.trailers) + this.res.push(null) + } + + onError (err) { + const { res, callback, body, opaque } = this + + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (res) { + this.res = null + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(() => { + util.destroy(res, err) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + + if (this.removeAbortListener) { + res?.off('close', this.removeAbortListener) + this.removeAbortListener() + this.removeAbortListener = null + } + } +} + +function request (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new RequestHandler(opts, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts?.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = request +module.exports.RequestHandler = RequestHandler diff --git a/deps/npm/node_modules/undici/lib/api/api-stream.js b/deps/npm/node_modules/undici/lib/api/api-stream.js new file mode 100644 index 00000000000000..fba2266dd7d99b --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/api-stream.js @@ -0,0 +1,220 @@ +'use strict' + +const assert = require('node:assert') +const { finished, PassThrough } = require('node:stream') +const { InvalidArgumentError, InvalidReturnValueError } = require('../core/errors') +const util = require('../core/util') +const { getResolveErrorBodyCallback } = require('./util') +const { AsyncResource } = require('node:async_hooks') +const { addSignal, removeSignal } = require('./abort-signal') + +class StreamHandler extends AsyncResource { + constructor (opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_STREAM') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.factory = factory + this.callback = callback + this.res = null + this.abort = null + this.context = null + this.trailers = null + this.body = body + this.onInfo = onInfo || null + this.throwOnError = throwOnError || false + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (this.reason) { + abort(this.reason) + return + } + + assert(this.callback) + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + this.factory = null + + let res + + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + res = new PassThrough() + + this.callback = null + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + if (factory === null) { + return + } + + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }) + + if ( + !res || + typeof res.write !== 'function' || + typeof res.end !== 'function' || + typeof res.on !== 'function' + ) { + throw new InvalidReturnValueError('expected Writable') + } + + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { readable: false }, (err) => { + const { callback, res, opaque, trailers, abort } = this + + this.res = null + if (err || !res.readable) { + util.destroy(res, err) + } + + this.callback = null + this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) + + if (err) { + abort() + } + }) + } + + res.on('drain', resume) + + this.res = res + + const needDrain = res.writableNeedDrain !== undefined + ? res.writableNeedDrain + : res._writableState?.needDrain + + return needDrain !== true + } + + onData (chunk) { + const { res } = this + + return res ? res.write(chunk) : true + } + + onComplete (trailers) { + const { res } = this + + removeSignal(this) + + if (!res) { + return + } + + this.trailers = util.parseHeaders(trailers) + + res.end() + } + + onError (err) { + const { res, callback, opaque, body } = this + + removeSignal(this) + + this.factory = null + + if (res) { + this.res = null + util.destroy(res, err) + } else if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } +} + +function stream (opts, factory, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts?.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = stream diff --git a/deps/npm/node_modules/undici/lib/api/api-upgrade.js b/deps/npm/node_modules/undici/lib/api/api-upgrade.js new file mode 100644 index 00000000000000..7effcf21049d7c --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/api-upgrade.js @@ -0,0 +1,108 @@ +'use strict' + +const { InvalidArgumentError, SocketError } = require('../core/errors') +const { AsyncResource } = require('node:async_hooks') +const util = require('../core/util') +const { addSignal, removeSignal } = require('./abort-signal') +const assert = require('node:assert') + +class UpgradeHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_UPGRADE') + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.abort = null + this.context = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (this.reason) { + abort(this.reason) + return + } + + assert(this.callback) + + this.abort = abort + this.context = null + } + + onHeaders () { + throw new SocketError('bad upgrade', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + assert(statusCode === 101) + + const { callback, opaque, context } = this + + removeSignal(this) + + this.callback = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function upgrade (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const upgradeHandler = new UpgradeHandler(opts, callback) + this.dispatch({ + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, upgradeHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts?.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = upgrade diff --git a/deps/npm/node_modules/undici/lib/api/index.js b/deps/npm/node_modules/undici/lib/api/index.js new file mode 100644 index 00000000000000..8983a5e746f5db --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports.request = require('./api-request') +module.exports.stream = require('./api-stream') +module.exports.pipeline = require('./api-pipeline') +module.exports.upgrade = require('./api-upgrade') +module.exports.connect = require('./api-connect') diff --git a/deps/npm/node_modules/undici/lib/api/readable.js b/deps/npm/node_modules/undici/lib/api/readable.js new file mode 100644 index 00000000000000..47fbf3e0ef1b5f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/readable.js @@ -0,0 +1,385 @@ +// Ported from https://github.com/nodejs/undici/pull/907 + +'use strict' + +const assert = require('node:assert') +const { Readable } = require('node:stream') +const { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require('../core/errors') +const util = require('../core/util') +const { ReadableStreamFrom } = require('../core/util') + +const kConsume = Symbol('kConsume') +const kReading = Symbol('kReading') +const kBody = Symbol('kBody') +const kAbort = Symbol('kAbort') +const kContentType = Symbol('kContentType') +const kContentLength = Symbol('kContentLength') + +const noop = () => {} + +class BodyReadable extends Readable { + constructor ({ + resume, + abort, + contentType = '', + contentLength, + highWaterMark = 64 * 1024 // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }) + + this._readableState.dataEmitted = false + + this[kAbort] = abort + this[kConsume] = null + this[kBody] = null + this[kContentType] = contentType + this[kContentLength] = contentLength + + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + this[kReading] = false + } + + destroy (err) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (err) { + this[kAbort]() + } + + return super.destroy(err) + } + + _destroy (err, callback) { + // Workaround for Node "bug". If the stream is destroyed in same + // tick as it is created, then a user who is waiting for a + // promise (i.e micro tick) for installing a 'error' listener will + // never get a chance and will always encounter an unhandled exception. + if (!this[kReading]) { + setImmediate(() => { + callback(err) + }) + } else { + callback(err) + } + } + + on (ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true + } + return super.on(ev, ...args) + } + + addListener (ev, ...args) { + return this.on(ev, ...args) + } + + off (ev, ...args) { + const ret = super.off(ev, ...args) + if (ev === 'data' || ev === 'readable') { + this[kReading] = ( + this.listenerCount('data') > 0 || + this.listenerCount('readable') > 0 + ) + } + return ret + } + + removeListener (ev, ...args) { + return this.off(ev, ...args) + } + + push (chunk) { + if (this[kConsume] && chunk !== null) { + consumePush(this[kConsume], chunk) + return this[kReading] ? super.push(chunk) : true + } + return super.push(chunk) + } + + // https://fetch.spec.whatwg.org/#dom-body-text + async text () { + return consume(this, 'text') + } + + // https://fetch.spec.whatwg.org/#dom-body-json + async json () { + return consume(this, 'json') + } + + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob () { + return consume(this, 'blob') + } + + // https://fetch.spec.whatwg.org/#dom-body-bytes + async bytes () { + return consume(this, 'bytes') + } + + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer () { + return consume(this, 'arrayBuffer') + } + + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData () { + // TODO: Implement. + throw new NotSupportedError() + } + + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed () { + return util.isDisturbed(this) + } + + // https://fetch.spec.whatwg.org/#dom-body-body + get body () { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this) + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader() // Ensure stream is locked. + assert(this[kBody].locked) + } + } + return this[kBody] + } + + async dump (opts) { + let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024 + const signal = opts?.signal + + if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) { + throw new InvalidArgumentError('signal must be an AbortSignal') + } + + signal?.throwIfAborted() + + if (this._readableState.closeEmitted) { + return null + } + + return await new Promise((resolve, reject) => { + if (this[kContentLength] > limit) { + this.destroy(new AbortError()) + } + + const onAbort = () => { + this.destroy(signal.reason ?? new AbortError()) + } + signal?.addEventListener('abort', onAbort) + + this + .on('close', function () { + signal?.removeEventListener('abort', onAbort) + if (signal?.aborted) { + reject(signal.reason ?? new AbortError()) + } else { + resolve(null) + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length + if (limit <= 0) { + this.destroy() + } + }) + .resume() + }) + } +} + +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked (self) { + // Consume is an implicit lock. + return (self[kBody] && self[kBody].locked === true) || self[kConsume] +} + +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable (self) { + return util.isDisturbed(self) || isLocked(self) +} + +async function consume (stream, type) { + assert(!stream[kConsume]) + + return new Promise((resolve, reject) => { + if (isUnusable(stream)) { + const rState = stream._readableState + if (rState.destroyed && rState.closeEmitted === false) { + stream + .on('error', err => { + reject(err) + }) + .on('close', () => { + reject(new TypeError('unusable')) + }) + } else { + reject(rState.errored ?? new TypeError('unusable')) + } + } else { + queueMicrotask(() => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + } + + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err) + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()) + } + }) + + consumeStart(stream[kConsume]) + }) + } + }) +} + +function consumeStart (consume) { + if (consume.body === null) { + return + } + + const { _readableState: state } = consume.stream + + if (state.bufferIndex) { + const start = state.bufferIndex + const end = state.buffer.length + for (let n = start; n < end; n++) { + consumePush(consume, state.buffer[n]) + } + } else { + for (const chunk of state.buffer) { + consumePush(consume, chunk) + } + } + + if (state.endEmitted) { + consumeEnd(this[kConsume]) + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]) + }) + } + + consume.stream.resume() + + while (consume.stream.read() != null) { + // Loop + } +} + +/** + * @param {Buffer[]} chunks + * @param {number} length + */ +function chunksDecode (chunks, length) { + if (chunks.length === 0 || length === 0) { + return '' + } + const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length) + const bufferLength = buffer.length + + // Skip BOM. + const start = + bufferLength > 2 && + buffer[0] === 0xef && + buffer[1] === 0xbb && + buffer[2] === 0xbf + ? 3 + : 0 + return buffer.utf8Slice(start, bufferLength) +} + +/** + * @param {Buffer[]} chunks + * @param {number} length + * @returns {Uint8Array} + */ +function chunksConcat (chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0) + } + if (chunks.length === 1) { + // fast-path + return new Uint8Array(chunks[0]) + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer) + + let offset = 0 + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i] + buffer.set(chunk, offset) + offset += chunk.length + } + + return buffer +} + +function consumeEnd (consume) { + const { type, body, resolve, stream, length } = consume + + try { + if (type === 'text') { + resolve(chunksDecode(body, length)) + } else if (type === 'json') { + resolve(JSON.parse(chunksDecode(body, length))) + } else if (type === 'arrayBuffer') { + resolve(chunksConcat(body, length).buffer) + } else if (type === 'blob') { + resolve(new Blob(body, { type: stream[kContentType] })) + } else if (type === 'bytes') { + resolve(chunksConcat(body, length)) + } + + consumeFinish(consume) + } catch (err) { + stream.destroy(err) + } +} + +function consumePush (consume, chunk) { + consume.length += chunk.length + consume.body.push(chunk) +} + +function consumeFinish (consume, err) { + if (consume.body === null) { + return + } + + if (err) { + consume.reject(err) + } else { + consume.resolve() + } + + consume.type = null + consume.stream = null + consume.resolve = null + consume.reject = null + consume.length = 0 + consume.body = null +} + +module.exports = { Readable: BodyReadable, chunksDecode } diff --git a/deps/npm/node_modules/undici/lib/api/util.js b/deps/npm/node_modules/undici/lib/api/util.js new file mode 100644 index 00000000000000..2f983bf424c705 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/api/util.js @@ -0,0 +1,93 @@ +const assert = require('node:assert') +const { + ResponseStatusCodeError +} = require('../core/errors') + +const { chunksDecode } = require('./readable') +const CHUNK_LIMIT = 128 * 1024 + +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body) + + let chunks = [] + let length = 0 + + try { + for await (const chunk of body) { + chunks.push(chunk) + length += chunk.length + if (length > CHUNK_LIMIT) { + chunks = [] + length = 0 + break + } + } + } catch { + chunks = [] + length = 0 + // Do nothing.... + } + + const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}` + + if (statusCode === 204 || !contentType || !length) { + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers))) + return + } + + const stackTraceLimit = Error.stackTraceLimit + Error.stackTraceLimit = 0 + let payload + + try { + if (isContentTypeApplicationJson(contentType)) { + payload = JSON.parse(chunksDecode(chunks, length)) + } else if (isContentTypeText(contentType)) { + payload = chunksDecode(chunks, length) + } + } catch { + // process in a callback to avoid throwing in the microtask queue + } finally { + Error.stackTraceLimit = stackTraceLimit + } + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload))) +} + +const isContentTypeApplicationJson = (contentType) => { + return ( + contentType.length > 15 && + contentType[11] === '/' && + contentType[0] === 'a' && + contentType[1] === 'p' && + contentType[2] === 'p' && + contentType[3] === 'l' && + contentType[4] === 'i' && + contentType[5] === 'c' && + contentType[6] === 'a' && + contentType[7] === 't' && + contentType[8] === 'i' && + contentType[9] === 'o' && + contentType[10] === 'n' && + contentType[12] === 'j' && + contentType[13] === 's' && + contentType[14] === 'o' && + contentType[15] === 'n' + ) +} + +const isContentTypeText = (contentType) => { + return ( + contentType.length > 4 && + contentType[4] === '/' && + contentType[0] === 't' && + contentType[1] === 'e' && + contentType[2] === 'x' && + contentType[3] === 't' + ) +} + +module.exports = { + getResolveErrorBodyCallback, + isContentTypeApplicationJson, + isContentTypeText +} diff --git a/deps/npm/node_modules/undici/lib/core/connect.js b/deps/npm/node_modules/undici/lib/core/connect.js new file mode 100644 index 00000000000000..8cd8abccc545f7 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/connect.js @@ -0,0 +1,240 @@ +'use strict' + +const net = require('node:net') +const assert = require('node:assert') +const util = require('./util') +const { InvalidArgumentError, ConnectTimeoutError } = require('./errors') +const timers = require('../util/timers') + +function noop () {} + +let tls // include tls conditionally since it is not always available + +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. + +let SessionCache +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) { + SessionCache = class WeakSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return + } + + const ref = this._sessionCache.get(key) + if (ref !== undefined && ref.deref() === undefined) { + this._sessionCache.delete(key) + } + }) + } + + get (sessionKey) { + const ref = this._sessionCache.get(sessionKey) + return ref ? ref.deref() : null + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + this._sessionCache.set(sessionKey, new WeakRef(session)) + this._sessionRegistry.register(session, sessionKey) + } + } +} else { + SessionCache = class SimpleSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + } + + get (sessionKey) { + return this._sessionCache.get(sessionKey) + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + const { value: oldestKey } = this._sessionCache.keys().next() + this._sessionCache.delete(oldestKey) + } + + this._sessionCache.set(sessionKey, session) + } + } +} + +function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') + } + + const options = { path: socketPath, ...opts } + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) + timeout = timeout == null ? 10e3 : timeout + allowH2 = allowH2 != null ? allowH2 : false + return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket + if (protocol === 'https:') { + if (!tls) { + tls = require('node:tls') + } + servername = servername || options.servername || util.getServerName(host) || null + + const sessionKey = servername || hostname + assert(sessionKey) + + const session = customSession || sessionCache.get(sessionKey) || null + + port = port || 443 + + socket = tls.connect({ + highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, // upgrade socket connection + port, + host: hostname + }) + + socket + .on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session) + }) + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update') + + port = port || 80 + + socket = net.connect({ + highWaterMark: 64 * 1024, // Same as nodejs fs streams. + ...options, + localAddress, + port, + host: hostname + }) + } + + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay + socket.setKeepAlive(true, keepAliveInitialDelay) + } + + const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port }) + + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + queueMicrotask(clearConnectTimeout) + + if (callback) { + const cb = callback + callback = null + cb(null, this) + } + }) + .on('error', function (err) { + queueMicrotask(clearConnectTimeout) + + if (callback) { + const cb = callback + callback = null + cb(err) + } + }) + + return socket + } +} + +/** + * @param {WeakRef} socketWeakRef + * @param {object} opts + * @param {number} opts.timeout + * @param {string} opts.hostname + * @param {number} opts.port + * @returns {() => void} + */ +const setupConnectTimeout = process.platform === 'win32' + ? (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop + } + + let s1 = null + let s2 = null + const fastTimer = timers.setFastTimeout(() => { + // setImmediate is added to make sure that we prioritize socket error events over timeouts + s1 = setImmediate(() => { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts)) + }) + }, opts.timeout) + return () => { + timers.clearFastTimeout(fastTimer) + clearImmediate(s1) + clearImmediate(s2) + } + } + : (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop + } + + let s1 = null + const fastTimer = timers.setFastTimeout(() => { + // setImmediate is added to make sure that we prioritize socket error events over timeouts + s1 = setImmediate(() => { + onConnectTimeout(socketWeakRef.deref(), opts) + }) + }, opts.timeout) + return () => { + timers.clearFastTimeout(fastTimer) + clearImmediate(s1) + } + } + +/** + * @param {net.Socket} socket + * @param {object} opts + * @param {number} opts.timeout + * @param {string} opts.hostname + * @param {number} opts.port + */ +function onConnectTimeout (socket, opts) { + // The socket could be already garbage collected + if (socket == null) { + return + } + + let message = 'Connect Timeout Error' + if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) { + message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},` + } else { + message += ` (attempted address: ${opts.hostname}:${opts.port},` + } + + message += ` timeout: ${opts.timeout}ms)` + + util.destroy(socket, new ConnectTimeoutError(message)) +} + +module.exports = buildConnector diff --git a/deps/npm/node_modules/undici/lib/core/constants.js b/deps/npm/node_modules/undici/lib/core/constants.js new file mode 100644 index 00000000000000..6ec770dd533449 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/constants.js @@ -0,0 +1,118 @@ +'use strict' + +/** @type {Record} */ +const headerNameLowerCasedRecord = {} + +// https://developer.mozilla.org/docs/Web/HTTP/Headers +const wellknownHeaderNames = [ + 'Accept', + 'Accept-Encoding', + 'Accept-Language', + 'Accept-Ranges', + 'Access-Control-Allow-Credentials', + 'Access-Control-Allow-Headers', + 'Access-Control-Allow-Methods', + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Access-Control-Max-Age', + 'Access-Control-Request-Headers', + 'Access-Control-Request-Method', + 'Age', + 'Allow', + 'Alt-Svc', + 'Alt-Used', + 'Authorization', + 'Cache-Control', + 'Clear-Site-Data', + 'Connection', + 'Content-Disposition', + 'Content-Encoding', + 'Content-Language', + 'Content-Length', + 'Content-Location', + 'Content-Range', + 'Content-Security-Policy', + 'Content-Security-Policy-Report-Only', + 'Content-Type', + 'Cookie', + 'Cross-Origin-Embedder-Policy', + 'Cross-Origin-Opener-Policy', + 'Cross-Origin-Resource-Policy', + 'Date', + 'Device-Memory', + 'Downlink', + 'ECT', + 'ETag', + 'Expect', + 'Expect-CT', + 'Expires', + 'Forwarded', + 'From', + 'Host', + 'If-Match', + 'If-Modified-Since', + 'If-None-Match', + 'If-Range', + 'If-Unmodified-Since', + 'Keep-Alive', + 'Last-Modified', + 'Link', + 'Location', + 'Max-Forwards', + 'Origin', + 'Permissions-Policy', + 'Pragma', + 'Proxy-Authenticate', + 'Proxy-Authorization', + 'RTT', + 'Range', + 'Referer', + 'Referrer-Policy', + 'Refresh', + 'Retry-After', + 'Sec-WebSocket-Accept', + 'Sec-WebSocket-Extensions', + 'Sec-WebSocket-Key', + 'Sec-WebSocket-Protocol', + 'Sec-WebSocket-Version', + 'Server', + 'Server-Timing', + 'Service-Worker-Allowed', + 'Service-Worker-Navigation-Preload', + 'Set-Cookie', + 'SourceMap', + 'Strict-Transport-Security', + 'Supports-Loading-Mode', + 'TE', + 'Timing-Allow-Origin', + 'Trailer', + 'Transfer-Encoding', + 'Upgrade', + 'Upgrade-Insecure-Requests', + 'User-Agent', + 'Vary', + 'Via', + 'WWW-Authenticate', + 'X-Content-Type-Options', + 'X-DNS-Prefetch-Control', + 'X-Frame-Options', + 'X-Permitted-Cross-Domain-Policies', + 'X-Powered-By', + 'X-Requested-With', + 'X-XSS-Protection' +] + +for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i] + const lowerCasedKey = key.toLowerCase() + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = + lowerCasedKey +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(headerNameLowerCasedRecord, null) + +module.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord +} diff --git a/deps/npm/node_modules/undici/lib/core/diagnostics.js b/deps/npm/node_modules/undici/lib/core/diagnostics.js new file mode 100644 index 00000000000000..e1af3db611270e --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/diagnostics.js @@ -0,0 +1,202 @@ +'use strict' +const diagnosticsChannel = require('node:diagnostics_channel') +const util = require('node:util') + +const undiciDebugLog = util.debuglog('undici') +const fetchDebuglog = util.debuglog('fetch') +const websocketDebuglog = util.debuglog('websocket') +let isClientSet = false +const channels = { + // Client + beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'), + connected: diagnosticsChannel.channel('undici:client:connected'), + connectError: diagnosticsChannel.channel('undici:client:connectError'), + sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'), + // Request + create: diagnosticsChannel.channel('undici:request:create'), + bodySent: diagnosticsChannel.channel('undici:request:bodySent'), + headers: diagnosticsChannel.channel('undici:request:headers'), + trailers: diagnosticsChannel.channel('undici:request:trailers'), + error: diagnosticsChannel.channel('undici:request:error'), + // WebSocket + open: diagnosticsChannel.channel('undici:websocket:open'), + close: diagnosticsChannel.channel('undici:websocket:close'), + socketError: diagnosticsChannel.channel('undici:websocket:socket_error'), + ping: diagnosticsChannel.channel('undici:websocket:ping'), + pong: diagnosticsChannel.channel('undici:websocket:pong') +} + +if (undiciDebugLog.enabled || fetchDebuglog.enabled) { + const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog + + // Track all Client events + diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt + debuglog( + 'connecting to %s using %s%s', + `${host}${port ? `:${port}` : ''}`, + protocol, + version + ) + }) + + diagnosticsChannel.channel('undici:client:connected').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt + debuglog( + 'connected to %s using %s%s', + `${host}${port ? `:${port}` : ''}`, + protocol, + version + ) + }) + + diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => { + const { + connectParams: { version, protocol, port, host }, + error + } = evt + debuglog( + 'connection to %s using %s%s errored - %s', + `${host}${port ? `:${port}` : ''}`, + protocol, + version, + error.message + ) + }) + + diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => { + const { + request: { method, path, origin } + } = evt + debuglog('sending request to %s %s/%s', method, origin, path) + }) + + // Track Request events + diagnosticsChannel.channel('undici:request:headers').subscribe(evt => { + const { + request: { method, path, origin }, + response: { statusCode } + } = evt + debuglog( + 'received response to %s %s/%s - HTTP %d', + method, + origin, + path, + statusCode + ) + }) + + diagnosticsChannel.channel('undici:request:trailers').subscribe(evt => { + const { + request: { method, path, origin } + } = evt + debuglog('trailers received from %s %s/%s', method, origin, path) + }) + + diagnosticsChannel.channel('undici:request:error').subscribe(evt => { + const { + request: { method, path, origin }, + error + } = evt + debuglog( + 'request to %s %s/%s errored - %s', + method, + origin, + path, + error.message + ) + }) + + isClientSet = true +} + +if (websocketDebuglog.enabled) { + if (!isClientSet) { + const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog + diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt + debuglog( + 'connecting to %s%s using %s%s', + host, + port ? `:${port}` : '', + protocol, + version + ) + }) + + diagnosticsChannel.channel('undici:client:connected').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt + debuglog( + 'connected to %s%s using %s%s', + host, + port ? `:${port}` : '', + protocol, + version + ) + }) + + diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => { + const { + connectParams: { version, protocol, port, host }, + error + } = evt + debuglog( + 'connection to %s%s using %s%s errored - %s', + host, + port ? `:${port}` : '', + protocol, + version, + error.message + ) + }) + + diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => { + const { + request: { method, path, origin } + } = evt + debuglog('sending request to %s %s/%s', method, origin, path) + }) + } + + // Track all WebSocket events + diagnosticsChannel.channel('undici:websocket:open').subscribe(evt => { + const { + address: { address, port } + } = evt + websocketDebuglog('connection opened %s%s', address, port ? `:${port}` : '') + }) + + diagnosticsChannel.channel('undici:websocket:close').subscribe(evt => { + const { websocket, code, reason } = evt + websocketDebuglog( + 'closed connection to %s - %s %s', + websocket.url, + code, + reason + ) + }) + + diagnosticsChannel.channel('undici:websocket:socket_error').subscribe(err => { + websocketDebuglog('connection errored - %s', err.message) + }) + + diagnosticsChannel.channel('undici:websocket:ping').subscribe(evt => { + websocketDebuglog('ping received') + }) + + diagnosticsChannel.channel('undici:websocket:pong').subscribe(evt => { + websocketDebuglog('pong received') + }) +} + +module.exports = { + channels +} diff --git a/deps/npm/node_modules/undici/lib/core/errors.js b/deps/npm/node_modules/undici/lib/core/errors.js new file mode 100644 index 00000000000000..202880132dbb3f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/errors.js @@ -0,0 +1,425 @@ +'use strict' + +const kUndiciError = Symbol.for('undici.error.UND_ERR') +class UndiciError extends Error { + constructor (message) { + super(message) + this.name = 'UndiciError' + this.code = 'UND_ERR' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kUndiciError] === true + } + + [kUndiciError] = true +} + +const kConnectTimeoutError = Symbol.for('undici.error.UND_ERR_CONNECT_TIMEOUT') +class ConnectTimeoutError extends UndiciError { + constructor (message) { + super(message) + this.name = 'ConnectTimeoutError' + this.message = message || 'Connect Timeout Error' + this.code = 'UND_ERR_CONNECT_TIMEOUT' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kConnectTimeoutError] === true + } + + [kConnectTimeoutError] = true +} + +const kHeadersTimeoutError = Symbol.for('undici.error.UND_ERR_HEADERS_TIMEOUT') +class HeadersTimeoutError extends UndiciError { + constructor (message) { + super(message) + this.name = 'HeadersTimeoutError' + this.message = message || 'Headers Timeout Error' + this.code = 'UND_ERR_HEADERS_TIMEOUT' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kHeadersTimeoutError] === true + } + + [kHeadersTimeoutError] = true +} + +const kHeadersOverflowError = Symbol.for('undici.error.UND_ERR_HEADERS_OVERFLOW') +class HeadersOverflowError extends UndiciError { + constructor (message) { + super(message) + this.name = 'HeadersOverflowError' + this.message = message || 'Headers Overflow Error' + this.code = 'UND_ERR_HEADERS_OVERFLOW' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kHeadersOverflowError] === true + } + + [kHeadersOverflowError] = true +} + +const kBodyTimeoutError = Symbol.for('undici.error.UND_ERR_BODY_TIMEOUT') +class BodyTimeoutError extends UndiciError { + constructor (message) { + super(message) + this.name = 'BodyTimeoutError' + this.message = message || 'Body Timeout Error' + this.code = 'UND_ERR_BODY_TIMEOUT' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kBodyTimeoutError] === true + } + + [kBodyTimeoutError] = true +} + +const kResponseStatusCodeError = Symbol.for('undici.error.UND_ERR_RESPONSE_STATUS_CODE') +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kResponseStatusCodeError] === true + } + + [kResponseStatusCodeError] = true +} + +const kInvalidArgumentError = Symbol.for('undici.error.UND_ERR_INVALID_ARG') +class InvalidArgumentError extends UndiciError { + constructor (message) { + super(message) + this.name = 'InvalidArgumentError' + this.message = message || 'Invalid Argument Error' + this.code = 'UND_ERR_INVALID_ARG' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kInvalidArgumentError] === true + } + + [kInvalidArgumentError] = true +} + +const kInvalidReturnValueError = Symbol.for('undici.error.UND_ERR_INVALID_RETURN_VALUE') +class InvalidReturnValueError extends UndiciError { + constructor (message) { + super(message) + this.name = 'InvalidReturnValueError' + this.message = message || 'Invalid Return Value Error' + this.code = 'UND_ERR_INVALID_RETURN_VALUE' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kInvalidReturnValueError] === true + } + + [kInvalidReturnValueError] = true +} + +const kAbortError = Symbol.for('undici.error.UND_ERR_ABORT') +class AbortError extends UndiciError { + constructor (message) { + super(message) + this.name = 'AbortError' + this.message = message || 'The operation was aborted' + this.code = 'UND_ERR_ABORT' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kAbortError] === true + } + + [kAbortError] = true +} + +const kRequestAbortedError = Symbol.for('undici.error.UND_ERR_ABORTED') +class RequestAbortedError extends AbortError { + constructor (message) { + super(message) + this.name = 'AbortError' + this.message = message || 'Request aborted' + this.code = 'UND_ERR_ABORTED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kRequestAbortedError] === true + } + + [kRequestAbortedError] = true +} + +const kInformationalError = Symbol.for('undici.error.UND_ERR_INFO') +class InformationalError extends UndiciError { + constructor (message) { + super(message) + this.name = 'InformationalError' + this.message = message || 'Request information' + this.code = 'UND_ERR_INFO' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kInformationalError] === true + } + + [kInformationalError] = true +} + +const kRequestContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH') +class RequestContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + this.name = 'RequestContentLengthMismatchError' + this.message = message || 'Request body length does not match content-length header' + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kRequestContentLengthMismatchError] === true + } + + [kRequestContentLengthMismatchError] = true +} + +const kResponseContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH') +class ResponseContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + this.name = 'ResponseContentLengthMismatchError' + this.message = message || 'Response body length does not match content-length header' + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kResponseContentLengthMismatchError] === true + } + + [kResponseContentLengthMismatchError] = true +} + +const kClientDestroyedError = Symbol.for('undici.error.UND_ERR_DESTROYED') +class ClientDestroyedError extends UndiciError { + constructor (message) { + super(message) + this.name = 'ClientDestroyedError' + this.message = message || 'The client is destroyed' + this.code = 'UND_ERR_DESTROYED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kClientDestroyedError] === true + } + + [kClientDestroyedError] = true +} + +const kClientClosedError = Symbol.for('undici.error.UND_ERR_CLOSED') +class ClientClosedError extends UndiciError { + constructor (message) { + super(message) + this.name = 'ClientClosedError' + this.message = message || 'The client is closed' + this.code = 'UND_ERR_CLOSED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kClientClosedError] === true + } + + [kClientClosedError] = true +} + +const kSocketError = Symbol.for('undici.error.UND_ERR_SOCKET') +class SocketError extends UndiciError { + constructor (message, socket) { + super(message) + this.name = 'SocketError' + this.message = message || 'Socket error' + this.code = 'UND_ERR_SOCKET' + this.socket = socket + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kSocketError] === true + } + + [kSocketError] = true +} + +const kNotSupportedError = Symbol.for('undici.error.UND_ERR_NOT_SUPPORTED') +class NotSupportedError extends UndiciError { + constructor (message) { + super(message) + this.name = 'NotSupportedError' + this.message = message || 'Not supported error' + this.code = 'UND_ERR_NOT_SUPPORTED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kNotSupportedError] === true + } + + [kNotSupportedError] = true +} + +const kBalancedPoolMissingUpstreamError = Symbol.for('undici.error.UND_ERR_BPL_MISSING_UPSTREAM') +class BalancedPoolMissingUpstreamError extends UndiciError { + constructor (message) { + super(message) + this.name = 'MissingUpstreamError' + this.message = message || 'No upstream has been added to the BalancedPool' + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kBalancedPoolMissingUpstreamError] === true + } + + [kBalancedPoolMissingUpstreamError] = true +} + +const kHTTPParserError = Symbol.for('undici.error.UND_ERR_HTTP_PARSER') +class HTTPParserError extends Error { + constructor (message, code, data) { + super(message) + this.name = 'HTTPParserError' + this.code = code ? `HPE_${code}` : undefined + this.data = data ? data.toString() : undefined + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kHTTPParserError] === true + } + + [kHTTPParserError] = true +} + +const kResponseExceededMaxSizeError = Symbol.for('undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE') +class ResponseExceededMaxSizeError extends UndiciError { + constructor (message) { + super(message) + this.name = 'ResponseExceededMaxSizeError' + this.message = message || 'Response content exceeded max size' + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kResponseExceededMaxSizeError] === true + } + + [kResponseExceededMaxSizeError] = true +} + +const kRequestRetryError = Symbol.for('undici.error.UND_ERR_REQ_RETRY') +class RequestRetryError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + this.name = 'RequestRetryError' + this.message = message || 'Request retry error' + this.code = 'UND_ERR_REQ_RETRY' + this.statusCode = code + this.data = data + this.headers = headers + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kRequestRetryError] === true + } + + [kRequestRetryError] = true +} + +const kResponseError = Symbol.for('undici.error.UND_ERR_RESPONSE') +class ResponseError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + this.name = 'ResponseError' + this.message = message || 'Response error' + this.code = 'UND_ERR_RESPONSE' + this.statusCode = code + this.data = data + this.headers = headers + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kResponseError] === true + } + + [kResponseError] = true +} + +const kSecureProxyConnectionError = Symbol.for('undici.error.UND_ERR_PRX_TLS') +class SecureProxyConnectionError extends UndiciError { + constructor (cause, message, options) { + super(message, { cause, ...(options ?? {}) }) + this.name = 'SecureProxyConnectionError' + this.message = message || 'Secure Proxy Connection failed' + this.code = 'UND_ERR_PRX_TLS' + this.cause = cause + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kSecureProxyConnectionError] === true + } + + [kSecureProxyConnectionError] = true +} + +const kMessageSizeExceededError = Symbol.for('undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED') +class MessageSizeExceededError extends UndiciError { + constructor (message) { + super(message) + this.name = 'MessageSizeExceededError' + this.message = message || 'Max decompressed message size exceeded' + this.code = 'UND_ERR_WS_MESSAGE_SIZE_EXCEEDED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kMessageSizeExceededError] === true + } + + get [kMessageSizeExceededError] () { + return true + } +} + +module.exports = { + AbortError, + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError, + ResponseError, + SecureProxyConnectionError, + MessageSizeExceededError +} diff --git a/deps/npm/node_modules/undici/lib/core/request.js b/deps/npm/node_modules/undici/lib/core/request.js new file mode 100644 index 00000000000000..4da60667ec2902 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/request.js @@ -0,0 +1,405 @@ +'use strict' + +const { + InvalidArgumentError, + NotSupportedError +} = require('./errors') +const assert = require('node:assert') +const { + isValidHTTPToken, + isValidHeaderValue, + isStream, + destroy, + isBuffer, + isFormDataLike, + isIterable, + isBlobLike, + buildURL, + validateHandler, + getServerName, + normalizedMethodRecords +} = require('./util') +const { channels } = require('./diagnostics.js') +const { headerNameLowerCasedRecord } = require('./constants') + +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ + +const kHandler = Symbol('handler') + +class Request { + constructor (origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue, + servername + }, handler) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string') + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.test(path)) { + throw new InvalidArgumentError('invalid request path') + } + + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string') + } else if (normalizedMethodRecords[method] === undefined && !isValidHTTPToken(method)) { + throw new InvalidArgumentError('invalid request method') + } + + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string') + } + + if (upgrade && !isValidHeaderValue(upgrade)) { + throw new InvalidArgumentError('invalid upgrade header') + } + + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout') + } + + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout') + } + + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset') + } + + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue') + } + + this.headersTimeout = headersTimeout + + this.bodyTimeout = bodyTimeout + + this.throwOnError = throwOnError === true + + this.method = method + + this.abort = null + + if (body == null) { + this.body = null + } else if (isStream(body)) { + this.body = body + + const rState = this.body._readableState + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy () { + destroy(this) + } + this.body.on('end', this.endHandler) + } + + this.errorHandler = err => { + if (this.abort) { + this.abort(err) + } else { + this.error = err + } + } + this.body.on('error', this.errorHandler) + } else if (isBuffer(body)) { + this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null + } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) { + this.body = body + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') + } + + this.completed = false + + this.aborted = false + + this.upgrade = upgrade || null + + this.path = query ? buildURL(path, query) : path + + this.origin = origin + + this.idempotent = idempotent == null + ? method === 'HEAD' || method === 'GET' + : idempotent + + this.blocking = blocking == null ? false : blocking + + this.reset = reset == null ? null : reset + + this.host = null + + this.contentLength = null + + this.contentType = null + + this.headers = [] + + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]) + } + } else if (headers && typeof headers === 'object') { + if (headers[Symbol.iterator]) { + for (const header of headers) { + if (!Array.isArray(header) || header.length !== 2) { + throw new InvalidArgumentError('headers must be in key-value pair format') + } + processHeader(this, header[0], header[1]) + } + } else { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; ++i) { + processHeader(this, keys[i], headers[keys[i]]) + } + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + validateHandler(handler, method, upgrade) + + this.servername = servername || getServerName(this.host) + + this[kHandler] = handler + + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }) + } + } + + onBodySent (chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk) + } catch (err) { + this.abort(err) + } + } + } + + onRequestSent () { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }) + } + + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent() + } catch (err) { + this.abort(err) + } + } + } + + onConnect (abort) { + assert(!this.aborted) + assert(!this.completed) + + if (this.error) { + abort(this.error) + } else { + this.abort = abort + return this[kHandler].onConnect(abort) + } + } + + onResponseStarted () { + return this[kHandler].onResponseStarted?.() + } + + onHeaders (statusCode, headers, resume, statusText) { + assert(!this.aborted) + assert(!this.completed) + + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) + } + + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText) + } catch (err) { + this.abort(err) + } + } + + onData (chunk) { + assert(!this.aborted) + assert(!this.completed) + + try { + return this[kHandler].onData(chunk) + } catch (err) { + this.abort(err) + return false + } + } + + onUpgrade (statusCode, headers, socket) { + assert(!this.aborted) + assert(!this.completed) + + return this[kHandler].onUpgrade(statusCode, headers, socket) + } + + onComplete (trailers) { + this.onFinally() + + assert(!this.aborted) + + this.completed = true + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }) + } + + try { + return this[kHandler].onComplete(trailers) + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err) + } + } + + onError (error) { + this.onFinally() + + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }) + } + + if (this.aborted) { + return + } + this.aborted = true + + return this[kHandler].onError(error) + } + + onFinally () { + if (this.errorHandler) { + this.body.off('error', this.errorHandler) + this.errorHandler = null + } + + if (this.endHandler) { + this.body.off('end', this.endHandler) + this.endHandler = null + } + } + + addHeader (key, value) { + processHeader(this, key, value) + return this + } +} + +function processHeader (request, key, val) { + if (val && (typeof val === 'object' && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`) + } else if (val === undefined) { + return + } + + let headerName = headerNameLowerCasedRecord[key] + + if (headerName === undefined) { + headerName = key.toLowerCase() + if (headerNameLowerCasedRecord[headerName] === undefined && !isValidHTTPToken(headerName)) { + throw new InvalidArgumentError('invalid header key') + } + } + + if (Array.isArray(val)) { + const arr = [] + for (let i = 0; i < val.length; i++) { + if (typeof val[i] === 'string') { + if (!isValidHeaderValue(val[i])) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + arr.push(val[i]) + } else if (val[i] === null) { + arr.push('') + } else if (typeof val[i] === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`) + } else { + arr.push(`${val[i]}`) + } + } + val = arr + } else if (typeof val === 'string') { + if (!isValidHeaderValue(val)) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + } else if (val === null) { + val = '' + } else { + val = `${val}` + } + + if (headerName === 'host') { + if (request.host !== null) { + throw new InvalidArgumentError('duplicate host header') + } + if (typeof val !== 'string') { + throw new InvalidArgumentError('invalid host header') + } + // Consumed by Client + request.host = val + } else if (headerName === 'content-length') { + if (request.contentLength !== null) { + throw new InvalidArgumentError('duplicate content-length header') + } + request.contentLength = parseInt(val, 10) + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header') + } + } else if (request.contentType === null && headerName === 'content-type') { + request.contentType = val + request.headers.push(key, val) + } else if (headerName === 'transfer-encoding' || headerName === 'keep-alive' || headerName === 'upgrade') { + throw new InvalidArgumentError(`invalid ${headerName} header`) + } else if (headerName === 'connection') { + const value = typeof val === 'string' ? val.toLowerCase() : null + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header') + } + + if (value === 'close') { + request.reset = true + } + } else if (headerName === 'expect') { + throw new NotSupportedError('expect header not supported') + } else { + request.headers.push(key, val) + } +} + +module.exports = Request diff --git a/deps/npm/node_modules/undici/lib/core/symbols.js b/deps/npm/node_modules/undici/lib/core/symbols.js new file mode 100644 index 00000000000000..c8ba5dd8ec5964 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/symbols.js @@ -0,0 +1,67 @@ +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kBody: Symbol('abstracted request body'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol.for('nodejs.stream.destroyed'), + kResume: Symbol('resume'), + kOnError: Symbol('on error'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable'), + kListeners: Symbol('listeners'), + kHTTPContext: Symbol('http context'), + kMaxConcurrentStreams: Symbol('max concurrent streams'), + kNoProxyAgent: Symbol('no proxy agent'), + kHttpProxyAgent: Symbol('http proxy agent'), + kHttpsProxyAgent: Symbol('https proxy agent') +} diff --git a/deps/npm/node_modules/undici/lib/core/tree.js b/deps/npm/node_modules/undici/lib/core/tree.js new file mode 100644 index 00000000000000..17dfca4cc4e384 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/tree.js @@ -0,0 +1,152 @@ +'use strict' + +const { + wellknownHeaderNames, + headerNameLowerCasedRecord +} = require('./constants') + +class TstNode { + /** @type {any} */ + value = null + /** @type {null | TstNode} */ + left = null + /** @type {null | TstNode} */ + middle = null + /** @type {null | TstNode} */ + right = null + /** @type {number} */ + code + /** + * @param {string} key + * @param {any} value + * @param {number} index + */ + constructor (key, value, index) { + if (index === undefined || index >= key.length) { + throw new TypeError('Unreachable') + } + const code = this.code = key.charCodeAt(index) + // check code is ascii string + if (code > 0x7F) { + throw new TypeError('key must be ascii string') + } + if (key.length !== ++index) { + this.middle = new TstNode(key, value, index) + } else { + this.value = value + } + } + + /** + * @param {string} key + * @param {any} value + */ + add (key, value) { + const length = key.length + if (length === 0) { + throw new TypeError('Unreachable') + } + let index = 0 + let node = this + while (true) { + const code = key.charCodeAt(index) + // check code is ascii string + if (code > 0x7F) { + throw new TypeError('key must be ascii string') + } + if (node.code === code) { + if (length === ++index) { + node.value = value + break + } else if (node.middle !== null) { + node = node.middle + } else { + node.middle = new TstNode(key, value, index) + break + } + } else if (node.code < code) { + if (node.left !== null) { + node = node.left + } else { + node.left = new TstNode(key, value, index) + break + } + } else if (node.right !== null) { + node = node.right + } else { + node.right = new TstNode(key, value, index) + break + } + } + } + + /** + * @param {Uint8Array} key + * @return {TstNode | null} + */ + search (key) { + const keylength = key.length + let index = 0 + let node = this + while (node !== null && index < keylength) { + let code = key[index] + // A-Z + // First check if it is bigger than 0x5a. + // Lowercase letters have higher char codes than uppercase ones. + // Also we assume that headers will mostly contain lowercase characters. + if (code <= 0x5a && code >= 0x41) { + // Lowercase for uppercase. + code |= 32 + } + while (node !== null) { + if (code === node.code) { + if (keylength === ++index) { + // Returns Node since it is the last key. + return node + } + node = node.middle + break + } + node = node.code < code ? node.left : node.right + } + } + return null + } +} + +class TernarySearchTree { + /** @type {TstNode | null} */ + node = null + + /** + * @param {string} key + * @param {any} value + * */ + insert (key, value) { + if (this.node === null) { + this.node = new TstNode(key, value, 0) + } else { + this.node.add(key, value) + } + } + + /** + * @param {Uint8Array} key + * @return {any} + */ + lookup (key) { + return this.node?.search(key)?.value ?? null + } +} + +const tree = new TernarySearchTree() + +for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]] + tree.insert(key, key) +} + +module.exports = { + TernarySearchTree, + tree +} diff --git a/deps/npm/node_modules/undici/lib/core/util.js b/deps/npm/node_modules/undici/lib/core/util.js new file mode 100644 index 00000000000000..9ee7ec23c52241 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/core/util.js @@ -0,0 +1,719 @@ +'use strict' + +const assert = require('node:assert') +const { kDestroyed, kBodyUsed, kListeners, kBody } = require('./symbols') +const { IncomingMessage } = require('node:http') +const stream = require('node:stream') +const net = require('node:net') +const { Blob } = require('node:buffer') +const nodeUtil = require('node:util') +const { stringify } = require('node:querystring') +const { EventEmitter: EE } = require('node:events') +const { InvalidArgumentError } = require('./errors') +const { headerNameLowerCasedRecord } = require('./constants') +const { tree } = require('./tree') + +const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) + +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false + } + + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} + +function wrapRequestBody (body) { + if (isStream(body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (bodyLength(body) === 0) { + body + .on('data', function () { + assert(false) + }) + } + + if (typeof body.readableDidRead !== 'boolean') { + body[kBodyUsed] = false + EE.prototype.on.call(body, 'data', function () { + this[kBodyUsed] = true + }) + } + + return body + } else if (body && typeof body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + return new BodyAsyncIterable(body) + } else if ( + body && + typeof body !== 'string' && + !ArrayBuffer.isView(body) && + isIterable(body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + return new BodyAsyncIterable(body) + } else { + return body + } +} + +function nop () {} + +function isStream (obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' +} + +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike (object) { + if (object === null) { + return false + } else if (object instanceof Blob) { + return true + } else if (typeof object !== 'object') { + return false + } else { + const sTag = object[Symbol.toStringTag] + + return (sTag === 'Blob' || sTag === 'File') && ( + ('stream' in object && typeof object.stream === 'function') || + ('arrayBuffer' in object && typeof object.arrayBuffer === 'function') + ) + } +} + +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + + const stringified = stringify(queryParams) + + if (stringified) { + url += '?' + stringified + } + + return url +} + +function isValidPort (port) { + const value = parseInt(port, 10) + return ( + value === Number(port) && + value >= 0 && + value <= 65535 + ) +} + +function isHttpOrHttpsPrefixed (value) { + return ( + value != null && + value[0] === 'h' && + value[1] === 't' && + value[2] === 't' && + value[3] === 'p' && + ( + value[4] === ':' || + ( + value[4] === 's' && + value[5] === ':' + ) + ) + ) +} + +function parseURL (url) { + if (typeof url === 'string') { + url = new URL(url) + + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + return url + } + + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') + } + + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && isValidPort(url.port) === false) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') + } + + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') + } + + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') + } + + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') + } + + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') + } + + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + const port = url.port != null + ? url.port + : (url.protocol === 'https:' ? 443 : 80) + let origin = url.origin != null + ? url.origin + : `${url.protocol || ''}//${url.hostname || ''}:${port}` + let path = url.path != null + ? url.path + : `${url.pathname || ''}${url.search || ''}` + + if (origin[origin.length - 1] === '/') { + origin = origin.slice(0, origin.length - 1) + } + + if (path && path[0] !== '/') { + path = `/${path}` + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + return new URL(`${origin}${path}`) + } + + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + return url +} + +function parseOrigin (url) { + url = parseURL(url) + + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url') + } + + return url +} + +function getHostname (host) { + if (host[0] === '[') { + const idx = host.indexOf(']') + + assert(idx !== -1) + return host.substring(1, idx) + } + + const idx = host.indexOf(':') + if (idx === -1) return host + + return host.substring(0, idx) +} + +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName (host) { + if (!host) { + return null + } + + assert(typeof host === 'string') + + const servername = getHostname(host) + if (net.isIP(servername)) { + return '' + } + + return servername +} + +function deepClone (obj) { + return JSON.parse(JSON.stringify(obj)) +} + +function isAsyncIterable (obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') +} + +function isIterable (obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +} + +function bodyLength (body) { + if (body == null) { + return 0 + } else if (isStream(body)) { + const state = body._readableState + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) + ? state.length + : null + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null + } else if (isBuffer(body)) { + return body.byteLength + } + + return null +} + +function isDestroyed (body) { + return body && !!(body.destroyed || body[kDestroyed] || (stream.isDestroyed?.(body))) +} + +function destroy (stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return + } + + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null + } + + stream.destroy(err) + } else if (err) { + queueMicrotask(() => { + stream.emit('error', err) + }) + } + + if (stream.destroyed !== true) { + stream[kDestroyed] = true + } +} + +const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ +function parseKeepAliveTimeout (val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) + return m ? parseInt(m[1], 10) * 1000 : null +} + +/** + * Retrieves a header name and returns its lowercase value. + * @param {string | Buffer} value Header name + * @returns {string} + */ +function headerNameToString (value) { + return typeof value === 'string' + ? headerNameLowerCasedRecord[value] ?? value.toLowerCase() + : tree.lookup(value) ?? value.toString('latin1').toLowerCase() +} + +/** + * Receive the buffer as a string and return its lowercase value. + * @param {Buffer} value Header name + * @returns {string} + */ +function bufferToLowerCasedHeaderName (value) { + return tree.lookup(value) ?? value.toString('latin1').toLowerCase() +} + +/** + * @param {Record | (Buffer | string | (Buffer | string)[])[]} headers + * @param {Record} [obj] + * @returns {Record} + */ +function parseHeaders (headers, obj) { + if (obj === undefined) obj = {} + for (let i = 0; i < headers.length; i += 2) { + const key = headerNameToString(headers[i]) + let val = obj[key] + + if (val) { + if (typeof val === 'string') { + val = [val] + obj[key] = val + } + val.push(headers[i + 1].toString('utf8')) + } else { + const headersValue = headers[i + 1] + if (typeof headersValue === 'string') { + obj[key] = headersValue + } else { + obj[key] = Array.isArray(headersValue) ? headersValue.map(x => x.toString('utf8')) : headersValue.toString('utf8') + } + } + } + + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') + } + + return obj +} + +function parseRawHeaders (headers) { + const len = headers.length + const ret = new Array(len) + + let hasContentLength = false + let contentDispositionIdx = -1 + let key + let val + let kLen = 0 + + for (let n = 0; n < headers.length; n += 2) { + key = headers[n] + val = headers[n + 1] + + typeof key !== 'string' && (key = key.toString()) + typeof val !== 'string' && (val = val.toString('utf8')) + + kLen = key.length + if (kLen === 14 && key[7] === '-' && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + hasContentLength = true + } else if (kLen === 19 && key[7] === '-' && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = n + 1 + } + ret[n] = key + ret[n + 1] = val + } + + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') + } + + return ret +} + +function isBuffer (buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +} + +function validateHandler (handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method') + } + + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method') + } + + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method') + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method') + } + + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method') + } + + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method') + } + } +} + +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed (body) { + // TODO (fix): Why is body[kBodyUsed] needed? + return !!(body && (stream.isDisturbed(body) || body[kBodyUsed])) +} + +function isErrored (body) { + return !!(body && stream.isErrored(body)) +} + +function isReadable (body) { + return !!(body && stream.isReadable(body)) +} + +function getSocketInfo (socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + } +} + +/** @type {globalThis['ReadableStream']} */ +function ReadableStreamFrom (iterable) { + // We cannot use ReadableStream.from here because it does not return a byte stream. + + let iterator + return new ReadableStream( + { + async start () { + iterator = iterable[Symbol.asyncIterator]() + }, + async pull (controller) { + const { done, value } = await iterator.next() + if (done) { + queueMicrotask(() => { + controller.close() + controller.byobRequest?.respond(0) + }) + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) + if (buf.byteLength) { + controller.enqueue(new Uint8Array(buf)) + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: 'bytes' + } + ) +} + +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike (object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ) +} + +function addAbortListener (signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }) + return () => signal.removeEventListener('abort', listener) + } + signal.addListener('abort', listener) + return () => signal.removeListener('abort', listener) +} + +const hasToWellFormed = typeof String.prototype.toWellFormed === 'function' +const hasIsWellFormed = typeof String.prototype.isWellFormed === 'function' + +/** + * @param {string} val + */ +function toUSVString (val) { + return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val) +} + +/** + * @param {string} val + */ +// TODO: move this to webidl +function isUSVString (val) { + return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}` +} + +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode (c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e + } +} + +/** + * @param {string} characters + */ +function isValidHTTPToken (characters) { + if (characters.length === 0) { + return false + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false + } + } + return true +} + +// headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js + +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ + +/** + * @param {string} characters + */ +function isValidHeaderValue (characters) { + return !headerCharRegex.test(characters) +} + +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader (range) { + if (range == null || range === '') return { start: 0, end: null, size: null } + + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null +} + +function addListener (obj, name, listener) { + const listeners = (obj[kListeners] ??= []) + listeners.push([name, listener]) + obj.on(name, listener) + return obj +} + +function removeAllListeners (obj) { + for (const [name, listener] of obj[kListeners] ?? []) { + obj.removeListener(name, listener) + } + obj[kListeners] = null +} + +function errorRequest (client, request, err) { + try { + request.onError(err) + assert(request.aborted) + } catch (err) { + client.emit('error', err) + } +} + +const kEnumerableProperty = Object.create(null) +kEnumerableProperty.enumerable = true + +const normalizedMethodRecordsBase = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +} + +const normalizedMethodRecords = { + ...normalizedMethodRecordsBase, + patch: 'patch', + PATCH: 'PATCH' +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizedMethodRecordsBase, null) +Object.setPrototypeOf(normalizedMethodRecords, null) + +module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isUSVString, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + bufferToLowerCasedHeaderName, + addListener, + removeAllListeners, + errorRequest, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + addAbortListener, + isValidHTTPToken, + isValidHeaderValue, + isTokenCharCode, + parseRangeHeader, + normalizedMethodRecordsBase, + normalizedMethodRecords, + isValidPort, + isHttpOrHttpsPrefixed, + nodeMajor, + nodeMinor, + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'], + wrapRequestBody +} diff --git a/deps/npm/node_modules/undici/lib/dispatcher/agent.js b/deps/npm/node_modules/undici/lib/dispatcher/agent.js new file mode 100644 index 00000000000000..db2f817d0fe978 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/agent.js @@ -0,0 +1,130 @@ +'use strict' + +const { InvalidArgumentError } = require('../core/errors') +const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('../core/symbols') +const DispatcherBase = require('./dispatcher-base') +const Pool = require('./pool') +const Client = require('./client') +const util = require('../core/util') +const createRedirectInterceptor = require('../interceptor/redirect-interceptor') + +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kMaxRedirections = Symbol('maxRedirections') +const kOnDrain = Symbol('onDrain') +const kFactory = Symbol('factory') +const kOptions = Symbol('options') + +function defaultFactory (origin, opts) { + return opts && opts.connections === 1 + ? new Client(origin, opts) + : new Pool(origin, opts) +} + +class Agent extends DispatcherBase { + constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + super(options) + + if (connect && typeof connect !== 'function') { + connect = { ...connect } + } + + this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })] + + this[kOptions] = { ...util.deepClone(options), connect } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kMaxRedirections] = maxRedirections + this[kFactory] = factory + this[kClients] = new Map() + + this[kOnDrain] = (origin, targets) => { + this.emit('drain', origin, [this, ...targets]) + } + + this[kOnConnect] = (origin, targets) => { + this.emit('connect', origin, [this, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + this.emit('disconnect', origin, [this, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + this.emit('connectionError', origin, [this, ...targets], err) + } + } + + get [kRunning] () { + let ret = 0 + for (const client of this[kClients].values()) { + ret += client[kRunning] + } + return ret + } + + [kDispatch] (opts, handler) { + let key + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin) + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') + } + + let dispatcher = this[kClients].get(key) + + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + // This introduces a tiny memory leak, as dispatchers are never removed from the map. + // TODO(mcollina): remove te timer when the client/pool do not have any more + // active connections. + this[kClients].set(key, dispatcher) + } + + return dispatcher.dispatch(opts, handler) + } + + async [kClose] () { + const closePromises = [] + for (const client of this[kClients].values()) { + closePromises.push(client.close()) + } + this[kClients].clear() + + await Promise.all(closePromises) + } + + async [kDestroy] (err) { + const destroyPromises = [] + for (const client of this[kClients].values()) { + destroyPromises.push(client.destroy(err)) + } + this[kClients].clear() + + await Promise.all(destroyPromises) + } +} + +module.exports = Agent diff --git a/deps/npm/node_modules/undici/lib/dispatcher/balanced-pool.js b/deps/npm/node_modules/undici/lib/dispatcher/balanced-pool.js new file mode 100644 index 00000000000000..1e2de289cb73fa --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/balanced-pool.js @@ -0,0 +1,209 @@ +'use strict' + +const { + BalancedPoolMissingUpstreamError, + InvalidArgumentError +} = require('../core/errors') +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} = require('./pool-base') +const Pool = require('./pool') +const { kUrl, kInterceptors } = require('../core/symbols') +const { parseOrigin } = require('../core/util') +const kFactory = Symbol('factory') + +const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +/** + * Calculate the greatest common divisor of two numbers by + * using the Euclidean algorithm. + * + * @param {number} a + * @param {number} b + * @returns {number} + */ +function getGreatestCommonDivisor (a, b) { + if (a === 0) return b + + while (b !== 0) { + const t = b + b = a % b + a = t + } + return a +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class BalancedPool extends PoolBase { + constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super() + + this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 + + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 + + if (!Array.isArray(upstreams)) { + upstreams = [upstreams] + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + this[kInterceptors] = opts.interceptors?.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : [] + this[kFactory] = factory + + for (const upstream of upstreams) { + this.addUpstream(upstream) + } + this._updateBalancedPoolStats() + } + + addUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + if (this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + ))) { + return this + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) + + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) + + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) + + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) + + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] + } + + this._updateBalancedPoolStats() + + return this + } + + _updateBalancedPoolStats () { + let result = 0 + for (let i = 0; i < this[kClients].length; i++) { + result = getGreatestCommonDivisor(this[kClients][i][kWeight], result) + } + + this[kGreatestCommonDivisor] = result + } + + removeUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + const pool = this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + )) + + if (pool) { + this[kRemoveClient](pool) + } + + return this + } + + get upstreams () { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map((p) => p[kUrl].origin) + } + + [kGetDispatcher] () { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError() + } + + const dispatcher = this[kClients].find(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + + if (!dispatcher) { + return + } + + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) + + if (allClientsBusy) { + return + } + + let counter = 0 + + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) + + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] + + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } + + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] + + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } + } + + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] + } +} + +module.exports = BalancedPool diff --git a/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js b/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js new file mode 100644 index 00000000000000..2b8fa05da29427 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js @@ -0,0 +1,1370 @@ +'use strict' + +/* global WebAssembly */ + +const assert = require('node:assert') +const util = require('../core/util.js') +const { channels } = require('../core/diagnostics.js') +const timers = require('../util/timers.js') +const { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError +} = require('../core/errors.js') +const { + kUrl, + kReset, + kClient, + kParser, + kBlocking, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kMaxRequests, + kCounter, + kMaxResponseSize, + kOnError, + kResume, + kHTTPContext +} = require('../core/symbols.js') + +const constants = require('../llhttp/constants.js') +const EMPTY_BUF = Buffer.alloc(0) +const FastBuffer = Buffer[Symbol.species] +const addListener = util.addListener +const removeAllListeners = util.removeAllListeners + +let extractBody + +async function lazyllhttp () { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require('../llhttp/llhttp-wasm.js') : undefined + + let mod + try { + mod = await WebAssembly.compile(require('../llhttp/llhttp_simd-wasm.js')) + } catch (e) { + /* istanbul ignore next */ + + // We could check if the error was caused by the simd option not + // being enabled, but the occurring of this other error + // * https://github.com/emscripten-core/emscripten/issues/11495 + // got me to remove that check to avoid breaking Node 12. + mod = await WebAssembly.compile(llhttpWasmData || require('../llhttp/llhttp-wasm.js')) + } + + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + + wasm_on_url: (p, at, len) => { + /* istanbul ignore next */ + return 0 + }, + wasm_on_status: (p, at, len) => { + assert(currentParser.ptr === p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_begin: (p) => { + assert(currentParser.ptr === p) + return currentParser.onMessageBegin() || 0 + }, + wasm_on_header_field: (p, at, len) => { + assert(currentParser.ptr === p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_header_value: (p, at, len) => { + assert(currentParser.ptr === p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert(currentParser.ptr === p) + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 + }, + wasm_on_body: (p, at, len) => { + assert(currentParser.ptr === p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_complete: (p) => { + assert(currentParser.ptr === p) + return currentParser.onMessageComplete() || 0 + } + + /* eslint-enable camelcase */ + } + }) +} + +let llhttpInstance = null +let llhttpPromise = lazyllhttp() +llhttpPromise.catch() + +let currentParser = null +let currentBufferRef = null +let currentBufferSize = 0 +let currentBufferPtr = null + +const USE_NATIVE_TIMER = 0 +const USE_FAST_TIMER = 1 + +// Use fast timers for headers and body to take eventual event loop +// latency into account. +const TIMEOUT_HEADERS = 2 | USE_FAST_TIMER +const TIMEOUT_BODY = 4 | USE_FAST_TIMER + +// Use native timers to ignore event loop latency for keep-alive +// handling. +const TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER + +class Parser { + constructor (client, socket, { exports }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) + + this.llhttp = exports + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) + this.client = client + this.socket = socket + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.statusCode = null + this.statusText = '' + this.upgrade = false + this.headers = [] + this.headersSize = 0 + this.headersMaxSize = client[kMaxHeadersSize] + this.shouldKeepAlive = false + this.paused = false + this.resume = this.resume.bind(this) + + this.bytesRead = 0 + + this.keepAlive = '' + this.contentLength = '' + this.connection = '' + this.maxResponseSize = client[kMaxResponseSize] + } + + setTimeout (delay, type) { + // If the existing timer and the new timer are of different timer type + // (fast or native) or have different delay, we need to clear the existing + // timer and set a new one. + if ( + delay !== this.timeoutValue || + (type & USE_FAST_TIMER) ^ (this.timeoutType & USE_FAST_TIMER) + ) { + // If a timeout is already set, clear it with clearTimeout of the fast + // timer implementation, as it can clear fast and native timers. + if (this.timeout) { + timers.clearTimeout(this.timeout) + this.timeout = null + } + + if (delay) { + if (type & USE_FAST_TIMER) { + this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this)) + } else { + this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this)) + this.timeout.unref() + } + } + + this.timeoutValue = delay + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + this.timeoutType = type + } + + resume () { + if (this.socket.destroyed || !this.paused) { + return + } + + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_resume(this.ptr) + + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + this.paused = false + this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. + this.readMore() + } + + readMore () { + while (!this.paused && this.ptr) { + const chunk = this.socket.read() + if (chunk === null) { + break + } + this.execute(chunk) + } + } + + execute (data) { + assert(this.ptr != null) + assert(currentParser == null) + assert(!this.paused) + + const { socket, llhttp } = this + + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr) + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096 + currentBufferPtr = llhttp.malloc(currentBufferSize) + } + + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) + + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + let ret + + try { + currentBufferRef = data + currentParser = this + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err + } finally { + currentParser = null + currentBufferRef = null + } + + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr + + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)) + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true + socket.unshift(data.slice(offset)) + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr) + let message = '' + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) + message = + 'Response does not match the HTTP/1.1 protocol (' + + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + + ')' + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) + } + } catch (err) { + util.destroy(socket, err) + } + } + + destroy () { + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_free(this.ptr) + this.ptr = null + + this.timeout && timers.clearTimeout(this.timeout) + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + + this.paused = false + } + + onStatus (buf) { + this.statusText = buf.toString() + } + + onMessageBegin () { + const { socket, client } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + if (!request) { + return -1 + } + request.onResponseStarted() + } + + onHeaderField (buf) { + const len = this.headers.length + + if ((len & 1) === 0) { + this.headers.push(buf) + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + this.trackHeader(buf.length) + } + + onHeaderValue (buf) { + let len = this.headers.length + + if ((len & 1) === 1) { + this.headers.push(buf) + len += 1 + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + const key = this.headers[len - 2] + if (key.length === 10) { + const headerName = util.bufferToLowerCasedHeaderName(key) + if (headerName === 'keep-alive') { + this.keepAlive += buf.toString() + } else if (headerName === 'connection') { + this.connection += buf.toString() + } + } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') { + this.contentLength += buf.toString() + } + + this.trackHeader(buf.length) + } + + trackHeader (len) { + this.headersSize += len + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()) + } + } + + onUpgrade (head) { + const { upgrade, client, socket, headers, statusCode } = this + + assert(upgrade) + assert(client[kSocket] === socket) + assert(!socket.destroyed) + assert(!this.paused) + assert((headers.length & 1) === 0) + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + assert(request.upgrade || request.method === 'CONNECT') + + this.statusCode = null + this.statusText = '' + this.shouldKeepAlive = null + + this.headers = [] + this.headersSize = 0 + + socket.unshift(head) + + socket[kParser].destroy() + socket[kParser] = null + + socket[kClient] = null + socket[kError] = null + + removeAllListeners(socket) + + client[kSocket] = null + client[kHTTPContext] = null // TODO (fix): This is hacky... + client[kQueue][client[kRunningIdx]++] = null + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) + + try { + request.onUpgrade(statusCode, headers, socket) + } catch (err) { + util.destroy(socket, err) + } + + client[kResume]() + } + + onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1 + } + + assert(!this.upgrade) + assert(this.statusCode < 200) + + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) + return -1 + } + + assert(this.timeoutType === TIMEOUT_HEADERS) + + this.statusCode = statusCode + this.shouldKeepAlive = ( + shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') + ) + + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null + ? request.bodyTimeout + : client[kBodyTimeout] + this.setTimeout(bodyTimeout, TIMEOUT_BODY) + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + if (upgrade) { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + assert((this.headers.length & 1) === 0) + this.headers = [] + this.headersSize = 0 + + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null + + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ) + if (timeout <= 0) { + socket[kReset] = true + } else { + client[kKeepAliveTimeoutValue] = timeout + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] + } + } else { + // Stop more requests from being dispatched. + socket[kReset] = true + } + + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false + + if (request.aborted) { + return -1 + } + + if (request.method === 'HEAD') { + return 1 + } + + if (statusCode < 200) { + return 1 + } + + if (socket[kBlocking]) { + socket[kBlocking] = false + client[kResume]() + } + + return pause ? constants.ERROR.PAUSED : 0 + } + + onBody (buf) { + const { client, socket, statusCode, maxResponseSize } = this + + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + assert(statusCode >= 200) + + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()) + return -1 + } + + this.bytesRead += buf.length + + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED + } + } + + onMessageComplete () { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this + + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1 + } + + if (upgrade) { + return + } + + assert(statusCode >= 100) + assert((this.headers.length & 1) === 0) + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + this.statusCode = null + this.statusText = '' + this.bytesRead = 0 + this.contentLength = '' + this.keepAlive = '' + this.connection = '' + + this.headers = [] + this.headersSize = 0 + + if (statusCode < 200) { + return + } + + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()) + return -1 + } + + request.onComplete(headers) + + client[kQueue][client[kRunningIdx]++] = null + + if (socket[kWriting]) { + assert(client[kRunning] === 0) + // Response completed before request. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (client[kPipelining] == null || client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(() => client[kResume]()) + } else { + client[kResume]() + } + } +} + +function onParserTimeout (parser) { + const { socket, timeoutType, client, paused } = parser.deref() + + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!paused) { + util.destroy(socket, new BodyTimeoutError()) + } + } else if (timeoutType === TIMEOUT_KEEP_ALIVE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) + util.destroy(socket, new InformationalError('socket idle timeout')) + } +} + +async function connectH1 (client, socket) { + client[kSocket] = socket + + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise + llhttpPromise = null + } + + socket[kNoRef] = false + socket[kWriting] = false + socket[kReset] = false + socket[kBlocking] = false + socket[kParser] = new Parser(client, socket, llhttpInstance) + + addListener(socket, 'error', function (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + const parser = this[kParser] + + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete() + return + } + + this[kError] = err + + this[kClient][kOnError](err) + }) + addListener(socket, 'readable', function () { + const parser = this[kParser] + + if (parser) { + parser.readMore() + } + }) + addListener(socket, 'end', function () { + const parser = this[kParser] + + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + return + } + + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) + }) + addListener(socket, 'close', function () { + const client = this[kClient] + const parser = this[kParser] + + if (parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + } + + this[kParser].destroy() + this[kParser] = null + } + + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) + + client[kSocket] = null + client[kHTTPContext] = null // TODO (fix): This is hacky... + + if (client.destroyed) { + assert(client[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + util.errorRequest(client, request, err) + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + + util.errorRequest(client, request, err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', client[kUrl], [client], err) + + client[kResume]() + }) + + let closed = false + socket.on('close', () => { + closed = true + }) + + return { + version: 'h1', + defaultPipelining: 1, + write (...args) { + return writeH1(client, ...args) + }, + resume () { + resumeH1(client) + }, + destroy (err, callback) { + if (closed) { + queueMicrotask(callback) + } else { + socket.destroy(err).on('close', callback) + } + }, + get destroyed () { + return socket.destroyed + }, + busy (request) { + if (socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return true + } + + if (request) { + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return true + } + + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return true + } + + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. + + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return true + } + } + + return false + } + } +} + +function resumeH1 (client) { + const socket = client[kSocket] + + if (socket && !socket.destroyed) { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref() + socket[kNoRef] = true + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref() + socket[kNoRef] = false + } + + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE) + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request = client[kQueue][client[kRunningIdx]] + const headersTimeout = request.headersTimeout != null + ? request.headersTimeout + : client[kHeadersTimeout] + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + } + } + } +} + +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} + +function writeH1 (client, request) { + const { method, path, host, upgrade, blocking, reset } = request + + let { body, headers, contentLength } = request + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' || + method === 'QUERY' || + method === 'PROPFIND' || + method === 'PROPPATCH' + ) + + if (util.isFormDataLike(body)) { + if (!extractBody) { + extractBody = require('../web/fetch/body.js').extractBody + } + + const [bodyStream, contentType] = extractBody(body) + if (request.contentType == null) { + headers.push('content-type', contentType) + } + body = bodyStream.stream + contentLength = bodyStream.length + } else if (util.isBlobLike(body) && request.contentType == null && body.type) { + headers.push('content-type', body.type) + } + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + const bodyLength = util.bodyLength(body) + + contentLength = bodyLength ?? contentLength + + if (contentLength === null) { + contentLength = request.contentLength + } + + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + util.errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + const socket = client[kSocket] + + const abort = (err) => { + if (request.aborted || request.completed) { + return + } + + util.errorRequest(client, request, err || new RequestAbortedError()) + + util.destroy(body) + util.destroy(socket, new InformationalError('aborted')) + } + + try { + request.onConnect(abort) + } catch (err) { + util.errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. + + socket[kReset] = true + } + + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. + + socket[kReset] = true + } + + if (reset != null) { + socket[kReset] = reset + } + + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true + } + + if (blocking) { + socket[kBlocking] = true + } + + let header = `${method} ${path} HTTP/1.1\r\n` + + if (typeof host === 'string') { + header += `host: ${host}\r\n` + } else { + header += client[kHostHeader] + } + + if (upgrade) { + header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n' + } else { + header += 'connection: close\r\n' + } + + if (Array.isArray(headers)) { + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0] + const val = headers[n + 1] + + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + header += `${key}: ${val[i]}\r\n` + } + } else { + header += `${key}: ${val}\r\n` + } + } + } + + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }) + } + + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload) + } else if (util.isBuffer(body)) { + writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload) + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload) + } else { + writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload) + } + } else if (util.isStream(body)) { + writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload) + } else if (util.isIterable(body)) { + writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload) + } else { + assert(false) + } + + return true +} + +function writeStream (abort, body, client, request, socket, contentLength, header, expectsPayload) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + + let finished = false + + const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header }) + + const onData = function (chunk) { + if (finished) { + return + } + + try { + if (!writer.write(chunk) && this.pause) { + this.pause() + } + } catch (err) { + util.destroy(this, err) + } + } + const onDrain = function () { + if (finished) { + return + } + + if (body.resume) { + body.resume() + } + } + const onClose = function () { + // 'close' might be emitted *before* 'error' for + // broken streams. Wait a tick to avoid this case. + queueMicrotask(() => { + // It's only safe to remove 'error' listener after + // 'close'. + body.removeListener('error', onFinished) + }) + + if (!finished) { + const err = new RequestAbortedError() + queueMicrotask(() => onFinished(err)) + } + } + const onFinished = function (err) { + if (finished) { + return + } + + finished = true + + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) + + socket + .off('drain', onDrain) + .off('error', onFinished) + + body + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('close', onClose) + + if (!err) { + try { + writer.end() + } catch (er) { + err = er + } + } + + writer.destroy(err) + + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err) + } else { + util.destroy(body) + } + } + + body + .on('data', onData) + .on('end', onFinished) + .on('error', onFinished) + .on('close', onClose) + + if (body.resume) { + body.resume() + } + + socket + .on('drain', onDrain) + .on('error', onFinished) + + if (body.errorEmitted ?? body.errored) { + setImmediate(() => onFinished(body.errored)) + } else if (body.endEmitted ?? body.readableEnded) { + setImmediate(() => onFinished(null)) + } + + if (body.closeEmitted ?? body.closed) { + setImmediate(onClose) + } +} + +function writeBuffer (abort, body, client, request, socket, contentLength, header, expectsPayload) { + try { + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + assert(contentLength === null, 'no body must not have content length') + socket.write(`${header}\r\n`, 'latin1') + } + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(body) + socket.uncork() + request.onBodySent(body) + + if (!expectsPayload && request.reset !== false) { + socket[kReset] = true + } + } + request.onRequestSent() + + client[kResume]() + } catch (err) { + abort(err) + } +} + +async function writeBlob (abort, body, client, request, socket, contentLength, header, expectsPayload) { + assert(contentLength === body.size, 'blob body must have content length') + + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() + } + + const buffer = Buffer.from(await body.arrayBuffer()) + + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(buffer) + socket.uncork() + + request.onBodySent(buffer) + request.onRequestSent() + + if (!expectsPayload && request.reset !== false) { + socket[kReset] = true + } + + client[kResume]() + } catch (err) { + abort(err) + } +} + +async function writeIterable (abort, body, client, request, socket, contentLength, header, expectsPayload) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } + + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) + + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) + + socket + .on('close', onDrain) + .on('drain', onDrain) + + const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header }) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + if (!writer.write(chunk)) { + await waitForDrain() + } + } + + writer.end() + } catch (err) { + writer.destroy(err) + } finally { + socket + .off('close', onDrain) + .off('drain', onDrain) + } +} + +class AsyncWriter { + constructor ({ abort, socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket + this.request = request + this.contentLength = contentLength + this.client = client + this.bytesWritten = 0 + this.expectsPayload = expectsPayload + this.header = header + this.abort = abort + + socket[kWriting] = true + } + + write (chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return false + } + + const len = Buffer.byteLength(chunk) + if (!len) { + return true + } + + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + socket.cork() + + if (bytesWritten === 0) { + if (!expectsPayload && request.reset !== false) { + socket[kReset] = true + } + + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') + } else { + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + } + } + + if (contentLength === null) { + socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') + } + + this.bytesWritten += len + + const ret = socket.write(chunk) + + socket.uncork() + + request.onBodySent(chunk) + + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + } + + return ret + } + + end () { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this + request.onRequestSent() + + socket[kWriting] = false + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return + } + + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. + + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + socket.write(`${header}\r\n`, 'latin1') + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1') + } + + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } else { + process.emitWarning(new RequestContentLengthMismatchError()) + } + } + + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + + client[kResume]() + } + + destroy (err) { + const { socket, client, abort } = this + + socket[kWriting] = false + + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request') + abort(err) + } + } +} + +module.exports = connectH1 diff --git a/deps/npm/node_modules/undici/lib/dispatcher/client-h2.js b/deps/npm/node_modules/undici/lib/dispatcher/client-h2.js new file mode 100644 index 00000000000000..4a52effb1f3b14 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/client-h2.js @@ -0,0 +1,744 @@ +'use strict' + +const assert = require('node:assert') +const { pipeline } = require('node:stream') +const util = require('../core/util.js') +const { + RequestContentLengthMismatchError, + RequestAbortedError, + SocketError, + InformationalError +} = require('../core/errors.js') +const { + kUrl, + kReset, + kClient, + kRunning, + kPending, + kQueue, + kPendingIdx, + kRunningIdx, + kError, + kSocket, + kStrictContentLength, + kOnError, + kMaxConcurrentStreams, + kHTTP2Session, + kResume, + kSize, + kHTTPContext +} = require('../core/symbols.js') + +const kOpenStreams = Symbol('open streams') + +let extractBody + +// Experimental +let h2ExperimentalWarned = false + +/** @type {import('http2')} */ +let http2 +try { + http2 = require('node:http2') +} catch { + // @ts-ignore + http2 = { constants: {} } +} + +const { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } +} = http2 + +function parseH2Headers (headers) { + const result = [] + + for (const [name, value] of Object.entries(headers)) { + // h2 may concat the header value by array + // e.g. Set-Cookie + if (Array.isArray(value)) { + for (const subvalue of value) { + // we need to provide each header value of header name + // because the headers handler expect name-value pair + result.push(Buffer.from(name), Buffer.from(subvalue)) + } + } else { + result.push(Buffer.from(name), Buffer.from(value)) + } + } + + return result +} + +async function connectH2 (client, socket) { + client[kSocket] = socket + + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }) + } + + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kMaxConcurrentStreams] + }) + + session[kOpenStreams] = 0 + session[kClient] = client + session[kSocket] = socket + + util.addListener(session, 'error', onHttp2SessionError) + util.addListener(session, 'frameError', onHttp2FrameError) + util.addListener(session, 'end', onHttp2SessionEnd) + util.addListener(session, 'goaway', onHTTP2GoAway) + util.addListener(session, 'close', function () { + const { [kClient]: client } = this + const { [kSocket]: socket } = client + + const err = this[kSocket][kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket)) + + client[kHTTP2Session] = null + + if (client.destroyed) { + assert(client[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + util.errorRequest(client, request, err) + } + } + }) + + session.unref() + + client[kHTTP2Session] = session + socket[kHTTP2Session] = session + + util.addListener(socket, 'error', function (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + this[kError] = err + + this[kClient][kOnError](err) + }) + + util.addListener(socket, 'end', function () { + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) + }) + + util.addListener(socket, 'close', function () { + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) + + client[kSocket] = null + + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', client[kUrl], [client], err) + + client[kResume]() + }) + + let closed = false + socket.on('close', () => { + closed = true + }) + + return { + version: 'h2', + defaultPipelining: Infinity, + write (...args) { + return writeH2(client, ...args) + }, + resume () { + resumeH2(client) + }, + destroy (err, callback) { + if (closed) { + queueMicrotask(callback) + } else { + // Destroying the socket will trigger the session close + socket.destroy(err).on('close', callback) + } + }, + get destroyed () { + return socket.destroyed + }, + busy () { + return false + } + } +} + +function resumeH2 (client) { + const socket = client[kSocket] + + if (socket?.destroyed === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref() + client[kHTTP2Session].unref() + } else { + socket.ref() + client[kHTTP2Session].ref() + } + } +} + +function onHttp2SessionError (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + this[kSocket][kError] = err + this[kClient][kOnError](err) +} + +function onHttp2FrameError (type, code, id) { + if (id === 0) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + this[kSocket][kError] = err + this[kClient][kOnError](err) + } +} + +function onHttp2SessionEnd () { + const err = new SocketError('other side closed', util.getSocketInfo(this[kSocket])) + this.destroy(err) + util.destroy(this[kSocket], err) +} + +/** + * This is the root cause of #3011 + * We need to handle GOAWAY frames properly, and trigger the session close + * along with the socket right away + */ +function onHTTP2GoAway (code) { + // We cannot recover, so best to close the session and the socket + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)) + const client = this[kClient] + + client[kSocket] = null + client[kHTTPContext] = null + + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err) + this[kHTTP2Session] = null + } + + util.destroy(this[kSocket], err) + + // Fail head of pipeline. + if (client[kRunningIdx] < client[kQueue].length) { + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + util.errorRequest(client, request, err) + client[kPendingIdx] = client[kRunningIdx] + } + + assert(client[kRunning] === 0) + + client.emit('disconnect', client[kUrl], [client], err) + + client[kResume]() +} + +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} + +function writeH2 (client, request) { + const session = client[kHTTP2Session] + const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request + let { body } = request + + if (upgrade) { + util.errorRequest(client, request, new Error('Upgrade not supported for H2')) + return false + } + + const headers = {} + for (let n = 0; n < reqHeaders.length; n += 2) { + const key = reqHeaders[n + 0] + const val = reqHeaders[n + 1] + + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (headers[key]) { + headers[key] += `,${val[i]}` + } else { + headers[key] = val[i] + } + } + } else { + headers[key] = val + } + } + + /** @type {import('node:http2').ClientHttp2Stream} */ + let stream + + const { hostname, port } = client[kUrl] + + headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ''}` + headers[HTTP2_HEADER_METHOD] = method + + const abort = (err) => { + if (request.aborted || request.completed) { + return + } + + err = err || new RequestAbortedError() + + util.errorRequest(client, request, err) + + if (stream != null) { + util.destroy(stream, err) + } + + // We do not destroy the socket as we can continue using the session + // the stream get's destroyed and the session remains to create new streams + util.destroy(body, err) + client[kQueue][client[kRunningIdx]++] = null + client[kResume]() + } + + try { + // We are already connected, streams are pending. + // We can call on connect, and wait for abort + request.onConnect(abort) + } catch (err) { + util.errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + if (method === 'CONNECT') { + session.ref() + // We are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { endStream: false, signal }) + + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream) + ++session[kOpenStreams] + client[kQueue][client[kRunningIdx]++] = null + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream) + ++session[kOpenStreams] + client[kQueue][client[kRunningIdx]++] = null + }) + } + + stream.once('close', () => { + session[kOpenStreams] -= 1 + if (session[kOpenStreams] === 0) session.unref() + }) + + return true + } + + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omitted when sending CONNECT + + headers[HTTP2_HEADER_PATH] = path + headers[HTTP2_HEADER_SCHEME] = 'https' + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + let contentLength = util.bodyLength(body) + + if (util.isFormDataLike(body)) { + extractBody ??= require('../web/fetch/body.js').extractBody + + const [bodyStream, contentType] = extractBody(body) + headers['content-type'] = contentType + + body = bodyStream.stream + contentLength = bodyStream.length + } + + if (contentLength == null) { + contentLength = request.contentLength + } + + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + util.errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + if (contentLength != null) { + assert(body, 'no body must not have content length') + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` + } + + session.ref() + + const shouldEndStream = method === 'GET' || method === 'HEAD' || body === null + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue' + stream = session.request(headers, { endStream: shouldEndStream, signal }) + + stream.once('continue', writeBodyH2) + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }) + writeBodyH2() + } + + // Increment counter as we have new streams open + ++session[kOpenStreams] + + stream.once('response', headers => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers + request.onResponseStarted() + + // Due to the stream nature, it is possible we face a race condition + // where the stream has been assigned, but the request has been aborted + // the request remains in-flight and headers hasn't been received yet + // for those scenarios, best effort is to destroy the stream immediately + // as there's no value to keep it open. + if (request.aborted) { + const err = new RequestAbortedError() + util.errorRequest(client, request, err) + util.destroy(stream, err) + return + } + + if (request.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), '') === false) { + stream.pause() + } + + stream.on('data', (chunk) => { + if (request.onData(chunk) === false) { + stream.pause() + } + }) + }) + + stream.once('end', () => { + // When state is null, it means we haven't consumed body and the stream still do not have + // a state. + // Present specially when using pipeline or stream + if (stream.state?.state == null || stream.state.state < 6) { + request.onComplete([]) + } + + if (session[kOpenStreams] === 0) { + // Stream is closed or half-closed-remote (6), decrement counter and cleanup + // It does not have sense to continue working with the stream as we do not + // have yet RST_STREAM support on client-side + + session.unref() + } + + abort(new InformationalError('HTTP/2: stream half-closed (remote)')) + client[kQueue][client[kRunningIdx]++] = null + client[kPendingIdx] = client[kRunningIdx] + client[kResume]() + }) + + stream.once('close', () => { + session[kOpenStreams] -= 1 + if (session[kOpenStreams] === 0) { + session.unref() + } + }) + + stream.once('error', function (err) { + abort(err) + }) + + stream.once('frameError', (type, code) => { + abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)) + }) + + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) + + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + + // stream.on('push', headers => { + // // TODO(HTTP/2): Support push + // }) + + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) + + return true + + function writeBodyH2 () { + /* istanbul ignore else: assertion */ + if (!body || contentLength === 0) { + writeBuffer( + abort, + stream, + null, + client, + request, + client[kSocket], + contentLength, + expectsPayload + ) + } else if (util.isBuffer(body)) { + writeBuffer( + abort, + stream, + body, + client, + request, + client[kSocket], + contentLength, + expectsPayload + ) + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable( + abort, + stream, + body.stream(), + client, + request, + client[kSocket], + contentLength, + expectsPayload + ) + } else { + writeBlob( + abort, + stream, + body, + client, + request, + client[kSocket], + contentLength, + expectsPayload + ) + } + } else if (util.isStream(body)) { + writeStream( + abort, + client[kSocket], + expectsPayload, + stream, + body, + client, + request, + contentLength + ) + } else if (util.isIterable(body)) { + writeIterable( + abort, + stream, + body, + client, + request, + client[kSocket], + contentLength, + expectsPayload + ) + } else { + assert(false) + } + } +} + +function writeBuffer (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) { + try { + if (body != null && util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + h2stream.cork() + h2stream.write(body) + h2stream.uncork() + h2stream.end() + + request.onBodySent(body) + } + + if (!expectsPayload) { + socket[kReset] = true + } + + request.onRequestSent() + client[kResume]() + } catch (error) { + abort(error) + } +} + +function writeStream (abort, socket, expectsPayload, h2stream, body, client, request, contentLength) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + + // For HTTP/2, is enough to pipe the stream + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(pipe, err) + abort(err) + } else { + util.removeAllListeners(pipe) + request.onRequestSent() + + if (!expectsPayload) { + socket[kReset] = true + } + + client[kResume]() + } + } + ) + + util.addListener(pipe, 'data', onPipeData) + + function onPipeData (chunk) { + request.onBodySent(chunk) + } +} + +async function writeBlob (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) { + assert(contentLength === body.size, 'blob body must have content length') + + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() + } + + const buffer = Buffer.from(await body.arrayBuffer()) + + h2stream.cork() + h2stream.write(buffer) + h2stream.uncork() + h2stream.end() + + request.onBodySent(buffer) + request.onRequestSent() + + if (!expectsPayload) { + socket[kReset] = true + } + + client[kResume]() + } catch (err) { + abort(err) + } +} + +async function writeIterable (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } + + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) + + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) + + h2stream + .on('close', onDrain) + .on('drain', onDrain) + + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + const res = h2stream.write(chunk) + request.onBodySent(chunk) + if (!res) { + await waitForDrain() + } + } + + h2stream.end() + + request.onRequestSent() + + if (!expectsPayload) { + socket[kReset] = true + } + + client[kResume]() + } catch (err) { + abort(err) + } finally { + h2stream + .off('close', onDrain) + .off('drain', onDrain) + } +} + +module.exports = connectH2 diff --git a/deps/npm/node_modules/undici/lib/dispatcher/client.js b/deps/npm/node_modules/undici/lib/dispatcher/client.js new file mode 100644 index 00000000000000..18472fffd773fc --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/client.js @@ -0,0 +1,623 @@ +// @ts-check + +'use strict' + +const assert = require('node:assert') +const net = require('node:net') +const http = require('node:http') +const util = require('../core/util.js') +const { channels } = require('../core/diagnostics.js') +const Request = require('../core/request.js') +const DispatcherBase = require('./dispatcher-base') +const { + InvalidArgumentError, + InformationalError, + ClientDestroyedError +} = require('../core/errors.js') +const buildConnector = require('../core/connect.js') +const { + kUrl, + kServerName, + kClient, + kBusy, + kConnect, + kResuming, + kRunning, + kPending, + kSize, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kOnError, + kHTTPContext, + kMaxConcurrentStreams, + kResume +} = require('../core/symbols.js') +const connectH1 = require('./client-h1.js') +const connectH2 = require('./client-h2.js') +let deprecatedInterceptorWarned = false + +const kClosedResolve = Symbol('kClosedResolve') + +const noop = () => {} + +function getPipelining (client) { + return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1 +} + +/** + * @type {import('../../types/client.js').default} + */ +class Client extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../../types/client.js').Client.Options} options + */ + constructor (url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + maxConcurrentStreams, + allowH2, + webSocket + } = {}) { + super({ webSocket }) + + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') + } + + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') + } + + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') + } + + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') + } + + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') + } + + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize') + } + + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath') + } + + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout') + } + + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout') + } + + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout') + } + + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') + } + + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') + } + + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') + } + + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address') + } + + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number') + } + + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') + } + + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value') + } + + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + if (interceptors?.Client && Array.isArray(interceptors.Client)) { + this[kInterceptors] = interceptors.Client + if (!deprecatedInterceptorWarned) { + deprecatedInterceptorWarned = true + process.emitWarning('Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.', { + code: 'UNDICI-CLIENT-INTERCEPTOR-DEPRECATED' + }) + } + } else { + this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })] + } + + this[kUrl] = util.parseOrigin(url) + this[kConnector] = connect + this[kPipelining] = pipelining != null ? pipelining : 1 + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] + this[kServerName] = null + this[kLocalAddress] = localAddress != null ? localAddress : null + this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength + this[kMaxRedirections] = maxRedirections + this[kMaxRequests] = maxRequestsPerClient + this[kClosedResolve] = null + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 + this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + this[kHTTPContext] = null + + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). + + this[kQueue] = [] + this[kRunningIdx] = 0 + this[kPendingIdx] = 0 + + this[kResume] = (sync) => resume(this, sync) + this[kOnError] = (err) => onError(this, err) + } + + get pipelining () { + return this[kPipelining] + } + + set pipelining (value) { + this[kPipelining] = value + this[kResume](true) + } + + get [kPending] () { + return this[kQueue].length - this[kPendingIdx] + } + + get [kRunning] () { + return this[kPendingIdx] - this[kRunningIdx] + } + + get [kSize] () { + return this[kQueue].length - this[kRunningIdx] + } + + get [kConnected] () { + return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed + } + + get [kBusy] () { + return Boolean( + this[kHTTPContext]?.busy(null) || + (this[kSize] >= (getPipelining(this) || 1)) || + this[kPending] > 0 + ) + } + + /* istanbul ignore: only used for test */ + [kConnect] (cb) { + connect(this) + this.once('connect', cb) + } + + [kDispatch] (opts, handler) { + const origin = opts.origin || this[kUrl].origin + const request = new Request(origin, opts, handler) + + this[kQueue].push(request) + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1 + queueMicrotask(() => resume(this)) + } else { + this[kResume](true) + } + + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2 + } + + return this[kNeedDrain] < 2 + } + + async [kClose] () { + // TODO: for H2 we need to gracefully flush the remaining enqueued + // request and close each stream. + return new Promise((resolve) => { + if (this[kSize]) { + this[kClosedResolve] = resolve + } else { + resolve(null) + } + }) + } + + async [kDestroy] (err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + util.errorRequest(this, request, err) + } + + const callback = () => { + if (this[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + this[kClosedResolve]() + this[kClosedResolve] = null + } + resolve(null) + } + + if (this[kHTTPContext]) { + this[kHTTPContext].destroy(err, callback) + this[kHTTPContext] = null + } else { + queueMicrotask(callback) + } + + this[kResume]() + }) + } +} + +const createRedirectInterceptor = require('../interceptor/redirect-interceptor.js') + +function onError (client, err) { + if ( + client[kRunning] === 0 && + err.code !== 'UND_ERR_INFO' && + err.code !== 'UND_ERR_SOCKET' + ) { + // Error is not caused by running request and not a recoverable + // socket error. + + assert(client[kPendingIdx] === client[kRunningIdx]) + + const requests = client[kQueue].splice(client[kRunningIdx]) + + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + util.errorRequest(client, request, err) + } + assert(client[kSize] === 0) + } +} + +/** + * @param {Client} client + * @returns + */ +async function connect (client) { + assert(!client[kConnecting]) + assert(!client[kHTTPContext]) + + let { host, hostname, protocol, port } = client[kUrl] + + // Resolve ipv6 + if (hostname[0] === '[') { + const idx = hostname.indexOf(']') + + assert(idx !== -1) + const ip = hostname.substring(1, idx) + + assert(net.isIP(ip)) + hostname = ip + } + + client[kConnecting] = true + + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }) + } + + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket) => { + if (err) { + reject(err) + } else { + resolve(socket) + } + }) + }) + + if (client.destroyed) { + util.destroy(socket.on('error', noop), new ClientDestroyedError()) + return + } + + assert(socket) + + try { + client[kHTTPContext] = socket.alpnProtocol === 'h2' + ? await connectH2(client, socket) + : await connectH1(client, socket) + } catch (err) { + socket.destroy().on('error', noop) + throw err + } + + client[kConnecting] = false + + socket[kCounter] = 0 + socket[kMaxRequests] = client[kMaxRequests] + socket[kClient] = client + socket[kError] = null + + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }) + } + client.emit('connect', client[kUrl], [client]) + } catch (err) { + if (client.destroyed) { + return + } + + client[kConnecting] = false + + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }) + } + + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0) + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++] + util.errorRequest(client, request, err) + } + } else { + onError(client, err) + } + + client.emit('connectionError', client[kUrl], [client], err) + } + + client[kResume]() +} + +function emitDrain (client) { + client[kNeedDrain] = 0 + client.emit('drain', client[kUrl], [client]) +} + +function resume (client, sync) { + if (client[kResuming] === 2) { + return + } + + client[kResuming] = 2 + + _resume(client, sync) + client[kResuming] = 0 + + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]) + client[kPendingIdx] -= client[kRunningIdx] + client[kRunningIdx] = 0 + } +} + +function _resume (client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0) + return + } + + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve]() + client[kClosedResolve] = null + return + } + + if (client[kHTTPContext]) { + client[kHTTPContext].resume() + } + + if (client[kBusy]) { + client[kNeedDrain] = 2 + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1 + queueMicrotask(() => emitDrain(client)) + } else { + emitDrain(client) + } + continue + } + + if (client[kPending] === 0) { + return + } + + if (client[kRunning] >= (getPipelining(client) || 1)) { + return + } + + const request = client[kQueue][client[kPendingIdx]] + + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return + } + + client[kServerName] = request.servername + client[kHTTPContext]?.destroy(new InformationalError('servername changed'), () => { + client[kHTTPContext] = null + resume(client) + }) + } + + if (client[kConnecting]) { + return + } + + if (!client[kHTTPContext]) { + connect(client) + return + } + + if (client[kHTTPContext].destroyed) { + return + } + + if (client[kHTTPContext].busy(request)) { + return + } + + if (!request.aborted && client[kHTTPContext].write(request)) { + client[kPendingIdx]++ + } else { + client[kQueue].splice(client[kPendingIdx], 1) + } + } +} + +module.exports = Client diff --git a/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js new file mode 100644 index 00000000000000..c999b2c2fb6740 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js @@ -0,0 +1,198 @@ +'use strict' + +const Dispatcher = require('./dispatcher') +const { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError +} = require('../core/errors') +const { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require('../core/symbols') + +const kOnDestroyed = Symbol('onDestroyed') +const kOnClosed = Symbol('onClosed') +const kInterceptedDispatch = Symbol('Intercepted Dispatch') +const kWebSocketOptions = Symbol('webSocketOptions') + +class DispatcherBase extends Dispatcher { + constructor (opts) { + super() + + this[kDestroyed] = false + this[kOnDestroyed] = null + this[kClosed] = false + this[kOnClosed] = [] + this[kWebSocketOptions] = opts?.webSocket ?? {} + } + + get webSocketOptions () { + return { + maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 + } + } + + get destroyed () { + return this[kDestroyed] + } + + get closed () { + return this[kClosed] + } + + get interceptors () { + return this[kInterceptors] + } + + set interceptors (newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i] + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function') + } + } + } + + this[kInterceptors] = newInterceptors + } + + close (callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)) + return + } + + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + this[kClosed] = true + this[kOnClosed].push(callback) + + const onClosed = () => { + const callbacks = this[kOnClosed] + this[kOnClosed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed) + }) + } + + destroy (err, callback) { + if (typeof err === 'function') { + callback = err + err = null + } + + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.destroy(err, (err, data) => { + return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + if (!err) { + err = new ClientDestroyedError() + } + + this[kDestroyed] = true + this[kOnDestroyed] = this[kOnDestroyed] || [] + this[kOnDestroyed].push(callback) + + const onDestroyed = () => { + const callbacks = this[kOnDestroyed] + this[kOnDestroyed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed) + }) + } + + [kInterceptedDispatch] (opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch] + return this[kDispatch](opts, handler) + } + + let dispatch = this[kDispatch].bind(this) + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch) + } + this[kInterceptedDispatch] = dispatch + return dispatch(opts, handler) + } + + dispatch (opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.') + } + + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError() + } + + if (this[kClosed]) { + throw new ClientClosedError() + } + + return this[kInterceptedDispatch](opts, handler) + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + handler.onError(err) + + return false + } + } +} + +module.exports = DispatcherBase diff --git a/deps/npm/node_modules/undici/lib/dispatcher/dispatcher.js b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher.js new file mode 100644 index 00000000000000..b1e0098ec4b66f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher.js @@ -0,0 +1,65 @@ +'use strict' +const EventEmitter = require('node:events') + +class Dispatcher extends EventEmitter { + dispatch () { + throw new Error('not implemented') + } + + close () { + throw new Error('not implemented') + } + + destroy () { + throw new Error('not implemented') + } + + compose (...args) { + // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ... + const interceptors = Array.isArray(args[0]) ? args[0] : args + let dispatch = this.dispatch.bind(this) + + for (const interceptor of interceptors) { + if (interceptor == null) { + continue + } + + if (typeof interceptor !== 'function') { + throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`) + } + + dispatch = interceptor(dispatch) + + if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) { + throw new TypeError('invalid interceptor') + } + } + + return new ComposedDispatcher(this, dispatch) + } +} + +class ComposedDispatcher extends Dispatcher { + #dispatcher = null + #dispatch = null + + constructor (dispatcher, dispatch) { + super() + this.#dispatcher = dispatcher + this.#dispatch = dispatch + } + + dispatch (...args) { + this.#dispatch(...args) + } + + close (...args) { + return this.#dispatcher.close(...args) + } + + destroy (...args) { + return this.#dispatcher.destroy(...args) + } +} + +module.exports = Dispatcher diff --git a/deps/npm/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js b/deps/npm/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js new file mode 100644 index 00000000000000..897011adbcd635 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js @@ -0,0 +1,160 @@ +'use strict' + +const DispatcherBase = require('./dispatcher-base') +const { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require('../core/symbols') +const ProxyAgent = require('./proxy-agent') +const Agent = require('./agent') + +const DEFAULT_PORTS = { + 'http:': 80, + 'https:': 443 +} + +let experimentalWarned = false + +class EnvHttpProxyAgent extends DispatcherBase { + #noProxyValue = null + #noProxyEntries = null + #opts = null + + constructor (opts = {}) { + super() + this.#opts = opts + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('EnvHttpProxyAgent is experimental, expect them to change at any time.', { + code: 'UNDICI-EHPA' + }) + } + + const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts + + this[kNoProxyAgent] = new Agent(agentOpts) + + const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY + if (HTTP_PROXY) { + this[kHttpProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTP_PROXY }) + } else { + this[kHttpProxyAgent] = this[kNoProxyAgent] + } + + const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY + if (HTTPS_PROXY) { + this[kHttpsProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTPS_PROXY }) + } else { + this[kHttpsProxyAgent] = this[kHttpProxyAgent] + } + + this.#parseNoProxy() + } + + [kDispatch] (opts, handler) { + const url = new URL(opts.origin) + const agent = this.#getProxyAgentForUrl(url) + return agent.dispatch(opts, handler) + } + + async [kClose] () { + await this[kNoProxyAgent].close() + if (!this[kHttpProxyAgent][kClosed]) { + await this[kHttpProxyAgent].close() + } + if (!this[kHttpsProxyAgent][kClosed]) { + await this[kHttpsProxyAgent].close() + } + } + + async [kDestroy] (err) { + await this[kNoProxyAgent].destroy(err) + if (!this[kHttpProxyAgent][kDestroyed]) { + await this[kHttpProxyAgent].destroy(err) + } + if (!this[kHttpsProxyAgent][kDestroyed]) { + await this[kHttpsProxyAgent].destroy(err) + } + } + + #getProxyAgentForUrl (url) { + let { protocol, host: hostname, port } = url + + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, '').toLowerCase() + port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0 + if (!this.#shouldProxy(hostname, port)) { + return this[kNoProxyAgent] + } + if (protocol === 'https:') { + return this[kHttpsProxyAgent] + } + return this[kHttpProxyAgent] + } + + #shouldProxy (hostname, port) { + if (this.#noProxyChanged) { + this.#parseNoProxy() + } + + if (this.#noProxyEntries.length === 0) { + return true // Always proxy if NO_PROXY is not set or empty. + } + if (this.#noProxyValue === '*') { + return false // Never proxy if wildcard is set. + } + + for (let i = 0; i < this.#noProxyEntries.length; i++) { + const entry = this.#noProxyEntries[i] + if (entry.port && entry.port !== port) { + continue // Skip if ports don't match. + } + if (!/^[.*]/.test(entry.hostname)) { + // No wildcards, so don't proxy only if there is not an exact match. + if (hostname === entry.hostname) { + return false + } + } else { + // Don't proxy if the hostname ends with the no_proxy host. + if (hostname.endsWith(entry.hostname.replace(/^\*/, ''))) { + return false + } + } + } + + return true + } + + #parseNoProxy () { + const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv + const noProxySplit = noProxyValue.split(/[,\s]/) + const noProxyEntries = [] + + for (let i = 0; i < noProxySplit.length; i++) { + const entry = noProxySplit[i] + if (!entry) { + continue + } + const parsed = entry.match(/^(.+):(\d+)$/) + noProxyEntries.push({ + hostname: (parsed ? parsed[1] : entry).toLowerCase(), + port: parsed ? Number.parseInt(parsed[2], 10) : 0 + }) + } + + this.#noProxyValue = noProxyValue + this.#noProxyEntries = noProxyEntries + } + + get #noProxyChanged () { + if (this.#opts.noProxy !== undefined) { + return false + } + return this.#noProxyValue !== this.#noProxyEnv + } + + get #noProxyEnv () { + return process.env.no_proxy ?? process.env.NO_PROXY ?? '' + } +} + +module.exports = EnvHttpProxyAgent diff --git a/deps/npm/node_modules/undici/lib/dispatcher/fixed-queue.js b/deps/npm/node_modules/undici/lib/dispatcher/fixed-queue.js new file mode 100644 index 00000000000000..35726819e925a4 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/fixed-queue.js @@ -0,0 +1,117 @@ +/* eslint-disable */ + +'use strict' + +// Extracted from node/lib/internal/fixed_queue.js + +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +const kSize = 2048; +const kMask = kSize - 1; + +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. + +class FixedCircularBuffer { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + + isEmpty() { + return this.top === this.bottom; + } + + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === undefined) + return null; + this.list[this.bottom] = undefined; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; + } +} + +module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + + isEmpty() { + return this.head.isEmpty(); + } + + push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } +}; diff --git a/deps/npm/node_modules/undici/lib/dispatcher/pool-base.js b/deps/npm/node_modules/undici/lib/dispatcher/pool-base.js new file mode 100644 index 00000000000000..6f9ec5e120b728 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/pool-base.js @@ -0,0 +1,194 @@ +'use strict' + +const DispatcherBase = require('./dispatcher-base') +const FixedQueue = require('./fixed-queue') +const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('../core/symbols') +const PoolStats = require('./pool-stats') + +const kClients = Symbol('clients') +const kNeedDrain = Symbol('needDrain') +const kQueue = Symbol('queue') +const kClosedResolve = Symbol('closed resolve') +const kOnDrain = Symbol('onDrain') +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kGetDispatcher = Symbol('get dispatcher') +const kAddClient = Symbol('add client') +const kRemoveClient = Symbol('remove client') +const kStats = Symbol('stats') + +class PoolBase extends DispatcherBase { + constructor (opts) { + super(opts) + + this[kQueue] = new FixedQueue() + this[kClients] = [] + this[kQueued] = 0 + + const pool = this + + this[kOnDrain] = function onDrain (origin, targets) { + const queue = pool[kQueue] + + let needDrain = false + + while (!needDrain) { + const item = queue.shift() + if (!item) { + break + } + pool[kQueued]-- + needDrain = !this.dispatch(item.opts, item.handler) + } + + this[kNeedDrain] = needDrain + + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false + pool.emit('drain', origin, [pool, ...targets]) + } + + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise + .all(pool[kClients].map(c => c.close())) + .then(pool[kClosedResolve]) + } + } + + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err) + } + + this[kStats] = new PoolStats(this) + } + + get [kBusy] () { + return this[kNeedDrain] + } + + get [kConnected] () { + return this[kClients].filter(client => client[kConnected]).length + } + + get [kFree] () { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length + } + + get [kPending] () { + let ret = this[kQueued] + for (const { [kPending]: pending } of this[kClients]) { + ret += pending + } + return ret + } + + get [kRunning] () { + let ret = 0 + for (const { [kRunning]: running } of this[kClients]) { + ret += running + } + return ret + } + + get [kSize] () { + let ret = this[kQueued] + for (const { [kSize]: size } of this[kClients]) { + ret += size + } + return ret + } + + get stats () { + return this[kStats] + } + + async [kClose] () { + if (this[kQueue].isEmpty()) { + await Promise.all(this[kClients].map(c => c.close())) + } else { + await new Promise((resolve) => { + this[kClosedResolve] = resolve + }) + } + } + + async [kDestroy] (err) { + while (true) { + const item = this[kQueue].shift() + if (!item) { + break + } + item.handler.onError(err) + } + + await Promise.all(this[kClients].map(c => c.destroy(err))) + } + + [kDispatch] (opts, handler) { + const dispatcher = this[kGetDispatcher]() + + if (!dispatcher) { + this[kNeedDrain] = true + this[kQueue].push({ opts, handler }) + this[kQueued]++ + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true + this[kNeedDrain] = !this[kGetDispatcher]() + } + + return !this[kNeedDrain] + } + + [kAddClient] (client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].push(client) + + if (this[kNeedDrain]) { + queueMicrotask(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]) + } + }) + } + + return this + } + + [kRemoveClient] (client) { + client.close(() => { + const idx = this[kClients].indexOf(client) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + }) + + this[kNeedDrain] = this[kClients].some(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + } +} + +module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} diff --git a/deps/npm/node_modules/undici/lib/dispatcher/pool-stats.js b/deps/npm/node_modules/undici/lib/dispatcher/pool-stats.js new file mode 100644 index 00000000000000..8c7e8c9572e1f1 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/pool-stats.js @@ -0,0 +1,34 @@ +const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('../core/symbols') +const kPool = Symbol('pool') + +class PoolStats { + constructor (pool) { + this[kPool] = pool + } + + get connected () { + return this[kPool][kConnected] + } + + get free () { + return this[kPool][kFree] + } + + get pending () { + return this[kPool][kPending] + } + + get queued () { + return this[kPool][kQueued] + } + + get running () { + return this[kPool][kRunning] + } + + get size () { + return this[kPool][kSize] + } +} + +module.exports = PoolStats diff --git a/deps/npm/node_modules/undici/lib/dispatcher/pool.js b/deps/npm/node_modules/undici/lib/dispatcher/pool.js new file mode 100644 index 00000000000000..9eaf3fd03a983e --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/pool.js @@ -0,0 +1,107 @@ +'use strict' + +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher +} = require('./pool-base') +const Client = require('./client') +const { + InvalidArgumentError +} = require('../core/errors') +const util = require('../core/util') +const { kUrl, kInterceptors } = require('../core/symbols') +const buildConnector = require('../core/connect') + +const kOptions = Symbol('options') +const kConnections = Symbol('connections') +const kFactory = Symbol('factory') + +function defaultFactory (origin, opts) { + return new Client(origin, opts) +} + +class Pool extends PoolBase { + constructor (origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + super(options) + + this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : [] + this[kConnections] = connections || null + this[kUrl] = util.parseOrigin(origin) + this[kOptions] = { ...util.deepClone(options), connect, allowH2 } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kFactory] = factory + + this.on('connectionError', (origin, targets, error) => { + // If a connection error occurs, we remove the client from the pool, + // and emit a connectionError event. They will not be re-used. + // Fixes https://github.com/nodejs/undici/issues/3895 + for (const target of targets) { + // Do not use kRemoveClient here, as it will close the client, + // but the client cannot be closed in this state. + const idx = this[kClients].indexOf(target) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + } + }) + } + + [kGetDispatcher] () { + for (const client of this[kClients]) { + if (!client[kNeedDrain]) { + return client + } + } + + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]) + this[kAddClient](dispatcher) + return dispatcher + } + } +} + +module.exports = Pool diff --git a/deps/npm/node_modules/undici/lib/dispatcher/proxy-agent.js b/deps/npm/node_modules/undici/lib/dispatcher/proxy-agent.js new file mode 100644 index 00000000000000..fed1803890923e --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/proxy-agent.js @@ -0,0 +1,274 @@ +'use strict' + +const { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require('../core/symbols') +const { URL } = require('node:url') +const Agent = require('./agent') +const Pool = require('./pool') +const DispatcherBase = require('./dispatcher-base') +const { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require('../core/errors') +const buildConnector = require('../core/connect') +const Client = require('./client') + +const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') +const kTunnelProxy = Symbol('tunnel proxy') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +const noop = () => {} + +function defaultAgentFactory (origin, opts) { + if (opts.connections === 1) { + return new Client(origin, opts) + } + return new Pool(origin, opts) +} + +class Http1ProxyWrapper extends DispatcherBase { + #client + + constructor (proxyUrl, { headers = {}, connect, factory }) { + super() + if (!proxyUrl) { + throw new InvalidArgumentError('Proxy URL is mandatory') + } + + this[kProxyHeaders] = headers + if (factory) { + this.#client = factory(proxyUrl, { connect }) + } else { + this.#client = new Client(proxyUrl, { connect }) + } + } + + [kDispatch] (opts, handler) { + const onHeaders = handler.onHeaders + handler.onHeaders = function (statusCode, data, resume) { + if (statusCode === 407) { + if (typeof handler.onError === 'function') { + handler.onError(new InvalidArgumentError('Proxy Authentication Required (407)')) + } + return + } + if (onHeaders) onHeaders.call(this, statusCode, data, resume) + } + + // Rewrite request as an HTTP1 Proxy request, without tunneling. + const { + origin, + path = '/', + headers = {} + } = opts + + opts.path = origin + path + + if (!('host' in headers) && !('Host' in headers)) { + const { host } = new URL(origin) + headers.host = host + } + opts.headers = { ...this[kProxyHeaders], ...headers } + + return this.#client[kDispatch](opts, handler) + } + + async [kClose] () { + return this.#client.close() + } + + async [kDestroy] (err) { + return this.#client.destroy(err) + } +} + +class ProxyAgent extends DispatcherBase { + constructor (opts) { + super() + + if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) { + throw new InvalidArgumentError('Proxy uri is mandatory') + } + + const { clientFactory = defaultFactory } = opts + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') + } + + const { proxyTunnel = true } = opts + + const url = this.#getUrl(opts) + const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url + + this[kProxy] = { uri: href, protocol } + this[kInterceptors] = opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : [] + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = opts.headers || {} + this[kTunnelProxy] = proxyTunnel + + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + } + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + + const agentFactory = opts.factory || defaultAgentFactory + const factory = (origin, options) => { + const { protocol } = new URL(origin) + if (!this[kTunnelProxy] && protocol === 'http:' && this[kProxy].protocol === 'http:') { + return new Http1ProxyWrapper(this[kProxy].uri, { + headers: this[kProxyHeaders], + connect, + factory: agentFactory + }) + } + return agentFactory(origin, options) + } + this[kClient] = clientFactory(url, { connect }) + this[kAgent] = new Agent({ + ...opts, + factory, + connect: async (opts, callback) => { + let requestedPath = opts.host + if (!opts.port) { + requestedPath += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedPath, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host: opts.host + }, + servername: this[kProxyTls]?.servername || proxyHostname + }) + if (statusCode !== 200) { + socket.on('error', noop).destroy() + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + // Throw a custom error to avoid loop in client.js#connect + callback(new SecureProxyConnectionError(err)) + } else { + callback(err) + } + } + } + }) + } + + dispatch (opts, handler) { + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) + + if (headers && !('host' in headers) && !('Host' in headers)) { + const { host } = new URL(opts.origin) + headers.host = host + } + + return this[kAgent].dispatch( + { + ...opts, + headers + }, + handler + ) + } + + /** + * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts + * @returns {URL} + */ + #getUrl (opts) { + if (typeof opts === 'string') { + return new URL(opts) + } else if (opts instanceof URL) { + return opts + } else { + return new URL(opts.uri) + } + } + + async [kClose] () { + await this[kAgent].close() + await this[kClient].close() + } + + async [kDestroy] () { + await this[kAgent].destroy() + await this[kClient].destroy() + } +} + +/** + * @param {string[] | Record} headers + * @returns {Record} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record} */ + const headersPair = {} + + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] + } + + return headersPair + } + + return headers +} + +/** + * @param {Record} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') + } +} + +module.exports = ProxyAgent diff --git a/deps/npm/node_modules/undici/lib/dispatcher/retry-agent.js b/deps/npm/node_modules/undici/lib/dispatcher/retry-agent.js new file mode 100644 index 00000000000000..0c2120d6f26a2d --- /dev/null +++ b/deps/npm/node_modules/undici/lib/dispatcher/retry-agent.js @@ -0,0 +1,35 @@ +'use strict' + +const Dispatcher = require('./dispatcher') +const RetryHandler = require('../handler/retry-handler') + +class RetryAgent extends Dispatcher { + #agent = null + #options = null + constructor (agent, options = {}) { + super(options) + this.#agent = agent + this.#options = options + } + + dispatch (opts, handler) { + const retry = new RetryHandler({ + ...opts, + retryOptions: this.#options + }, { + dispatch: this.#agent.dispatch.bind(this.#agent), + handler + }) + return this.#agent.dispatch(opts, retry) + } + + close () { + return this.#agent.close() + } + + destroy () { + return this.#agent.destroy() + } +} + +module.exports = RetryAgent diff --git a/deps/npm/node_modules/undici/lib/global.js b/deps/npm/node_modules/undici/lib/global.js new file mode 100644 index 00000000000000..0c7528fa653169 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/global.js @@ -0,0 +1,32 @@ +'use strict' + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = require('./core/errors') +const Agent = require('./dispatcher/agent') + +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} + +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} + +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} + +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher +} diff --git a/deps/npm/node_modules/undici/lib/handler/decorator-handler.js b/deps/npm/node_modules/undici/lib/handler/decorator-handler.js new file mode 100644 index 00000000000000..26f220c64cd1fe --- /dev/null +++ b/deps/npm/node_modules/undici/lib/handler/decorator-handler.js @@ -0,0 +1,44 @@ +'use strict' + +module.exports = class DecoratorHandler { + #handler + + constructor (handler) { + if (typeof handler !== 'object' || handler === null) { + throw new TypeError('handler must be an object') + } + this.#handler = handler + } + + onConnect (...args) { + return this.#handler.onConnect?.(...args) + } + + onError (...args) { + return this.#handler.onError?.(...args) + } + + onUpgrade (...args) { + return this.#handler.onUpgrade?.(...args) + } + + onResponseStarted (...args) { + return this.#handler.onResponseStarted?.(...args) + } + + onHeaders (...args) { + return this.#handler.onHeaders?.(...args) + } + + onData (...args) { + return this.#handler.onData?.(...args) + } + + onComplete (...args) { + return this.#handler.onComplete?.(...args) + } + + onBodySent (...args) { + return this.#handler.onBodySent?.(...args) + } +} diff --git a/deps/npm/node_modules/undici/lib/handler/redirect-handler.js b/deps/npm/node_modules/undici/lib/handler/redirect-handler.js new file mode 100644 index 00000000000000..16a7b2150a9dee --- /dev/null +++ b/deps/npm/node_modules/undici/lib/handler/redirect-handler.js @@ -0,0 +1,232 @@ +'use strict' + +const util = require('../core/util') +const { kBodyUsed } = require('../core/symbols') +const assert = require('node:assert') +const { InvalidArgumentError } = require('../core/errors') +const EE = require('node:events') + +const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] + +const kBody = Symbol('body') + +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false + } + + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} + +class RedirectHandler { + constructor (dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + util.validateHandler(handler, opts.method, opts.upgrade) + + this.dispatch = dispatch + this.location = null + this.abort = null + this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy + this.maxRedirections = maxRedirections + this.handler = handler + this.history = [] + this.redirectionLimitReached = false + + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body + .on('data', function () { + assert(false) + }) + } + + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true + }) + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body) + } else if ( + this.opts.body && + typeof this.opts.body !== 'string' && + !ArrayBuffer.isView(this.opts.body) && + util.isIterable(this.opts.body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body) + } + } + + onConnect (abort) { + this.abort = abort + this.handler.onConnect(abort, { history: this.history }) + } + + onUpgrade (statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket) + } + + onError (error) { + this.handler.onError(error) + } + + onHeaders (statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers) + + if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) { + if (this.request) { + this.request.abort(new Error('max redirects')) + } + + this.redirectionLimitReached = true + this.abort(new Error('max redirects')) + return + } + + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)) + } + + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText) + } + + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) + const path = search ? `${pathname}${search}` : pathname + + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin) + this.opts.path = path + this.opts.origin = origin + this.opts.maxRedirections = 0 + this.opts.query = null + + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET' + this.opts.body = null + } + } + + onData (chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response bodies. + + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. + + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. + + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitly chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk) + } + } + + onComplete (trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. + + See comment on onData method above for more detailed information. + */ + + this.location = null + this.abort = null + + this.dispatch(this.opts, this) + } else { + this.handler.onComplete(trailers) + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk) + } + } +} + +function parseLocation (statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null + } + + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].length === 8 && util.headerNameToString(headers[i]) === 'location') { + return headers[i + 1] + } + } +} + +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader (header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host' + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header) + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' + } + return false +} + +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders (headers, removeContent, unknownOrigin) { + const ret = [] + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]) + } + } + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]) + } + } + } else { + assert(headers == null, 'headers must be an object or an array') + } + return ret +} + +module.exports = RedirectHandler diff --git a/deps/npm/node_modules/undici/lib/handler/retry-handler.js b/deps/npm/node_modules/undici/lib/handler/retry-handler.js new file mode 100644 index 00000000000000..5d1ccf00538766 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/handler/retry-handler.js @@ -0,0 +1,374 @@ +'use strict' +const assert = require('node:assert') + +const { kRetryHandlerDefaultRetry } = require('../core/symbols') +const { RequestRetryError } = require('../core/errors') +const { + isDisturbed, + parseHeaders, + parseRangeHeader, + wrapRequestBody +} = require('../core/util') + +function calculateRetryAfterHeader (retryAfter) { + const current = Date.now() + return new Date(retryAfter).getTime() - current +} + +class RetryHandler { + constructor (opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {} + + this.dispatch = handlers.dispatch + this.handler = handlers.handler + this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) } + this.abort = null + this.aborted = false + this.retryOpts = { + retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1000, // 30s, + minTimeout: minTimeout ?? 500, // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE', + 'UND_ERR_SOCKET' + ] + } + + this.retryCount = 0 + this.retryCountCheckpoint = 0 + this.start = 0 + this.end = null + this.etag = null + this.resume = null + + // Handle possible onConnect duplication + this.handler.onConnect(reason => { + this.aborted = true + if (this.abort) { + this.abort(reason) + } else { + this.reason = reason + } + }) + } + + onRequestSent () { + if (this.handler.onRequestSent) { + this.handler.onRequestSent() + } + } + + onUpgrade (statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket) + } + } + + onConnect (abort) { + if (this.aborted) { + abort(this.reason) + } else { + this.abort = abort + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + } + + static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { + const { statusCode, code, headers } = err + const { method, retryOptions } = opts + const { + maxRetries, + minTimeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions + const { counter } = state + + // Any code that is not a Undici's originated and allowed to retry + if (code && code !== 'UND_ERR_REQ_RETRY' && !errorCodes.includes(code)) { + cb(err) + return + } + + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err) + return + } + + // If a set of status code are provided and the current status code is not in the list + if ( + statusCode != null && + Array.isArray(statusCodes) && + !statusCodes.includes(statusCode) + ) { + cb(err) + return + } + + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err) + return + } + + let retryAfterHeader = headers?.['retry-after'] + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader) + retryAfterHeader = Number.isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3 // Retry-After is in seconds + } + + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout) + + setTimeout(() => cb(null), retryTimeout) + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders) + + this.retryCount += 1 + + if (statusCode >= 300) { + if (this.retryOpts.statusCodes.includes(statusCode) === false) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } else { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + data: { + count: this.retryCount + } + }) + ) + return false + } + } + + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null + + // Only Partial Content 206 supposed to provide Content-Range, + // any other status code that partially consumed the payload + // should not be retry because it would result in downstream + // wrongly concatanete multiple responses. + if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) { + this.abort( + new RequestRetryError('server does not support the range header and the payload was partially consumed', statusCode, { + headers, + data: { count: this.retryCount } + }) + ) + return false + } + + const contentRange = parseRangeHeader(headers['content-range']) + // If no content range + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }) + ) + return false + } + + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }) + ) + return false + } + + const { start, size, end = size - 1 } = contentRange + + assert(this.start === start, 'content-range mismatch') + assert(this.end == null || this.end === end, 'content-range mismatch') + + this.resume = resume + return true + } + + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + const range = parseRangeHeader(headers['content-range']) + + if (range == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const { start, size, end = size - 1 } = range + assert( + start != null && Number.isFinite(start), + 'content-range mismatch' + ) + assert(end != null && Number.isFinite(end), 'invalid content-length') + + this.start = start + this.end = end + } + + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + const contentLength = headers['content-length'] + this.end = contentLength != null ? Number(contentLength) - 1 : null + } + + assert(Number.isFinite(this.start)) + assert( + this.end == null || Number.isFinite(this.end), + 'invalid content-length' + ) + + this.resume = resume + this.etag = headers.etag != null ? headers.etag : null + + // Weak etags are not useful for comparison nor cache + // for instance not safe to assume if the response is byte-per-byte + // equal + if (this.etag != null && this.etag.startsWith('W/')) { + this.etag = null + } + + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const err = new RequestRetryError('Request failed', statusCode, { + headers, + data: { count: this.retryCount } + }) + + this.abort(err) + + return false + } + + onData (chunk) { + this.start += chunk.length + + return this.handler.onData(chunk) + } + + onComplete (rawTrailers) { + this.retryCount = 0 + return this.handler.onComplete(rawTrailers) + } + + onError (err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + // We reconcile in case of a mix between network errors + // and server error response + if (this.retryCount - this.retryCountCheckpoint > 0) { + // We count the difference between the last checkpoint and the current retry count + this.retryCount = + this.retryCountCheckpoint + + (this.retryCount - this.retryCountCheckpoint) + } else { + this.retryCount += 1 + } + + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ) + + function onRetry (err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + if (this.start !== 0) { + const headers = { range: `bytes=${this.start}-${this.end ?? ''}` } + + // Weak etag check - weak etags will make comparison algorithms never match + if (this.etag != null) { + headers['if-match'] = this.etag + } + + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + ...headers + } + } + } + + try { + this.retryCountCheckpoint = this.retryCount + this.dispatch(this.opts, this) + } catch (err) { + this.handler.onError(err) + } + } + } +} + +module.exports = RetryHandler diff --git a/deps/npm/node_modules/undici/lib/interceptor/dns.js b/deps/npm/node_modules/undici/lib/interceptor/dns.js new file mode 100644 index 00000000000000..917732646e64a0 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/dns.js @@ -0,0 +1,375 @@ +'use strict' +const { isIP } = require('node:net') +const { lookup } = require('node:dns') +const DecoratorHandler = require('../handler/decorator-handler') +const { InvalidArgumentError, InformationalError } = require('../core/errors') +const maxInt = Math.pow(2, 31) - 1 + +class DNSInstance { + #maxTTL = 0 + #maxItems = 0 + #records = new Map() + dualStack = true + affinity = null + lookup = null + pick = null + + constructor (opts) { + this.#maxTTL = opts.maxTTL + this.#maxItems = opts.maxItems + this.dualStack = opts.dualStack + this.affinity = opts.affinity + this.lookup = opts.lookup ?? this.#defaultLookup + this.pick = opts.pick ?? this.#defaultPick + } + + get full () { + return this.#records.size === this.#maxItems + } + + runLookup (origin, opts, cb) { + const ips = this.#records.get(origin.hostname) + + // If full, we just return the origin + if (ips == null && this.full) { + cb(null, origin.origin) + return + } + + const newOpts = { + affinity: this.affinity, + dualStack: this.dualStack, + lookup: this.lookup, + pick: this.pick, + ...opts.dns, + maxTTL: this.#maxTTL, + maxItems: this.#maxItems + } + + // If no IPs we lookup + if (ips == null) { + this.lookup(origin, newOpts, (err, addresses) => { + if (err || addresses == null || addresses.length === 0) { + cb(err ?? new InformationalError('No DNS entries found')) + return + } + + this.setRecords(origin, addresses) + const records = this.#records.get(origin.hostname) + + const ip = this.pick( + origin, + records, + newOpts.affinity + ) + + let port + if (typeof ip.port === 'number') { + port = `:${ip.port}` + } else if (origin.port !== '') { + port = `:${origin.port}` + } else { + port = '' + } + + cb( + null, + `${origin.protocol}//${ + ip.family === 6 ? `[${ip.address}]` : ip.address + }${port}` + ) + }) + } else { + // If there's IPs we pick + const ip = this.pick( + origin, + ips, + newOpts.affinity + ) + + // If no IPs we lookup - deleting old records + if (ip == null) { + this.#records.delete(origin.hostname) + this.runLookup(origin, opts, cb) + return + } + + let port + if (typeof ip.port === 'number') { + port = `:${ip.port}` + } else if (origin.port !== '') { + port = `:${origin.port}` + } else { + port = '' + } + + cb( + null, + `${origin.protocol}//${ + ip.family === 6 ? `[${ip.address}]` : ip.address + }${port}` + ) + } + } + + #defaultLookup (origin, opts, cb) { + lookup( + origin.hostname, + { + all: true, + family: this.dualStack === false ? this.affinity : 0, + order: 'ipv4first' + }, + (err, addresses) => { + if (err) { + return cb(err) + } + + const results = new Map() + + for (const addr of addresses) { + // On linux we found duplicates, we attempt to remove them with + // the latest record + results.set(`${addr.address}:${addr.family}`, addr) + } + + cb(null, results.values()) + } + ) + } + + #defaultPick (origin, hostnameRecords, affinity) { + let ip = null + const { records, offset } = hostnameRecords + + let family + if (this.dualStack) { + if (affinity == null) { + // Balance between ip families + if (offset == null || offset === maxInt) { + hostnameRecords.offset = 0 + affinity = 4 + } else { + hostnameRecords.offset++ + affinity = (hostnameRecords.offset & 1) === 1 ? 6 : 4 + } + } + + if (records[affinity] != null && records[affinity].ips.length > 0) { + family = records[affinity] + } else { + family = records[affinity === 4 ? 6 : 4] + } + } else { + family = records[affinity] + } + + // If no IPs we return null + if (family == null || family.ips.length === 0) { + return ip + } + + if (family.offset == null || family.offset === maxInt) { + family.offset = 0 + } else { + family.offset++ + } + + const position = family.offset % family.ips.length + ip = family.ips[position] ?? null + + if (ip == null) { + return ip + } + + if (Date.now() - ip.timestamp > ip.ttl) { // record TTL is already in ms + // We delete expired records + // It is possible that they have different TTL, so we manage them individually + family.ips.splice(position, 1) + return this.pick(origin, hostnameRecords, affinity) + } + + return ip + } + + setRecords (origin, addresses) { + const timestamp = Date.now() + const records = { records: { 4: null, 6: null } } + for (const record of addresses) { + record.timestamp = timestamp + if (typeof record.ttl === 'number') { + // The record TTL is expected to be in ms + record.ttl = Math.min(record.ttl, this.#maxTTL) + } else { + record.ttl = this.#maxTTL + } + + const familyRecords = records.records[record.family] ?? { ips: [] } + + familyRecords.ips.push(record) + records.records[record.family] = familyRecords + } + + this.#records.set(origin.hostname, records) + } + + getHandler (meta, opts) { + return new DNSDispatchHandler(this, meta, opts) + } +} + +class DNSDispatchHandler extends DecoratorHandler { + #state = null + #opts = null + #dispatch = null + #handler = null + #origin = null + + constructor (state, { origin, handler, dispatch }, opts) { + super(handler) + this.#origin = origin + this.#handler = handler + this.#opts = { ...opts } + this.#state = state + this.#dispatch = dispatch + } + + onError (err) { + switch (err.code) { + case 'ETIMEDOUT': + case 'ECONNREFUSED': { + if (this.#state.dualStack) { + // We delete the record and retry + this.#state.runLookup(this.#origin, this.#opts, (err, newOrigin) => { + if (err) { + return this.#handler.onError(err) + } + + const dispatchOpts = { + ...this.#opts, + origin: newOrigin + } + + this.#dispatch(dispatchOpts, this) + }) + + // if dual-stack disabled, we error out + return + } + + this.#handler.onError(err) + return + } + case 'ENOTFOUND': + this.#state.deleteRecord(this.#origin) + // eslint-disable-next-line no-fallthrough + default: + this.#handler.onError(err) + break + } + } +} + +module.exports = interceptorOpts => { + if ( + interceptorOpts?.maxTTL != null && + (typeof interceptorOpts?.maxTTL !== 'number' || interceptorOpts?.maxTTL < 0) + ) { + throw new InvalidArgumentError('Invalid maxTTL. Must be a positive number') + } + + if ( + interceptorOpts?.maxItems != null && + (typeof interceptorOpts?.maxItems !== 'number' || + interceptorOpts?.maxItems < 1) + ) { + throw new InvalidArgumentError( + 'Invalid maxItems. Must be a positive number and greater than zero' + ) + } + + if ( + interceptorOpts?.affinity != null && + interceptorOpts?.affinity !== 4 && + interceptorOpts?.affinity !== 6 + ) { + throw new InvalidArgumentError('Invalid affinity. Must be either 4 or 6') + } + + if ( + interceptorOpts?.dualStack != null && + typeof interceptorOpts?.dualStack !== 'boolean' + ) { + throw new InvalidArgumentError('Invalid dualStack. Must be a boolean') + } + + if ( + interceptorOpts?.lookup != null && + typeof interceptorOpts?.lookup !== 'function' + ) { + throw new InvalidArgumentError('Invalid lookup. Must be a function') + } + + if ( + interceptorOpts?.pick != null && + typeof interceptorOpts?.pick !== 'function' + ) { + throw new InvalidArgumentError('Invalid pick. Must be a function') + } + + const dualStack = interceptorOpts?.dualStack ?? true + let affinity + if (dualStack) { + affinity = interceptorOpts?.affinity ?? null + } else { + affinity = interceptorOpts?.affinity ?? 4 + } + + const opts = { + maxTTL: interceptorOpts?.maxTTL ?? 10e3, // Expressed in ms + lookup: interceptorOpts?.lookup ?? null, + pick: interceptorOpts?.pick ?? null, + dualStack, + affinity, + maxItems: interceptorOpts?.maxItems ?? Infinity + } + + const instance = new DNSInstance(opts) + + return dispatch => { + return function dnsInterceptor (origDispatchOpts, handler) { + const origin = + origDispatchOpts.origin.constructor === URL + ? origDispatchOpts.origin + : new URL(origDispatchOpts.origin) + + if (isIP(origin.hostname) !== 0) { + return dispatch(origDispatchOpts, handler) + } + + instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => { + if (err) { + return handler.onError(err) + } + + let dispatchOpts = null + dispatchOpts = { + ...origDispatchOpts, + servername: origin.hostname, // For SNI on TLS + origin: newOrigin, + headers: { + host: origin.hostname, + ...origDispatchOpts.headers + } + } + + dispatch( + dispatchOpts, + instance.getHandler({ origin, dispatch, handler }, origDispatchOpts) + ) + }) + + return true + } + } +} diff --git a/deps/npm/node_modules/undici/lib/interceptor/dump.js b/deps/npm/node_modules/undici/lib/interceptor/dump.js new file mode 100644 index 00000000000000..fc9cacb198d1e6 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/dump.js @@ -0,0 +1,123 @@ +'use strict' + +const util = require('../core/util') +const { InvalidArgumentError, RequestAbortedError } = require('../core/errors') +const DecoratorHandler = require('../handler/decorator-handler') + +class DumpHandler extends DecoratorHandler { + #maxSize = 1024 * 1024 + #abort = null + #dumped = false + #aborted = false + #size = 0 + #reason = null + #handler = null + + constructor ({ maxSize }, handler) { + super(handler) + + if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) { + throw new InvalidArgumentError('maxSize must be a number greater than 0') + } + + this.#maxSize = maxSize ?? this.#maxSize + this.#handler = handler + } + + onConnect (abort) { + this.#abort = abort + + this.#handler.onConnect(this.#customAbort.bind(this)) + } + + #customAbort (reason) { + this.#aborted = true + this.#reason = reason + } + + // TODO: will require adjustment after new hooks are out + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = util.parseHeaders(rawHeaders) + const contentLength = headers['content-length'] + + if (contentLength != null && contentLength > this.#maxSize) { + throw new RequestAbortedError( + `Response size (${contentLength}) larger than maxSize (${ + this.#maxSize + })` + ) + } + + if (this.#aborted) { + return true + } + + return this.#handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + onError (err) { + if (this.#dumped) { + return + } + + err = this.#reason ?? err + + this.#handler.onError(err) + } + + onData (chunk) { + this.#size = this.#size + chunk.length + + if (this.#size >= this.#maxSize) { + this.#dumped = true + + if (this.#aborted) { + this.#handler.onError(this.#reason) + } else { + this.#handler.onComplete([]) + } + } + + return true + } + + onComplete (trailers) { + if (this.#dumped) { + return + } + + if (this.#aborted) { + this.#handler.onError(this.reason) + return + } + + this.#handler.onComplete(trailers) + } +} + +function createDumpInterceptor ( + { maxSize: defaultMaxSize } = { + maxSize: 1024 * 1024 + } +) { + return dispatch => { + return function Intercept (opts, handler) { + const { dumpMaxSize = defaultMaxSize } = + opts + + const dumpHandler = new DumpHandler( + { maxSize: dumpMaxSize }, + handler + ) + + return dispatch(opts, dumpHandler) + } + } +} + +module.exports = createDumpInterceptor diff --git a/deps/npm/node_modules/undici/lib/interceptor/redirect-interceptor.js b/deps/npm/node_modules/undici/lib/interceptor/redirect-interceptor.js new file mode 100644 index 00000000000000..896ee8db93966c --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/redirect-interceptor.js @@ -0,0 +1,21 @@ +'use strict' + +const RedirectHandler = require('../handler/redirect-handler') + +function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept (opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) + } + } +} + +module.exports = createRedirectInterceptor diff --git a/deps/npm/node_modules/undici/lib/interceptor/redirect.js b/deps/npm/node_modules/undici/lib/interceptor/redirect.js new file mode 100644 index 00000000000000..d2e789d8efb851 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/redirect.js @@ -0,0 +1,24 @@ +'use strict' +const RedirectHandler = require('../handler/redirect-handler') + +module.exports = opts => { + const globalMaxRedirections = opts?.maxRedirections + return dispatch => { + return function redirectInterceptor (opts, handler) { + const { maxRedirections = globalMaxRedirections, ...baseOpts } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler( + dispatch, + maxRedirections, + opts, + handler + ) + + return dispatch(baseOpts, redirectHandler) + } + } +} diff --git a/deps/npm/node_modules/undici/lib/interceptor/response-error.js b/deps/npm/node_modules/undici/lib/interceptor/response-error.js new file mode 100644 index 00000000000000..3ded9c87fb736b --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/response-error.js @@ -0,0 +1,86 @@ +'use strict' + +const { parseHeaders } = require('../core/util') +const DecoratorHandler = require('../handler/decorator-handler') +const { ResponseError } = require('../core/errors') + +class Handler extends DecoratorHandler { + #handler + #statusCode + #contentType + #decoder + #headers + #body + + constructor (opts, { handler }) { + super(handler) + this.#handler = handler + } + + onConnect (abort) { + this.#statusCode = 0 + this.#contentType = null + this.#decoder = null + this.#headers = null + this.#body = '' + + return this.#handler.onConnect(abort) + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage, headers = parseHeaders(rawHeaders)) { + this.#statusCode = statusCode + this.#headers = headers + this.#contentType = headers['content-type'] + + if (this.#statusCode < 400) { + return this.#handler.onHeaders(statusCode, rawHeaders, resume, statusMessage, headers) + } + + if (this.#contentType === 'application/json' || this.#contentType === 'text/plain') { + this.#decoder = new TextDecoder('utf-8') + } + } + + onData (chunk) { + if (this.#statusCode < 400) { + return this.#handler.onData(chunk) + } + + this.#body += this.#decoder?.decode(chunk, { stream: true }) ?? '' + } + + onComplete (rawTrailers) { + if (this.#statusCode >= 400) { + this.#body += this.#decoder?.decode(undefined, { stream: false }) ?? '' + + if (this.#contentType === 'application/json') { + try { + this.#body = JSON.parse(this.#body) + } catch { + // Do nothing... + } + } + + let err + const stackTraceLimit = Error.stackTraceLimit + Error.stackTraceLimit = 0 + try { + err = new ResponseError('Response Error', this.#statusCode, this.#headers, this.#body) + } finally { + Error.stackTraceLimit = stackTraceLimit + } + + this.#handler.onError(err) + } else { + this.#handler.onComplete(rawTrailers) + } + } + + onError (err) { + this.#handler.onError(err) + } +} + +module.exports = (dispatch) => (opts, handler) => opts.throwOnError + ? dispatch(opts, new Handler(opts, { handler })) + : dispatch(opts, handler) diff --git a/deps/npm/node_modules/undici/lib/interceptor/retry.js b/deps/npm/node_modules/undici/lib/interceptor/retry.js new file mode 100644 index 00000000000000..1c16fd845a9a96 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/interceptor/retry.js @@ -0,0 +1,19 @@ +'use strict' +const RetryHandler = require('../handler/retry-handler') + +module.exports = globalOpts => { + return dispatch => { + return function retryInterceptor (opts, handler) { + return dispatch( + opts, + new RetryHandler( + { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } }, + { + handler, + dispatch + } + ) + ) + } + } +} diff --git a/deps/npm/node_modules/undici/lib/llhttp/constants.js b/deps/npm/node_modules/undici/lib/llhttp/constants.js new file mode 100644 index 00000000000000..fb0b5a24c523ef --- /dev/null +++ b/deps/npm/node_modules/undici/lib/llhttp/constants.js @@ -0,0 +1,278 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +const utils_1 = require("./utils"); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE, +]; +exports.METHODS_ICE = [ + METHODS.SOURCE, +]; +exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST, +]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, +}; +exports.HEX_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, + A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, + a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, +}; +exports.NUM = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', +]; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM + .concat(exports.MARK) + .concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = [ + '!', '"', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + ':', ';', '<', '=', '>', + '@', '[', '\\', ']', '^', '_', + '`', + '{', '|', '}', '~', +].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR + .concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (let i = 0x80; i <= 0xff; i++) { + exports.URL_CHAR.push(i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = [ + '!', '#', '$', '%', '&', '\'', + '*', '+', '-', '.', + '^', '_', '`', + '|', '~', +].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE, +}; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/undici/lib/llhttp/llhttp-wasm.js b/deps/npm/node_modules/undici/lib/llhttp/llhttp-wasm.js new file mode 100644 index 00000000000000..8ac8481930c2d5 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/llhttp/llhttp-wasm.js @@ -0,0 +1,5 @@ +'use strict' + +const { Buffer } = require('node:buffer') + +module.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv', 'base64') diff --git a/deps/npm/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js b/deps/npm/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js new file mode 100644 index 00000000000000..3ee81325f5b788 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js @@ -0,0 +1,5 @@ +'use strict' + +const { Buffer } = require('node:buffer') + +module.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==', 'base64') diff --git a/deps/npm/node_modules/undici/lib/llhttp/utils.js b/deps/npm/node_modules/undici/lib/llhttp/utils.js new file mode 100644 index 00000000000000..8a32e564e70020 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/llhttp/utils.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.enumToMap = void 0; +function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/undici/lib/mock/mock-agent.js b/deps/npm/node_modules/undici/lib/mock/mock-agent.js new file mode 100644 index 00000000000000..c02ee375e2551f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-agent.js @@ -0,0 +1,160 @@ +'use strict' + +const { kClients } = require('../core/symbols') +const Agent = require('../dispatcher/agent') +const { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory +} = require('./mock-symbols') +const MockClient = require('./mock-client') +const MockPool = require('./mock-pool') +const { matchValue, buildMockOptions } = require('./mock-utils') +const { InvalidArgumentError, UndiciError } = require('../core/errors') +const Dispatcher = require('../dispatcher/dispatcher') +const Pluralizer = require('./pluralizer') +const PendingInterceptorsFormatter = require('./pending-interceptors-formatter') + +class MockAgent extends Dispatcher { + constructor (opts) { + super(opts) + + this[kNetConnect] = true + this[kIsMockActive] = true + + // Instantiate Agent and encapsulate + if ((opts?.agent && typeof opts.agent.dispatch !== 'function')) { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + const agent = opts?.agent ? opts.agent : new Agent(opts) + this[kAgent] = agent + + this[kClients] = agent[kClients] + this[kOptions] = buildMockOptions(opts) + } + + get (origin) { + let dispatcher = this[kMockAgentGet](origin) + + if (!dispatcher) { + dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + } + return dispatcher + } + + dispatch (opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin) + return this[kAgent].dispatch(opts, handler) + } + + async close () { + await this[kAgent].close() + this[kClients].clear() + } + + deactivate () { + this[kIsMockActive] = false + } + + activate () { + this[kIsMockActive] = true + } + + enableNetConnect (matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher) + } else { + this[kNetConnect] = [matcher] + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') + } + } + + disableNetConnect () { + this[kNetConnect] = false + } + + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } + + [kMockAgentSet] (origin, dispatcher) { + this[kClients].set(origin, dispatcher) + } + + [kFactory] (origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]) + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions) + } + + [kMockAgentGet] (origin) { + // First check if we can immediately find it + const client = this[kClients].get(origin) + if (client) { + return client + } + + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999') + this[kMockAgentSet](origin, dispatcher) + return dispatcher + } + + // If we match, create a pool and assign the same dispatches + for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] + return dispatcher + } + } + } + + [kGetNetConnect] () { + return this[kNetConnect] + } + + pendingInterceptors () { + const mockAgentClients = this[kClients] + + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) + } + + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() + + if (pending.length === 0) { + return + } + + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) + + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()) + } +} + +module.exports = MockAgent diff --git a/deps/npm/node_modules/undici/lib/mock/mock-client.js b/deps/npm/node_modules/undici/lib/mock/mock-client.js new file mode 100644 index 00000000000000..c375dbd455b262 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-client.js @@ -0,0 +1,59 @@ +'use strict' + +const { promisify } = require('node:util') +const Client = require('../dispatcher/client') +const { buildMockDispatch } = require('./mock-utils') +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = require('./mock-symbols') +const { MockInterceptor } = require('./mock-interceptor') +const Symbols = require('../core/symbols') +const { InvalidArgumentError } = require('../core/errors') + +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +class MockClient extends Client { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockClient diff --git a/deps/npm/node_modules/undici/lib/mock/mock-errors.js b/deps/npm/node_modules/undici/lib/mock/mock-errors.js new file mode 100644 index 00000000000000..3de5603c8a90e2 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-errors.js @@ -0,0 +1,28 @@ +'use strict' + +const { UndiciError } = require('../core/errors') + +const kMockNotMatchedError = Symbol.for('undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED') + +/** + * The request does not match any registered mock dispatches. + */ +class MockNotMatchedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, MockNotMatchedError) + this.name = 'MockNotMatchedError' + this.message = message || 'The request does not match any registered mock dispatches' + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' + } + + static [Symbol.hasInstance] (instance) { + return instance && instance[kMockNotMatchedError] === true + } + + [kMockNotMatchedError] = true +} + +module.exports = { + MockNotMatchedError +} diff --git a/deps/npm/node_modules/undici/lib/mock/mock-interceptor.js b/deps/npm/node_modules/undici/lib/mock/mock-interceptor.js new file mode 100644 index 00000000000000..c6b16b35f9c372 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-interceptor.js @@ -0,0 +1,207 @@ +'use strict' + +const { getResponseData, buildKey, addMockDispatch } = require('./mock-utils') +const { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch +} = require('./mock-symbols') +const { InvalidArgumentError } = require('../core/errors') +const { buildURL } = require('../core/util') + +/** + * Defines the scope API for an interceptor reply + */ +class MockScope { + constructor (mockDispatch) { + this[kMockDispatch] = mockDispatch + } + + /** + * Delay a reply by a set amount in ms. + */ + delay (waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0') + } + + this[kMockDispatch].delay = waitInMs + return this + } + + /** + * For a defined reply, never mark as consumed. + */ + persist () { + this[kMockDispatch].persist = true + return this + } + + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times (repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') + } + + this[kMockDispatch].times = repeatTimes + return this + } +} + +/** + * Defines an interceptor for a Mock + */ +class MockInterceptor { + constructor (opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object') + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined') + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET' + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/web/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() + } + + this[kDispatchKey] = buildKey(opts) + this[kDispatches] = mockDispatches + this[kDefaultHeaders] = {} + this[kDefaultTrailers] = {} + this[kContentLength] = false + } + + createMockScopeDispatchData ({ statusCode, data, responseOptions }) { + const responseData = getResponseData(data) + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } + + return { statusCode, data, headers, trailers } + } + + validateReplyParameters (replyParameters) { + if (typeof replyParameters.statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined') + } + if (typeof replyParameters.responseOptions !== 'object' || replyParameters.responseOptions === null) { + throw new InvalidArgumentError('responseOptions must be an object') + } + } + + /** + * Mock an undici request with a defined reply. + */ + reply (replyOptionsCallbackOrStatusCode) { + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyOptionsCallbackOrStatusCode === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + const wrappedDefaultsCallback = (opts) => { + // Our reply options callback contains the parameter for statusCode, data and options. + const resolvedData = replyOptionsCallbackOrStatusCode(opts) + + // Check if it is in the right format + if (typeof resolvedData !== 'object' || resolvedData === null) { + throw new InvalidArgumentError('reply options callback must return an object') + } + + const replyParameters = { data: '', responseOptions: {}, ...resolvedData } + this.validateReplyParameters(replyParameters) + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return { + ...this.createMockScopeDispatchData(replyParameters) + } + } + + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) + return new MockScope(newMockDispatch) + } + + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + const replyParameters = { + statusCode: replyOptionsCallbackOrStatusCode, + data: arguments[1] === undefined ? '' : arguments[1], + responseOptions: arguments[2] === undefined ? {} : arguments[2] + } + this.validateReplyParameters(replyParameters) + + // Send in-already provided data like usual + const dispatchData = this.createMockScopeDispatchData(replyParameters) + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) + return new MockScope(newMockDispatch) + } + + /** + * Mock an undici request with a defined error. + */ + replyWithError (error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined') + } + + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) + return new MockScope(newMockDispatch) + } + + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders (headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined') + } + + this[kDefaultHeaders] = headers + return this + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers (trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined') + } + + this[kDefaultTrailers] = trailers + return this + } + + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength () { + this[kContentLength] = true + return this + } +} + +module.exports.MockInterceptor = MockInterceptor +module.exports.MockScope = MockScope diff --git a/deps/npm/node_modules/undici/lib/mock/mock-pool.js b/deps/npm/node_modules/undici/lib/mock/mock-pool.js new file mode 100644 index 00000000000000..8b005d72ead3f0 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-pool.js @@ -0,0 +1,59 @@ +'use strict' + +const { promisify } = require('node:util') +const Pool = require('../dispatcher/pool') +const { buildMockDispatch } = require('./mock-utils') +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = require('./mock-symbols') +const { MockInterceptor } = require('./mock-interceptor') +const Symbols = require('../core/symbols') +const { InvalidArgumentError } = require('../core/errors') + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockPool diff --git a/deps/npm/node_modules/undici/lib/mock/mock-symbols.js b/deps/npm/node_modules/undici/lib/mock/mock-symbols.js new file mode 100644 index 00000000000000..8c4cbb60e16c47 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-symbols.js @@ -0,0 +1,23 @@ +'use strict' + +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +} diff --git a/deps/npm/node_modules/undici/lib/mock/mock-utils.js b/deps/npm/node_modules/undici/lib/mock/mock-utils.js new file mode 100644 index 00000000000000..8f18db31ee210c --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/mock-utils.js @@ -0,0 +1,367 @@ +'use strict' + +const { MockNotMatchedError } = require('./mock-errors') +const { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect +} = require('./mock-symbols') +const { buildURL } = require('../core/util') +const { STATUS_CODES } = require('node:http') +const { + types: { + isPromise + } +} = require('node:util') + +function matchValue (match, value) { + if (typeof match === 'string') { + return match === value + } + if (match instanceof RegExp) { + return match.test(value) + } + if (typeof match === 'function') { + return match(value) === true + } + return false +} + +function lowerCaseEntries (headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue] + }) + ) +} + +/** + * @param {import('../../index').Headers|string[]|Record} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1] + } + } + + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()] + } +} + +/** @param {string[]} headers */ +function buildHeadersFromArray (headers) { // fetch HeadersList + const clone = headers.slice() + const entries = [] + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]) + } + return Object.fromEntries(entries) +} + +function matchHeaders (mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { // fetch HeadersList + headers = buildHeadersFromArray(headers) + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) + } + if (typeof mockDispatch.headers === 'undefined') { + return true + } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false + } + + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName) + + if (!matchValue(matchHeaderValue, headerValue)) { + return false + } + } + return true +} + +function safeUrl (path) { + if (typeof path !== 'string') { + return path + } + + const pathSegments = path.split('?') + + if (pathSegments.length !== 2) { + return path + } + + const qp = new URLSearchParams(pathSegments.pop()) + qp.sort() + return [...pathSegments, qp.toString()].join('?') +} + +function matchKey (mockDispatch, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch.path, path) + const methodMatch = matchValue(mockDispatch.method, method) + const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true + const headersMatch = matchHeaders(mockDispatch, headers) + return pathMatch && methodMatch && bodyMatch && headersMatch +} + +function getResponseData (data) { + if (Buffer.isBuffer(data)) { + return data + } else if (data instanceof Uint8Array) { + return data + } else if (data instanceof ArrayBuffer) { + return data + } else if (typeof data === 'object') { + return JSON.stringify(data) + } else { + return data.toString() + } +} + +function getMockDispatch (mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath + + // Match path + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) + } + + // Match method + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`) + } + + // Match body + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`) + } + + // Match headers + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) + if (matchedMockDispatches.length === 0) { + const headers = typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`) + } + + return matchedMockDispatches[0] +} + +function addMockDispatch (mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } + const replyData = typeof data === 'function' ? { callback: data } : { ...data } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } + mockDispatches.push(newMockDispatch) + return newMockDispatch +} + +function deleteMockDispatch (mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false + } + return matchKey(dispatch, key) + }) + if (index !== -1) { + mockDispatches.splice(index, 1) + } +} + +function buildKey (opts) { + const { path, method, body, headers, query } = opts + return { + path, + method, + body, + headers, + query + } +} + +function generateKeyValues (data) { + const keys = Object.keys(data) + const result = [] + for (let i = 0; i < keys.length; ++i) { + const key = keys[i] + const value = data[key] + const name = Buffer.from(`${key}`) + if (Array.isArray(value)) { + for (let j = 0; j < value.length; ++j) { + result.push(name, Buffer.from(`${value[j]}`)) + } + } else { + result.push(name, Buffer.from(`${value}`)) + } + } + return result +} + +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + return STATUS_CODES[statusCode] || 'unknown' +} + +async function getResponse (body) { + const buffers = [] + for await (const data of body) { + buffers.push(data) + } + return Buffer.concat(buffers).toString('utf8') +} + +/** + * Mock dispatch function used to simulate undici dispatches + */ +function mockDispatch (opts, handler) { + // Get mock dispatch from built key + const key = buildKey(opts) + const mockDispatch = getMockDispatch(this[kDispatches], key) + + mockDispatch.timesInvoked++ + + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } + } + + // Parse mockDispatch data + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch + const { timesInvoked, times } = mockDispatch + + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times + + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key) + handler.onError(error) + return true + } + + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]) + }, delay) + } else { + handleReply(this[kDispatches]) + } + + function handleReply (mockDispatches, _data = data) { + // fetch's HeadersList is a 1D string array + const optsHeaders = Array.isArray(opts.headers) + ? buildHeadersFromArray(opts.headers) + : opts.headers + const body = typeof _data === 'function' + ? _data({ ...opts, headers: optsHeaders }) + : _data + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then((newData) => handleReply(mockDispatches, newData)) + return + } + + const responseData = getResponseData(body) + const responseHeaders = generateKeyValues(headers) + const responseTrailers = generateKeyValues(trailers) + + handler.onConnect?.(err => handler.onError(err), null) + handler.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode)) + handler.onData?.(Buffer.from(responseData)) + handler.onComplete?.(responseTrailers) + deleteMockDispatch(mockDispatches, key) + } + + function resume () {} + + return true +} + +function buildMockDispatch () { + const agent = this[kMockAgent] + const origin = this[kOrigin] + const originalDispatch = this[kOriginalDispatch] + + return function dispatch (opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler) + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect]() + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler) + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) + } + } else { + throw error + } + } + } else { + originalDispatch.call(this, opts, handler) + } + } +} + +function checkNetConnect (netConnect, origin) { + const url = new URL(origin) + if (netConnect === true) { + return true + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true + } + return false +} + +function buildMockOptions (opts) { + if (opts) { + const { agent, ...mockOptions } = opts + return mockOptions + } +} + +module.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName, + buildHeadersFromArray +} diff --git a/deps/npm/node_modules/undici/lib/mock/pending-interceptors-formatter.js b/deps/npm/node_modules/undici/lib/mock/pending-interceptors-formatter.js new file mode 100644 index 00000000000000..ccca951195aa6b --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/pending-interceptors-formatter.js @@ -0,0 +1,43 @@ +'use strict' + +const { Transform } = require('node:stream') +const { Console } = require('node:console') + +const PERSISTENT = process.versions.icu ? '✅' : 'Y ' +const NOT_PERSISTENT = process.versions.icu ? '❌' : 'N ' + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) + + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) + } + + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? PERSISTENT : NOT_PERSISTENT, + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) + + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() + } +} diff --git a/deps/npm/node_modules/undici/lib/mock/pluralizer.js b/deps/npm/node_modules/undici/lib/mock/pluralizer.js new file mode 100644 index 00000000000000..47f150bc27a80a --- /dev/null +++ b/deps/npm/node_modules/undici/lib/mock/pluralizer.js @@ -0,0 +1,29 @@ +'use strict' + +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} + +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} + +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } + + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } +} diff --git a/deps/npm/node_modules/undici/lib/util/timers.js b/deps/npm/node_modules/undici/lib/util/timers.js new file mode 100644 index 00000000000000..c15bbc37aa158c --- /dev/null +++ b/deps/npm/node_modules/undici/lib/util/timers.js @@ -0,0 +1,423 @@ +'use strict' + +/** + * This module offers an optimized timer implementation designed for scenarios + * where high precision is not critical. + * + * The timer achieves faster performance by using a low-resolution approach, + * with an accuracy target of within 500ms. This makes it particularly useful + * for timers with delays of 1 second or more, where exact timing is less + * crucial. + * + * It's important to note that Node.js timers are inherently imprecise, as + * delays can occur due to the event loop being blocked by other operations. + * Consequently, timers may trigger later than their scheduled time. + */ + +/** + * The fastNow variable contains the internal fast timer clock value. + * + * @type {number} + */ +let fastNow = 0 + +/** + * RESOLUTION_MS represents the target resolution time in milliseconds. + * + * @type {number} + * @default 1000 + */ +const RESOLUTION_MS = 1e3 + +/** + * TICK_MS defines the desired interval in milliseconds between each tick. + * The target value is set to half the resolution time, minus 1 ms, to account + * for potential event loop overhead. + * + * @type {number} + * @default 499 + */ +const TICK_MS = (RESOLUTION_MS >> 1) - 1 + +/** + * fastNowTimeout is a Node.js timer used to manage and process + * the FastTimers stored in the `fastTimers` array. + * + * @type {NodeJS.Timeout} + */ +let fastNowTimeout + +/** + * The kFastTimer symbol is used to identify FastTimer instances. + * + * @type {Symbol} + */ +const kFastTimer = Symbol('kFastTimer') + +/** + * The fastTimers array contains all active FastTimers. + * + * @type {FastTimer[]} + */ +const fastTimers = [] + +/** + * These constants represent the various states of a FastTimer. + */ + +/** + * The `NOT_IN_LIST` constant indicates that the FastTimer is not included + * in the `fastTimers` array. Timers with this status will not be processed + * during the next tick by the `onTick` function. + * + * A FastTimer can be re-added to the `fastTimers` array by invoking the + * `refresh` method on the FastTimer instance. + * + * @type {-2} + */ +const NOT_IN_LIST = -2 + +/** + * The `TO_BE_CLEARED` constant indicates that the FastTimer is scheduled + * for removal from the `fastTimers` array. A FastTimer in this state will + * be removed in the next tick by the `onTick` function and will no longer + * be processed. + * + * This status is also set when the `clear` method is called on the FastTimer instance. + * + * @type {-1} + */ +const TO_BE_CLEARED = -1 + +/** + * The `PENDING` constant signifies that the FastTimer is awaiting processing + * in the next tick by the `onTick` function. Timers with this status will have + * their `_idleStart` value set and their status updated to `ACTIVE` in the next tick. + * + * @type {0} + */ +const PENDING = 0 + +/** + * The `ACTIVE` constant indicates that the FastTimer is active and waiting + * for its timer to expire. During the next tick, the `onTick` function will + * check if the timer has expired, and if so, it will execute the associated callback. + * + * @type {1} + */ +const ACTIVE = 1 + +/** + * The onTick function processes the fastTimers array. + * + * @returns {void} + */ +function onTick () { + /** + * Increment the fastNow value by the TICK_MS value, despite the actual time + * that has passed since the last tick. This approach ensures independence + * from the system clock and delays caused by a blocked event loop. + * + * @type {number} + */ + fastNow += TICK_MS + + /** + * The `idx` variable is used to iterate over the `fastTimers` array. + * Expired timers are removed by replacing them with the last element in the array. + * Consequently, `idx` is only incremented when the current element is not removed. + * + * @type {number} + */ + let idx = 0 + + /** + * The len variable will contain the length of the fastTimers array + * and will be decremented when a FastTimer should be removed from the + * fastTimers array. + * + * @type {number} + */ + let len = fastTimers.length + + while (idx < len) { + /** + * @type {FastTimer} + */ + const timer = fastTimers[idx] + + // If the timer is in the ACTIVE state and the timer has expired, it will + // be processed in the next tick. + if (timer._state === PENDING) { + // Set the _idleStart value to the fastNow value minus the TICK_MS value + // to account for the time the timer was in the PENDING state. + timer._idleStart = fastNow - TICK_MS + timer._state = ACTIVE + } else if ( + timer._state === ACTIVE && + fastNow >= timer._idleStart + timer._idleTimeout + ) { + timer._state = TO_BE_CLEARED + timer._idleStart = -1 + timer._onTimeout(timer._timerArg) + } + + if (timer._state === TO_BE_CLEARED) { + timer._state = NOT_IN_LIST + + // Move the last element to the current index and decrement len if it is + // not the only element in the array. + if (--len !== 0) { + fastTimers[idx] = fastTimers[len] + } + } else { + ++idx + } + } + + // Set the length of the fastTimers array to the new length and thus + // removing the excess FastTimers elements from the array. + fastTimers.length = len + + // If there are still active FastTimers in the array, refresh the Timer. + // If there are no active FastTimers, the timer will be refreshed again + // when a new FastTimer is instantiated. + if (fastTimers.length !== 0) { + refreshTimeout() + } +} + +function refreshTimeout () { + // If the fastNowTimeout is already set, refresh it. + if (fastNowTimeout) { + fastNowTimeout.refresh() + // fastNowTimeout is not instantiated yet, create a new Timer. + } else { + clearTimeout(fastNowTimeout) + fastNowTimeout = setTimeout(onTick, TICK_MS) + + // If the Timer has an unref method, call it to allow the process to exit if + // there are no other active handles. + if (fastNowTimeout.unref) { + fastNowTimeout.unref() + } + } +} + +/** + * The `FastTimer` class is a data structure designed to store and manage + * timer information. + */ +class FastTimer { + [kFastTimer] = true + + /** + * The state of the timer, which can be one of the following: + * - NOT_IN_LIST (-2) + * - TO_BE_CLEARED (-1) + * - PENDING (0) + * - ACTIVE (1) + * + * @type {-2|-1|0|1} + * @private + */ + _state = NOT_IN_LIST + + /** + * The number of milliseconds to wait before calling the callback. + * + * @type {number} + * @private + */ + _idleTimeout = -1 + + /** + * The time in milliseconds when the timer was started. This value is used to + * calculate when the timer should expire. + * + * @type {number} + * @default -1 + * @private + */ + _idleStart = -1 + + /** + * The function to be executed when the timer expires. + * @type {Function} + * @private + */ + _onTimeout + + /** + * The argument to be passed to the callback when the timer expires. + * + * @type {*} + * @private + */ + _timerArg + + /** + * @constructor + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should wait + * before the specified function or code is executed. + * @param {*} arg + */ + constructor (callback, delay, arg) { + this._onTimeout = callback + this._idleTimeout = delay + this._timerArg = arg + + this.refresh() + } + + /** + * Sets the timer's start time to the current time, and reschedules the timer + * to call its callback at the previously specified duration adjusted to the + * current time. + * Using this on a timer that has already called its callback will reactivate + * the timer. + * + * @returns {void} + */ + refresh () { + // In the special case that the timer is not in the list of active timers, + // add it back to the array to be processed in the next tick by the onTick + // function. + if (this._state === NOT_IN_LIST) { + fastTimers.push(this) + } + + // If the timer is the only active timer, refresh the fastNowTimeout for + // better resolution. + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout() + } + + // Setting the state to PENDING will cause the timer to be reset in the + // next tick by the onTick function. + this._state = PENDING + } + + /** + * The `clear` method cancels the timer, preventing it from executing. + * + * @returns {void} + * @private + */ + clear () { + // Set the state to TO_BE_CLEARED to mark the timer for removal in the next + // tick by the onTick function. + this._state = TO_BE_CLEARED + + // Reset the _idleStart value to -1 to indicate that the timer is no longer + // active. + this._idleStart = -1 + } +} + +/** + * This module exports a setTimeout and clearTimeout function that can be + * used as a drop-in replacement for the native functions. + */ +module.exports = { + /** + * The setTimeout() method sets a timer which executes a function once the + * timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {NodeJS.Timeout|FastTimer} + */ + setTimeout (callback, delay, arg) { + // If the delay is less than or equal to the RESOLUTION_MS value return a + // native Node.js Timer instance. + return delay <= RESOLUTION_MS + ? setTimeout(callback, delay, arg) + : new FastTimer(callback, delay, arg) + }, + /** + * The clearTimeout method cancels an instantiated Timer previously created + * by calling setTimeout. + * + * @param {NodeJS.Timeout|FastTimer} timeout + */ + clearTimeout (timeout) { + // If the timeout is a FastTimer, call its own clear method. + if (timeout[kFastTimer]) { + /** + * @type {FastTimer} + */ + timeout.clear() + // Otherwise it is an instance of a native NodeJS.Timeout, so call the + // Node.js native clearTimeout function. + } else { + clearTimeout(timeout) + } + }, + /** + * The setFastTimeout() method sets a fastTimer which executes a function once + * the timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {FastTimer} + */ + setFastTimeout (callback, delay, arg) { + return new FastTimer(callback, delay, arg) + }, + /** + * The clearTimeout method cancels an instantiated FastTimer previously + * created by calling setFastTimeout. + * + * @param {FastTimer} timeout + */ + clearFastTimeout (timeout) { + timeout.clear() + }, + /** + * The now method returns the value of the internal fast timer clock. + * + * @returns {number} + */ + now () { + return fastNow + }, + /** + * Trigger the onTick function to process the fastTimers array. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + * @param {number} [delay=0] The delay in milliseconds to add to the now value. + */ + tick (delay = 0) { + fastNow += delay - RESOLUTION_MS + 1 + onTick() + onTick() + }, + /** + * Reset FastTimers. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + reset () { + fastNow = 0 + fastTimers.length = 0 + clearTimeout(fastNowTimeout) + fastNowTimeout = null + }, + /** + * Exporting for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + kFastTimer +} diff --git a/deps/npm/node_modules/undici/lib/web/cache/cache.js b/deps/npm/node_modules/undici/lib/web/cache/cache.js new file mode 100644 index 00000000000000..1c1a5911242771 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cache/cache.js @@ -0,0 +1,859 @@ +'use strict' + +const { kConstruct } = require('./symbols') +const { urlEquals, getFieldValues } = require('./util') +const { kEnumerableProperty, isDisturbed } = require('../../core/util') +const { webidl } = require('../fetch/webidl') +const { Response, cloneResponse, fromInnerResponse } = require('../fetch/response') +const { Request, fromInnerRequest } = require('../fetch/request') +const { kState } = require('../fetch/symbols') +const { fetching } = require('../fetch/index') +const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util') +const assert = require('node:assert') + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ + +class Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList + + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() + } + + webidl.util.markAsUncloneable(this) + this.#relevantRequestResponseList = arguments[1] + } + + async match (request, options = {}) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.match' + webidl.argumentLengthCheck(arguments, 1, prefix) + + request = webidl.converters.RequestInfo(request, prefix, 'request') + options = webidl.converters.CacheQueryOptions(options, prefix, 'options') + + const p = this.#internalMatchAll(request, options, 1) + + if (p.length === 0) { + return + } + + return p[0] + } + + async matchAll (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.matchAll' + if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request') + options = webidl.converters.CacheQueryOptions(options, prefix, 'options') + + return this.#internalMatchAll(request, options) + } + + async add (request) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.add' + webidl.argumentLengthCheck(arguments, 1, prefix) + + request = webidl.converters.RequestInfo(request, prefix, 'request') + + // 1. + const requests = [request] + + // 2. + const responseArrayPromise = this.addAll(requests) + + // 3. + return await responseArrayPromise + } + + async addAll (requests) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.addAll' + webidl.argumentLengthCheck(arguments, 1, prefix) + + // 1. + const responsePromises = [] + + // 2. + const requestList = [] + + // 3. + for (let request of requests) { + if (request === undefined) { + throw webidl.errors.conversionFailed({ + prefix, + argument: 'Argument 1', + types: ['undefined is not allowed'] + }) + } + + request = webidl.converters.RequestInfo(request) + + if (typeof request === 'string') { + continue + } + + // 3.1 + const r = request[kState] + + // 3.2 + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected http/s scheme when method is not GET.' + }) + } + } + + // 4. + /** @type {ReturnType[]} */ + const fetchControllers = [] + + // 5. + for (const request of requests) { + // 5.1 + const r = new Request(request)[kState] + + // 5.2 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected http/s scheme.' + }) + } + + // 5.4 + r.initiator = 'fetch' + r.destination = 'subresource' + + // 5.5 + requestList.push(r) + + // 5.6 + const responsePromise = createDeferredPromise() + + // 5.7 + fetchControllers.push(fetching({ + request: r, + processResponse (response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })) + } else if (response.headersList.contains('vary')) { // 2. + // 2.1 + const fieldValues = getFieldValues(response.headersList.get('vary')) + + // 2.2 + for (const fieldValue of fieldValues) { + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })) + + for (const controller of fetchControllers) { + controller.abort() + } + + return + } + } + } + }, + processResponseEndOfBody (response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')) + return + } + + // 2. + responsePromise.resolve(response) + } + })) + + // 5.8 + responsePromises.push(responsePromise.promise) + } + + // 6. + const p = Promise.all(responsePromises) + + // 7. + const responses = await p + + // 7.1 + const operations = [] + + // 7.2 + let index = 0 + + // 7.3 + for (const response of responses) { + // 7.3.1 + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 7.3.2 + request: requestList[index], // 7.3.3 + response // 7.3.4 + } + + operations.push(operation) // 7.3.5 + + index++ // 7.3.6 + } + + // 7.5 + const cacheJobPromise = createDeferredPromise() + + // 7.6.1 + let errorData = null + + // 7.6.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 7.6.3 + queueMicrotask(() => { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined) + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData) + } + }) + + // 7.7 + return cacheJobPromise.promise + } + + async put (request, response) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.put' + webidl.argumentLengthCheck(arguments, 2, prefix) + + request = webidl.converters.RequestInfo(request, prefix, 'request') + response = webidl.converters.Response(response, prefix, 'response') + + // 1. + let innerRequest = null + + // 2. + if (request instanceof Request) { + innerRequest = request[kState] + } else { // 3. + innerRequest = new Request(request)[kState] + } + + // 4. + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected an http/s scheme when method is not GET' + }) + } + + // 5. + const innerResponse = response[kState] + + // 6. + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: prefix, + message: 'Got 206 status' + }) + } + + // 7. + if (innerResponse.headersList.contains('vary')) { + // 7.1. + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) + + // 7.2. + for (const fieldValue of fieldValues) { + // 7.2.1 + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: prefix, + message: 'Got * vary field value' + }) + } + } + } + + // 8. + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: prefix, + message: 'Response body is locked or disturbed' + }) + } + + // 9. + const clonedResponse = cloneResponse(innerResponse) + + // 10. + const bodyReadPromise = createDeferredPromise() + + // 11. + if (innerResponse.body != null) { + // 11.1 + const stream = innerResponse.body.stream + + // 11.2 + const reader = stream.getReader() + + // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) + } else { + bodyReadPromise.resolve(undefined) + } + + // 12. + /** @type {CacheBatchOperation[]} */ + const operations = [] + + // 13. + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 14. + request: innerRequest, // 15. + response: clonedResponse // 16. + } + + // 17. + operations.push(operation) + + // 19. + const bytes = await bodyReadPromise.promise + + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes + } + + // 19.1 + const cacheJobPromise = createDeferredPromise() + + // 19.2.1 + let errorData = null + + // 19.2.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 19.2.3 + queueMicrotask(() => { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve() + } else { // 19.2.3.2 + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + async delete (request, options = {}) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.delete' + webidl.argumentLengthCheck(arguments, 1, prefix) + + request = webidl.converters.RequestInfo(request, prefix, 'request') + options = webidl.converters.CacheQueryOptions(options, prefix, 'options') + + /** + * @type {Request} + */ + let r = null + + if (request instanceof Request) { + r = request[kState] + + if (r.method !== 'GET' && !options.ignoreMethod) { + return false + } + } else { + assert(typeof request === 'string') + + r = new Request(request)[kState] + } + + /** @type {CacheBatchOperation[]} */ + const operations = [] + + /** @type {CacheBatchOperation} */ + const operation = { + type: 'delete', + request: r, + options + } + + operations.push(operation) + + const cacheJobPromise = createDeferredPromise() + + let errorData = null + let requestResponses + + try { + requestResponses = this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length) + } else { + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {Promise} + */ + async keys (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + const prefix = 'Cache.keys' + + if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request') + options = webidl.converters.CacheQueryOptions(options, prefix, 'options') + + // 1. + let r = null + + // 2. + if (request !== undefined) { + // 2.1 + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { // 2.2 + r = new Request(request)[kState] + } + } + + // 4. + const promise = createDeferredPromise() + + // 5. + // 5.1 + const requests = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + // 5.2.1.1 + requests.push(requestResponse[0]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + // 5.3.2.1 + requests.push(requestResponse[0]) + } + } + + // 5.4 + queueMicrotask(() => { + // 5.4.1 + const requestList = [] + + // 5.4.2 + for (const request of requests) { + const requestObject = fromInnerRequest( + request, + new AbortController().signal, + 'immutable' + ) + // 5.4.2.1 + requestList.push(requestObject) + } + + // 5.4.3 + promise.resolve(Object.freeze(requestList)) + }) + + return promise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations (operations) { + // 1. + const cache = this.#relevantRequestResponseList + + // 2. + const backupCache = [...cache] + + // 3. + const addedItems = [] + + // 4.1 + const resultList = [] + + try { + // 4.2 + for (const operation of operations) { + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }) + } + + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }) + } + + // 4.2.3 + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError') + } + + // 4.2.4 + let requestResponses + + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = this.#queryCache(operation.request, operation.options) + + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return [] + } + + // 4.2.5.2 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.5.2.1 + cache.splice(idx, 1) + } + } else if (operation.type === 'put') { // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }) + } + + // 4.2.6.2 + const r = operation.request + + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }) + } + + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }) + } + + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }) + } + + // 4.2.6.6 + requestResponses = this.#queryCache(operation.request) + + // 4.2.6.7 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.6.7.1 + cache.splice(idx, 1) + } + + // 4.2.6.8 + cache.push([operation.request, operation.response]) + + // 4.2.6.10 + addedItems.push([operation.request, operation.response]) + } + + // 4.2.7 + resultList.push([operation.request, operation.response]) + } + + // 4.3 + return resultList + } catch (e) { // 5. + // 5.1 + this.#relevantRequestResponseList.length = 0 + + // 5.2 + this.#relevantRequestResponseList = backupCache + + // 5.3 + throw e + } + } + + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache (requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + const resultList = [] + + const storage = targetStorage ?? this.#relevantRequestResponseList + + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse) + } + } + + return resultList + } + + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem (requestQuery, request, response = null, options) { + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } + + const queryURL = new URL(requestQuery.url) + + const cachedURL = new URL(request.url) + + if (options?.ignoreSearch) { + cachedURL.search = '' + + queryURL.search = '' + } + + if (!urlEquals(queryURL, cachedURL, true)) { + return false + } + + if ( + response == null || + options?.ignoreVary || + !response.headersList.contains('vary') + ) { + return true + } + + const fieldValues = getFieldValues(response.headersList.get('vary')) + + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false + } + + const requestValue = request.headersList.get(fieldValue) + const queryValue = requestQuery.headersList.get(fieldValue) + + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false + } + } + + return true + } + + #internalMatchAll (request, options, maxResponses = Infinity) { + // 1. + let r = null + + // 2. + if (request !== undefined) { + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState] + } + } + + // 5. + // 5.1 + const responses = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]) + } + } + + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! + + // 5.5.1 + const responseList = [] + + // 5.5.2 + for (const response of responses) { + // 5.5.2.1 + const responseObject = fromInnerResponse(response, 'immutable') + + responseList.push(responseObject.clone()) + + if (responseList.length >= maxResponses) { + break + } + } + + // 6. + return Object.freeze(responseList) + } +} + +Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +const cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: () => false + } +] + +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) + +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } +]) + +webidl.converters.Response = webidl.interfaceConverter(Response) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.RequestInfo +) + +module.exports = { + Cache +} diff --git a/deps/npm/node_modules/undici/lib/web/cache/cachestorage.js b/deps/npm/node_modules/undici/lib/web/cache/cachestorage.js new file mode 100644 index 00000000000000..55dba352e99d86 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cache/cachestorage.js @@ -0,0 +1,152 @@ +'use strict' + +const { kConstruct } = require('./symbols') +const { Cache } = require('./cache') +const { webidl } = require('../fetch/webidl') +const { kEnumerableProperty } = require('../../core/util') + +class CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has (cacheName) { + webidl.brandCheck(this, CacheStorage) + + const prefix = 'CacheStorage.has' + webidl.argumentLengthCheck(arguments, 1, prefix) + + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName') + + // 2.1.1 + // 2.2 + return this.#caches.has(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open (cacheName) { + webidl.brandCheck(this, CacheStorage) + + const prefix = 'CacheStorage.open' + webidl.argumentLengthCheck(arguments, 1, prefix) + + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName') + + // 2.1 + if (this.#caches.has(cacheName)) { + // await caches.open('v1') !== await caches.open('v1') + + // 2.1.1 + const cache = this.#caches.get(cacheName) + + // 2.1.1.1 + return new Cache(kConstruct, cache) + } + + // 2.2 + const cache = [] + + // 2.3 + this.#caches.set(cacheName, cache) + + // 2.4 + return new Cache(kConstruct, cache) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete (cacheName) { + webidl.brandCheck(this, CacheStorage) + + const prefix = 'CacheStorage.delete' + webidl.argumentLengthCheck(arguments, 1, prefix) + + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName') + + return this.#caches.delete(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {Promise} + */ + async keys () { + webidl.brandCheck(this, CacheStorage) + + // 2.1 + const keys = this.#caches.keys() + + // 2.2 + return [...keys] + } +} + +Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +module.exports = { + CacheStorage +} diff --git a/deps/npm/node_modules/undici/lib/web/cache/symbols.js b/deps/npm/node_modules/undici/lib/web/cache/symbols.js new file mode 100644 index 00000000000000..9271fb61267021 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cache/symbols.js @@ -0,0 +1,5 @@ +'use strict' + +module.exports = { + kConstruct: require('../../core/symbols').kConstruct +} diff --git a/deps/npm/node_modules/undici/lib/web/cache/util.js b/deps/npm/node_modules/undici/lib/web/cache/util.js new file mode 100644 index 00000000000000..5ac9d846ddc09b --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cache/util.js @@ -0,0 +1,45 @@ +'use strict' + +const assert = require('node:assert') +const { URLSerializer } = require('../fetch/data-url') +const { isValidHeaderName } = require('../fetch/util') + +/** + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} + */ +function urlEquals (A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment) + + const serializedB = URLSerializer(B, excludeFragment) + + return serializedA === serializedB +} + +/** + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header + */ +function getFieldValues (header) { + assert(header !== null) + + const values = [] + + for (let value of header.split(',')) { + value = value.trim() + + if (isValidHeaderName(value)) { + values.push(value) + } + } + + return values +} + +module.exports = { + urlEquals, + getFieldValues +} diff --git a/deps/npm/node_modules/undici/lib/web/cookies/constants.js b/deps/npm/node_modules/undici/lib/web/cookies/constants.js new file mode 100644 index 00000000000000..85f1fec0e93c80 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cookies/constants.js @@ -0,0 +1,12 @@ +'use strict' + +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +const maxAttributeValueSize = 1024 + +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +const maxNameValuePairSize = 4096 + +module.exports = { + maxAttributeValueSize, + maxNameValuePairSize +} diff --git a/deps/npm/node_modules/undici/lib/web/cookies/index.js b/deps/npm/node_modules/undici/lib/web/cookies/index.js new file mode 100644 index 00000000000000..323aa9ee6fbfb9 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cookies/index.js @@ -0,0 +1,184 @@ +'use strict' + +const { parseSetCookie } = require('./parse') +const { stringify } = require('./util') +const { webidl } = require('../fetch/webidl') +const { Headers } = require('../fetch/headers') + +/** + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed + */ + +/** + * @param {Headers} headers + * @returns {Record} + */ +function getCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, 'getCookies') + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookie = headers.get('cookie') + const out = {} + + if (!cookie) { + return out + } + + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('=') + + out[name.trim()] = value.join('=') + } + + return out +} + +/** + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} + */ +function deleteCookie (headers, name, attributes) { + webidl.brandCheck(headers, Headers, { strict: false }) + + const prefix = 'deleteCookie' + webidl.argumentLengthCheck(arguments, 2, prefix) + + name = webidl.converters.DOMString(name, prefix, 'name') + attributes = webidl.converters.DeleteCookieAttributes(attributes) + + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, { + name, + value: '', + expires: new Date(0), + ...attributes + }) +} + +/** + * @param {Headers} headers + * @returns {Cookie[]} + */ +function getSetCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, 'getSetCookies') + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookies = headers.getSetCookie() + + if (!cookies) { + return [] + } + + return cookies.map((pair) => parseSetCookie(pair)) +} + +/** + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} + */ +function setCookie (headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, 'setCookie') + + webidl.brandCheck(headers, Headers, { strict: false }) + + cookie = webidl.converters.Cookie(cookie) + + const str = stringify(cookie) + + if (str) { + headers.append('Set-Cookie', str) + } +} + +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: () => null + } +]) + +webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value) + } + + return new Date(value) + }), + key: 'expires', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: () => null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: () => new Array(0) + } +]) + +module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie +} diff --git a/deps/npm/node_modules/undici/lib/web/cookies/parse.js b/deps/npm/node_modules/undici/lib/web/cookies/parse.js new file mode 100644 index 00000000000000..3c48c26b93ffa0 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cookies/parse.js @@ -0,0 +1,317 @@ +'use strict' + +const { maxNameValuePairSize, maxAttributeValueSize } = require('./constants') +const { isCTLExcludingHtab } = require('./util') +const { collectASequenceOfCodePointsFast } = require('../fetch/data-url') +const assert = require('node:assert') + +/** + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned + */ +function parseSetCookie (header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null + } + + let nameValuePair = '' + let unparsedAttributes = '' + let name = '' + let value = '' + + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + const position = { position: 0 } + + nameValuePair = collectASequenceOfCodePointsFast(';', header, position) + unparsedAttributes = header.slice(position.position) + } else { + // Otherwise: + + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header + } + + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + const position = { position: 0 } + name = collectASequenceOfCodePointsFast( + '=', + nameValuePair, + position + ) + value = nameValuePair.slice(position.position + 1) + } + + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim() + value = value.trim() + + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null + } + + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return { + name, value, ...parseUnparsedAttributes(unparsedAttributes) + } +} + +/** + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.]={}} cookieAttributeList + */ +function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList + } + + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';') + unparsedAttributes = unparsedAttributes.slice(1) + + let cookieAv = '' + + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast( + ';', + unparsedAttributes, + { position: 0 } + ) + unparsedAttributes = unparsedAttributes.slice(cookieAv.length) + } else { + // Otherwise: + + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes + unparsedAttributes = '' + } + + // Let the cookie-av string be the characters consumed in this step. + + let attributeName = '' + let attributeValue = '' + + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + const position = { position: 0 } + + attributeName = collectASequenceOfCodePointsFast( + '=', + cookieAv, + position + ) + attributeValue = cookieAv.slice(position.position + 1) + } else { + // Otherwise: + + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv + } + + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim() + attributeValue = attributeValue.trim() + + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + const attributeNameLowercase = attributeName.toLowerCase() + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + const expiryTime = new Date(attributeValue) + + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. + + cookieAttributeList.expires = expiryTime + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. + + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + const charCode = attributeValue.charCodeAt(0) + + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 3. Let delta-seconds be the attribute-value converted to an integer. + const deltaSeconds = Number(attributeValue) + + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). + + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) + + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds + + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. + + // 1. Let cookie-domain be the attribute-value. + let cookieDomain = attributeValue + + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1) + } + + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase() + + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. + + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + let cookiePath = '' + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/' + } else { + // Otherwise: + + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue + } + + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. + + cookieAttributeList.secure = true + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. + + cookieAttributeList.httpOnly = true + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: + + // 1. Let enforcement be "Default". + let enforcement = 'Default' + + const attributeValueLowercase = attributeValue.toLowerCase() + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None' + } + + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict' + } + + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax' + } + + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement + } else { + cookieAttributeList.unparsed ??= [] + + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) + } + + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) +} + +module.exports = { + parseSetCookie, + parseUnparsedAttributes +} diff --git a/deps/npm/node_modules/undici/lib/web/cookies/util.js b/deps/npm/node_modules/undici/lib/web/cookies/util.js new file mode 100644 index 00000000000000..254f5419e905bb --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/cookies/util.js @@ -0,0 +1,282 @@ +'use strict' + +/** + * @param {string} value + * @returns {boolean} + */ +function isCTLExcludingHtab (value) { + for (let i = 0; i < value.length; ++i) { + const code = value.charCodeAt(i) + + if ( + (code >= 0x00 && code <= 0x08) || + (code >= 0x0A && code <= 0x1F) || + code === 0x7F + ) { + return true + } + } + return false +} + +/** + CHAR = + token = 1* + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name + */ +function validateCookieName (name) { + for (let i = 0; i < name.length; ++i) { + const code = name.charCodeAt(i) + + if ( + code < 0x21 || // exclude CTLs (0-31), SP and HT + code > 0x7E || // exclude non-ascii and DEL + code === 0x22 || // " + code === 0x28 || // ( + code === 0x29 || // ) + code === 0x3C || // < + code === 0x3E || // > + code === 0x40 || // @ + code === 0x2C || // , + code === 0x3B || // ; + code === 0x3A || // : + code === 0x5C || // \ + code === 0x2F || // / + code === 0x5B || // [ + code === 0x5D || // ] + code === 0x3F || // ? + code === 0x3D || // = + code === 0x7B || // { + code === 0x7D // } + ) { + throw new Error('Invalid cookie name') + } + } +} + +/** + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value + */ +function validateCookieValue (value) { + let len = value.length + let i = 0 + + // if the value is wrapped in DQUOTE + if (value[0] === '"') { + if (len === 1 || value[len - 1] !== '"') { + throw new Error('Invalid cookie value') + } + --len + ++i + } + + while (i < len) { + const code = value.charCodeAt(i++) + + if ( + code < 0x21 || // exclude CTLs (0-31) + code > 0x7E || // non-ascii and DEL (127) + code === 0x22 || // " + code === 0x2C || // , + code === 0x3B || // ; + code === 0x5C // \ + ) { + throw new Error('Invalid cookie value') + } + } +} + +/** + * path-value = + * @param {string} path + */ +function validateCookiePath (path) { + for (let i = 0; i < path.length; ++i) { + const code = path.charCodeAt(i) + + if ( + code < 0x20 || // exclude CTLs (0-31) + code === 0x7F || // DEL + code === 0x3B // ; + ) { + throw new Error('Invalid cookie path') + } + } +} + +/** + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain + */ +function validateCookieDomain (domain) { + if ( + domain.startsWith('-') || + domain.endsWith('.') || + domain.endsWith('-') + ) { + throw new Error('Invalid cookie domain') + } +} + +const IMFDays = [ + 'Sun', 'Mon', 'Tue', 'Wed', + 'Thu', 'Fri', 'Sat' +] + +const IMFMonths = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' +] + +const IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, '0')) + +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] + + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 + + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT + + GMT = %x47.4D.54 ; "GMT", case-sensitive + + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) + + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate (date) { + if (typeof date === 'number') { + date = new Date(date) + } + + return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT` +} + +/** + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge + */ +function validateCookieMaxAge (maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age') + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify (cookie) { + if (cookie.name.length === 0) { + return null + } + + validateCookieName(cookie.name) + validateCookieValue(cookie.value) + + const out = [`${cookie.name}=${cookie.value}`] + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true + } + + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true + cookie.domain = null + cookie.path = '/' + } + + if (cookie.secure) { + out.push('Secure') + } + + if (cookie.httpOnly) { + out.push('HttpOnly') + } + + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge) + out.push(`Max-Age=${cookie.maxAge}`) + } + + if (cookie.domain) { + validateCookieDomain(cookie.domain) + out.push(`Domain=${cookie.domain}`) + } + + if (cookie.path) { + validateCookiePath(cookie.path) + out.push(`Path=${cookie.path}`) + } + + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`) + } + + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`) + } + + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed') + } + + const [key, ...value] = part.split('=') + + out.push(`${key.trim()}=${value.join('=')}`) + } + + return out.join('; ') +} + +module.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify +} diff --git a/deps/npm/node_modules/undici/lib/web/eventsource/eventsource-stream.js b/deps/npm/node_modules/undici/lib/web/eventsource/eventsource-stream.js new file mode 100644 index 00000000000000..754934568d0562 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/eventsource/eventsource-stream.js @@ -0,0 +1,398 @@ +'use strict' +const { Transform } = require('node:stream') +const { isASCIINumber, isValidLastEventId } = require('./util') + +/** + * @type {number[]} BOM + */ +const BOM = [0xEF, 0xBB, 0xBF] +/** + * @type {10} LF + */ +const LF = 0x0A +/** + * @type {13} CR + */ +const CR = 0x0D +/** + * @type {58} COLON + */ +const COLON = 0x3A +/** + * @type {32} SPACE + */ +const SPACE = 0x20 + +/** + * @typedef {object} EventSourceStreamEvent + * @type {object} + * @property {string} [event] The event type. + * @property {string} [data] The data of the message. + * @property {string} [id] A unique ID for the event. + * @property {string} [retry] The reconnection time, in milliseconds. + */ + +/** + * @typedef eventSourceSettings + * @type {object} + * @property {string} lastEventId The last event ID received from the server. + * @property {string} origin The origin of the event source. + * @property {number} reconnectionTime The reconnection time, in milliseconds. + */ + +class EventSourceStream extends Transform { + /** + * @type {eventSourceSettings} + */ + state = null + + /** + * Leading byte-order-mark check. + * @type {boolean} + */ + checkBOM = true + + /** + * @type {boolean} + */ + crlfCheck = false + + /** + * @type {boolean} + */ + eventEndCheck = false + + /** + * @type {Buffer} + */ + buffer = null + + pos = 0 + + event = { + data: undefined, + event: undefined, + id: undefined, + retry: undefined + } + + /** + * @param {object} options + * @param {eventSourceSettings} options.eventSourceSettings + * @param {Function} [options.push] + */ + constructor (options = {}) { + // Enable object mode as EventSourceStream emits objects of shape + // EventSourceStreamEvent + options.readableObjectMode = true + + super(options) + + this.state = options.eventSourceSettings || {} + if (options.push) { + this.push = options.push + } + } + + /** + * @param {Buffer} chunk + * @param {string} _encoding + * @param {Function} callback + * @returns {void} + */ + _transform (chunk, _encoding, callback) { + if (chunk.length === 0) { + callback() + return + } + + // Cache the chunk in the buffer, as the data might not be complete while + // processing it + // TODO: Investigate if there is a more performant way to handle + // incoming chunks + // see: https://github.com/nodejs/undici/issues/2630 + if (this.buffer) { + this.buffer = Buffer.concat([this.buffer, chunk]) + } else { + this.buffer = chunk + } + + // Strip leading byte-order-mark if we opened the stream and started + // the processing of the incoming data + if (this.checkBOM) { + switch (this.buffer.length) { + case 1: + // Check if the first byte is the same as the first byte of the BOM + if (this.buffer[0] === BOM[0]) { + // If it is, we need to wait for more data + callback() + return + } + // Set the checkBOM flag to false as we don't need to check for the + // BOM anymore + this.checkBOM = false + + // The buffer only contains one byte so we need to wait for more data + callback() + return + case 2: + // Check if the first two bytes are the same as the first two bytes + // of the BOM + if ( + this.buffer[0] === BOM[0] && + this.buffer[1] === BOM[1] + ) { + // If it is, we need to wait for more data, because the third byte + // is needed to determine if it is the BOM or not + callback() + return + } + + // Set the checkBOM flag to false as we don't need to check for the + // BOM anymore + this.checkBOM = false + break + case 3: + // Check if the first three bytes are the same as the first three + // bytes of the BOM + if ( + this.buffer[0] === BOM[0] && + this.buffer[1] === BOM[1] && + this.buffer[2] === BOM[2] + ) { + // If it is, we can drop the buffered data, as it is only the BOM + this.buffer = Buffer.alloc(0) + // Set the checkBOM flag to false as we don't need to check for the + // BOM anymore + this.checkBOM = false + + // Await more data + callback() + return + } + // If it is not the BOM, we can start processing the data + this.checkBOM = false + break + default: + // The buffer is longer than 3 bytes, so we can drop the BOM if it is + // present + if ( + this.buffer[0] === BOM[0] && + this.buffer[1] === BOM[1] && + this.buffer[2] === BOM[2] + ) { + // Remove the BOM from the buffer + this.buffer = this.buffer.subarray(3) + } + + // Set the checkBOM flag to false as we don't need to check for the + this.checkBOM = false + break + } + } + + while (this.pos < this.buffer.length) { + // If the previous line ended with an end-of-line, we need to check + // if the next character is also an end-of-line. + if (this.eventEndCheck) { + // If the the current character is an end-of-line, then the event + // is finished and we can process it + + // If the previous line ended with a carriage return, we need to + // check if the current character is a line feed and remove it + // from the buffer. + if (this.crlfCheck) { + // If the current character is a line feed, we can remove it + // from the buffer and reset the crlfCheck flag + if (this.buffer[this.pos] === LF) { + this.buffer = this.buffer.subarray(this.pos + 1) + this.pos = 0 + this.crlfCheck = false + + // It is possible that the line feed is not the end of the + // event. We need to check if the next character is an + // end-of-line character to determine if the event is + // finished. We simply continue the loop to check the next + // character. + + // As we removed the line feed from the buffer and set the + // crlfCheck flag to false, we basically don't make any + // distinction between a line feed and a carriage return. + continue + } + this.crlfCheck = false + } + + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + // If the current character is a carriage return, we need to + // set the crlfCheck flag to true, as we need to check if the + // next character is a line feed so we can remove it from the + // buffer + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true + } + + this.buffer = this.buffer.subarray(this.pos + 1) + this.pos = 0 + if ( + this.event.data !== undefined || this.event.event || this.event.id || this.event.retry) { + this.processEvent(this.event) + } + this.clearEvent() + continue + } + // If the current character is not an end-of-line, then the event + // is not finished and we have to reset the eventEndCheck flag + this.eventEndCheck = false + continue + } + + // If the current character is an end-of-line, we can process the + // line + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + // If the current character is a carriage return, we need to + // set the crlfCheck flag to true, as we need to check if the + // next character is a line feed + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true + } + + // In any case, we can process the line as we reached an + // end-of-line character + this.parseLine(this.buffer.subarray(0, this.pos), this.event) + + // Remove the processed line from the buffer + this.buffer = this.buffer.subarray(this.pos + 1) + // Reset the position as we removed the processed line from the buffer + this.pos = 0 + // A line was processed and this could be the end of the event. We need + // to check if the next line is empty to determine if the event is + // finished. + this.eventEndCheck = true + continue + } + + this.pos++ + } + + callback() + } + + /** + * @param {Buffer} line + * @param {EventStreamEvent} event + */ + parseLine (line, event) { + // If the line is empty (a blank line) + // Dispatch the event, as defined below. + // This will be handled in the _transform method + if (line.length === 0) { + return + } + + // If the line starts with a U+003A COLON character (:) + // Ignore the line. + const colonPosition = line.indexOf(COLON) + if (colonPosition === 0) { + return + } + + let field = '' + let value = '' + + // If the line contains a U+003A COLON character (:) + if (colonPosition !== -1) { + // Collect the characters on the line before the first U+003A COLON + // character (:), and let field be that string. + // TODO: Investigate if there is a more performant way to extract the + // field + // see: https://github.com/nodejs/undici/issues/2630 + field = line.subarray(0, colonPosition).toString('utf8') + + // Collect the characters on the line after the first U+003A COLON + // character (:), and let value be that string. + // If value starts with a U+0020 SPACE character, remove it from value. + let valueStart = colonPosition + 1 + if (line[valueStart] === SPACE) { + ++valueStart + } + // TODO: Investigate if there is a more performant way to extract the + // value + // see: https://github.com/nodejs/undici/issues/2630 + value = line.subarray(valueStart).toString('utf8') + + // Otherwise, the string is not empty but does not contain a U+003A COLON + // character (:) + } else { + // Process the field using the steps described below, using the whole + // line as the field name, and the empty string as the field value. + field = line.toString('utf8') + value = '' + } + + // Modify the event with the field name and value. The value is also + // decoded as UTF-8 + switch (field) { + case 'data': + if (event[field] === undefined) { + event[field] = value + } else { + event[field] += `\n${value}` + } + break + case 'retry': + if (isASCIINumber(value)) { + event[field] = value + } + break + case 'id': + if (isValidLastEventId(value)) { + event[field] = value + } + break + case 'event': + if (value.length > 0) { + event[field] = value + } + break + } + } + + /** + * @param {EventSourceStreamEvent} event + */ + processEvent (event) { + if (event.retry && isASCIINumber(event.retry)) { + this.state.reconnectionTime = parseInt(event.retry, 10) + } + + if (event.id && isValidLastEventId(event.id)) { + this.state.lastEventId = event.id + } + + // only dispatch event, when data is provided + if (event.data !== undefined) { + this.push({ + type: event.event || 'message', + options: { + data: event.data, + lastEventId: this.state.lastEventId, + origin: this.state.origin + } + }) + } + } + + clearEvent () { + this.event = { + data: undefined, + event: undefined, + id: undefined, + retry: undefined + } + } +} + +module.exports = { + EventSourceStream +} diff --git a/deps/npm/node_modules/undici/lib/web/eventsource/eventsource.js b/deps/npm/node_modules/undici/lib/web/eventsource/eventsource.js new file mode 100644 index 00000000000000..5a488ffce276a0 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/eventsource/eventsource.js @@ -0,0 +1,480 @@ +'use strict' + +const { pipeline } = require('node:stream') +const { fetching } = require('../fetch') +const { makeRequest } = require('../fetch/request') +const { webidl } = require('../fetch/webidl') +const { EventSourceStream } = require('./eventsource-stream') +const { parseMIMEType } = require('../fetch/data-url') +const { createFastMessageEvent } = require('../websocket/events') +const { isNetworkError } = require('../fetch/response') +const { delay } = require('./util') +const { kEnumerableProperty } = require('../../core/util') +const { environmentSettingsObject } = require('../fetch/util') + +let experimentalWarned = false + +/** + * A reconnection time, in milliseconds. This must initially be an implementation-defined value, + * probably in the region of a few seconds. + * + * In Comparison: + * - Chrome uses 3000ms. + * - Deno uses 5000ms. + * + * @type {3000} + */ +const defaultReconnectionTime = 3000 + +/** + * The readyState attribute represents the state of the connection. + * @enum + * @readonly + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev + */ + +/** + * The connection has not yet been established, or it was closed and the user + * agent is reconnecting. + * @type {0} + */ +const CONNECTING = 0 + +/** + * The user agent has an open connection and is dispatching events as it + * receives them. + * @type {1} + */ +const OPEN = 1 + +/** + * The connection is not open, and the user agent is not trying to reconnect. + * @type {2} + */ +const CLOSED = 2 + +/** + * Requests for the element will have their mode set to "cors" and their credentials mode set to "same-origin". + * @type {'anonymous'} + */ +const ANONYMOUS = 'anonymous' + +/** + * Requests for the element will have their mode set to "cors" and their credentials mode set to "include". + * @type {'use-credentials'} + */ +const USE_CREDENTIALS = 'use-credentials' + +/** + * The EventSource interface is used to receive server-sent events. It + * connects to a server over HTTP and receives events in text/event-stream + * format without closing the connection. + * @extends {EventTarget} + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events + * @api public + */ +class EventSource extends EventTarget { + #events = { + open: null, + error: null, + message: null + } + + #url = null + #withCredentials = false + + #readyState = CONNECTING + + #request = null + #controller = null + + #dispatcher + + /** + * @type {import('./eventsource-stream').eventSourceSettings} + */ + #state + + /** + * Creates a new EventSource object. + * @param {string} url + * @param {EventSourceInit} [eventSourceInitDict] + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface + */ + constructor (url, eventSourceInitDict = {}) { + // 1. Let ev be a new EventSource object. + super() + + webidl.util.markAsUncloneable(this) + + const prefix = 'EventSource constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('EventSource is experimental, expect them to change at any time.', { + code: 'UNDICI-ES' + }) + } + + url = webidl.converters.USVString(url, prefix, 'url') + eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict') + + this.#dispatcher = eventSourceInitDict.dispatcher + this.#state = { + lastEventId: '', + reconnectionTime: defaultReconnectionTime + } + + // 2. Let settings be ev's relevant settings object. + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + const settings = environmentSettingsObject + + let urlRecord + + try { + // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings. + urlRecord = new URL(url, settings.settingsObject.baseUrl) + this.#state.origin = urlRecord.origin + } catch (e) { + // 4. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } + + // 5. Set ev's url to urlRecord. + this.#url = urlRecord.href + + // 6. Let corsAttributeState be Anonymous. + let corsAttributeState = ANONYMOUS + + // 7. If the value of eventSourceInitDict's withCredentials member is true, + // then set corsAttributeState to Use Credentials and set ev's + // withCredentials attribute to true. + if (eventSourceInitDict.withCredentials) { + corsAttributeState = USE_CREDENTIALS + this.#withCredentials = true + } + + // 8. Let request be the result of creating a potential-CORS request given + // urlRecord, the empty string, and corsAttributeState. + const initRequest = { + redirect: 'follow', + keepalive: true, + // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes + mode: 'cors', + credentials: corsAttributeState === 'anonymous' + ? 'same-origin' + : 'omit', + referrer: 'no-referrer' + } + + // 9. Set request's client to settings. + initRequest.client = environmentSettingsObject.settingsObject + + // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list. + initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]] + + // 11. Set request's cache mode to "no-store". + initRequest.cache = 'no-store' + + // 12. Set request's initiator type to "other". + initRequest.initiator = 'other' + + initRequest.urlList = [new URL(this.#url)] + + // 13. Set ev's request to request. + this.#request = makeRequest(initRequest) + + this.#connect() + } + + /** + * Returns the state of this EventSource object's connection. It can have the + * values described below. + * @returns {0|1|2} + * @readonly + */ + get readyState () { + return this.#readyState + } + + /** + * Returns the URL providing the event stream. + * @readonly + * @returns {string} + */ + get url () { + return this.#url + } + + /** + * Returns a boolean indicating whether the EventSource object was + * instantiated with CORS credentials set (true), or not (false, the default). + */ + get withCredentials () { + return this.#withCredentials + } + + #connect () { + if (this.#readyState === CLOSED) return + + this.#readyState = CONNECTING + + const fetchParams = { + request: this.#request, + dispatcher: this.#dispatcher + } + + // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection. + const processEventSourceEndOfBody = (response) => { + if (isNetworkError(response)) { + this.dispatchEvent(new Event('error')) + this.close() + } + + this.#reconnect() + } + + // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody... + fetchParams.processResponseEndOfBody = processEventSourceEndOfBody + + // and processResponse set to the following steps given response res: + fetchParams.processResponse = (response) => { + // 1. If res is an aborted network error, then fail the connection. + + if (isNetworkError(response)) { + // 1. When a user agent is to fail the connection, the user agent + // must queue a task which, if the readyState attribute is set to a + // value other than CLOSED, sets the readyState attribute to CLOSED + // and fires an event named error at the EventSource object. Once the + // user agent has failed the connection, it does not attempt to + // reconnect. + if (response.aborted) { + this.close() + this.dispatchEvent(new Event('error')) + return + // 2. Otherwise, if res is a network error, then reestablish the + // connection, unless the user agent knows that to be futile, in + // which case the user agent may fail the connection. + } else { + this.#reconnect() + return + } + } + + // 3. Otherwise, if res's status is not 200, or if res's `Content-Type` + // is not `text/event-stream`, then fail the connection. + const contentType = response.headersList.get('content-type', true) + const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure' + const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream' + if ( + response.status !== 200 || + contentTypeValid === false + ) { + this.close() + this.dispatchEvent(new Event('error')) + return + } + + // 4. Otherwise, announce the connection and interpret res's body + // line by line. + + // When a user agent is to announce the connection, the user agent + // must queue a task which, if the readyState attribute is set to a + // value other than CLOSED, sets the readyState attribute to OPEN + // and fires an event named open at the EventSource object. + // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model + this.#readyState = OPEN + this.dispatchEvent(new Event('open')) + + // If redirected to a different origin, set the origin to the new origin. + this.#state.origin = response.urlList[response.urlList.length - 1].origin + + const eventSourceStream = new EventSourceStream({ + eventSourceSettings: this.#state, + push: (event) => { + this.dispatchEvent(createFastMessageEvent( + event.type, + event.options + )) + } + }) + + pipeline(response.body.stream, + eventSourceStream, + (error) => { + if ( + error?.aborted === false + ) { + this.close() + this.dispatchEvent(new Event('error')) + } + }) + } + + this.#controller = fetching(fetchParams) + } + + /** + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model + * @returns {Promise} + */ + async #reconnect () { + // When a user agent is to reestablish the connection, the user agent must + // run the following steps. These steps are run in parallel, not as part of + // a task. (The tasks that it queues, of course, are run like normal tasks + // and not themselves in parallel.) + + // 1. Queue a task to run the following steps: + + // 1. If the readyState attribute is set to CLOSED, abort the task. + if (this.#readyState === CLOSED) return + + // 2. Set the readyState attribute to CONNECTING. + this.#readyState = CONNECTING + + // 3. Fire an event named error at the EventSource object. + this.dispatchEvent(new Event('error')) + + // 2. Wait a delay equal to the reconnection time of the event source. + await delay(this.#state.reconnectionTime) + + // 5. Queue a task to run the following steps: + + // 1. If the EventSource object's readyState attribute is not set to + // CONNECTING, then return. + if (this.#readyState !== CONNECTING) return + + // 2. Let request be the EventSource object's request. + // 3. If the EventSource object's last event ID string is not the empty + // string, then: + // 1. Let lastEventIDValue be the EventSource object's last event ID + // string, encoded as UTF-8. + // 2. Set (`Last-Event-ID`, lastEventIDValue) in request's header + // list. + if (this.#state.lastEventId.length) { + this.#request.headersList.set('last-event-id', this.#state.lastEventId, true) + } + + // 4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section. + this.#connect() + } + + /** + * Closes the connection, if any, and sets the readyState attribute to + * CLOSED. + */ + close () { + webidl.brandCheck(this, EventSource) + + if (this.#readyState === CLOSED) return + this.#readyState = CLOSED + this.#controller.abort() + this.#request = null + } + + get onopen () { + return this.#events.open + } + + set onopen (fn) { + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) + } + + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } + + get onmessage () { + return this.#events.message + } + + set onmessage (fn) { + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } + + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } + + get onerror () { + return this.#events.error + } + + set onerror (fn) { + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) + } + + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } +} + +const constantsPropertyDescriptors = { + CONNECTING: { + __proto__: null, + configurable: false, + enumerable: true, + value: CONNECTING, + writable: false + }, + OPEN: { + __proto__: null, + configurable: false, + enumerable: true, + value: OPEN, + writable: false + }, + CLOSED: { + __proto__: null, + configurable: false, + enumerable: true, + value: CLOSED, + writable: false + } +} + +Object.defineProperties(EventSource, constantsPropertyDescriptors) +Object.defineProperties(EventSource.prototype, constantsPropertyDescriptors) + +Object.defineProperties(EventSource.prototype, { + close: kEnumerableProperty, + onerror: kEnumerableProperty, + onmessage: kEnumerableProperty, + onopen: kEnumerableProperty, + readyState: kEnumerableProperty, + url: kEnumerableProperty, + withCredentials: kEnumerableProperty +}) + +webidl.converters.EventSourceInitDict = webidl.dictionaryConverter([ + { + key: 'withCredentials', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'dispatcher', // undici only + converter: webidl.converters.any + } +]) + +module.exports = { + EventSource, + defaultReconnectionTime +} diff --git a/deps/npm/node_modules/undici/lib/web/eventsource/util.js b/deps/npm/node_modules/undici/lib/web/eventsource/util.js new file mode 100644 index 00000000000000..727d8660e5f1e7 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/eventsource/util.js @@ -0,0 +1,37 @@ +'use strict' + +/** + * Checks if the given value is a valid LastEventId. + * @param {string} value + * @returns {boolean} + */ +function isValidLastEventId (value) { + // LastEventId should not contain U+0000 NULL + return value.indexOf('\u0000') === -1 +} + +/** + * Checks if the given value is a base 10 digit. + * @param {string} value + * @returns {boolean} + */ +function isASCIINumber (value) { + if (value.length === 0) return false + for (let i = 0; i < value.length; i++) { + if (value.charCodeAt(i) < 0x30 || value.charCodeAt(i) > 0x39) return false + } + return true +} + +// https://github.com/nodejs/undici/issues/2664 +function delay (ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms).unref() + }) +} + +module.exports = { + isValidLastEventId, + isASCIINumber, + delay +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/LICENSE b/deps/npm/node_modules/undici/lib/web/fetch/LICENSE new file mode 100644 index 00000000000000..294350045bbb56 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Ethan Arrowood + +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. diff --git a/deps/npm/node_modules/undici/lib/web/fetch/body.js b/deps/npm/node_modules/undici/lib/web/fetch/body.js new file mode 100644 index 00000000000000..b1c553d4e0ff75 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/body.js @@ -0,0 +1,529 @@ +'use strict' + +const util = require('../../core/util') +const { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody, + extractMimeType, + utf8DecodeBytes +} = require('./util') +const { FormData } = require('./formdata') +const { kState } = require('./symbols') +const { webidl } = require('./webidl') +const { Blob } = require('node:buffer') +const assert = require('node:assert') +const { isErrored, isDisturbed } = require('node:stream') +const { isArrayBuffer } = require('node:util/types') +const { serializeAMimeType } = require('./data-url') +const { multipartFormDataParser } = require('./formdata-parser') +let random + +try { + const crypto = require('node:crypto') + random = (max) => crypto.randomInt(0, max) +} catch { + random = (max) => Math.floor(Math.random(max)) +} + +const textEncoder = new TextEncoder() +function noop () {} + +const hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf('v18') !== 0 +let streamRegistry + +if (hasFinalizationRegistry) { + streamRegistry = new FinalizationRegistry((weakRef) => { + const stream = weakRef.deref() + if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) { + stream.cancel('Response object has been garbage collected').catch(noop) + } + }) +} + +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody (object, keepalive = false) { + // 1. Let stream be null. + let stream = null + + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream() + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream with byte reading support. + stream = new ReadableStream({ + async pull (controller) { + const buffer = typeof source === 'string' ? textEncoder.encode(source) : source + + if (buffer.byteLength) { + controller.enqueue(buffer) + } + + queueMicrotask(() => readableStreamClose(controller)) + }, + start () {}, + type: 'bytes' + }) + } + + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)) + + // 6. Let action be null. + let action = null + + // 7. Let source be null. + let source = null + + // 8. Let length be null. + let length = null + + // 9. Let type be null. + let type = null + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8' + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString() + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8' + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()) + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}` + const prefix = `--${boundary}\r\nContent-Disposition: form-data` + + /*! formdata-polyfill. MIT License. Jimmy Wärting */ + const escape = (str) => + str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + const blobParts = [] + const rn = new Uint8Array([13, 10]) // '\r\n' + length = 0 + let hasUnknownSizeValue = false + + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk = textEncoder.encode(prefix + + `; name="${escape(normalizeLinefeeds(name))}"` + + `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + } else { + const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + + `Content-Type: ${ + value.type || 'application/octet-stream' + }\r\n\r\n`) + blobParts.push(chunk, value, rn) + if (typeof value.size === 'number') { + length += chunk.byteLength + value.size + rn.byteLength + } else { + hasUnknownSizeValue = true + } + } + } + + // CRLF is appended to the body to function with legacy servers and match other implementations. + // https://github.com/curl/curl/blob/3434c6b46e682452973972e8313613dfa58cd690/lib/mime.c#L1029-L1030 + // https://github.com/form-data/form-data/issues/63 + const chunk = textEncoder.encode(`--${boundary}--\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + if (hasUnknownSizeValue) { + length = null + } + + // Set source to object. + source = object + + action = async function * () { + for (const part of blobParts) { + if (part.stream) { + yield * part.stream() + } else { + yield part + } + } + } + + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = `multipart/form-data; boundary=${boundary}` + } else if (isBlobLike(object)) { + // Blob + + // Set source to object. + source = object + + // Set length to object’s size. + length = object.size + + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive') + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + 'Response body object should not be disturbed or locked' + ) + } + + stream = + object instanceof ReadableStream ? object : ReadableStreamFrom(object) + } + + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source) + } + + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + let iterator + stream = new ReadableStream({ + async start () { + iterator = action(object)[Symbol.asyncIterator]() + }, + async pull (controller) { + const { value, done } = await iterator.next() + if (done) { + // When running action is done, close stream. + queueMicrotask(() => { + controller.close() + controller.byobRequest?.respond(0) + }) + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + const buffer = new Uint8Array(value) + if (buffer.byteLength) { + controller.enqueue(buffer) + } + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: 'bytes' + }) + } + + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + const body = { stream, source, length } + + // 14. Return (body, type). + return [body, type] +} + +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody (object, keepalive = false) { + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: + + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.') + // istanbul ignore next + assert(!object.locked, 'The stream is locked.') + } + + // 2. Return the results of extracting object. + return extractBody(object, keepalive) +} + +function cloneBody (instance, body) { + // To clone a body body, run these steps: + + // https://fetch.spec.whatwg.org/#concept-body-clone + + // 1. Let « out1, out2 » be the result of teeing body’s stream. + const [out1, out2] = body.stream.tee() + + // 2. Set body’s stream to out1. + body.stream = out1 + + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: out2, + length: body.length, + source: body.source + } +} + +function throwIfAborted (state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError') + } +} + +function bodyMixinMethods (instance) { + const methods = { + blob () { + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return consumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this) + + if (mimeType === null) { + mimeType = '' + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType) + } + + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { type: mimeType }) + }, instance) + }, + + arrayBuffer () { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return consumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer + }, instance) + }, + + text () { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return consumeBody(this, utf8DecodeBytes, instance) + }, + + json () { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return consumeBody(this, parseJSONFromBytes, instance) + }, + + formData () { + // The formData() method steps are to return the result of running + // consume body with this and the following step given a byte sequence bytes: + return consumeBody(this, (value) => { + // 1. Let mimeType be the result of get the MIME type with this. + const mimeType = bodyMimeType(this) + + // 2. If mimeType is non-null, then switch on mimeType’s essence and run + // the corresponding steps: + if (mimeType !== null) { + switch (mimeType.essence) { + case 'multipart/form-data': { + // 1. ... [long step] + const parsed = multipartFormDataParser(value, mimeType) + + // 2. If that fails for some reason, then throw a TypeError. + if (parsed === 'failure') { + throw new TypeError('Failed to parse body as FormData.') + } + + // 3. Return a new FormData object, appending each entry, + // resulting from the parsing operation, to its entry list. + const fd = new FormData() + fd[kState] = parsed + + return fd + } + case 'application/x-www-form-urlencoded': { + // 1. Let entries be the result of parsing bytes. + const entries = new URLSearchParams(value.toString()) + + // 2. If entries is failure, then throw a TypeError. + + // 3. Return a new FormData object whose entry list is entries. + const fd = new FormData() + + for (const [name, value] of entries) { + fd.append(name, value) + } + + return fd + } + } + } + + // 3. Throw a TypeError. + throw new TypeError( + 'Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".' + ) + }, instance) + }, + + bytes () { + // The bytes() method steps are to return the result of running consume body + // with this and the following step given a byte sequence bytes: return the + // result of creating a Uint8Array from bytes in this’s relevant realm. + return consumeBody(this, (bytes) => { + return new Uint8Array(bytes) + }, instance) + } + } + + return methods +} + +function mixinBody (prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +async function consumeBody (object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance) + + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (bodyUnusable(object)) { + throw new TypeError('Body is unusable: Body has already been read') + } + + throwIfAborted(object[kState]) + + // 2. Let promise be a new promise. + const promise = createDeferredPromise() + + // 3. Let errorSteps given error be to reject promise with error. + const errorSteps = (error) => promise.reject(error) + + // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)) + } catch (e) { + errorSteps(e) + } + } + + // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (object[kState].body == null) { + successSteps(Buffer.allocUnsafe(0)) + return promise.promise + } + + // 6. Otherwise, fully read object’s body given successSteps, + // errorSteps, and object’s relevant global object. + await fullyReadBody(object[kState].body, successSteps, errorSteps) + + // 7. Return promise. + return promise.promise +} + +// https://fetch.spec.whatwg.org/#body-unusable +function bodyUnusable (object) { + const body = object[kState].body + + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)) +} + +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes (bytes) { + return JSON.parse(utf8DecodeBytes(bytes)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} requestOrResponse + */ +function bodyMimeType (requestOrResponse) { + // 1. Let headers be null. + // 2. If requestOrResponse is a Request object, then set headers to requestOrResponse’s request’s header list. + // 3. Otherwise, set headers to requestOrResponse’s response’s header list. + /** @type {import('./headers').HeadersList} */ + const headers = requestOrResponse[kState].headersList + + // 4. Let mimeType be the result of extracting a MIME type from headers. + const mimeType = extractMimeType(headers) + + // 5. If mimeType is failure, then return null. + if (mimeType === 'failure') { + return null + } + + // 6. Return mimeType. + return mimeType +} + +module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody, + streamRegistry, + hasFinalizationRegistry, + bodyUnusable +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/constants.js b/deps/npm/node_modules/undici/lib/web/fetch/constants.js new file mode 100644 index 00000000000000..1f285e06283e18 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/constants.js @@ -0,0 +1,124 @@ +'use strict' + +const corsSafeListedMethods = /** @type {const} */ (['GET', 'HEAD', 'POST']) +const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) + +const nullBodyStatus = /** @type {const} */ ([101, 204, 205, 304]) + +const redirectStatus = /** @type {const} */ ([301, 302, 303, 307, 308]) +const redirectStatusSet = new Set(redirectStatus) + +/** + * @see https://fetch.spec.whatwg.org/#block-bad-port + */ +const badPorts = /** @type {const} */ ([ + '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', + '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', + '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', + '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', + '2049', '3659', '4045', '4190', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6679', + '6697', '10080' +]) +const badPortsSet = new Set(badPorts) + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policies + */ +const referrerPolicy = /** @type {const} */ ([ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' +]) +const referrerPolicySet = new Set(referrerPolicy) + +const requestRedirect = /** @type {const} */ (['follow', 'manual', 'error']) + +const safeMethods = /** @type {const} */ (['GET', 'HEAD', 'OPTIONS', 'TRACE']) +const safeMethodsSet = new Set(safeMethods) + +const requestMode = /** @type {const} */ (['navigate', 'same-origin', 'no-cors', 'cors']) + +const requestCredentials = /** @type {const} */ (['omit', 'same-origin', 'include']) + +const requestCache = /** @type {const} */ ([ + 'default', + 'no-store', + 'reload', + 'no-cache', + 'force-cache', + 'only-if-cached' +]) + +/** + * @see https://fetch.spec.whatwg.org/#request-body-header-name + */ +const requestBodyHeader = /** @type {const} */ ([ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' +]) + +/** + * @see https://fetch.spec.whatwg.org/#enumdef-requestduplex + */ +const requestDuplex = /** @type {const} */ ([ + 'half' +]) + +/** + * @see http://fetch.spec.whatwg.org/#forbidden-method + */ +const forbiddenMethods = /** @type {const} */ (['CONNECT', 'TRACE', 'TRACK']) +const forbiddenMethodsSet = new Set(forbiddenMethods) + +const subresource = /** @type {const} */ ([ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' +]) +const subresourceSet = new Set(subresource) + +module.exports = { + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/data-url.js b/deps/npm/node_modules/undici/lib/web/fetch/data-url.js new file mode 100644 index 00000000000000..7a74db6bde89c4 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/data-url.js @@ -0,0 +1,744 @@ +'use strict' + +const assert = require('node:assert') + +const encoder = new TextEncoder() + +/** + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + */ +const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/ +const HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/ // eslint-disable-line +const ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +const HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/ // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor (dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:') + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + let input = URLSerializer(dataURL, true) + + // 3. Remove the leading "data:" string from input. + input = input.slice(5) + + // 4. Let position point at the start of input. + const position = { position: 0 } + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + let mimeType = collectASequenceOfCodePointsFast( + ',', + input, + position + ) + + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + const mimeTypeLength = mimeType.length + mimeType = removeASCIIWhitespace(mimeType, true, true) + + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure' + } + + // 8. Advance position by 1. + position.position++ + + // 9. Let encodedBody be the remainder of input. + const encodedBody = input.slice(mimeTypeLength + 1) + + // 10. Let body be the percent-decoding of encodedBody. + let body = stringPercentDecode(encodedBody) + + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + const stringBody = isomorphicDecode(body) + + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody) + + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure' + } + + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6) + + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, '') + + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1) + } + + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType + } + + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + let mimeTypeRecord = parseMIMEType(mimeType) + + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') + } + + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { mimeType: mimeTypeRecord, body } +} + +// https://url.spec.whatwg.org/#concept-url-serializer +/** + * @param {URL} url + * @param {boolean} excludeFragment + */ +function URLSerializer (url, excludeFragment = false) { + if (!excludeFragment) { + return url.href + } + + const href = url.href + const hashLength = url.hash.length + + const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength) + + if (!hashLength && href.endsWith('#')) { + return serialized.slice(0, -1) + } + + return serialized +} + +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints (condition, input, position) { + // 1. Let result be the empty string. + let result = '' + + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position] + + // 2. Advance position by 1. + position.position++ + } + + // 3. Return result. + return result +} + +/** + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePointsFast (char, input, position) { + const idx = input.indexOf(char, position.position) + const start = position.position + + if (idx === -1) { + position.position = input.length + return input.slice(start) + } + + position.position = idx + return input.slice(start, position.position) +} + +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode (input) { + // 1. Let bytes be the UTF-8 encoding of input. + const bytes = encoder.encode(input) + + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes) +} + +/** + * @param {number} byte + */ +function isHexCharByte (byte) { + // 0-9 A-F a-f + return (byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x46) || (byte >= 0x61 && byte <= 0x66) +} + +/** + * @param {number} byte + */ +function hexByteToNumber (byte) { + return ( + // 0-9 + byte >= 0x30 && byte <= 0x39 + ? (byte - 48) + // Convert to uppercase + // ((byte & 0xDF) - 65) + 10 + : ((byte & 0xDF) - 55) + ) +} + +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode (input) { + const length = input.length + // 1. Let output be an empty byte sequence. + /** @type {Uint8Array} */ + const output = new Uint8Array(length) + let j = 0 + // 2. For each byte byte in input: + for (let i = 0; i < length; ++i) { + const byte = input[i] + + // 1. If byte is not 0x25 (%), then append byte to output. + if (byte !== 0x25) { + output[j++] = byte + + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if ( + byte === 0x25 && + !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2])) + ) { + output[j++] = 0x25 + + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + // 2. Append a byte whose value is bytePoint to output. + output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2]) + + // 3. Skip the next two bytes in input. + i += 2 + } + } + + // 3. Return output. + return length === j ? output : output.subarray(0, j) +} + +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType (input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true) + + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + const position = { position: 0 } + + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + const type = collectASequenceOfCodePointsFast( + '/', + input, + position + ) + + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure' + } + + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure' + } + + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++ + + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + let subtype = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true) + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure' + } + + const typeLowercase = type.toLowerCase() + const subtypeLowercase = subtype.toLowerCase() + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + } + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++ + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ) + + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ';' && char !== '=', + input, + position + ) + + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase() + + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue + } + + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++ + } + + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break + } + + // 7. Let parameterValue be null. + let parameterValue = null + + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true) + + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true) + + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue + } + } + + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if ( + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) + ) { + mimeType.parameters.set(parameterName, parameterValue) + } + } + + // 12. Return mimeType. + return mimeType +} + +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64 (data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, '') // eslint-disable-line + + let dataLength = data.length + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (dataLength % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + if (data.charCodeAt(dataLength - 1) === 0x003D) { + --dataLength + if (data.charCodeAt(dataLength - 1) === 0x003D) { + --dataLength + } + } + } + + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (dataLength % 4 === 1) { + return 'failure' + } + + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) { + return 'failure' + } + + const buffer = Buffer.from(data, 'base64') + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength) +} + +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string +/** + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue + */ +function collectAnHTTPQuotedString (input, position, extractValue) { + // 1. Let positionStart be position. + const positionStart = position.position + + // 2. Let value be the empty string. + let value = '' + + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"') + + // 4. Advance position by 1. + position.position++ + + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== '\\', + input, + position + ) + + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break + } + + // 3. Let quoteOrBackslash be the code point at position within + // input. + const quoteOrBackslash = input[position.position] + + // 4. Advance position by 1. + position.position++ + + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\' + break + } + + // 2. Append the code point at position within input to value. + value += input[position.position] + + // 3. Advance position by 1. + position.position++ + + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"') + + // 2. Break. + break + } + } + + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value + } + + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position) +} + +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType (mimeType) { + assert(mimeType !== 'failure') + const { parameters, essence } = mimeType + + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + let serialization = essence + + // 2. For each name → value of mimeType’s parameters: + for (let [name, value] of parameters.entries()) { + // 1. Append U+003B (;) to serialization. + serialization += ';' + + // 2. Append name to serialization. + serialization += name + + // 3. Append U+003D (=) to serialization. + serialization += '=' + + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurrence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1') + + // 2. Prepend U+0022 (") to value. + value = '"' + value + + // 3. Append U+0022 (") to value. + value += '"' + } + + // 5. Append value to serialization. + serialization += value + } + + // 3. Return serialization. + return serialization +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {number} char + */ +function isHTTPWhiteSpace (char) { + // "\r\n\t " + return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x020 +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + * @param {boolean} [leading=true] + * @param {boolean} [trailing=true] + */ +function removeHTTPWhitespace (str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isHTTPWhiteSpace) +} + +/** + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {number} char + */ +function isASCIIWhitespace (char) { + // "\r\n\t\f " + return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x00c || char === 0x020 +} + +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + * @param {string} str + * @param {boolean} [leading=true] + * @param {boolean} [trailing=true] + */ +function removeASCIIWhitespace (str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isASCIIWhitespace) +} + +/** + * @param {string} str + * @param {boolean} leading + * @param {boolean} trailing + * @param {(charCode: number) => boolean} predicate + * @returns + */ +function removeChars (str, leading, trailing, predicate) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + while (lead < str.length && predicate(str.charCodeAt(lead))) lead++ + } + + if (trailing) { + while (trail > 0 && predicate(str.charCodeAt(trail))) trail-- + } + + return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1) +} + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {Uint8Array} input + * @returns {string} + */ +function isomorphicDecode (input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. + const length = input.length + if ((2 << 15) - 1 > length) { + return String.fromCharCode.apply(null, input) + } + let result = ''; let i = 0 + let addition = (2 << 15) - 1 + while (i < length) { + if (i + addition > length) { + addition = length - i + } + result += String.fromCharCode.apply(null, input.subarray(i, i += addition)) + } + return result +} + +/** + * @see https://mimesniff.spec.whatwg.org/#minimize-a-supported-mime-type + * @param {Exclude, 'failure'>} mimeType + */ +function minimizeSupportedMimeType (mimeType) { + switch (mimeType.essence) { + case 'application/ecmascript': + case 'application/javascript': + case 'application/x-ecmascript': + case 'application/x-javascript': + case 'text/ecmascript': + case 'text/javascript': + case 'text/javascript1.0': + case 'text/javascript1.1': + case 'text/javascript1.2': + case 'text/javascript1.3': + case 'text/javascript1.4': + case 'text/javascript1.5': + case 'text/jscript': + case 'text/livescript': + case 'text/x-ecmascript': + case 'text/x-javascript': + // 1. If mimeType is a JavaScript MIME type, then return "text/javascript". + return 'text/javascript' + case 'application/json': + case 'text/json': + // 2. If mimeType is a JSON MIME type, then return "application/json". + return 'application/json' + case 'image/svg+xml': + // 3. If mimeType’s essence is "image/svg+xml", then return "image/svg+xml". + return 'image/svg+xml' + case 'text/xml': + case 'application/xml': + // 4. If mimeType is an XML MIME type, then return "application/xml". + return 'application/xml' + } + + // 2. If mimeType is a JSON MIME type, then return "application/json". + if (mimeType.subtype.endsWith('+json')) { + return 'application/json' + } + + // 4. If mimeType is an XML MIME type, then return "application/xml". + if (mimeType.subtype.endsWith('+xml')) { + return 'application/xml' + } + + // 5. If mimeType is supported by the user agent, then return mimeType’s essence. + // Technically, node doesn't support any mimetypes. + + // 6. Return the empty string. + return '' +} + +module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType, + removeChars, + removeHTTPWhitespace, + minimizeSupportedMimeType, + HTTP_TOKEN_CODEPOINTS, + isomorphicDecode +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/dispatcher-weakref.js b/deps/npm/node_modules/undici/lib/web/fetch/dispatcher-weakref.js new file mode 100644 index 00000000000000..6ac5f37499257f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/dispatcher-weakref.js @@ -0,0 +1,46 @@ +'use strict' + +const { kConnected, kSize } = require('../../core/symbols') + +class CompatWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value + } +} + +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) + } + } + + unregister (key) {} +} + +module.exports = function () { + // FIXME: remove workaround when the Node bug is backported to v18 + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE && process.version.startsWith('v18')) { + process._rawDebug('Using compatibility WeakRef and FinalizationRegistry') + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { WeakRef, FinalizationRegistry } +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/file.js b/deps/npm/node_modules/undici/lib/web/fetch/file.js new file mode 100644 index 00000000000000..31ba40718ec271 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/file.js @@ -0,0 +1,126 @@ +'use strict' + +const { Blob, File } = require('node:buffer') +const { kState } = require('./symbols') +const { webidl } = require('./webidl') + +// TODO(@KhafraDev): remove +class FileLike { + constructor (blobLike, fileName, options = {}) { + // TODO: argument idl type check + + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + const t = options.type + + // 2. Convert every character in t to ASCII lowercase. + // TODO + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + const d = options.lastModified ?? Date.now() + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + } + } + + stream (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.stream(...args) + } + + arrayBuffer (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.arrayBuffer(...args) + } + + slice (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.slice(...args) + } + + text (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.text(...args) + } + + get size () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.size + } + + get type () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.type + } + + get name () { + webidl.brandCheck(this, FileLike) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, FileLike) + + return this[kState].lastModified + } + + get [Symbol.toStringTag] () { + return 'File' + } +} + +webidl.converters.Blob = webidl.interfaceConverter(Blob) + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike (object) { + return ( + (object instanceof File) || + ( + object && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File' + ) + ) +} + +module.exports = { FileLike, isFileLike } diff --git a/deps/npm/node_modules/undici/lib/web/fetch/formdata-parser.js b/deps/npm/node_modules/undici/lib/web/fetch/formdata-parser.js new file mode 100644 index 00000000000000..315a4626da5775 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/formdata-parser.js @@ -0,0 +1,474 @@ +'use strict' + +const { isUSVString, bufferToLowerCasedHeaderName } = require('../../core/util') +const { utf8DecodeBytes } = require('./util') +const { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require('./data-url') +const { isFileLike } = require('./file') +const { makeEntry } = require('./formdata') +const assert = require('node:assert') +const { File: NodeFile } = require('node:buffer') + +const File = globalThis.File ?? NodeFile + +const formDataNameBuffer = Buffer.from('form-data; name="') +const filenameBuffer = Buffer.from('; filename') +const dd = Buffer.from('--') +const ddcrlf = Buffer.from('--\r\n') + +/** + * @param {string} chars + */ +function isAsciiString (chars) { + for (let i = 0; i < chars.length; ++i) { + if ((chars.charCodeAt(i) & ~0x7F) !== 0) { + return false + } + } + return true +} + +/** + * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary + * @param {string} boundary + */ +function validateBoundary (boundary) { + const length = boundary.length + + // - its length is greater or equal to 27 and lesser or equal to 70, and + if (length < 27 || length > 70) { + return false + } + + // - it is composed by bytes in the ranges 0x30 to 0x39, 0x41 to 0x5A, or + // 0x61 to 0x7A, inclusive (ASCII alphanumeric), or which are 0x27 ('), + // 0x2D (-) or 0x5F (_). + for (let i = 0; i < length; ++i) { + const cp = boundary.charCodeAt(i) + + if (!( + (cp >= 0x30 && cp <= 0x39) || + (cp >= 0x41 && cp <= 0x5a) || + (cp >= 0x61 && cp <= 0x7a) || + cp === 0x27 || + cp === 0x2d || + cp === 0x5f + )) { + return false + } + } + + return true +} + +/** + * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-parser + * @param {Buffer} input + * @param {ReturnType} mimeType + */ +function multipartFormDataParser (input, mimeType) { + // 1. Assert: mimeType’s essence is "multipart/form-data". + assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data') + + const boundaryString = mimeType.parameters.get('boundary') + + // 2. If mimeType’s parameters["boundary"] does not exist, return failure. + // Otherwise, let boundary be the result of UTF-8 decoding mimeType’s + // parameters["boundary"]. + if (boundaryString === undefined) { + return 'failure' + } + + const boundary = Buffer.from(`--${boundaryString}`, 'utf8') + + // 3. Let entry list be an empty entry list. + const entryList = [] + + // 4. Let position be a pointer to a byte in input, initially pointing at + // the first byte. + const position = { position: 0 } + + // Note: undici addition, allows leading and trailing CRLFs. + while (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) { + position.position += 2 + } + + let trailing = input.length + + while (input[trailing - 1] === 0x0a && input[trailing - 2] === 0x0d) { + trailing -= 2 + } + + if (trailing !== input.length) { + input = input.subarray(0, trailing) + } + + // 5. While true: + while (true) { + // 5.1. If position points to a sequence of bytes starting with 0x2D 0x2D + // (`--`) followed by boundary, advance position by 2 + the length of + // boundary. Otherwise, return failure. + // Note: boundary is padded with 2 dashes already, no need to add 2. + if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) { + position.position += boundary.length + } else { + return 'failure' + } + + // 5.2. If position points to the sequence of bytes 0x2D 0x2D 0x0D 0x0A + // (`--` followed by CR LF) followed by the end of input, return entry list. + // Note: a body does NOT need to end with CRLF. It can end with --. + if ( + (position.position === input.length - 2 && bufferStartsWith(input, dd, position)) || + (position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position)) + ) { + return entryList + } + + // 5.3. If position does not point to a sequence of bytes starting with 0x0D + // 0x0A (CR LF), return failure. + if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) { + return 'failure' + } + + // 5.4. Advance position by 2. (This skips past the newline.) + position.position += 2 + + // 5.5. Let name, filename and contentType be the result of parsing + // multipart/form-data headers on input and position, if the result + // is not failure. Otherwise, return failure. + const result = parseMultipartFormDataHeaders(input, position) + + if (result === 'failure') { + return 'failure' + } + + let { name, filename, contentType, encoding } = result + + // 5.6. Advance position by 2. (This skips past the empty line that marks + // the end of the headers.) + position.position += 2 + + // 5.7. Let body be the empty byte sequence. + let body + + // 5.8. Body loop: While position is not past the end of input: + // TODO: the steps here are completely wrong + { + const boundaryIndex = input.indexOf(boundary.subarray(2), position.position) + + if (boundaryIndex === -1) { + return 'failure' + } + + body = input.subarray(position.position, boundaryIndex - 4) + + position.position += body.length + + // Note: position must be advanced by the body's length before being + // decoded, otherwise the parsing will fail. + if (encoding === 'base64') { + body = Buffer.from(body.toString(), 'base64') + } + } + + // 5.9. If position does not point to a sequence of bytes starting with + // 0x0D 0x0A (CR LF), return failure. Otherwise, advance position by 2. + if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) { + return 'failure' + } else { + position.position += 2 + } + + // 5.10. If filename is not null: + let value + + if (filename !== null) { + // 5.10.1. If contentType is null, set contentType to "text/plain". + contentType ??= 'text/plain' + + // 5.10.2. If contentType is not an ASCII string, set contentType to the empty string. + + // Note: `buffer.isAscii` can be used at zero-cost, but converting a string to a buffer is a high overhead. + // Content-Type is a relatively small string, so it is faster to use `String#charCodeAt`. + if (!isAsciiString(contentType)) { + contentType = '' + } + + // 5.10.3. Let value be a new File object with name filename, type contentType, and body body. + value = new File([body], filename, { type: contentType }) + } else { + // 5.11. Otherwise: + + // 5.11.1. Let value be the UTF-8 decoding without BOM of body. + value = utf8DecodeBytes(Buffer.from(body)) + } + + // 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object. + assert(isUSVString(name)) + assert((typeof value === 'string' && isUSVString(value)) || isFileLike(value)) + + // 5.13. Create an entry with name and value, and append it to entry list. + entryList.push(makeEntry(name, value, filename)) + } +} + +/** + * @see https://andreubotella.github.io/multipart-form-data/#parse-multipart-form-data-headers + * @param {Buffer} input + * @param {{ position: number }} position + */ +function parseMultipartFormDataHeaders (input, position) { + // 1. Let name, filename and contentType be null. + let name = null + let filename = null + let contentType = null + let encoding = null + + // 2. While true: + while (true) { + // 2.1. If position points to a sequence of bytes starting with 0x0D 0x0A (CR LF): + if (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) { + // 2.1.1. If name is null, return failure. + if (name === null) { + return 'failure' + } + + // 2.1.2. Return name, filename and contentType. + return { name, filename, contentType, encoding } + } + + // 2.2. Let header name be the result of collecting a sequence of bytes that are + // not 0x0A (LF), 0x0D (CR) or 0x3A (:), given position. + let headerName = collectASequenceOfBytes( + (char) => char !== 0x0a && char !== 0x0d && char !== 0x3a, + input, + position + ) + + // 2.3. Remove any HTTP tab or space bytes from the start or end of header name. + headerName = removeChars(headerName, true, true, (char) => char === 0x9 || char === 0x20) + + // 2.4. If header name does not match the field-name token production, return failure. + if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) { + return 'failure' + } + + // 2.5. If the byte at position is not 0x3A (:), return failure. + if (input[position.position] !== 0x3a) { + return 'failure' + } + + // 2.6. Advance position by 1. + position.position++ + + // 2.7. Collect a sequence of bytes that are HTTP tab or space bytes given position. + // (Do nothing with those bytes.) + collectASequenceOfBytes( + (char) => char === 0x20 || char === 0x09, + input, + position + ) + + // 2.8. Byte-lowercase header name and switch on the result: + switch (bufferToLowerCasedHeaderName(headerName)) { + case 'content-disposition': { + // 1. Set name and filename to null. + name = filename = null + + // 2. If position does not point to a sequence of bytes starting with + // `form-data; name="`, return failure. + if (!bufferStartsWith(input, formDataNameBuffer, position)) { + return 'failure' + } + + // 3. Advance position so it points at the byte after the next 0x22 (") + // byte (the one in the sequence of bytes matched above). + position.position += 17 + + // 4. Set name to the result of parsing a multipart/form-data name given + // input and position, if the result is not failure. Otherwise, return + // failure. + name = parseMultipartFormDataName(input, position) + + if (name === null) { + return 'failure' + } + + // 5. If position points to a sequence of bytes starting with `; filename="`: + if (bufferStartsWith(input, filenameBuffer, position)) { + // Note: undici also handles filename* + let check = position.position + filenameBuffer.length + + if (input[check] === 0x2a) { + position.position += 1 + check += 1 + } + + if (input[check] !== 0x3d || input[check + 1] !== 0x22) { // =" + return 'failure' + } + + // 1. Advance position so it points at the byte after the next 0x22 (") byte + // (the one in the sequence of bytes matched above). + position.position += 12 + + // 2. Set filename to the result of parsing a multipart/form-data name given + // input and position, if the result is not failure. Otherwise, return failure. + filename = parseMultipartFormDataName(input, position) + + if (filename === null) { + return 'failure' + } + } + + break + } + case 'content-type': { + // 1. Let header value be the result of collecting a sequence of bytes that are + // not 0x0A (LF) or 0x0D (CR), given position. + let headerValue = collectASequenceOfBytes( + (char) => char !== 0x0a && char !== 0x0d, + input, + position + ) + + // 2. Remove any HTTP tab or space bytes from the end of header value. + headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20) + + // 3. Set contentType to the isomorphic decoding of header value. + contentType = isomorphicDecode(headerValue) + + break + } + case 'content-transfer-encoding': { + let headerValue = collectASequenceOfBytes( + (char) => char !== 0x0a && char !== 0x0d, + input, + position + ) + + headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20) + + encoding = isomorphicDecode(headerValue) + + break + } + default: { + // Collect a sequence of bytes that are not 0x0A (LF) or 0x0D (CR), given position. + // (Do nothing with those bytes.) + collectASequenceOfBytes( + (char) => char !== 0x0a && char !== 0x0d, + input, + position + ) + } + } + + // 2.9. If position does not point to a sequence of bytes starting with 0x0D 0x0A + // (CR LF), return failure. Otherwise, advance position by 2 (past the newline). + if (input[position.position] !== 0x0d && input[position.position + 1] !== 0x0a) { + return 'failure' + } else { + position.position += 2 + } + } +} + +/** + * @see https://andreubotella.github.io/multipart-form-data/#parse-a-multipart-form-data-name + * @param {Buffer} input + * @param {{ position: number }} position + */ +function parseMultipartFormDataName (input, position) { + // 1. Assert: The byte at (position - 1) is 0x22 ("). + assert(input[position.position - 1] === 0x22) + + // 2. Let name be the result of collecting a sequence of bytes that are not 0x0A (LF), 0x0D (CR) or 0x22 ("), given position. + /** @type {string | Buffer} */ + let name = collectASequenceOfBytes( + (char) => char !== 0x0a && char !== 0x0d && char !== 0x22, + input, + position + ) + + // 3. If the byte at position is not 0x22 ("), return failure. Otherwise, advance position by 1. + if (input[position.position] !== 0x22) { + return null // name could be 'failure' + } else { + position.position++ + } + + // 4. Replace any occurrence of the following subsequences in name with the given byte: + // - `%0A`: 0x0A (LF) + // - `%0D`: 0x0D (CR) + // - `%22`: 0x22 (") + name = new TextDecoder().decode(name) + .replace(/%0A/ig, '\n') + .replace(/%0D/ig, '\r') + .replace(/%22/g, '"') + + // 5. Return the UTF-8 decoding without BOM of name. + return name +} + +/** + * @param {(char: number) => boolean} condition + * @param {Buffer} input + * @param {{ position: number }} position + */ +function collectASequenceOfBytes (condition, input, position) { + let start = position.position + + while (start < input.length && condition(input[start])) { + ++start + } + + return input.subarray(position.position, (position.position = start)) +} + +/** + * @param {Buffer} buf + * @param {boolean} leading + * @param {boolean} trailing + * @param {(charCode: number) => boolean} predicate + * @returns {Buffer} + */ +function removeChars (buf, leading, trailing, predicate) { + let lead = 0 + let trail = buf.length - 1 + + if (leading) { + while (lead < buf.length && predicate(buf[lead])) lead++ + } + + if (trailing) { + while (trail > 0 && predicate(buf[trail])) trail-- + } + + return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1) +} + +/** + * Checks if {@param buffer} starts with {@param start} + * @param {Buffer} buffer + * @param {Buffer} start + * @param {{ position: number }} position + */ +function bufferStartsWith (buffer, start, position) { + if (buffer.length < start.length) { + return false + } + + for (let i = 0; i < start.length; i++) { + if (start[i] !== buffer[position.position + i]) { + return false + } + } + + return true +} + +module.exports = { + multipartFormDataParser, + validateBoundary +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/formdata.js b/deps/npm/node_modules/undici/lib/web/fetch/formdata.js new file mode 100644 index 00000000000000..544e4125519382 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/formdata.js @@ -0,0 +1,252 @@ +'use strict' + +const { isBlobLike, iteratorMixin } = require('./util') +const { kState } = require('./symbols') +const { kEnumerableProperty } = require('../../core/util') +const { FileLike, isFileLike } = require('./file') +const { webidl } = require('./webidl') +const { File: NativeFile } = require('node:buffer') +const nodeUtil = require('node:util') + +/** @type {globalThis['File']} */ +const File = globalThis.File ?? NativeFile + +// https://xhr.spec.whatwg.org/#formdata +class FormData { + constructor (form) { + webidl.util.markAsUncloneable(this) + + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }) + } + + this[kState] = [] + } + + append (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.append' + webidl.argumentLengthCheck(arguments, 2, prefix) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name, prefix, 'name') + value = isBlobLike(value) + ? webidl.converters.Blob(value, prefix, 'value', { strict: false }) + : webidl.converters.USVString(value, prefix, 'value') + filename = arguments.length === 3 + ? webidl.converters.USVString(filename, prefix, 'filename') + : undefined + + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + const entry = makeEntry(name, value, filename) + + // 3. Append entry to this’s entry list. + this[kState].push(entry) + } + + delete (name) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.delete' + webidl.argumentLengthCheck(arguments, 1, prefix) + + name = webidl.converters.USVString(name, prefix, 'name') + + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(entry => entry.name !== name) + } + + get (name) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.get' + webidl.argumentLengthCheck(arguments, 1, prefix) + + name = webidl.converters.USVString(name, prefix, 'name') + + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx === -1) { + return null + } + + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value + } + + getAll (name) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.getAll' + webidl.argumentLengthCheck(arguments, 1, prefix) + + name = webidl.converters.USVString(name, prefix, 'name') + + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState] + .filter((entry) => entry.name === name) + .map((entry) => entry.value) + } + + has (name) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.has' + webidl.argumentLengthCheck(arguments, 1, prefix) + + name = webidl.converters.USVString(name, prefix, 'name') + + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex((entry) => entry.name === name) !== -1 + } + + set (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + const prefix = 'FormData.set' + webidl.argumentLengthCheck(arguments, 2, prefix) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name, prefix, 'name') + value = isBlobLike(value) + ? webidl.converters.Blob(value, prefix, 'name', { strict: false }) + : webidl.converters.USVString(value, prefix, 'name') + filename = arguments.length === 3 + ? webidl.converters.USVString(filename, prefix, 'name') + : undefined + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + const entry = makeEntry(name, value, filename) + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) + ] + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry) + } + } + + [nodeUtil.inspect.custom] (depth, options) { + const state = this[kState].reduce((a, b) => { + if (a[b.name]) { + if (Array.isArray(a[b.name])) { + a[b.name].push(b.value) + } else { + a[b.name] = [a[b.name], b.value] + } + } else { + a[b.name] = b.value + } + + return a + }, { __proto__: null }) + + options.depth ??= depth + options.colors ??= true + + const output = nodeUtil.formatWithOptions(options, state) + + // remove [Object null prototype] + return `FormData ${output.slice(output.indexOf(']') + 2)}` + } +} + +iteratorMixin('FormData', FormData, kState, 'name', 'value') + +Object.defineProperties(FormData.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + getAll: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true + } +}) + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry (name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // Note: This operation was done by the webidl converter USVString. + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + // Note: This operation was done by the webidl converter USVString. + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } + + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + const options = { + type: value.type, + lastModified: value.lastModified + } + + value = value instanceof NativeFile + ? new File([value], filename, options) + : new FileLike(value, filename, options) + } + } + + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} + +module.exports = { FormData, makeEntry } diff --git a/deps/npm/node_modules/undici/lib/web/fetch/global.js b/deps/npm/node_modules/undici/lib/web/fetch/global.js new file mode 100644 index 00000000000000..1df6f1227bc265 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/global.js @@ -0,0 +1,40 @@ +'use strict' + +// In case of breaking changes, increase the version +// number to avoid conflicts. +const globalOrigin = Symbol.for('undici.globalOrigin.1') + +function getGlobalOrigin () { + return globalThis[globalOrigin] +} + +function setGlobalOrigin (newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }) + + return + } + + const parsedURL = new URL(newOrigin) + + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) + } + + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }) +} + +module.exports = { + getGlobalOrigin, + setGlobalOrigin +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/headers.js b/deps/npm/node_modules/undici/lib/web/fetch/headers.js new file mode 100644 index 00000000000000..a68daf4a5d4737 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/headers.js @@ -0,0 +1,687 @@ +// https://github.com/Ethan-Arrowood/undici-fetch + +'use strict' + +const { kConstruct } = require('../../core/symbols') +const { kEnumerableProperty } = require('../../core/util') +const { + iteratorMixin, + isValidHeaderName, + isValidHeaderValue +} = require('./util') +const { webidl } = require('./webidl') +const assert = require('node:assert') +const util = require('node:util') + +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') + +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode (code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + let i = 0; let j = potentialValue.length + + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i + + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) +} + +function fill (headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i] + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) + } + + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]) + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + const keys = Object.keys(object) + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]) + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) + } +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader (headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } + + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + // Note: undici does not implement forbidden header names + if (getHeadersGuard(headers) === 'immutable') { + throw new TypeError('immutable') + } + + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + return getHeadersList(headers).append(name, value, false) + + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers +} + +function compareHeaderName (a, b) { + return a[0] < b[0] ? -1 : 1 +} + +class HeadersList { + /** @type {[string, string][]|null} */ + cookies = null + + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + this.cookies = init.cookies === null ? null : [...init.cookies] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } + + /** + * @see https://fetch.spec.whatwg.org/#header-list-contains + * @param {string} name + * @param {boolean} isLowerCase + */ + contains (name, isLowerCase) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + + return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase()) + } + + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + this.cookies = null + } + + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-append + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + append (name, value, isLowerCase) { + this[kHeadersSortedMap] = null + + // 1. If list contains name, then set name to the first such + // header’s name. + const lowercaseName = isLowerCase ? name : name.toLowerCase() + const exists = this[kHeadersMap].get(lowercaseName) + + // 2. Append (name, value) to list. + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }) + } else { + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + if (lowercaseName === 'set-cookie') { + (this.cookies ??= []).push(value) + } + } + + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-set + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + set (name, value, isLowerCase) { + this[kHeadersSortedMap] = null + const lowercaseName = isLowerCase ? name : name.toLowerCase() + + if (lowercaseName === 'set-cookie') { + this.cookies = [value] + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-delete + * @param {string} name + * @param {boolean} isLowerCase + */ + delete (name, isLowerCase) { + this[kHeadersSortedMap] = null + if (!isLowerCase) name = name.toLowerCase() + + if (name === 'set-cookie') { + this.cookies = null + } + + this[kHeadersMap].delete(name) + } + + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-get + * @param {string} name + * @param {boolean} isLowerCase + * @returns {string | null} + */ + get (name, isLowerCase) { + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null + } + + * [Symbol.iterator] () { + // use the lowercased name + for (const { 0: name, 1: { value } } of this[kHeadersMap]) { + yield [name, value] + } + } + + get entries () { + const headers = {} + + if (this[kHeadersMap].size !== 0) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value + } + } + + return headers + } + + rawValues () { + return this[kHeadersMap].values() + } + + get entriesList () { + const headers = [] + + if (this[kHeadersMap].size !== 0) { + for (const { 0: lowerName, 1: { name, value } } of this[kHeadersMap]) { + if (lowerName === 'set-cookie') { + for (const cookie of this.cookies) { + headers.push([name, cookie]) + } + } else { + headers.push([name, value]) + } + } + } + + return headers + } + + // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set + toSortedArray () { + const size = this[kHeadersMap].size + const array = new Array(size) + // In most cases, you will use the fast-path. + // fast-path: Use binary insertion sort for small arrays. + if (size <= 32) { + if (size === 0) { + // If empty, it is an empty array. To avoid the first index assignment. + return array + } + // Improve performance by unrolling loop and avoiding double-loop. + // Double-loop-less version of the binary insertion sort. + const iterator = this[kHeadersMap][Symbol.iterator]() + const firstValue = iterator.next().value + // set [name, value] to first index. + array[0] = [firstValue[0], firstValue[1].value] + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + // 3.2.2. Assert: value is non-null. + assert(firstValue[1].value !== null) + for ( + let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value; + i < size; + ++i + ) { + // get next value + value = iterator.next().value + // set [name, value] to current index. + x = array[i] = [value[0], value[1].value] + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + // 3.2.2. Assert: value is non-null. + assert(x[1] !== null) + left = 0 + right = i + // binary search + while (left < right) { + // middle index + pivot = left + ((right - left) >> 1) + // compare header name + if (array[pivot][0] <= x[0]) { + left = pivot + 1 + } else { + right = pivot + } + } + if (i !== pivot) { + j = i + while (j > left) { + array[j] = array[--j] + } + array[left] = x + } + } + /* c8 ignore next 4 */ + if (!iterator.next().done) { + // This is for debugging and will never be called. + throw new TypeError('Unreachable') + } + return array + } else { + // This case would be a rare occurrence. + // slow-path: fallback + let i = 0 + for (const { 0: name, 1: { value } } of this[kHeadersMap]) { + array[i++] = [name, value] + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + // 3.2.2. Assert: value is non-null. + assert(value !== null) + } + return array.sort(compareHeaderName) + } + } +} + +// https://fetch.spec.whatwg.org/#headers-class +class Headers { + #guard + #headersList + + constructor (init = undefined) { + webidl.util.markAsUncloneable(this) + + if (init === kConstruct) { + return + } + + this.#headersList = new HeadersList() + + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this.#guard = 'none' + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init, 'Headers contructor', 'init') + fill(this, init) + } + } + + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, 'Headers.append') + + const prefix = 'Headers.append' + name = webidl.converters.ByteString(name, prefix, 'name') + value = webidl.converters.ByteString(value, prefix, 'value') + + return appendHeader(this, name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, 'Headers.delete') + + const prefix = 'Headers.delete' + name = webidl.converters.ByteString(name, prefix, 'name') + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this.#guard === 'immutable') { + throw new TypeError('immutable') + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this.#headersList.contains(name, false)) { + return + } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this.#headersList.delete(name, false) + } + + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, 'Headers.get') + + const prefix = 'Headers.get' + name = webidl.converters.ByteString(name, prefix, 'name') + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }) + } + + // 2. Return the result of getting name from this’s header + // list. + return this.#headersList.get(name, false) + } + + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, 'Headers.has') + + const prefix = 'Headers.has' + name = webidl.converters.ByteString(name, prefix, 'name') + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }) + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this.#headersList.contains(name, false) + } + + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, 'Headers.set') + + const prefix = 'Headers.set' + name = webidl.converters.ByteString(name, prefix, 'name') + value = webidl.converters.ByteString(value, prefix, 'value') + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix, + value, + type: 'header value' + }) + } + + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this.#guard === 'immutable') { + throw new TypeError('immutable') + } + + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this.#headersList.set(name, value, false) + } + + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie () { + webidl.brandCheck(this, Headers) + + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. + + const list = this.#headersList.cookies + + if (list) { + return [...list] + } + + return [] + } + + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap] () { + if (this.#headersList[kHeadersSortedMap]) { + return this.#headersList[kHeadersSortedMap] + } + + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + const headers = [] + + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + const names = this.#headersList.toSortedArray() + + const cookies = this.#headersList.cookies + + // fast-path + if (cookies === null || cookies.length === 1) { + // Note: The non-null assertion of value has already been done by `HeadersList#toSortedArray` + return (this.#headersList[kHeadersSortedMap] = names) + } + + // 3. For each name of names: + for (let i = 0; i < names.length; ++i) { + const { 0: name, 1: value } = names[i] + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]) + } + } else { + // 2. Otherwise: + + // 1. Let value be the result of getting name from list. + + // 2. Assert: value is non-null. + // Note: This operation was done by `HeadersList#toSortedArray`. + + // 3. Append (name, value) to headers. + headers.push([name, value]) + } + } + + // 4. Return headers. + return (this.#headersList[kHeadersSortedMap] = headers) + } + + [util.inspect.custom] (depth, options) { + options.depth ??= depth + + return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}` + } + + static getHeadersGuard (o) { + return o.#guard + } + + static setHeadersGuard (o, guard) { + o.#guard = guard + } + + static getHeadersList (o) { + return o.#headersList + } + + static setHeadersList (o, list) { + o.#headersList = list + } +} + +const { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers +Reflect.deleteProperty(Headers, 'getHeadersGuard') +Reflect.deleteProperty(Headers, 'setHeadersGuard') +Reflect.deleteProperty(Headers, 'getHeadersList') +Reflect.deleteProperty(Headers, 'setHeadersList') + +iteratorMixin('Headers', Headers, kHeadersSortedMap, 0, 1) + +Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + }, + [util.inspect.custom]: { + enumerable: false + } +}) + +webidl.converters.HeadersInit = function (V, prefix, argument) { + if (webidl.util.Type(V) === 'Object') { + const iterator = Reflect.get(V, Symbol.iterator) + + // A work-around to ensure we send the properly-cased Headers when V is a Headers object. + // Read https://github.com/nodejs/undici/pull/3159#issuecomment-2075537226 before touching, please. + if (!util.types.isProxy(V) && iterator === Headers.prototype.entries) { // Headers object + try { + return getHeadersList(V).entriesList + } catch { + // fall-through + } + } + + if (typeof iterator === 'function') { + return webidl.converters['sequence>'](V, prefix, argument, iterator.bind(V)) + } + + return webidl.converters['record'](V, prefix, argument) + } + + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) +} + +module.exports = { + fill, + // for test. + compareHeaderName, + Headers, + HeadersList, + getHeadersGuard, + setHeadersGuard, + setHeadersList, + getHeadersList +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/index.js b/deps/npm/node_modules/undici/lib/web/fetch/index.js new file mode 100644 index 00000000000000..9a685d680a1c36 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/index.js @@ -0,0 +1,2272 @@ +// https://github.com/Ethan-Arrowood/undici-fetch + +'use strict' + +const { + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse, + fromInnerResponse +} = require('./response') +const { HeadersList } = require('./headers') +const { Request, cloneRequest } = require('./request') +const zlib = require('node:zlib') +const { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme, + clampAndCoarsenConnectionTimingInfo, + simpleRangeHeaderValue, + buildContentRange, + createInflate, + extractMimeType +} = require('./util') +const { kState, kDispatcher } = require('./symbols') +const assert = require('node:assert') +const { safelyExtractBody, extractBody } = require('./body') +const { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet +} = require('./constants') +const EE = require('node:events') +const { Readable, pipeline, finished } = require('node:stream') +const { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require('../../core/util') +const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require('./data-url') +const { getGlobalDispatcher } = require('../../global') +const { webidl } = require('./webidl') +const { STATUS_CODES } = require('node:http') +const GET_OR_HEAD = ['GET', 'HEAD'] + +const defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined' + ? 'node' + : 'undici' + +/** @type {import('buffer').resolveObjectURL} */ +let resolveObjectURL + +class Fetch extends EE { + constructor (dispatcher) { + super() + + this.dispatcher = dispatcher + this.connection = null + this.dump = false + this.state = 'ongoing' + } + + terminate (reason) { + if (this.state !== 'ongoing') { + return + } + + this.state = 'terminated' + this.connection?.destroy(reason) + this.emit('terminated', reason) + } + + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort (error) { + if (this.state !== 'ongoing') { + return + } + + // 1. Set controller’s state to "aborted". + this.state = 'aborted' + + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). + + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error + + this.connection?.destroy(error) + this.emit('terminated', error) + } +} + +function handleFetchDone (response) { + finalizeAndReportTiming(response, 'fetch') +} + +// https://fetch.spec.whatwg.org/#fetch-method +function fetch (input, init = undefined) { + webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch') + + // 1. Let p be a new promise. + let p = createDeferredPromise() + + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + let requestObject + + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } + + // 3. Let request be requestObject’s request. + const request = requestObject[kState] + + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason) + + // 2. Return p. + return p.promise + } + + // 5. Let globalObject be request’s client’s global object. + const globalObject = request.client.globalObject + + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none' + } + + // 7. Let responseObject be null. + let responseObject = null + + // 8. Let relevantRealm be this’s relevant Realm. + + // 9. Let locallyAborted be false. + let locallyAborted = false + + // 10. Let controller be null. + let controller = null + + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener( + requestObject.signal, + () => { + // 1. Set locallyAborted to true. + locallyAborted = true + + // 2. Assert: controller is non-null. + assert(controller != null) + + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason) + + const realResponse = responseObject?.deref() + + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, realResponse, requestObject.signal.reason) + } + ) + + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + // see function handleFetchDone + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + const processResponse = (response) => { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason) + return + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject(new TypeError('fetch failed', { cause: response.error })) + return + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new WeakRef(fromInnerResponse(response, 'immutable')) + + // 5. Resolve p with responseObject. + p.resolve(responseObject.deref()) + p = null + } + + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: requestObject[kDispatcher] // undici + }) + + // 14. Return p. + return p.promise +} + +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming (response, initiatorType = 'other') { + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return + } + + // 2. If response’s URL list is null or empty, then return. + if (!response.urlList?.length) { + return + } + + // 3. Let originalURL be response’s URL list[0]. + const originalURL = response.urlList[0] + + // 4. Let timingInfo be response’s timing info. + let timingInfo = response.timingInfo + + // 5. Let cacheState be response’s cache state. + let cacheState = response.cacheState + + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return + } + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return + } + + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }) + + // 2. Set cacheState to the empty string. + cacheState = '' + } + + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime() + + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming( + timingInfo, + originalURL.href, + initiatorType, + globalThis, + cacheState + ) +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +const markResourceTiming = performance.markResourceTiming + +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch (p, request, responseObject, error) { + // 1. Reject promise with error. + if (p) { + // We might have already resolved the promise at this stage + p.reject(error) + } + + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } + + // 3. If responseObject is null, then return. + if (responseObject == null) { + return + } + + // 4. Let response be responseObject’s response. + const response = responseObject[kState] + + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } +} + +// https://fetch.spec.whatwg.org/#fetching +function fetching ({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher = getGlobalDispatcher() // undici +}) { + // Ensure that the dispatcher is set accordingly + assert(dispatcher) + + // 1. Let taskDestination be null. + let taskDestination = null + + // 2. Let crossOriginIsolatedCapability be false. + let crossOriginIsolatedCapability = false + + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject + + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = + request.client.crossOriginIsolatedCapability + } + + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO + + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) + const timingInfo = createOpaqueTimingInfo({ + startTime: currentTime + }) + + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + } + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream) + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + // TODO: What if request.client is null? + request.window = + request.client?.globalObject?.constructor?.name === 'Window' + ? request.client + : 'no-window' + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + request.origin = request.client.origin + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer( + request.client.policyContainer + ) + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer() + } + } + + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept', true)) { + // 1. Let value be `*/*`. + const value = '*/*' + + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO + + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value, true) + } + + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language', true)) { + request.headersList.append('accept-language', '*', true) + } + + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO + } + + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } + + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams) + .catch(err => { + fetchParams.controller.terminate(err) + }) + + // 17. Return fetchParam's controller + return fetchParams.controller +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +async function mainFetch (fetchParams, recursive = false) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only') + } + + // 4. Run report Content Security Policy violations for request. + // TODO + + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port') + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? + + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy + } + + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request) + } + + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO + + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO + + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request) + + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || + // request’s current URL’s scheme is "data" + (currentURL.protocol === 'data:') || + // - request’s mode is "navigate" or "websocket" + (request.mode === 'navigate' || request.mode === 'websocket') + ) { + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic' + + // 2. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s mode is "same-origin" + if (request.mode === 'same-origin') { + // 1. Return a network error. + return makeNetworkError('request mode cannot be "same-origin"') + } + + // request’s mode is "no-cors" + if (request.mode === 'no-cors') { + // 1. If request’s redirect mode is not "follow", then return a network + // error. + if (request.redirect !== 'follow') { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ) + } + + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque' + + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s current URL’s scheme is not an HTTP(S) scheme + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + // Return a network error. + return makeNetworkError('URL scheme must be a HTTP(S) scheme') + } + + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors' + + // 2. Return the result of running HTTP fetch given fetchParams. + return await httpFetch(fetchParams) + })() + } + + // 12. If recursive is true, then return response. + if (recursive) { + return response + } + + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO + } + + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic') + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors') + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque') + } else { + assert(false) + } + } + + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + let internalResponse = + response.status === 0 ? response : response.internalResponse + + // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList) + } + + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true + } + + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO + + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range', true) + ) { + response = internalResponse = makeNetworkError() + } + + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if ( + response.status !== 0 && + (request.method === 'HEAD' || + request.method === 'CONNECT' || + nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null + fetchParams.controller.dump = true + } + + // 20. If request’s integrity metadata is not the empty string, then: + if (request.integrity) { + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + const processBodyError = (reason) => + fetchFinale(fetchParams, makeNetworkError(reason)) + + // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error) + return + } + + // 3. Let processBody given bytes be these steps: + const processBody = (bytes) => { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch') + return + } + + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0] + + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } + + // 4. Fully read response’s body given processBody and processBodyError. + await fullyReadBody(response.body, processBody, processBodyError) + } else { + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } +} + +// https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function schemeFetch (fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)) + } + + // 2. Let request be fetchParams’s request. + const { request } = fetchParams + + const { protocol: scheme } = requestCurrentURL(request) + + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. + + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')) + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = require('node:buffer').resolveObjectURL + } + + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + const blobURLEntry = requestCurrentURL(request) + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) + } + + const blob = resolveObjectURL(blobURLEntry.toString()) + + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blob)) { + return Promise.resolve(makeNetworkError('invalid method')) + } + + // 3. Let blob be blobURLEntry’s object. + // Note: done above + + // 4. Let response be a new response. + const response = makeResponse() + + // 5. Let fullLength be blob’s size. + const fullLength = blob.size + + // 6. Let serializedFullLength be fullLength, serialized and isomorphic encoded. + const serializedFullLength = isomorphicEncode(`${fullLength}`) + + // 7. Let type be blob’s type. + const type = blob.type + + // 8. If request’s header list does not contain `Range`: + // 9. Otherwise: + if (!request.headersList.contains('range', true)) { + // 1. Let bodyWithType be the result of safely extracting blob. + // Note: in the FileAPI a blob "object" is a Blob *or* a MediaSource. + // In node, this can only ever be a Blob. Therefore we can safely + // use extractBody directly. + const bodyWithType = extractBody(blob) + + // 2. Set response’s status message to `OK`. + response.statusText = 'OK' + + // 3. Set response’s body to bodyWithType’s body. + response.body = bodyWithType[0] + + // 4. Set response’s header list to « (`Content-Length`, serializedFullLength), (`Content-Type`, type) ». + response.headersList.set('content-length', serializedFullLength, true) + response.headersList.set('content-type', type, true) + } else { + // 1. Set response’s range-requested flag. + response.rangeRequested = true + + // 2. Let rangeHeader be the result of getting `Range` from request’s header list. + const rangeHeader = request.headersList.get('range', true) + + // 3. Let rangeValue be the result of parsing a single range header value given rangeHeader and true. + const rangeValue = simpleRangeHeaderValue(rangeHeader, true) + + // 4. If rangeValue is failure, then return a network error. + if (rangeValue === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } + + // 5. Let (rangeStart, rangeEnd) be rangeValue. + let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue + + // 6. If rangeStart is null: + // 7. Otherwise: + if (rangeStart === null) { + // 1. Set rangeStart to fullLength − rangeEnd. + rangeStart = fullLength - rangeEnd + + // 2. Set rangeEnd to rangeStart + rangeEnd − 1. + rangeEnd = rangeStart + rangeEnd - 1 + } else { + // 1. If rangeStart is greater than or equal to fullLength, then return a network error. + if (rangeStart >= fullLength) { + return Promise.resolve(makeNetworkError('Range start is greater than the blob\'s size.')) + } + + // 2. If rangeEnd is null or rangeEnd is greater than or equal to fullLength, then set + // rangeEnd to fullLength − 1. + if (rangeEnd === null || rangeEnd >= fullLength) { + rangeEnd = fullLength - 1 + } + } + + // 8. Let slicedBlob be the result of invoking slice blob given blob, rangeStart, + // rangeEnd + 1, and type. + const slicedBlob = blob.slice(rangeStart, rangeEnd, type) + + // 9. Let slicedBodyWithType be the result of safely extracting slicedBlob. + // Note: same reason as mentioned above as to why we use extractBody + const slicedBodyWithType = extractBody(slicedBlob) + + // 10. Set response’s body to slicedBodyWithType’s body. + response.body = slicedBodyWithType[0] + + // 11. Let serializedSlicedLength be slicedBlob’s size, serialized and isomorphic encoded. + const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`) + + // 12. Let contentRange be the result of invoking build a content range given rangeStart, + // rangeEnd, and fullLength. + const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength) + + // 13. Set response’s status to 206. + response.status = 206 + + // 14. Set response’s status message to `Partial Content`. + response.statusText = 'Partial Content' + + // 15. Set response’s header list to « (`Content-Length`, serializedSlicedLength), + // (`Content-Type`, type), (`Content-Range`, contentRange) ». + response.headersList.set('content-length', serializedSlicedLength, true) + response.headersList.set('content-type', type, true) + response.headersList.set('content-range', contentRange, true) + } + + // 10. Return response. + return Promise.resolve(response) + } + case 'data:': { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + const currentURL = requestCurrentURL(request) + const dataURLStruct = dataURLProcessor(currentURL) + + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } + + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + const mimeType = serializeAMimeType(dataURLStruct.mimeType) + + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [ + ['content-type', { name: 'Content-Type', value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })) + } + case 'file:': { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')) + } + case 'http:': + case 'https:': { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams) + .catch((err) => makeNetworkError(err)) + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')) + } + } +} + +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse (fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)) + } +} + +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale (fetchParams, response) { + // 1. Let timingInfo be fetchParams’s timing info. + let timingInfo = fetchParams.timingInfo + + // 2. If response is not a network error and fetchParams’s request’s client is a secure context, + // then set timingInfo’s server-timing headers to the result of getting, decoding, and splitting + // `Server-Timing` from response’s internal response’s header list. + // TODO + + // 3. Let processResponseEndOfBody be the following steps: + const processResponseEndOfBody = () => { + // 1. Let unsafeEndTime be the unsafe shared current time. + const unsafeEndTime = Date.now() // ? + + // 2. If fetchParams’s request’s destination is "document", then set fetchParams’s controller’s + // full timing info to fetchParams’s timing info. + if (fetchParams.request.destination === 'document') { + fetchParams.controller.fullTimingInfo = timingInfo + } + + // 3. Set fetchParams’s controller’s report timing steps to the following steps given a global object global: + fetchParams.controller.reportTimingSteps = () => { + // 1. If fetchParams’s request’s URL’s scheme is not an HTTP(S) scheme, then return. + if (fetchParams.request.url.protocol !== 'https:') { + return + } + + // 2. Set timingInfo’s end time to the relative high resolution time given unsafeEndTime and global. + timingInfo.endTime = unsafeEndTime + + // 3. Let cacheState be response’s cache state. + let cacheState = response.cacheState + + // 4. Let bodyInfo be response’s body info. + const bodyInfo = response.bodyInfo + + // 5. If response’s timing allow passed flag is not set, then set timingInfo to the result of creating an + // opaque timing info for timingInfo and set cacheState to the empty string. + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo(timingInfo) + + cacheState = '' + } + + // 6. Let responseStatus be 0. + let responseStatus = 0 + + // 7. If fetchParams’s request’s mode is not "navigate" or response’s has-cross-origin-redirects is false: + if (fetchParams.request.mode !== 'navigator' || !response.hasCrossOriginRedirects) { + // 1. Set responseStatus to response’s status. + responseStatus = response.status + + // 2. Let mimeType be the result of extracting a MIME type from response’s header list. + const mimeType = extractMimeType(response.headersList) + + // 3. If mimeType is not failure, then set bodyInfo’s content type to the result of minimizing a supported MIME type given mimeType. + if (mimeType !== 'failure') { + bodyInfo.contentType = minimizeSupportedMimeType(mimeType) + } + } + + // 8. If fetchParams’s request’s initiator type is non-null, then mark resource timing given timingInfo, + // fetchParams’s request’s URL, fetchParams’s request’s initiator type, global, cacheState, bodyInfo, + // and responseStatus. + if (fetchParams.request.initiatorType != null) { + // TODO: update markresourcetiming + markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus) + } + } + + // 4. Let processResponseEndOfBodyTask be the following steps: + const processResponseEndOfBodyTask = () => { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // 2. If fetchParams’s process response end-of-body is non-null, then run fetchParams’s process + // response end-of-body given response. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + } + + // 3. If fetchParams’s request’s initiator type is non-null and fetchParams’s request’s client’s + // global object is fetchParams’s task destination, then run fetchParams’s controller’s report + // timing steps given fetchParams’s request’s client’s global object. + if (fetchParams.request.initiatorType != null) { + fetchParams.controller.reportTimingSteps() + } + } + + // 5. Queue a fetch task to run processResponseEndOfBodyTask with fetchParams’s task destination + queueMicrotask(() => processResponseEndOfBodyTask()) + } + + // 4. If fetchParams’s process response is non-null, then queue a fetch task to run fetchParams’s + // process response given response, with fetchParams’s task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(() => { + fetchParams.processResponse(response) + fetchParams.processResponse = null + }) + } + + // 5. Let internalResponse be response, if response is a network error; otherwise response’s internal response. + const internalResponse = response.type === 'error' ? response : (response.internalResponse ?? response) + + // 6. If internalResponse’s body is null, then run processResponseEndOfBody. + // 7. Otherwise: + if (internalResponse.body == null) { + processResponseEndOfBody() + } else { + // mcollina: all the following steps of the specs are skipped. + // The internal transform stream is not needed. + // See https://github.com/nodejs/undici/pull/3093#issuecomment-2050198541 + + // 1. Let transformStream be a new TransformStream. + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, enqueues chunk in transformStream. + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm and flushAlgorithm + // set to processResponseEndOfBody. + // 4. Set internalResponse’s body’s stream to the result of internalResponse’s body’s stream piped through transformStream. + + finished(internalResponse.body.stream, () => { + processResponseEndOfBody() + }) + } +} + +// https://fetch.spec.whatwg.org/#http-fetch +async function httpFetch (fetchParams) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let actualResponse be null. + let actualResponse = null + + // 4. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } + + // 6. If response is null, then: + if (response === null) { + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO + + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none' + } + + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) + + // 4. If request’s response tainting is "cors" and a CORS check + // for request and response returns failure, then return a network error. + if ( + request.responseTainting === 'cors' && + corsCheck(request, response) === 'failure' + ) { + return makeNetworkError('cors failure') + } + + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true + } + } + + // 7. If either request’s response tainting or response’s type + // is "opaque", and the cross-origin resource policy check with + // request’s origin, request’s client, request’s destination, + // and actualResponse returns blocked, then return a network error. + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck( + request.origin, + request.client, + request.destination, + actualResponse + ) === 'blocked' + ) { + return makeNetworkError('blocked') + } + + // 8. If actualResponse’s status is a redirect status, then: + if (redirectStatusSet.has(actualResponse.status)) { + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy(undefined, false) + } + + // 2. Switch on request’s redirect mode: + if (request.redirect === 'error') { + // Set response to a network error. + response = makeNetworkError('unexpected redirect') + } else if (request.redirect === 'manual') { + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse + } else if (request.redirect === 'follow') { + // Set response to the result of running HTTP-redirect fetch given + // fetchParams and response. + response = await httpRedirectFetch(fetchParams, response) + } else { + assert(false) + } + } + + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 10. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-redirect-fetch +function httpRedirectFetch (fetchParams, response) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + const actualResponse = response.internalResponse + ? response.internalResponse + : response + + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + let locationURL + + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request).hash + ) + + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)) + } + + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) + } + + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')) + } + + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1 + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if ( + request.mode === 'cors' && + (locationURL.username || locationURL.password) && + !sameOrigin(request, locationURL) + ) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) + } + + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if ( + request.responseTainting === 'cors' && + (locationURL.username || locationURL.password) + ) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )) + } + + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if ( + actualResponse.status !== 303 && + request.body != null && + request.body.source == null + ) { + return Promise.resolve(makeNetworkError()) + } + + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && + !GET_OR_HEAD.includes(request.method)) + ) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET' + request.body = null + + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName) + } + } + + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList.delete('authorization', true) + + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList.delete('proxy-authorization', true) + + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList.delete('cookie', true) + request.headersList.delete('host', true) + } + + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null) + request.body = safelyExtractBody(request.body.source)[0] + } + + // 15. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = + coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime + } + + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL) + + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse) + + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true) +} + +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +async function httpNetworkOrCacheFetch ( + fetchParams, + isAuthenticationFetch = false, + isNewConnectionFetch = false +) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let httpFetchParams be null. + let httpFetchParams = null + + // 3. Let httpRequest be null. + let httpRequest = null + + // 4. Let response be null. + let response = null + + // 5. Let storedResponse be null. + // TODO: cache + + // 6. Let httpCache be null. + const httpCache = null + + // 7. Let the revalidatingFlag be unset. + const revalidatingFlag = false + + // 8. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams + httpRequest = request + } else { + // Otherwise: + + // 1. Set httpRequest to a clone of request. + httpRequest = cloneRequest(request) + + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = { ...fetchParams } + + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest + } + + // 3. Let includeCredentials be true if one of + const includeCredentials = + request.credentials === 'include' || + (request.credentials === 'same-origin' && + request.responseTainting === 'basic') + + // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + const contentLength = httpRequest.body ? httpRequest.body.length : null + + // 5. Let contentLengthHeaderValue be null. + let contentLengthHeaderValue = null + + // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if ( + httpRequest.body == null && + ['POST', 'PUT'].includes(httpRequest.method) + ) { + contentLengthHeaderValue = '0' + } + + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) + } + + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue, true) + } + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. + } + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href), true) + } + + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest) + + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest) + + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent', true)) { + httpRequest.headersList.append('user-agent', defaultUserAgent) + } + + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since', true) || + httpRequest.headersList.contains('if-none-match', true) || + httpRequest.headersList.contains('if-unmodified-since', true) || + httpRequest.headersList.contains('if-match', true) || + httpRequest.headersList.contains('if-range', true)) + ) { + httpRequest.cache = 'no-store' + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control', true) + ) { + httpRequest.headersList.append('cache-control', 'max-age=0', true) + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma', true)) { + httpRequest.headersList.append('pragma', 'no-cache', true) + } + + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control', true)) { + httpRequest.headersList.append('cache-control', 'no-cache', true) + } + } + + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range', true)) { + httpRequest.headersList.append('accept-encoding', 'identity', true) + } + + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding', true)) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate', true) + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate', true) + } + } + + httpRequest.headersList.delete('host', true) + + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } + + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache + + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store' + } + + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.cache !== 'no-store' && httpRequest.cache !== 'reload') { + // TODO: cache + } + + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO + + // 10. If response is null, then: + if (response == null) { + // 1. If httpRequest’s cache mode is "only-if-cached", then return a + // network error. + if (httpRequest.cache === 'only-if-cached') { + return makeNetworkError('only if cached') + } + + // 2. Let forwardResponse be the result of running HTTP-network fetch + // given httpFetchParams, includeCredentials, and isNewConnectionFetch. + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ) + + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if ( + !safeMethodsSet.has(httpRequest.method) && + forwardResponse.status >= 200 && + forwardResponse.status <= 399 + ) { + // TODO: cache + } + + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } + + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse + + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + } + + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = [...httpRequest.urlList] + + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range', true)) { + response.rangeRequested = true + } + + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials + + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO + + // 15. If response’s status is 407, then: + if (response.status === 407) { + // 1. If request’s window is "no-window", then return a network error. + if (request.window === 'no-window') { + return makeNetworkError() + } + + // 2. ??? + + // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 4. Prompt the end user as appropriate in request’s window and store + // the result as a proxy-authentication entry. [HTTP-AUTH] + // TODO: Invoke some kind of callback? + + // 5. Set response to the result of running HTTP-network-or-cache fetch given + // fetchParams. + // TODO + return makeNetworkError('proxy authentication required') + } + + // 16. If all of the following are true + if ( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + // then: + + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. + + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy() + + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ) + } + + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } + + // 18. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-network-fetch +async function httpNetworkFetch ( + fetchParams, + includeCredentials = false, + forceNewConnection = false +) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) + + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy (err, abort = true) { + if (!this.destroyed) { + this.destroyed = true + if (abort) { + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) + } + } + } + } + + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + const httpCache = null + + // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store' + } + + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO + + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars + + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + + // 9. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If connection is failure, then return a network error. + + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. + + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. + + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. + + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: + + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. + + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). + + // - Wait until all the headers are transmitted. + + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. + + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. + + // - If the HTTP request results in a TLS client certificate dialog, then: + + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. + + // 2. Otherwise, return a network error. + + // To transmit request’s body body, run these steps: + let requestBody = null + // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()) + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: + + // 1. Let processBodyChunk given bytes be these steps: + const processBodyChunk = async function * (bytes) { + // 1. If the ongoing fetch is terminated, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. Run this step in parallel: transmit bytes. + yield bytes + + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) + } + + // 2. Let processEndOfBody be these steps: + const processEndOfBody = () => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody() + } + } + + // 3. Let processBodyError given e be these steps: + const processBodyError = (e) => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort() + } else { + fetchParams.controller.terminate(e) + } + } + + // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = (async function * () { + try { + for await (const bytes of request.body.stream) { + yield * processBodyChunk(bytes) + } + processEndOfBody() + } catch (err) { + processBodyError(err) + } + })() + } + + try { + // socket is only provided for websockets + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) + + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }) + } else { + const iterator = body[Symbol.asyncIterator]() + fetchParams.controller.next = () => iterator.next() + + response = makeResponse({ status, statusText, headersList }) + } + } catch (err) { + // 10. If aborted, then: + if (err.name === 'AbortError') { + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy() + + // 2. Return the appropriate network error for fetchParams. + return makeAppropriateNetworkError(fetchParams, err) + } + + return makeNetworkError(err) + } + + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + const pullAlgorithm = async () => { + await fetchParams.controller.resume() + } + + // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + const cancelAlgorithm = (reason) => { + // If the aborted fetch was already terminated, then we do not + // need to do anything. + if (!isCancelled(fetchParams)) { + fetchParams.controller.abort(reason) + } + } + + // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO + + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO + + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with byte reading support with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm. + const stream = new ReadableStream( + { + async start (controller) { + fetchParams.controller.controller = controller + }, + async pull (controller) { + await pullAlgorithm(controller) + }, + async cancel (reason) { + await cancelAlgorithm(reason) + }, + type: 'bytes' + } + ) + + // 17. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. Set response’s body to a new body whose stream is stream. + response.body = { stream, source: null, length: null } + + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO + + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO + + // 18. If aborted, then: + // TODO + + // 19. Run these steps in parallel: + + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.onAborted = onAborted + fetchParams.controller.on('terminated', onAborted) + fetchParams.controller.resume = async () => { + // 1. While true + while (true) { + // 1-3. See onData... + + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + let bytes + let isFailure + try { + const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break + } + + bytes = done ? undefined : value + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined + } else { + bytes = err + + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true + } + } + + if (bytes === undefined) { + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller) + + finalizeResponse(fetchParams, response) + + return + } + + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += bytes?.byteLength ?? 0 + + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (isFailure) { + fetchParams.controller.terminate(bytes) + return + } + + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + const buffer = new Uint8Array(bytes) + if (buffer.byteLength) { + fetchParams.controller.controller.enqueue(buffer) + } + + // 8. If stream is errored, then terminate the ongoing fetch. + if (isErrored(stream)) { + fetchParams.controller.terminate() + return + } + + // 9. If stream doesn’t need more data ask the user agent to suspend + // the ongoing fetch. + if (fetchParams.controller.controller.desiredSize <= 0) { + return + } + } + } + + // 2. If aborted, then: + function onAborted (reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true + + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ) + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })) + } + } + + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy() + } + + // 20. Return response. + return response + + function dispatch ({ body }) { + const url = requestCurrentURL(request) + /** @type {import('../..').Agent} */ + const agent = fetchParams.controller.dispatcher + + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: agent.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, + { + body: null, + abort: null, + + onConnect (abort) { + // TODO (fix): Do we need connection here? + const { connection } = fetchParams.controller + + // Set timingInfo’s final connection timing info to the result of calling clamp and coarsen + // connection timing info with connection’s timing info, timingInfo’s post-redirect start + // time, and fetchParams’s cross-origin isolated capability. + // TODO: implement connection timing + timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo(undefined, timingInfo.postRedirectStartTime, fetchParams.crossOriginIsolatedCapability) + + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')) + } else { + fetchParams.controller.on('terminated', abort) + this.abort = connection.abort = abort + } + + // Set timingInfo’s final network-request start time to the coarsened shared current time given + // fetchParams’s cross-origin isolated capability. + timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + }, + + onResponseStarted () { + // Set timingInfo’s final network-response start time to the coarsened shared current + // time given fetchParams’s cross-origin isolated capability, immediately after the + // user agent’s HTTP parser receives the first byte of the response (e.g., frame header + // bytes for HTTP/2 or response status line for HTTP/1.x). + timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + }, + + onHeaders (status, rawHeaders, resume, statusText) { + if (status < 200) { + return + } + + let location = '' + + const headersList = new HeadersList() + + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true) + } + location = headersList.get('location', true) + + this.body = new Readable({ read: resume }) + + const decoders = [] + + const willFollow = location && request.redirect === 'follow' && + redirectStatusSet.has(status) + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + const contentEncoding = headersList.get('content-encoding', true) + // "All content-coding values are case-insensitive..." + /** @type {string[]} */ + const codings = contentEncoding ? contentEncoding.toLowerCase().split(',') : [] + + // Limit the number of content-encodings to prevent resource exhaustion. + // CVE fix similar to urllib3 (GHSA-gm62-xv2j-4w53) and curl (CVE-2022-32206). + const maxContentEncodings = 5 + if (codings.length > maxContentEncodings) { + reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`)) + return true + } + + for (let i = codings.length - 1; i >= 0; --i) { + const coding = codings[i].trim() + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'deflate') { + decoders.push(createInflate({ + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress({ + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH + })) + } else { + decoders.length = 0 + break + } + } + } + + const onError = this.onError.bind(this) + + resolve({ + status, + statusText, + headersList, + body: decoders.length + ? pipeline(this.body, ...decoders, (err) => { + if (err) { + this.onError(err) + } + }).on('error', onError) + : this.body.on('error', onError) + }) + + return true + }, + + onData (chunk) { + if (fetchParams.controller.dump) { + return + } + + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + + // 1. Let bytes be the transmitted bytes. + const bytes = chunk + + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. + + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength + + // 4. See pullAlgorithm... + + return this.body.push(bytes) + }, + + onComplete () { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + if (fetchParams.controller.onAborted) { + fetchParams.controller.off('terminated', fetchParams.controller.onAborted) + } + + fetchParams.controller.ended = true + + this.body.push(null) + }, + + onError (error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + this.body?.destroy(error) + + fetchParams.controller.terminate(error) + + reject(error) + }, + + onUpgrade (status, rawHeaders, socket) { + if (status !== 101) { + return + } + + const headersList = new HeadersList() + + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true) + } + + resolve({ + status, + statusText: STATUS_CODES[status], + headersList, + socket + }) + + return true + } + } + )) + } +} + +module.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/request.js b/deps/npm/node_modules/undici/lib/web/fetch/request.js new file mode 100644 index 00000000000000..ee3ce488774c5e --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/request.js @@ -0,0 +1,1037 @@ +/* globals AbortController */ + +'use strict' + +const { extractBody, mixinBody, cloneBody, bodyUnusable } = require('./body') +const { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require('./headers') +const { FinalizationRegistry } = require('./dispatcher-weakref')() +const util = require('../../core/util') +const nodeUtil = require('node:util') +const { + isValidHTTPToken, + sameOrigin, + environmentSettingsObject +} = require('./util') +const { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex +} = require('./constants') +const { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util +const { kHeaders, kSignal, kState, kDispatcher } = require('./symbols') +const { webidl } = require('./webidl') +const { URLSerializer } = require('./data-url') +const { kConstruct } = require('../../core/symbols') +const assert = require('node:assert') +const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('node:events') + +const kAbortController = Symbol('abortController') + +const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort) +}) + +const dependentControllerMap = new WeakMap() + +function buildAbort (acRef) { + return abort + + function abort () { + const ac = acRef.deref() + if (ac !== undefined) { + // Currently, there is a problem with FinalizationRegistry. + // https://github.com/nodejs/node/issues/49344 + // https://github.com/nodejs/node/issues/47748 + // In the case of abort, the first step is to unregister from it. + // If the controller can refer to it, it is still registered. + // It will be removed in the future. + requestFinalizer.unregister(abort) + + // Unsubscribe a listener. + // FinalizationRegistry will no longer be called, so this must be done. + this.removeEventListener('abort', abort) + + ac.abort(this.reason) + + const controllerList = dependentControllerMap.get(ac.signal) + + if (controllerList !== undefined) { + if (controllerList.size !== 0) { + for (const ref of controllerList) { + const ctrl = ref.deref() + if (ctrl !== undefined) { + ctrl.abort(this.reason) + } + } + controllerList.clear() + } + dependentControllerMap.delete(ac.signal) + } + } + } +} + +let patchMethodWarning = false + +// https://fetch.spec.whatwg.org/#request-class +class Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor (input, init = {}) { + webidl.util.markAsUncloneable(this) + if (input === kConstruct) { + return + } + + const prefix = 'Request constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + input = webidl.converters.RequestInfo(input, prefix, 'input') + init = webidl.converters.RequestInit(init, prefix, 'init') + + // 1. Let request be null. + let request = null + + // 2. Let fallbackMode be null. + let fallbackMode = null + + // 3. Let baseURL be this’s relevant settings object’s API base URL. + const baseUrl = environmentSettingsObject.settingsObject.baseUrl + + // 4. Let signal be null. + let signal = null + + // 5. If input is a string, then: + if (typeof input === 'string') { + this[kDispatcher] = init.dispatcher + + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + let parsedURL + try { + parsedURL = new URL(input, baseUrl) + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }) + } + + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + 'Request cannot be constructed from a URL that includes credentials: ' + + input + ) + } + + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ urlList: [parsedURL] }) + + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors' + } else { + this[kDispatcher] = init.dispatcher || input[kDispatcher] + + // 6. Otherwise: + + // 7. Assert: input is a Request object. + assert(input instanceof Request) + + // 8. Set request to input’s request. + request = input[kState] + + // 9. Set signal to input’s signal. + signal = input[kSignal] + } + + // 7. Let origin be this’s relevant settings object’s origin. + const origin = environmentSettingsObject.settingsObject.origin + + // 8. Let window be "client". + let window = 'client' + + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if ( + request.window?.constructor?.name === 'EnvironmentSettingsObject' && + sameOrigin(request.window, origin) + ) { + window = request.window + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`) + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window' + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: environmentSettingsObject.settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }) + + const initHasKey = Object.keys(init).length !== 0 + + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin' + } + + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false + + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false + + // 4. Set request’s origin to "client". + request.origin = 'client' + + // 5. Set request’s referrer to "client" + request.referrer = 'client' + + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = '' + + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1] + + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url] + } + + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + const referrer = init.referrer + + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer' + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + let parsedReferrer + try { + parsedReferrer = new URL(referrer, baseUrl) + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) + } + + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl)) + ) { + request.referrer = 'client' + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer + } + } + } + + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy + } + + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + let mode + if (init.mode !== undefined) { + mode = init.mode + } else { + mode = fallbackMode + } + + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) + } + + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode + } + + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials + } + + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache + } + + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ) + } + + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect + } + + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity) + } + + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive) + } + + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + // 1. Let method be init["method"]. + let method = init.method + + const mayBeNormalized = normalizedMethodRecords[method] + + if (mayBeNormalized !== undefined) { + // Note: Bypass validation DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH and these lowercase ones + request.method = mayBeNormalized + } else { + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`) + } + + const upperCase = method.toUpperCase() + + if (forbiddenMethodsSet.has(upperCase)) { + throw new TypeError(`'${method}' HTTP method is unsupported.`) + } + + // 3. Normalize method. + // https://fetch.spec.whatwg.org/#concept-method-normalize + // Note: must be in uppercase + method = normalizedMethodRecordsBase[upperCase] ?? method + + // 4. Set request’s method to method. + request.method = method + } + + if (!patchMethodWarning && request.method === 'patch') { + process.emitWarning('Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.', { + code: 'UNDICI-FETCH-patch' + }) + + patchMethodWarning = true + } + } + + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal + } + + // 27. Set this’s request to request. + this[kState] = request + + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + const ac = new AbortController() + this[kSignal] = ac.signal + + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if ( + !signal || + typeof signal.aborted !== 'boolean' || + typeof signal.addEventListener !== 'function' + ) { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ) + } + + if (signal.aborted) { + ac.abort(signal.reason) + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac + + const acRef = new WeakRef(ac) + const abort = buildAbort(acRef) + + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(1500, signal) + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(1500, signal) + } + } catch {} + + util.addAbortListener(signal, abort) + // The third argument must be a registry key to be unregistered. + // Without it, you cannot unregister. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry + // abort is used as the unregister key. (because it is unique) + requestFinalizer.register(ac, { signal, abort }, abort) + } + } + + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct) + setHeadersList(this[kHeaders], request.headersList) + setHeadersGuard(this[kHeaders], 'request') + + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError( + `'${request.method} is unsupported in no-cors mode.` + ) + } + + // 2. Set this’s headers’s guard to "request-no-cors". + setHeadersGuard(this[kHeaders], 'request-no-cors') + } + + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + const headersList = getHeadersList(this[kHeaders]) + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) + + // 3. Empty this’s headers’s header list. + headersList.clear() + + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + for (const { name, value } of headers.rawValues()) { + headersList.append(name, value, false) + } + // Note: Copy the `set-cookie` meta-data. + headersList.cookies = headers.cookies + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers) + } + } + + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + const inputBody = input instanceof Request ? input[kState].body : null + + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ( + (init.body != null || inputBody != null) && + (request.method === 'GET' || request.method === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body.') + } + + // 35. Let initBody be null. + let initBody = null + + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + const [extractedBody, contentType] = extractBody( + init.body, + request.keepalive + ) + initBody = extractedBody + + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !getHeadersList(this[kHeaders]).contains('content-type', true)) { + this[kHeaders].append('content-type', contentType) + } + } + + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + const inputOrInitBody = initBody ?? inputBody + + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.') + } + + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ) + } + + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true + } + + // 39. Let finalBody be inputOrInitBody. + let finalBody = inputOrInitBody + + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (bodyUnusable(input)) { + throw new TypeError( + 'Cannot construct a Request with a Request object that has already been used.' + ) + } + + // 2. Set finalBody to the result of creating a proxy for inputBody. + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + const identityTransform = new TransformStream() + inputBody.stream.pipeThrough(identityTransform) + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + } + } + + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody + } + + // Returns request’s HTTP method, which is "GET" by default. + get method () { + webidl.brandCheck(this, Request) + + // The method getter steps are to return this’s request’s method. + return this[kState].method + } + + // Returns the URL of request as a string. + get url () { + webidl.brandCheck(this, Request) + + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url) + } + + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers () { + webidl.brandCheck(this, Request) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination () { + webidl.brandCheck(this, Request) + + // The destination getter are to return this’s request’s destination. + return this[kState].destination + } + + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer () { + webidl.brandCheck(this, Request) + + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return '' + } + + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client' + } + + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString() + } + + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy () { + webidl.brandCheck(this, Request) + + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy + } + + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode () { + webidl.brandCheck(this, Request) + + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode + } + + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials () { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials + } + + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache () { + webidl.brandCheck(this, Request) + + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache + } + + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect () { + webidl.brandCheck(this, Request) + + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect + } + + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity () { + webidl.brandCheck(this, Request) + + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity + } + + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive () { + webidl.brandCheck(this, Request) + + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive + } + + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation () { + webidl.brandCheck(this, Request) + + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation + } + + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-forward navigation). + get isHistoryNavigation () { + webidl.brandCheck(this, Request) + + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation + } + + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal () { + webidl.brandCheck(this, Request) + + // The signal getter steps are to return this’s signal. + return this[kSignal] + } + + get body () { + webidl.brandCheck(this, Request) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Request) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + get duplex () { + webidl.brandCheck(this, Request) + + return 'half' + } + + // Returns a clone of request. + clone () { + webidl.brandCheck(this, Request) + + // 1. If this is unusable, then throw a TypeError. + if (bodyUnusable(this)) { + throw new TypeError('unusable') + } + + // 2. Let clonedRequest be the result of cloning this’s request. + const clonedRequest = cloneRequest(this[kState]) + + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + // 4. Make clonedRequestObject’s signal follow this’s signal. + const ac = new AbortController() + if (this.signal.aborted) { + ac.abort(this.signal.reason) + } else { + let list = dependentControllerMap.get(this.signal) + if (list === undefined) { + list = new Set() + dependentControllerMap.set(this.signal, list) + } + const acRef = new WeakRef(ac) + list.add(acRef) + util.addAbortListener( + ac.signal, + buildAbort(acRef) + ) + } + + // 4. Return clonedRequestObject. + return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders])) + } + + [nodeUtil.inspect.custom] (depth, options) { + if (options.depth === null) { + options.depth = 2 + } + + options.colors ??= true + + const properties = { + method: this.method, + url: this.url, + headers: this.headers, + destination: this.destination, + referrer: this.referrer, + referrerPolicy: this.referrerPolicy, + mode: this.mode, + credentials: this.credentials, + cache: this.cache, + redirect: this.redirect, + integrity: this.integrity, + keepalive: this.keepalive, + isReloadNavigation: this.isReloadNavigation, + isHistoryNavigation: this.isHistoryNavigation, + signal: this.signal + } + + return `Request ${nodeUtil.formatWithOptions(options, properties)}` + } +} + +mixinBody(Request) + +// https://fetch.spec.whatwg.org/#requests +function makeRequest (init) { + return { + method: init.method ?? 'GET', + localURLsOnly: init.localURLsOnly ?? false, + unsafeRequest: init.unsafeRequest ?? false, + body: init.body ?? null, + client: init.client ?? null, + reservedClient: init.reservedClient ?? null, + replacesClientId: init.replacesClientId ?? '', + window: init.window ?? 'client', + keepalive: init.keepalive ?? false, + serviceWorkers: init.serviceWorkers ?? 'all', + initiator: init.initiator ?? '', + destination: init.destination ?? '', + priority: init.priority ?? null, + origin: init.origin ?? 'client', + policyContainer: init.policyContainer ?? 'client', + referrer: init.referrer ?? 'client', + referrerPolicy: init.referrerPolicy ?? '', + mode: init.mode ?? 'no-cors', + useCORSPreflightFlag: init.useCORSPreflightFlag ?? false, + credentials: init.credentials ?? 'same-origin', + useCredentials: init.useCredentials ?? false, + cache: init.cache ?? 'default', + redirect: init.redirect ?? 'follow', + integrity: init.integrity ?? '', + cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? '', + parserMetadata: init.parserMetadata ?? '', + reloadNavigation: init.reloadNavigation ?? false, + historyNavigation: init.historyNavigation ?? false, + userActivation: init.userActivation ?? false, + taintedOrigin: init.taintedOrigin ?? false, + redirectCount: init.redirectCount ?? 0, + responseTainting: init.responseTainting ?? 'basic', + preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false, + done: init.done ?? false, + timingAllowFailed: init.timingAllowFailed ?? false, + urlList: init.urlList, + url: init.urlList[0], + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList() + } +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest (request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + const newRequest = makeRequest({ ...request, body: null }) + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(newRequest, request.body) + } + + // 3. Return newRequest. + return newRequest +} + +/** + * @see https://fetch.spec.whatwg.org/#request-create + * @param {any} innerRequest + * @param {AbortSignal} signal + * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard + * @returns {Request} + */ +function fromInnerRequest (innerRequest, signal, guard) { + const request = new Request(kConstruct) + request[kState] = innerRequest + request[kSignal] = signal + request[kHeaders] = new Headers(kConstruct) + setHeadersList(request[kHeaders], innerRequest.headersList) + setHeadersGuard(request[kHeaders], guard) + return request +} + +Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } +}) + +webidl.converters.Request = webidl.interfaceConverter( + Request +) + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V, prefix, argument) { + if (typeof V === 'string') { + return webidl.converters.USVString(V, prefix, argument) + } + + if (V instanceof Request) { + return webidl.converters.Request(V, prefix, argument) + } + + return webidl.converters.USVString(V, prefix, argument) +} + +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + 'RequestInit', + 'signal', + { strict: false } + ) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + }, + { + key: 'dispatcher', // undici specific option + converter: webidl.converters.any + } +]) + +module.exports = { Request, makeRequest, fromInnerRequest, cloneRequest } diff --git a/deps/npm/node_modules/undici/lib/web/fetch/response.js b/deps/npm/node_modules/undici/lib/web/fetch/response.js new file mode 100644 index 00000000000000..3abaa8bd6d5ef4 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/response.js @@ -0,0 +1,610 @@ +'use strict' + +const { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require('./headers') +const { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require('./body') +const util = require('../../core/util') +const nodeUtil = require('node:util') +const { kEnumerableProperty } = util +const { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode, + environmentSettingsObject: relevantRealm +} = require('./util') +const { + redirectStatusSet, + nullBodyStatus +} = require('./constants') +const { kState, kHeaders } = require('./symbols') +const { webidl } = require('./webidl') +const { FormData } = require('./formdata') +const { URLSerializer } = require('./data-url') +const { kConstruct } = require('../../core/symbols') +const assert = require('node:assert') +const { types } = require('node:util') + +const textEncoder = new TextEncoder('utf-8') + +// https://fetch.spec.whatwg.org/#response-class +class Response { + // Creates network error Response. + static error () { + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + const responseObject = fromInnerResponse(makeNetworkError(), 'immutable') + + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, 'Response.json') + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ) + + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const responseObject = fromInnerResponse(makeResponse({}), 'response') + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + + // 5. Return responseObject. + return responseObject + } + + // Creates a redirect Response that redirects to url with status status. + static redirect (url, status = 302) { + webidl.argumentLengthCheck(arguments, 1, 'Response.redirect') + + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) + + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + let parsedURL + try { + parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl) + } catch (err) { + throw new TypeError(`Failed to parse URL from ${url}`, { cause: err }) + } + + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError(`Invalid status code ${status}`) + } + + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + const responseObject = fromInnerResponse(makeResponse({}), 'immutable') + + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status + + // 6. Let value be parsedURL, serialized and isomorphic encoded. + const value = isomorphicEncode(URLSerializer(parsedURL)) + + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value, true) + + // 8. Return responseObject. + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response + constructor (body = null, init = {}) { + webidl.util.markAsUncloneable(this) + if (body === kConstruct) { + return + } + + if (body !== null) { + body = webidl.converters.BodyInit(body) + } + + init = webidl.converters.ResponseInit(init) + + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}) + + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct) + setHeadersGuard(this[kHeaders], 'response') + setHeadersList(this[kHeaders], this[kState].headersList) + + // 3. Let bodyWithType be null. + let bodyWithType = null + + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } + } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) + } + + // Returns response’s type, e.g., "cors". + get type () { + webidl.brandCheck(this, Response) + + // The type getter steps are to return this’s response’s type. + return this[kState].type + } + + // Returns response’s URL, if it has one; otherwise the empty string. + get url () { + webidl.brandCheck(this, Response) + + const urlList = this[kState].urlList + + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + const url = urlList[urlList.length - 1] ?? null + + if (url === null) { + return '' + } + + return URLSerializer(url, true) + } + + // Returns whether response was obtained through a redirect. + get redirected () { + webidl.brandCheck(this, Response) + + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1 + } + + // Returns response’s status. + get status () { + webidl.brandCheck(this, Response) + + // The status getter steps are to return this’s response’s status. + return this[kState].status + } + + // Returns whether response’s status is an ok status. + get ok () { + webidl.brandCheck(this, Response) + + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299 + } + + // Returns response’s status message. + get statusText () { + webidl.brandCheck(this, Response) + + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText + } + + // Returns response’s headers as Headers. + get headers () { + webidl.brandCheck(this, Response) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + get body () { + webidl.brandCheck(this, Response) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Response) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + // Returns a clone of response. + clone () { + webidl.brandCheck(this, Response) + + // 1. If this is unusable, then throw a TypeError. + if (bodyUnusable(this)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) + } + + // 2. Let clonedResponse be the result of cloning this’s response. + const clonedResponse = cloneResponse(this[kState]) + + // Note: To re-register because of a new stream. + if (hasFinalizationRegistry && this[kState].body?.stream) { + streamRegistry.register(this, new WeakRef(this[kState].body.stream)) + } + + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + return fromInnerResponse(clonedResponse, getHeadersGuard(this[kHeaders])) + } + + [nodeUtil.inspect.custom] (depth, options) { + if (options.depth === null) { + options.depth = 2 + } + + options.colors ??= true + + const properties = { + status: this.status, + statusText: this.statusText, + headers: this.headers, + body: this.body, + bodyUsed: this.bodyUsed, + ok: this.ok, + redirected: this.redirected, + type: this.type, + url: this.url + } + + return `Response ${nodeUtil.formatWithOptions(options, properties)}` + } +} + +mixinBody(Response) + +Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } +}) + +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}) + +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse (response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ) + } + + // 2. Let newResponse be a copy of response, except for its body. + const newResponse = makeResponse({ ...response, body: null }) + + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(newResponse, response.body) + } + + // 4. Return newResponse. + return newResponse +} + +function makeResponse (init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init?.headersList + ? new HeadersList(init?.headersList) + : new HeadersList(), + urlList: init?.urlList ? [...init.urlList] : [] + } +} + +function makeNetworkError (reason) { + const isError = isErrorLike(reason) + return makeResponse({ + type: 'error', + status: 0, + error: isError + ? reason + : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }) +} + +// @see https://fetch.spec.whatwg.org/#concept-network-error +function isNetworkError (response) { + return ( + // A network error is a response whose type is "error", + response.type === 'error' && + // status is 0 + response.status === 0 + ) +} + +function makeFilteredResponse (response, state) { + state = { + internalResponse: response, + ...state + } + + return new Proxy(response, { + get (target, p) { + return p in state ? state[p] : target[p] + }, + set (target, p, value) { + assert(!(p in state)) + target[p] = value + return true + } + }) +} + +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse (response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. + + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }) + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }) + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }) + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }) + } else { + assert(false) + } +} + +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError (fetchParams, err = null) { + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)) + + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) +} + +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers) + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: `Invalid response status code ${response.status}` + }) + } + + // 2. Set response's body to body's body. + response[kState].body = body.body + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('content-type', true)) { + response[kState].headersList.append('content-type', body.type, true) + } + } +} + +/** + * @see https://fetch.spec.whatwg.org/#response-create + * @param {any} innerResponse + * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard + * @returns {Response} + */ +function fromInnerResponse (innerResponse, guard) { + const response = new Response(kConstruct) + response[kState] = innerResponse + response[kHeaders] = new Headers(kConstruct) + setHeadersList(response[kHeaders], innerResponse.headersList) + setHeadersGuard(response[kHeaders], guard) + + if (hasFinalizationRegistry && innerResponse.body?.stream) { + // If the target (response) is reclaimed, the cleanup callback may be called at some point with + // the held value provided for it (innerResponse.body.stream). The held value can be any value: + // a primitive or an object, even undefined. If the held value is an object, the registry keeps + // a strong reference to it (so it can pass it to the cleanup callback later). Reworded from + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry + streamRegistry.register(response, new WeakRef(innerResponse.body.stream)) + } + + return response +} + +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) + +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) + +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) { + if (typeof V === 'string') { + return webidl.converters.USVString(V, prefix, name) + } + + if (isBlobLike(V)) { + return webidl.converters.Blob(V, prefix, name, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V, prefix, name) + } + + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, prefix, name, { strict: false }) + } + + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V, prefix, name) + } + + return webidl.converters.DOMString(V, prefix, name) +} + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V, prefix, argument) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V, prefix, argument) + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V + } + + return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument) +} + +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: () => 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: () => '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } +]) + +module.exports = { + isNetworkError, + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse, + fromInnerResponse +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/symbols.js b/deps/npm/node_modules/undici/lib/web/fetch/symbols.js new file mode 100644 index 00000000000000..32e360e490fbaf --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/symbols.js @@ -0,0 +1,9 @@ +'use strict' + +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kDispatcher: Symbol('dispatcher') +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/util.js b/deps/npm/node_modules/undici/lib/web/fetch/util.js new file mode 100644 index 00000000000000..5101324a80cf78 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/util.js @@ -0,0 +1,1632 @@ +'use strict' + +const { Transform } = require('node:stream') +const zlib = require('node:zlib') +const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants') +const { getGlobalOrigin } = require('./global') +const { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require('./data-url') +const { performance } = require('node:perf_hooks') +const { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require('../../core/util') +const assert = require('node:assert') +const { isUint8Array } = require('node:util/types') +const { webidl } = require('./webidl') + +let supportedHashes = [] + +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')} */ +let crypto +try { + crypto = require('node:crypto') + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] + supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) +/* c8 ignore next 3 */ +} catch { + +} + +function responseURL (response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + const urlList = response.urlList + const length = urlList.length + return length === 0 ? null : urlList[length - 1].toString() +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL (response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null + } + + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + let location = response.headersList.get('location', true) + + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + if (!isValidEncodedURL(location)) { + // Some websites respond location header in UTF-8 form without encoding them as ASCII + // and major browsers redirect them to correctly UTF-8 encoded addresses. + // Here, we handle that behavior in the same way. + location = normalizeBinaryStringToUtf8(location) + } + location = new URL(location, responseURL(response)) + } + + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment + } + + // 5. Return location. + return location +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc1738#section-2.2 + * @param {string} url + * @returns {boolean} + */ +function isValidEncodedURL (url) { + for (let i = 0; i < url.length; ++i) { + const code = url.charCodeAt(i) + + if ( + code > 0x7E || // Non-US-ASCII + DEL + code < 0x20 // Control characters NUL - US + ) { + return false + } + } + return true +} + +/** + * If string contains non-ASCII characters, assumes it's UTF-8 encoded and decodes it. + * Since UTF-8 is a superset of ASCII, this will work for ASCII strings as well. + * @param {string} value + * @returns {string} + */ +function normalizeBinaryStringToUtf8 (value) { + return Buffer.from(value, 'binary').toString('utf8') +} + +/** @returns {URL} */ +function requestCurrentURL (request) { + return request.urlList[request.urlList.length - 1] +} + +function requestBadPort (request) { + // 1. Let url be request’s current URL. + const url = requestCurrentURL(request) + + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked' + } + + // 3. Return allowed. + return 'allowed' +} + +function isErrorLike (object) { + return object instanceof Error || ( + object?.constructor?.name === 'Error' || + object?.constructor?.name === 'DOMException' + ) +} + +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase (statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i) + if ( + !( + ( + c === 0x09 || // HTAB + (c >= 0x20 && c <= 0x7e) || // SP / VCHAR + (c >= 0x80 && c <= 0xff) + ) // obs-text + ) + ) { + return false + } + } + return true +} + +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +const isValidHeaderName = isValidHTTPToken + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + return ( + potentialValue[0] === '\t' || + potentialValue[0] === ' ' || + potentialValue[potentialValue.length - 1] === '\t' || + potentialValue[potentialValue.length - 1] === ' ' || + potentialValue.includes('\n') || + potentialValue.includes('\r') || + potentialValue.includes('\0') + ) === false +} + +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect (request, actualResponse) { + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + const { headersList } = actualResponse + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + const policyHeader = (headersList.get('referrer-policy', true) ?? '').split(',') + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + let policy = '' + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim() + if (referrerPolicyTokens.has(token)) { + policy = token + break + } + } + } + + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy + } +} + +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck () { + // TODO + return 'allowed' +} + +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck () { + // TODO + return 'success' +} + +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck () { + // TODO + return 'success' +} + +function appendFetchMetadata (httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO + + // 2. Let header be a Structured Header whose value is a token. + let header = null + + // 3. Set header’s value to r’s mode. + header = httpRequest.mode + + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header, true) + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} + +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader (request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin + // with request. + // TODO: implement "byte-serializing a request origin" + let serializedOrigin = request.origin + + // - "'client' is changed to an origin during fetching." + // This doesn't happen in undici (in most cases) because undici, by default, + // has no concept of origin. + // - request.origin can also be set to request.client.origin (client being + // an environment settings object), which is undefined without using + // setGlobalOrigin. + if (serializedOrigin === 'client' || serializedOrigin === undefined) { + return + } + + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", + // then append (`Origin`, serializedOrigin) to request’s header list. + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + request.headersList.append('origin', serializedOrigin, true) + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null + break + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and + // request’s current URL’s scheme is not "https", then set + // serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null + } + break + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s + // origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null + } + break + default: + // Do nothing. + } + + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin, true) + } +} + +// https://w3c.github.io/hr-time/#dfn-coarsen-time +function coarsenTime (timestamp, crossOriginIsolatedCapability) { + // TODO + return timestamp +} + +// https://fetch.spec.whatwg.org/#clamp-and-coarsen-connection-timing-info +function clampAndCoarsenConnectionTimingInfo (connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) { + if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) { + return { + domainLookupStartTime: defaultStartTime, + domainLookupEndTime: defaultStartTime, + connectionStartTime: defaultStartTime, + connectionEndTime: defaultStartTime, + secureConnectionStartTime: defaultStartTime, + ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol + } + } + + return { + domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability), + domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability), + connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability), + connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability), + secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability), + ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol + } +} + +// https://w3c.github.io/hr-time/#dfn-coarsened-shared-current-time +function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { + return coarsenTime(performance.now(), crossOriginIsolatedCapability) +} + +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo (timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer () { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer (policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + } +} + +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer (request) { + // 1. Let policy be request's referrer policy. + const policy = request.referrerPolicy + + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy) + + // 2. Let environment be request’s client. + + let referrerSource = null + + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. + + const globalOrigin = getGlobalOrigin() + + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer' + } + + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin) + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer + } + + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + let referrerURL = stripURLForReferrer(referrerSource) + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + const referrerOrigin = stripURLForReferrer(referrerSource, true) + + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin + } + + const areSameOrigin = sameOrigin(request, referrerURL) + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && + !isURLPotentiallyTrustworthy(request.url) + + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) + case 'unsafe-url': return referrerURL + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer' + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request) + + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL + } + + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer' + } + + // 3. Return referrerOrigin. + return referrerOrigin + } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + + default: // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin + } +} + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer (url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL) + + url = new URL(url) + + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer' + } + + // 3. Set url’s username to the empty string. + url.username = '' + + // 4. Set url’s password to the empty string. + url.password = '' + + // 5. Set url’s fragment to null. + url.hash = '' + + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = '' + + // 2. Set url’s query to null. + url.search = '' + } + + // 7. Return url. + return url +} + +function isURLPotentiallyTrustworthy (url) { + if (!(url instanceof URL)) { + return false + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true + } + + // If scheme is data, return true + if (url.protocol === 'data:') return true + + // If file, return true + if (url.protocol === 'file:') return true + + return isOriginPotentiallyTrustworthy(url.origin) + + function isOriginPotentiallyTrustworthy (origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false + + const originAsURL = new URL(origin) + + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true + } + + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || + (originAsURL.hostname.endsWith('.localhost'))) { + return true + } + + // If any other, return false + return false + } +} + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch (bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true + } + + // 1. Let parsedMetadata be the result of parsing metadataList. + const parsedMetadata = parseMetadata(metadataList) + + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true + } + + // 3. If response is not eligible for integrity validation, return false. + // TODO + + // 4. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true + } + + // 5. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + const strongest = getStrongestMetadata(parsedMetadata) + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) + + // 6. For each item in metadata: + for (const item of metadata) { + // 1. Let algorithm be the alg component of item. + const algorithm = item.algo + + // 2. Let expectedValue be the val component of item. + const expectedValue = item.hash + + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. + + // 3. Let actualValue be the result of applying algorithm to bytes. + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') + + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2) + } else { + actualValue = actualValue.slice(0, -1) + } + } + + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (compareBase64Mixed(actualValue, expectedValue)) { + return true + } + } + + // 7. Return false. + return false +} + +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +const parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata (metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + const result = [] + + // 2. Let empty be equal to true. + let empty = true + + // 3. For each token returned by splitting metadata on spaces: + for (const token of metadata.split(' ')) { + // 1. Set empty to false. + empty = false + + // 2. Parse token as a hash-with-options. + const parsedToken = parseHashWithOptions.exec(token) + + // 3. If token does not parse, continue to the next token. + if ( + parsedToken === null || + parsedToken.groups === undefined || + parsedToken.groups.algo === undefined + ) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue + } + + // 4. Let algorithm be the hash-algo component of token. + const algorithm = parsedToken.groups.algo.toLowerCase() + + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups) + } + } + + // 4. Return no metadata if empty is true, otherwise return result. + if (empty === true) { + return 'no metadata' + } + + return result +} + +/** + * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList + */ +function getStrongestMetadata (metadataList) { + // Let algorithm be the algo component of the first item in metadataList. + // Can be sha256 + let algorithm = metadataList[0].algo + // If the algorithm is sha512, then it is the strongest + // and we can return immediately + if (algorithm[3] === '5') { + return algorithm + } + + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i] + // If the algorithm is sha512, then it is the strongest + // and we can break the loop immediately + if (metadata.algo[3] === '5') { + algorithm = 'sha512' + break + // If the algorithm is sha384, then a potential sha256 or sha384 is ignored + } else if (algorithm[3] === '3') { + continue + // algorithm is sha256, check if algorithm is sha384 and if so, set it as + // the strongest + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384' + } + } + return algorithm +} + +function filterMetadataListByAlgorithm (metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList + } + + let pos = 0 + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i] + } + } + + metadataList.length = pos + + return metadataList +} + +/** + * Compares two base64 strings, allowing for base64url + * in the second string. + * +* @param {string} actualValue always base64 + * @param {string} expectedValue base64 or base64url + * @returns {boolean} + */ +function compareBase64Mixed (actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false + } + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ( + (actualValue[i] === '+' && expectedValue[i] === '-') || + (actualValue[i] === '/' && expectedValue[i] === '_') + ) { + continue + } + return false + } + } + + return true +} + +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { + // TODO +} + +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin (A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true + } + + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true + } + + // 3. Return false. + return false +} + +function createDeferredPromise () { + let res + let rej + const promise = new Promise((resolve, reject) => { + res = resolve + rej = reject + }) + + return { promise, resolve: res, reject: rej } +} + +function isAborted (fetchParams) { + return fetchParams.controller.state === 'aborted' +} + +function isCancelled (fetchParams) { + return fetchParams.controller.state === 'aborted' || + fetchParams.controller.state === 'terminated' +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod (method) { + return normalizedMethodRecordsBase[method.toLowerCase()] ?? method +} + +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } + + // 3. Assert: result is a string. + assert(typeof result === 'string') + + // 4. Return result. + return result +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {string} name name of the instance + * @param {symbol} kInternalIterator + * @param {string | number} [keyIndex] + * @param {string | number} [valueIndex] + */ +function createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1) { + class FastIterableIterator { + /** @type {any} */ + #target + /** @type {'key' | 'value' | 'key+value'} */ + #kind + /** @type {number} */ + #index + + /** + * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object + * @param {unknown} target + * @param {'key' | 'value' | 'key+value'} kind + */ + constructor (target, kind) { + this.#target = target + this.#kind = kind + this.#index = 0 + } + + next () { + // 1. Let interface be the interface for which the iterator prototype object exists. + // 2. Let thisValue be the this value. + // 3. Let object be ? ToObject(thisValue). + // 4. If object is a platform object, then perform a security + // check, passing: + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (typeof this !== 'object' || this === null || !(#target in this)) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } + + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + const index = this.#index + const values = this.#target[kInternalIterator] + + // 9. Let len be the length of values. + const len = values.length + + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { + value: undefined, + done: true + } + } + + // 11. Let pair be the entry in values at index index. + const { [keyIndex]: key, [valueIndex]: value } = values[index] + + // 12. Set object’s index to index + 1. + this.#index = index + 1 + + // 13. Return the iterator result for pair and kind. + + // https://webidl.spec.whatwg.org/#iterator-result + + // 1. Let result be a value determined by the value of kind: + let result + switch (this.#kind) { + case 'key': + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = key + break + case 'value': + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = value + break + case 'key+value': + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = [key, value] + break + } + + // 2. Return CreateIterResultObject(result, false). + return { + value: result, + done: false + } + } + } + + // https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + // @ts-ignore + delete FastIterableIterator.prototype.constructor + + Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype) + + Object.defineProperties(FastIterableIterator.prototype, { + [Symbol.toStringTag]: { + writable: false, + enumerable: false, + configurable: true, + value: `${name} Iterator` + }, + next: { writable: true, enumerable: true, configurable: true } + }) + + /** + * @param {unknown} target + * @param {'key' | 'value' | 'key+value'} kind + * @returns {IterableIterator} + */ + return function (target, kind) { + return new FastIterableIterator(target, kind) + } +} + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {string} name name of the instance + * @param {any} object class + * @param {symbol} kInternalIterator + * @param {string | number} [keyIndex] + * @param {string | number} [valueIndex] + */ +function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) { + const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex) + + const properties = { + keys: { + writable: true, + enumerable: true, + configurable: true, + value: function keys () { + webidl.brandCheck(this, object) + return makeIterator(this, 'key') + } + }, + values: { + writable: true, + enumerable: true, + configurable: true, + value: function values () { + webidl.brandCheck(this, object) + return makeIterator(this, 'value') + } + }, + entries: { + writable: true, + enumerable: true, + configurable: true, + value: function entries () { + webidl.brandCheck(this, object) + return makeIterator(this, 'key+value') + } + }, + forEach: { + writable: true, + enumerable: true, + configurable: true, + value: function forEach (callbackfn, thisArg = globalThis) { + webidl.brandCheck(this, object) + webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`) + if (typeof callbackfn !== 'function') { + throw new TypeError( + `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.` + ) + } + for (const { 0: key, 1: value } of makeIterator(this, 'key+value')) { + callbackfn.call(thisArg, value, key, this) + } + } + } + } + + return Object.defineProperties(object.prototype, { + ...properties, + [Symbol.iterator]: { + writable: true, + enumerable: false, + configurable: true, + value: properties.entries.value + } + }) +} + +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +async function fullyReadBody (body, processBody, processBodyError) { + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. + + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + const successSteps = processBody + + // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + const errorSteps = processBodyError + + // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + let reader + + try { + reader = body.stream.getReader() + } catch (e) { + errorSteps(e) + return + } + + // 5. Read all bytes from reader, given successSteps and errorSteps. + try { + successSteps(await readAllBytes(reader)) + } catch (e) { + errorSteps(e) + } +} + +function isReadableStreamLike (stream) { + return stream instanceof ReadableStream || ( + stream[Symbol.toStringTag] === 'ReadableStream' && + typeof stream.tee === 'function' + ) +} + +/** + * @param {ReadableStreamController} controller + */ +function readableStreamClose (controller) { + try { + controller.close() + controller.byobRequest?.respond(0) + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed') && !err.message.includes('ReadableStream is already closed')) { + throw err + } + } +} + +const invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/ // eslint-disable-line + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode (input) { + // 1. Assert: input contains no code points greater than U+00FF. + assert(!invalidIsomorphicEncodeValueRegex.test(input)) + + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input +} + +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +async function readAllBytes (reader) { + const bytes = [] + let byteLength = 0 + + while (true) { + const { done, value: chunk } = await reader.read() + + if (done) { + // 1. Call successSteps with bytes. + return Buffer.concat(bytes, byteLength) + } + + // 1. If chunk is not a Uint8Array object, call failureSteps + // with a TypeError and abort these steps. + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk') + } + + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk) + byteLength += chunk.length + + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + } +} + +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function urlIsLocal (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' +} + +/** + * @param {string|URL} url + * @returns {boolean} + */ +function urlHasHttpsScheme (url) { + return ( + ( + typeof url === 'string' && + url[5] === ':' && + url[0] === 'h' && + url[1] === 't' && + url[2] === 't' && + url[3] === 'p' && + url[4] === 's' + ) || + url.protocol === 'https:' + ) +} + +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'http:' || protocol === 'https:' +} + +/** + * @see https://fetch.spec.whatwg.org/#simple-range-header-value + * @param {string} value + * @param {boolean} allowWhitespace + */ +function simpleRangeHeaderValue (value, allowWhitespace) { + // 1. Let data be the isomorphic decoding of value. + // Note: isomorphic decoding takes a sequence of bytes (ie. a Uint8Array) and turns it into a string, + // nothing more. We obviously don't need to do that if value is a string already. + const data = value + + // 2. If data does not start with "bytes", then return failure. + if (!data.startsWith('bytes')) { + return 'failure' + } + + // 3. Let position be a position variable for data, initially pointing at the 5th code point of data. + const position = { position: 5 } + + // 4. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, + // from data given position. + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === '\t' || char === ' ', + data, + position + ) + } + + // 5. If the code point at position within data is not U+003D (=), then return failure. + if (data.charCodeAt(position.position) !== 0x3D) { + return 'failure' + } + + // 6. Advance position by 1. + position.position++ + + // 7. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, from + // data given position. + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === '\t' || char === ' ', + data, + position + ) + } + + // 8. Let rangeStart be the result of collecting a sequence of code points that are ASCII digits, + // from data given position. + const rangeStart = collectASequenceOfCodePoints( + (char) => { + const code = char.charCodeAt(0) + + return code >= 0x30 && code <= 0x39 + }, + data, + position + ) + + // 9. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the + // empty string; otherwise null. + const rangeStartValue = rangeStart.length ? Number(rangeStart) : null + + // 10. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, + // from data given position. + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === '\t' || char === ' ', + data, + position + ) + } + + // 11. If the code point at position within data is not U+002D (-), then return failure. + if (data.charCodeAt(position.position) !== 0x2D) { + return 'failure' + } + + // 12. Advance position by 1. + position.position++ + + // 13. If allowWhitespace is true, collect a sequence of code points that are HTTP tab + // or space, from data given position. + // Note from Khafra: its the same step as in #8 again lol + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === '\t' || char === ' ', + data, + position + ) + } + + // 14. Let rangeEnd be the result of collecting a sequence of code points that are + // ASCII digits, from data given position. + // Note from Khafra: you wouldn't guess it, but this is also the same step as #8 + const rangeEnd = collectASequenceOfCodePoints( + (char) => { + const code = char.charCodeAt(0) + + return code >= 0x30 && code <= 0x39 + }, + data, + position + ) + + // 15. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd + // is not the empty string; otherwise null. + // Note from Khafra: THE SAME STEP, AGAIN!!! + // Note: why interpret as a decimal if we only collect ascii digits? + const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null + + // 16. If position is not past the end of data, then return failure. + if (position.position < data.length) { + return 'failure' + } + + // 17. If rangeEndValue and rangeStartValue are null, then return failure. + if (rangeEndValue === null && rangeStartValue === null) { + return 'failure' + } + + // 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is + // greater than rangeEndValue, then return failure. + // Note: ... when can they not be numbers? + if (rangeStartValue > rangeEndValue) { + return 'failure' + } + + // 19. Return (rangeStartValue, rangeEndValue). + return { rangeStartValue, rangeEndValue } +} + +/** + * @see https://fetch.spec.whatwg.org/#build-a-content-range + * @param {number} rangeStart + * @param {number} rangeEnd + * @param {number} fullLength + */ +function buildContentRange (rangeStart, rangeEnd, fullLength) { + // 1. Let contentRange be `bytes `. + let contentRange = 'bytes ' + + // 2. Append rangeStart, serialized and isomorphic encoded, to contentRange. + contentRange += isomorphicEncode(`${rangeStart}`) + + // 3. Append 0x2D (-) to contentRange. + contentRange += '-' + + // 4. Append rangeEnd, serialized and isomorphic encoded to contentRange. + contentRange += isomorphicEncode(`${rangeEnd}`) + + // 5. Append 0x2F (/) to contentRange. + contentRange += '/' + + // 6. Append fullLength, serialized and isomorphic encoded to contentRange. + contentRange += isomorphicEncode(`${fullLength}`) + + // 7. Return contentRange. + return contentRange +} + +// A Stream, which pipes the response to zlib.createInflate() or +// zlib.createInflateRaw() depending on the first byte of the Buffer. +// If the lower byte of the first byte is 0x08, then the stream is +// interpreted as a zlib stream, otherwise it's interpreted as a +// raw deflate stream. +class InflateStream extends Transform { + #zlibOptions + + /** @param {zlib.ZlibOptions} [zlibOptions] */ + constructor (zlibOptions) { + super() + this.#zlibOptions = zlibOptions + } + + _transform (chunk, encoding, callback) { + if (!this._inflateStream) { + if (chunk.length === 0) { + callback() + return + } + this._inflateStream = (chunk[0] & 0x0F) === 0x08 + ? zlib.createInflate(this.#zlibOptions) + : zlib.createInflateRaw(this.#zlibOptions) + + this._inflateStream.on('data', this.push.bind(this)) + this._inflateStream.on('end', () => this.push(null)) + this._inflateStream.on('error', (err) => this.destroy(err)) + } + + this._inflateStream.write(chunk, encoding, callback) + } + + _final (callback) { + if (this._inflateStream) { + this._inflateStream.end() + this._inflateStream = null + } + callback() + } +} + +/** + * @param {zlib.ZlibOptions} [zlibOptions] + * @returns {InflateStream} + */ +function createInflate (zlibOptions) { + return new InflateStream(zlibOptions) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-extract-mime-type + * @param {import('./headers').HeadersList} headers + */ +function extractMimeType (headers) { + // 1. Let charset be null. + let charset = null + + // 2. Let essence be null. + let essence = null + + // 3. Let mimeType be null. + let mimeType = null + + // 4. Let values be the result of getting, decoding, and splitting `Content-Type` from headers. + const values = getDecodeSplit('content-type', headers) + + // 5. If values is null, then return failure. + if (values === null) { + return 'failure' + } + + // 6. For each value of values: + for (const value of values) { + // 6.1. Let temporaryMimeType be the result of parsing value. + const temporaryMimeType = parseMIMEType(value) + + // 6.2. If temporaryMimeType is failure or its essence is "*/*", then continue. + if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') { + continue + } + + // 6.3. Set mimeType to temporaryMimeType. + mimeType = temporaryMimeType + + // 6.4. If mimeType’s essence is not essence, then: + if (mimeType.essence !== essence) { + // 6.4.1. Set charset to null. + charset = null + + // 6.4.2. If mimeType’s parameters["charset"] exists, then set charset to + // mimeType’s parameters["charset"]. + if (mimeType.parameters.has('charset')) { + charset = mimeType.parameters.get('charset') + } + + // 6.4.3. Set essence to mimeType’s essence. + essence = mimeType.essence + } else if (!mimeType.parameters.has('charset') && charset !== null) { + // 6.5. Otherwise, if mimeType’s parameters["charset"] does not exist, and + // charset is non-null, set mimeType’s parameters["charset"] to charset. + mimeType.parameters.set('charset', charset) + } + } + + // 7. If mimeType is null, then return failure. + if (mimeType == null) { + return 'failure' + } + + // 8. Return mimeType. + return mimeType +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value-get-decode-and-split + * @param {string|null} value + */ +function gettingDecodingSplitting (value) { + // 1. Let input be the result of isomorphic decoding value. + const input = value + + // 2. Let position be a position variable for input, initially pointing at the start of input. + const position = { position: 0 } + + // 3. Let values be a list of strings, initially empty. + const values = [] + + // 4. Let temporaryValue be the empty string. + let temporaryValue = '' + + // 5. While position is not past the end of input: + while (position.position < input.length) { + // 5.1. Append the result of collecting a sequence of code points that are not U+0022 (") + // or U+002C (,) from input, given position, to temporaryValue. + temporaryValue += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== ',', + input, + position + ) + + // 5.2. If position is not past the end of input, then: + if (position.position < input.length) { + // 5.2.1. If the code point at position within input is U+0022 ("), then: + if (input.charCodeAt(position.position) === 0x22) { + // 5.2.1.1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue. + temporaryValue += collectAnHTTPQuotedString( + input, + position + ) + + // 5.2.1.2. If position is not past the end of input, then continue. + if (position.position < input.length) { + continue + } + } else { + // 5.2.2. Otherwise: + + // 5.2.2.1. Assert: the code point at position within input is U+002C (,). + assert(input.charCodeAt(position.position) === 0x2C) + + // 5.2.2.2. Advance position by 1. + position.position++ + } + } + + // 5.3. Remove all HTTP tab or space from the start and end of temporaryValue. + temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 0x9 || char === 0x20) + + // 5.4. Append temporaryValue to values. + values.push(temporaryValue) + + // 5.6. Set temporaryValue to the empty string. + temporaryValue = '' + } + + // 6. Return values. + return values +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split + * @param {string} name lowercase header name + * @param {import('./headers').HeadersList} list + */ +function getDecodeSplit (name, list) { + // 1. Let value be the result of getting name from list. + const value = list.get(name, true) + + // 2. If value is null, then return null. + if (value === null) { + return null + } + + // 3. Return the result of getting, decoding, and splitting value. + return gettingDecodingSplitting(value) +} + +const textDecoder = new TextDecoder() + +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes (buffer) { + if (buffer.length === 0) { + return '' + } + + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. + + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3) + } + + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + const output = textDecoder.decode(buffer) + + // 4. Return output. + return output +} + +class EnvironmentSettingsObjectBase { + get baseUrl () { + return getGlobalOrigin() + } + + get origin () { + return this.baseUrl?.origin + } + + policyContainer = makePolicyContainer() +} + +class EnvironmentSettingsObject { + settingsObject = new EnvironmentSettingsObjectBase() +} + +const environmentSettingsObject = new EnvironmentSettingsObject() + +module.exports = { + isAborted, + isCancelled, + isValidEncodedURL, + createDeferredPromise, + ReadableStreamFrom, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + clampAndCoarsenConnectionTimingInfo, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + iteratorMixin, + createIterator, + isValidHeaderName, + isValidHeaderValue, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + simpleRangeHeaderValue, + buildContentRange, + parseMetadata, + createInflate, + extractMimeType, + getDecodeSplit, + utf8DecodeBytes, + environmentSettingsObject +} diff --git a/deps/npm/node_modules/undici/lib/web/fetch/webidl.js b/deps/npm/node_modules/undici/lib/web/fetch/webidl.js new file mode 100644 index 00000000000000..cd5cb14454c34f --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fetch/webidl.js @@ -0,0 +1,695 @@ +'use strict' + +const { types, inspect } = require('node:util') +const { markAsUncloneable } = require('node:worker_threads') +const { toUSVString } = require('../../core/util') + +/** @type {import('../../../types/webidl').Webidl} */ +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} + +webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`) +} + +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` + + return webidl.errors.exception({ + header: context.prefix, + message + }) +} + +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) +} + +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I, opts) { + if (opts?.strict !== false) { + if (!(V instanceof I)) { + const err = new TypeError('Illegal invocation') + err.code = 'ERR_INVALID_THIS' // node compat. + throw err + } + } else { + if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) { + const err = new TypeError('Illegal invocation') + err.code = 'ERR_INVALID_THIS' // node compat. + throw err + } + } +} + +webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, ` + + `but${length ? ' only' : ''} ${length} found.`, + header: ctx + }) + } +} + +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }) +} + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } + + return 'Object' + } + } +} + +webidl.util.markAsUncloneable = markAsUncloneable || (() => {}) +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts) { + let upperBound + let lowerBound + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0 + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } + + // 4. Let x be ? ToNumber(V). + let x = Number(V) + + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0 + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts?.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${webidl.util.Stringify(V)} to an integer.` + }) + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } + + // 4. Return x. + return x + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts?.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) + } + + // 3. Return x. + return x + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) + } + + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r + } + + // 3. Otherwise, return r. + return r +} + +webidl.util.Stringify = function (V) { + const type = webidl.util.Type(V) + + switch (type) { + case 'Symbol': + return `Symbol(${V.description})` + case 'Object': + return inspect(V) + case 'String': + return `"${V}"` + default: + return `${V}` + } +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V, prefix, argument, Iterable) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.` + }) + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = typeof Iterable === 'function' ? Iterable() : V?.[Symbol.iterator]?.() + const seq = [] + let index = 0 + + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is not iterable.` + }) + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { + break + } + + seq.push(converter(value, prefix, `${argument}[${index++}]`)) + } + + return seq + } +} + +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return (O, prefix, argument) => { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} ("${webidl.util.Type(O)}") is not an Object.` + }) + } + + // 2. Let result be a new empty instance of record. + const result = {} + + if (!types.isProxy(O)) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const keys = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)] + + for (const key of keys) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key, prefix, argument) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key], prefix, argument) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + + // 5. Return result. + return result + } + + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + const keys = Reflect.ownKeys(O) + + // 4. For each key of keys. + for (const key of keys) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const desc = Reflect.getOwnPropertyDescriptor(O, key) + + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc?.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key, prefix, argument) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key], prefix, argument) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + } + + // 5. Return result. + return result + } +} + +webidl.interfaceConverter = function (i) { + return (V, prefix, argument, opts) => { + if (opts?.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.` + }) + } + + return V + } +} + +webidl.dictionaryConverter = function (converters) { + return (dictionary, prefix, argument) => { + const type = webidl.util.Type(dictionary) + const dict = {} + + if (type === 'Null' || type === 'Undefined') { + return dict + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } + + for (const options of converters) { + const { key, defaultValue, required, converter } = options + + if (required === true) { + if (!Object.hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: prefix, + message: `Missing required key "${key}".` + }) + } + } + + let value = dictionary[key] + const hasDefault = Object.hasOwn(options, 'defaultValue') + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value ??= defaultValue() + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value, prefix, `${argument}.${key}`) + + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + throw webidl.errors.exception({ + header: prefix, + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } + + dict[key] = value + } + } + + return dict + } +} + +webidl.nullableConverter = function (converter) { + return (V, prefix, argument) => { + if (V === null) { + return V + } + + return converter(V, prefix, argument) + } +} + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, prefix, argument, opts) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts?.legacyNullToEmptyString) { + return '' + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is a symbol, which cannot be converted to a DOMString.` + }) + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V, prefix, argument) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V, prefix, argument) + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + 'Cannot convert argument to a ByteString because the character at ' + + `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ) + } + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x +} + +// https://webidl.spec.whatwg.org/#es-USVString +// TODO: rewrite this so we can control the errors thrown +webidl.converters.USVString = toUSVString + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V, prefix, argument) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed', undefined, prefix, argument) + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V, prefix, argument) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + const x = webidl.util.ConvertToInt(V, 64, 'unsigned', undefined, prefix, argument) + + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V, prefix, argument) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + const x = webidl.util.ConvertToInt(V, 32, 'unsigned', undefined, prefix, argument) + + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, prefix, argument, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts, prefix, argument) + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, prefix, argument, opts) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBuffer'] + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + if (V.resizable || V.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }) + } + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V +} + +webidl.converters.TypedArray = function (V, T, prefix, name, opts) { + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: [T.name] + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }) + } + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} + +webidl.converters.DataView = function (V, prefix, name, opts) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${name} is not a DataView.` + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }) + } + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, prefix, name, opts) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false }) + } + + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false }) + } + + if (types.isDataView(V)) { + return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false }) + } + + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: ['BufferSource'] + }) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.ByteString +) + +webidl.converters['sequence>'] = webidl.sequenceConverter( + webidl.converters['sequence'] +) + +webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) + +module.exports = { + webidl +} diff --git a/deps/npm/node_modules/undici/lib/web/fileapi/encoding.js b/deps/npm/node_modules/undici/lib/web/fileapi/encoding.js new file mode 100644 index 00000000000000..1d1d2b6544f9f0 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fileapi/encoding.js @@ -0,0 +1,290 @@ +'use strict' + +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding (label) { + if (!label) { + return 'failure' + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8' + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866' + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2' + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3' + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4' + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5' + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6' + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7' + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8' + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I' + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10' + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13' + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14' + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15' + case 'iso-8859-16': + return 'ISO-8859-16' + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R' + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U' + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh' + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874' + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250' + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251' + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252' + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253' + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254' + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255' + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256' + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257' + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258' + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic' + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK' + case 'gb18030': + return 'gb18030' + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5' + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP' + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP' + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS' + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR' + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement' + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE' + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE' + case 'x-user-defined': + return 'x-user-defined' + default: return 'failure' + } +} + +module.exports = { + getEncoding +} diff --git a/deps/npm/node_modules/undici/lib/web/fileapi/filereader.js b/deps/npm/node_modules/undici/lib/web/fileapi/filereader.js new file mode 100644 index 00000000000000..ccebe692a6f499 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fileapi/filereader.js @@ -0,0 +1,344 @@ +'use strict' + +const { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} = require('./util') +const { + kState, + kError, + kResult, + kEvents, + kAborted +} = require('./symbols') +const { webidl } = require('../fetch/webidl') +const { kEnumerableProperty } = require('../../core/util') + +class FileReader extends EventTarget { + constructor () { + super() + + this[kState] = 'empty' + this[kResult] = null + this[kError] = null + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsArrayBuffer') + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsBinaryString') + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText (blob, encoding = undefined) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsText') + + blob = webidl.converters.Blob(blob, { strict: false }) + + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding, 'FileReader.readAsText', 'encoding') + } + + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding) + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsDataURL') + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL') + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort () { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null + return + } + + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done' + this[kResult] = null + } + + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true + + // 4. Terminate the algorithm for the read method being processed. + // TODO + + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this) + + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this) + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState () { + webidl.brandCheck(this, FileReader) + + switch (this[kState]) { + case 'empty': return this.EMPTY + case 'loading': return this.LOADING + case 'done': return this.DONE + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result () { + webidl.brandCheck(this, FileReader) + + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult] + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error () { + webidl.brandCheck(this, FileReader) + + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError] + } + + get onloadend () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadend + } + + set onloadend (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend) + } + + if (typeof fn === 'function') { + this[kEvents].loadend = fn + this.addEventListener('loadend', fn) + } else { + this[kEvents].loadend = null + } + } + + get onerror () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].error + } + + set onerror (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error) + } + + if (typeof fn === 'function') { + this[kEvents].error = fn + this.addEventListener('error', fn) + } else { + this[kEvents].error = null + } + } + + get onloadstart () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadstart + } + + set onloadstart (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart) + } + + if (typeof fn === 'function') { + this[kEvents].loadstart = fn + this.addEventListener('loadstart', fn) + } else { + this[kEvents].loadstart = null + } + } + + get onprogress () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].progress + } + + set onprogress (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress) + } + + if (typeof fn === 'function') { + this[kEvents].progress = fn + this.addEventListener('progress', fn) + } else { + this[kEvents].progress = null + } + } + + get onload () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].load + } + + set onload (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load) + } + + if (typeof fn === 'function') { + this[kEvents].load = fn + this.addEventListener('load', fn) + } else { + this[kEvents].load = null + } + } + + get onabort () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].abort + } + + set onabort (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort) + } + + if (typeof fn === 'function') { + this[kEvents].abort = fn + this.addEventListener('abort', fn) + } else { + this[kEvents].abort = null + } + } +} + +// https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0 +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1 +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2 + +Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}) + +module.exports = { + FileReader +} diff --git a/deps/npm/node_modules/undici/lib/web/fileapi/progressevent.js b/deps/npm/node_modules/undici/lib/web/fileapi/progressevent.js new file mode 100644 index 00000000000000..2d09d18107de76 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fileapi/progressevent.js @@ -0,0 +1,78 @@ +'use strict' + +const { webidl } = require('../fetch/webidl') + +const kState = Symbol('ProgressEvent state') + +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +class ProgressEvent extends Event { + constructor (type, eventInitDict = {}) { + type = webidl.converters.DOMString(type, 'ProgressEvent constructor', 'type') + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) + + super(type, eventInitDict) + + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + } + } + + get lengthComputable () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].lengthComputable + } + + get loaded () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].loaded + } + + get total () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].total + } +} + +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: () => 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: () => 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: () => false + } +]) + +module.exports = { + ProgressEvent +} diff --git a/deps/npm/node_modules/undici/lib/web/fileapi/symbols.js b/deps/npm/node_modules/undici/lib/web/fileapi/symbols.js new file mode 100644 index 00000000000000..dd11746de389ca --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fileapi/symbols.js @@ -0,0 +1,10 @@ +'use strict' + +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') +} diff --git a/deps/npm/node_modules/undici/lib/web/fileapi/util.js b/deps/npm/node_modules/undici/lib/web/fileapi/util.js new file mode 100644 index 00000000000000..9110b872a817d2 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/fileapi/util.js @@ -0,0 +1,391 @@ +'use strict' + +const { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired +} = require('./symbols') +const { ProgressEvent } = require('./progressevent') +const { getEncoding } = require('./encoding') +const { serializeAMimeType, parseMIMEType } = require('../fetch/data-url') +const { types } = require('node:util') +const { StringDecoder } = require('string_decoder') +const { btoa } = require('node:buffer') + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation (fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError') + } + + // 2. Set fr’s state to "loading". + fr[kState] = 'loading' + + // 3. Set fr’s result to null. + fr[kResult] = null + + // 4. Set fr’s error to null. + fr[kError] = null + + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + const stream = blob.stream() + + // 6. Let reader be the result of getting a reader from stream. + const reader = stream.getReader() + + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + const bytes = [] + + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + let chunkPromise = reader.read() + + // 9. Let isFirstChunk be true. + let isFirstChunk = true + + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ;(async () => { + while (!fr[kAborted]) { + // 1. Wait for chunkPromise to be fulfilled or rejected. + try { + const { done, value } = await chunkPromise + + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr) + }) + } + + // 3. Set isFirstChunk to false. + isFirstChunk = false + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!done && types.isUint8Array(value)) { + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value) + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ( + ( + fr[kLastProgressEventFired] === undefined || + Date.now() - fr[kLastProgressEventFired] >= 50 + ) && + !fr[kAborted] + ) { + fr[kLastProgressEventFired] = Date.now() + queueMicrotask(() => { + fireAProgressEvent('progress', fr) + }) + } + + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read() + } else if (done) { + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + const result = packageData(bytes, type, blob.type, encodingName) + + // 4. Else: + + if (fr[kAborted]) { + return + } + + // 1. Set fr’s result to result. + fr[kResult] = result + + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr) + } catch (error) { + // 3. If package data threw an exception error: + + // 1. Set fr’s error to error. + fr[kError] = error + + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + } + + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } catch (error) { + if (fr[kAborted]) { + return + } + + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Set fr’s error to error. + fr[kError] = error + + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } + })() +} + +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent (e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }) + + reader.dispatchEvent(event) +} + +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData (bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: + + switch (type) { + case 'DataURL': { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. + + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + let dataURL = 'data:' + + const parsed = parseMIMEType(mimeType || 'application/octet-stream') + + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed) + } + + dataURL += ';base64,' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)) + } + + dataURL += btoa(decoder.end()) + + return dataURL + } + case 'Text': { + // 1. Let encoding be failure + let encoding = 'failure' + + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName) + } + + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + const type = parseMIMEType(mimeType) + + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (type !== 'failure') { + encoding = getEncoding(type.parameters.get('charset')) + } + } + + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8' + } + + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding) + } + case 'ArrayBuffer': { + // Return a new ArrayBuffer whose contents are bytes. + const sequence = combineByteSequences(bytes) + + return sequence.buffer + } + case 'BinaryString': { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + let binaryString = '' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + binaryString += decoder.write(chunk) + } + + binaryString += decoder.end() + + return binaryString + } + } +} + +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode (ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue) + + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + const BOMEncoding = BOMSniffing(bytes) + + let slice = 0 + + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding + + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2 + } + + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". + + // 4. Return output. + + const sliced = bytes.slice(slice) + return new TextDecoder(encoding).decode(sliced) +} + +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing (ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + const [a, b, c] = ioQueue + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8' + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE' + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE' + } + + return null +} + +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences (sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength + }, 0) + + let offset = 0 + + return sequences.reduce((a, b) => { + a.set(b, offset) + offset += b.byteLength + return a + }, new Uint8Array(size)) +} + +module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/connection.js b/deps/npm/node_modules/undici/lib/web/websocket/connection.js new file mode 100644 index 00000000000000..bb87d361e4b743 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/connection.js @@ -0,0 +1,371 @@ +'use strict' + +const { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require('./constants') +const { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose, + kResponse +} = require('./symbols') +const { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require('./util') +const { channels } = require('../../core/diagnostics') +const { CloseEvent } = require('./events') +const { makeRequest } = require('../fetch/request') +const { fetching } = require('../fetch/index') +const { Headers, getHeadersList } = require('../fetch/headers') +const { getDecodeSplit } = require('../fetch/util') +const { WebsocketFrameSend } = require('./frame') + +/** @type {import('crypto')} */ +let crypto +try { + crypto = require('node:crypto') +/* c8 ignore next 3 */ +} catch { + +} + +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any, extensions: string[] | undefined) => void} onEstablish + * @param {Partial} options + */ +function establishWebSocketConnection (url, protocols, client, ws, onEstablish, options) { + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + const requestURL = url + + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + const request = makeRequest({ + urlList: [requestURL], + client, + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }) + + // Note: undici extension, allow setting custom headers. + if (options.headers) { + const headersList = getHeadersList(new Headers(options.headers)) + + request.headersList = headersList + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + const keyValue = crypto.randomBytes(16).toString('base64') + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue) + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13') + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol) + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + const permessageDeflate = 'permessage-deflate; client_max_window_bits' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher, + processResponse (response) { + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.') + return + } + + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.') + return + } + + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. + + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') + return + } + + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') + return + } + + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') + const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') + return + } + + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + const secExtension = response.headersList.get('Sec-WebSocket-Extensions') + let extensions + + if (secExtension !== null) { + extensions = parseExtensions(secExtension) + + if (!extensions.has('permessage-deflate')) { + failWebsocketConnection(ws, 'Sec-WebSocket-Extensions header does not match.') + return + } + } + + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') + + if (secProtocol !== null) { + const requestProtocols = getDecodeSplit('sec-websocket-protocol', request.headersList) + + // The client can request that the server use a specific subprotocol by + // including the |Sec-WebSocket-Protocol| field in its handshake. If it + // is specified, the server needs to include the same field and one of + // the selected subprotocol values in its response for the connection to + // be established. + if (!requestProtocols.includes(secProtocol)) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') + return + } + } + + response.socket.on('data', onSocketData) + response.socket.on('close', onSocketClose) + response.socket.on('error', onSocketError) + + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }) + } + + onEstablish(response, extensions) + } + }) + + return controller +} + +function closeWebSocketConnection (ws, code, reason, reasonByteLength) { + if (isClosing(ws) || isClosed(ws)) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(ws)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(ws, 'Connection was closed before it was established.') + ws[kReadyState] = states.CLOSING + } else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + ws[kSentClose] = sentCloseFrameState.PROCESSING + + const frame = new WebsocketFrameSend() + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2) + frame.frameData.writeUInt16BE(code, 0) + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) + frame.frameData.writeUInt16BE(code, 0) + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8') + } else { + frame.frameData = emptyBuffer + } + + /** @type {import('stream').Duplex} */ + const socket = ws[kResponse].socket + + socket.write(frame.createFrame(opcodes.CLOSE)) + + ws[kSentClose] = sentCloseFrameState.SENT + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + ws[kReadyState] = states.CLOSING + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + ws[kReadyState] = states.CLOSING + } +} + +/** + * @param {Buffer} chunk + */ +function onSocketData (chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause() + } +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose () { + const { ws } = this + const { [kResponse]: response } = ws + + response.socket.off('data', onSocketData) + response.socket.off('close', onSocketClose) + response.socket.off('error', onSocketError) + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose] + + let code = 1005 + let reason = '' + + const result = ws[kByteParser].closingInfo + + if (result && !result.error) { + code = result.code ?? 1005 + reason = result.reason + } else if (!ws[kReceivedClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006 + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + // TODO: process.nextTick + fireEvent('close', ws, (type, init) => new CloseEvent(type, init), { + wasClean, code, reason + }) + + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }) + } +} + +function onSocketError (error) { + const { ws } = this + + ws[kReadyState] = states.CLOSING + + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error) + } + + this.destroy() +} + +module.exports = { + establishWebSocketConnection, + closeWebSocketConnection +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/constants.js b/deps/npm/node_modules/undici/lib/web/websocket/constants.js new file mode 100644 index 00000000000000..2019b5b67a7eff --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/constants.js @@ -0,0 +1,66 @@ +'use strict' + +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +const states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +} + +const sentCloseFrameState = { + NOT_SENT: 0, + PROCESSING: 1, + SENT: 2 +} + +const opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +} + +const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 + +const parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +} + +const emptyBuffer = Buffer.allocUnsafe(0) + +const sendHints = { + string: 1, + typedArray: 2, + arrayBuffer: 3, + blob: 4 +} + +module.exports = { + uid, + sentCloseFrameState, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer, + sendHints +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/events.js b/deps/npm/node_modules/undici/lib/web/websocket/events.js new file mode 100644 index 00000000000000..f899c21d42bbeb --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/events.js @@ -0,0 +1,329 @@ +'use strict' + +const { webidl } = require('../fetch/webidl') +const { kEnumerableProperty } = require('../../core/util') +const { kConstruct } = require('../../core/symbols') +const { MessagePort } = require('node:worker_threads') + +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +class MessageEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + if (type === kConstruct) { + super(arguments[1], arguments[2]) + webidl.util.markAsUncloneable(this) + return + } + + const prefix = 'MessageEvent constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + type = webidl.converters.DOMString(type, prefix, 'type') + eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, 'eventInitDict') + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + webidl.util.markAsUncloneable(this) + } + + get data () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.data + } + + get origin () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.origin + } + + get lastEventId () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.lastEventId + } + + get source () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.source + } + + get ports () { + webidl.brandCheck(this, MessageEvent) + + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports) + } + + return this.#eventInit.ports + } + + initMessageEvent ( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, MessageEvent) + + webidl.argumentLengthCheck(arguments, 1, 'MessageEvent.initMessageEvent') + + return new MessageEvent(type, { + bubbles, cancelable, data, origin, lastEventId, source, ports + }) + } + + static createFastMessageEvent (type, init) { + const messageEvent = new MessageEvent(kConstruct, type, init) + messageEvent.#eventInit = init + messageEvent.#eventInit.data ??= null + messageEvent.#eventInit.origin ??= '' + messageEvent.#eventInit.lastEventId ??= '' + messageEvent.#eventInit.source ??= null + messageEvent.#eventInit.ports ??= [] + return messageEvent + } +} + +const { createFastMessageEvent } = MessageEvent +delete MessageEvent.createFastMessageEvent + +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +class CloseEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + const prefix = 'CloseEvent constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + type = webidl.converters.DOMString(type, prefix, 'type') + eventInitDict = webidl.converters.CloseEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + webidl.util.markAsUncloneable(this) + } + + get wasClean () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.wasClean + } + + get code () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.code + } + + get reason () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.reason + } +} + +// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +class ErrorEvent extends Event { + #eventInit + + constructor (type, eventInitDict) { + const prefix = 'ErrorEvent constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + super(type, eventInitDict) + webidl.util.markAsUncloneable(this) + + type = webidl.converters.DOMString(type, prefix, 'type') + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) + + this.#eventInit = eventInitDict + } + + get message () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.message + } + + get filename () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.filename + } + + get lineno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.lineno + } + + get colno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.colno + } + + get error () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.error + } +} + +Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty +}) + +Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty +}) + +Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty +}) + +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.MessagePort +) + +const eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: () => false + } +] + +webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: () => null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: () => '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: () => '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: () => null + }, + { + key: 'ports', + converter: webidl.converters['sequence'], + defaultValue: () => new Array(0) + } +]) + +webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: () => 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: () => '' + } +]) + +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: () => '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: () => '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: () => 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: () => 0 + }, + { + key: 'error', + converter: webidl.converters.any + } +]) + +module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent, + createFastMessageEvent +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/frame.js b/deps/npm/node_modules/undici/lib/web/websocket/frame.js new file mode 100644 index 00000000000000..b062ffde8ecb01 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/frame.js @@ -0,0 +1,96 @@ +'use strict' + +const { maxUnsigned16Bit } = require('./constants') + +const BUFFER_SIZE = 16386 + +/** @type {import('crypto')} */ +let crypto +let buffer = null +let bufIdx = BUFFER_SIZE + +try { + crypto = require('node:crypto') +/* c8 ignore next 3 */ +} catch { + crypto = { + // not full compatibility, but minimum. + randomFillSync: function randomFillSync (buffer, _offset, _size) { + for (let i = 0; i < buffer.length; ++i) { + buffer[i] = Math.random() * 255 | 0 + } + return buffer + } + } +} + +function generateMask () { + if (bufIdx === BUFFER_SIZE) { + bufIdx = 0 + crypto.randomFillSync((buffer ??= Buffer.allocUnsafe(BUFFER_SIZE)), 0, BUFFER_SIZE) + } + return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]] +} + +class WebsocketFrameSend { + /** + * @param {Buffer|undefined} data + */ + constructor (data) { + this.frameData = data + } + + createFrame (opcode) { + const frameData = this.frameData + const maskKey = generateMask() + const bodyLength = frameData?.byteLength ?? 0 + + /** @type {number} */ + let payloadLength = bodyLength // 0-125 + let offset = 6 + + if (bodyLength > maxUnsigned16Bit) { + offset += 8 // payload length is next 8 bytes + payloadLength = 127 + } else if (bodyLength > 125) { + offset += 2 // payload length is next 2 bytes + payloadLength = 126 + } + + const buffer = Buffer.allocUnsafe(bodyLength + offset) + + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0 + buffer[0] |= 0x80 // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode // opcode + + /*! ws. MIT License. Einar Otto Stangvik */ + buffer[offset - 4] = maskKey[0] + buffer[offset - 3] = maskKey[1] + buffer[offset - 2] = maskKey[2] + buffer[offset - 1] = maskKey[3] + + buffer[1] = payloadLength + + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2) + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0 + buffer.writeUIntBE(bodyLength, 4, 6) + } + + buffer[1] |= 0x80 // MASK + + // mask body + for (let i = 0; i < bodyLength; ++i) { + buffer[offset + i] = frameData[i] ^ maskKey[i & 3] + } + + return buffer + } +} + +module.exports = { + WebsocketFrameSend +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/permessage-deflate.js b/deps/npm/node_modules/undici/lib/web/websocket/permessage-deflate.js new file mode 100644 index 00000000000000..6a6e43899c5a95 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/permessage-deflate.js @@ -0,0 +1,100 @@ +'use strict' + +const { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib') +const { isValidClientWindowBits } = require('./util') +const { MessageSizeExceededError } = require('../../core/errors') + +const tail = Buffer.from([0x00, 0x00, 0xff, 0xff]) +const kBuffer = Symbol('kBuffer') +const kLength = Symbol('kLength') + +class PerMessageDeflate { + /** @type {import('node:zlib').InflateRaw} */ + #inflate + + #options = {} + + #maxPayloadSize = 0 + + /** + * @param {Map} extensions + */ + constructor (extensions, options) { + this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover') + this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits') + + this.#maxPayloadSize = options.maxPayloadSize + } + + /** + * Decompress a compressed payload. + * @param {Buffer} chunk Compressed data + * @param {boolean} fin Final fragment flag + * @param {Function} callback Callback function + */ + decompress (chunk, fin, callback) { + // An endpoint uses the following algorithm to decompress a message. + // 1. Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the + // payload of the message. + // 2. Decompress the resulting data using DEFLATE. + if (!this.#inflate) { + let windowBits = Z_DEFAULT_WINDOWBITS + + if (this.#options.serverMaxWindowBits) { // empty values default to Z_DEFAULT_WINDOWBITS + if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) { + callback(new Error('Invalid server_max_window_bits')) + return + } + + windowBits = Number.parseInt(this.#options.serverMaxWindowBits) + } + + try { + this.#inflate = createInflateRaw({ windowBits }) + } catch (err) { + callback(err) + return + } + this.#inflate[kBuffer] = [] + this.#inflate[kLength] = 0 + + this.#inflate.on('data', (data) => { + this.#inflate[kLength] += data.length + + if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) { + callback(new MessageSizeExceededError()) + this.#inflate.removeAllListeners() + this.#inflate = null + return + } + + this.#inflate[kBuffer].push(data) + }) + + this.#inflate.on('error', (err) => { + this.#inflate = null + callback(err) + }) + } + + this.#inflate.write(chunk) + if (fin) { + this.#inflate.write(tail) + } + + this.#inflate.flush(() => { + if (!this.#inflate) { + return + } + + const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]) + + this.#inflate[kBuffer].length = 0 + this.#inflate[kLength] = 0 + + callback(null, full) + }) + } +} + +module.exports = { PerMessageDeflate } diff --git a/deps/npm/node_modules/undici/lib/web/websocket/receiver.js b/deps/npm/node_modules/undici/lib/web/websocket/receiver.js new file mode 100644 index 00000000000000..53e427eb2e4642 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/receiver.js @@ -0,0 +1,490 @@ +'use strict' + +const { Writable } = require('node:stream') +const assert = require('node:assert') +const { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require('./constants') +const { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols') +const { channels } = require('../../core/diagnostics') +const { + isValidStatusCode, + isValidOpcode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isTextBinaryFrame, + isContinuationFrame +} = require('./util') +const { WebsocketFrameSend } = require('./frame') +const { closeWebSocketConnection } = require('./connection') +const { PerMessageDeflate } = require('./permessage-deflate') +const { MessageSizeExceededError } = require('../../core/errors') + +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors + +class ByteParser extends Writable { + #buffers = [] + #fragmentsBytes = 0 + #byteOffset = 0 + #loop = false + + #state = parserStates.INFO + + #info = {} + #fragments = [] + + /** @type {Map} */ + #extensions + + /** @type {number} */ + #maxPayloadSize + + /** + * @param {import('./websocket').WebSocket} ws + * @param {Map|null} extensions + * @param {{ maxPayloadSize?: number }} [options] + */ + constructor (ws, extensions, options = {}) { + super() + + this.ws = ws + this.#extensions = extensions == null ? new Map() : extensions + this.#maxPayloadSize = options.maxPayloadSize ?? 0 + + if (this.#extensions.has('permessage-deflate')) { + this.#extensions.set('permessage-deflate', new PerMessageDeflate(extensions, options)) + } + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write (chunk, _, callback) { + this.#buffers.push(chunk) + this.#byteOffset += chunk.length + this.#loop = true + + this.run(callback) + } + + #validatePayloadLength () { + if ( + this.#maxPayloadSize > 0 && + !isControlFrame(this.#info.opcode) && + this.#info.payloadLength > this.#maxPayloadSize + ) { + failWebsocketConnection(this.ws, 'Payload size exceeds maximum allowed size') + return false + } + + return true + } + + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run (callback) { + while (this.#loop) { + if (this.#state === parserStates.INFO) { + // If there aren't enough bytes to parse the payload length, etc. + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + const fin = (buffer[0] & 0x80) !== 0 + const opcode = buffer[0] & 0x0F + const masked = (buffer[1] & 0x80) === 0x80 + + const fragmented = !fin && opcode !== opcodes.CONTINUATION + const payloadLength = buffer[1] & 0x7F + + const rsv1 = buffer[0] & 0x40 + const rsv2 = buffer[0] & 0x20 + const rsv3 = buffer[0] & 0x10 + + if (!isValidOpcode(opcode)) { + failWebsocketConnection(this.ws, 'Invalid opcode received') + return callback() + } + + if (masked) { + failWebsocketConnection(this.ws, 'Frame cannot be masked') + return callback() + } + + // MUST be 0 unless an extension is negotiated that defines meanings + // for non-zero values. If a nonzero value is received and none of + // the negotiated extensions defines the meaning of such a nonzero + // value, the receiving endpoint MUST _Fail the WebSocket + // Connection_. + // This document allocates the RSV1 bit of the WebSocket header for + // PMCEs and calls the bit the "Per-Message Compressed" bit. On a + // WebSocket connection where a PMCE is in use, this bit indicates + // whether a message is compressed or not. + if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) { + failWebsocketConnection(this.ws, 'Expected RSV1 to be clear.') + return + } + + if (rsv2 !== 0 || rsv3 !== 0) { + failWebsocketConnection(this.ws, 'RSV1, RSV2, RSV3 must be clear') + return + } + + if (fragmented && !isTextBinaryFrame(opcode)) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') + return + } + + // If we are already parsing a text/binary frame and do not receive either + // a continuation frame or close frame, fail the connection. + if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) { + failWebsocketConnection(this.ws, 'Expected continuation frame') + return + } + + if (this.#info.fragmented && fragmented) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') + return + } + + // "All control frames MUST have a payload length of 125 bytes or less + // and MUST NOT be fragmented." + if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) { + failWebsocketConnection(this.ws, 'Control frame either too large or fragmented') + return + } + + if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) { + failWebsocketConnection(this.ws, 'Unexpected continuation frame') + return + } + + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength + this.#state = parserStates.READ_DATA + + if (!this.#validatePayloadLength()) { + return + } + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16 + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64 + } + + if (isTextBinaryFrame(opcode)) { + this.#info.binaryType = opcode + this.#info.compressed = rsv1 !== 0 + } + + this.#info.opcode = opcode + this.#info.masked = masked + this.#info.fin = fin + this.#info.fragmented = fragmented + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.payloadLength = buffer.readUInt16BE(0) + this.#state = parserStates.READ_DATA + + if (!this.#validatePayloadLength()) { + return + } + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback() + } + + const buffer = this.consume(8) + const upper = buffer.readUInt32BE(0) + const lower = buffer.readUInt32BE(4) + + // 2^31 is the maximum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper !== 0 || lower > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') + return + } + + this.#info.payloadLength = lower + this.#state = parserStates.READ_DATA + + if (!this.#validatePayloadLength()) { + return + } + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + return callback() + } + + const body = this.consume(this.#info.payloadLength) + + if (isControlFrame(this.#info.opcode)) { + this.#loop = this.parseControlFrame(body) + this.#state = parserStates.INFO + } else { + if (!this.#info.compressed) { + this.writeFragments(body) + + if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { + failWebsocketConnection(this.ws, new MessageSizeExceededError().message) + return + } + + // If the frame is not fragmented, a message has been received. + // If the frame is fragmented, it will terminate with a fin bit set + // and an opcode of 0 (continuation), therefore we handle that when + // parsing continuation frames, not here. + if (!this.#info.fragmented && this.#info.fin) { + websocketMessageReceived(this.ws, this.#info.binaryType, this.consumeFragments()) + } + + this.#state = parserStates.INFO + } else { + this.#extensions.get('permessage-deflate').decompress( + body, + this.#info.fin, + (error, data) => { + if (error) { + failWebsocketConnection(this.ws, error.message) + return + } + + this.writeFragments(data) + + if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { + failWebsocketConnection(this.ws, new MessageSizeExceededError().message) + return + } + + if (!this.#info.fin) { + this.#state = parserStates.INFO + this.#loop = true + this.run(callback) + return + } + + websocketMessageReceived(this.ws, this.#info.binaryType, this.consumeFragments()) + + this.#loop = true + this.#state = parserStates.INFO + this.run(callback) + } + ) + + this.#loop = false + break + } + } + } + } + } + + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer} + */ + consume (n) { + if (n > this.#byteOffset) { + throw new Error('Called consume() before buffers satiated.') + } else if (n === 0) { + return emptyBuffer + } + + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length + return this.#buffers.shift() + } + + const buffer = Buffer.allocUnsafe(n) + let offset = 0 + + while (offset !== n) { + const next = this.#buffers[0] + const { length } = next + + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset) + break + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset) + this.#buffers[0] = next.subarray(n - offset) + break + } else { + buffer.set(this.#buffers.shift(), offset) + offset += next.length + } + } + + this.#byteOffset -= n + + return buffer + } + + writeFragments (fragment) { + this.#fragmentsBytes += fragment.length + this.#fragments.push(fragment) + } + + consumeFragments () { + const fragments = this.#fragments + + if (fragments.length === 1) { + this.#fragmentsBytes = 0 + return fragments.shift() + } + + const output = Buffer.concat(fragments, this.#fragmentsBytes) + this.#fragments = [] + this.#fragmentsBytes = 0 + + return output + } + + parseCloseBody (data) { + assert(data.length !== 1) + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + let code + + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0) + } + + if (code !== undefined && !isValidStatusCode(code)) { + return { code: 1002, reason: 'Invalid status code', error: true } + } + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + let reason = data.subarray(2) + + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3) + } + + try { + reason = utf8Decode(reason) + } catch { + return { code: 1007, reason: 'Invalid UTF-8', error: true } + } + + return { code, reason, error: false } + } + + /** + * Parses control frames. + * @param {Buffer} body + */ + parseControlFrame (body) { + const { opcode, payloadLength } = this.#info + + if (opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') + return false + } + + this.#info.closeInfo = this.parseCloseBody(body) + + if (this.#info.closeInfo.error) { + const { code, reason } = this.#info.closeInfo + + closeWebSocketConnection(this.ws, code, reason, reason.length) + failWebsocketConnection(this.ws, reason) + return false + } + + if (this.ws[kSentClose] !== sentCloseFrameState.SENT) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + let body = emptyBuffer + if (this.#info.closeInfo.code) { + body = Buffer.allocUnsafe(2) + body.writeUInt16BE(this.#info.closeInfo.code, 0) + } + const closeFrame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = sentCloseFrameState.SENT + } + } + ) + } + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING + this.ws[kReceivedClose] = true + + return false + } else if (opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" + + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) + + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }) + } + } + } else if (opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }) + } + } + + return true + } + + get closingInfo () { + return this.#info.closeInfo + } +} + +module.exports = { + ByteParser +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/sender.js b/deps/npm/node_modules/undici/lib/web/websocket/sender.js new file mode 100644 index 00000000000000..1b1468d4ab900e --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/sender.js @@ -0,0 +1,104 @@ +'use strict' + +const { WebsocketFrameSend } = require('./frame') +const { opcodes, sendHints } = require('./constants') +const FixedQueue = require('../../dispatcher/fixed-queue') + +/** @type {typeof Uint8Array} */ +const FastBuffer = Buffer[Symbol.species] + +/** + * @typedef {object} SendQueueNode + * @property {Promise | null} promise + * @property {((...args: any[]) => any)} callback + * @property {Buffer | null} frame + */ + +class SendQueue { + /** + * @type {FixedQueue} + */ + #queue = new FixedQueue() + + /** + * @type {boolean} + */ + #running = false + + /** @type {import('node:net').Socket} */ + #socket + + constructor (socket) { + this.#socket = socket + } + + add (item, cb, hint) { + if (hint !== sendHints.blob) { + const frame = createFrame(item, hint) + if (!this.#running) { + // fast-path + this.#socket.write(frame, cb) + } else { + /** @type {SendQueueNode} */ + const node = { + promise: null, + callback: cb, + frame + } + this.#queue.push(node) + } + return + } + + /** @type {SendQueueNode} */ + const node = { + promise: item.arrayBuffer().then((ab) => { + node.promise = null + node.frame = createFrame(ab, hint) + }), + callback: cb, + frame: null + } + + this.#queue.push(node) + + if (!this.#running) { + this.#run() + } + } + + async #run () { + this.#running = true + const queue = this.#queue + while (!queue.isEmpty()) { + const node = queue.shift() + // wait pending promise + if (node.promise !== null) { + await node.promise + } + // write + this.#socket.write(node.frame, node.callback) + // cleanup + node.callback = node.frame = null + } + this.#running = false + } +} + +function createFrame (data, hint) { + return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.string ? opcodes.TEXT : opcodes.BINARY) +} + +function toBuffer (data, hint) { + switch (hint) { + case sendHints.string: + return Buffer.from(data) + case sendHints.arrayBuffer: + case sendHints.blob: + return new FastBuffer(data) + case sendHints.typedArray: + return new FastBuffer(data.buffer, data.byteOffset, data.byteLength) + } +} + +module.exports = { SendQueue } diff --git a/deps/npm/node_modules/undici/lib/web/websocket/symbols.js b/deps/npm/node_modules/undici/lib/web/websocket/symbols.js new file mode 100644 index 00000000000000..11d03e38a86609 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/symbols.js @@ -0,0 +1,12 @@ +'use strict' + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/util.js b/deps/npm/node_modules/undici/lib/web/websocket/util.js new file mode 100644 index 00000000000000..2a04887f263290 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/util.js @@ -0,0 +1,322 @@ +'use strict' + +const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols') +const { states, opcodes } = require('./constants') +const { ErrorEvent, createFastMessageEvent } = require('./events') +const { isUtf8 } = require('node:buffer') +const { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = require('../fetch/data-url') + +/* globals Blob */ + +/** + * @param {import('./websocket').WebSocket} ws + * @returns {boolean} + */ +function isConnecting (ws) { + // If the WebSocket connection is not yet established, and the connection + // is not yet closed, then the WebSocket connection is in the CONNECTING state. + return ws[kReadyState] === states.CONNECTING +} + +/** + * @param {import('./websocket').WebSocket} ws + * @returns {boolean} + */ +function isEstablished (ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN +} + +/** + * @param {import('./websocket').WebSocket} ws + * @returns {boolean} + */ +function isClosing (ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING +} + +/** + * @param {import('./websocket').WebSocket} ws + * @returns {boolean} + */ +function isClosed (ws) { + return ws[kReadyState] === states.CLOSED +} + +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {(...args: ConstructorParameters) => Event} eventFactory + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent (e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { + // 1. If eventConstructor is not given, then let eventConstructor be Event. + + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + const event = eventFactory(e, eventInitDict) + + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. + + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event) +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived (ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { + return + } + + // 2. Let dataForEvent be determined by switching on type and binary type: + let dataForEvent + + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = utf8Decode(data) + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') + return + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]) + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = toArrayBuffer(data) + } + } + + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, createFastMessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }) +} + +function toArrayBuffer (buffer) { + if (buffer.byteLength === buffer.buffer.byteLength) { + return buffer.buffer + } + return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength) +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol (protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false + } + + for (let i = 0; i < protocol.length; ++i) { + const code = protocol.charCodeAt(i) + + if ( + code < 0x21 || // CTL, contains SP (0x20) and HT (0x09) + code > 0x7E || + code === 0x22 || // " + code === 0x28 || // ( + code === 0x29 || // ) + code === 0x2C || // , + code === 0x2F || // / + code === 0x3A || // : + code === 0x3B || // ; + code === 0x3C || // < + code === 0x3D || // = + code === 0x3E || // > + code === 0x3F || // ? + code === 0x40 || // @ + code === 0x5B || // [ + code === 0x5C || // \ + code === 0x5D || // ] + code === 0x7B || // { + code === 0x7D // } + ) { + return false + } + } + + return true +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode (code) { + if (code >= 1000 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ) + } + + return code >= 3000 && code <= 4999 +} + +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection (ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws + + controller.abort() + + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy() + } + + if (reason) { + // TODO: process.nextTick + fireEvent('error', ws, (type, init) => new ErrorEvent(type, init), { + error: new Error(reason), + message: reason + }) + } +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-5.5 + * @param {number} opcode + */ +function isControlFrame (opcode) { + return ( + opcode === opcodes.CLOSE || + opcode === opcodes.PING || + opcode === opcodes.PONG + ) +} + +function isContinuationFrame (opcode) { + return opcode === opcodes.CONTINUATION +} + +function isTextBinaryFrame (opcode) { + return opcode === opcodes.TEXT || opcode === opcodes.BINARY +} + +function isValidOpcode (opcode) { + return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode) +} + +/** + * Parses a Sec-WebSocket-Extensions header value. + * @param {string} extensions + * @returns {Map} + */ +// TODO(@Uzlopak, @KhafraDev): make compliant https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 +function parseExtensions (extensions) { + const position = { position: 0 } + const extensionList = new Map() + + while (position.position < extensions.length) { + const pair = collectASequenceOfCodePointsFast(';', extensions, position) + const [name, value = ''] = pair.split('=') + + extensionList.set( + removeHTTPWhitespace(name, true, false), + removeHTTPWhitespace(value, false, true) + ) + + position.position++ + } + + return extensionList +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc7692#section-7.1.2.2 + * @description "client-max-window-bits = 1*DIGIT" + * @param {string} value + */ +function isValidClientWindowBits (value) { + // Must have at least one character + if (value.length === 0) { + return false + } + + // Check all characters are ASCII digits + for (let i = 0; i < value.length; i++) { + const byte = value.charCodeAt(i) + + if (byte < 0x30 || byte > 0x39) { + return false + } + } + + // Check numeric range: zlib requires windowBits in range 8-15 + const num = Number.parseInt(value, 10) + return num >= 8 && num <= 15 +} + +// https://nodejs.org/api/intl.html#detecting-internationalization-support +const hasIntl = typeof process.versions.icu === 'string' +const fatalDecoder = hasIntl ? new TextDecoder('utf-8', { fatal: true }) : undefined + +/** + * Converts a Buffer to utf-8, even on platforms without icu. + * @param {Buffer} buffer + */ +const utf8Decode = hasIntl + ? fatalDecoder.decode.bind(fatalDecoder) + : function (buffer) { + if (isUtf8(buffer)) { + return buffer.toString('utf-8') + } + throw new TypeError('Invalid utf-8 received.') + } + +module.exports = { + isConnecting, + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isContinuationFrame, + isTextBinaryFrame, + isValidOpcode, + parseExtensions, + isValidClientWindowBits +} diff --git a/deps/npm/node_modules/undici/lib/web/websocket/websocket.js b/deps/npm/node_modules/undici/lib/web/websocket/websocket.js new file mode 100644 index 00000000000000..ccedb792169a10 --- /dev/null +++ b/deps/npm/node_modules/undici/lib/web/websocket/websocket.js @@ -0,0 +1,592 @@ +'use strict' + +const { webidl } = require('../fetch/webidl') +const { URLSerializer } = require('../fetch/data-url') +const { environmentSettingsObject } = require('../fetch/util') +const { staticPropertyDescriptors, states, sentCloseFrameState, sendHints } = require('./constants') +const { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser +} = require('./symbols') +const { + isConnecting, + isEstablished, + isClosing, + isValidSubprotocol, + fireEvent +} = require('./util') +const { establishWebSocketConnection, closeWebSocketConnection } = require('./connection') +const { ByteParser } = require('./receiver') +const { kEnumerableProperty, isBlobLike } = require('../../core/util') +const { getGlobalDispatcher } = require('../../global') +const { types } = require('node:util') +const { ErrorEvent, CloseEvent } = require('./events') +const { SendQueue } = require('./sender') + +// https://websockets.spec.whatwg.org/#interface-definition +class WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + } + + #bufferedAmount = 0 + #protocol = '' + #extensions = '' + + /** @type {SendQueue} */ + #sendQueue + + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor (url, protocols = []) { + super() + + webidl.util.markAsUncloneable(this) + + const prefix = 'WebSocket constructor' + webidl.argumentLengthCheck(arguments, 1, prefix) + + const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols, prefix, 'options') + + url = webidl.converters.USVString(url, prefix, 'url') + protocols = options.protocols + + // 1. Let baseURL be this's relevant settings object's API base URL. + const baseURL = environmentSettingsObject.settingsObject.baseUrl + + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + let urlRecord + + try { + urlRecord = new URL(url, baseURL) + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } + + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:' + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:' + } + + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + 'SyntaxError' + ) + } + + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError') + } + + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols] + } + + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + // 10. Set this's url to urlRecord. + this[kWebSocketURL] = new URL(urlRecord.href) + + // 11. Let client be this's relevant settings object. + const client = environmentSettingsObject.settingsObject + + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + client, + this, + (response, extensions) => this.#onConnectionEstablished(response, extensions), + options + ) + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + this[kReadyState] = WebSocket.CONNECTING + + this[kSentClose] = sentCloseFrameState.NOT_SENT + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + this[kBinaryType] = 'blob' + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close (code = undefined, reason = undefined) { + webidl.brandCheck(this, WebSocket) + + const prefix = 'WebSocket.close' + + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, prefix, 'code', { clamp: true }) + } + + if (reason !== undefined) { + reason = webidl.converters.USVString(reason, prefix, 'reason') + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError') + } + } + + let reasonByteLength = 0 + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason) + + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + 'SyntaxError' + ) + } + } + + // 3. Run the first matching steps from the following list: + closeWebSocketConnection(this, code, reason, reasonByteLength) + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send (data) { + webidl.brandCheck(this, WebSocket) + + const prefix = 'WebSocket.send' + webidl.argumentLengthCheck(arguments, 1, prefix) + + data = webidl.converters.WebSocketSendData(data, prefix, 'data') + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (isConnecting(this)) { + throw new DOMException('Sent before connected.', 'InvalidStateError') + } + + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return + } + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + const length = Buffer.byteLength(data) + + this.#bufferedAmount += length + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= length + }, sendHints.string) + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + this.#bufferedAmount += data.byteLength + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.byteLength + }, sendHints.arrayBuffer) + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + this.#bufferedAmount += data.byteLength + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.byteLength + }, sendHints.typedArray) + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + this.#bufferedAmount += data.size + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.size + }, sendHints.blob) + } + } + + get readyState () { + webidl.brandCheck(this, WebSocket) + + // The readyState getter steps are to return this's ready state. + return this[kReadyState] + } + + get bufferedAmount () { + webidl.brandCheck(this, WebSocket) + + return this.#bufferedAmount + } + + get url () { + webidl.brandCheck(this, WebSocket) + + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]) + } + + get extensions () { + webidl.brandCheck(this, WebSocket) + + return this.#extensions + } + + get protocol () { + webidl.brandCheck(this, WebSocket) + + return this.#protocol + } + + get onopen () { + webidl.brandCheck(this, WebSocket) + + return this.#events.open + } + + set onopen (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) + } + + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } + + get onerror () { + webidl.brandCheck(this, WebSocket) + + return this.#events.error + } + + set onerror (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) + } + + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } + + get onclose () { + webidl.brandCheck(this, WebSocket) + + return this.#events.close + } + + set onclose (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.close) { + this.removeEventListener('close', this.#events.close) + } + + if (typeof fn === 'function') { + this.#events.close = fn + this.addEventListener('close', fn) + } else { + this.#events.close = null + } + } + + get onmessage () { + webidl.brandCheck(this, WebSocket) + + return this.#events.message + } + + set onmessage (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } + + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } + + get binaryType () { + webidl.brandCheck(this, WebSocket) + + return this[kBinaryType] + } + + set binaryType (type) { + webidl.brandCheck(this, WebSocket) + + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob' + } else { + this[kBinaryType] = type + } + } + + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished (response, parsedExtensions) { + // processResponse is called when the "response's header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response + + const maxPayloadSize = this[kController]?.dispatcher?.webSocketOptions?.maxPayloadSize + + const parser = new ByteParser(this, parsedExtensions, { + maxPayloadSize + }) + parser.on('drain', onParserDrain) + parser.on('error', onParserError.bind(this)) + + response.socket.ws = this + this[kByteParser] = parser + + this.#sendQueue = new SendQueue(response.socket) + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + const extensions = response.headersList.get('sec-websocket-extensions') + + if (extensions !== null) { + this.#extensions = extensions + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + const protocol = response.headersList.get('sec-websocket-protocol') + + if (protocol !== null) { + this.#protocol = protocol + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this) + } +} + +// https://websockets.spec.whatwg.org/#dom-websocket-connecting +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED + +Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.DOMString +) + +webidl.converters['DOMString or sequence'] = function (V, prefix, argument) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V) + } + + return webidl.converters.DOMString(V, prefix, argument) +} + +// This implements the proposal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + defaultValue: () => new Array(0) + }, + { + key: 'dispatcher', + converter: webidl.converters.any, + defaultValue: () => getGlobalDispatcher() + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } +]) + +webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V) + } + + return { protocols: webidl.converters['DOMString or sequence'](V) } +} + +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V) + } + } + + return webidl.converters.USVString(V) +} + +function onParserDrain () { + this.ws[kResponse].socket.resume() +} + +function onParserError (err) { + let message + let code + + if (err instanceof CloseEvent) { + message = err.reason + code = err.code + } else { + message = err.message + } + + fireEvent('error', this, () => new ErrorEvent('error', { error: err, message })) + + closeWebSocketConnection(this, code) +} + +module.exports = { + WebSocket +} diff --git a/deps/npm/node_modules/undici/package.json b/deps/npm/node_modules/undici/package.json new file mode 100644 index 00000000000000..46cb9a8292618f --- /dev/null +++ b/deps/npm/node_modules/undici/package.json @@ -0,0 +1,160 @@ +{ + "name": "undici", + "version": "6.25.0", + "description": "An HTTP/1.1 client, written from scratch for Node.js", + "homepage": "https://undici.nodejs.org", + "bugs": { + "url": "https://github.com/nodejs/undici/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/nodejs/undici.git" + }, + "license": "MIT", + "contributors": [ + { + "name": "Daniele Belardi", + "url": "https://github.com/dnlup", + "author": true + }, + { + "name": "Ethan Arrowood", + "url": "https://github.com/ethan-arrowood", + "author": true + }, + { + "name": "Matteo Collina", + "url": "https://github.com/mcollina", + "author": true + }, + { + "name": "Matthew Aitken", + "url": "https://github.com/KhafraDev", + "author": true + }, + { + "name": "Robert Nagy", + "url": "https://github.com/ronag", + "author": true + }, + { + "name": "Szymon Marczak", + "url": "https://github.com/szmarczak", + "author": true + }, + { + "name": "Tomas Della Vedova", + "url": "https://github.com/delvedor", + "author": true + } + ], + "keywords": [ + "fetch", + "http", + "https", + "promise", + "request", + "curl", + "wget", + "xhr", + "whatwg" + ], + "main": "index.js", + "types": "index.d.ts", + "scripts": { + "build:node": "npx esbuild@0.19.10 index-fetch.js --bundle --platform=node --outfile=undici-fetch.js --define:esbuildDetection=1 --keep-names && node scripts/strip-comments.js", + "prebuild:wasm": "node build/wasm.js --prebuild", + "build:wasm": "node build/wasm.js --docker", + "lint": "standard | snazzy", + "lint:fix": "standard --fix | snazzy", + "test": "npm run test:javascript && cross-env NODE_V8_COVERAGE= npm run test:typescript", + "test:javascript": "node scripts/generate-pem && npm run test:unit && npm run test:node-fetch && npm run test:cache && npm run test:interceptors && npm run test:fetch && npm run test:cookies && npm run test:eventsource && npm run test:wpt && npm run test:websocket && npm run test:node-test && npm run test:jest", + "test:javascript:withoutintl": "node scripts/generate-pem && npm run test:unit && npm run test:node-fetch && npm run test:fetch:nobuild && npm run test:cache && npm run test:interceptors && npm run test:cookies && npm run test:eventsource:nobuild && npm run test:wpt:withoutintl && npm run test:node-test", + "test:busboy": "borp -p \"test/busboy/*.js\"", + "test:cache": "borp -p \"test/cache/*.js\"", + "test:cookies": "borp -p \"test/cookie/*.js\"", + "test:eventsource": "npm run build:node && npm run test:eventsource:nobuild", + "test:eventsource:nobuild": "borp --expose-gc -p \"test/eventsource/*.js\"", + "test:fuzzing": "node test/fuzzing/fuzzing.test.js", + "test:fetch": "npm run build:node && npm run test:fetch:nobuild", + "test:fetch:nobuild": "borp --timeout 180000 --expose-gc --concurrency 1 -p \"test/fetch/*.js\" && npm run test:webidl && npm run test:busboy", + "test:h2": "npm run test:h2:core && npm run test:h2:fetch", + "test:h2:core": "borp -p \"test/http2*.js\"", + "test:h2:fetch": "npm run build:node && borp -p \"test/fetch/http2*.js\"", + "test:interceptors": "borp -p \"test/interceptors/*.js\"", + "test:jest": "cross-env NODE_V8_COVERAGE= jest", + "test:unit": "borp --expose-gc -p \"test/*.js\"", + "test:node-fetch": "borp -p \"test/node-fetch/**/*.js\"", + "test:node-test": "borp -p \"test/node-test/**/*.js\"", + "test:tdd": "borp --expose-gc -p \"test/*.js\"", + "test:tdd:node-test": "borp -p \"test/node-test/**/*.js\" -w", + "test:typescript": "tsd && tsc test/imports/undici-import.ts --typeRoots ./types && tsc ./types/*.d.ts --noEmit --typeRoots ./types", + "test:webidl": "borp -p \"test/webidl/*.js\"", + "test:websocket": "borp -p \"test/websocket/*.js\"", + "test:websocket:autobahn": "node test/autobahn/client.js", + "test:websocket:autobahn:report": "node test/autobahn/report.js", + "test:wpt": "node test/wpt/start-fetch.mjs && node test/wpt/start-FileAPI.mjs && node test/wpt/start-mimesniff.mjs && node test/wpt/start-xhr.mjs && node test/wpt/start-websockets.mjs && node test/wpt/start-cacheStorage.mjs && node test/wpt/start-eventsource.mjs", + "test:wpt:withoutintl": "node test/wpt/start-fetch.mjs && node test/wpt/start-mimesniff.mjs && node test/wpt/start-xhr.mjs && node test/wpt/start-cacheStorage.mjs && node test/wpt/start-eventsource.mjs", + "coverage": "npm run coverage:clean && cross-env NODE_V8_COVERAGE=./coverage/tmp npm run test:javascript && npm run coverage:report", + "coverage:ci": "npm run coverage:clean && cross-env NODE_V8_COVERAGE=./coverage/tmp npm run test:javascript && npm run coverage:report:ci", + "coverage:clean": "node ./scripts/clean-coverage.js", + "coverage:report": "cross-env NODE_V8_COVERAGE= c8 report", + "coverage:report:ci": "c8 report", + "bench": "echo \"Error: Benchmarks have been moved to '/benchmarks'\" && exit 1", + "serve:website": "echo \"Error: Documentation has been moved to '/docs'\" && exit 1", + "prepare": "husky && node ./scripts/platform-shell.js" + }, + "devDependencies": { + "@fastify/busboy": "2.1.1", + "@matteo.collina/tspl": "^0.1.1", + "@metcoder95/https-pem": "^1.0.0", + "@sinonjs/fake-timers": "^11.1.0", + "@types/node": "~18.19.50", + "abort-controller": "^3.0.0", + "borp": "^0.15.0", + "c8": "^10.0.0", + "cross-env": "^7.0.3", + "dns-packet": "^5.4.0", + "fast-check": "^3.17.1", + "form-data": "^4.0.0", + "formdata-node": "^6.0.3", + "husky": "^9.0.7", + "jest": "^29.0.2", + "jsdom": "^24.0.0", + "node-forge": "^1.3.1", + "pre-commit": "^1.2.2", + "proxy": "^2.1.1", + "snazzy": "^9.0.0", + "standard": "^17.0.0", + "tsd": "^0.31.0", + "typescript": "^5.0.2", + "ws": "^8.11.0" + }, + "engines": { + "node": ">=18.17" + }, + "standard": { + "env": [ + "jest" + ], + "ignore": [ + "lib/llhttp/constants.js", + "lib/llhttp/utils.js", + "test/fixtures/wpt" + ] + }, + "tsd": { + "directory": "test/types", + "compilerOptions": { + "esModuleInterop": true, + "lib": [ + "esnext" + ] + } + }, + "jest": { + "testMatch": [ + "/test/jest/**" + ] + } +} diff --git a/deps/npm/node_modules/undici/scripts/strip-comments.js b/deps/npm/node_modules/undici/scripts/strip-comments.js new file mode 100644 index 00000000000000..9e4396a5dea8e6 --- /dev/null +++ b/deps/npm/node_modules/undici/scripts/strip-comments.js @@ -0,0 +1,8 @@ +'use strict' + +const { readFileSync, writeFileSync } = require('node:fs') +const { transcode } = require('node:buffer') + +const buffer = transcode(readFileSync('./undici-fetch.js'), 'utf8', 'latin1') + +writeFileSync('./undici-fetch.js', buffer.toString('latin1')) diff --git a/deps/npm/package.json b/deps/npm/package.json index 022dfee6f4bd91..67186d5c05daa7 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "11.12.1", + "version": "11.13.0", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -52,7 +52,7 @@ }, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.4.2", + "@npmcli/arborist": "^9.4.3", "@npmcli/config": "^10.8.1", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", @@ -74,24 +74,24 @@ "hosted-git-info": "^9.0.2", "ini": "^6.0.0", "init-package-json": "^8.2.5", - "is-cidr": "^6.0.3", + "is-cidr": "^6.0.4", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.5", - "libnpmexec": "^10.2.5", - "libnpmfund": "^7.0.19", + "libnpmdiff": "^8.1.6", + "libnpmexec": "^10.2.6", + "libnpmfund": "^7.0.20", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.5", + "libnpmpack": "^9.1.6", "libnpmpublish": "^11.1.3", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", "libnpmversion": "^8.0.3", "make-fetch-happen": "^15.0.5", - "minimatch": "^10.2.4", + "minimatch": "^10.2.5", "minipass": "^7.1.3", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^12.2.0", + "node-gyp": "^12.3.0", "nopt": "^9.0.0", "npm-audit-report": "^7.0.0", "npm-install-checks": "^8.0.0", @@ -110,7 +110,7 @@ "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.11", + "tar": "^7.5.13", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", @@ -196,7 +196,7 @@ "ajv-formats": "^3.0.1", "ajv-formats-draft2019": "^1.6.1", "cli-table3": "^0.6.4", - "diff": "^8.0.3", + "diff": "^8.0.4", "nock": "^13.4.0", "npm-packlist": "^10.0.4", "remark": "^15.0.1", @@ -249,7 +249,8 @@ "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", "version": "4.29.0", - "content": "./scripts/template-oss/root.js" + "content": "./scripts/template-oss/root.js", + "updateNpm": false }, "license": "Artistic-2.0", "engines": { diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs index dbdcba2d7c3218..3db9e9d2473285 100644 --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs @@ -81,6 +81,7 @@ Object { "sit": "install-ci-test", "t": "test", "tst": "test", + "u": "update", "udpate": "update", "un": "uninstall", "unlink": "uninstall", @@ -6071,14 +6072,14 @@ Options: When set file: protocol dependencies will be packed and installed as -aliases: up, upgrade, udpate +aliases: u, up, upgrade, udpate Run "npm help update" for more info \`\`\`bash npm update [...] -aliases: up, upgrade, udpate +aliases: u, up, upgrade, udpate \`\`\` #### \`save\` diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm index 07cc9e9cbf3872..ebcc78c024f28c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4327,6 +4327,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7018,6 +7021,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h index 05ad16c7cc7f0a..99d3f77c501a7e 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue Jan 27 17:25:31 2026 UTC" +#define DATE "built on: Tue Apr 7 19:05:06 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm index 16cbc1eba9a7bf..887af11925a074 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4327,6 +4327,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7018,6 +7021,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h index bbc0f092862b9c..e86d72158d72ae 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue Jan 27 17:25:49 2026 UTC" +#define DATE "built on: Tue Apr 7 19:05:23 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm index 50be625354db51..1a536897cfb686 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -232,7 +232,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4269,6 +4269,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6960,6 +6963,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12177,6 +12183,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14872,6 +14894,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17563,6 +17588,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19604,6 +19632,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23232,6 +23261,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h index 898e10558fbee7..4a478e9d240c50 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Tue Jan 27 17:26:06 2026 UTC" +#define DATE "built on: Tue Apr 7 19:05:40 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm index dce49bb95f9a4c..f5c6dd504e6cd0 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4334,6 +4334,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7025,6 +7028,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12314,6 +12320,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15009,6 +15031,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17700,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19741,6 +19769,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23372,6 +23401,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h index 874c5ef38eb7c0..fe7cab5b3a016f 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue Jan 27 17:26:21 2026 UTC" +#define DATE "built on: Tue Apr 7 19:05:56 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm index 767a367eefd07c..478035f0b82b57 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4334,6 +4334,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7025,6 +7028,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12314,6 +12320,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15009,6 +15031,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17700,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19741,6 +19769,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23372,6 +23401,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h index 62b37842141c4f..aebef2827610b2 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue Jan 27 17:26:46 2026 UTC" +#define DATE "built on: Tue Apr 7 19:06:20 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm index 9556fffc9896b6..334ad17fa2349b 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -232,7 +232,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -286,11 +286,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4270,6 +4270,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6961,6 +6964,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12178,6 +12184,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14873,6 +14895,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17564,6 +17589,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19605,6 +19633,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23233,6 +23262,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h index f2723e8e33b750..5f424e6b046144 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Tue Jan 27 17:27:07 2026 UTC" +#define DATE "built on: Tue Apr 7 19:06:40 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm index 59d9d37cad68a4..e60dc8712c15f1 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm @@ -179,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -244,7 +244,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -297,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -316,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55bb5bcbbe30)", + "RANLIB" => "CODE(0x55f511b27e00)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4369,6 +4369,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7060,6 +7063,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12310,6 +12316,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15005,6 +15027,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17696,6 +17721,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19753,6 +19781,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23390,6 +23419,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h index 7b4d4fdd28ded0..ff9a3575364f9a 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:39:36 2026 UTC" +#define DATE "built on: Tue Apr 7 19:19:01 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm index a4016be69e646a..3b583a1604fdef 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm @@ -179,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -244,7 +244,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -297,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -316,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x56558750c810)", + "RANLIB" => "CODE(0x55d87aeabb20)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4369,6 +4369,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7060,6 +7063,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12310,6 +12316,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15005,6 +15027,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17696,6 +17721,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19753,6 +19781,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23390,6 +23419,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h index ac3f33df3c0a86..b2f63d36318912 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:39:51 2026 UTC" +#define DATE "built on: Tue Apr 7 19:19:16 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm index d7d59ee06e3f22..1a6e3cf8c2946c 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm @@ -177,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -243,7 +243,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -297,11 +297,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -316,7 +316,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x5592ffbf0880)", + "RANLIB" => "CODE(0x55edcbaf5480)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4311,6 +4311,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7002,6 +7005,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12230,6 +12236,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14925,6 +14947,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17616,6 +17641,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19673,6 +19701,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23307,6 +23336,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h index 1fb6ab1a1a46ed..ff9ca9189277d6 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:40:06 2026 UTC" +#define DATE "built on: Tue Apr 7 19:19:30 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm index 2e30b8f26a6e7d..adb06078140fb2 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm @@ -177,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -241,7 +241,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -295,11 +295,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64-ARM", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -312,7 +312,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55999cb2b9a0)", + "RANLIB" => "CODE(0x561c37957ce0)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4303,6 +4303,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6994,6 +6997,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12222,6 +12228,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14917,6 +14939,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17608,6 +17633,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19665,6 +19693,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23299,6 +23328,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h index 5ba5c0abed2166..b6a6162def622a 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: VC-WIN64-ARM" -#define DATE "built on: Tue Jan 27 17:40:20 2026 UTC" +#define DATE "built on: Tue Apr 7 19:19:44 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm index 8d8b179464192f..98c8ba4d9af990 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm @@ -181,7 +181,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -246,7 +246,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -299,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -318,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55b7c154fd80)", + "RANLIB" => "CODE(0x556ba0b03270)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4378,6 +4378,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7069,6 +7072,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12359,6 +12365,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15054,6 +15076,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17745,6 +17770,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19802,6 +19830,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23439,6 +23468,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h index b4f1193cd628b9..5cfa6f62379bc6 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:38:37 2026 UTC" +#define DATE "built on: Tue Apr 7 19:18:02 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm index 0df1592755c740..3d067b6fdbac26 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm @@ -181,7 +181,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -246,7 +246,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -299,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -318,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55db31fd7f80)", + "RANLIB" => "CODE(0x558ad9c80070)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4378,6 +4378,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7069,6 +7072,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12359,6 +12365,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15054,6 +15076,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17745,6 +17770,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19802,6 +19830,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23439,6 +23468,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h index 6278671a045897..886119aa21e00c 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:39:00 2026 UTC" +#define DATE "built on: Tue Apr 7 19:18:25 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm index b5c4c040647e0a..c82d9c98a1557a 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm @@ -179,7 +179,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -245,7 +245,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -299,11 +299,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "lib", @@ -318,7 +318,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55c0d782bbd0)", + "RANLIB" => "CODE(0x55ae81cdc6d0)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -4314,6 +4314,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7005,6 +7008,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12233,6 +12239,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14928,6 +14950,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17619,6 +17644,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19676,6 +19704,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23310,6 +23339,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h index 96dee6a28bea61..4381a47b97f43a 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Tue Jan 27 17:39:22 2026 UTC" +#define DATE "built on: Tue Apr 7 19:18:47 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h index 8f3825a2402e6e..5db0024167c334 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h index d99943f3e9a9bf..f55a17e73bb202 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm index d2888ae4fba76d..b28acdc98d8d93 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar -X64", @@ -4310,6 +4310,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7001,6 +7004,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h index 6a69ea5fecf4fc..2ca2d52d9c77f1 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Tue Jan 27 17:24:42 2026 UTC" +#define DATE "built on: Tue Apr 7 19:04:17 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm index 2c4bb3fab9c880..3df7335fbc3a7f 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar -X64", @@ -4310,6 +4310,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7001,6 +7004,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h index 732b1fe844d1b0..f2a8312f30e05b 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Tue Jan 27 17:24:59 2026 UTC" +#define DATE "built on: Tue Apr 7 19:04:33 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm index e5347ae269c32d..ff833db0fd8680 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -235,7 +235,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar -X64", @@ -4273,6 +4273,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6964,6 +6967,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12180,6 +12186,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14875,6 +14897,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17566,6 +17591,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19607,6 +19635,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23235,6 +23264,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h index fc29be8278bcf0..991de4416541d1 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Tue Jan 27 17:25:15 2026 UTC" +#define DATE "built on: Tue Apr 7 19:04:50 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm index 065a48272d1b33..d703d0ebfdd8ae 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4330,6 +4330,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7021,6 +7024,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12250,6 +12256,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14945,6 +14967,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17636,6 +17661,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19657,6 +19685,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23280,6 +23309,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h index 03bcb7da85a93b..8ac5a1b3f5103b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue Jan 27 17:28:25 2026 UTC" +#define DATE "built on: Tue Apr 7 19:07:55 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm index 60224210b8b73d..1b8ef6c2a9931e 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4330,6 +4330,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7021,6 +7024,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12250,6 +12256,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14945,6 +14967,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17636,6 +17661,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19657,6 +19685,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23280,6 +23309,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h index b83b1cd54b62e9..16f692200e0af8 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue Jan 27 17:28:42 2026 UTC" +#define DATE "built on: Tue Apr 7 19:08:12 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm index 73231b28932e34..854c9aa62ea965 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -235,7 +235,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4272,6 +4272,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6963,6 +6966,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12170,6 +12176,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14865,6 +14887,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17556,6 +17581,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19577,6 +19605,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23197,6 +23226,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h index b9a7699af252cd..013907ee15de5b 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Tue Jan 27 17:28:59 2026 UTC" +#define DATE "built on: Tue Apr 7 19:08:28 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm index c9bdc194c16688..00d1fba6f036fd 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4320,6 +4320,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7011,6 +7014,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19664,6 +19692,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23389,6 +23418,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h index c1735da364a496..7d0987ff1e6ff4 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue Jan 27 17:29:14 2026 UTC" +#define DATE "built on: Tue Apr 7 19:08:44 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/sm4/vpsm4_ex-armv8.S b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/sm4/vpsm4_ex-armv8.S index 6d85197fb635c7..180bfac7984a7b 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/sm4/vpsm4_ex-armv8.S +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/sm4/vpsm4_ex-armv8.S @@ -62,12 +62,13 @@ _vpsm4_ex_set_key: AARCH64_VALID_CALL_TARGET ld1 {v5.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v5.16b,v5.16b #endif @@ -639,12 +640,13 @@ _vpsm4_ex_encrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -781,12 +783,13 @@ _vpsm4_ex_decrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -929,12 +932,13 @@ _vpsm4_ex_ecb_encrypt: stp d14,d15,[sp,#48] stp x29,x30,[sp,#64] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] Lecb_8_blocks_process: cmp w2,#8 b.lt Lecb_4_blocks_process @@ -1177,12 +1181,13 @@ _vpsm4_ex_cbc_encrypt: AARCH64_VALID_CALL_TARGET lsr x2,x2,4 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cbz w5,Ldec ld1 {v3.4s},[x4] Lcbc_4_blocks_enc: @@ -2169,12 +2174,13 @@ _vpsm4_ex_ctr32_encrypt_blocks: rev32 v3.16b,v3.16b #endif adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cmp w2,#1 b.ne 1f // fast processing for one single block without @@ -2569,12 +2575,13 @@ _vpsm4_ex_xts_encrypt_gb: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif @@ -3573,12 +3580,13 @@ _vpsm4_ex_xts_encrypt: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm index 62bce20835c4af..c363099c884798 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4320,6 +4320,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7011,6 +7014,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19664,6 +19692,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23389,6 +23418,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h index fe5b798f400a4a..69cf1be7d69f39 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue Jan 27 17:29:31 2026 UTC" +#define DATE "built on: Tue Apr 7 19:09:01 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S index 6d85197fb635c7..180bfac7984a7b 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S @@ -62,12 +62,13 @@ _vpsm4_ex_set_key: AARCH64_VALID_CALL_TARGET ld1 {v5.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v5.16b,v5.16b #endif @@ -639,12 +640,13 @@ _vpsm4_ex_encrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -781,12 +783,13 @@ _vpsm4_ex_decrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -929,12 +932,13 @@ _vpsm4_ex_ecb_encrypt: stp d14,d15,[sp,#48] stp x29,x30,[sp,#64] adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] Lecb_8_blocks_process: cmp w2,#8 b.lt Lecb_4_blocks_process @@ -1177,12 +1181,13 @@ _vpsm4_ex_cbc_encrypt: AARCH64_VALID_CALL_TARGET lsr x2,x2,4 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cbz w5,Ldec ld1 {v3.4s},[x4] Lcbc_4_blocks_enc: @@ -2169,12 +2174,13 @@ _vpsm4_ex_ctr32_encrypt_blocks: rev32 v3.16b,v3.16b #endif adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cmp w2,#1 b.ne 1f // fast processing for one single block without @@ -2569,12 +2575,13 @@ _vpsm4_ex_xts_encrypt_gb: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif @@ -3573,12 +3580,13 @@ _vpsm4_ex_xts_encrypt: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, Lsbox_magic@PAGE - ldr q26, [x9, Lsbox_magic@PAGEOFF] - ldr q27, [x9, Lsbox_magic@PAGEOFF+16] - ldr q28, [x9, Lsbox_magic@PAGEOFF+32] - ldr q29, [x9, Lsbox_magic@PAGEOFF+48] - ldr q30, [x9, Lsbox_magic@PAGEOFF+64] - ldr q31, [x9, Lsbox_magic@PAGEOFF+80] + add x9, x9, Lsbox_magic@PAGEOFF + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm index 4223dbfc9e2e17..36936786584dd5 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -235,7 +235,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4272,6 +4272,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6963,6 +6966,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12170,6 +12176,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14865,6 +14887,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17556,6 +17581,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19577,6 +19605,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23197,6 +23226,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h index 99c2e287d6b0b6..04be5237ab34d9 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Tue Jan 27 17:29:48 2026 UTC" +#define DATE "built on: Tue Apr 7 19:09:18 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm index 1c91ad90488d68..33e55bc9e96b7d 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4336,6 +4336,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7027,6 +7030,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12306,6 +12312,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15001,6 +15023,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17692,6 +17717,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19713,6 +19741,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23336,6 +23365,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h index 9e25e370f1ca07..49ec3dc29ac3f7 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue Jan 27 17:27:23 2026 UTC" +#define DATE "built on: Tue Apr 7 19:06:56 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm index bfb76101a6d0e3..0f0ed82ad1fb23 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4336,6 +4336,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7027,6 +7030,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12306,6 +12312,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15001,6 +15023,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17692,6 +17717,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19713,6 +19741,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23336,6 +23365,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h index 8b2ad2a1136895..59934514dafd96 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue Jan 27 17:27:50 2026 UTC" +#define DATE "built on: Tue Apr 7 19:07:20 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm index b7899dd4f09380..1c61457805073d 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -235,7 +235,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -289,11 +289,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4272,6 +4272,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6963,6 +6966,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12170,6 +12176,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14865,6 +14887,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17556,6 +17581,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19577,6 +19605,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23197,6 +23226,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h index b715619fa10376..d0a6ef3027ce8c 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Tue Jan 27 17:28:10 2026 UTC" +#define DATE "built on: Tue Apr 7 19:07:40 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm index d845b337ee2fba..ad05893bc0b47d 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4326,6 +4326,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7017,6 +7020,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12272,6 +12278,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14967,6 +14989,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17658,6 +17683,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19699,6 +19727,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23432,6 +23461,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h index b4cffed5bc81e7..ed7cb59ade0a35 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue Jan 27 17:30:04 2026 UTC" +#define DATE "built on: Tue Apr 7 19:09:33 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/sm4/vpsm4_ex-armv8.S b/deps/openssl/config/archs/linux-aarch64/asm/crypto/sm4/vpsm4_ex-armv8.S index 68bb5d54d5fbfb..009c6e71d1b62c 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/sm4/vpsm4_ex-armv8.S +++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/sm4/vpsm4_ex-armv8.S @@ -62,12 +62,13 @@ _vpsm4_ex_set_key: AARCH64_VALID_CALL_TARGET ld1 {v5.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v5.16b,v5.16b #endif @@ -639,12 +640,13 @@ vpsm4_ex_encrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -781,12 +783,13 @@ vpsm4_ex_decrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -929,12 +932,13 @@ vpsm4_ex_ecb_encrypt: stp d14,d15,[sp,#48] stp x29,x30,[sp,#64] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] .Lecb_8_blocks_process: cmp w2,#8 b.lt .Lecb_4_blocks_process @@ -1177,12 +1181,13 @@ vpsm4_ex_cbc_encrypt: AARCH64_VALID_CALL_TARGET lsr x2,x2,4 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cbz w5,.Ldec ld1 {v3.4s},[x4] .Lcbc_4_blocks_enc: @@ -2169,12 +2174,13 @@ vpsm4_ex_ctr32_encrypt_blocks: rev32 v3.16b,v3.16b #endif adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cmp w2,#1 b.ne 1f // fast processing for one single block without @@ -2569,12 +2575,13 @@ vpsm4_ex_xts_encrypt_gb: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif @@ -3573,12 +3580,13 @@ vpsm4_ex_xts_encrypt: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm index 66c967c249ff9a..f66045efd18d31 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4326,6 +4326,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7017,6 +7020,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12272,6 +12278,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14967,6 +14989,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17658,6 +17683,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19699,6 +19727,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23432,6 +23461,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h index 9ed5b2ce877ce4..6704a8202dca0a 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue Jan 27 17:30:21 2026 UTC" +#define DATE "built on: Tue Apr 7 19:09:51 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S index 68bb5d54d5fbfb..009c6e71d1b62c 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/sm4/vpsm4_ex-armv8.S @@ -62,12 +62,13 @@ _vpsm4_ex_set_key: AARCH64_VALID_CALL_TARGET ld1 {v5.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v5.16b,v5.16b #endif @@ -639,12 +640,13 @@ vpsm4_ex_encrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -781,12 +783,13 @@ vpsm4_ex_decrypt: AARCH64_VALID_CALL_TARGET ld1 {v4.4s},[x0] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v4.16b,v4.16b #endif @@ -929,12 +932,13 @@ vpsm4_ex_ecb_encrypt: stp d14,d15,[sp,#48] stp x29,x30,[sp,#64] adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] .Lecb_8_blocks_process: cmp w2,#8 b.lt .Lecb_4_blocks_process @@ -1177,12 +1181,13 @@ vpsm4_ex_cbc_encrypt: AARCH64_VALID_CALL_TARGET lsr x2,x2,4 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cbz w5,.Ldec ld1 {v3.4s},[x4] .Lcbc_4_blocks_enc: @@ -2169,12 +2174,13 @@ vpsm4_ex_ctr32_encrypt_blocks: rev32 v3.16b,v3.16b #endif adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] cmp w2,#1 b.ne 1f // fast processing for one single block without @@ -2569,12 +2575,13 @@ vpsm4_ex_xts_encrypt_gb: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif @@ -3573,12 +3580,13 @@ vpsm4_ex_xts_encrypt: ld1 {v16.4s}, [x5] mov x3,x27 adrp x9, .Lsbox_magic - ldr q26, [x9, #:lo12:.Lsbox_magic] - ldr q27, [x9, #:lo12:.Lsbox_magic+16] - ldr q28, [x9, #:lo12:.Lsbox_magic+32] - ldr q29, [x9, #:lo12:.Lsbox_magic+48] - ldr q30, [x9, #:lo12:.Lsbox_magic+64] - ldr q31, [x9, #:lo12:.Lsbox_magic+80] + add x9, x9, #:lo12:.Lsbox_magic + ldr q26, [x9] + ldr q27, [x9, 16] + ldr q28, [x9, 32] + ldr q29, [x9, 48] + ldr q30, [x9, 64] + ldr q31, [x9, 80] #ifndef __AARCH64EB__ rev32 v16.16b,v16.16b #endif diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm index c85339b03a0ca2..bc5e6efdca38c0 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h index 2bb20f876c4177..d0c32d9ef1c5ae 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Tue Jan 27 17:30:38 2026 UTC" +#define DATE "built on: Tue Apr 7 19:10:08 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm index 223cceec571793..cc72c7448efdc9 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4318,6 +4318,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7009,6 +7012,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12250,6 +12256,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14945,6 +14967,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17636,6 +17661,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19677,6 +19705,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23392,6 +23421,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h index c3eb6402fbe4a9..8d75df033ba2dd 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue Jan 27 17:30:54 2026 UTC" +#define DATE "built on: Tue Apr 7 19:10:23 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm index 85b110f31e9aa6..4ec442fe263ca2 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4318,6 +4318,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7009,6 +7012,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12250,6 +12256,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14945,6 +14967,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17636,6 +17661,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19677,6 +19705,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23392,6 +23421,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h index 90d9c773b9f67a..32be2e735c238d 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue Jan 27 17:31:10 2026 UTC" +#define DATE "built on: Tue Apr 7 19:10:40 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm index 61afcf2f942ec9..1bb6e5264afef6 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h index 15aea0559d9f30..c018dd20913f3c 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Tue Jan 27 17:31:27 2026 UTC" +#define DATE "built on: Tue Apr 7 19:10:56 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm index 206fe8984058cf..13574e29c8c56f 100644 --- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4335,6 +4335,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7026,6 +7029,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12264,6 +12270,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14959,6 +14981,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17650,6 +17675,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19691,6 +19719,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23322,6 +23351,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h index 124c1e5ee396c4..bbe4358843853b 100644 --- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue Jan 27 17:31:42 2026 UTC" +#define DATE "built on: Tue Apr 7 19:11:12 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm index 646acc4ae1318e..8c4b6db944851c 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4335,6 +4335,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7026,6 +7029,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12264,6 +12270,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14959,6 +14981,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17650,6 +17675,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19691,6 +19719,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23322,6 +23351,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h index 58146a1131842d..bef00a47824d29 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue Jan 27 17:32:00 2026 UTC" +#define DATE "built on: Tue Apr 7 19:11:29 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm index bec6a2c5c780da..421a6bdf43bf60 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4277,6 +4277,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6968,6 +6971,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12184,6 +12190,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14879,6 +14901,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17570,6 +17595,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19611,6 +19639,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23239,6 +23268,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h index 16d317d328f465..88ded8dd83be85 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Tue Jan 27 17:32:16 2026 UTC" +#define DATE "built on: Tue Apr 7 19:11:45 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm index e30041bb7dc374..2315a51465a2b5 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4315,6 +4315,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7006,6 +7009,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12265,6 +12271,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14960,6 +14982,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17651,6 +17676,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19692,6 +19720,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23323,6 +23352,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h index 98640a95514a37..849e97f9b89560 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue Jan 27 17:33:32 2026 UTC" +#define DATE "built on: Tue Apr 7 19:13:01 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/modes/aes-gcm-ppc.s b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/modes/aes-gcm-ppc.s index 75a0ad3471084f..a7fbc302b74584 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/modes/aes-gcm-ppc.s +++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/modes/aes-gcm-ppc.s @@ -354,7 +354,6 @@ ################################################################################ .align 4 aes_gcm_crypt_1x: -.localentry aes_gcm_crypt_1x,0 cmpdi 5, 16 bge __More_1x @@ -437,7 +436,6 @@ __Encrypt_1x: ################################################################################ .align 4 __Process_partial: -.localentry __Process_partial,0 # create partial mask vspltisb 16, -1 @@ -509,7 +507,6 @@ __Encrypt_partial: .global ppc_aes_gcm_encrypt .align 5 ppc_aes_gcm_encrypt: -.localentry ppc_aes_gcm_encrypt,0 SAVE_REGS LOAD_HASH_TABLE @@ -697,7 +694,6 @@ __Process_more_enc: .global ppc_aes_gcm_decrypt .align 5 ppc_aes_gcm_decrypt: -.localentry ppc_aes_gcm_decrypt, 0 SAVE_REGS LOAD_HASH_TABLE @@ -977,7 +973,6 @@ __Process_more_dec: .size ppc_aes_gcm_decrypt,.-ppc_aes_gcm_decrypt aes_gcm_out: -.localentry aes_gcm_out,0 mr 3, 11 # return count diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm index 4dbe3704cbf55d..2c4f33a5a738ee 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4315,6 +4315,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7006,6 +7009,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12265,6 +12271,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14960,6 +14982,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17651,6 +17676,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19692,6 +19720,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23323,6 +23352,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h index b08cdc7d0de775..7aacaefda5bda3 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue Jan 27 17:33:48 2026 UTC" +#define DATE "built on: Tue Apr 7 19:13:18 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/modes/aes-gcm-ppc.s b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/modes/aes-gcm-ppc.s index 75a0ad3471084f..a7fbc302b74584 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/modes/aes-gcm-ppc.s +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/modes/aes-gcm-ppc.s @@ -354,7 +354,6 @@ ################################################################################ .align 4 aes_gcm_crypt_1x: -.localentry aes_gcm_crypt_1x,0 cmpdi 5, 16 bge __More_1x @@ -437,7 +436,6 @@ __Encrypt_1x: ################################################################################ .align 4 __Process_partial: -.localentry __Process_partial,0 # create partial mask vspltisb 16, -1 @@ -509,7 +507,6 @@ __Encrypt_partial: .global ppc_aes_gcm_encrypt .align 5 ppc_aes_gcm_encrypt: -.localentry ppc_aes_gcm_encrypt,0 SAVE_REGS LOAD_HASH_TABLE @@ -697,7 +694,6 @@ __Process_more_enc: .global ppc_aes_gcm_decrypt .align 5 ppc_aes_gcm_decrypt: -.localentry ppc_aes_gcm_decrypt, 0 SAVE_REGS LOAD_HASH_TABLE @@ -977,7 +973,6 @@ __Process_more_dec: .size ppc_aes_gcm_decrypt,.-ppc_aes_gcm_decrypt aes_gcm_out: -.localentry aes_gcm_out,0 mr 3, 11 # return count diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm index 94e94cb3138cf8..738b1aee30c50d 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h index 2c9b95b29285c2..4a97d7b9307115 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Tue Jan 27 17:34:05 2026 UTC" +#define DATE "built on: Tue Apr 7 19:13:35 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm index 85274e2d27fce8..30a197bb9b3207 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4343,6 +4343,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7034,6 +7037,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12322,6 +12328,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15017,6 +15039,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17708,6 +17733,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19749,6 +19777,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23380,6 +23409,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h index fc4e10a034e732..1152ba3b6caa40 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue Jan 27 17:32:32 2026 UTC" +#define DATE "built on: Tue Apr 7 19:12:01 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm index fccadf2e3cbd82..dfca30ea1d045c 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4343,6 +4343,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7034,6 +7037,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12322,6 +12328,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15017,6 +15039,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17708,6 +17733,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19749,6 +19777,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23380,6 +23409,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h index f4e0d457d0d6be..eae5790f199fdb 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue Jan 27 17:32:56 2026 UTC" +#define DATE "built on: Tue Apr 7 19:12:25 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm index baf6a56920ace0..161cd9cce0e082 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4279,6 +4279,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6970,6 +6973,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12186,6 +12192,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14881,6 +14903,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17572,6 +17597,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19613,6 +19641,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23241,6 +23270,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h index 2d933921f9f9a8..bda8e7b06883fd 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Tue Jan 27 17:33:16 2026 UTC" +#define DATE "built on: Tue Apr 7 19:12:45 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm index 7de859892b7645..8c5575cac107e8 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4325,6 +4325,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7016,6 +7019,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12248,6 +12254,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14943,6 +14965,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17634,6 +17659,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19675,6 +19703,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23360,6 +23389,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h index 3470be7b84152f..6e95e0608cf62a 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue Jan 27 17:34:21 2026 UTC" +#define DATE "built on: Tue Apr 7 19:13:50 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/sha/keccak1600-s390x.S b/deps/openssl/config/archs/linux32-s390x/asm/crypto/sha/keccak1600-s390x.S index 7be19ad92c8149..bd945c5b788b05 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/sha/keccak1600-s390x.S +++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/sha/keccak1600-s390x.S @@ -1,4 +1,5 @@ .text +.machine "z10" .type __KeccakF1600,@function .align 32 diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm index 5f40976d40f264..ca37890f34b167 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4325,6 +4325,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7016,6 +7019,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12248,6 +12254,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14943,6 +14965,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17634,6 +17659,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19675,6 +19703,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23360,6 +23389,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h index 28edaa10ca1bca..2c916502dc85be 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue Jan 27 17:34:38 2026 UTC" +#define DATE "built on: Tue Apr 7 19:14:07 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S index 7be19ad92c8149..bd945c5b788b05 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S @@ -1,4 +1,5 @@ .text +.machine "z10" .type __KeccakF1600,@function .align 32 diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm index abf158780b3cbc..b876da23737970 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h index 600638f1c588c9..aef67784a3ef28 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Tue Jan 27 17:34:55 2026 UTC" +#define DATE "built on: Tue Apr 7 19:14:23 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm index 2481e514a5a791..fe5d525e19019a 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-loongarch64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h index 52b30a10aeb920..3db64da9d0caf9 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-loongarch64" -#define DATE "built on: Tue Jan 27 17:40:49 2026 UTC" +#define DATE "built on: Tue Apr 7 19:20:14 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm index 122ac1ff7ca7a1..4b790af3772d23 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm @@ -177,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -240,7 +240,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -293,11 +293,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4303,6 +4303,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6994,6 +6997,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12219,6 +12225,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14914,6 +14936,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17605,6 +17630,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19646,6 +19674,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23316,6 +23345,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h index 4b723329e359a7..d54d57c2f715dc 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue Jan 27 17:35:59 2026 UTC" +#define DATE "built on: Tue Apr 7 19:15:27 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm index b55a7bc5230475..3b4b2b857bfe16 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm @@ -177,7 +177,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -240,7 +240,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -293,11 +293,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4303,6 +4303,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6994,6 +6997,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12219,6 +12225,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14914,6 +14936,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17605,6 +17630,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19646,6 +19674,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23316,6 +23345,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h index adb2f7a5aa7113..9779ee7a814ff1 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue Jan 27 17:36:15 2026 UTC" +#define DATE "built on: Tue Apr 7 19:15:43 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm index ef05948ef5a386..d5b7b30c41aac1 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4279,6 +4279,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6970,6 +6973,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12186,6 +12192,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14881,6 +14903,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17572,6 +17597,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19613,6 +19641,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23241,6 +23270,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h index 35e8b35d52d496..c4c71d7b32d9e3 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Tue Jan 27 17:36:31 2026 UTC" +#define DATE "built on: Tue Apr 7 19:15:58 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm index a2910ad5f3983a..af3f3bcea8034d 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-riscv64", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4278,6 +4278,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6969,6 +6972,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12185,6 +12191,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14880,6 +14902,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17571,6 +17596,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19612,6 +19640,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23240,6 +23269,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h index fbbfef9128b564..2c36ef23b4cde0 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-riscv64" -#define DATE "built on: Tue Jan 27 17:40:34 2026 UTC" +#define DATE "built on: Tue Apr 7 19:19:58 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm index 25f15f1bd57f18..06e8c7652995e3 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4330,6 +4330,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7021,6 +7024,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12267,6 +12273,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14962,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17653,6 +17678,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19694,6 +19722,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23379,6 +23408,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h index efc8b6fe70f6b8..f81422913ea933 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue Jan 27 17:35:10 2026 UTC" +#define DATE "built on: Tue Apr 7 19:14:39 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S index 9f254bcf300eea..0d18559814a32f 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S +++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S @@ -1,4 +1,5 @@ .text +.machine "z10" .type __KeccakF1600,@function .align 32 diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm index b7b1db5b5f69be..3cfdb76ad1e5cd 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm @@ -174,7 +174,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -237,7 +237,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4330,6 +4330,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7021,6 +7024,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12267,6 +12273,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14962,6 +14984,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17653,6 +17678,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19694,6 +19722,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23379,6 +23408,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h index 6e4794f5b7dff4..6794cfbc32a791 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue Jan 27 17:35:27 2026 UTC" +#define DATE "built on: Tue Apr 7 19:14:55 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S index 9f254bcf300eea..0d18559814a32f 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/sha/keccak1600-s390x.S @@ -1,4 +1,5 @@ .text +.machine "z10" .type __KeccakF1600,@function .align 32 diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm index 56adf229251f92..9bae12b922d18c 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm @@ -172,7 +172,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -236,7 +236,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -290,11 +290,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4279,6 +4279,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6970,6 +6973,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12186,6 +12192,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14881,6 +14903,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17572,6 +17597,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19613,6 +19641,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23241,6 +23270,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h index 8727d3480a87fb..0723b8ef27b849 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Tue Jan 27 17:35:43 2026 UTC" +#define DATE "built on: Tue Apr 7 19:15:12 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm index cd0615821bb151..32a4356bfb7f23 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -234,7 +234,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4328,6 +4328,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7019,6 +7022,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h index 7e76ec6fb8f79c..671cf388f22c4b 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue Jan 27 17:36:47 2026 UTC" +#define DATE "built on: Tue Apr 7 19:16:14 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm index 97deb65cb60908..13ef5f37c44d47 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -234,7 +234,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4328,6 +4328,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7019,6 +7022,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12257,6 +12263,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14952,6 +14974,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17643,6 +17668,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19684,6 +19712,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23315,6 +23344,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h index 230afaed4114ad..149b97bb1898c1 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue Jan 27 17:37:04 2026 UTC" +#define DATE "built on: Tue Apr 7 19:16:31 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm index 3c2ed0242488d2..f4a38e5189efe2 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4270,6 +4270,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6961,6 +6964,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12177,6 +12183,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14872,6 +14894,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17563,6 +17588,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19604,6 +19632,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23232,6 +23261,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h index ecac83bd33e217..8603f5bcac88d4 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Tue Jan 27 17:37:21 2026 UTC" +#define DATE "built on: Tue Apr 7 19:16:47 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm index 4fc49bc1b055c2..be12619c8df772 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -234,7 +234,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4335,6 +4335,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7026,6 +7029,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12314,6 +12320,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15009,6 +15031,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17700,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19741,6 +19769,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23372,6 +23401,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h index d9ade2f1ea032e..e6240eb6ac4a61 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue Jan 27 17:37:37 2026 UTC" +#define DATE "built on: Tue Apr 7 19:17:03 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/cmp.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm index 2e968665976899..c6adc6a40a55e7 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm @@ -171,7 +171,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -234,7 +234,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4335,6 +4335,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -7026,6 +7029,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12314,6 +12320,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -15009,6 +15031,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17700,6 +17725,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19741,6 +19769,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23372,6 +23401,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h index 9ad5a2b7fbd5fc..4c5673adf73e2b 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue Jan 27 17:38:01 2026 UTC" +#define DATE "built on: Tue Apr 7 19:17:27 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm index 5e38b637ee7d60..6f8d2b4595ae81 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm @@ -169,7 +169,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.5.5", + "full_version" => "3.5.6", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -233,7 +233,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-brotli no-brotli-dynamic no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib no-zlib-dynamic no-zstd no-zstd-dynamic", - "patch" => "5", + "patch" => "6", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -287,11 +287,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "27 Jan 2026", + "release_date" => "7 Apr 2026", "shlib_version" => "3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.5.5" + "version" => "3.5.6" ); our %target = ( "AR" => "ar", @@ -4271,6 +4271,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -6962,6 +6965,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -12178,6 +12184,22 @@ our %unified_info = ( ], "builddata.pm" => [ "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", "PREFIX=.", "BINDIR=apps", "APPLINKDIR=ms", @@ -14873,6 +14895,9 @@ our %unified_info = ( "doc/html/man3/UI_new.html" => [ "doc/man3/UI_new.pod" ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/html/man3/X509V3_get_d2i.html" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -17564,6 +17589,9 @@ our %unified_info = ( "doc/man/man3/UI_new.3" => [ "doc/man3/UI_new.pod" ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], "doc/man/man3/X509V3_get_d2i.3" => [ "doc/man3/X509V3_get_d2i.pod" ], @@ -19605,6 +19633,7 @@ our %unified_info = ( "doc/html/man3/UI_UTIL_read_pw.html", "doc/html/man3/UI_create_method.html", "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", "doc/html/man3/X509V3_get_d2i.html", "doc/html/man3/X509V3_set_ctx.html", "doc/html/man3/X509_ACERT_add1_attr.html", @@ -23233,6 +23262,7 @@ our %unified_info = ( "doc/man/man3/UI_UTIL_read_pw.3", "doc/man/man3/UI_create_method.3", "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", "doc/man/man3/X509V3_get_d2i.3", "doc/man/man3/X509V3_set_ctx.3", "doc/man/man3/X509_ACERT_add1_attr.3", diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h index 85ab5399f9d3b5..354518243e2786 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Tue Jan 27 17:38:22 2026 UTC" +#define DATE "built on: Tue Apr 7 19:17:47 2026 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/cmp.h index d46192c7172c9a..af844ec8ed103c 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/cmp.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/cmp.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cmp.h.in * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -196,6 +196,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h index 371ddef5c2bf2a..299ba102298f07 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h @@ -34,7 +34,7 @@ extern "C" { # define OPENSSL_VERSION_MINOR 5 /* clang-format on */ /* clang-format off */ -# define OPENSSL_VERSION_PATCH 5 +# define OPENSSL_VERSION_PATCH 6 /* clang-format on */ /* @@ -87,10 +87,10 @@ extern "C" { * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ /* clang-format off */ -# define OPENSSL_VERSION_STR "3.5.5" +# define OPENSSL_VERSION_STR "3.5.6" /* clang-format on */ /* clang-format off */ -# define OPENSSL_FULL_VERSION_STR "3.5.5" +# define OPENSSL_FULL_VERSION_STR "3.5.6" /* clang-format on */ /* @@ -99,7 +99,7 @@ extern "C" { * These strings are defined separately to allow them to be parsable. */ /* clang-format off */ -# define OPENSSL_RELEASE_DATE "27 Jan 2026" +# define OPENSSL_RELEASE_DATE "7 Apr 2026" /* clang-format on */ /* @@ -107,7 +107,7 @@ extern "C" { */ /* clang-format off */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.5 27 Jan 2026" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.6 7 Apr 2026" /* clang-format on */ /* clang-format off */ diff --git a/deps/openssl/openssl-cli.gypi b/deps/openssl/openssl-cli.gypi index ae74be9a2b17d2..da03938f1d1a92 100644 --- a/deps/openssl/openssl-cli.gypi +++ b/deps/openssl/openssl-cli.gypi @@ -25,5 +25,15 @@ ['enable_lto=="true"', { 'ldflags': [ '-fno-lto' ], }], + ['node_with_ltcg=="true" or enable_lto=="true" or enable_thin_lto=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-fno-lto'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': ['-fno-lto'], + }, + }, + }], ], } diff --git a/deps/openssl/openssl.gyp b/deps/openssl/openssl.gyp index ea3a2dc09ef29b..4d8d16f0e3c838 100644 --- a/deps/openssl/openssl.gyp +++ b/deps/openssl/openssl.gyp @@ -77,6 +77,16 @@ ['enable_lto=="true"', { 'ldflags': [ '-fno-lto' ], }], + ['node_with_ltcg=="true" or enable_lto=="true" or enable_thin_lto=="true"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': ['-fno-lto'], + }, + 'VCLinkerTool': { + 'AdditionalOptions': ['-fno-lto'], + }, + }, + }], ] }, { # openssl-fipsmodule target diff --git a/deps/openssl/openssl/CHANGES.md b/deps/openssl/openssl/CHANGES.md index 1a65b72b29655b..380840deb71220 100644 --- a/deps/openssl/openssl/CHANGES.md +++ b/deps/openssl/openssl/CHANGES.md @@ -28,6 +28,150 @@ OpenSSL Releases OpenSSL 3.5 ----------- +### Changes between 3.5.5 and 3.5.6 [7 Apr 2026] + + * Fixed incorrect failure handling in RSA KEM RSASVE encapsulation. + + Severity: Moderate + + Issue summary: Applications using RSASVE key encapsulation to establish + a secret encryption key can send contents of an uninitialized memory buffer + to a malicious peer. + + Impact summary: The uninitialized buffer might contain sensitive data + from the previous execution of the application process which leads + to sensitive data leakage to an attacker. + + Reported by: Simo Sorce (Red Hat). + + ([CVE-2026-31790]) + + *Nikola Pajkovsky* + + * Fixed loss of key agreement group tuple structure when the `DEFAULT` keyword + is used in the server-side configuration of the key-agreement group list. + + Severity: Low + + Issue summary: An OpenSSL TLS 1.3 server may fail to negotiate the expected + preferred key exchange group when its key exchange group configuration + includes the default by using the 'DEFAULT' keyword. + + Impact summary: A less preferred key exchange may be used even when a more + preferred group is supported by both client and server, if the group + was not included among the client's initial predicated keyshares. + This will sometimes be the case with the new hybrid post-quantum groups, + if the client chooses to defer their use until specifically requested by + the server. + + + ([CVE-2026-2673]) + + *Viktor Dukhovni* + + * Fixed potential use-after-free in DANE client code. + + Severity: Low + + Issue summary: An uncommon configuration of clients performing DANE + TLSA-based server authentication, when paired with uncommon server DANE TLSA + records, may result in a use-after-free and/or double-free on the client + side. + + Impact summary: A use after free can have a range of potential consequences + such as the corruption of valid data, crashes, or execution of arbitrary + code. + + Reported by: Igor Morgenstern (Aisle Research). + + ([CVE-2026-28387]) + + *Viktor Dukhovni* + + * Fixed NULL pointer dereference when processing a delta CRL. + + Severity: Low + + Issue summary: When a delta CRL that contains a Delta CRL Indicator extension + is processed, a NULL pointer dereference might happen if the required CRL + Number extension is missing. + + Impact summary: A NULL pointer dereference can trigger a crash which + leads to a Denial of Service for an application. + + Reported by: Igor Morgenstern (Aisle Research). + + ([CVE-2026-28388]) + + *Igor Morgenstern* + + * Fixed possible NULL dereference when processing CMS KeyAgreeRecipientInfo. + + Severity: Low + + Issue summary: During processing of a crafted CMS EnvelopedData message + with KeyAgreeRecipientInfo a NULL pointer dereference can happen. + + Impact summary: Applications that process attacker-controlled CMS data may + crash before authentication or cryptographic operations occur resulting in + Denial of Service. + + Reported by: Nathan Sportsman (Praetorian), Daniel Rhea, + Jaeho Nam (Seoul National University), Muhammad Daffa, + Zhanpeng Liu (Tencent Xuanwu Lab), Guannan Wang (Tencent Xuanwu Lab), + Guancheng Li (Tencent Xuanwu Lab), and Joshua Rogers. + + ([CVE-2026-28389]) + + *Neil Horman* + + * Fixed possible NULL dereference when processing CMS + KeyTransportRecipientInfo. + + Severity: Low + + Issue summary: During processing of a crafted CMS EnvelopedData message + with KeyTransportRecipientInfo a NULL pointer dereference can happen. + + Impact summary: Applications that process attacker-controlled CMS data may + crash before authentication or cryptographic operations occur resulting in + Denial of Service. + + Reported by: Muhammad Daffa, Zhanpeng Liu (Tencent Xuanwu Lab), + Guannan Wang (Tencent Xuanwu Lab), Guancheng Li (Tencent Xuanwu Lab), + Joshua Rogers, and Chanho Kim. + + ([CVE-2026-28390]) + + *Neil Horman* + + * Fixed heap buffer overflow in hexadecimal conversion. + + Severity: Low + + Issue summary: Converting an excessively large OCTET STRING value to + a hexadecimal string leads to a heap buffer overflow on 32 bit platforms. + + Impact summary: A heap buffer overflow may lead to a crash or possibly + an attacker controlled code execution or other undefined behavior. + + Reported by: Quoc Tran (Xint.io - US Team). + + ([CVE-2026-31789]) + + *Igor Ustinov* + + * Fixed usage of `openssl s_client -connect HOST -proxy PROXY` with `HOST` + containing a raw IPv6 address. + + + *Peter Zhang* + + * Fixed broken detection of plantext HTTP over TLS. + + + *Matt Caswell* + ### Changes between 3.5.4 and 3.5.5 [27 Jan 2026] * Fixed Improper validation of PBMAC1 parameters in PKCS#12 MAC verification. @@ -3461,7 +3605,7 @@ breaking changes, and mappings for the large list of deprecated functions. *Richard Levitte* - * Fixed an overflow bug in the x64_64 Montgomery squaring procedure + * Fixed an overflow bug in the x86_64 Montgomery squaring procedure used in exponentiation with 512-bit moduli. No EC algorithms are affected. Analysis suggests that attacks against 2-prime RSA1024, 3-prime RSA1536, and DSA1024 as a result of this defect would be very @@ -21607,216 +21751,223 @@ ndif -[CVE-2026-22796]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22796 -[CVE-2026-22795]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22795 -[CVE-2025-69421]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69421 -[CVE-2025-69420]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69420 -[CVE-2025-69419]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69419 -[CVE-2025-69418]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69418 -[CVE-2025-68160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-68160 -[CVE-2025-66199]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-66199 -[CVE-2025-15469]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15469 -[CVE-2025-15468]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15468 -[CVE-2025-15467]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15467 -[CVE-2025-11187]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-11187 -[CVE-2025-9232]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9232 -[CVE-2025-9231]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9231 -[CVE-2025-9230]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9230 -[CVE-2025-4575]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-4575 -[CVE-2024-13176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-13176 -[CVE-2024-9143]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-9143 -[CVE-2024-6119]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-6119 -[CVE-2024-5535]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-5535 -[CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741 -[CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603 -[CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511 -[CVE-2024-0727]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-0727 -[CVE-2023-6237]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6237 -[CVE-2023-6129]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6129 -[CVE-2023-5678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5678 -[CVE-2023-5363]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5363 -[CVE-2023-4807]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-4807 -[CVE-2023-3817]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3817 -[CVE-2023-3446]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3446 -[CVE-2023-2975]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2975 -[RFC 2578 (STD 58), section 3.5]: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5 -[CVE-2023-2650]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2650 -[CVE-2023-1255]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-1255 -[CVE-2023-0466]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0466 -[CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 -[CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 -[CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 -[CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286 -[CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217 -[CVE-2023-0216]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0216 -[CVE-2023-0215]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0215 -[CVE-2022-4450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4450 -[CVE-2022-4304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4304 -[CVE-2022-4203]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4203 -[CVE-2022-3996]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-3996 -[CVE-2022-2274]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274 -[CVE-2022-2097]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2097 -[CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971 -[CVE-2020-1967]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1967 -[CVE-2019-1563]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1563 -[CVE-2019-1559]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1559 -[CVE-2019-1552]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1552 -[CVE-2019-1551]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1551 -[CVE-2019-1549]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1549 -[CVE-2019-1547]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1547 -[CVE-2019-1543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1543 -[CVE-2018-5407]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-5407 -[CVE-2018-0739]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0739 -[CVE-2018-0737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0737 -[CVE-2018-0735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0735 -[CVE-2018-0734]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0734 -[CVE-2018-0733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0733 -[CVE-2018-0732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0732 -[CVE-2017-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3738 -[CVE-2017-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3737 -[CVE-2017-3736]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3736 -[CVE-2017-3735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3735 -[CVE-2017-3733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3733 -[CVE-2017-3732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3732 -[CVE-2017-3731]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3731 -[CVE-2017-3730]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3730 -[CVE-2016-7055]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7055 -[CVE-2016-7054]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7054 -[CVE-2016-7053]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7053 -[CVE-2016-7052]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7052 -[CVE-2016-6309]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6309 -[CVE-2016-6308]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6308 -[CVE-2016-6307]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6307 -[CVE-2016-6306]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6306 -[CVE-2016-6305]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6305 -[CVE-2016-6304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6304 -[CVE-2016-6303]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6303 -[CVE-2016-6302]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6302 -[CVE-2016-2183]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2183 -[CVE-2016-2182]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2182 -[CVE-2016-2181]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2181 -[CVE-2016-2180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2180 -[CVE-2016-2179]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2179 -[CVE-2016-2178]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2178 -[CVE-2016-2177]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2177 -[CVE-2016-2176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2176 -[CVE-2016-2109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2109 -[CVE-2016-2107]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2107 -[CVE-2016-2106]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2106 -[CVE-2016-2105]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2105 -[CVE-2016-0800]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0800 -[CVE-2016-0799]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0799 -[CVE-2016-0798]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0798 -[CVE-2016-0797]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0797 -[CVE-2016-0705]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0705 -[CVE-2016-0702]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0702 -[CVE-2016-0701]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0701 -[CVE-2015-3197]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3197 -[CVE-2015-3196]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3196 -[CVE-2015-3195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3195 -[CVE-2015-3194]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3194 -[CVE-2015-3193]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3193 -[CVE-2015-1793]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1793 -[CVE-2015-1792]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1792 -[CVE-2015-1791]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1791 -[CVE-2015-1790]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1790 -[CVE-2015-1789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1789 -[CVE-2015-1788]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1788 -[CVE-2015-1787]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1787 -[CVE-2015-0293]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0293 -[CVE-2015-0291]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0291 -[CVE-2015-0290]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0290 -[CVE-2015-0289]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0289 -[CVE-2015-0288]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0288 -[CVE-2015-0287]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0287 -[CVE-2015-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0286 -[CVE-2015-0285]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0285 -[CVE-2015-0209]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0209 -[CVE-2015-0208]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0208 -[CVE-2015-0207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0207 -[CVE-2015-0206]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0206 -[CVE-2015-0205]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0205 -[CVE-2015-0204]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0204 -[CVE-2014-8275]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-8275 -[CVE-2014-5139]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-5139 -[CVE-2014-3572]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3572 -[CVE-2014-3571]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3571 -[CVE-2014-3570]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3570 -[CVE-2014-3569]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3569 -[CVE-2014-3568]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3568 -[CVE-2014-3567]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3567 -[CVE-2014-3566]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3566 -[CVE-2014-3513]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3513 -[CVE-2014-3512]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3512 -[CVE-2014-3511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3511 -[CVE-2014-3510]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3510 -[CVE-2014-3509]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3509 -[CVE-2014-3508]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3508 -[CVE-2014-3507]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3507 -[CVE-2014-3506]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3506 -[CVE-2014-3505]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3505 -[CVE-2014-3470]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3470 -[CVE-2014-0224]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0224 -[CVE-2014-0221]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0221 -[CVE-2014-0195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0195 -[CVE-2014-0160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0160 -[CVE-2014-0076]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0076 -[CVE-2013-6450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6450 -[CVE-2013-4353]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-4353 -[CVE-2013-0169]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0169 -[CVE-2013-0166]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0166 -[CVE-2012-2686]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2686 -[CVE-2012-2333]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2333 -[CVE-2012-2110]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2110 -[CVE-2012-0884]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0884 -[CVE-2012-0050]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0050 -[CVE-2012-0027]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0027 -[CVE-2011-4619]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4619 -[CVE-2011-4577]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4577 -[CVE-2011-4576]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4576 -[CVE-2011-4109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4109 -[CVE-2011-4108]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4108 -[CVE-2011-3210]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3210 -[CVE-2011-3207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3207 -[CVE-2011-0014]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-0014 -[CVE-2010-4252]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4252 -[CVE-2010-4180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4180 -[CVE-2010-3864]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-3864 -[CVE-2010-1633]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-1633 -[CVE-2010-0740]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0740 -[CVE-2010-0433]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0433 -[CVE-2009-4355]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-4355 -[CVE-2009-3555]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3555 -[CVE-2009-3245]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3245 -[CVE-2009-1386]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1386 -[CVE-2009-1379]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1379 -[CVE-2009-1378]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1378 -[CVE-2009-1377]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1377 -[CVE-2009-0789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0789 -[CVE-2009-0591]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0591 -[CVE-2009-0590]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0590 -[CVE-2008-5077]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-5077 -[CVE-2008-1678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1678 -[CVE-2008-1672]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1672 -[CVE-2008-0891]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-0891 -[CVE-2007-5135]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-5135 -[CVE-2007-4995]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-4995 -[CVE-2006-4343]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4343 -[CVE-2006-4339]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4339 -[CVE-2006-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-3738 -[CVE-2006-2940]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2940 -[CVE-2006-2937]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2937 -[CVE-2005-2969]: https://www.openssl.org/news/vulnerabilities.html#CVE-2005-2969 -[CVE-2004-0112]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0112 -[CVE-2004-0079]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0079 -[CVE-2003-0851]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0851 -[CVE-2003-0545]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0545 -[CVE-2003-0544]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0544 -[CVE-2003-0543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0543 -[CVE-2003-0078]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0078 -[CVE-2002-0659]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0659 -[CVE-2002-0657]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0657 -[CVE-2002-0656]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0656 -[CVE-2002-0655]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0655 [CMVP]: https://csrc.nist.gov/projects/cryptographic-module-validation-program +[CVE-2002-0655]: https://openssl-library.org/news/vulnerabilities/#CVE-2002-0655 +[CVE-2002-0656]: https://openssl-library.org/news/vulnerabilities/#CVE-2002-0656 +[CVE-2002-0657]: https://openssl-library.org/news/vulnerabilities/#CVE-2002-0657 +[CVE-2002-0659]: https://openssl-library.org/news/vulnerabilities/#CVE-2002-0659 +[CVE-2003-0078]: https://openssl-library.org/news/vulnerabilities/#CVE-2003-0078 +[CVE-2003-0543]: https://openssl-library.org/news/vulnerabilities/#CVE-2003-0543 +[CVE-2003-0544]: https://openssl-library.org/news/vulnerabilities/#CVE-2003-0544 +[CVE-2003-0545]: https://openssl-library.org/news/vulnerabilities/#CVE-2003-0545 +[CVE-2003-0851]: https://openssl-library.org/news/vulnerabilities/#CVE-2003-0851 +[CVE-2004-0079]: https://openssl-library.org/news/vulnerabilities/#CVE-2004-0079 +[CVE-2004-0112]: https://openssl-library.org/news/vulnerabilities/#CVE-2004-0112 +[CVE-2005-2969]: https://openssl-library.org/news/vulnerabilities/#CVE-2005-2969 +[CVE-2006-2937]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-2937 +[CVE-2006-2940]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-2940 +[CVE-2006-3738]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-3738 +[CVE-2006-4339]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-4339 +[CVE-2006-4343]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-4343 +[CVE-2007-4995]: https://openssl-library.org/news/vulnerabilities/#CVE-2007-4995 +[CVE-2007-5135]: https://openssl-library.org/news/vulnerabilities/#CVE-2007-5135 +[CVE-2008-0891]: https://openssl-library.org/news/vulnerabilities/#CVE-2008-0891 +[CVE-2008-1672]: https://openssl-library.org/news/vulnerabilities/#CVE-2008-1672 +[CVE-2008-1678]: https://openssl-library.org/news/vulnerabilities/#CVE-2008-1678 +[CVE-2008-5077]: https://openssl-library.org/news/vulnerabilities/#CVE-2008-5077 +[CVE-2009-0590]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0590 +[CVE-2009-0591]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0591 +[CVE-2009-0789]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0789 +[CVE-2009-1377]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-1377 +[CVE-2009-1378]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-1378 +[CVE-2009-1379]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-1379 +[CVE-2009-1386]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-1386 +[CVE-2009-3245]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-3245 +[CVE-2009-3555]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-3555 +[CVE-2009-4355]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-4355 +[CVE-2010-0433]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-0433 +[CVE-2010-0740]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-0740 +[CVE-2010-1633]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-1633 +[CVE-2010-3864]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-3864 +[CVE-2010-4180]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-4180 +[CVE-2010-4252]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-4252 +[CVE-2011-0014]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-0014 +[CVE-2011-3207]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-3207 +[CVE-2011-3210]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-3210 +[CVE-2011-4108]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4108 +[CVE-2011-4109]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4109 +[CVE-2011-4576]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4576 +[CVE-2011-4577]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4577 +[CVE-2011-4619]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4619 +[CVE-2012-0027]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0027 +[CVE-2012-0050]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0050 +[CVE-2012-0884]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0884 +[CVE-2012-2110]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2110 +[CVE-2012-2333]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2333 +[CVE-2012-2686]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2686 +[CVE-2013-0166]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-0166 +[CVE-2013-0169]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-0169 +[CVE-2013-4353]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-4353 +[CVE-2013-6450]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-6450 +[CVE-2014-0076]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0076 +[CVE-2014-0160]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0160 +[CVE-2014-0195]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0195 +[CVE-2014-0221]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0221 +[CVE-2014-0224]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0224 +[CVE-2014-3470]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3470 +[CVE-2014-3505]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3505 +[CVE-2014-3506]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3506 +[CVE-2014-3507]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3507 +[CVE-2014-3508]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3508 +[CVE-2014-3509]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3509 +[CVE-2014-3510]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3510 +[CVE-2014-3511]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3511 +[CVE-2014-3512]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3512 +[CVE-2014-3513]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3513 +[CVE-2014-3566]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3566 +[CVE-2014-3567]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3567 +[CVE-2014-3568]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3568 +[CVE-2014-3569]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3569 +[CVE-2014-3570]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3570 +[CVE-2014-3571]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3571 +[CVE-2014-3572]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3572 +[CVE-2014-5139]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-5139 +[CVE-2014-8275]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-8275 +[CVE-2015-0204]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0204 +[CVE-2015-0205]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0205 +[CVE-2015-0206]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0206 +[CVE-2015-0207]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0207 +[CVE-2015-0208]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0208 +[CVE-2015-0209]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0209 +[CVE-2015-0285]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0285 +[CVE-2015-0286]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0286 +[CVE-2015-0287]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0287 +[CVE-2015-0288]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0288 +[CVE-2015-0289]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0289 +[CVE-2015-0290]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0290 +[CVE-2015-0291]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0291 +[CVE-2015-0293]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0293 +[CVE-2015-1787]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1787 +[CVE-2015-1788]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1788 +[CVE-2015-1789]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1789 +[CVE-2015-1790]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1790 +[CVE-2015-1791]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1791 +[CVE-2015-1792]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1792 +[CVE-2015-1793]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1793 +[CVE-2015-3193]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3193 +[CVE-2015-3194]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3194 +[CVE-2015-3195]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3195 +[CVE-2015-3196]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3196 +[CVE-2015-3197]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3197 +[CVE-2016-0701]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0701 +[CVE-2016-0702]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0702 +[CVE-2016-0705]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0705 +[CVE-2016-0797]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0797 +[CVE-2016-0798]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0798 +[CVE-2016-0799]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0799 +[CVE-2016-0800]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0800 +[CVE-2016-2105]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2105 +[CVE-2016-2106]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2106 +[CVE-2016-2107]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2107 +[CVE-2016-2109]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2109 +[CVE-2016-2176]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2176 +[CVE-2016-2177]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2177 +[CVE-2016-2178]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2178 +[CVE-2016-2179]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2179 +[CVE-2016-2180]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2180 +[CVE-2016-2181]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2181 +[CVE-2016-2182]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2182 +[CVE-2016-2183]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2183 +[CVE-2016-6302]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6302 +[CVE-2016-6303]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6303 +[CVE-2016-6304]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6304 +[CVE-2016-6305]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6305 +[CVE-2016-6306]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6306 +[CVE-2016-6307]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6307 +[CVE-2016-6308]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6308 +[CVE-2016-6309]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6309 +[CVE-2016-7052]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7052 +[CVE-2016-7053]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7053 +[CVE-2016-7054]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7054 +[CVE-2016-7055]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7055 +[CVE-2017-3730]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3730 +[CVE-2017-3731]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3731 +[CVE-2017-3732]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3732 +[CVE-2017-3733]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3733 +[CVE-2017-3735]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3735 +[CVE-2017-3736]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3736 +[CVE-2017-3737]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3737 +[CVE-2017-3738]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3738 +[CVE-2018-0732]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0732 +[CVE-2018-0733]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0733 +[CVE-2018-0734]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0734 +[CVE-2018-0735]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0735 +[CVE-2018-0737]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0737 +[CVE-2018-0739]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0739 +[CVE-2018-5407]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-5407 +[CVE-2019-1543]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1543 +[CVE-2019-1547]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1547 +[CVE-2019-1549]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1549 +[CVE-2019-1551]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1551 +[CVE-2019-1552]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1552 +[CVE-2019-1559]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1559 +[CVE-2019-1563]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1563 +[CVE-2020-1967]: https://openssl-library.org/news/vulnerabilities/#CVE-2020-1967 +[CVE-2020-1971]: https://openssl-library.org/news/vulnerabilities/#CVE-2020-1971 +[CVE-2022-2097]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-2097 +[CVE-2022-2274]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-2274 +[CVE-2022-3996]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-3996 +[CVE-2022-4203]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4203 +[CVE-2022-4304]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4304 +[CVE-2022-4450]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4450 +[CVE-2023-0215]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0215 +[CVE-2023-0216]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0216 +[CVE-2023-0217]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0217 +[CVE-2023-0286]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0286 +[CVE-2023-0401]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0401 +[CVE-2023-0464]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0464 +[CVE-2023-0465]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0465 +[CVE-2023-0466]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0466 +[CVE-2023-1255]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-1255 +[CVE-2023-2650]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-2650 +[CVE-2023-2975]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-2975 +[CVE-2023-3446]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-3446 +[CVE-2023-3817]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-3817 +[CVE-2023-4807]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-4807 +[CVE-2023-5363]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-5363 +[CVE-2023-5678]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-5678 +[CVE-2023-6129]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-6129 +[CVE-2023-6237]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-6237 +[CVE-2024-0727]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-0727 +[CVE-2024-2511]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-2511 +[CVE-2024-4603]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-4603 +[CVE-2024-4741]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-4741 +[CVE-2024-5535]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-5535 +[CVE-2024-6119]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-6119 +[CVE-2024-9143]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-9143 +[CVE-2024-13176]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-13176 +[CVE-2025-4575]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-4575 +[CVE-2025-9230]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9230 +[CVE-2025-9231]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9231 +[CVE-2025-9232]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9232 +[CVE-2025-11187]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-11187 +[CVE-2025-15467]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15467 +[CVE-2025-15468]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15468 +[CVE-2025-15469]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15469 +[CVE-2025-66199]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-66199 +[CVE-2025-68160]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-68160 +[CVE-2025-69418]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69418 +[CVE-2025-69419]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69419 +[CVE-2025-69420]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69420 +[CVE-2025-69421]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69421 +[CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673 +[CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795 +[CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796 +[CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387 +[CVE-2026-28388]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28388 +[CVE-2026-28389]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28389 +[CVE-2026-28390]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28390 +[CVE-2026-31789]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31789 +[CVE-2026-31790]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31790 [ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations +[RFC 2578 (STD 58), section 3.5]: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5 diff --git a/deps/openssl/openssl/CONTRIBUTING.md b/deps/openssl/openssl/CONTRIBUTING.md index 09416095e64d04..06dfbaeff1fecf 100644 --- a/deps/openssl/openssl/CONTRIBUTING.md +++ b/deps/openssl/openssl/CONTRIBUTING.md @@ -27,6 +27,18 @@ communication before submitting many pull requests. In addition, contributors should personally evaluate potential patches generated by automated tools. +Provide a clear description of the issue or feature being addressed, +including any relevant implementation details and, for performance +improvements, benchmark results. + +Pull requests and commits should be self-contained, enabling readers to +understand what changed and why without needing to reference related +issues or having prior knowledge. Commit messages should include all +relevant details to help future contributors follow the git history, +with clear explanations of what is changing and why. Long descriptions +are encouraged if they aid understanding. Commit message titles (their +first line) should be kept to 50-70 characters if possible. + To make it easier to review and accept your pull request, please follow these guidelines: diff --git a/deps/openssl/openssl/Configurations/10-main.conf b/deps/openssl/openssl/Configurations/10-main.conf index cba57b41273f80..692eccbfa1dcbf 100644 --- a/deps/openssl/openssl/Configurations/10-main.conf +++ b/deps/openssl/openssl/Configurations/10-main.conf @@ -5,7 +5,8 @@ my $vc_win64a_info = {}; sub vc_win64a_info { unless (%$vc_win64a_info) { - if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) { + # Minimum NASM version is 2.09 otherwise SHA3 might be miscompiled + if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+)\.([0-9]+)/ && ($1 > 2 || ($1 == 2 && $2 >= 9))) { $vc_win64a_info = { AS => "nasm", ASFLAGS => "-g", asflags => "-Ox -f win64 -DNEAR", diff --git a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl index 78be4a319964cf..5bf397eba021d7 100644 --- a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl +++ b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl @@ -72,6 +72,7 @@ OPTIONS={- $config{options} -} CONFIGURE_ARGS=({- join(", ",quotify_l(@{$config{perlargv}})) -}) SRCDIR={- $config{sourcedir} -} BLDDIR={- $config{builddir} -} +RESULT_D=$(BLDDIR)/test-runs FIPSKEY={- $config{FIPSKEY} -} VERSION={- "$config{full_version}" -} @@ -642,7 +643,7 @@ clean: libclean ## Clean the workspace, keep the configuration -find . -name '*{- platform->objext() -}' \! -name '.*' \! -type d -exec $(RM) {} \; $(RM) core $(RM) tags TAGS doc-nits md-nits - $(RM) -r test/test-runs + $(RM) -r $(RESULT_D) $(RM) providers/fips*.new -find . -type l \! -name '.*' -exec $(RM) {} \; diff --git a/deps/openssl/openssl/Configurations/windows-makefile.tmpl b/deps/openssl/openssl/Configurations/windows-makefile.tmpl index 894834cfb7efd0..e553e8f9fec32a 100644 --- a/deps/openssl/openssl/Configurations/windows-makefile.tmpl +++ b/deps/openssl/openssl/Configurations/windows-makefile.tmpl @@ -38,6 +38,7 @@ PLATFORM={- $config{target} -} SRCDIR={- $config{sourcedir} -} BLDDIR={- $config{builddir} -} +RESULT_D=$(BLDDIR)\test-runs FIPSKEY={- $config{FIPSKEY} -} VERSION={- "$config{full_version}" -} @@ -222,7 +223,7 @@ OPENSSLDIR_dir={- canonpath($openssldir_dir) -} LIBDIR={- our $libdir = $config{libdir} || "lib"; file_name_is_absolute($libdir) ? "" : $libdir -} MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath catpath); - our $modulesprefix = catdir($prefix,$libdir); + our $modulesprefix = file_name_is_absolute($libdir) ? $libdir : catdir($prefix,$libdir); our ($modulesprefix_dev, $modulesprefix_dir, $modulesprefix_file) = splitpath($modulesprefix, 1); @@ -484,7 +485,7 @@ clean: libclean -del /Q /S /F engines\*.lib engines\*.exp -del /Q /S /F apps\*.lib apps\*.rc apps\*.res apps\*.exp -del /Q /S /F test\*.exp - -rd /Q /S test\test-runs + -@if exist "$(RESULT_D)" rd /Q /S "$(RESULT_D)" distclean: clean -del /Q /F include\openssl\configuration.h diff --git a/deps/openssl/openssl/NEWS.md b/deps/openssl/openssl/NEWS.md index f4ec14718d717f..07f78ae2af179b 100644 --- a/deps/openssl/openssl/NEWS.md +++ b/deps/openssl/openssl/NEWS.md @@ -23,6 +23,36 @@ OpenSSL Releases OpenSSL 3.5 ----------- +### Major changes between OpenSSL 3.5.5 and OpenSSL 3.5.6 [7 Apr 2026] + +OpenSSL 3.5.6 is a security patch release. The most severe CVE fixed in this +release is Medium. + +This release incorporates the following bug fixes and mitigations: + + * Fixed incorrect failure handling in RSA KEM RSASVE encapsulation. + ([CVE-2026-31790]) + + * Fixed loss of key agreement group tuple structure when the `DEFAULT` keyword + is used in the server-side configuration of the key-agreement group list. + ([CVE-2026-2673]) + + * Fixed potential use-after-free in DANE client code. + ([CVE-2026-28387]) + + * Fixed NULL pointer dereference when processing a delta CRL. + ([CVE-2026-28388]) + + * Fixed possible NULL dereference when processing CMS KeyAgreeRecipientInfo. + ([CVE-2026-28389]) + + * Fixed possible NULL dereference when processing CMS + KeyTransportRecipientInfo. + ([CVE-2026-28390]) + + * Fixed heap buffer overflow in hexadecimal conversion. + ([CVE-2026-31789]) + ### Major changes between OpenSSL 3.5.4 and OpenSSL 3.5.5 [27 Jan 2026] OpenSSL 3.5.5 is a security patch release. The most severe CVE fixed in this @@ -758,7 +788,7 @@ OpenSSL 1.1.1 ### Major changes between OpenSSL 1.1.1d and OpenSSL 1.1.1e [17 Mar 2020] - * Fixed an overflow bug in the x64_64 Montgomery squaring procedure + * Fixed an overflow bug in the x86_64 Montgomery squaring procedure used in exponentiation with 512-bit moduli ([CVE-2019-1551]) ### Major changes between OpenSSL 1.1.1c and OpenSSL 1.1.1d [10 Sep 2019] @@ -1988,201 +2018,208 @@ OpenSSL 0.9.x * Support for various new platforms -[CVE-2026-22796]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22796 -[CVE-2026-22795]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22795 -[CVE-2025-69421]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69421 -[CVE-2025-69420]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69420 -[CVE-2025-69419]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69419 -[CVE-2025-69418]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69418 -[CVE-2025-68160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-68160 -[CVE-2025-66199]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-66199 -[CVE-2025-15469]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15469 -[CVE-2025-15468]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15468 -[CVE-2025-15467]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-15467 -[CVE-2025-11187]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-11187 -[CVE-2025-9232]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9232 -[CVE-2025-9231]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9231 -[CVE-2025-9230]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9230 -[CVE-2025-4575]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-4575 -[CVE-2024-13176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-13176 -[CVE-2024-9143]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-9143 -[CVE-2024-6119]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-6119 -[CVE-2024-5535]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-5535 -[CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741 -[CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603 -[CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511 -[CVE-2024-0727]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-0727 -[CVE-2023-6237]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6237 -[CVE-2023-6129]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6129 -[CVE-2023-5678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5678 -[CVE-2023-5363]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5363 -[CVE-2023-4807]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-4807 -[CVE-2023-3817]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3817 -[CVE-2023-3446]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3446 -[CVE-2023-2975]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2975 -[CVE-2023-2650]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2650 -[CVE-2023-1255]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-1255 -[CVE-2023-0466]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0466 -[CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 -[CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 -[CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 -[CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286 -[CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217 -[CVE-2023-0216]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0216 -[CVE-2023-0215]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0215 -[CVE-2022-4450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4450 -[CVE-2022-4304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4304 -[CVE-2022-4203]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4203 -[CVE-2022-3996]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-3996 -[CVE-2022-2274]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274 -[CVE-2022-2097]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2097 -[CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971 -[CVE-2020-1967]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1967 -[CVE-2019-1563]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1563 -[CVE-2019-1559]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1559 -[CVE-2019-1552]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1552 -[CVE-2019-1551]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1551 -[CVE-2019-1549]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1549 -[CVE-2019-1547]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1547 -[CVE-2019-1543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1543 -[CVE-2018-5407]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-5407 -[CVE-2018-0739]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0739 -[CVE-2018-0737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0737 -[CVE-2018-0735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0735 -[CVE-2018-0734]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0734 -[CVE-2018-0733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0733 -[CVE-2018-0732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0732 -[CVE-2017-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3738 -[CVE-2017-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3737 -[CVE-2017-3736]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3736 -[CVE-2017-3735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3735 -[CVE-2017-3733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3733 -[CVE-2017-3732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3732 -[CVE-2017-3731]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3731 -[CVE-2017-3730]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3730 -[CVE-2016-7055]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7055 -[CVE-2016-7054]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7054 -[CVE-2016-7053]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7053 -[CVE-2016-7052]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7052 -[CVE-2016-6309]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6309 -[CVE-2016-6308]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6308 -[CVE-2016-6307]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6307 -[CVE-2016-6306]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6306 -[CVE-2016-6305]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6305 -[CVE-2016-6304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6304 -[CVE-2016-6303]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6303 -[CVE-2016-6302]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6302 -[CVE-2016-2183]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2183 -[CVE-2016-2182]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2182 -[CVE-2016-2181]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2181 -[CVE-2016-2180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2180 -[CVE-2016-2179]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2179 -[CVE-2016-2178]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2178 -[CVE-2016-2177]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2177 -[CVE-2016-2176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2176 -[CVE-2016-2109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2109 -[CVE-2016-2107]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2107 -[CVE-2016-2106]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2106 -[CVE-2016-2105]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2105 -[CVE-2016-0800]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0800 -[CVE-2016-0799]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0799 -[CVE-2016-0798]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0798 -[CVE-2016-0797]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0797 -[CVE-2016-0705]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0705 -[CVE-2016-0702]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0702 -[CVE-2016-0701]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0701 -[CVE-2015-3197]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3197 -[CVE-2015-3196]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3196 -[CVE-2015-3195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3195 -[CVE-2015-3194]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3194 -[CVE-2015-3193]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3193 -[CVE-2015-1793]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1793 -[CVE-2015-1792]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1792 -[CVE-2015-1791]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1791 -[CVE-2015-1790]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1790 -[CVE-2015-1789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1789 -[CVE-2015-1788]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1788 -[CVE-2015-1787]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1787 -[CVE-2015-0293]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0293 -[CVE-2015-0291]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0291 -[CVE-2015-0290]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0290 -[CVE-2015-0289]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0289 -[CVE-2015-0288]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0288 -[CVE-2015-0287]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0287 -[CVE-2015-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0286 -[CVE-2015-0285]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0285 -[CVE-2015-0209]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0209 -[CVE-2015-0208]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0208 -[CVE-2015-0207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0207 -[CVE-2015-0206]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0206 -[CVE-2015-0205]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0205 -[CVE-2015-0204]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0204 -[CVE-2014-8275]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-8275 -[CVE-2014-5139]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-5139 -[CVE-2014-3572]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3572 -[CVE-2014-3571]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3571 -[CVE-2014-3570]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3570 -[CVE-2014-3569]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3569 -[CVE-2014-3568]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3568 -[CVE-2014-3567]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3567 -[CVE-2014-3566]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3566 -[CVE-2014-3513]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3513 -[CVE-2014-3512]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3512 -[CVE-2014-3511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3511 -[CVE-2014-3510]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3510 -[CVE-2014-3509]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3509 -[CVE-2014-3508]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3508 -[CVE-2014-3507]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3507 -[CVE-2014-3506]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3506 -[CVE-2014-3505]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3505 -[CVE-2014-3470]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3470 -[CVE-2014-0224]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0224 -[CVE-2014-0221]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0221 -[CVE-2014-0198]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0198 -[CVE-2014-0195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0195 -[CVE-2014-0160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0160 -[CVE-2014-0076]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0076 -[CVE-2013-6450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6450 -[CVE-2013-6449]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6449 -[CVE-2013-4353]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-4353 -[CVE-2013-0169]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0169 -[CVE-2013-0166]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0166 -[CVE-2012-2686]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2686 -[CVE-2012-2333]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2333 -[CVE-2012-2110]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2110 -[CVE-2012-0884]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0884 -[CVE-2012-0050]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0050 -[CVE-2012-0027]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0027 -[CVE-2011-4619]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4619 -[CVE-2011-4577]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4577 -[CVE-2011-4576]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4576 -[CVE-2011-4108]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4108 -[CVE-2011-3210]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3210 -[CVE-2011-3207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3207 -[CVE-2011-0014]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-0014 -[CVE-2010-5298]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-5298 -[CVE-2010-4252]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4252 -[CVE-2010-4180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4180 -[CVE-2010-3864]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-3864 -[CVE-2010-2939]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-2939 -[CVE-2010-1633]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-1633 -[CVE-2010-0740]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0740 -[CVE-2010-0433]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0433 -[CVE-2009-3555]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3555 -[CVE-2009-0789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0789 -[CVE-2009-0591]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0591 -[CVE-2009-0590]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0590 -[CVE-2008-5077]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-5077 -[CVE-2006-4343]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4343 -[CVE-2006-4339]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4339 -[CVE-2006-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-3737 -[CVE-2006-2940]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2940 -[CVE-2006-2937]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2937 -[CVE-2005-2969]: https://www.openssl.org/news/vulnerabilities.html#CVE-2005-2969 -[OpenSSL Guide]: https://www.openssl.org/docs/manmaster/man7/ossl-guide-introduction.html [CHANGES.md]: ./CHANGES.md -[README-QUIC.md]: ./README-QUIC.md -[issue tracker]: https://github.com/openssl/openssl/issues [CMVP]: https://csrc.nist.gov/projects/cryptographic-module-validation-program +[CVE-2005-2969]: https://openssl-library.org/news/vulnerabilities/#CVE-2005-2969 +[CVE-2006-2937]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-2937 +[CVE-2006-2940]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-2940 +[CVE-2006-3737]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-3737 +[CVE-2006-4339]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-4339 +[CVE-2006-4343]: https://openssl-library.org/news/vulnerabilities/#CVE-2006-4343 +[CVE-2008-5077]: https://openssl-library.org/news/vulnerabilities/#CVE-2008-5077 +[CVE-2009-0590]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0590 +[CVE-2009-0591]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0591 +[CVE-2009-0789]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-0789 +[CVE-2009-3555]: https://openssl-library.org/news/vulnerabilities/#CVE-2009-3555 +[CVE-2010-0433]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-0433 +[CVE-2010-0740]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-0740 +[CVE-2010-1633]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-1633 +[CVE-2010-2939]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-2939 +[CVE-2010-3864]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-3864 +[CVE-2010-4180]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-4180 +[CVE-2010-4252]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-4252 +[CVE-2010-5298]: https://openssl-library.org/news/vulnerabilities/#CVE-2010-5298 +[CVE-2011-0014]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-0014 +[CVE-2011-3207]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-3207 +[CVE-2011-3210]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-3210 +[CVE-2011-4108]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4108 +[CVE-2011-4576]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4576 +[CVE-2011-4577]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4577 +[CVE-2011-4619]: https://openssl-library.org/news/vulnerabilities/#CVE-2011-4619 +[CVE-2012-0027]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0027 +[CVE-2012-0050]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0050 +[CVE-2012-0884]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-0884 +[CVE-2012-2110]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2110 +[CVE-2012-2333]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2333 +[CVE-2012-2686]: https://openssl-library.org/news/vulnerabilities/#CVE-2012-2686 +[CVE-2013-0166]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-0166 +[CVE-2013-0169]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-0169 +[CVE-2013-4353]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-4353 +[CVE-2013-6449]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-6449 +[CVE-2013-6450]: https://openssl-library.org/news/vulnerabilities/#CVE-2013-6450 +[CVE-2014-0076]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0076 +[CVE-2014-0160]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0160 +[CVE-2014-0195]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0195 +[CVE-2014-0198]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0198 +[CVE-2014-0221]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0221 +[CVE-2014-0224]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-0224 +[CVE-2014-3470]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3470 +[CVE-2014-3505]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3505 +[CVE-2014-3506]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3506 +[CVE-2014-3507]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3507 +[CVE-2014-3508]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3508 +[CVE-2014-3509]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3509 +[CVE-2014-3510]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3510 +[CVE-2014-3511]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3511 +[CVE-2014-3512]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3512 +[CVE-2014-3513]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3513 +[CVE-2014-3566]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3566 +[CVE-2014-3567]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3567 +[CVE-2014-3568]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3568 +[CVE-2014-3569]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3569 +[CVE-2014-3570]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3570 +[CVE-2014-3571]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3571 +[CVE-2014-3572]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-3572 +[CVE-2014-5139]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-5139 +[CVE-2014-8275]: https://openssl-library.org/news/vulnerabilities/#CVE-2014-8275 +[CVE-2015-0204]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0204 +[CVE-2015-0205]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0205 +[CVE-2015-0206]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0206 +[CVE-2015-0207]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0207 +[CVE-2015-0208]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0208 +[CVE-2015-0209]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0209 +[CVE-2015-0285]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0285 +[CVE-2015-0286]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0286 +[CVE-2015-0287]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0287 +[CVE-2015-0288]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0288 +[CVE-2015-0289]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0289 +[CVE-2015-0290]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0290 +[CVE-2015-0291]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0291 +[CVE-2015-0293]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-0293 +[CVE-2015-1787]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1787 +[CVE-2015-1788]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1788 +[CVE-2015-1789]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1789 +[CVE-2015-1790]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1790 +[CVE-2015-1791]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1791 +[CVE-2015-1792]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1792 +[CVE-2015-1793]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-1793 +[CVE-2015-3193]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3193 +[CVE-2015-3194]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3194 +[CVE-2015-3195]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3195 +[CVE-2015-3196]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3196 +[CVE-2015-3197]: https://openssl-library.org/news/vulnerabilities/#CVE-2015-3197 +[CVE-2016-0701]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0701 +[CVE-2016-0702]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0702 +[CVE-2016-0705]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0705 +[CVE-2016-0797]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0797 +[CVE-2016-0798]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0798 +[CVE-2016-0799]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0799 +[CVE-2016-0800]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-0800 +[CVE-2016-2105]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2105 +[CVE-2016-2106]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2106 +[CVE-2016-2107]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2107 +[CVE-2016-2109]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2109 +[CVE-2016-2176]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2176 +[CVE-2016-2177]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2177 +[CVE-2016-2178]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2178 +[CVE-2016-2179]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2179 +[CVE-2016-2180]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2180 +[CVE-2016-2181]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2181 +[CVE-2016-2182]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2182 +[CVE-2016-2183]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-2183 +[CVE-2016-6302]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6302 +[CVE-2016-6303]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6303 +[CVE-2016-6304]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6304 +[CVE-2016-6305]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6305 +[CVE-2016-6306]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6306 +[CVE-2016-6307]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6307 +[CVE-2016-6308]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6308 +[CVE-2016-6309]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-6309 +[CVE-2016-7052]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7052 +[CVE-2016-7053]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7053 +[CVE-2016-7054]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7054 +[CVE-2016-7055]: https://openssl-library.org/news/vulnerabilities/#CVE-2016-7055 +[CVE-2017-3730]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3730 +[CVE-2017-3731]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3731 +[CVE-2017-3732]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3732 +[CVE-2017-3733]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3733 +[CVE-2017-3735]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3735 +[CVE-2017-3736]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3736 +[CVE-2017-3737]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3737 +[CVE-2017-3738]: https://openssl-library.org/news/vulnerabilities/#CVE-2017-3738 +[CVE-2018-0732]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0732 +[CVE-2018-0733]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0733 +[CVE-2018-0734]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0734 +[CVE-2018-0735]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0735 +[CVE-2018-0737]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0737 +[CVE-2018-0739]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-0739 +[CVE-2018-5407]: https://openssl-library.org/news/vulnerabilities/#CVE-2018-5407 +[CVE-2019-1543]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1543 +[CVE-2019-1547]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1547 +[CVE-2019-1549]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1549 +[CVE-2019-1551]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1551 +[CVE-2019-1552]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1552 +[CVE-2019-1559]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1559 +[CVE-2019-1563]: https://openssl-library.org/news/vulnerabilities/#CVE-2019-1563 +[CVE-2020-1967]: https://openssl-library.org/news/vulnerabilities/#CVE-2020-1967 +[CVE-2020-1971]: https://openssl-library.org/news/vulnerabilities/#CVE-2020-1971 +[CVE-2022-2097]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-2097 +[CVE-2022-2274]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-2274 +[CVE-2022-3996]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-3996 +[CVE-2022-4203]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4203 +[CVE-2022-4304]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4304 +[CVE-2022-4450]: https://openssl-library.org/news/vulnerabilities/#CVE-2022-4450 +[CVE-2023-0215]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0215 +[CVE-2023-0216]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0216 +[CVE-2023-0217]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0217 +[CVE-2023-0286]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0286 +[CVE-2023-0401]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0401 +[CVE-2023-0464]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0464 +[CVE-2023-0465]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0465 +[CVE-2023-0466]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-0466 +[CVE-2023-1255]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-1255 +[CVE-2023-2650]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-2650 +[CVE-2023-2975]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-2975 +[CVE-2023-3446]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-3446 +[CVE-2023-3817]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-3817 +[CVE-2023-4807]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-4807 +[CVE-2023-5363]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-5363 +[CVE-2023-5678]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-5678 +[CVE-2023-6129]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-6129 +[CVE-2023-6237]: https://openssl-library.org/news/vulnerabilities/#CVE-2023-6237 +[CVE-2024-0727]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-0727 +[CVE-2024-2511]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-2511 +[CVE-2024-4603]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-4603 +[CVE-2024-4741]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-4741 +[CVE-2024-5535]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-5535 +[CVE-2024-6119]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-6119 +[CVE-2024-9143]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-9143 +[CVE-2024-13176]: https://openssl-library.org/news/vulnerabilities/#CVE-2024-13176 +[CVE-2025-4575]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-4575 +[CVE-2025-9230]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9230 +[CVE-2025-9231]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9231 +[CVE-2025-9232]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-9232 +[CVE-2025-11187]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-11187 +[CVE-2025-15467]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15467 +[CVE-2025-15468]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15468 +[CVE-2025-15469]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-15469 +[CVE-2025-66199]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-66199 +[CVE-2025-68160]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-68160 +[CVE-2025-69418]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69418 +[CVE-2025-69419]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69419 +[CVE-2025-69420]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69420 +[CVE-2025-69421]: https://openssl-library.org/news/vulnerabilities/#CVE-2025-69421 +[CVE-2026-2673]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-2673 +[CVE-2026-22795]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22795 +[CVE-2026-22796]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-22796 +[CVE-2026-28387]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28387 +[CVE-2026-28388]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28388 +[CVE-2026-28389]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28389 +[CVE-2026-28390]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-28390 +[CVE-2026-31789]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31789 +[CVE-2026-31790]: https://openssl-library.org/news/vulnerabilities/#CVE-2026-31790 [ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations +[OpenSSL Guide]: https://www.openssl.org/docs/manmaster/man7/ossl-guide-introduction.html +[README-QUIC.md]: ./README-QUIC.md +[issue tracker]: https://github.com/openssl/openssl/issues [jitterentropy-library]: https://github.com/smuellerDD/jitterentropy-library diff --git a/deps/openssl/openssl/VERSION.dat b/deps/openssl/openssl/VERSION.dat index 3a61c8e4e30a86..d3c75677c466d6 100644 --- a/deps/openssl/openssl/VERSION.dat +++ b/deps/openssl/openssl/VERSION.dat @@ -1,7 +1,7 @@ MAJOR=3 MINOR=5 -PATCH=5 +PATCH=6 PRE_RELEASE_TAG= BUILD_METADATA= -RELEASE_DATE="27 Jan 2026" +RELEASE_DATE="7 Apr 2026" SHLIB_VERSION=3 diff --git a/deps/openssl/openssl/apps/cmp.c b/deps/openssl/openssl/apps/cmp.c index f1af0b6c2b42ef..2fe7c18669bda1 100644 --- a/deps/openssl/openssl/apps/cmp.c +++ b/deps/openssl/openssl/apps/cmp.c @@ -1,5 +1,5 @@ /* - * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -1421,7 +1421,10 @@ static int setup_verification_ctx(OSSL_CMP_CTX *ctx) out_vpm = X509_STORE_get0_param(out_trusted); X509_VERIFY_PARAM_clear_flags(out_vpm, X509_V_FLAG_USE_CHECK_TIME); - (void)OSSL_CMP_CTX_set_certConf_cb_arg(ctx, out_trusted); + if (!OSSL_CMP_CTX_set_certConf_cb_arg(ctx, out_trusted)) { + X509_STORE_free(out_trusted); + return 0; + } } if (opt_disable_confirm) @@ -3390,6 +3393,12 @@ static void print_keyspec(OSSL_CMP_ATAVS *keySpec) int paramtype; const void *param; + /* NULL check to prevent dereferencing a NULL pointer when print_keyspec is called */ + if (alg == NULL) { + BIO_puts(mem, "Key algorithm: \n"); + break; + } + X509_ALGOR_get0(&oid, ¶mtype, ¶m, alg); BIO_printf(mem, "Key algorithm: "); i2a_ASN1_OBJECT(mem, oid); @@ -3789,8 +3798,7 @@ int cmp_main(int argc, char **argv) if (opt_ignore_keyusage) (void)OSSL_CMP_CTX_set_option(cmp_ctx, OSSL_CMP_OPT_IGNORE_KEYUSAGE, 1); if (opt_no_cache_extracerts) - (void)OSSL_CMP_CTX_set_option(cmp_ctx, OSSL_CMP_OPT_NO_CACHE_EXTRACERTS, - 1); + (void)OSSL_CMP_CTX_set_option(cmp_ctx, OSSL_CMP_OPT_NO_CACHE_EXTRACERTS, 1); if (opt_reqout_only == NULL && (opt_use_mock_srv #if !defined(OPENSSL_NO_SOCK) && !defined(OPENSSL_NO_HTTP) @@ -3806,7 +3814,7 @@ int cmp_main(int argc, char **argv) srv_cmp_ctx = OSSL_CMP_SRV_CTX_get0_cmp_ctx(srv_ctx); if (!OSSL_CMP_CTX_set_log_cb(srv_cmp_ctx, print_to_bio_err)) { - CMP_err1("cannot set up error reporting and logging for %s", prog); + CMP_err1("cannot set up server-side error reporting and logging for %s", prog); goto err; } OSSL_CMP_CTX_set_log_verbosity(srv_cmp_ctx, opt_verbosity); diff --git a/deps/openssl/openssl/apps/include/cmp_mock_srv.h b/deps/openssl/openssl/apps/include/cmp_mock_srv.h index 215b95b744aa71..a6220cdea21a3b 100644 --- a/deps/openssl/openssl/apps/include/cmp_mock_srv.h +++ b/deps/openssl/openssl/apps/include/cmp_mock_srv.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2018-2020 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -19,6 +19,8 @@ OSSL_CMP_SRV_CTX *ossl_cmp_mock_srv_new(OSSL_LIB_CTX *libctx, const char *propq); void ossl_cmp_mock_srv_free(OSSL_CMP_SRV_CTX *srv_ctx); +OSSL_CMP_MSG *ossl_cmp_mock_server_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); int ossl_cmp_mock_srv_set1_refCert(OSSL_CMP_SRV_CTX *srv_ctx, X509 *cert); int ossl_cmp_mock_srv_set1_certOut(OSSL_CMP_SRV_CTX *srv_ctx, X509 *cert); @@ -34,6 +36,7 @@ int ossl_cmp_mock_srv_set1_oldWithNew(OSSL_CMP_SRV_CTX *srv_ctx, X509 *cert); int ossl_cmp_mock_srv_set_statusInfo(OSSL_CMP_SRV_CTX *srv_ctx, int status, int fail_info, const char *text); int ossl_cmp_mock_srv_set_sendError(OSSL_CMP_SRV_CTX *srv_ctx, int bodytype); +int ossl_cmp_mock_srv_set_useBadProtection(OSSL_CMP_SRV_CTX *srv_ctx, int bodytype); int ossl_cmp_mock_srv_set_pollCount(OSSL_CMP_SRV_CTX *srv_ctx, int count); int ossl_cmp_mock_srv_set_checkAfterTime(OSSL_CMP_SRV_CTX *srv_ctx, int sec); diff --git a/deps/openssl/openssl/apps/lib/app_provider.c b/deps/openssl/openssl/apps/lib/app_provider.c index 6986ab4c10735f..3b66d048ea993e 100644 --- a/deps/openssl/openssl/apps/lib/app_provider.c +++ b/deps/openssl/openssl/apps/lib/app_provider.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -47,6 +47,7 @@ int app_provider_load(OSSL_LIB_CTX *libctx, const char *provider_name) app_providers = sk_OSSL_PROVIDER_new_null(); if (app_providers == NULL || !sk_OSSL_PROVIDER_push(app_providers, prov)) { + OSSL_PROVIDER_unload(prov); app_providers_cleanup(); return 0; } diff --git a/deps/openssl/openssl/apps/lib/apps.c b/deps/openssl/openssl/apps/lib/apps.c index 74644157e5caee..bc2e1c123a755a 100644 --- a/deps/openssl/openssl/apps/lib/apps.c +++ b/deps/openssl/openssl/apps/lib/apps.c @@ -191,8 +191,13 @@ int app_passwd(const char *arg1, const char *arg2, char **pass1, char **pass2) } if (arg2 != NULL) { *pass2 = app_get_pass(arg2, same ? 2 : 0); - if (*pass2 == NULL) + if (*pass2 == NULL) { + if (pass1 != NULL) { + clear_free(*pass1); + *pass1 = NULL; + } return 0; + } } else if (pass2 != NULL) { *pass2 = NULL; } @@ -263,15 +268,15 @@ static char *app_get_pass(const char *arg, int keepbio) } } else { /* argument syntax error; do not reveal too much about arg */ - tmp = strchr(arg, ':'); - if (tmp == NULL || tmp - arg > PASS_SOURCE_SIZE_MAX) + const char *arg_ptr = strchr(arg, ':'); + if (arg_ptr == NULL || arg_ptr - arg > PASS_SOURCE_SIZE_MAX) BIO_printf(bio_err, "Invalid password argument, missing ':' within the first %d chars\n", PASS_SOURCE_SIZE_MAX + 1); else BIO_printf(bio_err, "Invalid password argument, starting with \"%.*s\"\n", - (int)(tmp - arg + 1), arg); + (int)(arg_ptr - arg + 1), arg); return NULL; } } @@ -2494,7 +2499,7 @@ static STACK_OF(X509_CRL) *crls_http_cb(const X509_STORE_CTX *ctx, error: X509_CRL_free(crl); - sk_X509_CRL_free(crls); + sk_X509_CRL_pop_free(crls, X509_CRL_free); return NULL; } diff --git a/deps/openssl/openssl/apps/lib/cmp_mock_srv.c b/deps/openssl/openssl/apps/lib/cmp_mock_srv.c index bf8b06c390bd78..cf21e827788753 100644 --- a/deps/openssl/openssl/apps/lib/cmp_mock_srv.c +++ b/deps/openssl/openssl/apps/lib/cmp_mock_srv.c @@ -1,5 +1,5 @@ /* - * Copyright 2018-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2018-2020 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -10,6 +10,7 @@ #include "apps.h" #include "cmp_mock_srv.h" +#include "../../crypto/cmp/cmp_local.h" /* for access to msg->protection */ #include #include @@ -28,6 +29,7 @@ typedef struct { X509 *oldWithNew; /* to return in oldWithNew of rootKeyUpdate */ OSSL_CMP_PKISI *statusOut; /* status for ip/cp/kup/rp msg unless polling */ int sendError; /* send error response on given request type */ + int useBadProtection; /* use bad protection on given response type */ OSSL_CMP_MSG *req; /* original request message during polling */ int pollCount; /* number of polls before actual cert response */ int curr_pollCount; /* number of polls so far for current request */ @@ -59,6 +61,7 @@ static mock_srv_ctx *mock_srv_ctx_new(void) goto err; ctx->sendError = -1; + ctx->useBadProtection = -1; /* all other elements are initialized to 0 or NULL, respectively */ return ctx; @@ -187,6 +190,19 @@ int ossl_cmp_mock_srv_set_sendError(OSSL_CMP_SRV_CTX *srv_ctx, int bodytype) return 1; } +int ossl_cmp_mock_srv_set_useBadProtection(OSSL_CMP_SRV_CTX *srv_ctx, int bodytype) +{ + mock_srv_ctx *ctx = OSSL_CMP_SRV_CTX_get0_custom_ctx(srv_ctx); + + if (ctx == NULL) { + ERR_raise(ERR_LIB_CMP, CMP_R_NULL_ARGUMENT); + return 0; + } + /* might check bodytype, but this would require exporting all body types */ + ctx->useBadProtection = bodytype; + return 1; +} + int ossl_cmp_mock_srv_set_pollCount(OSSL_CMP_SRV_CTX *srv_ctx, int count) { mock_srv_ctx *ctx = OSSL_CMP_SRV_CTX_get0_custom_ctx(srv_ctx); @@ -591,6 +607,7 @@ static int process_genm(OSSL_CMP_SRV_CTX *srv_ctx, if (rsp != NULL && sk_OSSL_CMP_ITAV_push(*out, rsp)) return 1; sk_OSSL_CMP_ITAV_free(*out); + OSSL_CMP_ITAV_free(rsp); return 0; } @@ -712,6 +729,25 @@ static int process_pollReq(OSSL_CMP_SRV_CTX *srv_ctx, return 1; } +OSSL_CMP_MSG *ossl_cmp_mock_server_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req) +{ + OSSL_CMP_SRV_CTX *srv_ctx = OSSL_CMP_CTX_get_transfer_cb_arg(ctx); + OSSL_CMP_MSG *rsp = OSSL_CMP_CTX_server_perform(ctx, req); + + if (srv_ctx != NULL && rsp != NULL) { + mock_srv_ctx *mock_ctx = OSSL_CMP_SRV_CTX_get0_custom_ctx(srv_ctx); + + if (mock_ctx != NULL && OSSL_CMP_MSG_get_bodytype(rsp) == mock_ctx->useBadProtection) { + ASN1_BIT_STRING *prot = rsp->protection; + + if (prot != NULL && prot->length != 0 && prot->data != NULL) + prot->data[0] ^= 0x80; /* flip most significant bit of the first byte */ + } + } + return rsp; +} + OSSL_CMP_SRV_CTX *ossl_cmp_mock_srv_new(OSSL_LIB_CTX *libctx, const char *propq) { OSSL_CMP_SRV_CTX *srv_ctx = OSSL_CMP_SRV_CTX_new(libctx, propq); diff --git a/deps/openssl/openssl/apps/lib/win32_init.c b/deps/openssl/openssl/apps/lib/win32_init.c index 824eb676310e8c..0ea2048283cbcd 100644 --- a/deps/openssl/openssl/apps/lib/win32_init.c +++ b/deps/openssl/openssl/apps/lib/win32_init.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,6 @@ #include #include #include -#include #if defined(CP_UTF8) diff --git a/deps/openssl/openssl/apps/ocsp.c b/deps/openssl/openssl/apps/ocsp.c index a9b248d3a19826..e2c147ef097ca6 100644 --- a/deps/openssl/openssl/apps/ocsp.c +++ b/deps/openssl/openssl/apps/ocsp.c @@ -876,7 +876,7 @@ int ocsp_main(int argc, char **argv) i = OCSP_basic_verify(bs, verify_other, store, verify_flags); if (i <= 0 && issuers) { - i = OCSP_basic_verify(bs, issuers, store, OCSP_TRUSTOTHER); + i = OCSP_basic_verify(bs, issuers, store, verify_flags); if (i > 0) ERR_clear_error(); } diff --git a/deps/openssl/openssl/apps/s_client.c b/deps/openssl/openssl/apps/s_client.c index 3625f8fcdc99d1..d356359a97efbd 100644 --- a/deps/openssl/openssl/apps/s_client.c +++ b/deps/openssl/openssl/apps/s_client.c @@ -3892,7 +3892,11 @@ static void user_data_init(struct user_data_st *user_data, SSL *con, char *buf, static int user_data_add(struct user_data_st *user_data, size_t i) { - if (user_data->buflen != 0 || i > user_data->bufmax) + /* + * We must allow one byte for a NUL terminator so i must be less than + * bufmax + */ + if (user_data->buflen != 0 || i >= user_data->bufmax) return 0; user_data->buflen = i; diff --git a/deps/openssl/openssl/apps/ts.c b/deps/openssl/openssl/apps/ts.c index bd800bfaa32276..af355bfc05e87a 100644 --- a/deps/openssl/openssl/apps/ts.c +++ b/deps/openssl/openssl/apps/ts.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -348,7 +348,7 @@ int ts_main(int argc, char **argv) if ((in != NULL) && (queryfile != NULL)) goto opthelp; if (in == NULL) { - if ((conf == NULL) || (token_in != 0)) + if (conf == NULL || token_in != 0 || queryfile == NULL) goto opthelp; } ret = !reply_command(conf, section, engine, queryfile, diff --git a/deps/openssl/openssl/build.info b/deps/openssl/openssl/build.info index 22c7c8a94b1f96..144efbbe20f578 100644 --- a/deps/openssl/openssl/build.info +++ b/deps/openssl/openssl/build.info @@ -108,12 +108,10 @@ IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-|BC-)/ -}] SHARED_SOURCE[libssl]=libssl.rc ENDIF -# This file sets the build directory up for CMake inclusion -# Note: This generation of OpenSSLConfig[Version].cmake is used -# for building openssl locally, and so the build variables are -# taken from builddata.pm rather than installdata.pm. For exportable -# versions of these generated files, you'll find them in the exporters -# directory +# These files set the build directory up for CMake inclusion. +# To achieve this, their variables are taken from builddata.pm. +# These files are not installed; you will find the installable +# versions in the 'exporters' directory. GENERATE[OpenSSLConfig.cmake]=exporters/cmake/OpenSSLConfig.cmake.in DEPEND[OpenSSLConfig.cmake]=builddata.pm GENERATE[OpenSSLConfigVersion.cmake]=exporters/cmake/OpenSSLConfigVersion.cmake.in @@ -121,7 +119,10 @@ DEPEND[OpenSSLConfigVersion.cmake]=builddata.pm DEPEND[OpenSSLConfigVersion.cmake]=OpenSSLConfig.cmake DEPEND[""]=OpenSSLConfigVersion.cmake -# This file sets the build directory up for pkg-config +# These files set the build directory up for pkg-config use. +# To achieve this, their variables are taken from builddata.pm. +# These files are not installed; you will find the installable +# versions in the 'exporters' directory. GENERATE[libcrypto.pc]=exporters/pkg-config/libcrypto.pc.in DEPEND[libcrypto.pc]=builddata.pm GENERATE[libssl.pc]=exporters/pkg-config/libssl.pc.in @@ -131,6 +132,7 @@ DEPEND[openssl.pc]=builddata.pm DEPEND[openssl.pc]=libcrypto.pc libssl.pc GENERATE[builddata.pm]=util/mkinstallvars.pl \ + COMMENT="This file should be used when building against this OpenSSL build, and should never be installed" \ PREFIX=. BINDIR=apps APPLINKDIR=ms \ LIBDIR= INCLUDEDIR=include "INCLUDEDIR=$(SRCDIR)/include" \ ENGINESDIR=engines MODULESDIR=providers \ diff --git a/deps/openssl/openssl/crypto/aes/asm/aes-riscv32-zkn.pl b/deps/openssl/openssl/crypto/aes/asm/aes-riscv32-zkn.pl index 6fac45184620f3..ed8f4a7f83aa4c 100644 --- a/deps/openssl/openssl/crypto/aes/asm/aes-riscv32-zkn.pl +++ b/deps/openssl/openssl/crypto/aes/asm/aes-riscv32-zkn.pl @@ -2,7 +2,7 @@ # This file is dual-licensed, meaning that you can use it under your # choice of either of the following two licenses: # -# Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You can obtain # a copy in the file LICENSE in the source distribution or at @@ -704,11 +704,6 @@ sub AES_set_common { my ($ke128, $ke192, $ke256) = @_; my $ret = ''; $ret .= <<___; - bnez $UKEY,1f # if (!userKey || !key) return -1; - bnez $KEYP,1f - li a0,-1 - ret -1: # Determine number of rounds from key size in bits li $T0,128 bne $BITS,$T0,1f diff --git a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zkn.pl b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zkn.pl index 0e8a1540c43824..68c213e43e349e 100644 --- a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zkn.pl +++ b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zkn.pl @@ -2,7 +2,7 @@ # This file is dual-licensed, meaning that you can use it under your # choice of either of the following two licenses: # -# Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You can obtain # a copy in the file LICENSE in the source distribution or at @@ -392,11 +392,6 @@ sub AES_set_common { my ($ke128, $ke192, $ke256) = @_; my $ret = ''; $ret .= <<___; - bnez $UKEY,1f # if (!userKey || !key) return -1; - bnez $KEYP,1f - li a0,-1 - ret -1: # Determine number of rounds from key size in bits li $T0,128 bne $BITS,$T0,1f diff --git a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zvkned.pl b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zvkned.pl index 4c0292781d9f8e..014fa6807d33cb 100644 --- a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zvkned.pl +++ b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64-zvkned.pl @@ -2,7 +2,7 @@ # This file is dual-licensed, meaning that you can use it under your # choice of either of the following two licenses: # -# Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You can obtain # a copy in the file LICENSE in the source distribution or at @@ -828,9 +828,6 @@ sub aes_256_decrypt { .globl rv64i_zvkned_set_encrypt_key .type rv64i_zvkned_set_encrypt_key,\@function rv64i_zvkned_set_encrypt_key: - beqz $UKEY, L_fail_m1 - beqz $KEYP, L_fail_m1 - # Get proper routine for key size li $T0, 256 beq $BITS, $T0, L_set_key_256 @@ -847,9 +844,6 @@ sub aes_256_decrypt { .globl rv64i_zvkned_set_decrypt_key .type rv64i_zvkned_set_decrypt_key,\@function rv64i_zvkned_set_decrypt_key: - beqz $UKEY, L_fail_m1 - beqz $KEYP, L_fail_m1 - # Get proper routine for key size li $T0, 256 beq $BITS, $T0, L_set_key_256 @@ -1356,11 +1350,6 @@ sub aes_256_decrypt { } $code .= <<___; -L_fail_m1: - li a0, -1 - ret -.size L_fail_m1,.-L_fail_m1 - L_fail_m2: li a0, -2 ret diff --git a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64.pl b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64.pl index 525eba4b463802..4bf9edae6858f4 100644 --- a/deps/openssl/openssl/crypto/aes/asm/aes-riscv64.pl +++ b/deps/openssl/openssl/crypto/aes/asm/aes-riscv64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -773,11 +773,13 @@ sub do_enc_lookup { ___ $code .= save_regs(); $code .= <<___; - bnez $UKEY,1f # if (!userKey || !key) return -1; - bnez $KEYP,1f + beqz $UKEY,1f # if (!userKey || !key) return -1; + beqz $KEYP,1f + j 2f +1: li a0,-1 ret -1: +2: la $RCON,AES_rcon la $TBL,AES_Te0 li $T8,128 diff --git a/deps/openssl/openssl/crypto/asn1/evp_asn1.c b/deps/openssl/openssl/crypto/asn1/evp_asn1.c index caa079fad0ec81..2d50dc657baca6 100644 --- a/deps/openssl/openssl/crypto/asn1/evp_asn1.c +++ b/deps/openssl/openssl/crypto/asn1/evp_asn1.c @@ -95,7 +95,7 @@ ASN1_SEQUENCE(asn1_int_oct) = { ASN1_SIMPLE(asn1_int_oct, oct, ASN1_OCTET_STRING) } static_ASN1_SEQUENCE_END(asn1_int_oct) - DECLARE_ASN1_ITEM(asn1_int_oct) +DECLARE_ASN1_ITEM(asn1_int_oct) int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data, int len) @@ -158,7 +158,7 @@ ASN1_SEQUENCE(asn1_oct_int) = { ASN1_EMBED(asn1_oct_int, num, INT32) } static_ASN1_SEQUENCE_END(asn1_oct_int) - DECLARE_ASN1_ITEM(asn1_oct_int) +DECLARE_ASN1_ITEM(asn1_oct_int) int ossl_asn1_type_set_octetstring_int(ASN1_TYPE *a, long num, unsigned char *data, int len) diff --git a/deps/openssl/openssl/crypto/asn1/n_pkey.c b/deps/openssl/openssl/crypto/asn1/n_pkey.c index 7b70d6c7a0cf03..47f3a9802f8275 100644 --- a/deps/openssl/openssl/crypto/asn1/n_pkey.c +++ b/deps/openssl/openssl/crypto/asn1/n_pkey.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -52,6 +52,6 @@ ASN1_SEQUENCE(NETSCAPE_PKEY) = { ASN1_SIMPLE(NETSCAPE_PKEY, private_key, ASN1_OCTET_STRING) } static_ASN1_SEQUENCE_END(NETSCAPE_PKEY) - DECLARE_ASN1_FUNCTIONS(NETSCAPE_PKEY) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_PKEY) DECLARE_ASN1_ENCODE_FUNCTIONS_name(NETSCAPE_PKEY, NETSCAPE_PKEY) IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_PKEY) diff --git a/deps/openssl/openssl/crypto/asn1/p5_scrypt.c b/deps/openssl/openssl/crypto/asn1/p5_scrypt.c index b6d7eee3c95e8d..532740aab8a3c2 100644 --- a/deps/openssl/openssl/crypto/asn1/p5_scrypt.c +++ b/deps/openssl/openssl/crypto/asn1/p5_scrypt.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -44,7 +44,7 @@ X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, uint64_t p) { X509_ALGOR *scheme = NULL, *ret = NULL; - int alg_nid; + int alg_nid, ivlen; size_t keylen = 0; EVP_CIPHER_CTX *ctx = NULL; unsigned char iv[EVP_MAX_IV_LENGTH]; @@ -83,10 +83,11 @@ X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, } /* Create random IV */ - if (EVP_CIPHER_get_iv_length(cipher)) { + ivlen = EVP_CIPHER_get_iv_length(cipher); + if (ivlen > 0) { if (aiv) - memcpy(iv, aiv, EVP_CIPHER_get_iv_length(cipher)); - else if (RAND_bytes(iv, EVP_CIPHER_get_iv_length(cipher)) <= 0) + memcpy(iv, aiv, ivlen); + else if (RAND_bytes(iv, ivlen) <= 0) goto err; } diff --git a/deps/openssl/openssl/crypto/bf/bf_cfb64.c b/deps/openssl/openssl/crypto/bf/bf_cfb64.c index e380972dbdc9f3..f2d42eefba8024 100644 --- a/deps/openssl/openssl/crypto/bf/bf_cfb64.c +++ b/deps/openssl/openssl/crypto/bf/bf_cfb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num, int encrypt) { register BF_LONG v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; BF_LONG ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/bf/bf_ofb64.c b/deps/openssl/openssl/crypto/bf/bf_ofb64.c index 5c9193add17e91..2cd339dd27eb64 100644 --- a/deps/openssl/openssl/crypto/bf/bf_ofb64.c +++ b/deps/openssl/openssl/crypto/bf/bf_ofb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,7 +26,7 @@ void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num) { register BF_LONG v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned char d[8]; register char *dp; diff --git a/deps/openssl/openssl/crypto/bio/bss_dgram.c b/deps/openssl/openssl/crypto/bio/bss_dgram.c index 72f63cb33e5196..c16ec00e9e2f6d 100644 --- a/deps/openssl/openssl/crypto/bio/bss_dgram.c +++ b/deps/openssl/openssl/crypto/bio/bss_dgram.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -961,7 +961,7 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr) ERR_raise_data(ERR_LIB_SYS, get_last_socket_error(), "calling setsockopt()"); -#elif defined(OPENSSL_SYS_LINUX) && defined(IPV6_MTU_DISCOVER) +#elif defined(OPENSSL_SYS_LINUX) && defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_PROBE) sockopt_val = num ? IPV6_PMTUDISC_PROBE : IPV6_PMTUDISC_DONT; if ((ret = setsockopt(b->num, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &sockopt_val, sizeof(sockopt_val))) diff --git a/deps/openssl/openssl/crypto/bio/bss_file.c b/deps/openssl/openssl/crypto/bio/bss_file.c index c5bdda498bd0e2..6b8daeb95f9054 100644 --- a/deps/openssl/openssl/crypto/bio/bss_file.c +++ b/deps/openssl/openssl/crypto/bio/bss_file.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -202,8 +202,19 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) case BIO_CTRL_INFO: if (b->flags & BIO_FLAGS_UPLINK_INTERNAL) ret = UP_ftell(b->ptr); - else + else { +#if defined(OPENSSL_SYS_WINDOWS) + /* + * On Windows, for non-seekable files (stdin), ftell() is undefined. + */ + if (GetFileType((HANDLE)_get_osfhandle(_fileno(fp))) != FILE_TYPE_DISK) + ret = -1; + else + ret = ftell(fp); +#else ret = ftell(fp); +#endif + } break; case BIO_C_SET_FILE_PTR: file_free(b); diff --git a/deps/openssl/openssl/crypto/bn/asm/armv4-gf2m.pl b/deps/openssl/openssl/crypto/bn/asm/armv4-gf2m.pl index 5733a0174660ae..923e6d4464d2f0 100644 --- a/deps/openssl/openssl/crypto/bn/asm/armv4-gf2m.pl +++ b/deps/openssl/openssl/crypto/bn/asm/armv4-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -37,7 +37,7 @@ # Câmara, D.; Gouvêa, C. P. L.; López, J. & Dahab, R.: Fast Software # Polynomial Multiplication on ARM Processors using the NEON Engine. # -# http://conradoplg.cryptoland.net/files/2010/12/mocrysen13.pdf +# https://conradoplg.modp.net/files/2010/12/mocrysen13.pdf # $output is the last argument if it looks like a file (it has an extension) # $flavour is the first argument if it doesn't look like a file diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl index ea45d2051a70ca..b84a3e4f1954a2 100644 --- a/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl +++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-2k-avxifma.pl @@ -1,4 +1,4 @@ -# Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2024, Intel Corporation. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use @@ -362,6 +362,23 @@ sub amm52x20_x1_norm { .cfi_push %r14 push %r15 .cfi_push %r15 +___ +$code.=<<___ if ($win64); + push %rsi # save non-volatile registers + push %rdi + lea -168(%rsp), %rsp # 16*10 + (8 bytes to get correct 16-byte SIMD alignment) + vmovapd %xmm6, `16*0`(%rsp) + vmovapd %xmm7, `16*1`(%rsp) + vmovapd %xmm8, `16*2`(%rsp) + vmovapd %xmm9, `16*3`(%rsp) + vmovapd %xmm10, `16*4`(%rsp) + vmovapd %xmm11, `16*5`(%rsp) + vmovapd %xmm12, `16*6`(%rsp) + vmovapd %xmm13, `16*7`(%rsp) + vmovapd %xmm14, `16*8`(%rsp) + vmovapd %xmm15, `16*9`(%rsp) +___ +$code.=<<___; .Lossl_rsaz_amm52x20_x1_avxifma256_body: # Zeroing accumulators @@ -401,6 +418,23 @@ sub amm52x20_x1_norm { vmovdqu $R2_0, `4*32`($res) vzeroupper +___ +$code.=<<___ if ($win64); + vmovapd `16*0`(%rsp), %xmm6 + vmovapd `16*1`(%rsp), %xmm7 + vmovapd `16*2`(%rsp), %xmm8 + vmovapd `16*3`(%rsp), %xmm9 + vmovapd `16*4`(%rsp), %xmm10 + vmovapd `16*5`(%rsp), %xmm11 + vmovapd `16*6`(%rsp), %xmm12 + vmovapd `16*7`(%rsp), %xmm13 + vmovapd `16*8`(%rsp), %xmm14 + vmovapd `16*9`(%rsp), %xmm15 + lea 168(%rsp), %rsp + pop %rdi + pop %rsi +___ +$code.=<<___; mov 0(%rsp),%r15 .cfi_restore %r15 mov 8(%rsp),%r14 @@ -553,6 +587,23 @@ sub amm52x20_x1_norm { .cfi_push %r14 push %r15 .cfi_push %r15 +___ +$code.=<<___ if ($win64); + push %rsi # save non-volatile registers + push %rdi + lea -168(%rsp), %rsp # 16*10 + (8 bytes to get correct 16-byte SIMD alignment) + vmovapd %xmm6, `16*0`(%rsp) + vmovapd %xmm7, `16*1`(%rsp) + vmovapd %xmm8, `16*2`(%rsp) + vmovapd %xmm9, `16*3`(%rsp) + vmovapd %xmm10, `16*4`(%rsp) + vmovapd %xmm11, `16*5`(%rsp) + vmovapd %xmm12, `16*6`(%rsp) + vmovapd %xmm13, `16*7`(%rsp) + vmovapd %xmm14, `16*8`(%rsp) + vmovapd %xmm15, `16*9`(%rsp) +___ +$code.=<<___; .Lossl_rsaz_amm52x20_x2_avxifma256_body: # Zeroing accumulators @@ -604,6 +655,23 @@ sub amm52x20_x1_norm { vmovdqu $R2_1, `9*32`($res) vzeroupper +___ +$code.=<<___ if ($win64); + vmovapd `16*0`(%rsp), %xmm6 + vmovapd `16*1`(%rsp), %xmm7 + vmovapd `16*2`(%rsp), %xmm8 + vmovapd `16*3`(%rsp), %xmm9 + vmovapd `16*4`(%rsp), %xmm10 + vmovapd `16*5`(%rsp), %xmm11 + vmovapd `16*6`(%rsp), %xmm12 + vmovapd `16*7`(%rsp), %xmm13 + vmovapd `16*8`(%rsp), %xmm14 + vmovapd `16*9`(%rsp), %xmm15 + lea 168(%rsp), %rsp + pop %rdi + pop %rsi +___ +$code.=<<___; mov 0(%rsp),%r15 .cfi_restore %r15 mov 8(%rsp),%r14 @@ -663,6 +731,23 @@ sub amm52x20_x1_norm { ossl_extract_multiplier_2x20_win5_avx: .cfi_startproc endbranch +___ +$code.=<<___ if ($win64); + push %rsi # save non-volatile registers + push %rdi + lea -168(%rsp), %rsp # 16*10 + (8 bytes to get correct 16-byte SIMD alignment) + vmovapd %xmm6, `16*0`(%rsp) + vmovapd %xmm7, `16*1`(%rsp) + vmovapd %xmm8, `16*2`(%rsp) + vmovapd %xmm9, `16*3`(%rsp) + vmovapd %xmm10, `16*4`(%rsp) + vmovapd %xmm11, `16*5`(%rsp) + vmovapd %xmm12, `16*6`(%rsp) + vmovapd %xmm13, `16*7`(%rsp) + vmovapd %xmm14, `16*8`(%rsp) + vmovapd %xmm15, `16*9`(%rsp) +___ +$code.=<<___; vmovapd .Lones(%rip), $ones # broadcast ones vmovq $red_tbl_idx1, $tmp_xmm vpbroadcastq $tmp_xmm, $idx1 @@ -708,6 +793,24 @@ sub amm52x20_x1_norm { foreach (0..9) { $code.="vmovdqu $t[$_], `${_}*32`($out) \n"; } +$code.=<<___; + vzeroupper +___ +$code.=<<___ if ($win64); + vmovapd `16*0`(%rsp), %xmm6 + vmovapd `16*1`(%rsp), %xmm7 + vmovapd `16*2`(%rsp), %xmm8 + vmovapd `16*3`(%rsp), %xmm9 + vmovapd `16*4`(%rsp), %xmm10 + vmovapd `16*5`(%rsp), %xmm11 + vmovapd `16*6`(%rsp), %xmm12 + vmovapd `16*7`(%rsp), %xmm13 + vmovapd `16*8`(%rsp), %xmm14 + vmovapd `16*9`(%rsp), %xmm15 + lea 168(%rsp), %rsp + pop %rdi + pop %rsi +___ $code.=<<___; ret .cfi_endproc diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl index a19cb5aaa30927..1948d726b38b43 100644 --- a/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl +++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-3k-avxifma.pl @@ -1,4 +1,4 @@ -# Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2024, Intel Corporation. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use @@ -87,8 +87,6 @@ my $mask52 = "%rax"; my $acc0_0 = "%r9"; my $acc0_0_low = "%r9d"; -my $acc0_1 = "%r15"; -my $acc0_1_low = "%r15d"; my $b_ptr = "%r11"; my $iter = "%ebx"; @@ -741,7 +739,7 @@ sub amm52x30_x1_norm { vmovdqu $R3_0, `6*32`($res) vmovdqu $R3_0h, `7*32`($res) - xorl $acc0_1_low, $acc0_1_low + xorl $acc0_0_low, $acc0_0_low lea 16($b_ptr), $b_ptr movq \$0xfffffffffffff, $mask52 # 52-bit mask @@ -857,6 +855,23 @@ sub amm52x30_x1_norm { ossl_extract_multiplier_2x30_win5_avx: .cfi_startproc endbranch +___ +$code.=<<___ if ($win64); + push %rsi # save non-volatile registers + push %rdi + lea -168(%rsp), %rsp # 16*10 + (8 bytes to get correct 16-byte SIMD alignment) + vmovapd %xmm6, `16*0`(%rsp) + vmovapd %xmm7, `16*1`(%rsp) + vmovapd %xmm8, `16*2`(%rsp) + vmovapd %xmm9, `16*3`(%rsp) + vmovapd %xmm10, `16*4`(%rsp) + vmovapd %xmm11, `16*5`(%rsp) + vmovapd %xmm12, `16*6`(%rsp) + vmovapd %xmm13, `16*7`(%rsp) + vmovapd %xmm14, `16*8`(%rsp) + vmovapd %xmm15, `16*9`(%rsp) +___ +$code.=<<___; vmovapd .Lones(%rip), $ones # broadcast ones vmovq $red_tbl_idx1, $tmp_xmm vpbroadcastq $tmp_xmm, $idx1 @@ -930,6 +945,24 @@ sub amm52x30_x1_norm { $code.="vmovdqu $t[$_], `${_}*32`($out) \n"; } +$code.=<<___; + vzeroupper +___ +$code.=<<___ if ($win64); + vmovapd `16*0`(%rsp), %xmm6 + vmovapd `16*1`(%rsp), %xmm7 + vmovapd `16*2`(%rsp), %xmm8 + vmovapd `16*3`(%rsp), %xmm9 + vmovapd `16*4`(%rsp), %xmm10 + vmovapd `16*5`(%rsp), %xmm11 + vmovapd `16*6`(%rsp), %xmm12 + vmovapd `16*7`(%rsp), %xmm13 + vmovapd `16*8`(%rsp), %xmm14 + vmovapd `16*9`(%rsp), %xmm15 + lea 168(%rsp), %rsp + pop %rdi + pop %rsi +___ $code.=<<___; diff --git a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl index f15e2d74118cb0..9f299430cefcd2 100644 --- a/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl +++ b/deps/openssl/openssl/crypto/bn/asm/rsaz-4k-avxifma.pl @@ -1,4 +1,4 @@ -# Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2024, Intel Corporation. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use @@ -84,8 +84,6 @@ my $mask52 = "%rax"; my $acc0_0 = "%r9"; my $acc0_0_low = "%r9d"; -my $acc0_1 = "%r15"; -my $acc0_1_low = "%r15d"; my $b_ptr = "%r11"; my $iter = "%ebx"; @@ -834,7 +832,7 @@ sub amm52x40_x1_norm { vmovdqu $R4_0, `8*32`($res) vmovdqu $R4_0h, `9*32`($res) - xorl $acc0_1_low, $acc0_1_low + xorl $acc0_0_low, $acc0_0_low movq \$0xfffffffffffff, $mask52 @@ -975,6 +973,23 @@ () ossl_extract_multiplier_2x40_win5_avx: .cfi_startproc endbranch +___ +$code.=<<___ if ($win64); + push %rsi # save non-volatile registers + push %rdi + lea -168(%rsp), %rsp # 16*10 + (8 bytes to get correct 16-byte SIMD alignment) + vmovapd %xmm6, `16*0`(%rsp) + vmovapd %xmm7, `16*1`(%rsp) + vmovapd %xmm8, `16*2`(%rsp) + vmovapd %xmm9, `16*3`(%rsp) + vmovapd %xmm10, `16*4`(%rsp) + vmovapd %xmm11, `16*5`(%rsp) + vmovapd %xmm12, `16*6`(%rsp) + vmovapd %xmm13, `16*7`(%rsp) + vmovapd %xmm14, `16*8`(%rsp) + vmovapd %xmm15, `16*9`(%rsp) +___ +$code.=<<___; vmovapd .Lones(%rip), $ones # broadcast ones vmovq $red_tbl_idx1, $tmp_xmm vpbroadcastq $tmp_xmm, $idx1 @@ -1001,6 +1016,24 @@ () foreach (0..9) { $code.="vmovdqu $t[$_], `(10+$_)*32`($out) \n"; } +$code.=<<___; + vzeroupper +___ +$code.=<<___ if ($win64); + vmovapd `16*0`(%rsp), %xmm6 + vmovapd `16*1`(%rsp), %xmm7 + vmovapd `16*2`(%rsp), %xmm8 + vmovapd `16*3`(%rsp), %xmm9 + vmovapd `16*4`(%rsp), %xmm10 + vmovapd `16*5`(%rsp), %xmm11 + vmovapd `16*6`(%rsp), %xmm12 + vmovapd `16*7`(%rsp), %xmm13 + vmovapd `16*8`(%rsp), %xmm14 + vmovapd `16*9`(%rsp), %xmm15 + lea 168(%rsp), %rsp + pop %rdi + pop %rsi +___ $code.=<<___; ret diff --git a/deps/openssl/openssl/crypto/bn/asm/sparcv9-mont.pl b/deps/openssl/openssl/crypto/bn/asm/sparcv9-mont.pl index fe51fcaf81c75e..d438af5626489d 100644 --- a/deps/openssl/openssl/crypto/bn/asm/sparcv9-mont.pl +++ b/deps/openssl/openssl/crypto/bn/asm/sparcv9-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -394,11 +394,11 @@ mulx $car1,$mul1,$car1 mulx $npj,$mul1,$acc1 + add $tmp1,$car0,$car0 add $tmp0,$car1,$car1 and $car0,$mask,$acc0 ld [$np+8],$npj ! np[2] srlx $car1,32,$car1 - add $tmp1,$car1,$car1 srlx $car0,32,$car0 add $acc0,$car1,$car1 and $car0,1,$sbit diff --git a/deps/openssl/openssl/crypto/bn/bn_dh.c b/deps/openssl/openssl/crypto/bn/bn_dh.c index 542c33d6a8d7a7..d069481e981b95 100644 --- a/deps/openssl/openssl/crypto/bn/bn_dh.c +++ b/deps/openssl/openssl/crypto/bn/bn_dh.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,7 +14,7 @@ #include "crypto/bn_dh.h" #if BN_BITS2 == 64 -#define BN_DEF(lo, hi) (BN_ULONG) hi << 32 | lo +#define BN_DEF(lo, hi) (BN_ULONG)hi << 32 | lo #else #define BN_DEF(lo, hi) lo, hi #endif @@ -1387,37 +1387,37 @@ const BIGNUM ossl_bignum_const_2 = { }; make_dh_bn(dh1024_160_p) - make_dh_bn(dh1024_160_q) - make_dh_bn(dh1024_160_g) - make_dh_bn(dh2048_224_p) - make_dh_bn(dh2048_224_q) - make_dh_bn(dh2048_224_g) - make_dh_bn(dh2048_256_p) - make_dh_bn(dh2048_256_q) - make_dh_bn(dh2048_256_g) +make_dh_bn(dh1024_160_q) +make_dh_bn(dh1024_160_g) +make_dh_bn(dh2048_224_p) +make_dh_bn(dh2048_224_q) +make_dh_bn(dh2048_224_g) +make_dh_bn(dh2048_256_p) +make_dh_bn(dh2048_256_q) +make_dh_bn(dh2048_256_g) - make_dh_bn(ffdhe2048_p) - make_dh_bn(ffdhe2048_q) - make_dh_bn(ffdhe3072_p) - make_dh_bn(ffdhe3072_q) - make_dh_bn(ffdhe4096_p) - make_dh_bn(ffdhe4096_q) - make_dh_bn(ffdhe6144_p) - make_dh_bn(ffdhe6144_q) - make_dh_bn(ffdhe8192_p) - make_dh_bn(ffdhe8192_q) +make_dh_bn(ffdhe2048_p) +make_dh_bn(ffdhe2048_q) +make_dh_bn(ffdhe3072_p) +make_dh_bn(ffdhe3072_q) +make_dh_bn(ffdhe4096_p) +make_dh_bn(ffdhe4096_q) +make_dh_bn(ffdhe6144_p) +make_dh_bn(ffdhe6144_q) +make_dh_bn(ffdhe8192_p) +make_dh_bn(ffdhe8192_q) #ifndef FIPS_MODULE - make_dh_bn(modp_1536_p) - make_dh_bn(modp_1536_q) +make_dh_bn(modp_1536_p) +make_dh_bn(modp_1536_q) #endif - make_dh_bn(modp_2048_p) - make_dh_bn(modp_2048_q) - make_dh_bn(modp_3072_p) - make_dh_bn(modp_3072_q) - make_dh_bn(modp_4096_p) - make_dh_bn(modp_4096_q) - make_dh_bn(modp_6144_p) - make_dh_bn(modp_6144_q) - make_dh_bn(modp_8192_p) - make_dh_bn(modp_8192_q) +make_dh_bn(modp_2048_p) +make_dh_bn(modp_2048_q) +make_dh_bn(modp_3072_p) +make_dh_bn(modp_3072_q) +make_dh_bn(modp_4096_p) +make_dh_bn(modp_4096_q) +make_dh_bn(modp_6144_p) +make_dh_bn(modp_6144_q) +make_dh_bn(modp_8192_p) +make_dh_bn(modp_8192_q) diff --git a/deps/openssl/openssl/crypto/bn/bn_exp.c b/deps/openssl/openssl/crypto/bn/bn_exp.c index 58d38b9ebd2a80..44931f803802c4 100644 --- a/deps/openssl/openssl/crypto/bn/bn_exp.c +++ b/deps/openssl/openssl/crypto/bn/bn_exp.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -771,16 +771,16 @@ int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, typedef int (*bn_pwr5_mont_f)(BN_ULONG *tp, const BN_ULONG *np, const BN_ULONG *n0, const void *table, int power, int bits); - int bn_pwr5_mont_t4_8(BN_ULONG * tp, const BN_ULONG *np, + int bn_pwr5_mont_t4_8(BN_ULONG *tp, const BN_ULONG *np, const BN_ULONG *n0, const void *table, int power, int bits); - int bn_pwr5_mont_t4_16(BN_ULONG * tp, const BN_ULONG *np, + int bn_pwr5_mont_t4_16(BN_ULONG *tp, const BN_ULONG *np, const BN_ULONG *n0, const void *table, int power, int bits); - int bn_pwr5_mont_t4_24(BN_ULONG * tp, const BN_ULONG *np, + int bn_pwr5_mont_t4_24(BN_ULONG *tp, const BN_ULONG *np, const BN_ULONG *n0, const void *table, int power, int bits); - int bn_pwr5_mont_t4_32(BN_ULONG * tp, const BN_ULONG *np, + int bn_pwr5_mont_t4_32(BN_ULONG *tp, const BN_ULONG *np, const BN_ULONG *n0, const void *table, int power, int bits); static const bn_pwr5_mont_f pwr5_funcs[4] = { @@ -792,15 +792,15 @@ int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, typedef int (*bn_mul_mont_f)(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_8(BN_ULONG * rp, const BN_ULONG *ap, const void *bp, + int bn_mul_mont_t4_8(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_16(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_16(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_24(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_24(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_32(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_32(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0); static const bn_mul_mont_f mul_funcs[4] = { @@ -809,20 +809,20 @@ int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, }; bn_mul_mont_f mul_worker = mul_funcs[top / 16 - 1]; - void bn_mul_mont_vis3(BN_ULONG * rp, const BN_ULONG *ap, + void bn_mul_mont_vis3(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - void bn_mul_mont_t4(BN_ULONG * rp, const BN_ULONG *ap, + void bn_mul_mont_t4(BN_ULONG *rp, const BN_ULONG *ap, const void *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - void bn_mul_mont_gather5_t4(BN_ULONG * rp, const BN_ULONG *ap, + void bn_mul_mont_gather5_t4(BN_ULONG *rp, const BN_ULONG *ap, const void *table, const BN_ULONG *np, const BN_ULONG *n0, int num, int power); void bn_flip_n_scatter5_t4(const BN_ULONG *inp, size_t num, void *table, size_t power); - void bn_gather5_t4(BN_ULONG * out, size_t num, + void bn_gather5_t4(BN_ULONG *out, size_t num, void *table, size_t power); - void bn_flip_t4(BN_ULONG * dst, BN_ULONG * src, size_t num); + void bn_flip_t4(BN_ULONG *dst, BN_ULONG *src, size_t num); BN_ULONG *np = mont->N.d, *n0 = mont->n0; int stride = 5 * (6 - (top / 16 - 1)); /* multiple of 5, but less @@ -922,13 +922,13 @@ int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, * Given those inputs, |bn_mul_mont| may not give reduced * output, but it will still produce "almost" reduced output. */ - void bn_mul_mont_gather5(BN_ULONG * rp, const BN_ULONG *ap, + void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap, const void *table, const BN_ULONG *np, const BN_ULONG *n0, int num, int power); void bn_scatter5(const BN_ULONG *inp, size_t num, void *table, size_t power); - void bn_gather5(BN_ULONG * out, size_t num, void *table, size_t power); - void bn_power5(BN_ULONG * rp, const BN_ULONG *ap, + void bn_gather5(BN_ULONG *out, size_t num, void *table, size_t power); + void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const void *table, const BN_ULONG *np, const BN_ULONG *n0, int num, int power); int bn_get_bits5(const BN_ULONG *ap, int off); diff --git a/deps/openssl/openssl/crypto/bn/bn_local.h b/deps/openssl/openssl/crypto/bn/bn_local.h index 45b545bce3dd60..9ebadfd76e79f7 100644 --- a/deps/openssl/openssl/crypto/bn/bn_local.h +++ b/deps/openssl/openssl/crypto/bn/bn_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -387,7 +387,7 @@ struct bn_gencb_st { #elif defined(__alpha) && (defined(SIXTY_FOUR_BIT_LONG) || defined(SIXTY_FOUR_BIT)) #if defined(__DECC) #include -#define BN_UMULT_HIGH(a, b) (BN_ULONG) asm("umulh %a0,%a1,%v0", (a), (b)) +#define BN_UMULT_HIGH(a, b) (BN_ULONG)asm("umulh %a0,%a1,%v0", (a), (b)) #elif defined(__GNUC__) && __GNUC__ >= 2 #define BN_UMULT_HIGH(a, b) ({ \ register BN_ULONG ret; \ diff --git a/deps/openssl/openssl/crypto/bn/bn_mont.c b/deps/openssl/openssl/crypto/bn/bn_mont.c index 1527ac10fb1b11..72e935c52fb9eb 100644 --- a/deps/openssl/openssl/crypto/bn/bn_mont.c +++ b/deps/openssl/openssl/crypto/bn/bn_mont.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,10 +8,9 @@ */ /* - * Details about Montgomery multiplication algorithms can be found at - * http://security.ece.orst.edu/publications.html, e.g. - * http://security.ece.orst.edu/koc/papers/j37acmon.pdf and - * sections 3.8 and 4.2 in http://security.ece.orst.edu/koc/papers/r01rsasw.pdf + * Details about Montgomery multiplication algorithms can be found in + * https://www.microsoft.com/en-us/research/wp-content/uploads/1996/01/j37acmon.pdf + * and https://cetinkayakoc.net/docs/r01.pdf */ #include "internal/cryptlib.h" diff --git a/deps/openssl/openssl/crypto/bn/bn_ppc.c b/deps/openssl/openssl/crypto/bn/bn_ppc.c index 049ffa50da981c..8ef52a30c1a434 100644 --- a/deps/openssl/openssl/crypto/bn/bn_ppc.c +++ b/deps/openssl/openssl/crypto/bn/bn_ppc.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2009-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,14 +15,14 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num) { - int bn_mul_mont_int(BN_ULONG * rp, const BN_ULONG *ap, const BN_ULONG *bp, + int bn_mul_mont_int(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - int bn_mul4x_mont_int(BN_ULONG * rp, const BN_ULONG *ap, const BN_ULONG *bp, + int bn_mul4x_mont_int(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - int bn_mul_mont_fixed_n6(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_fixed_n6(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - int bn_mul_mont_300_fixed_n6(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_300_fixed_n6(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); diff --git a/deps/openssl/openssl/crypto/bn/bn_prime.c b/deps/openssl/openssl/crypto/bn/bn_prime.c index 0c38e2ccd2073f..08f889e5979982 100644 --- a/deps/openssl/openssl/crypto/bn/bn_prime.c +++ b/deps/openssl/openssl/crypto/bn/bn_prime.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -30,7 +30,7 @@ static int bn_is_prime_int(const BIGNUM *w, int checks, BN_CTX *ctx, #define square(x) ((BN_ULONG)(x) * (BN_ULONG)(x)) #if BN_BITS2 == 64 -#define BN_DEF(lo, hi) (BN_ULONG) hi << 32 | lo +#define BN_DEF(lo, hi) (BN_ULONG)hi << 32 | lo #else #define BN_DEF(lo, hi) lo, hi #endif diff --git a/deps/openssl/openssl/crypto/bn/bn_rsa_fips186_4.c b/deps/openssl/openssl/crypto/bn/bn_rsa_fips186_4.c index c2574167d06dfb..08def7f13c98ad 100644 --- a/deps/openssl/openssl/crypto/bn/bn_rsa_fips186_4.c +++ b/deps/openssl/openssl/crypto/bn/bn_rsa_fips186_4.c @@ -1,5 +1,5 @@ /* - * Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2018-2019, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -29,7 +29,7 @@ #include "internal/nelem.h" #if BN_BITS2 == 64 -#define BN_DEF(lo, hi) (BN_ULONG) hi << 32 | lo +#define BN_DEF(lo, hi) (BN_ULONG)hi << 32 | lo #else #define BN_DEF(lo, hi) lo, hi #endif diff --git a/deps/openssl/openssl/crypto/bn/bn_sparc.c b/deps/openssl/openssl/crypto/bn/bn_sparc.c index a236e42dfae93a..7c902191d77323 100644 --- a/deps/openssl/openssl/crypto/bn/bn_sparc.c +++ b/deps/openssl/openssl/crypto/bn/bn_sparc.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -16,11 +16,11 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num) { - int bn_mul_mont_vis3(BN_ULONG * rp, const BN_ULONG *ap, const BN_ULONG *bp, + int bn_mul_mont_vis3(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - int bn_mul_mont_fpu(BN_ULONG * rp, const BN_ULONG *ap, const BN_ULONG *bp, + int bn_mul_mont_fpu(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); - int bn_mul_mont_int(BN_ULONG * rp, const BN_ULONG *ap, const BN_ULONG *bp, + int bn_mul_mont_int(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0, int num); if (!(num & 1) && num >= 6) { @@ -29,16 +29,16 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_8(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_8(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_16(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_16(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_24(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_24(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0); - int bn_mul_mont_t4_32(BN_ULONG * rp, const BN_ULONG *ap, + int bn_mul_mont_t4_32(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np, const BN_ULONG *n0); static const bn_mul_mont_f funcs[4] = { diff --git a/deps/openssl/openssl/crypto/bsearch.c b/deps/openssl/openssl/crypto/bsearch.c index 192ccbeb916f5e..c2ab0b81259559 100644 --- a/deps/openssl/openssl/crypto/bsearch.c +++ b/deps/openssl/openssl/crypto/bsearch.c @@ -1,5 +1,5 @@ /* - * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -23,7 +23,7 @@ const void *ossl_bsearch(const void *key, const void *base, int num, l = 0; h = num; while (l < h) { - i = (l + h) / 2; + i = l + (h - l) / 2; p = &(base_[i * size]); c = (*cmp)(key, p); if (c < 0) diff --git a/deps/openssl/openssl/crypto/cast/c_cfb64.c b/deps/openssl/openssl/crypto/cast/c_cfb64.c index 4170f77a78ebb9..3de52f56af466f 100644 --- a/deps/openssl/openssl/crypto/cast/c_cfb64.c +++ b/deps/openssl/openssl/crypto/cast/c_cfb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num, int enc) { register CAST_LONG v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; CAST_LONG ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/cast/c_ofb64.c b/deps/openssl/openssl/crypto/cast/c_ofb64.c index 431446ab5fb71a..dbd6e02729d293 100644 --- a/deps/openssl/openssl/crypto/cast/c_ofb64.c +++ b/deps/openssl/openssl/crypto/cast/c_ofb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,7 +26,7 @@ void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num) { register CAST_LONG v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned char d[8]; register char *dp; diff --git a/deps/openssl/openssl/crypto/cmp/cmp_client.c b/deps/openssl/openssl/crypto/cmp/cmp_client.c index ec865b24378949..d6a4230d243e16 100644 --- a/deps/openssl/openssl/crypto/cmp/cmp_client.c +++ b/deps/openssl/openssl/crypto/cmp/cmp_client.c @@ -1,5 +1,5 @@ /* - * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -149,6 +149,7 @@ static int send_receive_check(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req, int time_left; OSSL_CMP_transfer_cb_t transfer_cb = ctx->transfer_cb; + ctx->status = OSSL_CMP_PKISTATUS_trans; #ifndef OPENSSL_NO_HTTP if (transfer_cb == NULL) transfer_cb = OSSL_CMP_MSG_http_perform; @@ -175,7 +176,7 @@ static int send_receive_check(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req, /* should print error queue since transfer_cb may call ERR_clear_error() */ OSSL_CMP_CTX_print_errors(ctx); - if (ctx->server != NULL) + if (ctx->server != NULL || ctx->transfer_cb != NULL) ossl_cmp_log1(INFO, ctx, "sending %s", req_type_str); *rep = (*transfer_cb)(ctx, req); @@ -189,6 +190,7 @@ static int send_receive_check(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req, return 0; } + ctx->status = OSSL_CMP_PKISTATUS_checking_response; bt = OSSL_CMP_MSG_get_bodytype(*rep); /* * The body type in the 'bt' variable is not yet verified. @@ -284,11 +286,15 @@ static int poll_for_response(OSSL_CMP_CTX *ctx, int sleep, int rid, "received 'waiting' PKIStatus, starting to poll for response"); *rep = NULL; for (;;) { + int bak = ctx->status; + + ctx->status = OSSL_CMP_PKISTATUS_request; if ((preq = ossl_cmp_pollReq_new(ctx, rid)) == NULL) goto err; if (!send_receive_check(ctx, preq, &prep, OSSL_CMP_PKIBODY_POLLREP)) goto err; + ctx->status = bak; /* handle potential pollRep */ if (OSSL_CMP_MSG_get_bodytype(prep) == OSSL_CMP_PKIBODY_POLLREP) { @@ -344,6 +350,7 @@ static int poll_for_response(OSSL_CMP_CTX *ctx, int sleep, int rid, int64_t time_left = (int64_t)(ctx->end_time - exp - time(NULL)); if (time_left <= 0) { + ctx->status = OSSL_CMP_PKISTATUS_trans; ERR_raise(ERR_LIB_CMP, CMP_R_TOTAL_TIMEOUT); goto err; } @@ -455,7 +462,9 @@ int ossl_cmp_exchange_certConf(OSSL_CMP_CTX *ctx, int certReqId, OSSL_CMP_MSG *certConf; OSSL_CMP_MSG *PKIconf = NULL; int res = 0; + int bak = ctx->status; + ctx->status = OSSL_CMP_PKISTATUS_request; /* OSSL_CMP_certConf_new() also checks if all necessary options are set */ certConf = ossl_cmp_certConf_new(ctx, certReqId, fail_info, txt); if (certConf == NULL) @@ -464,6 +473,9 @@ int ossl_cmp_exchange_certConf(OSSL_CMP_CTX *ctx, int certReqId, res = send_receive_also_delayed(ctx, certConf, &PKIconf, OSSL_CMP_PKIBODY_PKICONF); + if (res) + ctx->status = bak; + err: OSSL_CMP_MSG_free(certConf); OSSL_CMP_MSG_free(PKIconf); @@ -479,6 +491,7 @@ int ossl_cmp_exchange_error(OSSL_CMP_CTX *ctx, int status, int fail_info, OSSL_CMP_MSG *PKIconf = NULL; int res = 0; + ctx->status = OSSL_CMP_PKISTATUS_request; /* not overwriting ctx->status on error exchange */ if ((si = OSSL_CMP_STATUSINFO_new(status, fail_info, txt)) == NULL) goto err; @@ -488,6 +501,7 @@ int ossl_cmp_exchange_error(OSSL_CMP_CTX *ctx, int status, int fail_info, res = send_receive_also_delayed(ctx, error, &PKIconf, OSSL_CMP_PKIBODY_PKICONF); + ctx->status = OSSL_CMP_PKISTATUS_rejected_by_client; err: OSSL_CMP_MSG_free(error); @@ -790,7 +804,7 @@ static int cert_response(OSSL_CMP_CTX *ctx, int sleep, int rid, ERR_raise_data(ERR_LIB_CMP, CMP_R_CERTIFICATE_NOT_ACCEPTED, "rejecting newly enrolled cert with subject: %s; %s", subj, txt); - ctx->status = OSSL_CMP_PKISTATUS_rejection; + ctx->status = OSSL_CMP_PKISTATUS_rejected_by_client; ret = 0; } OPENSSL_free(subj); @@ -812,7 +826,6 @@ static int initial_certreq(OSSL_CMP_CTX *ctx, if ((req = ossl_cmp_certreq_new(ctx, req_type, crm)) == NULL) return 0; - ctx->status = OSSL_CMP_PKISTATUS_trans; res = send_receive_check(ctx, req, p_rep, rep_type); OSSL_CMP_MSG_free(req); return res; @@ -918,7 +931,6 @@ int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx) if ((rr = ossl_cmp_rr_new(ctx)) == NULL) goto end; - ctx->status = OSSL_CMP_PKISTATUS_trans; if (!send_receive_also_delayed(ctx, rr, &rp, OSSL_CMP_PKIBODY_RP)) goto end; @@ -1038,7 +1050,6 @@ STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx) if ((genm = ossl_cmp_genm_new(ctx)) == NULL) goto err; - ctx->status = OSSL_CMP_PKISTATUS_trans; if (!send_receive_also_delayed(ctx, genm, &genp, OSSL_CMP_PKIBODY_GENP)) goto err; ctx->status = OSSL_CMP_PKISTATUS_accepted; diff --git a/deps/openssl/openssl/crypto/cmp/cmp_ctx.c b/deps/openssl/openssl/crypto/cmp/cmp_ctx.c index 947374d4ec2e7f..7fdc478cf8f26f 100644 --- a/deps/openssl/openssl/crypto/cmp/cmp_ctx.c +++ b/deps/openssl/openssl/crypto/cmp/cmp_ctx.c @@ -1,5 +1,5 @@ /* - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -742,7 +742,7 @@ DEFINE_OSSL_set1_up_ref(OSSL_CMP_CTX, oldCert, X509) */ DEFINE_OSSL_set0(ossl_cmp_ctx, newCert, X509) - /* Get successfully validated server cert, if any, of current transaction */ + /* Get successfully validated sender cert, if any, of current transaction */ DEFINE_OSSL_CMP_CTX_get0(validatedSrvCert, X509) /* diff --git a/deps/openssl/openssl/crypto/cmp/cmp_local.h b/deps/openssl/openssl/crypto/cmp/cmp_local.h index 4b98b8cb78ff23..3542256e0bca51 100644 --- a/deps/openssl/openssl/crypto/cmp/cmp_local.h +++ b/deps/openssl/openssl/crypto/cmp/cmp_local.h @@ -1,5 +1,5 @@ /* - * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -66,7 +66,7 @@ struct ossl_cmp_ctx_st { int unprotectedErrors; int noCacheExtraCerts; X509 *srvCert; /* certificate used to identify the server */ - X509 *validatedSrvCert; /* caches any already validated server cert */ + X509 *validatedSrvCert; /* caches any already validated sender cert */ X509_NAME *expected_sender; /* expected sender in header of response */ X509_STORE *trusted; /* trust store maybe w CRLs and cert verify callback */ STACK_OF(X509) *untrusted; /* untrusted (intermediate CA) certs */ diff --git a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c index 873bee8b6ad379..eaa700d139d13c 100644 --- a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c +++ b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c @@ -1,5 +1,5 @@ /* - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2020 * Copyright Siemens AG 2015-2020 * @@ -363,13 +363,12 @@ static int check_cert_path_3gpp(const OSSL_CMP_CTX *ctx, return valid; } +/* checks protection of msg but not cert revocation nor cert chain */ static int check_msg_given_cert(const OSSL_CMP_CTX *ctx, X509 *cert, const OSSL_CMP_MSG *msg) { return cert_acceptable(ctx, "previously validated", "sender cert", - cert, NULL, NULL, msg) - && (check_cert_path(ctx, ctx->trusted, cert) - || check_cert_path_3gpp(ctx, msg, cert)); + cert, NULL, NULL, msg); } /*- @@ -479,22 +478,26 @@ static int check_msg_find_cert(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg) (void)ERR_set_mark(); ctx->log_cb = NULL; /* temporarily disable logging */ - /* - * try first cached scrt, used successfully earlier in same transaction, - * for validating this and any further msgs where extraCerts may be left out - */ if (scrt != NULL) { + /*- + * try first using cached message sender cert (in 'scrt' variable), + * which was used successfully earlier in the same transaction + * (assuming that the certificate itself was not revoked meanwhile and + * is a good guess for use in validating also the current message) + */ if (check_msg_given_cert(ctx, scrt, msg)) { ctx->log_cb = backup_log_cb; (void)ERR_pop_to_mark(); return 1; } /* cached sender cert has shown to be no more successfully usable */ - (void)ossl_cmp_ctx_set1_validatedSrvCert(ctx, NULL); /* re-do the above check (just) for adding diagnostic information */ ossl_cmp_info(ctx, "trying to verify msg signature with previously validated cert"); + ctx->log_cb = backup_log_cb; (void)check_msg_given_cert(ctx, scrt, msg); + ctx->log_cb = NULL; + (void)ossl_cmp_ctx_set1_validatedSrvCert(ctx, NULL); /* this invalidates scrt */ } res = check_msg_all_certs(ctx, msg, 0 /* using ctx->trusted */) @@ -628,7 +631,7 @@ int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg) scrt = ctx->srvCert; if (scrt == NULL) { if (ctx->trusted == NULL && ctx->secretValue != NULL) { - ossl_cmp_info(ctx, "no trust store nor pinned server cert available for verifying signature-based CMP message protection"); + ossl_cmp_info(ctx, "no trust store nor pinned sender cert available for verifying signature-based CMP message protection"); ERR_raise(ERR_LIB_CMP, CMP_R_MISSING_TRUST_ANCHOR); return 0; } @@ -642,7 +645,7 @@ int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg) /* use ctx->srvCert for signature check even if not acceptable */ if (verify_signature(ctx, msg, scrt)) { ossl_cmp_debug(ctx, - "successfully validated signature-based CMP message protection using pinned server cert"); + "successfully validated signature-based CMP message protection using pinned sender cert"); return ossl_cmp_ctx_set1_validatedSrvCert(ctx, scrt); } ossl_cmp_warn(ctx, "CMP message signature verification failed"); diff --git a/deps/openssl/openssl/crypto/cms/cms_asn1.c b/deps/openssl/openssl/crypto/cms/cms_asn1.c index 580850bc939514..fb87f6c6ad2730 100644 --- a/deps/openssl/openssl/crypto/cms/cms_asn1.c +++ b/deps/openssl/openssl/crypto/cms/cms_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -23,7 +23,7 @@ ASN1_SEQUENCE(CMS_OtherCertificateFormat) = { ASN1_OPT(CMS_OtherCertificateFormat, otherCert, ASN1_ANY) } static_ASN1_SEQUENCE_END(CMS_OtherCertificateFormat) - ASN1_CHOICE(CMS_CertificateChoices) +ASN1_CHOICE(CMS_CertificateChoices) = { ASN1_SIMPLE(CMS_CertificateChoices, d.certificate, X509), ASN1_IMP(CMS_CertificateChoices, d.extendedCertificate, ASN1_SEQUENCE, 0), ASN1_IMP(CMS_CertificateChoices, d.v1AttrCert, ASN1_SEQUENCE, 1), ASN1_IMP(CMS_CertificateChoices, d.v2AttrCert, ASN1_SEQUENCE, 2), ASN1_IMP(CMS_CertificateChoices, d.other, CMS_OtherCertificateFormat, 3) } ASN1_CHOICE_END(CMS_CertificateChoices) ASN1_CHOICE(CMS_SignerIdentifier) = { @@ -31,11 +31,11 @@ ASN1_CHOICE(CMS_SignerIdentifier) = { ASN1_IMP(CMS_SignerIdentifier, d.subjectKeyIdentifier, ASN1_OCTET_STRING, 0) } static_ASN1_CHOICE_END(CMS_SignerIdentifier) - ASN1_NDEF_SEQUENCE(CMS_EncapsulatedContentInfo) +ASN1_NDEF_SEQUENCE(CMS_EncapsulatedContentInfo) = { ASN1_SIMPLE(CMS_EncapsulatedContentInfo, eContentType, ASN1_OBJECT), ASN1_NDEF_EXP_OPT(CMS_EncapsulatedContentInfo, eContent, ASN1_OCTET_STRING_NDEF, 0) } static_ASN1_NDEF_SEQUENCE_END(CMS_EncapsulatedContentInfo) - /* Minor tweak to operation: free up signer key, cert */ - static int cms_si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) +/* Minor tweak to operation: free up signer key, cert */ +static int cms_si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) { if (operation == ASN1_OP_FREE_POST) { CMS_SignerInfo *si = (CMS_SignerInfo *)*pval; @@ -62,7 +62,7 @@ ASN1_SEQUENCE(CMS_OtherRevocationInfoFormat) = { ASN1_OPT(CMS_OtherRevocationInfoFormat, otherRevInfo, ASN1_ANY) } static_ASN1_SEQUENCE_END(CMS_OtherRevocationInfoFormat) - ASN1_CHOICE(CMS_RevocationInfoChoice) +ASN1_CHOICE(CMS_RevocationInfoChoice) = { ASN1_SIMPLE(CMS_RevocationInfoChoice, d.crl, X509_CRL), ASN1_IMP(CMS_RevocationInfoChoice, d.other, CMS_OtherRevocationInfoFormat, 1) } ASN1_CHOICE_END(CMS_RevocationInfoChoice) ASN1_NDEF_SEQUENCE(CMS_SignedData) = { @@ -80,7 +80,7 @@ ASN1_SEQUENCE(CMS_OriginatorInfo) = { ASN1_IMP_SET_OF_OPT(CMS_OriginatorInfo, crls, CMS_RevocationInfoChoice, 1) } static_ASN1_SEQUENCE_END(CMS_OriginatorInfo) - static int cms_ec_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) +static int cms_ec_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) { CMS_EncryptedContentInfo *ec = (CMS_EncryptedContentInfo *)*pval; @@ -118,7 +118,7 @@ ASN1_CHOICE(CMS_KeyAgreeRecipientIdentifier) = { ASN1_IMP(CMS_KeyAgreeRecipientIdentifier, d.rKeyId, CMS_RecipientKeyIdentifier, 0) } static_ASN1_CHOICE_END(CMS_KeyAgreeRecipientIdentifier) - static int cms_rek_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) +static int cms_rek_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) { CMS_RecipientEncryptedKey *rek = (CMS_RecipientEncryptedKey *)*pval; if (operation == ASN1_OP_FREE_POST) { @@ -143,7 +143,7 @@ ASN1_CHOICE(CMS_OriginatorIdentifierOrKey) = { ASN1_IMP(CMS_OriginatorIdentifierOrKey, d.originatorKey, CMS_OriginatorPublicKey, 1) } static_ASN1_CHOICE_END(CMS_OriginatorIdentifierOrKey) - static int cms_kari_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) +static int cms_kari_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) { CMS_KeyAgreeRecipientInfo *kari = (CMS_KeyAgreeRecipientInfo *)*pval; if (operation == ASN1_OP_NEW_POST) { @@ -173,7 +173,7 @@ ASN1_SEQUENCE(CMS_KEKIdentifier) = { ASN1_OPT(CMS_KEKIdentifier, other, CMS_OtherKeyAttribute) } static_ASN1_SEQUENCE_END(CMS_KEKIdentifier) - ASN1_SEQUENCE(CMS_KEKRecipientInfo) +ASN1_SEQUENCE(CMS_KEKRecipientInfo) = { ASN1_EMBED(CMS_KEKRecipientInfo, version, INT32), ASN1_SIMPLE(CMS_KEKRecipientInfo, kekid, CMS_KEKIdentifier), ASN1_SIMPLE(CMS_KEKRecipientInfo, keyEncryptionAlgorithm, X509_ALGOR), ASN1_SIMPLE(CMS_KEKRecipientInfo, encryptedKey, ASN1_OCTET_STRING) } ASN1_SEQUENCE_END(CMS_KEKRecipientInfo) ASN1_SEQUENCE(CMS_PasswordRecipientInfo) = { @@ -188,8 +188,8 @@ ASN1_SEQUENCE(CMS_OtherRecipientInfo) = { ASN1_OPT(CMS_OtherRecipientInfo, oriValue, ASN1_ANY) } static_ASN1_SEQUENCE_END(CMS_OtherRecipientInfo) - /* Free up RecipientInfo additional data */ - static int cms_ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) +/* Free up RecipientInfo additional data */ +static int cms_ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) { if (operation == ASN1_OP_FREE_PRE) { CMS_RecipientInfo *ri = (CMS_RecipientInfo *)*pval; @@ -262,7 +262,7 @@ ASN1_NDEF_SEQUENCE(CMS_AuthenticatedData) = { ASN1_IMP_SET_OF_OPT(CMS_AuthenticatedData, unauthAttrs, X509_ALGOR, 3) } static_ASN1_NDEF_SEQUENCE_END(CMS_AuthenticatedData) - ASN1_NDEF_SEQUENCE(CMS_CompressedData) +ASN1_NDEF_SEQUENCE(CMS_CompressedData) = { ASN1_EMBED(CMS_CompressedData, version, INT32), ASN1_SIMPLE(CMS_CompressedData, compressionAlgorithm, X509_ALGOR), @@ -348,7 +348,7 @@ ASN1_CHOICE(CMS_ReceiptsFrom) = { ASN1_IMP_SEQUENCE_OF(CMS_ReceiptsFrom, d.receiptList, GENERAL_NAMES, 1) } static_ASN1_CHOICE_END(CMS_ReceiptsFrom) - ASN1_SEQUENCE(CMS_ReceiptRequest) +ASN1_SEQUENCE(CMS_ReceiptRequest) = { ASN1_SIMPLE(CMS_ReceiptRequest, signedContentIdentifier, ASN1_OCTET_STRING), ASN1_SIMPLE(CMS_ReceiptRequest, receiptsFrom, CMS_ReceiptsFrom), ASN1_SEQUENCE_OF(CMS_ReceiptRequest, receiptsTo, GENERAL_NAMES) } ASN1_SEQUENCE_END(CMS_ReceiptRequest) ASN1_SEQUENCE(CMS_Receipt) = { @@ -375,7 +375,7 @@ ASN1_SEQUENCE(CMS_SharedInfo) = { ASN1_EXP_OPT(CMS_SharedInfo, suppPubInfo, ASN1_OCTET_STRING, 2), } static_ASN1_SEQUENCE_END(CMS_SharedInfo) - int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, ASN1_OCTET_STRING *ukm, int keylen) +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, ASN1_OCTET_STRING *ukm, int keylen) { union { CMS_SharedInfo *pecsi; diff --git a/deps/openssl/openssl/crypto/cms/cms_dh.c b/deps/openssl/openssl/crypto/cms/cms_dh.c index ab3453d1c7c121..9c0b3c85e173ef 100644 --- a/deps/openssl/openssl/crypto/cms/cms_dh.c +++ b/deps/openssl/openssl/crypto/cms/cms_dh.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -89,16 +89,21 @@ static int dh_cms_set_shared_info(EVP_PKEY_CTX *pctx, CMS_RecipientInfo *ri) int keylen, plen; EVP_CIPHER *kekcipher = NULL; EVP_CIPHER_CTX *kekctx; + const ASN1_OBJECT *aoid; + const void *parameter = NULL; + int ptype = 0; char name[OSSL_MAX_NAME_SIZE]; if (!CMS_RecipientInfo_kari_get0_alg(ri, &alg, &ukm)) goto err; + X509_ALGOR_get0(&aoid, &ptype, ¶meter, alg); + /* * For DH we only have one OID permissible. If ever any more get defined * we will need something cleverer. */ - if (OBJ_obj2nid(alg->algorithm) != NID_id_smime_alg_ESDH) { + if (OBJ_obj2nid(aoid) != NID_id_smime_alg_ESDH) { ERR_raise(ERR_LIB_CMS, CMS_R_KDF_PARAMETER_ERROR); goto err; } @@ -107,11 +112,11 @@ static int dh_cms_set_shared_info(EVP_PKEY_CTX *pctx, CMS_RecipientInfo *ri) || EVP_PKEY_CTX_set_dh_kdf_md(pctx, EVP_sha1()) <= 0) goto err; - if (alg->parameter->type != V_ASN1_SEQUENCE) + if (ptype != V_ASN1_SEQUENCE) goto err; - p = alg->parameter->value.sequence->data; - plen = alg->parameter->value.sequence->length; + p = ASN1_STRING_get0_data(parameter); + plen = ASN1_STRING_length(parameter); kekalg = d2i_X509_ALGOR(NULL, &p, plen); if (kekalg == NULL) goto err; diff --git a/deps/openssl/openssl/crypto/cms/cms_ec.c b/deps/openssl/openssl/crypto/cms/cms_ec.c index ff8adad616686f..917bf784daebc9 100644 --- a/deps/openssl/openssl/crypto/cms/cms_ec.c +++ b/deps/openssl/openssl/crypto/cms/cms_ec.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -166,21 +166,27 @@ static int ecdh_cms_set_shared_info(EVP_PKEY_CTX *pctx, CMS_RecipientInfo *ri) int plen, keylen; EVP_CIPHER *kekcipher = NULL; EVP_CIPHER_CTX *kekctx; + const ASN1_OBJECT *aoid = NULL; + int ptype = 0; + const void *parameter = NULL; + char name[OSSL_MAX_NAME_SIZE]; if (!CMS_RecipientInfo_kari_get0_alg(ri, &alg, &ukm)) return 0; - if (!ecdh_cms_set_kdf_param(pctx, OBJ_obj2nid(alg->algorithm))) { + X509_ALGOR_get0(&aoid, &ptype, ¶meter, alg); + + if (!ecdh_cms_set_kdf_param(pctx, OBJ_obj2nid(aoid))) { ERR_raise(ERR_LIB_CMS, CMS_R_KDF_PARAMETER_ERROR); return 0; } - if (alg->parameter->type != V_ASN1_SEQUENCE) + if (ptype != V_ASN1_SEQUENCE) return 0; - p = alg->parameter->value.sequence->data; - plen = alg->parameter->value.sequence->length; + p = ASN1_STRING_get0_data(parameter); + plen = ASN1_STRING_length(parameter); kekalg = d2i_X509_ALGOR(NULL, &p, plen); if (kekalg == NULL) goto err; diff --git a/deps/openssl/openssl/crypto/cms/cms_local.h b/deps/openssl/openssl/crypto/cms/cms_local.h index b412a74c7773b5..94496b3823ef09 100644 --- a/deps/openssl/openssl/crypto/cms/cms_local.h +++ b/deps/openssl/openssl/crypto/cms/cms_local.h @@ -1,5 +1,5 @@ /* - * Copyright 2008-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -35,8 +35,7 @@ typedef struct CMS_OriginatorPublicKey_st CMS_OriginatorPublicKey; typedef struct CMS_OriginatorIdentifierOrKey_st CMS_OriginatorIdentifierOrKey; typedef struct CMS_KeyAgreeRecipientInfo_st CMS_KeyAgreeRecipientInfo; typedef struct CMS_RecipientKeyIdentifier_st CMS_RecipientKeyIdentifier; -typedef struct CMS_KeyAgreeRecipientIdentifier_st - CMS_KeyAgreeRecipientIdentifier; +typedef struct CMS_KeyAgreeRecipientIdentifier_st CMS_KeyAgreeRecipientIdentifier; typedef struct CMS_KEKIdentifier_st CMS_KEKIdentifier; typedef struct CMS_KEKRecipientInfo_st CMS_KEKRecipientInfo; typedef struct CMS_PasswordRecipientInfo_st CMS_PasswordRecipientInfo; diff --git a/deps/openssl/openssl/crypto/cms/cms_rsa.c b/deps/openssl/openssl/crypto/cms/cms_rsa.c index 6b65842cc14ec5..9bf8284a82722b 100644 --- a/deps/openssl/openssl/crypto/cms/cms_rsa.c +++ b/deps/openssl/openssl/crypto/cms/cms_rsa.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -42,10 +42,13 @@ static int rsa_cms_decrypt(CMS_RecipientInfo *ri) X509_ALGOR *cmsalg; int nid; int rv = -1; - unsigned char *label = NULL; + const unsigned char *label = NULL; int labellen = 0; const EVP_MD *mgf1md = NULL, *md = NULL; RSA_OAEP_PARAMS *oaep; + const ASN1_OBJECT *aoid; + const void *parameter = NULL; + int ptype = 0; pkctx = CMS_RecipientInfo_get0_pkey_ctx(ri); if (pkctx == NULL) @@ -75,21 +78,19 @@ static int rsa_cms_decrypt(CMS_RecipientInfo *ri) goto err; if (oaep->pSourceFunc != NULL) { - X509_ALGOR *plab = oaep->pSourceFunc; + X509_ALGOR_get0(&aoid, &ptype, ¶meter, oaep->pSourceFunc); - if (OBJ_obj2nid(plab->algorithm) != NID_pSpecified) { + if (OBJ_obj2nid(aoid) != NID_pSpecified) { ERR_raise(ERR_LIB_CMS, CMS_R_UNSUPPORTED_LABEL_SOURCE); goto err; } - if (plab->parameter->type != V_ASN1_OCTET_STRING) { + if (ptype != V_ASN1_OCTET_STRING) { ERR_raise(ERR_LIB_CMS, CMS_R_INVALID_LABEL); goto err; } - label = plab->parameter->value.octet_string->data; - /* Stop label being freed when OAEP parameters are freed */ - plab->parameter->value.octet_string->data = NULL; - labellen = plab->parameter->value.octet_string->length; + label = ASN1_STRING_get0_data(parameter); + labellen = ASN1_STRING_length(parameter); } if (EVP_PKEY_CTX_set_rsa_padding(pkctx, RSA_PKCS1_OAEP_PADDING) <= 0) @@ -98,10 +99,16 @@ static int rsa_cms_decrypt(CMS_RecipientInfo *ri) goto err; if (EVP_PKEY_CTX_set_rsa_mgf1_md(pkctx, mgf1md) <= 0) goto err; - if (label != NULL - && EVP_PKEY_CTX_set0_rsa_oaep_label(pkctx, label, labellen) <= 0) { - OPENSSL_free(label); - goto err; + if (label != NULL) { + unsigned char *dup_label = OPENSSL_memdup(label, labellen); + + if (dup_label == NULL) + goto err; + + if (EVP_PKEY_CTX_set0_rsa_oaep_label(pkctx, dup_label, labellen) <= 0) { + OPENSSL_free(dup_label); + goto err; + } } /* Carry on */ rv = 1; diff --git a/deps/openssl/openssl/crypto/cms/cms_smime.c b/deps/openssl/openssl/crypto/cms/cms_smime.c index 920464b3deec46..4b5009b9d5bf83 100644 --- a/deps/openssl/openssl/crypto/cms/cms_smime.c +++ b/deps/openssl/openssl/crypto/cms/cms_smime.c @@ -1,5 +1,5 @@ /* - * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -474,8 +474,10 @@ int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, } else { if (dcont && (tmpin == dcont)) do_free_upto(cmsbio, dcont); - else + else if (cmsbio != NULL) BIO_free_all(cmsbio); + else + BIO_free(tmpin); } if (out != tmpout) diff --git a/deps/openssl/openssl/crypto/conf/conf_lib.c b/deps/openssl/openssl/crypto/conf/conf_lib.c index 6efd95283e9ed9..3bd750144cec22 100644 --- a/deps/openssl/openssl/crypto/conf/conf_lib.c +++ b/deps/openssl/openssl/crypto/conf/conf_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -314,7 +314,7 @@ char *NCONF_get_string(const CONF *conf, const char *group, const char *name) return NULL; } ERR_raise_data(ERR_LIB_CONF, CONF_R_NO_VALUE, - "group=%s name=%s", group, name); + "group=%s name=%s", group != NULL ? group : "", name); return NULL; } diff --git a/deps/openssl/openssl/crypto/conf/conf_mod.c b/deps/openssl/openssl/crypto/conf/conf_mod.c index adc0c5f369698f..4ed7d9fd76cfa6 100644 --- a/deps/openssl/openssl/crypto/conf/conf_mod.c +++ b/deps/openssl/openssl/crypto/conf/conf_mod.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -395,7 +395,7 @@ static CONF_MODULE *module_find(const char *name) { CONF_MODULE *tmod; int i, nchar; - char *p; + const char *p; STACK_OF(CONF_MODULE) *mods; p = strrchr(name, '.'); diff --git a/deps/openssl/openssl/crypto/des/cfb64ede.c b/deps/openssl/openssl/crypto/des/cfb64ede.c index 26613a05fe8a46..b73c805f18108f 100644 --- a/deps/openssl/openssl/crypto/des/cfb64ede.c +++ b/deps/openssl/openssl/crypto/des/cfb64ede.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,7 +28,7 @@ void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, { register DES_LONG v0, v1; register long l = length; - register int n = *num; + register int n = *num & 0x07; DES_LONG ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/des/cfb64enc.c b/deps/openssl/openssl/crypto/des/cfb64enc.c index 3ddd6819e2ed8a..c27400a9798785 100644 --- a/deps/openssl/openssl/crypto/des/cfb64enc.c +++ b/deps/openssl/openssl/crypto/des/cfb64enc.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, { register DES_LONG v0, v1; register long l = length; - register int n = *num; + register int n = *num & 0x07; DES_LONG ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/des/ofb64ede.c b/deps/openssl/openssl/crypto/des/ofb64ede.c index b0f9f0441cfb79..c3bb7d7e1b36af 100644 --- a/deps/openssl/openssl/crypto/des/ofb64ede.c +++ b/deps/openssl/openssl/crypto/des/ofb64ede.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,7 +26,7 @@ void DES_ede3_ofb64_encrypt(register const unsigned char *in, DES_key_schedule *k3, DES_cblock *ivec, int *num) { register DES_LONG v0, v1; - register int n = *num; + register int n = *num & 0x07; register long l = length; DES_cblock d; register char *dp; diff --git a/deps/openssl/openssl/crypto/des/ofb64enc.c b/deps/openssl/openssl/crypto/des/ofb64enc.c index df4e2077e96cdc..84b99d9d8ff70a 100644 --- a/deps/openssl/openssl/crypto/des/ofb64enc.c +++ b/deps/openssl/openssl/crypto/des/ofb64enc.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,7 +25,7 @@ void DES_ofb64_encrypt(register const unsigned char *in, DES_key_schedule *schedule, DES_cblock *ivec, int *num) { register DES_LONG v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; DES_cblock d; register unsigned char *dp; diff --git a/deps/openssl/openssl/crypto/dh/dh_asn1.c b/deps/openssl/openssl/crypto/dh/dh_asn1.c index af78e2e84bf88d..10bcdd2253f3f0 100644 --- a/deps/openssl/openssl/crypto/dh/dh_asn1.c +++ b/deps/openssl/openssl/crypto/dh/dh_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -76,7 +76,7 @@ ASN1_SEQUENCE(DHvparams) = { ASN1_SIMPLE(int_dhvparams, counter, BIGNUM) } static_ASN1_SEQUENCE_END_name(int_dhvparams, DHvparams) - ASN1_SEQUENCE(DHxparams) +ASN1_SEQUENCE(DHxparams) = { ASN1_SIMPLE(int_dhx942_dh, p, BIGNUM), ASN1_SIMPLE(int_dhx942_dh, g, BIGNUM), @@ -85,8 +85,7 @@ ASN1_SEQUENCE(DHvparams) = { ASN1_OPT(int_dhx942_dh, vparams, DHvparams), } static_ASN1_SEQUENCE_END_name(int_dhx942_dh, DHxparams) - int_dhx942_dh - * d2i_int_dhx(int_dhx942_dh * *a, const unsigned char **pp, long length); +int_dhx942_dh *d2i_int_dhx(int_dhx942_dh **a, const unsigned char **pp, long length); int i2d_int_dhx(const int_dhx942_dh *a, unsigned char **pp); IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(int_dhx942_dh, DHxparams, int_dhx) diff --git a/deps/openssl/openssl/crypto/dh/dh_rfc5114.c b/deps/openssl/openssl/crypto/dh/dh_rfc5114.c index 366776ce4ee377..67a9198a7071cb 100644 --- a/deps/openssl/openssl/crypto/dh/dh_rfc5114.c +++ b/deps/openssl/openssl/crypto/dh/dh_rfc5114.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -43,5 +43,5 @@ } make_dh(1024_160) - make_dh(2048_224) - make_dh(2048_256) +make_dh(2048_224) +make_dh(2048_256) diff --git a/deps/openssl/openssl/crypto/dllmain.c b/deps/openssl/openssl/crypto/dllmain.c index 1525878705412f..f2b72df899412f 100644 --- a/deps/openssl/openssl/crypto/dllmain.c +++ b/deps/openssl/openssl/crypto/dllmain.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -35,7 +35,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: +#ifndef __CYGWIN__ OPENSSL_thread_stop(); +#endif break; case DLL_PROCESS_DETACH: break; diff --git a/deps/openssl/openssl/crypto/dsa/dsa_asn1.c b/deps/openssl/openssl/crypto/dsa/dsa_asn1.c index 3366610a9fdc8f..9ebc7cc2596d6e 100644 --- a/deps/openssl/openssl/crypto/dsa/dsa_asn1.c +++ b/deps/openssl/openssl/crypto/dsa/dsa_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -47,7 +47,7 @@ ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = { ASN1_SIMPLE(DSA, priv_key, CBIGNUM) } static_ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) - IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPrivateKey, DSAPrivateKey) +IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPrivateKey, DSAPrivateKey) ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { ASN1_SIMPLE(DSA, params.p, BIGNUM), @@ -55,7 +55,7 @@ ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { ASN1_SIMPLE(DSA, params.g, BIGNUM), } static_ASN1_SEQUENCE_END_cb(DSA, DSAparams) - IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAparams, DSAparams) +IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAparams, DSAparams) ASN1_SEQUENCE_cb(DSAPublicKey, dsa_cb) = { ASN1_SIMPLE(DSA, pub_key, BIGNUM), @@ -64,7 +64,7 @@ ASN1_SEQUENCE_cb(DSAPublicKey, dsa_cb) = { ASN1_SIMPLE(DSA, params.g, BIGNUM) } static_ASN1_SEQUENCE_END_cb(DSA, DSAPublicKey) - IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPublicKey, DSAPublicKey) +IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPublicKey, DSAPublicKey) DSA *DSAparams_dup(const DSA *dsa) { diff --git a/deps/openssl/openssl/crypto/ec/ec_asn1.c b/deps/openssl/openssl/crypto/ec/ec_asn1.c index bfd0242c6f56b3..6b44b8068f9ec3 100644 --- a/deps/openssl/openssl/crypto/ec/ec_asn1.c +++ b/deps/openssl/openssl/crypto/ec/ec_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -105,7 +105,7 @@ ASN1_SEQUENCE(X9_62_PENTANOMIAL) = { ASN1_EMBED(X9_62_PENTANOMIAL, k3, INT32) } static_ASN1_SEQUENCE_END(X9_62_PENTANOMIAL) - DECLARE_ASN1_ALLOC_FUNCTIONS(X9_62_PENTANOMIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X9_62_PENTANOMIAL) IMPLEMENT_ASN1_ALLOC_FUNCTIONS(X9_62_PENTANOMIAL) ASN1_ADB_TEMPLATE(char_two_def) = ASN1_SIMPLE(X9_62_CHARACTERISTIC_TWO, p.other, ASN1_ANY); @@ -122,7 +122,7 @@ ASN1_SEQUENCE(X9_62_CHARACTERISTIC_TWO) = { ASN1_ADB_OBJECT(X9_62_CHARACTERISTIC_TWO) } static_ASN1_SEQUENCE_END(X9_62_CHARACTERISTIC_TWO) - DECLARE_ASN1_ALLOC_FUNCTIONS(X9_62_CHARACTERISTIC_TWO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X9_62_CHARACTERISTIC_TWO) IMPLEMENT_ASN1_ALLOC_FUNCTIONS(X9_62_CHARACTERISTIC_TWO) ASN1_ADB_TEMPLATE(fieldID_def) = ASN1_SIMPLE(X9_62_FIELDID, p.other, ASN1_ANY); @@ -137,10 +137,10 @@ ASN1_SEQUENCE(X9_62_FIELDID) = { ASN1_ADB_OBJECT(X9_62_FIELDID) } static_ASN1_SEQUENCE_END(X9_62_FIELDID) - ASN1_SEQUENCE(X9_62_CURVE) +ASN1_SEQUENCE(X9_62_CURVE) = { ASN1_SIMPLE(X9_62_CURVE, a, ASN1_OCTET_STRING), ASN1_SIMPLE(X9_62_CURVE, b, ASN1_OCTET_STRING), ASN1_OPT(X9_62_CURVE, seed, ASN1_BIT_STRING) } static_ASN1_SEQUENCE_END(X9_62_CURVE) - ASN1_SEQUENCE(ECPARAMETERS) +ASN1_SEQUENCE(ECPARAMETERS) = { ASN1_EMBED(ECPARAMETERS, version, INT32), ASN1_SIMPLE(ECPARAMETERS, fieldID, X9_62_FIELDID), ASN1_SIMPLE(ECPARAMETERS, curve, X9_62_CURVE), ASN1_SIMPLE(ECPARAMETERS, base, ASN1_OCTET_STRING), ASN1_SIMPLE(ECPARAMETERS, order, ASN1_INTEGER), ASN1_OPT(ECPARAMETERS, cofactor, ASN1_INTEGER) } ASN1_SEQUENCE_END(ECPARAMETERS) DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) @@ -163,7 +163,7 @@ ASN1_SEQUENCE(EC_PRIVATEKEY) = { ASN1_EXP_OPT(EC_PRIVATEKEY, publicKey, ASN1_BIT_STRING, 1) } static_ASN1_SEQUENCE_END(EC_PRIVATEKEY) - DECLARE_ASN1_FUNCTIONS(EC_PRIVATEKEY) +DECLARE_ASN1_FUNCTIONS(EC_PRIVATEKEY) DECLARE_ASN1_ENCODE_FUNCTIONS_name(EC_PRIVATEKEY, EC_PRIVATEKEY) IMPLEMENT_ASN1_FUNCTIONS(EC_PRIVATEKEY) diff --git a/deps/openssl/openssl/crypto/ec/ec_check.c b/deps/openssl/openssl/crypto/ec/ec_check.c index a112960021952e..98cf12f36c0ef8 100644 --- a/deps/openssl/openssl/crypto/ec/ec_check.c +++ b/deps/openssl/openssl/crypto/ec/ec_check.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -50,7 +50,7 @@ int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx) * ECC domain parameter validation. * See SP800-56A R3 5.5.2 "Assurances of Domain-Parameter Validity" Part 1b. */ - return EC_GROUP_check_named_curve(group, 1, ctx) >= 0 ? 1 : 0; + return EC_GROUP_check_named_curve(group, 1, ctx) > 0 ? 1 : 0; #else int ret = 0; const BIGNUM *order; diff --git a/deps/openssl/openssl/crypto/ec/ec_lib.c b/deps/openssl/openssl/crypto/ec/ec_lib.c index 13dcd29b115cb7..2a5f93de1fdb1d 100644 --- a/deps/openssl/openssl/crypto/ec/ec_lib.c +++ b/deps/openssl/openssl/crypto/ec/ec_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -175,6 +175,8 @@ int EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) dest->libctx = src->libctx; dest->curve_name = src->curve_name; + EC_pre_comp_free(dest); + /* Copy precomputed */ dest->pre_comp_type = src->pre_comp_type; switch (src->pre_comp_type) { diff --git a/deps/openssl/openssl/crypto/err/err_all.c b/deps/openssl/openssl/crypto/err/err_all.c index 789ba9b87a4f6a..76841f4ad3cfe9 100644 --- a/deps/openssl/openssl/crypto/err/err_all.c +++ b/deps/openssl/openssl/crypto/err/err_all.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -40,6 +40,7 @@ #include "crypto/cmperr.h" #include "crypto/cterr.h" #include "crypto/asyncerr.h" +#include "crypto/sm2err.h" #include "crypto/storeerr.h" #include "crypto/esserr.h" #include "internal/propertyerr.h" @@ -104,6 +105,9 @@ int ossl_err_load_crypto_strings(void) #endif || ossl_err_load_ESS_strings() == 0 || ossl_err_load_ASYNC_strings() == 0 +#ifndef OPENSSL_NO_SM2 + || ossl_err_load_SM2_strings() == 0 +#endif || ossl_err_load_OSSL_STORE_strings() == 0 || ossl_err_load_PROP_strings() == 0 || ossl_err_load_PROV_strings() == 0 diff --git a/deps/openssl/openssl/crypto/err/openssl.txt b/deps/openssl/openssl/crypto/err/openssl.txt index 1c362d15f3c861..5b2ea1c4a4e675 100644 --- a/deps/openssl/openssl/crypto/err/openssl.txt +++ b/deps/openssl/openssl/crypto/err/openssl.txt @@ -1,4 +1,4 @@ -# Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -848,6 +848,7 @@ EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE:191:xts data unit is too large EVP_R_XTS_DUPLICATED_KEYS:192:xts duplicated keys HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN:108:asn1 len exceeds max resp len HTTP_R_CONNECT_FAILURE:100:connect failure +HTTP_R_CONTENT_TYPE_MISMATCH:131:content type mismatch HTTP_R_ERROR_PARSING_ASN1_LENGTH:109:error parsing asn1 length HTTP_R_ERROR_PARSING_CONTENT_LENGTH:119:error parsing content length HTTP_R_ERROR_PARSING_URL:101:error parsing url diff --git a/deps/openssl/openssl/crypto/ess/ess_asn1.c b/deps/openssl/openssl/crypto/ess/ess_asn1.c index 297f2cead02a10..d02076fabc5aef 100644 --- a/deps/openssl/openssl/crypto/ess/ess_asn1.c +++ b/deps/openssl/openssl/crypto/ess/ess_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,7 +21,7 @@ ASN1_SEQUENCE(ESS_ISSUER_SERIAL) = { ASN1_SIMPLE(ESS_ISSUER_SERIAL, serial, ASN1_INTEGER) } static_ASN1_SEQUENCE_END(ESS_ISSUER_SERIAL) - IMPLEMENT_ASN1_FUNCTIONS(ESS_ISSUER_SERIAL) +IMPLEMENT_ASN1_FUNCTIONS(ESS_ISSUER_SERIAL) IMPLEMENT_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) ASN1_SEQUENCE(ESS_CERT_ID) = { @@ -29,7 +29,7 @@ ASN1_SEQUENCE(ESS_CERT_ID) = { ASN1_OPT(ESS_CERT_ID, issuer_serial, ESS_ISSUER_SERIAL) } static_ASN1_SEQUENCE_END(ESS_CERT_ID) - IMPLEMENT_ASN1_FUNCTIONS(ESS_CERT_ID) +IMPLEMENT_ASN1_FUNCTIONS(ESS_CERT_ID) IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID) ASN1_SEQUENCE(ESS_SIGNING_CERT) = { @@ -46,7 +46,7 @@ ASN1_SEQUENCE(ESS_CERT_ID_V2) = { ASN1_OPT(ESS_CERT_ID_V2, issuer_serial, ESS_ISSUER_SERIAL) } static_ASN1_SEQUENCE_END(ESS_CERT_ID_V2) - IMPLEMENT_ASN1_FUNCTIONS(ESS_CERT_ID_V2) +IMPLEMENT_ASN1_FUNCTIONS(ESS_CERT_ID_V2) IMPLEMENT_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) ASN1_SEQUENCE(ESS_SIGNING_CERT_V2) = { diff --git a/deps/openssl/openssl/crypto/evp/digest.c b/deps/openssl/openssl/crypto/evp/digest.c index 4b1c95c4abe3be..224f3000ce0ad1 100644 --- a/deps/openssl/openssl/crypto/evp/digest.c +++ b/deps/openssl/openssl/crypto/evp/digest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -872,8 +872,9 @@ const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx) if (pctx != NULL && (pctx->operation == EVP_PKEY_OP_VERIFYCTX || pctx->operation == EVP_PKEY_OP_SIGNCTX) - && pctx->op.sig.algctx != NULL - && pctx->op.sig.signature->gettable_ctx_md_params != NULL) + && pctx->op.sig.signature != NULL + && pctx->op.sig.signature->gettable_ctx_md_params != NULL + && pctx->op.sig.algctx != NULL) return pctx->op.sig.signature->gettable_ctx_md_params( pctx->op.sig.algctx); diff --git a/deps/openssl/openssl/crypto/evp/e_aes.c b/deps/openssl/openssl/crypto/evp/e_aes.c index 5ce981958eb45b..5a99fe8d577e7b 100644 --- a/deps/openssl/openssl/crypto/evp/e_aes.c +++ b/deps/openssl/openssl/crypto/evp/e_aes.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -2403,14 +2403,14 @@ static int s390x_aes_ocb_ctrl(EVP_CIPHER_CTX *, int type, int arg, void *ptr); #endif -#define BLOCK_CIPHER_generic_pack(nid, keylen, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb1, cfb1, CFB, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb8, cfb8, CFB, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, ctr, ctr, CTR, flags) +#define BLOCK_CIPHER_generic_pack(nid, keylen, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb1, cfb1, CFB, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb8, cfb8, CFB, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, ctr, ctr, CTR, flags) static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) @@ -2641,10 +2641,10 @@ static int aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } BLOCK_CIPHER_generic_pack(NID_aes, 128, 0) - BLOCK_CIPHER_generic_pack(NID_aes, 192, 0) - BLOCK_CIPHER_generic_pack(NID_aes, 256, 0) +BLOCK_CIPHER_generic_pack(NID_aes, 192, 0) +BLOCK_CIPHER_generic_pack(NID_aes, 256, 0) - static int aes_gcm_cleanup(EVP_CIPHER_CTX *c) +static int aes_gcm_cleanup(EVP_CIPHER_CTX *c) { EVP_AES_GCM_CTX *gctx = EVP_C_DATA(EVP_AES_GCM_CTX, c); if (gctx == NULL) @@ -3189,12 +3189,12 @@ static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, BLOCK_CIPHER_custom(NID_aes, 128, 1, 12, gcm, GCM, EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 192, 1, 12, gcm, GCM, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 256, 1, 12, gcm, GCM, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 192, 1, 12, gcm, GCM, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 256, 1, 12, gcm, GCM, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - static int aes_xts_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) +static int aes_xts_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) { EVP_AES_XTS_CTX *xctx = EVP_C_DATA(EVP_AES_XTS_CTX, c); @@ -3378,9 +3378,9 @@ static int aes_xts_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | EVP_CIPH_CUSTOM_COPY) BLOCK_CIPHER_custom(NID_aes, 128, 1, 16, xts, XTS, XTS_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 256, 1, 16, xts, XTS, XTS_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 256, 1, 16, xts, XTS, XTS_FLAGS) - static int aes_ccm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) +static int aes_ccm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) { EVP_AES_CCM_CTX *cctx = EVP_C_DATA(EVP_AES_CCM_CTX, c); switch (type) { @@ -3654,12 +3654,12 @@ static int aes_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, BLOCK_CIPHER_custom(NID_aes, 128, 1, 12, ccm, CCM, EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 192, 1, 12, ccm, CCM, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 256, 1, 12, ccm, CCM, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 192, 1, 12, ccm, CCM, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 256, 1, 12, ccm, CCM, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - typedef struct { +typedef struct { union { OSSL_UNION_ALIGN; AES_KEY ks; @@ -4146,8 +4146,8 @@ static int aes_ocb_cleanup(EVP_CIPHER_CTX *c) BLOCK_CIPHER_custom(NID_aes, 128, 16, 12, ocb, OCB, EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 192, 16, 12, ocb, OCB, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) - BLOCK_CIPHER_custom(NID_aes, 256, 16, 12, ocb, OCB, - EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 192, 16, 12, ocb, OCB, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) +BLOCK_CIPHER_custom(NID_aes, 256, 16, 12, ocb, OCB, + EVP_CIPH_FLAG_AEAD_CIPHER | CUSTOM_FLAGS) #endif /* OPENSSL_NO_OCB */ diff --git a/deps/openssl/openssl/crypto/evp/e_aria.c b/deps/openssl/openssl/crypto/evp/e_aria.c index eb3d98259e3a7a..e35e3f5083a83c 100644 --- a/deps/openssl/openssl/crypto/evp/e_aria.c +++ b/deps/openssl/openssl/crypto/evp/e_aria.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -194,13 +194,13 @@ static int aria_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } BLOCK_CIPHER_generic(NID_aria, 128, 1, 16, ctr, ctr, CTR, 0) - BLOCK_CIPHER_generic(NID_aria, 192, 1, 16, ctr, ctr, CTR, 0) - BLOCK_CIPHER_generic(NID_aria, 256, 1, 16, ctr, ctr, CTR, 0) +BLOCK_CIPHER_generic(NID_aria, 192, 1, 16, ctr, ctr, CTR, 0) +BLOCK_CIPHER_generic(NID_aria, 256, 1, 16, ctr, ctr, CTR, 0) - /* Authenticated cipher modes (GCM/CCM) */ +/* Authenticated cipher modes (GCM/CCM) */ - /* increment counter (64-bit int) by 1 */ - static void ctr64_inc(unsigned char *counter) +/* increment counter (64-bit int) by 1 */ +static void ctr64_inc(unsigned char *counter) { int n = 8; unsigned char c; @@ -778,11 +778,11 @@ static int aria_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } BLOCK_CIPHER_aead(128, gcm, GCM) - BLOCK_CIPHER_aead(192, gcm, GCM) - BLOCK_CIPHER_aead(256, gcm, GCM) +BLOCK_CIPHER_aead(192, gcm, GCM) +BLOCK_CIPHER_aead(256, gcm, GCM) - BLOCK_CIPHER_aead(128, ccm, CCM) - BLOCK_CIPHER_aead(192, ccm, CCM) - BLOCK_CIPHER_aead(256, ccm, CCM) +BLOCK_CIPHER_aead(128, ccm, CCM) +BLOCK_CIPHER_aead(192, ccm, CCM) +BLOCK_CIPHER_aead(256, ccm, CCM) #endif diff --git a/deps/openssl/openssl/crypto/evp/e_camellia.c b/deps/openssl/openssl/crypto/evp/e_camellia.c index c994bb395d8fd7..babc4f18f3be06 100644 --- a/deps/openssl/openssl/crypto/evp/e_camellia.c +++ b/deps/openssl/openssl/crypto/evp/e_camellia.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -183,14 +183,14 @@ static int cmll_t4_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, #endif -#define BLOCK_CIPHER_generic_pack(nid, keylen, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb1, cfb1, CFB, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb8, cfb8, CFB, flags) \ - BLOCK_CIPHER_generic(nid, keylen, 1, 16, ctr, ctr, CTR, flags) +#define BLOCK_CIPHER_generic_pack(nid, keylen, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb1, cfb1, CFB, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, cfb8, cfb8, CFB, flags) \ + BLOCK_CIPHER_generic(nid, keylen, 1, 16, ctr, ctr, CTR, flags) /* The subkey for Camellia is generated. */ static int camellia_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, @@ -347,5 +347,5 @@ static int camellia_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, } BLOCK_CIPHER_generic_pack(NID_camellia, 128, 0) - BLOCK_CIPHER_generic_pack(NID_camellia, 192, 0) - BLOCK_CIPHER_generic_pack(NID_camellia, 256, 0) +BLOCK_CIPHER_generic_pack(NID_camellia, 192, 0) +BLOCK_CIPHER_generic_pack(NID_camellia, 256, 0) diff --git a/deps/openssl/openssl/crypto/evp/e_des.c b/deps/openssl/openssl/crypto/evp/e_des.c index b8d10829c25773..9c9080025c14f9 100644 --- a/deps/openssl/openssl/crypto/evp/e_des.c +++ b/deps/openssl/openssl/crypto/evp/e_des.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -197,16 +197,16 @@ BLOCK_CIPHER_defs(des, EVP_DES_KEY, NID_des, 8, 8, 8, 64, EVP_CIPH_RAND_KEY, des_init_key, NULL, EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, des_ctrl) - BLOCK_CIPHER_def_cfb(des, EVP_DES_KEY, NID_des, 8, 8, 1, - EVP_CIPH_RAND_KEY, des_init_key, NULL, - EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, des_ctrl) +BLOCK_CIPHER_def_cfb(des, EVP_DES_KEY, NID_des, 8, 8, 1, + EVP_CIPH_RAND_KEY, des_init_key, NULL, + EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, des_ctrl) - BLOCK_CIPHER_def_cfb(des, EVP_DES_KEY, NID_des, 8, 8, 8, - EVP_CIPH_RAND_KEY, des_init_key, NULL, - EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, des_ctrl) +BLOCK_CIPHER_def_cfb(des, EVP_DES_KEY, NID_des, 8, 8, 8, + EVP_CIPH_RAND_KEY, des_init_key, NULL, + EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, des_ctrl) - static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc) +static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) { DES_cblock *deskey = (DES_cblock *)key; EVP_DES_KEY *dat = (EVP_DES_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx); diff --git a/deps/openssl/openssl/crypto/evp/e_des3.c b/deps/openssl/openssl/crypto/evp/e_des3.c index ecb49a3f204e27..13abdda138f02c 100644 --- a/deps/openssl/openssl/crypto/evp/e_des3.c +++ b/deps/openssl/openssl/crypto/evp/e_des3.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -210,20 +210,20 @@ BLOCK_CIPHER_defs(des_ede, DES_EDE_KEY, NID_des_ede, 8, 16, 8, 64, #define des_ede3_ofb_cipher des_ede_ofb_cipher #define des_ede3_cbc_cipher des_ede_cbc_cipher #define des_ede3_ecb_cipher des_ede_ecb_cipher - BLOCK_CIPHER_defs(des_ede3, DES_EDE_KEY, NID_des_ede3, 8, 24, 8, 64, - EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, - des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) +BLOCK_CIPHER_defs(des_ede3, DES_EDE_KEY, NID_des_ede3, 8, 24, 8, 64, + EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, + des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) - BLOCK_CIPHER_def_cfb(des_ede3, DES_EDE_KEY, NID_des_ede3, 24, 8, 1, - EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, - des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) +BLOCK_CIPHER_def_cfb(des_ede3, DES_EDE_KEY, NID_des_ede3, 24, 8, 1, + EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, + des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) - BLOCK_CIPHER_def_cfb(des_ede3, DES_EDE_KEY, NID_des_ede3, 24, 8, 8, - EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, - des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) +BLOCK_CIPHER_def_cfb(des_ede3, DES_EDE_KEY, NID_des_ede3, 24, 8, 8, + EVP_CIPH_RAND_KEY | EVP_CIPH_FLAG_DEFAULT_ASN1, + des_ede3_init_key, NULL, NULL, NULL, des3_ctrl) - static int des_ede_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc) +static int des_ede_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) { DES_cblock *deskey = (DES_cblock *)key; DES_EDE_KEY *dat = data(ctx); diff --git a/deps/openssl/openssl/crypto/evp/e_idea.c b/deps/openssl/openssl/crypto/evp/e_idea.c index 0371094fe3bbf2..6f4f05842f87ea 100644 --- a/deps/openssl/openssl/crypto/evp/e_idea.c +++ b/deps/openssl/openssl/crypto/evp/e_idea.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -54,8 +54,8 @@ BLOCK_CIPHER_func_cbc(idea, IDEA, EVP_IDEA_KEY, ks) 0, idea_init_key, NULL, EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, NULL) - static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc) +static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) { if (!enc) { if (EVP_CIPHER_CTX_get_mode(ctx) == EVP_CIPH_OFB_MODE) diff --git a/deps/openssl/openssl/crypto/evp/e_sm4.c b/deps/openssl/openssl/crypto/evp/e_sm4.c index f833e755162d74..66b087c0201412 100644 --- a/deps/openssl/openssl/crypto/evp/e_sm4.c +++ b/deps/openssl/openssl/crypto/evp/e_sm4.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 Ribose Inc. All Rights Reserved. * Ported from Ribose contributions from Botan. * @@ -49,12 +49,12 @@ typedef struct { return &sm4_##mode; \ } -#define DEFINE_BLOCK_CIPHERS(nid, flags) \ - BLOCK_CIPHER_generic(nid, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ - BLOCK_CIPHER_generic(nid, 1, 16, ctr, ctr, CTR, flags) +#define DEFINE_BLOCK_CIPHERS(nid, flags) \ + BLOCK_CIPHER_generic(nid, 16, 16, cbc, cbc, CBC, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, 16, 0, ecb, ecb, ECB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, 1, 16, ofb128, ofb, OFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, 1, 16, cfb128, cfb, CFB, flags | EVP_CIPH_FLAG_DEFAULT_ASN1) \ + BLOCK_CIPHER_generic(nid, 1, 16, ctr, ctr, CTR, flags) static int sm4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc) diff --git a/deps/openssl/openssl/crypto/evp/encode.c b/deps/openssl/openssl/crypto/evp/encode.c index ceeaea5f114516..d554941e7cc497 100644 --- a/deps/openssl/openssl/crypto/evp/encode.c +++ b/deps/openssl/openssl/crypto/evp/encode.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -689,7 +689,7 @@ static int evp_decodeblock_int(EVP_ENCODE_CTX *ctx, unsigned char *t, l = ((((unsigned long)a) << 18L) | (((unsigned long)b) << 12L) | (((unsigned long)c) << 6L) | (((unsigned long)d))); if (eof == -1) - eof = (f[2] == '=') + (f[3] == '='); + eof = (c == '=') + (d == '='); switch (eof) { case 2: diff --git a/deps/openssl/openssl/crypto/evp/evp_enc.c b/deps/openssl/openssl/crypto/evp/evp_enc.c index 5584e06d7e38d7..109412b342b5f5 100644 --- a/deps/openssl/openssl/crypto/evp/evp_enc.c +++ b/deps/openssl/openssl/crypto/evp/evp_enc.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -979,6 +979,11 @@ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, size_t soutl, inl_ = (size_t)inl; int blocksize; + if (inl < 0) { + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_LENGTH); + return 0; + } + if (ossl_likely(outl != NULL)) { *outl = 0; } else { @@ -1128,6 +1133,11 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, size_t soutl, inl_ = (size_t)inl; int blocksize; + if (inl < 0) { + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_LENGTH); + return 0; + } + if (ossl_likely(outl != NULL)) { *outl = 0; } else { diff --git a/deps/openssl/openssl/crypto/evp/kem.c b/deps/openssl/openssl/crypto/evp/kem.c index 6c36164760e355..d0cf696b322048 100644 --- a/deps/openssl/openssl/crypto/evp/kem.c +++ b/deps/openssl/openssl/crypto/evp/kem.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -181,7 +181,7 @@ static int evp_kem_init(EVP_PKEY_CTX *ctx, int operation, if (provauthkey != NULL && kem->auth_decapsulate_init != NULL) { ret = kem->auth_decapsulate_init(ctx->op.encap.algctx, provkey, provauthkey, params); - } else if (provauthkey == NULL && kem->encapsulate_init != NULL) { + } else if (provauthkey == NULL && kem->decapsulate_init != NULL) { ret = kem->decapsulate_init(ctx->op.encap.algctx, provkey, params); } else { ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); diff --git a/deps/openssl/openssl/crypto/hashtable/hashtable.c b/deps/openssl/openssl/crypto/hashtable/hashtable.c index dba05ebe25ced3..8b9f9cc0d9fd0b 100644 --- a/deps/openssl/openssl/crypto/hashtable/hashtable.c +++ b/deps/openssl/openssl/crypto/hashtable/hashtable.c @@ -1,5 +1,5 @@ /* - * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -82,9 +82,11 @@ #if defined(__GNUC__) || defined(__CLANG__) #define PREFETCH_NEIGHBORHOOD(x) __builtin_prefetch(x.entries) #define PREFETCH(x) __builtin_prefetch(x) +#define ALIGN __attribute__((aligned(8))) #else #define PREFETCH_NEIGHBORHOOD(x) #define PREFETCH(x) +#define ALIGN #endif /* @@ -112,7 +114,7 @@ struct ht_internal_value_st { struct ht_neighborhood_entry_st { uint64_t hash; struct ht_internal_value_st *value; -}; +} ALIGN; struct ht_neighborhood_st { struct ht_neighborhood_entry_st entries[NEIGHBORHOOD_LEN]; diff --git a/deps/openssl/openssl/crypto/http/http_client.c b/deps/openssl/openssl/crypto/http/http_client.c index cc12545fc447c7..1e603d870c03df 100644 --- a/deps/openssl/openssl/crypto/http/http_client.c +++ b/deps/openssl/openssl/crypto/http/http_client.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2018-2020 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -551,6 +551,7 @@ static int may_still_retry(time_t max_time, int *ptimeout) int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx) { int i, found_expected_ct = 0, found_keep_alive = 0; + int status_code = 0; int got_text = 1; long n; size_t resp_len = 0; @@ -751,8 +752,8 @@ int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx) /* First line in response header */ if (rctx->state == OHS_FIRSTLINE) { - i = parse_http_line1(buf, &found_keep_alive); - switch (i) { + status_code = parse_http_line1(buf, &found_keep_alive); + switch (status_code) { case HTTP_STATUS_CODE_OK: rctx->state = OHS_HEADERS; goto next_line; @@ -767,7 +768,7 @@ int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx) /* fall through */ default: /* must return content if status >= 400 */ - rctx->state = i < HTTP_STATUS_CODES_NONFATAL_ERROR + rctx->state = status_code < HTTP_STATUS_CODES_NONFATAL_ERROR ? OHS_HEADERS_ERROR : OHS_HEADERS; goto next_line; /* continue parsing, also on HTTP error */ @@ -797,6 +798,17 @@ int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx) } if (OPENSSL_strcasecmp(key, "Content-Type") == 0) { got_text = HAS_CASE_PREFIX(value, "text/"); + if (got_text + && rctx->state == OHS_HEADERS + && rctx->expect_asn1 + && (status_code >= HTTP_STATUS_CODES_NONFATAL_ERROR + || status_code == HTTP_STATUS_CODE_OK)) { + ERR_raise_data(ERR_LIB_HTTP, HTTP_R_CONTENT_TYPE_MISMATCH, + "expected ASN.1 content but got http code %d with Content-Type: %s", + status_code, value); + rctx->state = OHS_HEADERS_ERROR; + goto next_line; + } if (rctx->state == OHS_HEADERS && rctx->expected_ct != NULL) { const char *semicolon; @@ -1452,7 +1464,11 @@ int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, } BIO_push(fbio, bio); - BIO_printf(fbio, "CONNECT %s:%s " HTTP_1_0 "\r\n", server, port); + /* Add square brackets around a naked IPv6 address */ + if (server[0] != '[' && strchr(server, ':') != NULL) + BIO_printf(fbio, "CONNECT [%s]:%s " HTTP_1_0 "\r\n", server, port); + else + BIO_printf(fbio, "CONNECT %s:%s " HTTP_1_0 "\r\n", server, port); /* * Workaround for broken proxies which would otherwise close diff --git a/deps/openssl/openssl/crypto/http/http_err.c b/deps/openssl/openssl/crypto/http/http_err.c index 947a403d6009ff..8598dd1ff48a11 100644 --- a/deps/openssl/openssl/crypto/http/http_err.c +++ b/deps/openssl/openssl/crypto/http/http_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -20,6 +20,8 @@ static const ERR_STRING_DATA HTTP_str_reasons[] = { { ERR_PACK(ERR_LIB_HTTP, 0, HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN), "asn1 len exceeds max resp len" }, { ERR_PACK(ERR_LIB_HTTP, 0, HTTP_R_CONNECT_FAILURE), "connect failure" }, + { ERR_PACK(ERR_LIB_HTTP, 0, HTTP_R_CONTENT_TYPE_MISMATCH), + "content type mismatch" }, { ERR_PACK(ERR_LIB_HTTP, 0, HTTP_R_ERROR_PARSING_ASN1_LENGTH), "error parsing asn1 length" }, { ERR_PACK(ERR_LIB_HTTP, 0, HTTP_R_ERROR_PARSING_CONTENT_LENGTH), diff --git a/deps/openssl/openssl/crypto/http/http_lib.c b/deps/openssl/openssl/crypto/http/http_lib.c index 54c5c6ec1d8f3a..c8ffd87c0620f4 100644 --- a/deps/openssl/openssl/crypto/http/http_lib.c +++ b/deps/openssl/openssl/crypto/http/http_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -55,6 +55,7 @@ int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, char **ppath, char **pquery, char **pfrag) { const char *p, *tmp; + const char *authority_end; const char *scheme, *scheme_end; const char *user, *user_end; const char *host, *host_end; @@ -92,7 +93,10 @@ int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, /* parse optional "userinfo@" */ user = user_end = host = p; - host = strchr(p, '@'); + authority_end = strpbrk(p, "/?#"); + if (authority_end == NULL) + authority_end = p + strlen(p); + host = memchr(p, '@', authority_end - p); if (host != NULL) user_end = host++; else diff --git a/deps/openssl/openssl/crypto/idea/i_cfb64.c b/deps/openssl/openssl/crypto/idea/i_cfb64.c index c8ed3853285a6f..9e95ed7323fe65 100644 --- a/deps/openssl/openssl/crypto/idea/i_cfb64.c +++ b/deps/openssl/openssl/crypto/idea/i_cfb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,6 +37,7 @@ void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out, *num = -1; return; } + n = n & 0x07; iv = (unsigned char *)ivec; if (encrypt) { diff --git a/deps/openssl/openssl/crypto/idea/i_ofb64.c b/deps/openssl/openssl/crypto/idea/i_ofb64.c index afa6a960d4ed9b..64f8469abc607d 100644 --- a/deps/openssl/openssl/crypto/idea/i_ofb64.c +++ b/deps/openssl/openssl/crypto/idea/i_ofb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,6 +39,7 @@ void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out, *num = -1; return; } + n = n & 0x07; iv = (unsigned char *)ivec; n2l(iv, v0); diff --git a/deps/openssl/openssl/crypto/init.c b/deps/openssl/openssl/crypto/init.c index c309b27c5ddaa0..ea29645b648c3b 100644 --- a/deps/openssl/openssl/crypto/init.c +++ b/deps/openssl/openssl/crypto/init.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -275,27 +275,24 @@ DEFINE_RUN_ONCE_STATIC_ALT(ossl_init_no_add_all_digests, } static CRYPTO_ONCE config = CRYPTO_ONCE_STATIC_INIT; -static int config_inited = 0; static const OPENSSL_INIT_SETTINGS *conf_settings = NULL; DEFINE_RUN_ONCE_STATIC(ossl_init_config) { int ret = ossl_config_int(NULL); - config_inited = 1; return ret; } DEFINE_RUN_ONCE_STATIC_ALT(ossl_init_config_settings, ossl_init_config) { int ret = ossl_config_int(conf_settings); - config_inited = 1; return ret; } DEFINE_RUN_ONCE_STATIC_ALT(ossl_init_no_config, ossl_init_config) { OSSL_TRACE(INIT, "ossl_no_config_int()\n"); ossl_no_config_int(); - config_inited = 1; + return 1; } diff --git a/deps/openssl/openssl/crypto/initthread.c b/deps/openssl/openssl/crypto/initthread.c index b03579d06c750c..241fdf85362f6c 100644 --- a/deps/openssl/openssl/crypto/initthread.c +++ b/deps/openssl/openssl/crypto/initthread.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -200,16 +200,28 @@ static void init_thread_destructor(void *hands) } static CRYPTO_ONCE ossl_init_thread_runonce = CRYPTO_ONCE_STATIC_INIT; +/* MSVC linker can use other segment for uninitialized (zeroed) variables */ +#if defined(OPENSSL_SYS_WINDOWS) static CRYPTO_THREAD_ID recursion_guard = (CRYPTO_THREAD_ID)-1; +#elif defined(OPENSSL_SYS_TANDEM) && (defined(_PUT_MODEL_) || defined(_KLT_MODEL_)) +static CRYPTO_THREAD_ID recursion_guard = { (void *)-1, (short)-1, (short)-1 }; +#else +static CRYPTO_THREAD_ID recursion_guard = (CRYPTO_THREAD_ID)0; +#endif DEFINE_RUN_ONCE_STATIC(ossl_init_thread_once) { + /* CRYPTO_THREAD_init_local() can call ossl_init_threads() again */ recursion_guard = CRYPTO_THREAD_get_current_id(); if (!CRYPTO_THREAD_init_local(&destructor_key.value, init_thread_destructor)) return 0; +#if defined(OPENSSL_SYS_TANDEM) + memset(&recursion_guard, 0, sizeof(recursion_guard)); +#else recursion_guard = (CRYPTO_THREAD_ID)0; +#endif return 1; } diff --git a/deps/openssl/openssl/crypto/modes/asm/aes-gcm-ppc.pl b/deps/openssl/openssl/crypto/modes/asm/aes-gcm-ppc.pl index 970283c559f823..7355c31cc12970 100644 --- a/deps/openssl/openssl/crypto/modes/asm/aes-gcm-ppc.pl +++ b/deps/openssl/openssl/crypto/modes/asm/aes-gcm-ppc.pl @@ -409,7 +409,6 @@ ################################################################################ .align 4 aes_gcm_crypt_1x: -.localentry aes_gcm_crypt_1x,0 cmpdi 5, 16 bge __More_1x @@ -492,7 +491,6 @@ ################################################################################ .align 4 __Process_partial: -.localentry __Process_partial,0 # create partial mask vspltisb 16, -1 @@ -564,7 +562,6 @@ .global ppc_aes_gcm_encrypt .align 5 ppc_aes_gcm_encrypt: -.localentry ppc_aes_gcm_encrypt,0 SAVE_REGS LOAD_HASH_TABLE @@ -752,7 +749,6 @@ .global ppc_aes_gcm_decrypt .align 5 ppc_aes_gcm_decrypt: -.localentry ppc_aes_gcm_decrypt, 0 SAVE_REGS LOAD_HASH_TABLE @@ -1032,7 +1028,6 @@ .size ppc_aes_gcm_decrypt,.-ppc_aes_gcm_decrypt aes_gcm_out: -.localentry aes_gcm_out,0 mr 3, 11 # return count diff --git a/deps/openssl/openssl/crypto/modes/asm/ghash-armv4.pl b/deps/openssl/openssl/crypto/modes/asm/ghash-armv4.pl index 044f86f143f91d..4ab6d8cb2b42c0 100644 --- a/deps/openssl/openssl/crypto/modes/asm/ghash-armv4.pl +++ b/deps/openssl/openssl/crypto/modes/asm/ghash-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -55,7 +55,7 @@ # Câmara, D.; Gouvêa, C. P. L.; López, J. & Dahab, R.: Fast Software # Polynomial Multiplication on ARM Processors using the NEON Engine. # -# http://conradoplg.cryptoland.net/files/2010/12/mocrysen13.pdf +# https://conradoplg.modp.net/files/2010/12/mocrysen13.pdf # ==================================================================== # Note about "528B" variant. In ARM case it makes lesser sense to diff --git a/deps/openssl/openssl/crypto/modes/build.info b/deps/openssl/openssl/crypto/modes/build.info index 52d2df19c6d9d3..9fb2d503d8d6ca 100644 --- a/deps/openssl/openssl/crypto/modes/build.info +++ b/deps/openssl/openssl/crypto/modes/build.info @@ -35,7 +35,7 @@ IF[{- !$disabled{asm} -}] $MODESASM_ppc32=ghashp8-ppc.s $MODESDEF_ppc32= $MODESASM_ppc64=$MODESASM_ppc32 - IF[{- $target{sys_id} ne "AIX" && $target{sys_id} ne "MACOSX" -}] + IF[{- $target{perlasm_scheme} =~ /le$/ -}] $MODESASM_ppc64=$MODESASM_ppc32 aes-gcm-ppc.s ENDIF $MODESDEF_ppc64=$MODESDEF_ppc32 diff --git a/deps/openssl/openssl/crypto/o_str.c b/deps/openssl/openssl/crypto/o_str.c index 35540630be25f9..154393c7b3e7d0 100644 --- a/deps/openssl/openssl/crypto/o_str.c +++ b/deps/openssl/openssl/crypto/o_str.c @@ -1,5 +1,5 @@ /* - * Copyright 2003-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2003-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -296,6 +296,11 @@ static int buf2hexstr_sep(char *str, size_t str_n, size_t *strlength, int has_sep = (sep != CH_ZERO); size_t i, len = has_sep ? buflen * 3 : 1 + buflen * 2; + if (buflen > (has_sep ? SIZE_MAX / 3 : (SIZE_MAX - 1) / 2)) { + ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_BYTES); + return 0; + } + if (len == 0) ++len; if (strlength != NULL) @@ -339,7 +344,13 @@ char *ossl_buf2hexstr_sep(const unsigned char *buf, long buflen, char sep) if (buflen == 0) return OPENSSL_zalloc(1); - tmp_n = (sep != CH_ZERO) ? buflen * 3 : 1 + buflen * 2; + if ((sep != CH_ZERO && (size_t)buflen > SIZE_MAX / 3) + || (sep == CH_ZERO && (size_t)buflen > (SIZE_MAX - 1) / 2)) { + ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_BYTES); + return NULL; + } + + tmp_n = (sep != CH_ZERO) ? (size_t)buflen * 3 : 1 + (size_t)buflen * 2; if ((tmp = OPENSSL_malloc(tmp_n)) == NULL) return NULL; diff --git a/deps/openssl/openssl/crypto/param_build.c b/deps/openssl/openssl/crypto/param_build.c index 1eb36953ca5246..4e90c581a0eb0b 100644 --- a/deps/openssl/openssl/crypto/param_build.c +++ b/deps/openssl/openssl/crypto/param_build.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -121,12 +121,22 @@ void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld) int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_INTEGER); } int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, unsigned int num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_UNSIGNED_INTEGER); } @@ -134,12 +144,22 @@ int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, long int num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_INTEGER); } int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, unsigned long int num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_UNSIGNED_INTEGER); } @@ -147,12 +167,22 @@ int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, int32_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_INTEGER); } int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, uint32_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_UNSIGNED_INTEGER); } @@ -160,12 +190,22 @@ int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, int64_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_INTEGER); } int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, uint64_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_UNSIGNED_INTEGER); } @@ -173,6 +213,11 @@ int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, size_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_UNSIGNED_INTEGER); } @@ -180,6 +225,11 @@ int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, time_t num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_INTEGER); } @@ -187,6 +237,11 @@ int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, double num) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + return param_push_num(bld, key, &num, sizeof(num), OSSL_PARAM_REAL); } @@ -196,6 +251,11 @@ static int push_BN(OSSL_PARAM_BLD *bld, const char *key, int n, secure = 0; OSSL_PARAM_BLD_DEF *pd; + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + if (!ossl_assert(type == OSSL_PARAM_UNSIGNED_INTEGER || type == OSSL_PARAM_INTEGER)) return 0; @@ -233,6 +293,11 @@ static int push_BN(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, const BIGNUM *bn) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + if (bn != NULL && BN_is_negative(bn)) return push_BN(bld, key, bn, BN_num_bytes(bn) + 1, OSSL_PARAM_INTEGER); @@ -243,6 +308,11 @@ int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, const BIGNUM *bn, size_t sz) { + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + if (bn != NULL && BN_is_negative(bn)) return push_BN(bld, key, bn, BN_num_bytes(bn), OSSL_PARAM_INTEGER); @@ -255,6 +325,11 @@ int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, OSSL_PARAM_BLD_DEF *pd; int secure; + if (bld == NULL || key == NULL || buf == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + if (bsize == 0) bsize = strlen(buf); secure = CRYPTO_secure_allocated(buf); @@ -270,6 +345,11 @@ int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, { OSSL_PARAM_BLD_DEF *pd; + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + if (bsize == 0) bsize = strlen(buf); pd = param_push(bld, key, bsize, sizeof(buf), OSSL_PARAM_UTF8_PTR, 0); @@ -285,6 +365,11 @@ int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, OSSL_PARAM_BLD_DEF *pd; int secure; + if (bld == NULL || key == NULL || buf == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + secure = CRYPTO_secure_allocated(buf); pd = param_push(bld, key, bsize, bsize, OSSL_PARAM_OCTET_STRING, secure); if (pd == NULL) @@ -298,6 +383,11 @@ int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, { OSSL_PARAM_BLD_DEF *pd; + if (bld == NULL || key == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + pd = param_push(bld, key, bsize, sizeof(buf), OSSL_PARAM_OCTET_PTR, 0); if (pd == NULL) return 0; @@ -362,10 +452,18 @@ OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld) { OSSL_PARAM_ALIGNED_BLOCK *blk, *s = NULL; OSSL_PARAM *params, *last; - const int num = sk_OSSL_PARAM_BLD_DEF_num(bld->params); - const size_t p_blks = ossl_param_bytes_to_blocks((1 + num) * sizeof(*params)); - const size_t total = OSSL_PARAM_ALIGN_SIZE * (p_blks + bld->total_blocks); - const size_t ss = OSSL_PARAM_ALIGN_SIZE * bld->secure_blocks; + int num; + size_t p_blks, total, ss; + + if (bld == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } + + num = sk_OSSL_PARAM_BLD_DEF_num(bld->params); + p_blks = ossl_param_bytes_to_blocks((1 + num) * sizeof(*params)); + total = OSSL_PARAM_ALIGN_SIZE * (p_blks + bld->total_blocks); + ss = OSSL_PARAM_ALIGN_SIZE * bld->secure_blocks; if (ss > 0) { s = OPENSSL_secure_malloc(ss); diff --git a/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl b/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl index d677963c6176be..94ba8ad759303c 100755 --- a/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl +++ b/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2025 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -663,8 +663,7 @@ ); # Following constants are defined in x86_64 ABI supplement, for - # example available at https://www.uclibc.org/docs/psABI-x86_64.pdf, - # see section 3.7 "Stack Unwind Algorithm". + # example available at https://gitlab.com/x86-psABIs/x86-64-ABI. my %DW_reg_idx = ( "%rax"=>0, "%rdx"=>1, "%rcx"=>2, "%rbx"=>3, "%rsi"=>4, "%rdi"=>5, "%rbp"=>6, "%rsp"=>7, diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_mutl.c b/deps/openssl/openssl/crypto/pkcs12/p12_mutl.c index 79ed41209c09c9..01956252df76c8 100644 --- a/deps/openssl/openssl/crypto/pkcs12/p12_mutl.c +++ b/deps/openssl/openssl/crypto/pkcs12/p12_mutl.c @@ -519,6 +519,8 @@ int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, X509_ALGOR_free(param->messageAuthScheme); param->keyDerivationFunc = alg; param->messageAuthScheme = hmac_alg; + alg = NULL; + hmac_alg = NULL; X509_SIG_getm(p12->mac->dinfo, &macalg, &macoct); if (!ASN1_TYPE_pack_sequence(ASN1_ITEM_rptr(PBMAC1PARAM), param, &macalg->parameter)) @@ -540,6 +542,8 @@ int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, ret = 1; err: + X509_ALGOR_free(alg); + X509_ALGOR_free(hmac_alg); PBMAC1PARAM_free(param); OPENSSL_free(known_salt); return ret; diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_utl.c b/deps/openssl/openssl/crypto/pkcs12/p12_utl.c index 9360f9930713f5..a6f3248c554c94 100644 --- a/deps/openssl/openssl/crypto/pkcs12/p12_utl.c +++ b/deps/openssl/openssl/crypto/pkcs12/p12_utl.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -175,7 +175,7 @@ static int bmp_to_utf8(char *str, const unsigned char *utf16, int len) utf32chr += 0x10000; } - return UTF8_putc((unsigned char *)str, len > 4 ? 4 : len, utf32chr); + return UTF8_putc((unsigned char *)str, 4, utf32chr); } char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen) diff --git a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c index b180b584818513..d6513cf3a37994 100644 --- a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c +++ b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c @@ -831,6 +831,10 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) break; case NID_pkcs7_signed: si_sk = p7->d.sign->signer_info; + if (p7->d.sign->contents == NULL) { + ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT); + goto err; + } os = PKCS7_get_octet_string(p7->d.sign->contents); /* If detached data then the content is excluded */ if (PKCS7_type_is_data(p7->d.sign->contents) && p7->detached) { @@ -841,6 +845,10 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) break; case NID_pkcs7_digest: + if (p7->d.digest->contents == NULL) { + ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT); + goto err; + } os = PKCS7_get_octet_string(p7->d.digest->contents); /* If detached data then the content is excluded */ if (PKCS7_type_is_data(p7->d.digest->contents) && p7->detached) { diff --git a/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c b/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c index 675c694e66cd67..6cd0c3f025c5ce 100644 --- a/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c +++ b/deps/openssl/openssl/crypto/pkcs7/pk7_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -48,7 +48,8 @@ long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) break; case PKCS7_OP_GET_DETACHED_SIGNATURE: if (nid == NID_pkcs7_signed) { - if (p7->d.sign == NULL || p7->d.sign->contents->d.ptr == NULL) + if (p7->d.sign == NULL || p7->d.sign->contents == NULL + || p7->d.sign->contents->d.ptr == NULL) ret = 1; else ret = 0; @@ -742,6 +743,10 @@ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7) break; case NID_pkcs7_signed: + if (p7->d.sign == NULL || p7->d.sign->contents == NULL) { + ERR_raise(ERR_LIB_PKCS7, PKCS7_R_NO_CONTENT); + break; + } os = p7->d.sign->contents->d.data; break; diff --git a/deps/openssl/openssl/crypto/punycode.c b/deps/openssl/openssl/crypto/punycode.c index 18cbccf1ae7a29..cb78c7f18f3684 100644 --- a/deps/openssl/openssl/crypto/punycode.c +++ b/deps/openssl/openssl/crypto/punycode.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -268,7 +268,7 @@ int ossl_a2ulabel(const char *in, char *out, size_t outlen) return -1; while (1) { - char *tmpptr = strchr(inptr, '.'); + const char *tmpptr = strchr(inptr, '.'); size_t delta = tmpptr != NULL ? (size_t)(tmpptr - inptr) : strlen(inptr); if (!HAS_PREFIX(inptr, "xn--")) { diff --git a/deps/openssl/openssl/crypto/rand/rand_egd.c b/deps/openssl/openssl/crypto/rand/rand_egd.c index ba8aa34dc2047c..aeb9bd0d2384d1 100644 --- a/deps/openssl/openssl/crypto/rand/rand_egd.c +++ b/deps/openssl/openssl/crypto/rand/rand_egd.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -108,10 +108,13 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) { FILE *fp = NULL; struct sockaddr_un addr; - int mybuffer, ret = -1, i, numbytes, fd; + int mybuffer, ret = -1, i, numbytes, fd = -1; unsigned char tempbuf[255]; +#if defined(OPENSSL_SYS_TANDEM) + int hpns_connect_attempt = 0; +#endif - if (bytes > (int)sizeof(tempbuf)) + if (bytes <= 0 || bytes > (int)sizeof(tempbuf)) return -1; /* Make socket. */ @@ -126,9 +129,8 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) #else fd = socket(AF_UNIX, SOCK_STREAM, 0); #endif - if (fd == -1 || (fp = fdopen(fd, "r+")) == NULL) + if (fd == -1) return -1; - setbuf(fp, NULL); /* Try to connect */ for (;;) { @@ -171,6 +173,14 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) } } + /* Create stream only after a successful connect to avoid stale FILE* on fd swap. */ + fp = fdopen(fd, "r+"); + if (fp == NULL) { + close(fd); + return -1; + } + setbuf(fp, NULL); + /* Make request, see how many bytes we can get back. */ tempbuf[0] = 1; tempbuf[1] = bytes; @@ -180,6 +190,9 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) goto err; numbytes = tempbuf[0]; + if (numbytes <= 0 || numbytes > bytes || numbytes > (int)sizeof(tempbuf)) + goto err; + /* Which buffer are we using? */ mybuffer = buf == NULL; if (mybuffer) @@ -196,6 +209,8 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) err: if (fp != NULL) fclose(fp); + else if (fd != -1) + close(fd); return ret; } diff --git a/deps/openssl/openssl/crypto/rc2/rc2cfb64.c b/deps/openssl/openssl/crypto/rc2/rc2cfb64.c index ccc69fa6bf8daa..0ee6061486d2d0 100644 --- a/deps/openssl/openssl/crypto/rc2/rc2cfb64.c +++ b/deps/openssl/openssl/crypto/rc2/rc2cfb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, int *num, int encrypt) { register unsigned long v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned long ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/rc2/rc2ofb64.c b/deps/openssl/openssl/crypto/rc2/rc2ofb64.c index b659b72a1005e9..fdc025bbd8f176 100644 --- a/deps/openssl/openssl/crypto/rc2/rc2ofb64.c +++ b/deps/openssl/openssl/crypto/rc2/rc2ofb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,7 +26,7 @@ void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, int *num) { register unsigned long v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned char d[8]; register char *dp; diff --git a/deps/openssl/openssl/crypto/rc5/rc5cfb64.c b/deps/openssl/openssl/crypto/rc5/rc5cfb64.c index f2f4b9bdfb3bce..a7c447f681d3b1 100644 --- a/deps/openssl/openssl/crypto/rc5/rc5cfb64.c +++ b/deps/openssl/openssl/crypto/rc5/rc5cfb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num, int encrypt) { register unsigned long v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned long ti[2]; unsigned char *iv, c, cc; diff --git a/deps/openssl/openssl/crypto/rc5/rc5ofb64.c b/deps/openssl/openssl/crypto/rc5/rc5ofb64.c index 30487521f22f42..5217303a28d236 100644 --- a/deps/openssl/openssl/crypto/rc5/rc5ofb64.c +++ b/deps/openssl/openssl/crypto/rc5/rc5ofb64.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,7 +26,7 @@ void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, unsigned char *ivec, int *num) { register unsigned long v0, v1, t; - register int n = *num; + register int n = *num & 0x07; register long l = length; unsigned char d[8]; register char *dp; diff --git a/deps/openssl/openssl/crypto/riscvcap.c b/deps/openssl/openssl/crypto/riscvcap.c index f6db84bf16b670..64a45d87cec4ed 100644 --- a/deps/openssl/openssl/crypto/riscvcap.c +++ b/deps/openssl/openssl/crypto/riscvcap.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -26,9 +26,6 @@ extern size_t riscv_vlen_asm(void); -static void parse_env(const char *envstr); -static void strtoupper(char *str); - static size_t vlen = 0; #ifdef OSSL_RISCV_HWPROBE @@ -50,10 +47,15 @@ size_t OPENSSL_instrument_bus2(unsigned int *out, size_t cnt, size_t max) return 0; } -static void strtoupper(char *str) +static void strtoupper(const char *str, char *dst, size_t dstlen) { - for (char *x = str; *x; ++x) - *x = toupper((unsigned char)*x); + for (size_t i = 0; i < dstlen; i++) { + if (i == dstlen - 1 || str[i] == '\0') { + dst[i] = '\0'; + break; + } + dst[i] = toupper((unsigned char)str[i]); + } } /* parse_env() parses a RISC-V architecture string. An example of such a string @@ -68,15 +70,24 @@ static void parse_env(const char *envstr) char buf[BUFLEN]; /* Convert env str to all uppercase */ - OPENSSL_strlcpy(envstrupper, envstr, sizeof(envstrupper)); - strtoupper(envstrupper); + strtoupper(envstr, envstrupper, sizeof(envstrupper)); for (size_t i = 0; i < kRISCVNumCaps; ++i) { + size_t len = strlen(RISCV_capabilities[i].name); /* Prefix capability with underscore in preparation for search */ - BIO_snprintf(buf, BUFLEN, "_%s", RISCV_capabilities[i].name); - if (strstr(envstrupper, buf) != NULL) { - /* Match, set relevant bit in OPENSSL_riscvcap_P[] */ - OPENSSL_riscvcap_P[RISCV_capabilities[i].index] |= (1 << RISCV_capabilities[i].bit_offset); + /* + * Avoid using higher level library functions which may require + * library initialization (such as BIO_snprintf) as this may be called + * in a constructor before library initialization + */ + if (len < BUFLEN - 1) { + buf[0] = '_'; + memcpy(buf + 1, RISCV_capabilities[i].name, len); + buf[len + 1] = '\0'; + if (strstr(envstrupper, buf) != NULL) { + /* Match, set relevant bit in OPENSSL_riscvcap_P[] */ + OPENSSL_riscvcap_P[RISCV_capabilities[i].index] |= (1 << RISCV_capabilities[i].bit_offset); + } } } } diff --git a/deps/openssl/openssl/crypto/rsa/rsa_backend.c b/deps/openssl/openssl/crypto/rsa/rsa_backend.c index 3315c50014fdc6..3cfa4a18be5709 100644 --- a/deps/openssl/openssl/crypto/rsa/rsa_backend.c +++ b/deps/openssl/openssl/crypto/rsa/rsa_backend.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -246,6 +246,8 @@ int ossl_rsa_fromdata(RSA *rsa, const OSSL_PARAM params[], int include_private) BN_free(n); BN_free(e); BN_free(d); + BN_clear_free(p); + BN_clear_free(q); sk_BIGNUM_pop_free(factors, BN_clear_free); sk_BIGNUM_pop_free(exps, BN_clear_free); sk_BIGNUM_pop_free(coeffs, BN_clear_free); diff --git a/deps/openssl/openssl/crypto/sha/asm/keccak1600-s390x.pl b/deps/openssl/openssl/crypto/sha/asm/keccak1600-s390x.pl index 7d5ebde117190a..6cf0214bb932f6 100755 --- a/deps/openssl/openssl/crypto/sha/asm/keccak1600-s390x.pl +++ b/deps/openssl/openssl/crypto/sha/asm/keccak1600-s390x.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -67,6 +67,7 @@ $code.=<<___; .text +.machine "z10" .type __KeccakF1600,\@function .align 32 diff --git a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c index 77c20daceb34f8..41fc494048b4b5 100644 --- a/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c +++ b/deps/openssl/openssl/crypto/slh_dsa/slh_dsa.c @@ -1,5 +1,5 @@ /* - * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -119,11 +119,11 @@ static int slh_sign_internal(SLH_DSA_HASH_CTX *hctx, /* Generate ht signature and append to the SLH-DSA signature */ && ossl_slh_ht_sign(hctx, pk_fors, sk_seed, pk_seed, tree_id, leaf_id, wpkt); - *sig_len = sig_len_expected; - ret = 1; err: if (!WPACKET_finish(wpkt)) ret = 0; + if (ret) + *sig_len = sig_len_expected; return ret; } @@ -232,6 +232,7 @@ static uint8_t *msg_encode(const uint8_t *msg, size_t msg_len, const uint8_t *ctx, size_t ctx_len, int encode, uint8_t *tmp, size_t tmp_len, size_t *out_len) { + WPACKET pkt; uint8_t *encoded = NULL; size_t encoded_len; @@ -240,11 +241,14 @@ static uint8_t *msg_encode(const uint8_t *msg, size_t msg_len, *out_len = msg_len; return (uint8_t *)msg; } + if (ctx_len > SLH_DSA_MAX_CONTEXT_STRING_LEN) return NULL; /* Pure encoding */ encoded_len = 1 + 1 + ctx_len + msg_len; + if (encoded_len < msg_len) /* Check for overflow */ + return NULL; *out_len = encoded_len; if (encoded_len <= tmp_len) { encoded = tmp; @@ -253,10 +257,17 @@ static uint8_t *msg_encode(const uint8_t *msg, size_t msg_len, if (encoded == NULL) return NULL; } - encoded[0] = 0; - encoded[1] = (uint8_t)ctx_len; - memcpy(&encoded[2], ctx, ctx_len); - memcpy(&encoded[2 + ctx_len], msg, msg_len); + if (!WPACKET_init_static_len(&pkt, encoded, encoded_len, 0) + || !WPACKET_put_bytes_u8(&pkt, 0) + || !WPACKET_put_bytes_u8(&pkt, (uint8_t)ctx_len) + || !WPACKET_memcpy(&pkt, ctx, ctx_len) + || !WPACKET_memcpy(&pkt, msg, msg_len) + || !WPACKET_finish(&pkt)) { + if (encoded != tmp) + OPENSSL_free(encoded); + encoded = NULL; + WPACKET_cleanup(&pkt); + } return encoded; } diff --git a/deps/openssl/openssl/crypto/sm4/asm/vpsm4_ex-armv8.pl b/deps/openssl/openssl/crypto/sm4/asm/vpsm4_ex-armv8.pl index e8e33735852ec7..eac5a0f6a1d81a 100644 --- a/deps/openssl/openssl/crypto/sm4/asm/vpsm4_ex-armv8.pl +++ b/deps/openssl/openssl/crypto/sm4/asm/vpsm4_ex-armv8.pl @@ -476,12 +476,13 @@ () $code.=<<___; adrp $xtmp2, .Lsbox_magic - ldr $MaskQ, [$xtmp2, #:lo12:.Lsbox_magic] - ldr $TAHMatQ, [$xtmp2, #:lo12:.Lsbox_magic+16] - ldr $TALMatQ, [$xtmp2, #:lo12:.Lsbox_magic+32] - ldr $ATAHMatQ, [$xtmp2, #:lo12:.Lsbox_magic+48] - ldr $ATALMatQ, [$xtmp2, #:lo12:.Lsbox_magic+64] - ldr $ANDMaskQ, [$xtmp2, #:lo12:.Lsbox_magic+80] + add $xtmp2, $xtmp2, #:lo12:.Lsbox_magic + ldr $MaskQ, [$xtmp2] + ldr $TAHMatQ, [$xtmp2, 16] + ldr $TALMatQ, [$xtmp2, 32] + ldr $ATAHMatQ, [$xtmp2, 48] + ldr $ATALMatQ, [$xtmp2, 64] + ldr $ANDMaskQ, [$xtmp2, 80] ___ } diff --git a/deps/openssl/openssl/crypto/store/store_lib.c b/deps/openssl/openssl/crypto/store/store_lib.c index 7c111541388cae..b7a9eaed8f7d56 100644 --- a/deps/openssl/openssl/crypto/store/store_lib.c +++ b/deps/openssl/openssl/crypto/store/store_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -498,6 +498,10 @@ int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, int res = 0; struct ossl_passphrase_data_st pwdata = { 0 }; + if (uri == NULL) { + ERR_raise(ERR_LIB_OSSL_STORE, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } OPENSSL_strlcpy(scheme, uri, sizeof(scheme)); if ((p = strchr(scheme, ':')) != NULL) *p++ = '\0'; diff --git a/deps/openssl/openssl/crypto/threads_none.c b/deps/openssl/openssl/crypto/threads_none.c index 1a67d51f29f4e2..fd2ab38d8097d9 100644 --- a/deps/openssl/openssl/crypto/threads_none.c +++ b/deps/openssl/openssl/crypto/threads_none.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -217,7 +217,7 @@ int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key) CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void) { - return 0; + return 1; } int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b) diff --git a/deps/openssl/openssl/crypto/threads_pthread.c b/deps/openssl/openssl/crypto/threads_pthread.c index b1a4a63a2748d9..b4394f78fc1ff6 100644 --- a/deps/openssl/openssl/crypto/threads_pthread.c +++ b/deps/openssl/openssl/crypto/threads_pthread.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -534,6 +534,9 @@ void ossl_rcu_assign_uptr(void **p, void **v) CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) { struct rcu_lock_st *new; + pthread_mutex_t *mutexes[3] = { NULL }; + pthread_cond_t *conds[2] = { NULL }; + int i; /* * We need a minimum of 2 qp's @@ -550,19 +553,40 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) return NULL; new->ctx = ctx; - pthread_mutex_init(&new->write_lock, NULL); - pthread_mutex_init(&new->prior_lock, NULL); - pthread_mutex_init(&new->alloc_lock, NULL); - pthread_cond_init(&new->prior_signal, NULL); - pthread_cond_init(&new->alloc_signal, NULL); - + i = 0; + mutexes[i] = pthread_mutex_init(&new->write_lock, NULL) == 0 ? &new->write_lock : NULL; + if (mutexes[i++] == NULL) + goto err; + mutexes[i] = pthread_mutex_init(&new->prior_lock, NULL) == 0 ? &new->prior_lock : NULL; + if (mutexes[i++] == NULL) + goto err; + mutexes[i] = pthread_mutex_init(&new->alloc_lock, NULL) == 0 ? &new->alloc_lock : NULL; + if (mutexes[i++] == NULL) + goto err; + conds[i - 3] = pthread_cond_init(&new->prior_signal, NULL) == 0 ? &new->prior_signal : NULL; + if (conds[i - 3] == NULL) + goto err; + i++; + conds[i - 3] = pthread_cond_init(&new->alloc_signal, NULL) == 0 ? &new->alloc_signal : NULL; + if (conds[i - 3] == NULL) + goto err; + i++; new->qp_group = allocate_new_qp_group(new, num_writers); - if (new->qp_group == NULL) { - OPENSSL_free(new); - new = NULL; - } + if (new->qp_group == NULL) + goto err; return new; + +err: + for (i = 0; i < 3; i++) + if (mutexes[i] != NULL) + pthread_mutex_destroy(mutexes[i]); + for (i = 0; i < 2; i++) + if (conds[i] != NULL) + pthread_cond_destroy(conds[i]); + OPENSSL_free(new->qp_group); + OPENSSL_free(new); + return NULL; } void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock) @@ -576,6 +600,17 @@ void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock) ossl_synchronize_rcu(rlock); OPENSSL_free(rlock->qp_group); + /* + * Some targets (BSD) allocate heap when initializing + * a mutex or condition, to prevent leaks, those need + * to be destroyed here + */ + pthread_mutex_destroy(&rlock->write_lock); + pthread_mutex_destroy(&rlock->prior_lock); + pthread_mutex_destroy(&rlock->alloc_lock); + pthread_cond_destroy(&rlock->prior_signal); + pthread_cond_destroy(&rlock->alloc_signal); + /* There should only be a single qp left now */ OPENSSL_free(rlock); } diff --git a/deps/openssl/openssl/crypto/threads_win.c b/deps/openssl/openssl/crypto/threads_win.c index 51d489cdf03b9f..795d97a012eb3a 100644 --- a/deps/openssl/openssl/crypto/threads_win.c +++ b/deps/openssl/openssl/crypto/threads_win.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -50,7 +50,7 @@ typedef struct { * atomically updated */ struct rcu_qp { - volatile uint64_t users; + uint64_t users; }; struct thread_qp { diff --git a/deps/openssl/openssl/crypto/ts/ts_asn1.c b/deps/openssl/openssl/crypto/ts/ts_asn1.c index 93a741d04d7498..494e4e69d71068 100644 --- a/deps/openssl/openssl/crypto/ts/ts_asn1.c +++ b/deps/openssl/openssl/crypto/ts/ts_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -17,7 +17,7 @@ ASN1_SEQUENCE(TS_MSG_IMPRINT) = { ASN1_SIMPLE(TS_MSG_IMPRINT, hashed_msg, ASN1_OCTET_STRING) } static_ASN1_SEQUENCE_END(TS_MSG_IMPRINT) - IMPLEMENT_ASN1_FUNCTIONS(TS_MSG_IMPRINT) +IMPLEMENT_ASN1_FUNCTIONS(TS_MSG_IMPRINT) IMPLEMENT_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bp, TS_MSG_IMPRINT **a) { @@ -51,7 +51,7 @@ ASN1_SEQUENCE(TS_REQ) = { ASN1_IMP_SEQUENCE_OF_OPT(TS_REQ, extensions, X509_EXTENSION, 0) } static_ASN1_SEQUENCE_END(TS_REQ) - IMPLEMENT_ASN1_FUNCTIONS(TS_REQ) +IMPLEMENT_ASN1_FUNCTIONS(TS_REQ) IMPLEMENT_ASN1_DUP_FUNCTION(TS_REQ) TS_REQ *d2i_TS_REQ_bio(BIO *bp, TS_REQ **a) { @@ -80,7 +80,7 @@ ASN1_SEQUENCE(TS_ACCURACY) = { ASN1_IMP_OPT(TS_ACCURACY, micros, ASN1_INTEGER, 1) } static_ASN1_SEQUENCE_END(TS_ACCURACY) - IMPLEMENT_ASN1_FUNCTIONS(TS_ACCURACY) +IMPLEMENT_ASN1_FUNCTIONS(TS_ACCURACY) IMPLEMENT_ASN1_DUP_FUNCTION(TS_ACCURACY) ASN1_SEQUENCE(TS_TST_INFO) = { @@ -96,7 +96,7 @@ ASN1_SEQUENCE(TS_TST_INFO) = { ASN1_IMP_SEQUENCE_OF_OPT(TS_TST_INFO, extensions, X509_EXTENSION, 1) } static_ASN1_SEQUENCE_END(TS_TST_INFO) - IMPLEMENT_ASN1_FUNCTIONS(TS_TST_INFO) +IMPLEMENT_ASN1_FUNCTIONS(TS_TST_INFO) IMPLEMENT_ASN1_DUP_FUNCTION(TS_TST_INFO) TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bp, TS_TST_INFO **a) { @@ -127,7 +127,7 @@ ASN1_SEQUENCE(TS_STATUS_INFO) = { ASN1_OPT(TS_STATUS_INFO, failure_info, ASN1_BIT_STRING) } static_ASN1_SEQUENCE_END(TS_STATUS_INFO) - IMPLEMENT_ASN1_FUNCTIONS(TS_STATUS_INFO) +IMPLEMENT_ASN1_FUNCTIONS(TS_STATUS_INFO) IMPLEMENT_ASN1_DUP_FUNCTION(TS_STATUS_INFO) static int ts_resp_set_tst_info(TS_RESP *a) @@ -175,7 +175,7 @@ ASN1_SEQUENCE_cb(TS_RESP, ts_resp_cb) = { ASN1_OPT(TS_RESP, token, PKCS7), } static_ASN1_SEQUENCE_END_cb(TS_RESP, TS_RESP) - IMPLEMENT_ASN1_FUNCTIONS(TS_RESP) +IMPLEMENT_ASN1_FUNCTIONS(TS_RESP) IMPLEMENT_ASN1_DUP_FUNCTION(TS_RESP) diff --git a/deps/openssl/openssl/crypto/x509/pcy_tree.c b/deps/openssl/openssl/crypto/x509/pcy_tree.c index 1d91e49cece136..f9d9990bd1d169 100644 --- a/deps/openssl/openssl/crypto/x509/pcy_tree.c +++ b/deps/openssl/openssl/crypto/x509/pcy_tree.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2004-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -680,8 +680,10 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, } else { *pexplicit_policy = 1; /* Tree empty and requireExplicit True: Error */ - if (init_ret & X509_PCY_TREE_EMPTY) + if (init_ret & X509_PCY_TREE_EMPTY) { + X509_policy_tree_free(tree); return X509_PCY_TREE_FAILURE; + } } ret = tree_evaluate(tree); @@ -707,13 +709,15 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, if (!ret) goto error; - *ptree = tree; - if (init_ret & X509_PCY_TREE_EXPLICIT) { nodes = X509_policy_tree_get0_user_policies(tree); - if (sk_X509_POLICY_NODE_num(nodes) <= 0) + if (sk_X509_POLICY_NODE_num(nodes) <= 0) { + X509_policy_tree_free(tree); return X509_PCY_TREE_FAILURE; + } } + + *ptree = tree; return X509_PCY_TREE_VALID; error: diff --git a/deps/openssl/openssl/crypto/x509/t_acert.c b/deps/openssl/openssl/crypto/x509/t_acert.c index 1ee6b9eacb05fe..1ef7fab682bbec 100644 --- a/deps/openssl/openssl/crypto/x509/t_acert.c +++ b/deps/openssl/openssl/crypto/x509/t_acert.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2021-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -62,8 +62,10 @@ static int print_attribute(BIO *bp, X509_ATTRIBUTE *a) case V_ASN1_SEQUENCE: if (BIO_puts(bp, "\n") <= 0) goto err; - ASN1_parse_dump(bp, at->value.sequence->data, - at->value.sequence->length, i, 1); + if (ASN1_parse_dump(bp, at->value.sequence->data, + at->value.sequence->length, i, 1) + <= 0) + goto err; break; default: if (BIO_printf(bp, "unable to print attribute of type 0x%X\n", diff --git a/deps/openssl/openssl/crypto/x509/v3_ac_tgt.c b/deps/openssl/openssl/crypto/x509/v3_ac_tgt.c index 4fe14070369a1e..b819f7659551f8 100644 --- a/deps/openssl/openssl/crypto/x509/v3_ac_tgt.c +++ b/deps/openssl/openssl/crypto/x509/v3_ac_tgt.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -41,7 +41,7 @@ ASN1_SEQUENCE(OSSL_ISSUER_SERIAL) = { ASN1_OPT(OSSL_ISSUER_SERIAL, issuerUID, ASN1_BIT_STRING), } static_ASN1_SEQUENCE_END(OSSL_ISSUER_SERIAL) - ASN1_SEQUENCE(OSSL_OBJECT_DIGEST_INFO) +ASN1_SEQUENCE(OSSL_OBJECT_DIGEST_INFO) = { ASN1_EMBED(OSSL_OBJECT_DIGEST_INFO, digestedObjectType, ASN1_ENUMERATED), ASN1_OPT(OSSL_OBJECT_DIGEST_INFO, otherObjectTypeID, ASN1_OBJECT), @@ -49,14 +49,14 @@ ASN1_SEQUENCE(OSSL_ISSUER_SERIAL) = { ASN1_EMBED(OSSL_OBJECT_DIGEST_INFO, objectDigest, ASN1_BIT_STRING), } static_ASN1_SEQUENCE_END(OSSL_OBJECT_DIGEST_INFO) - ASN1_SEQUENCE(OSSL_TARGET_CERT) +ASN1_SEQUENCE(OSSL_TARGET_CERT) = { ASN1_SIMPLE(OSSL_TARGET_CERT, targetCertificate, OSSL_ISSUER_SERIAL), ASN1_OPT(OSSL_TARGET_CERT, targetName, GENERAL_NAME), ASN1_OPT(OSSL_TARGET_CERT, certDigestInfo, OSSL_OBJECT_DIGEST_INFO), } static_ASN1_SEQUENCE_END(OSSL_TARGET_CERT) - ASN1_CHOICE(OSSL_TARGET) +ASN1_CHOICE(OSSL_TARGET) = { ASN1_EXP(OSSL_TARGET, choice.targetName, GENERAL_NAME, 0), ASN1_EXP(OSSL_TARGET, choice.targetGroup, GENERAL_NAME, 1), diff --git a/deps/openssl/openssl/crypto/x509/v3_cpols.c b/deps/openssl/openssl/crypto/x509/v3_cpols.c index ab37f9dff62501..c5a638e8a39677 100644 --- a/deps/openssl/openssl/crypto/x509/v3_cpols.c +++ b/deps/openssl/openssl/crypto/x509/v3_cpols.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -256,7 +256,7 @@ static POLICYINFO *policy_section(X509V3_CTX *ctx, static int displaytext_get_tag_len(const char *tagstr) { - char *colon = strchr(tagstr, ':'); + const char *colon = strchr(tagstr, ':'); return (colon == NULL) ? -1 : colon - tagstr; } diff --git a/deps/openssl/openssl/crypto/x509/v3_prn.c b/deps/openssl/openssl/crypto/x509/v3_prn.c index 088cffed69f016..1992344d85bebb 100644 --- a/deps/openssl/openssl/crypto/x509/v3_prn.c +++ b/deps/openssl/openssl/crypto/x509/v3_prn.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -191,9 +191,9 @@ static int unknown_ext_print(BIO *out, const unsigned char *ext, int extlen, return 1; case X509V3_EXT_PARSE_UNKNOWN: - return ASN1_parse_dump(out, ext, extlen, indent, -1); + return ASN1_parse_dump(out, ext, extlen, indent, -1) > 0; case X509V3_EXT_DUMP_UNKNOWN: - return BIO_dump_indent(out, (const char *)ext, extlen, indent); + return BIO_dump_indent(out, (const char *)ext, extlen, indent) > 0; default: return 1; diff --git a/deps/openssl/openssl/crypto/x509/v3_san.c b/deps/openssl/openssl/crypto/x509/v3_san.c index 76170bcb95163d..2674b33cc56507 100644 --- a/deps/openssl/openssl/crypto/x509/v3_san.c +++ b/deps/openssl/openssl/crypto/x509/v3_san.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -630,7 +630,8 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, static int do_othername(GENERAL_NAME *gen, const char *value, X509V3_CTX *ctx) { - char *objtmp = NULL, *p; + char *objtmp = NULL; + const char *p; int objlen; if ((p = strchr(value, ';')) == NULL) diff --git a/deps/openssl/openssl/crypto/x509/v3_timespec.c b/deps/openssl/openssl/crypto/x509/v3_timespec.c index c23b94ad085fe9..4b7b07c3d0d0f1 100644 --- a/deps/openssl/openssl/crypto/x509/v3_timespec.c +++ b/deps/openssl/openssl/crypto/x509/v3_timespec.c @@ -1,5 +1,5 @@ /* - * Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -167,7 +167,7 @@ static int i2r_OSSL_DAY_TIME(X509V3_EXT_METHOD *method, return 0; if (dt->minute && !ASN1_INTEGER_get_int64(&m, dt->minute)) return 0; - if (dt->minute && !ASN1_INTEGER_get_int64(&s, dt->second)) + if (dt->second && !ASN1_INTEGER_get_int64(&s, dt->second)) return 0; return BIO_printf(out, "%02lld:%02lld:%02lld", (long long int)h, (long long int)m, (long long int)s) diff --git a/deps/openssl/openssl/crypto/x509/v3_utl.c b/deps/openssl/openssl/crypto/x509/v3_utl.c index a3ee50e5cee79b..99780cf4a32b32 100644 --- a/deps/openssl/openssl/crypto/x509/v3_utl.c +++ b/deps/openssl/openssl/crypto/x509/v3_utl.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1120,15 +1120,16 @@ ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc) ASN1_OCTET_STRING *ret = NULL; unsigned char ipout[32]; char *iptmp = NULL, *p; + const char *slash; int iplen1, iplen2; - p = strchr(ipasc, '/'); - if (p == NULL) + slash = strchr(ipasc, '/'); + if (slash == NULL) return NULL; iptmp = OPENSSL_strdup(ipasc); if (iptmp == NULL) return NULL; - p = iptmp + (p - ipasc); + p = iptmp + (slash - ipasc); *p++ = 0; iplen1 = ossl_a2i_ipadd(ipout, iptmp); diff --git a/deps/openssl/openssl/crypto/x509/x509_vfy.c b/deps/openssl/openssl/crypto/x509/x509_vfy.c index 20c012def2f3ff..0994c32ca53360 100644 --- a/deps/openssl/openssl/crypto/x509/x509_vfy.c +++ b/deps/openssl/openssl/crypto/x509/x509_vfy.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1123,6 +1123,7 @@ static int check_cert(X509_STORE_CTX *ctx) goto done; } + ctx->current_crl = NULL; X509_CRL_free(crl); X509_CRL_free(dcrl); crl = NULL; @@ -1307,6 +1308,8 @@ static int check_delta_base(X509_CRL *delta, X509_CRL *base) if (ASN1_INTEGER_cmp(delta->base_crl_number, base->crl_number) > 0) return 0; /* Delta CRL number must exceed full CRL number */ + if (delta->crl_number == NULL) + return 0; return ASN1_INTEGER_cmp(delta->crl_number, base->crl_number) > 0; } @@ -3015,7 +3018,7 @@ static int dane_match_cert(X509_STORE_CTX *ctx, X509 *cert, int depth) break; } - OPENSSL_free(dane->mcert); + X509_free(dane->mcert); dane->mcert = cert; dane->mdpth = depth; dane->mtlsa = t; diff --git a/deps/openssl/openssl/crypto/x509/x_pubkey.c b/deps/openssl/openssl/crypto/x509/x_pubkey.c index 4c75560ef2489b..03f532ab9cb379 100644 --- a/deps/openssl/openssl/crypto/x509/x_pubkey.c +++ b/deps/openssl/openssl/crypto/x509/x_pubkey.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -65,8 +65,8 @@ ASN1_SEQUENCE(X509_PUBKEY_INTERNAL) = { ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING) } static_ASN1_SEQUENCE_END_name(X509_PUBKEY, X509_PUBKEY_INTERNAL) - X509_PUBKEY - * ossl_d2i_X509_PUBKEY_INTERNAL(const unsigned char **pp, long len, OSSL_LIB_CTX *libctx, const char *propq) +X509_PUBKEY +*ossl_d2i_X509_PUBKEY_INTERNAL(const unsigned char **pp, long len, OSSL_LIB_CTX *libctx, const char *propq) { X509_PUBKEY *xpub = OPENSSL_zalloc(sizeof(*xpub)); diff --git a/deps/openssl/openssl/doc/build.info b/deps/openssl/openssl/doc/build.info index bb1f00f49b762c..eb4492ba9c7530 100644 --- a/deps/openssl/openssl/doc/build.info +++ b/deps/openssl/openssl/doc/build.info @@ -2903,6 +2903,10 @@ DEPEND[html/man3/UI_new.html]=man3/UI_new.pod GENERATE[html/man3/UI_new.html]=man3/UI_new.pod DEPEND[man/man3/UI_new.3]=man3/UI_new.pod GENERATE[man/man3/UI_new.3]=man3/UI_new.pod +DEPEND[html/man3/X509V3_EXT_print.html]=man3/X509V3_EXT_print.pod +GENERATE[html/man3/X509V3_EXT_print.html]=man3/X509V3_EXT_print.pod +DEPEND[man/man3/X509V3_EXT_print.3]=man3/X509V3_EXT_print.pod +GENERATE[man/man3/X509V3_EXT_print.3]=man3/X509V3_EXT_print.pod DEPEND[html/man3/X509V3_get_d2i.html]=man3/X509V3_get_d2i.pod GENERATE[html/man3/X509V3_get_d2i.html]=man3/X509V3_get_d2i.pod DEPEND[man/man3/X509V3_get_d2i.3]=man3/X509V3_get_d2i.pod @@ -3787,6 +3791,7 @@ html/man3/UI_STRING.html \ html/man3/UI_UTIL_read_pw.html \ html/man3/UI_create_method.html \ html/man3/UI_new.html \ +html/man3/X509V3_EXT_print.html \ html/man3/X509V3_get_d2i.html \ html/man3/X509V3_set_ctx.html \ html/man3/X509_ACERT_add1_attr.html \ @@ -4463,6 +4468,7 @@ man/man3/UI_STRING.3 \ man/man3/UI_UTIL_read_pw.3 \ man/man3/UI_create_method.3 \ man/man3/UI_new.3 \ +man/man3/X509V3_EXT_print.3 \ man/man3/X509V3_get_d2i.3 \ man/man3/X509V3_set_ctx.3 \ man/man3/X509_ACERT_add1_attr.3 \ diff --git a/deps/openssl/openssl/exporters/cmake/OpenSSLConfig.cmake.in b/deps/openssl/openssl/exporters/cmake/OpenSSLConfig.cmake.in index c023e78eafb932..125b94704a2be3 100644 --- a/deps/openssl/openssl/exporters/cmake/OpenSSLConfig.cmake.in +++ b/deps/openssl/openssl/exporters/cmake/OpenSSLConfig.cmake.in @@ -1,4 +1,5 @@ # Generated by OpenSSL +# {- $OpenSSL::safe::installdata::COMMENT // "" -} {- use lib catdir($config{sourcedir}, 'Configurations'); use platform; diff --git a/deps/openssl/openssl/exporters/cmake/OpenSSLConfigVersion.cmake.in b/deps/openssl/openssl/exporters/cmake/OpenSSLConfigVersion.cmake.in index b1290a9eec76f0..15bae5697220d6 100644 --- a/deps/openssl/openssl/exporters/cmake/OpenSSLConfigVersion.cmake.in +++ b/deps/openssl/openssl/exporters/cmake/OpenSSLConfigVersion.cmake.in @@ -1,4 +1,5 @@ # Generated by OpenSSL +# {- $OpenSSL::safe::installdata::COMMENT // "" -} set(PACKAGE_VERSION {- $config{version} -}) diff --git a/deps/openssl/openssl/exporters/pkg-config/libcrypto.pc.in b/deps/openssl/openssl/exporters/pkg-config/libcrypto.pc.in index 3d56e9741831ab..eb6adffa911f4f 100644 --- a/deps/openssl/openssl/exporters/pkg-config/libcrypto.pc.in +++ b/deps/openssl/openssl/exporters/pkg-config/libcrypto.pc.in @@ -1,3 +1,4 @@ +# {- $OpenSSL::safe::installdata::COMMENT // "" -} prefix={- $OpenSSL::safe::installdata::PREFIX[0] -} exec_prefix=${prefix} libdir={- if (defined $OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0]) { diff --git a/deps/openssl/openssl/exporters/pkg-config/libssl.pc.in b/deps/openssl/openssl/exporters/pkg-config/libssl.pc.in index 162db65c99a2af..53228dde4a08cd 100644 --- a/deps/openssl/openssl/exporters/pkg-config/libssl.pc.in +++ b/deps/openssl/openssl/exporters/pkg-config/libssl.pc.in @@ -1,3 +1,4 @@ +# {- $OpenSSL::safe::installdata::COMMENT // "" -} prefix={- $OpenSSL::safe::installdata::PREFIX[0] -} exec_prefix=${prefix} libdir={- if (defined $OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0]) { diff --git a/deps/openssl/openssl/exporters/pkg-config/openssl.pc.in b/deps/openssl/openssl/exporters/pkg-config/openssl.pc.in index 73eb8e73c2d27d..fd3bc9ac86c48d 100644 --- a/deps/openssl/openssl/exporters/pkg-config/openssl.pc.in +++ b/deps/openssl/openssl/exporters/pkg-config/openssl.pc.in @@ -1,3 +1,4 @@ +# {- $OpenSSL::safe::installdata::COMMENT // "" -} prefix={- $OpenSSL::safe::installdata::PREFIX[0] -} exec_prefix=${prefix} libdir={- if (defined $OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0]) { diff --git a/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template.pm b/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template.pm index be38c73ce457f5..dec5b61419d15e 100644 --- a/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template.pm +++ b/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template.pm @@ -2337,8 +2337,8 @@ There are not quite enough tests in the test suite. =head1 SOURCE -The development version is on github at L -and may be cloned from L +The development version is on github at L +and may be cloned from L =head1 BUGS diff --git a/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template/Preprocess.pm b/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template/Preprocess.pm index 4fea67b383130d..b4f7d53ebaad37 100644 --- a/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template/Preprocess.pm +++ b/deps/openssl/openssl/external/perl/Text-Template-1.56/lib/Text/Template/Preprocess.pm @@ -122,8 +122,8 @@ L =head1 SOURCE -The development version is on github at L -and may be cloned from L +The development version is on github at L +and may be cloned from L =head1 BUGS diff --git a/deps/openssl/openssl/include/crypto/aes_platform.h b/deps/openssl/openssl/include/crypto/aes_platform.h index a6765d20d8565d..28beba8efb98d9 100644 --- a/deps/openssl/openssl/include/crypto/aes_platform.h +++ b/deps/openssl/openssl/include/crypto/aes_platform.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -77,7 +77,9 @@ void AES_xts_decrypt(const unsigned char *inp, unsigned char *out, size_t len, #define HWAES_xts_decrypt aes_p8_xts_decrypt #endif /* OPENSSL_SYS_MACOSX */ #if !defined(OPENSSL_SYS_AIX) && !defined(OPENSSL_SYS_MACOSX) +#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define PPC_AES_GCM_CAPABLE (OPENSSL_ppccap_P & PPC_MADD300) +#endif #define AES_GCM_ENC_BYTES 128 #define AES_GCM_DEC_BYTES 128 size_t ppc_aes_gcm_encrypt(const unsigned char *in, unsigned char *out, diff --git a/deps/openssl/openssl/include/crypto/evp.h b/deps/openssl/openssl/include/crypto/evp.h index 456a64c943b1f6..443bfe8141a3d6 100644 --- a/deps/openssl/openssl/include/crypto/evp.h +++ b/deps/openssl/openssl/include/crypto/evp.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -488,17 +488,17 @@ struct evp_cipher_st { BLOCK_CIPHER_def1(cname, ecb, ecb, ECB, kstruct, nid, block_size, key_len, \ 0, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) -#define BLOCK_CIPHER_defs(cname, kstruct, \ - nid, block_size, key_len, iv_len, cbits, flags, \ - init_key, cleanup, set_asn1, get_asn1, ctrl) \ - BLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, iv_len, flags, \ - init_key, cleanup, set_asn1, get_asn1, ctrl) \ - BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, iv_len, cbits, \ - flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ - BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \ - flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ - BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, flags, \ - init_key, cleanup, set_asn1, get_asn1, ctrl) +#define BLOCK_CIPHER_defs(cname, kstruct, \ + nid, block_size, key_len, iv_len, cbits, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) \ + BLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, iv_len, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) \ + BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, iv_len, cbits, \ + flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ + BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \ + flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ + BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) /*- #define BLOCK_CIPHER_defs(cname, kstruct, \ diff --git a/deps/openssl/openssl/include/crypto/httperr.h b/deps/openssl/openssl/include/crypto/httperr.h index f5550aa167fa6a..94d812295cd923 100644 --- a/deps/openssl/openssl/include/crypto/httperr.h +++ b/deps/openssl/openssl/include/crypto/httperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/include/crypto/sparc_arch.h b/deps/openssl/openssl/include/crypto/sparc_arch.h index 8e72c3504f7a76..6d47505ae96f75 100644 --- a/deps/openssl/openssl/include/crypto/sparc_arch.h +++ b/deps/openssl/openssl/include/crypto/sparc_arch.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2012-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -79,10 +79,14 @@ #if defined(__arch64__) +/* clang-format off */ #define SPARC_LOAD_ADDRESS(SYM, reg) \ - setx SYM, % o7, reg; + setx SYM, %o7, reg; +/* clang-format on */ #define LDPTR ldx -#define SIZE_T_CC % xcc +/* clang-format off */ +#define SIZE_T_CC %xcc +/* clang-format on */ #define STACK_FRAME 192 #define STACK_BIAS 2047 #define STACK_7thARG (STACK_BIAS + 176) @@ -92,7 +96,9 @@ #define SPARC_LOAD_ADDRESS(SYM, reg) \ set SYM, reg; #define LDPTR ld -#define SIZE_T_CC % icc +/* clang-format off */ +#define SIZE_T_CC %icc +/* clang-format on */ #define STACK_FRAME 112 #define STACK_BIAS 0 #define STACK_7thARG 92 diff --git a/deps/openssl/openssl/include/crypto/sparse_array.h b/deps/openssl/openssl/include/crypto/sparse_array.h index d2629000eeafcd..6529b4615132b4 100644 --- a/deps/openssl/openssl/include/crypto/sparse_array.h +++ b/deps/openssl/openssl/include/crypto/sparse_array.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -62,7 +62,7 @@ extern "C" { } \ static ossl_unused ossl_inline int \ ossl_sa_##type##_set(SPARSE_ARRAY_OF(type) * sa, \ - ossl_uintmax_t n, ctype * val) \ + ossl_uintmax_t n, ctype *val) \ { \ return ossl_sa_set((OPENSSL_SA *)sa, n, (void *)val); \ } \ diff --git a/deps/openssl/openssl/include/internal/time.h b/deps/openssl/openssl/include/internal/time.h index 2a54c491f16ff1..db182484277267 100644 --- a/deps/openssl/openssl/include/internal/time.h +++ b/deps/openssl/openssl/include/internal/time.h @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -54,9 +54,8 @@ typedef struct { OSSL_SAFE_MATH_UNSIGNED(time, uint64_t) /* Convert a tick count into a time */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_ticks2time(uint64_t ticks) +static ossl_unused ossl_inline OSSL_TIME +ossl_ticks2time(uint64_t ticks) { OSSL_TIME r; @@ -65,9 +64,8 @@ static ossl_unused ossl_inline } /* Convert a time to a tick count */ -static ossl_unused ossl_inline - uint64_t - ossl_time2ticks(OSSL_TIME t) +static ossl_unused ossl_inline uint64_t +ossl_time2ticks(OSSL_TIME t) { return t.t; } @@ -76,16 +74,14 @@ static ossl_unused ossl_inline OSSL_TIME ossl_time_now(void); /* The beginning and end of the time range */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_zero(void) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_zero(void) { return ossl_ticks2time(0); } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_infinite(void) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_infinite(void) { return ossl_ticks2time(~(uint64_t)0); } @@ -114,9 +110,8 @@ static ossl_unused ossl_inline struct timeval ossl_time_to_timeval(OSSL_TIME t) } /* Convert timeval to time */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_from_timeval(struct timeval tv) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_from_timeval(struct timeval tv) { OSSL_TIME t; @@ -137,9 +132,8 @@ static ossl_unused ossl_inline } /* Convert time_t to OSSL_TIME */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_from_time_t(time_t t) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_from_time_t(time_t t) { OSSL_TIME ot; @@ -170,9 +164,8 @@ static ossl_unused ossl_inline int ossl_time_is_infinite(OSSL_TIME t) return ossl_time_compare(t, ossl_time_infinite()) == 0; } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_add(OSSL_TIME a, OSSL_TIME b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_add(OSSL_TIME a, OSSL_TIME b) { OSSL_TIME r; int err = 0; @@ -181,9 +174,8 @@ static ossl_unused ossl_inline return err ? ossl_time_infinite() : r; } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_subtract(OSSL_TIME a, OSSL_TIME b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_subtract(OSSL_TIME a, OSSL_TIME b) { OSSL_TIME r; int err = 0; @@ -193,17 +185,15 @@ static ossl_unused ossl_inline } /* Returns |a - b|. */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_abs_difference(OSSL_TIME a, OSSL_TIME b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_abs_difference(OSSL_TIME a, OSSL_TIME b) { return a.t > b.t ? ossl_time_subtract(a, b) : ossl_time_subtract(b, a); } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_multiply(OSSL_TIME a, uint64_t b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_multiply(OSSL_TIME a, uint64_t b) { OSSL_TIME r; int err = 0; @@ -212,9 +202,8 @@ static ossl_unused ossl_inline return err ? ossl_time_infinite() : r; } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_divide(OSSL_TIME a, uint64_t b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_divide(OSSL_TIME a, uint64_t b) { OSSL_TIME r; int err = 0; @@ -223,9 +212,8 @@ static ossl_unused ossl_inline return err ? ossl_time_zero() : r; } -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_muldiv(OSSL_TIME a, uint64_t b, uint64_t c) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_muldiv(OSSL_TIME a, uint64_t b, uint64_t c) { OSSL_TIME r; int err = 0; @@ -235,17 +223,15 @@ static ossl_unused ossl_inline } /* Return higher of the two given time values. */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_max(OSSL_TIME a, OSSL_TIME b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_max(OSSL_TIME a, OSSL_TIME b) { return a.t > b.t ? a : b; } /* Return the lower of the two given time values. */ -static ossl_unused ossl_inline - OSSL_TIME - ossl_time_min(OSSL_TIME a, OSSL_TIME b) +static ossl_unused ossl_inline OSSL_TIME +ossl_time_min(OSSL_TIME a, OSSL_TIME b) { return a.t < b.t ? a : b; } diff --git a/deps/openssl/openssl/include/openssl/cmp.h.in b/deps/openssl/openssl/include/openssl/cmp.h.in index b600aa6bbdd38b..8f3a835462bed1 100644 --- a/deps/openssl/openssl/include/openssl/cmp.h.in +++ b/deps/openssl/openssl/include/openssl/cmp.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -197,6 +197,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; * -- CertReqMsg * } */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 #define OSSL_CMP_PKISTATUS_request -3 #define OSSL_CMP_PKISTATUS_trans -2 #define OSSL_CMP_PKISTATUS_unspecified -1 diff --git a/deps/openssl/openssl/include/openssl/core_dispatch.h b/deps/openssl/openssl/include/openssl/core_dispatch.h index 65faa5f2cf1282..2e87cd638b3ba0 100644 --- a/deps/openssl/openssl/include/openssl/core_dispatch.h +++ b/deps/openssl/openssl/include/openssl/core_dispatch.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -162,16 +162,16 @@ OSSL_CORE_MAKE_FUNC(void, OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_file, (const char *filename, const char *mode)) OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_membuf, (const void *buf, int len)) -OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO * bio, void *data, size_t data_len, size_t *bytes_read)) -OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO * bio, const void *data, size_t data_len, size_t *written)) -OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO * bio, char *buf, int size)) -OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO * bio, const char *str)) -OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO * bio)) -OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO * bio)) -OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO * bio, const char *format, va_list args)) +OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO *bio, void *data, size_t data_len, size_t *bytes_read)) +OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO *bio, const void *data, size_t data_len, size_t *written)) +OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO *bio, char *buf, int size)) +OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO *bio, const char *str)) +OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO *bio)) +OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO *bio)) +OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO *bio, const char *format, va_list args)) OSSL_CORE_MAKE_FUNC(int, BIO_vsnprintf, (char *buf, size_t n, const char *fmt, va_list args)) -OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO * bio, int cmd, long num, void *ptr)) +OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO *bio, int cmd, long num, void *ptr)) /* New seeding functions prototypes with the 101-104 series */ #define OSSL_FUNC_CLEANUP_USER_ENTROPY 96 @@ -180,9 +180,9 @@ OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO * bio, int cmd, long num, void #define OSSL_FUNC_GET_USER_NONCE 99 #define OSSL_FUNC_INDICATOR_CB 95 -OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX * ctx, OSSL_INDICATOR_CALLBACK **cb)) +OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb)) #define OSSL_FUNC_SELF_TEST_CB 100 -OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX * ctx, OSSL_CALLBACK **cb, void **cbarg)) +OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb, void **cbarg)) /* Functions to get seed material from the operating system */ #define OSSL_FUNC_GET_ENTROPY 101 @@ -257,26 +257,26 @@ OSSL_CORE_MAKE_FUNC(int, provider_random_bytes, (void *provctx, int which, void /* Libssl related functions */ #define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_SEND 2001 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_send, - (SSL * s, const unsigned char *buf, size_t buf_len, + (SSL *s, const unsigned char *buf, size_t buf_len, size_t *consumed, void *arg)) #define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RECV_RCD 2002 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_recv_rcd, - (SSL * s, const unsigned char **buf, size_t *bytes_read, + (SSL *s, const unsigned char **buf, size_t *bytes_read, void *arg)) #define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RELEASE_RCD 2003 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_release_rcd, - (SSL * s, size_t bytes_read, void *arg)) + (SSL *s, size_t bytes_read, void *arg)) #define OSSL_FUNC_SSL_QUIC_TLS_YIELD_SECRET 2004 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_yield_secret, - (SSL * s, uint32_t prot_level, int direction, + (SSL *s, uint32_t prot_level, int direction, const unsigned char *secret, size_t secret_len, void *arg)) #define OSSL_FUNC_SSL_QUIC_TLS_GOT_TRANSPORT_PARAMS 2005 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_got_transport_params, - (SSL * s, const unsigned char *params, size_t params_len, + (SSL *s, const unsigned char *params, size_t params_len, void *arg)) #define OSSL_FUNC_SSL_QUIC_TLS_ALERT 2006 OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_alert, - (SSL * s, unsigned char alert_code, void *arg)) + (SSL *s, unsigned char alert_code, void *arg)) /* Operations */ diff --git a/deps/openssl/openssl/include/openssl/httperr.h b/deps/openssl/openssl/include/openssl/httperr.h index adac95018691d7..4c1cc6ad6bf770 100644 --- a/deps/openssl/openssl/include/openssl/httperr.h +++ b/deps/openssl/openssl/include/openssl/httperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,7 @@ */ #define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 #define HTTP_R_CONNECT_FAILURE 100 +#define HTTP_R_CONTENT_TYPE_MISMATCH 131 #define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 #define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 #define HTTP_R_ERROR_PARSING_URL 101 diff --git a/deps/openssl/openssl/include/openssl/macros.h b/deps/openssl/openssl/include/openssl/macros.h index de34b4640d490d..315c1389c6ddba 100644 --- a/deps/openssl/openssl/include/openssl/macros.h +++ b/deps/openssl/openssl/include/openssl/macros.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -168,6 +168,7 @@ * 'no-deprecated'. */ +#undef OPENSSL_NO_DEPRECATED_3_5 #undef OPENSSL_NO_DEPRECATED_3_4 #undef OPENSSL_NO_DEPRECATED_3_1 #undef OPENSSL_NO_DEPRECATED_3_0 diff --git a/deps/openssl/openssl/include/openssl/rsa.h b/deps/openssl/openssl/include/openssl/rsa.h index a06d4f0a027287..08335e0750b62e 100644 --- a/deps/openssl/openssl/include/openssl/rsa.h +++ b/deps/openssl/openssl/include/openssl/rsa.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -334,13 +334,13 @@ struct rsa_pss_params_st { DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) -typedef struct rsa_oaep_params_st { +struct rsa_oaep_params_st { X509_ALGOR *hashFunc; X509_ALGOR *maskGenFunc; X509_ALGOR *pSourceFunc; /* Decoded hash algorithm from maskGenFunc */ X509_ALGOR *maskHash; -} RSA_OAEP_PARAMS; +}; DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) diff --git a/deps/openssl/openssl/include/openssl/types.h b/deps/openssl/openssl/include/openssl/types.h index e4d105c991977f..f9c43735676958 100644 --- a/deps/openssl/openssl/include/openssl/types.h +++ b/deps/openssl/openssl/include/openssl/types.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -155,7 +155,9 @@ typedef struct dsa_method DSA_METHOD; typedef struct rsa_st RSA; typedef struct rsa_meth_st RSA_METHOD; #endif + typedef struct rsa_pss_params_st RSA_PSS_PARAMS; +typedef struct rsa_oaep_params_st RSA_OAEP_PARAMS; #ifndef OPENSSL_NO_DEPRECATED_3_0 typedef struct ec_key_st EC_KEY; diff --git a/deps/openssl/openssl/providers/fips-sources.checksums b/deps/openssl/openssl/providers/fips-sources.checksums index 7ce2f739bf5f3e..c0ee1bffe43ed3 100644 --- a/deps/openssl/openssl/providers/fips-sources.checksums +++ b/deps/openssl/openssl/providers/fips-sources.checksums @@ -10,12 +10,12 @@ da4942231014063d9e4fe1db91b6eb1b8f233904d169f3f1b8be7c6a59728d2e crypto/aes/aes 88b6f8396cd9d86004743d5c3b0f72b7b8c3d5a2b00b0bbb761ba91ae5a7cdc8 crypto/aes/asm/aes-mips.pl 7ff9c96ef3d591d45d776fa4b244601ea0d9328e289aeab1e1b92436ce7d02ad crypto/aes/asm/aes-parisc.pl f1244cdeadcb4e48f35bc5df19d4cfaf07e0086ad951b84f07ff6966501faa5b crypto/aes/asm/aes-ppc.pl -538ce0e80698d773c9419a9ca8892d61bc5b3cd1b071c5fc5f315d7f5573e96d crypto/aes/asm/aes-riscv32-zkn.pl -b5cdd6858b1eff7d17b29b78ac8c4a7642c0a74710f8b50821a6265328845aaf crypto/aes/asm/aes-riscv64-zkn.pl +f8cc2144b6cc9998d2c55ef446e451a31edde01eae624cb23de02b6b25b82420 crypto/aes/asm/aes-riscv32-zkn.pl +fe42d33e668beeadd43aa7e67cbe82d3ce3b92c3223c1cc0a34d5cac5b5d501d crypto/aes/asm/aes-riscv64-zkn.pl e1f3805332eb811d9d0c9377b67fe0681063364f1af84d8598f7daa30da65b4d crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl ecd9bdfaf25cdd3d8ec0c50cb4306d98374da1c6056e27e0cf31a057dc5ee150 crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl -d372152dac004b96a89f8531256bd05597ca0b614b444bb02aee93238dcf83ab crypto/aes/asm/aes-riscv64-zvkned.pl -f0388e17ba4268ed0b562da60e0780072180a824a379b79fafb60e25b8da3b52 crypto/aes/asm/aes-riscv64.pl +972e037dc955511eff7a371462af483e23dba86afeef25031abe1005eee635f3 crypto/aes/asm/aes-riscv64-zvkned.pl +f1d8b7a3da1ec053d38be4fc776fef1e4fba328bfa2bfd928c2a2cd3b14f08ff crypto/aes/asm/aes-riscv64.pl 290ae2a09826d24e83763415a021e328d41a163f41cff8c9e3b882e973677f33 crypto/aes/asm/aes-s390x.pl ee4e8cacef972942d2a89c1a83c984df9cad87c61a54383403c5c4864c403ba1 crypto/aes/asm/aes-sparcv9.pl 391497550eaca253f64b2aba7ba2e53c6bae7dff01583bc6bfc12e930bb7e217 crypto/aes/asm/aes-x86_64.pl @@ -59,11 +59,11 @@ b27ec5181e387e812925bb26823b830f49d7a6e4971b6d11ea583f5632a1504b crypto/bn/asm/ 0b3350f56d423a4df918a08e90c7c66227c4449a9f9c44096eacc254ebc65f9f crypto/bn/asm/ppc64-mont-fixed.pl a25be64867ab837d93855af232e2bfa71b85b2c6f00e35e620fdc5618187fb6f crypto/bn/asm/ppc64-mont.pl b3aad31ab658eceaa9c5e734e19f39c33991f4839ab55b0cec8018020b1a305e crypto/bn/asm/rsaz-2k-avx512.pl -760cc579b8b464991177a337487bb32e22317cb47f69927232da76171c973954 crypto/bn/asm/rsaz-2k-avxifma.pl +03f6cc678f377c5cd953e8da135c5d76dc1cd011565118c99e25bff91e7271df crypto/bn/asm/rsaz-2k-avxifma.pl e914311420ae4486ab6000cc6ab424f04d8a042bda40ab8f288348dc9f0eb595 crypto/bn/asm/rsaz-3k-avx512.pl -b8424d830f41a038f3c98d8664c6cf7d2d3e1748cdce260db41fa3c74f1d88d9 crypto/bn/asm/rsaz-3k-avxifma.pl +95b11e0b04c38bde06d152dfde5ab970dab27cccdfeac998e1bc293e01520474 crypto/bn/asm/rsaz-3k-avxifma.pl e13bd2df8c591052ddf16a839072f43353841f9f35e0ac95f836511838dbc771 crypto/bn/asm/rsaz-4k-avx512.pl -afcf51a732c80eadae1650e22e4af34904112a8b95467087a16d9d2394934730 crypto/bn/asm/rsaz-4k-avxifma.pl +cf92b66c4032703b7ce03ff6aa36887d14e31a8861e7aa21c46a466ea4802851 crypto/bn/asm/rsaz-4k-avxifma.pl 6e47bf041e51d8086c4933c2a5da3ce6d1b136592984754461d59aa81e4995a6 crypto/bn/asm/rsaz-avx2.pl b42f6cf0fbf9eae58343df9629e7a9e5b8814195ea0c9882d7b143a0841cc018 crypto/bn/asm/rsaz-x86_64.pl 30fedf48dfc5fec1c2044b6c226dd9fc42a92522cc589797a23a79d452bdd2cf crypto/bn/asm/s390x-gf2m.pl @@ -73,7 +73,7 @@ aa02597f3dc09cfbc190aedb75711859ba0f3efff87067ebfba1ec78ebee40d7 crypto/bn/asm/ ca21a9ccbc54e19fb7c2e6cdf286ce7cb08b0fba960c777c6edce5c57ccc2101 crypto/bn/asm/sparcv8.S fbc93c8dbbecefe66086f58fe9719ed87b13b2cdc61454a10e841228296fecef crypto/bn/asm/sparcv8plus.S 127832c1e3d298aad805236776488f5f8836b6a0fdbce3f6b42678163df3909f crypto/bn/asm/sparcv9-gf2m.pl -1622f04a8918724ac0e8804baf285fdafa0eeaaecc36c7facd459d0ff13a8cac crypto/bn/asm/sparcv9-mont.pl +0ad54f0cdf6a52ee0b0aab03800cb2b6beb39b138378b93e151cfd6b1aa2f2d6 crypto/bn/asm/sparcv9-mont.pl b69083f78b4b4f7097de4462d16649532fb82c453a82cdd9cc1393122661d6e2 crypto/bn/asm/sparcv9a-mont.pl d404375a21d33396824a3da212d6646d4f3150dd141ee4b4a250aefae3482efb crypto/bn/asm/via-mont.pl d24f3e97239c8eed5efc721521b025b7256c15e67a54ea6b5c4cf8f7cd0f89ea crypto/bn/asm/vis3-mont.pl @@ -89,26 +89,26 @@ feef3a84a40034291286882d483ac23ab55631c3c93f40ba0ea98944916ff3ec crypto/bn/bn_b d3b5f02a17ba1c71261f6dad0d4785846567c8a03368d41fc1a6ee7c45aaff78 crypto/bn/bn_const.c eee3d2710144b0e860c57e84f5adc6b2bf64fc27cbd202a8ca2630aefed3b84c crypto/bn/bn_conv.c 282f06fbdeb991d90337787c6407020e940b6d5e187a06866f1a7787c10a0c1b crypto/bn/bn_ctx.c -d84752b5835e9072cb93de0241f1f701933c61283a27679c1ba34e2bbd1bbf76 crypto/bn/bn_dh.c +b1b1c5fb8a45fde5755dfd5da62b68100b94f8c492c950719c108c384ea7f3c4 crypto/bn/bn_dh.c 4824f271f0ddc487b5991fbd92f7f7695aeeac234e076078f37da027999cdd88 crypto/bn/bn_div.c -306a4a4b671f299da0201719862a3ab4f76cd4a13d4d0baa214478603e5cf15d crypto/bn/bn_exp.c +d36b2be05469f144f52173616e413a7bdd836607fccf94cf543cc7f5a343b962 crypto/bn/bn_exp.c ce5219203bf869561297978d6d416357a441864cd801865503dfd455c481960c crypto/bn/bn_exp2.c 18ac3f6fe64225f72243689199839ea2ce2aa61d80b084bc4cd9efe1c7cc9d89 crypto/bn/bn_gcd.c b643fdcd91ad7dfcfa97a0bb235221b024b8a77faa7890f0bcb9681ea2c64c49 crypto/bn/bn_gf2m.c 73ee247467879d4ec984c9900dfe7761233c5b889b8762be37c7e8fdd6d1d210 crypto/bn/bn_intern.c ff147e5e032cc7c772b73a91fc6e24d8d9516e642d29354445d1f82d64b1d924 crypto/bn/bn_kron.c df9aebbdcca87fc5715dde430687fb516d8de0dac70c8910409fb73d6dd2305b crypto/bn/bn_lib.c -830e1932da4e8b409250a9dca0275b853a8d12bd6575649148aee5331180bbcd crypto/bn/bn_local.h +cd7bade0f2e223fe34f6e2f8cc87098ac8f0af96ec62ada5e67f6a2344d48ef0 crypto/bn/bn_local.h 364600145964d5154224fdda2c94ca6fdab2907837a385550b242350be7a1197 crypto/bn/bn_mod.c 39a8fe0bb625b4c11b74998ce6fd99b7655228aaa7d7ad3076f61741937ae14d crypto/bn/bn_mont.c c2a5230efbda6844b7b2eb10447b054496ae5029130d332536de6c3b12dc58a3 crypto/bn/bn_mpi.c 488dde761d25fb2eabd8acbea5b3b83520db7733480fab6499f60b8bf680b1ed crypto/bn/bn_mul.c e80177361897632ac9f013415dee8f6d2d942a8b51a4daf84fc7ba51d9d75270 crypto/bn/bn_nist.c -c7e1d12f14b20e0e34870060459581afcdd58d80097248de5187b9e72bbd7cf0 crypto/bn/bn_prime.c +0aa8a381dc6ed47746ec90aa739aff1eece4474d92abdd3f9036e7dcb72ee891 crypto/bn/bn_prime.c c56ad3073108a0de21c5820a48beae2bccdbf5aa8075ec21738878222eb9adc3 crypto/bn/bn_prime.h af5af7057643ee8d35e3a2d5f7b55e37647db46700f2818edc295d727450d521 crypto/bn/bn_rand.c b5cc902624b3af2149c9ea91f9d18bea56302144e87dfe49105ec6789b73764b crypto/bn/bn_recp.c -4ff6338c3d30ed029b3e4fe509e08d9abf2e84b61c14bf466f642f097a8b7036 crypto/bn/bn_rsa_fips186_4.c +c4ef2dd742bcd76c40df08a3108a3cf2854d53e93ebf59bf549c3ebc3b0e47cc crypto/bn/bn_rsa_fips186_4.c 6889866bca4673bccb8adf870859a867757ccd3c8ad4652675615afff710add3 crypto/bn/bn_shift.c 97559e9e071a06b8cffa37b7df27af638de84c51d5da190a879752f39e2b6368 crypto/bn/bn_sqr.c c748baddfec6734bb50facbadf151a1f22f8a885c677acfb08b4f814e96f0d52 crypto/bn/bn_sqrt.c @@ -116,7 +116,7 @@ f42996cdd94f18fe0858552be7123e75cb3ced0ebd7dcb90a0c73740090dcac9 crypto/bn/bn_w 2f048ca8e8ddc5e2b8b82775197f79334381dd90bab417b2855bfeee07b99db8 crypto/bn/rsaz_exp.c b89075a1c43de2e27a29db217c11c1fb4ec04f4270d0106c0679dd44f98eee58 crypto/bn/rsaz_exp.h 3c934b8abf163b95caf236647153d42d8d48f10f2f5f8b21c013362b1cb8aa8b crypto/bn/rsaz_exp_x2.c -21ddcc6948e81597c9b9e9823311cd1c315708819e85f29d5ff80dc72e14e562 crypto/bsearch.c +f6c72754667c90e3466243f9d21ce6a799db8e58c8b78b2707129dcc540adc3c crypto/bsearch.c 82117f6a7cfc31fc86ecd9629bd3bf614126b8e8b2c23717a03ff5c1db7c3c5c crypto/buffer/buffer.c 5f43844b5d8665de9ab895f93599150a327d73ec2674bbf7d7c512d30163022d crypto/c64xpluscpuid.pl 205f0be0317343b17003f261b427008aad1b31aacc6979c4557fc837e9548b92 crypto/cmac/cmac.c @@ -182,12 +182,12 @@ f4490c0b575b79e63a897b1e85a87ede2645a2c521e67db461b3192884450d9d crypto/ec/ec2_ 5d3567b3b6d3922fd82641acff29ed12b1028e83eb0c175132ce7f3470b9db6c crypto/ec/ec2_smpl.c a1f22814f501780591da20de5e724895438094824fce440fd026850c46ad8149 crypto/ec/ec_asn1.c dfbccf591879eecbd9ed75da1fbe6c7b1672d07648fd43b37755dfe248253bb2 crypto/ec/ec_backend.c -7f19cebad4a94db291464b0d93006a87d15ccec93b94f725052a1037107a96be crypto/ec/ec_check.c +3a3c4f4767513b4fbbabdea2918d7c7d105eb573334a7fd893b866989463c4d2 crypto/ec/ec_check.c f3991bfc65a7371b84afd0cc328e3cbd4736edf7267e4b731dd82677bfab047a crypto/ec/ec_curve.c 8cfd0dcfb5acbf6105691a2d5e2826dba1ff3906707bc9dd6ff9bffcc306468f crypto/ec/ec_cvt.c add58bcaf43a28e66b3a6ec1f70ed9b0b4a4a0d40230e903a26a1ff1129649e0 crypto/ec/ec_key.c 35515133fb3c33c5736a9f744e835b9fc0775193357ab2492f11d0f63503c65e crypto/ec/ec_kmeth.c -ad6f566595be1d72ef97be7322949092c4530da57793ef5b722025738882410d crypto/ec/ec_lib.c +652a1544120bf0fecde46a8e18cc28fffcb7cd864be2e2b84c99d571ba320e64 crypto/ec/ec_lib.c 0d113ac5dbdb420ba3d1c060f4fa3300fc0a81b571a919c2b176022fdca89878 crypto/ec/ec_local.h b545e4539ef2483982f35ee05866060478722e329cfbc4990293b46ccfe5c93c crypto/ec/ec_mult.c c2a81f5f56d304038183ba6b02fdcba8767833f61773ec483e73b330b67ae59b crypto/ec/ec_oct.c @@ -206,9 +206,9 @@ f38971ee893608f00d1ddd77d889aac9558509bda62d2e1b3eecd9bfa0c29095 crypto/ec/ecp_ 8e50fd1e60ad1ac824e704375096e41f4ae535e533a3334d78c481e34d9d0fb8 crypto/ec/ecx_key.c 3ba8412897cbf17881fbf23cec27a487b2c587348e1f859ec44e47f366877249 crypto/evp/asymcipher.c 1f64d4752074f954af4f290788e4332e3874ba3282bd03d3e1d1f5ce4b0888bc crypto/evp/dh_support.c -da3140dbda8a35cfe4a0748892a3e381e3988a94ddb945c2371922bb3010d96d crypto/evp/digest.c +0e9e206dd4b179ad09e1475949ce9ddb5bce0e0d66072477d94b7788c57e70d9 crypto/evp/digest.c 4ffc3fc5ee5f0dcadf1516f1cc29338f0f4d85c59881c06d5a777cf4e47a6d5f crypto/evp/ec_support.c -6f8a9bb4d8da878aab6bf5f4bef286a0045fee1b140a1f9151c830d03778f879 crypto/evp/evp_enc.c +8bf5ddf1c8e352a9f9241c7275d3a8cbbd633fc0f93f609158d15aee7af5a9d0 crypto/evp/evp_enc.c 8683c25d4bcb598375a04d4682399c9eef095225b49498afe819e5193e9cc117 crypto/evp/evp_fetch.c 75855fc64e44e5bbfb728d85014c65e8b0668faee26f0901aaa729c16679dee8 crypto/evp/evp_lib.c e997e921669076c51e230ccb2e36b1c6755fe408c61b1177d2aa67529cab15f3 crypto/evp/evp_local.h @@ -217,7 +217,7 @@ e997e921669076c51e230ccb2e36b1c6755fe408c61b1177d2aa67529cab15f3 crypto/evp/evp 8f4194bcc2e0de69236925aa7515bc31f36ed113dcd3cee5d71167ac770cdfdd crypto/evp/exchange.c 294284ad040fe4b74845f91b1903c961c757e1ef3fcc2ffa35f43f37f1655e64 crypto/evp/kdf_lib.c 532f0ff4ab32068f160016f39cd520fadfbd09b81b3b3b562bf543acafb38889 crypto/evp/kdf_meth.c -6669cf0969c6fcd4e3b240aad6335d159a8169aab891f1388822fe96c6ce0629 crypto/evp/kem.c +4e60c9e37106b9c28d646f7234d857e8520da953ed7d319531467d334b77a72e crypto/evp/kem.c 84cebe10a50c88d0db12a90ad751eae43c7ba2954bc9f42f0c1490d66eac5bb8 crypto/evp/keymgmt_lib.c 80a5e310a3c3f551ca8e1992793ffbddc525274f90dbf4f36217b57acbc8bd94 crypto/evp/keymgmt_meth.c 15654f58c113d6eb7100caacd00ceae68113edfd6a921f6af1bea4040fa58f5d crypto/evp/mac_lib.c @@ -238,7 +238,7 @@ e032f3d46830d31cd957e1f3917a6a663c5ad3b9d79fc3d661f025822318d0de crypto/ffc/ffc bb208ef3a2c7ebdc518bd38f2f07a17cff356040f1c5d68eea13bd9275897a52 crypto/ffc/ffc_params_generate.c e9a500ddbe96cb5b302fd2db74fac0924a6ac45732df5ee1c09e82b19d06ccfd crypto/ffc/ffc_params_validate.c f172c8c2112ee82716a7bc3a3e05d5cc26188c66b9d768ac1ff906845063d2cc crypto/hashtable/hashfunc.c -16090065da6b94199e997c930d465c613633bf322e89e3e674993ec5a785580e crypto/hashtable/hashtable.c +653d1f67e01ce0e9dca48cf513df9e8864a0985ce9bfb094fc3f09d591e6f062 crypto/hashtable/hashtable.c 7a9af0b14f1463b36de0689bc434a318adcb7990bb23862bf1d2a0adf510583a crypto/hmac/hmac.c 907dd44e0bf873eebefcb4d82975b72ecec9e0f3c348c79314450fdaa78d4073 crypto/hmac/hmac_local.h 0e2d6129504d15ffaf5baa63158ccec0e4b6193a8275333956d8f868ef35127e crypto/ia64cpuid.S @@ -267,7 +267,7 @@ c2652262227348b8bb053a239e8491b26f08d6fadc47ba3471302f5797ae1c62 crypto/ml_dsa/ 36e24eae5d38cc9666ae40e4e8a2dc12328e1159fea68447cb19dab174d25adf crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl 33357356cd739d4ae89d52f0804b6900e4b94d8829323819c6f64c8908e978df crypto/modes/asm/aes-gcm-armv8_64.pl a91995f81b384b175ecf252690030bb068d6af64bfcdab2fe753484b2d07a184 crypto/modes/asm/aes-gcm-avx512.pl -038e4ac89aa7d1962058f2170efce9024804473a62ae90102c3989555a7858cc crypto/modes/asm/aes-gcm-ppc.pl +8fab6574aa99ee635d564dbe68b014562b61af37fa4f151210690837cdae6707 crypto/modes/asm/aes-gcm-ppc.pl dd0de5ca8913a941cfff781a42fba43227e133976a24d0fddebf63909f7e010a crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl 9dcd3be86cda832ebe0394f5a859a761f4b711f2010fb606457f754722c5fb84 crypto/modes/asm/aesni-gcm-x86_64.pl c2e874a8deb418b5d8c935b2e256370566a5150e040c9fa008cdb5b463c26904 crypto/modes/asm/ghash-alpha.pl @@ -293,9 +293,9 @@ b431ff38c3a85943f71be0d76b063dbe2930967629b8721465b8152ab7867296 crypto/modes/o 02e7659d8776f5885ebbc25b930ddec046262f92c9e8fa7e093f2a6a8d973a3b crypto/modes/wrap128.c 0a10e0cae6f4ac164afe97a64df09c8412145c8a25f387ff3a53ff7495572cbc crypto/modes/xts128.c 9a34ad9ae361f689b0b98c454092e89567d0bfc969c08a14c8001e60976920b2 crypto/modes/xts128gb.c -3f2c172dccf93227fc4b24f9960e1c0b01e987e1335dd9ab0e3c2d577195fed4 crypto/o_str.c +515e110e01867d6527bec758a264473b62cb7edff213816e2197faf6e96ec048 crypto/o_str.c 44594139dab6ada1f34f9c6887c97e258c1204b833a6c20f58097f17d0f1645e crypto/packet.c -05563d44cb345e7859093296f95a3ea5139fcc316e98fcb86c6748ee49363a84 crypto/param_build.c +a108cacd961b0e5a95d279c737926afa4636d8b89a2a912593b01916ea3ce43d crypto/param_build.c cae7bd4973d36edbdc3bdd8d2c8d157f2c4fcfae00fdf821b67aebb789bc8aa6 crypto/param_build_set.c d362864eab6707ba2f4efd65c91dd90d669721f2d8fdebc875fd1d2957154396 crypto/params.c c0e0ba07ca5d4acfe450e4ae53a10ed254097ed2f537f01a4a43a9f5b5cab501 crypto/params_dup.c @@ -317,9 +317,9 @@ aa58d7800d3ccf2989b0de3c2e2710dfac36c88dc51659129897b0dfd2162527 crypto/provide dce7413b4c4e588c9a099c6fd7c6c9a397e034f259a2027d4ea8bdfe149164fa crypto/rcu_internal.h 0c1d3e0e857e9e4f84752a8ef0b619d8af0d81427b52facbd0174e685dac9a47 crypto/riscv32cpuid.pl 231263dffc16987f5288592ebf4c0738902d5146bfc16bcd8a157e044cb697da crypto/riscv64cpuid.pl -fff6a76f42f3caeff8244fffb379240e43570bc6caf25e4721471bc208b2be81 crypto/riscvcap.c +32e427d3d75f7b2d37e2765e2d2c111d45ca5871200be98e8943219dc475e458 crypto/riscvcap.c f0c8792a99132e0b9c027cfa7370f45594a115934cdc9e8f23bdd64abecaf7fd crypto/rsa/rsa_acvp_test_params.c -aadf059519d33f41b859216246d215330a0c73d18153df580927fdfa6ef51b8f crypto/rsa/rsa_backend.c +b1584c4a1a5f83a1fd43d854ce72bb11735aa34945f2b2f983228f36f27fdad2 crypto/rsa/rsa_backend.c 38a102cd1da1f6ca5a46e6a22f018237964336274385f5c70cbedcaa6997647e crypto/rsa/rsa_chk.c e762c599b17d5c89f4b1c9eb7d0ca1f04a95d815c86a3e72c30b231ce57fb199 crypto/rsa/rsa_crpt.c e666568eadfd01ff3e435364dee2575fca7ff3e6855b2c258fa1e4d04239d933 crypto/rsa/rsa_gen.c @@ -347,7 +347,7 @@ be1e7dd9998e3f31cfa6e1b17bc198aeec584a8b76820e38f71d51b05f8a9f2a crypto/sha/asm 33bdcc6f7668460c3bdf779633e43bfad62b937042a73acb007b462fc5b0a034 crypto/sha/asm/keccak1600-c64x.pl 09fc831dd39bd90a701e9b16d9e9987cc215252a22e1e0355f5da6c495fca35a crypto/sha/asm/keccak1600-mmx.pl 6689c3adaa270bd88026ca686ce76b8aaa83a7cadf3954d84d3cf89c044cc958 crypto/sha/asm/keccak1600-ppc64.pl -fea3ce181c7a33bc673e3a4607e0f737a3a3e5958a3826596fb911b1297e2ca4 crypto/sha/asm/keccak1600-s390x.pl +79dec13ccbee4a6758a22d92bfd5694565416219e48b6894dfb63c6b0029ae28 crypto/sha/asm/keccak1600-s390x.pl 3fb93b9440f5c3008b5c876a8106acc5f8d38f1afedd79381f0befec7dd7d72b crypto/sha/asm/keccak1600-x86_64.pl 831b8b02ab25d78ba6300ce960d96c13439bfba5844e13061e19c4e25cbacc3d crypto/sha/asm/keccak1600p8-ppc.pl 75d832db9bf0e98e7a5c522169060a6dd276c5118cfb297fc3f1111f55cd4007 crypto/sha/asm/sha1-586.pl @@ -391,7 +391,7 @@ a7e074a2f2cea0c33e7875eacc8adb465b5802e4c1d100cda79ac3dd52cdb453 crypto/sha/sha 61ab6d7d7da9e65120ec59cfa9f5ede785502ae371696c3e4e04e039743ca111 crypto/sha/sha_local.h dfd99e02830973ab349409ac6ba0ee901ba7736216030965bd7e5a54356abd7c crypto/slh_dsa/slh_adrs.c c9b270de1259d9fa71a4d352786357bcf1dd3d22075edab84501e2f8e550b271 crypto/slh_dsa/slh_adrs.h -2aa41787214996542778a42eaf1bc754809f7d4d31185ac77424a3c686d6759c crypto/slh_dsa/slh_dsa.c +95d42ca839ff34a050a7006734a06c157ad259512c1a10b978e9f899efe69f12 crypto/slh_dsa/slh_dsa.c ab7b580b1cba302c5675918b457794a3b3d00aac42297312d9447bc6f6a40b09 crypto/slh_dsa/slh_dsa_hash_ctx.c 6a68c788eee184862cf90676324750fd4f17ca666b628ebc69b3b510d19ba819 crypto/slh_dsa/slh_dsa_key.c 4c7981f7db69025f52495c549fb3b3a76be62b9e13072c3f3b7f1dedeaf8cc91 crypto/slh_dsa/slh_dsa_key.h @@ -415,13 +415,13 @@ cb214ad206ea69ab98d24a727a47d3a4c614fce709e6b7fe6997dbaeed92f0fc crypto/thread/ f06b08138d73b834471abc4a3ba43b2be838f7196c937c3e933694d6cd69f74d crypto/thread/arch/thread_win.c 55953eb5a84d03e8d915ee867ddf8ec8be8c5eb444ea0b21b12a040a57e2c2c1 crypto/thread/internal.c 2e5955d706b96c487e4875ffbe208fac15bdca06b33cee916d5343978c14efa1 crypto/threads_lib.c -0585d64ace8f607cde3ae8aba27eb203e2fd648d3226c7b87fc49350b1f53d36 crypto/threads_none.c -a8815d82ccf819040446fccc42984ee515341d7df14c896bee48d61aea55d2f4 crypto/threads_pthread.c -794e50fd64df6c4da259bd951117291aebb0859c8a47d657a2524e67df3a850b crypto/threads_win.c +ca77056d184232d6fcfe39328ab0b887a4fc939913209717fca65898ebbd45c0 crypto/threads_none.c +021afe4321ff954f3f4dd1b1d07a5e3e7778f7bccfaede08fab193d5752d9740 crypto/threads_pthread.c +1915c5e3de649873745479df5cc365c38cf56ecb2fa21be6a053055f97013dce crypto/threads_win.c 93f8fe09f96492a6be6772ddbf0cc37912fc2a90acb7faea378da1735fe20f6f crypto/time.c 88c5f9f4d2611223d283ebd2ae10ae5ecbb9972d00f747d93fcb74b62641e3f9 crypto/x86_64cpuid.pl 085d9fe93adf232f1ff838be9235046c2c2abe2daeb0e6342921d8f2e955dc18 crypto/x86cpuid.pl -0f089e0c6ab4091eebc1d3d54dbd18603fa4f90238fc6512610c3ec3469536ba include/crypto/aes_platform.h +6486afb23846d3c11c3a655e7e6cae24f8cdaf5dd4d6a887b5a04c53f52895b0 include/crypto/aes_platform.h 8b68c7b69b8da6e729789dbd99d45c341458786e2bc0e2c6c6a341e6792d6b10 include/crypto/asn1.h 9acd69adc80fbf9fa88fed4bcc7b3c0ba87e2add98d7ba311d8b092a2d5a0d2c include/crypto/asn1_dsa.h 21084935a7f88a5926a087832afe8bc6705b1a7813fe226eb4c0df12c753d3a4 include/crypto/bn.h @@ -449,7 +449,7 @@ fd4a274688b694aaf010235e6ffd3fd1afd87bc5cee9cae1e4e8be69bf96a5cf include/crypto 3f28391ed526d791a578e76a40961592e15ae2bf62b81d5924525e1f21684659 include/crypto/security_bits.h 70b36014254ca6cbe4126573ea6a71069cc278a6ceaa36412343f19b204c4c13 include/crypto/sha.h 127ede705ecfa8ec504e57cdee1210c5d7a9044121ff05d1dcf72955958346ed include/crypto/slh_dsa.h -8d50d439dd064b66fe349787228435d7a5ba4bc46917a1287c8d876f7faf37db include/crypto/sparse_array.h +df915f569207111cdb011e85ee0f40bcd169ac0a413cc858ccee0b5001cefbb5 include/crypto/sparse_array.h eb1f4f50bafdd357aa15b54f60f5ecde10876253038f00bf518fbf60840addc1 include/crypto/types.h fd5e610fe38804f5de05931706b8efc717663a892f74aa6aee30301ff5e31a25 include/internal/bio.h d32565e2b426131dc2415e60a97c94570ca982d29ddd97d2e23d6b9f73b1d81c include/internal/common.h @@ -490,7 +490,7 @@ abf03dc8635f2925bdc2299feabe115f8d5d6eaa450b421172ded222872386ba include/intern fb5bdada32614d7214569dc111b8bbc43592886799f0536b844a64a2541727cb include/internal/thread.h a8fa7ddc1e54ca296bda9ee05a7a39bb7e803eb0567cc75a9b949b80cada7552 include/internal/thread_arch.h 1cc86957e734ce34acd949b9e9e9d588a6c82afb68a09c787fb69f5e4cb20b1a include/internal/thread_once.h -d9f5e7c10f41913a25f1ef89bedef6070ed3b8bb3c6ae2fe9f7d8993082d86f4 include/internal/time.h +07af0c702bf779720f6849dcc54b59235a5ac87513c77d6123aa334d71f5a7b3 include/internal/time.h 2a4f456b95ae6c60a1bd7be966400f7aa12f791ece6f2d31a22acae6fd77c623 include/internal/tlsgroups.h 79db205cd380711f09748b4ab020442050acaa0a8a940e2be38c4916e23dd1ff include/internal/to_hex.h 47c827eb0766d6aa82cec54648fc57b33a3dfec8539cab7bce161cf73455abaa include/internal/tsan_assist.h @@ -511,7 +511,7 @@ c70499c9109b083beb69d1b17807266b041d0ff28694d5bc1ab7cf2a59331c39 include/openss 4e195b6f7a734756e21c4269cc245b292e1a563aaec5644402929d0eac423c41 include/openssl/configuration.h.in f76830b31c947d86c2e6a302ab8df6b83076f8d29120bce9a58195551eb48e1a include/openssl/conftypes.h a013fca5cc6b5cc26eb1c76eaeba31e99408e88fe89c343a44cc0b22f8e63eab include/openssl/core.h -06eff5fb11c68f0fd4b70b0162517647afeefeff345e2541f7f2d820c97a8d95 include/openssl/core_dispatch.h +8486d6f6818911651b0f3ba02366a362b0d4d988f014089a4f3a3f6ecca7926c include/openssl/core_dispatch.h b47e5195bcf209e120858a2c671eaf0589fbd1baf1c5f69237ab94651772808a include/openssl/core_names.h.in e623d4e8d36d7e0f0825fe5cb48e1176be19c0bedc5053fce488aa48602f351c include/openssl/crypto.h.in 128ef415305b704d51461ab98c688c69fde868acb5f5f74c92b2d0517823e71a include/openssl/cryptoerr.h @@ -539,7 +539,7 @@ a7c65894dd0f3730769d56a46bc6e4777c9bd7c8826998373d2ccdd9a346f840 include/openss 1dc0dce58de44226fc0afb51073c39933fb65dfd3a0131c4eff17bcb93018665 include/openssl/indicator.h 36b0013002d44397aa41b021ec13433230221aa9722ce5fc31648f08d27ac448 include/openssl/kdf.h f4a6b9adcd0158222878f5c55e3b40c620361d328bc624ce22d4937c0c054fbf include/openssl/lhash.h.in -e7753bdc658187d6ac5fb51902c79bff929f3ad416fd907c02cd34568a30864c include/openssl/macros.h +3a6bbc7833212d862484513a0f1ec895450c8377290a644c17061051fecd162c include/openssl/macros.h 0da95b5743f5c12ba1a30c1ef84f9fe57ccd5816febb1b5fd3a4f573ec885cd8 include/openssl/ml_kem.h 06f0d4621c344401f280a4e69e48ba987a0600b7f52ee16b25c4620277b081f9 include/openssl/modes.h 6d40e3edc18bac56826b2beb9439e7e43a680867a0a9ae1d3f75e07dc72b024d include/openssl/obj_mac.h @@ -556,7 +556,7 @@ a15b0b69bc1e31d0091ad32f04021d4fba9750cf9e3c9c0d2509358543cac380 include/openss d0fffeeaf8a20f6c86e8a6bfaeb1eab7c00188b1844c109ead4232c8dfb3705b include/openssl/provider.h c467dcada2506c820e2dcb002dff9d797aaf9527c8778871d79d79a93bc673e7 include/openssl/rand.h 23d76dfea708747bdc2ffac41e25b156a22d2d0cb744323a3b9859c54bfbb98a include/openssl/randerr.h -c477f6a040cbd444318469a9f5899d368b4e42680ab7337f6859549bc55cf2af include/openssl/rsa.h +06dd86ec673693fc7c47a8b8489a72b648a56a667469064fbbfc91bcf20ad650 include/openssl/rsa.h 6f79765285a8244f6c1858b86db8e390e4bc6c7905a7e4576973316612f7b015 include/openssl/rsaerr.h 546e4277a9897ed5c01b9ab30168e82f4acf9a6a20da430ebf7dd698d5f888fc include/openssl/safestack.h.in 695683de2485c3b83d9116877f5d5ca3eb84a3bbb599f6bb02c9e595e7102b41 include/openssl/self_test.h @@ -565,7 +565,7 @@ c477f6a040cbd444318469a9f5899d368b4e42680ab7337f6859549bc55cf2af include/openss d381d0b4113f0fa18b3e421eae303fc84daf84eacb1236cb6e9976409a2d33a9 include/openssl/symhacks.h fc527427bafa6862d9e3847c961dd6cbbcccc39d25762c65ad3b99fae9599e2e include/openssl/thread.h a481e8762c694b3dac0e74aac8626fe60fa94962a14914f1f6969ea1214c40b1 include/openssl/trace.h -1e0253d1f5487b8e92c39f8c3a15ee3030625c4d9735f9cdbbcc9974c213e925 include/openssl/types.h +9e04a3e9ca5352adffbdd75a5ea5237e8ff96a8c0a842368cc3a29de006b2ee7 include/openssl/types.h 62e0cddeedfc217ac02bf37f3669ccea8d0822a88a74a8ec82b844a85b2700aa include/openssl/x509.h.in 869959c3d557d2ace84f38b7a8d0f23b3b0854de7f952f46310e828af04554dd include/openssl/x509_vfy.h.in 5dbee881fe4e1f08a773e8bd34eeda7639be7c474a3d4d6e7c8d779e19c7eb2a include/openssl/x509err.h @@ -616,10 +616,10 @@ d8cb05784ae8533a7d9569d4fbaaea4175b63a7c9f4fb0f254215224069dea6b providers/fips ef204adc49776214dbb299265bc4f2c40b48848cbea4c25b8029f2b46a5c9797 providers/fips/include/fips_indicator_params.inc f2581d7b4e105f2bb6d30908f3c2d9959313be08cec6dbeb49030c125a7676d3 providers/fips/include/fips_selftest_params.inc 7b80823bb5613e17e8576789ec77712d89c81e7beb6ce50b58037e925e465abd providers/fips/include/fipscommon.h -44a6e7b590de3d8a7711ac373348e4c9bc7a24dd57759897f2cb5db2cd8bba62 providers/fips/self_test.c +c00c429b0e022db3ef9b08b3400627a1f268fb071e84d0538fb68c060da6a3db providers/fips/self_test.c 5c2c6c2f69e2eb01b88fa35630f27948e00dd2c2fd351735c74f34ccb2005cbe providers/fips/self_test.h df83c901ad13675fbbb4708b6087feba6099870ad3dd0e8d09cfdb6798419770 providers/fips/self_test_data.inc -bc58582893d748a0a61662cf9363ad73c91f35f2956dbcafc8d1ed37039b15d3 providers/fips/self_test_kats.c +aab0bbdaa8e70f6cf9c3871d62b1efc6029cbe386c5d6318d7bc730da0fa8f19 providers/fips/self_test_kats.c d942921caa433ae9e62959b0ad1caad277b50d005ffc439c6d0e7b0886dba882 providers/implementations/asymciphers/rsa_enc.c c2f1b12c64fc369dfc3b9bc9e76a76de7280e6429adaee55d332eb1971ad1879 providers/implementations/ciphers/cipher_aes.c 6ba7d817081cf0d87ba7bfb38cd9d70e41505480bb8bc796ef896f68d4514ea6 providers/implementations/ciphers/cipher_aes.h @@ -639,7 +639,7 @@ be18c20e0197f25fe7b9e0268657a2271a69d216b89cb100f082fa5fcaad1e07 providers/impl 60c4f604cf9b5457be48f31cc24ca21729660381081b2dbf99f362a013a09684 providers/implementations/ciphers/cipher_aes_gcm_hw_vaes_avx512.inc e2886780637db72b12c9bc488d81647ed55a7f5c850efd4bdbf88ef7127e1913 providers/implementations/ciphers/cipher_aes_hw.c 89de794c090192459d99d95bc4a422e7782e62192cd0fdb3bdef4128cfedee68 providers/implementations/ciphers/cipher_aes_hw_aesni.inc -e691fd1ee71c40bc76b01bbe2a6f027496a210a2e49e20908b87033552fc8c52 providers/implementations/ciphers/cipher_aes_ocb.c +d95dde2258887edca985237a0623855b49dd9e93d21407e9fcfe33497513be4c providers/implementations/ciphers/cipher_aes_ocb.c 88138a1aff9705e608c0557653be92eb4de65b152555a2b79ec8b2a8fae73e8f providers/implementations/ciphers/cipher_aes_ocb.h 6c3a89771719b36d6917d23464be5441836378393731af96ba165fd788df1a41 providers/implementations/ciphers/cipher_aes_ocb_hw.c c7aac28a9dca1ad46e5bce4de93e07dffec1f89fab82394c3ff7cf1bda8b483f providers/implementations/ciphers/cipher_aes_wrp.c @@ -653,7 +653,7 @@ dc4626becaabc3990549483d9ef5f05c7dd9a9c2cf9be96ade3ba6a6e203f7f5 providers/impl 9cfdcc860a03b6e7ced8cc21bcbbc1c070c89aefab04b07f213c7a3db1895553 providers/implementations/ciphers/cipher_tdes.h 00b931090e26ce9a62ee4ea125586f439a9906db5d7b914ffc67d293a57c7c00 providers/implementations/ciphers/cipher_tdes_common.c cca34f1c7baf3a98964f7ce19a59e06d1eaf2ada121a0d4a438f4078a072b325 providers/implementations/ciphers/cipher_tdes_hw.c -5739bf4391b40a6715e25a03f42701e938b160e1189c33e72b21f57d4991586e providers/implementations/ciphers/ciphercommon.c +d2f418806c7ed45f118683bc13329573804592684e522efced0fd0921f4548fd providers/implementations/ciphers/ciphercommon.c ab9a2edb23aa61cf31da6addd8674a6028f93399eceeeee35a56ee770338fd6c providers/implementations/ciphers/ciphercommon_block.c 6b6090c233ddf29d819f2559361aeeae03505de7626a127628d5f0f6d3bce295 providers/implementations/ciphers/ciphercommon_ccm.c 6632a555d5bcd5af67d0355ce46c2906bb3a0dcdf1651595b29189c40a5ca675 providers/implementations/ciphers/ciphercommon_ccm_hw.c @@ -670,8 +670,8 @@ d44c5a6d3156392757415f34afc1ab164fb0e9cd1e97977386d7cd13f3555df5 providers/impl b1115636f53bf70f417b183cafeb6d38e230d11d8de731e6896ba60cc850d931 providers/implementations/exchange/kdf_exch.c 1644609260b996c1a46610d02474f991e1ee4bdff5d8175e759c49a92f2b5107 providers/implementations/include/prov/ciphercommon.h f1dd49b30604d9b8e948c135329a270a4d3e04857f7f9159a3e84f46a024d59d providers/implementations/include/prov/ciphercommon_aead.h -3226fc5162aff5b2e992b24944c49bc28855a47bbf69a789bc73ccabd886e9c0 providers/implementations/include/prov/ciphercommon_ccm.h -45885a39d0f9e30a8032c6020970389104c69b909d9699fd1c79335184fb17fa providers/implementations/include/prov/ciphercommon_gcm.h +af38be5b3d16c3ced0028bc9b3fbe957a6a817e23967bacc7df65566ba107edb providers/implementations/include/prov/ciphercommon_ccm.h +35d1c063e840c9cd5114c5e57b007a19868982a82d8e40a99b2935c9f1f5e05e providers/implementations/include/prov/ciphercommon_gcm.h 35596c97faf324823d19a01e1b5674c7a15f1a6e7ff1ef1c7d46400c2a68f63b providers/implementations/include/prov/digestcommon.h 1baf1c06b20a0eb8ec271452544922d67c1cc168dbe9853b259191de4bd99918 providers/implementations/include/prov/ecx.h b0d1f6fc3c9220fe6d4656e487bad8df16b6f840054018b95b2752ea9aef822d providers/implementations/include/prov/hmac_drbg.h @@ -694,7 +694,7 @@ f01cbd7c5351d4aa9ae667627503b2cfef6fc0695e7a42296b7bf015c9a418b3 providers/impl 39207243a84beb670cb0e64b6d0fe7bfc6a3dd84000617b647a3ecf52a1da3c2 providers/implementations/kdfs/x942kdf.c 748af266d06006da10524f3a621c65b8c3eeddf8b1ccd06ecdc6b689564d220c providers/implementations/kem/ml_kem_kem.c 35549cec7031452bb5b46aa8a86028abc7a3a2b39f9f6564fa4bd402451bc647 providers/implementations/kem/mlx_kem.c -c764555b9dc9b273c280514a5d2d44156f82f3e99155a77c627f2c773209bcd7 providers/implementations/kem/rsa_kem.c +e89b894af920504160abfc11860b89b505d116d978162a02213f72500180903b providers/implementations/kem/rsa_kem.c aa13d72bc69a374db72b6d44e2f2c2ddd5f7bddbe16b950e3c4666d876c63735 providers/implementations/keymgmt/dh_kmgmt.c c0446d1b2101ddd977063516b87d23f424cdca33473f293db4c3974b674169b0 providers/implementations/keymgmt/dsa_kmgmt.c 2b98ba2124a86eae2adc7b88bfa26e47b548e9628b99180cc2cd841eed5ed8da providers/implementations/keymgmt/ec_kmgmt.c @@ -703,7 +703,7 @@ f0a1b4c6599e6555c5784d6c036d2aae04cd01cd8d73a927505041e7df25125c providers/impl daf35a7ab961ef70aefca981d80407935904c5da39dca6692432d6e6bc98759d providers/implementations/keymgmt/kdf_legacy_kmgmt.c 69b509e9c7fe9692622d1059917c3adb991c0047e11bc116f0a393a3a0539445 providers/implementations/keymgmt/mac_legacy_kmgmt.c 3c63e65bd1a6a2e853828205c015a50c38a82f2fee9bf6787dce6dab7331bb91 providers/implementations/keymgmt/ml_dsa_kmgmt.c -716e75fe56847f0c4c7bf7d86d78040ca575cdf1dcf63c1a93d351f0e836477f providers/implementations/keymgmt/ml_kem_kmgmt.c +30db36c6fe6b4449179488da1761e219d0c772a8fb8e74c8411d1e0f57e4aed2 providers/implementations/keymgmt/ml_kem_kmgmt.c 01d75c1eba93ed23f98130d6c308550d0ab2e44c5651101628861bc0238623d0 providers/implementations/keymgmt/mlx_kmgmt.c cd4b8129eaccbd77f9b6c725d3cb57b71109c4649115ec786b6495100afaddf2 providers/implementations/keymgmt/rsa_kmgmt.c d640cff1c46911b69866eb83f48beba42a1741bb1d3f1db6e7201077a57761fc providers/implementations/keymgmt/slh_dsa_kmgmt.c @@ -714,12 +714,12 @@ a3bb4d7914f45cf82f86cd92135e20a712274ca153d9ed5ad24db7f33710726c providers/impl 0ebc5a48655a697231918644397308e64914c32421e9b8ee7afd7779b6a2fdb8 providers/implementations/rands/drbg.c d9e41abc1780bb253bdca6c58cc32af7d0a774e52c91fc5d64577f71defc52c2 providers/implementations/rands/drbg_ctr.c cf98646defb0b385d6ce4bedcd51559c9a03424491f4576ea7eb41e3db8a18b3 providers/implementations/rands/drbg_hash.c -45993825b1224097f6b9ea12643c09a09dc66beecfdfb3dd337d468931ab0f25 providers/implementations/rands/drbg_hmac.c +57561d4bd3a79e6a250310a989958409437dfa68b2818d5f0dbb8a5e7ef04bb7 providers/implementations/rands/drbg_hmac.c 841617c81d6d5eae5ea59064e8b45947d436d3e53b49283329d17016866d8f34 providers/implementations/rands/drbg_local.h 355bd437dde9ecd1da89f42691147f2b5cf9a012ff5f55062bf83b6bead1e181 providers/implementations/rands/fips_crng_test.c 4913fec58a2648fcec0e5a94dba9decab0505a6d725bed6eb861ce854db81df8 providers/implementations/rands/test_rng.c -74e60389dc5ab0a69701af0181b6a915fc87ce9a0874cc949f7e9e85ae4642e7 providers/implementations/signature/dsa_sig.c -ca090b1987debf6a30f17551b0be613f7a2e6ce0d07b0d6924e0f759a970af4d providers/implementations/signature/ecdsa_sig.c +c6c709dfd8b1be036e2a5232d3b21dc25f0150f2aae24cc7db6b09cd790a04ee providers/implementations/signature/dsa_sig.c +d10d611713a6d9aa5cdbe636f1ba90404043431fd1df01fc1a1ce8499bf96ad0 providers/implementations/signature/ecdsa_sig.c a837f69cb1aa5d0327372e26a63a8492b6ffb1156325f66e880c202011d07cbe providers/implementations/signature/eddsa_sig.c e0e67e402ff19b0d2eb5228d7ebd70b9477c12595ac34d6f201373d7c8a516f4 providers/implementations/signature/mac_legacy_sig.c 51251a1ca4c0b6faea059de5d5268167fe47565163317177d09db39978134f78 providers/implementations/signature/ml_dsa_sig.c diff --git a/deps/openssl/openssl/providers/fips.checksum b/deps/openssl/openssl/providers/fips.checksum index b10e46c3519234..8e36de6cf70724 100644 --- a/deps/openssl/openssl/providers/fips.checksum +++ b/deps/openssl/openssl/providers/fips.checksum @@ -1 +1 @@ -7fb222f49c7b3a423c4bb2f62da17eae3e209cb3e9b9a9a3db624bcdfba3151a providers/fips-sources.checksums +541f8f3eafccc78db022af2226f0d6501b43a3d96e2e23fd7dffb29a80d218b8 providers/fips-sources.checksums diff --git a/deps/openssl/openssl/providers/fips/self_test.c b/deps/openssl/openssl/providers/fips/self_test.c index 008a4fac847fc6..aa5a8c765811f3 100644 --- a/deps/openssl/openssl/providers/fips/self_test.c +++ b/deps/openssl/openssl/providers/fips/self_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -101,7 +101,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) init(); break; case DLL_PROCESS_DETACH: +#ifndef __CYGWIN__ cleanup(); +#endif break; default: break; diff --git a/deps/openssl/openssl/providers/fips/self_test_kats.c b/deps/openssl/openssl/providers/fips/self_test_kats.c index f453b2f2fb493d..0559a30cd69d93 100644 --- a/deps/openssl/openssl/providers/fips/self_test_kats.c +++ b/deps/openssl/openssl/providers/fips/self_test_kats.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1025,6 +1025,8 @@ static int set_kat_drbg(OSSL_LIB_CTX *ctx, EVP_RAND *rand; unsigned int strength = 256; EVP_RAND_CTX *parent_rand = NULL; + int reseed_time_interval = 0; + unsigned int reseed_requests = 0; OSSL_PARAM drbg_params[3] = { OSSL_PARAM_END, OSSL_PARAM_END, OSSL_PARAM_END }; @@ -1071,7 +1073,12 @@ static int set_kat_drbg(OSSL_LIB_CTX *ctx, EVP_RAND_CTX_free(parent_rand); parent_rand = NULL; - if (!EVP_RAND_instantiate(kat_rand, strength, 0, persstr, persstr_len, NULL)) + /* Disable time/request based reseeding to make selftests deterministic */ + drbg_params[0] = OSSL_PARAM_construct_int(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL, + &reseed_time_interval); + drbg_params[1] = OSSL_PARAM_construct_uint(OSSL_DRBG_PARAM_RESEED_REQUESTS, + &reseed_requests); + if (!EVP_RAND_instantiate(kat_rand, strength, 0, persstr, persstr_len, drbg_params)) goto err; /* When we set the new private generator this one is freed, so upref it */ diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_hw_ppc.inc b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_hw_ppc.inc index 153eb798917164..a1df534f2a7a8d 100644 --- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_hw_ppc.inc +++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_gcm_hw_ppc.inc @@ -1,5 +1,5 @@ /* - * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -44,8 +44,8 @@ static inline u32 add32TOU(unsigned char buf[4], u32 n) static size_t ppc_aes_gcm_crypt(const unsigned char *in, unsigned char *out, size_t len, const void *key, unsigned char ivec[16], u64 *Xi, int encrypt) { - int s = 0; - int ndone = 0; + size_t s = 0; + size_t ndone = 0; int ctr_reset = 0; u64 blocks_unused; u64 nb = len / 16; @@ -119,7 +119,7 @@ static int ppc_aes_gcm_cipher_update(PROV_GCM_CTX *ctx, const unsigned char *in, size_t res = (16 - ctx->gcm.mres) % 16; if (CRYPTO_gcm128_decrypt(&ctx->gcm, in, out, res)) - return -1; + return 0; bulk = ppc_aes_gcm_crypt(in + res, out + res, len - res, ctx->gcm.key, diff --git a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c index a50099719c4a91..b724c425e3924d 100644 --- a/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c +++ b/deps/openssl/openssl/providers/implementations/ciphers/cipher_aes_ocb.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ #define OCB_MIN_IV_LEN 1 #define OCB_MAX_IV_LEN 15 -PROV_CIPHER_FUNC(int, ocb_cipher, (PROV_AES_OCB_CTX * ctx, const unsigned char *in, unsigned char *out, size_t nextblock)); +PROV_CIPHER_FUNC(int, ocb_cipher, (PROV_AES_OCB_CTX *ctx, const unsigned char *in, unsigned char *out, size_t nextblock)); /* forward declarations */ static OSSL_FUNC_cipher_encrypt_init_fn aes_ocb_einit; static OSSL_FUNC_cipher_decrypt_init_fn aes_ocb_dinit; diff --git a/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon.c b/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon.c index ba2a9b68088b1c..9b6930e5c49b5e 100644 --- a/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon.c +++ b/deps/openssl/openssl/providers/implementations/ciphers/ciphercommon.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -691,6 +691,10 @@ int ossl_cipher_generic_set_ctx_params(void *vctx, const OSSL_PARAM params[]) ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER); return 0; } + if (ctx->blocksize > 0 && num >= (unsigned int)ctx->blocksize) { + ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER); + return 0; + } ctx->num = num; } return 1; diff --git a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_ccm.h b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_ccm.h index 59d77f0bb10dd1..fefe7ed3156548 100644 --- a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_ccm.h +++ b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_ccm.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -48,13 +48,13 @@ typedef struct prov_ccm_st { const PROV_CCM_HW *hw; /* hardware specific methods */ } PROV_CCM_CTX; -PROV_CIPHER_FUNC(int, CCM_cipher, (PROV_CCM_CTX * ctx, unsigned char *out, size_t *padlen, const unsigned char *in, size_t len)); -PROV_CIPHER_FUNC(int, CCM_setkey, (PROV_CCM_CTX * ctx, const unsigned char *key, size_t keylen)); -PROV_CIPHER_FUNC(int, CCM_setiv, (PROV_CCM_CTX * dat, const unsigned char *iv, size_t ivlen, size_t mlen)); -PROV_CIPHER_FUNC(int, CCM_setaad, (PROV_CCM_CTX * ctx, const unsigned char *aad, size_t aadlen)); -PROV_CIPHER_FUNC(int, CCM_auth_encrypt, (PROV_CCM_CTX * ctx, const unsigned char *in, unsigned char *out, size_t len, unsigned char *tag, size_t taglen)); -PROV_CIPHER_FUNC(int, CCM_auth_decrypt, (PROV_CCM_CTX * ctx, const unsigned char *in, unsigned char *out, size_t len, unsigned char *tag, size_t taglen)); -PROV_CIPHER_FUNC(int, CCM_gettag, (PROV_CCM_CTX * ctx, unsigned char *tag, size_t taglen)); +PROV_CIPHER_FUNC(int, CCM_cipher, (PROV_CCM_CTX *ctx, unsigned char *out, size_t *padlen, const unsigned char *in, size_t len)); +PROV_CIPHER_FUNC(int, CCM_setkey, (PROV_CCM_CTX *ctx, const unsigned char *key, size_t keylen)); +PROV_CIPHER_FUNC(int, CCM_setiv, (PROV_CCM_CTX *dat, const unsigned char *iv, size_t ivlen, size_t mlen)); +PROV_CIPHER_FUNC(int, CCM_setaad, (PROV_CCM_CTX *ctx, const unsigned char *aad, size_t aadlen)); +PROV_CIPHER_FUNC(int, CCM_auth_encrypt, (PROV_CCM_CTX *ctx, const unsigned char *in, unsigned char *out, size_t len, unsigned char *tag, size_t taglen)); +PROV_CIPHER_FUNC(int, CCM_auth_decrypt, (PROV_CCM_CTX *ctx, const unsigned char *in, unsigned char *out, size_t len, unsigned char *tag, size_t taglen)); +PROV_CIPHER_FUNC(int, CCM_gettag, (PROV_CCM_CTX *ctx, unsigned char *tag, size_t taglen)); /* * CCM Mode internal method table used to handle hardware specific differences, diff --git a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_gcm.h b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_gcm.h index 7b411618f027cc..7c57e3cb7950b8 100644 --- a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_gcm.h +++ b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon_gcm.h @@ -1,6 +1,6 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -81,12 +81,12 @@ typedef struct prov_gcm_ctx_st { ctr128_f ctr; } PROV_GCM_CTX; -PROV_CIPHER_FUNC(int, GCM_setkey, (PROV_GCM_CTX * ctx, const unsigned char *key, size_t keylen)); -PROV_CIPHER_FUNC(int, GCM_setiv, (PROV_GCM_CTX * dat, const unsigned char *iv, size_t ivlen)); -PROV_CIPHER_FUNC(int, GCM_aadupdate, (PROV_GCM_CTX * ctx, const unsigned char *aad, size_t aadlen)); -PROV_CIPHER_FUNC(int, GCM_cipherupdate, (PROV_GCM_CTX * ctx, const unsigned char *in, size_t len, unsigned char *out)); -PROV_CIPHER_FUNC(int, GCM_cipherfinal, (PROV_GCM_CTX * ctx, unsigned char *tag)); -PROV_CIPHER_FUNC(int, GCM_oneshot, (PROV_GCM_CTX * ctx, unsigned char *aad, size_t aad_len, const unsigned char *in, size_t in_len, unsigned char *out, unsigned char *tag, size_t taglen)); +PROV_CIPHER_FUNC(int, GCM_setkey, (PROV_GCM_CTX *ctx, const unsigned char *key, size_t keylen)); +PROV_CIPHER_FUNC(int, GCM_setiv, (PROV_GCM_CTX *dat, const unsigned char *iv, size_t ivlen)); +PROV_CIPHER_FUNC(int, GCM_aadupdate, (PROV_GCM_CTX *ctx, const unsigned char *aad, size_t aadlen)); +PROV_CIPHER_FUNC(int, GCM_cipherupdate, (PROV_GCM_CTX *ctx, const unsigned char *in, size_t len, unsigned char *out)); +PROV_CIPHER_FUNC(int, GCM_cipherfinal, (PROV_GCM_CTX *ctx, unsigned char *tag)); +PROV_CIPHER_FUNC(int, GCM_oneshot, (PROV_GCM_CTX *ctx, unsigned char *aad, size_t aad_len, const unsigned char *in, size_t in_len, unsigned char *out, unsigned char *tag, size_t taglen)); struct prov_gcm_hw_st { OSSL_GCM_setkey_fn setkey; OSSL_GCM_setiv_fn setiv; diff --git a/deps/openssl/openssl/providers/implementations/kdfs/pkcs12kdf.c b/deps/openssl/openssl/providers/implementations/kdfs/pkcs12kdf.c index fa4b808f4e1169..397cd50ec6a862 100644 --- a/deps/openssl/openssl/providers/implementations/kdfs/pkcs12kdf.c +++ b/deps/openssl/openssl/providers/implementations/kdfs/pkcs12kdf.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -266,6 +266,15 @@ static int kdf_pkcs12_set_ctx_params(void *vctx, const OSSL_PARAM params[]) if ((p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_ITER)) != NULL) if (!OSSL_PARAM_get_uint64(p, &ctx->iter)) return 0; +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + /* + * If we're running the fuzzer, limit iteration count to + * 100 so we don't time out running the derivation for + * a really long time + */ + if (getenv("OPENSSL_RUNNING_UNIT_TESTS") == NULL && p != NULL && ctx->iter > 100) + ctx->iter = 100; +#endif return 1; } diff --git a/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c b/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c index f7bf368a0dfc71..78925809d9853a 100644 --- a/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c +++ b/deps/openssl/openssl/providers/implementations/kem/rsa_kem.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -316,17 +316,19 @@ static int rsasve_generate(PROV_RSA_CTX *prsactx, return 0; /* Step(3): out = RSAEP((n,e), z) */ - ret = RSA_public_encrypt(nlen, secret, out, prsactx->rsa, RSA_NO_PADDING); - if (ret) { - ret = 1; - if (outlen != NULL) - *outlen = nlen; - if (secretlen != NULL) - *secretlen = nlen; - } else { + ret = RSA_public_encrypt((int)nlen, secret, out, prsactx->rsa, + RSA_NO_PADDING); + if (ret <= 0 || ret != (int)nlen) { OPENSSL_cleanse(secret, nlen); + return 0; } - return ret; + + if (outlen != NULL) + *outlen = nlen; + if (secretlen != NULL) + *secretlen = nlen; + + return 1; } /** diff --git a/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c b/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c index 0be2a1e29839b6..7884f40ae58edd 100644 --- a/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c +++ b/deps/openssl/openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c @@ -1,5 +1,5 @@ /* - * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2024-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -799,7 +799,7 @@ static void ml_kem_gen_cleanup(void *vgctx) return; if (gctx->seed != NULL) - OPENSSL_cleanse(gctx->seed, ML_KEM_RANDOM_BYTES); + OPENSSL_cleanse(gctx->seed, ML_KEM_SEED_BYTES); OPENSSL_free(gctx->propq); OPENSSL_free(gctx); } diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c index ff8a6cd6f0a615..d3191e55a92919 100644 --- a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c +++ b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c @@ -437,7 +437,7 @@ static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[], p = OSSL_PARAM_locate_const(params, OSSL_ALG_PARAM_DIGEST); if (p) { - if (OSSL_PARAM_get_utf8_string_ptr(p, &digest_name)) { + if (!OSSL_PARAM_get_utf8_string_ptr(p, &digest_name)) { ERR_raise(ERR_LIB_PROV, PROV_R_VALUE_ERROR); goto done; } @@ -458,7 +458,7 @@ static int drbg_fetch_algs_from_prov(const OSSL_PARAM params[], if (p == NULL) { hmac_name = "HMAC"; } else { - if (OSSL_PARAM_get_utf8_string_ptr(p, &hmac_name)) { + if (!OSSL_PARAM_get_utf8_string_ptr(p, &hmac_name)) { ERR_raise(ERR_LIB_PROV, PROV_R_VALUE_ERROR); goto done; } diff --git a/deps/openssl/openssl/providers/implementations/signature/dsa_sig.c b/deps/openssl/openssl/providers/implementations/signature/dsa_sig.c index 51dcc3f2300d5b..48237d7eb9ed73 100644 --- a/deps/openssl/openssl/providers/implementations/signature/dsa_sig.c +++ b/deps/openssl/openssl/providers/implementations/signature/dsa_sig.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -634,13 +634,14 @@ static void *dsa_dupctx(void *vpdsactx) if (!ossl_prov_is_running()) return NULL; - dstctx = OPENSSL_zalloc(sizeof(*srcctx)); - if (dstctx == NULL) + if ((dstctx = OPENSSL_memdup(srcctx, sizeof(*srcctx))) == NULL) return NULL; - *dstctx = *srcctx; dstctx->dsa = NULL; dstctx->propq = NULL; + dstctx->md = NULL; + dstctx->mdctx = NULL; + dstctx->sig = NULL; if (srcctx->dsa != NULL && !DSA_up_ref(srcctx->dsa)) goto err; @@ -650,18 +651,15 @@ static void *dsa_dupctx(void *vpdsactx) goto err; dstctx->md = srcctx->md; - if (srcctx->mdctx != NULL) { - dstctx->mdctx = EVP_MD_CTX_new(); - if (dstctx->mdctx == NULL - || !EVP_MD_CTX_copy_ex(dstctx->mdctx, srcctx->mdctx)) - goto err; - } - - if (srcctx->propq != NULL) { - dstctx->propq = OPENSSL_strdup(srcctx->propq); - if (dstctx->propq == NULL) - goto err; - } + if (srcctx->mdctx != NULL + && (dstctx->mdctx = EVP_MD_CTX_dup(srcctx->mdctx)) == NULL) + goto err; + if (srcctx->propq != NULL + && ((dstctx->propq = OPENSSL_strdup(srcctx->propq)) == NULL)) + goto err; + if (srcctx->sig != NULL + && ((dstctx->sig = OPENSSL_memdup(srcctx->sig, srcctx->siglen)) == NULL)) + goto err; return dstctx; err: @@ -972,6 +970,12 @@ static int dsa_sigalg_set_ctx_params(void *vpdsactx, const OSSL_PARAM params[]) if (!OSSL_PARAM_get_octet_string(p, (void **)&pdsactx->sig, 0, &pdsactx->siglen)) return 0; + /* The signature must not be empty */ + if (pdsactx->siglen == 0) { + OPENSSL_free(pdsactx->sig); + pdsactx->sig = NULL; + return 0; + } } } return 1; diff --git a/deps/openssl/openssl/providers/implementations/signature/ecdsa_sig.c b/deps/openssl/openssl/providers/implementations/signature/ecdsa_sig.c index 0c04fc4ec683e3..3ce4cd0d2a82c3 100644 --- a/deps/openssl/openssl/providers/implementations/signature/ecdsa_sig.c +++ b/deps/openssl/openssl/providers/implementations/signature/ecdsa_sig.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -630,40 +630,37 @@ static void *ecdsa_dupctx(void *vctx) PROV_ECDSA_CTX *srcctx = (PROV_ECDSA_CTX *)vctx; PROV_ECDSA_CTX *dstctx; - if (!ossl_prov_is_running()) - return NULL; - - dstctx = OPENSSL_zalloc(sizeof(*srcctx)); - if (dstctx == NULL) + /* Test KATS should not need to be supported */ + if (!ossl_prov_is_running() + || srcctx->kinv != NULL + || srcctx->r != NULL + || (dstctx = OPENSSL_memdup(srcctx, sizeof(*srcctx))) == NULL) return NULL; - *dstctx = *srcctx; dstctx->ec = NULL; dstctx->propq = NULL; + dstctx->md = NULL; + dstctx->mdctx = NULL; + dstctx->sig = NULL; if (srcctx->ec != NULL && !EC_KEY_up_ref(srcctx->ec)) goto err; - /* Test KATS should not need to be supported */ - if (srcctx->kinv != NULL || srcctx->r != NULL) - goto err; dstctx->ec = srcctx->ec; if (srcctx->md != NULL && !EVP_MD_up_ref(srcctx->md)) goto err; dstctx->md = srcctx->md; - if (srcctx->mdctx != NULL) { - dstctx->mdctx = EVP_MD_CTX_new(); - if (dstctx->mdctx == NULL - || !EVP_MD_CTX_copy_ex(dstctx->mdctx, srcctx->mdctx)) - goto err; - } - - if (srcctx->propq != NULL) { - dstctx->propq = OPENSSL_strdup(srcctx->propq); - if (dstctx->propq == NULL) - goto err; - } + if (srcctx->mdctx != NULL + && ((dstctx->mdctx = EVP_MD_CTX_new()) == NULL + || !EVP_MD_CTX_copy_ex(dstctx->mdctx, srcctx->mdctx))) + goto err; + if (srcctx->propq != NULL + && (dstctx->propq = OPENSSL_strdup(srcctx->propq)) == NULL) + goto err; + if (srcctx->sig != NULL + && (dstctx->sig = OPENSSL_memdup(srcctx->sig, srcctx->siglen)) == NULL) + goto err; return dstctx; err: @@ -990,6 +987,12 @@ static int ecdsa_sigalg_set_ctx_params(void *vctx, const OSSL_PARAM params[]) if (!OSSL_PARAM_get_octet_string(p, (void **)&ctx->sig, 0, &ctx->siglen)) return 0; + /* The signature must not be empty */ + if (ctx->siglen == 0) { + OPENSSL_free(ctx->sig); + ctx->sig = NULL; + return 0; + } } } return 1; diff --git a/deps/openssl/openssl/providers/implementations/signature/sm2_sig.c b/deps/openssl/openssl/providers/implementations/signature/sm2_sig.c index d367c493811446..4322e49f592feb 100644 --- a/deps/openssl/openssl/providers/implementations/signature/sm2_sig.c +++ b/deps/openssl/openssl/providers/implementations/signature/sm2_sig.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -214,6 +214,12 @@ static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname, int ret = 0; unsigned char *aid = NULL; + /* + * Each EVP_Digest{Sign,Verify}Init_ex(3) starts with fresh content, that + * needs to recompute the "Z" digest. + */ + ctx->flag_compute_z_digest = 1; + if (!sm2sig_signature_init(vpsm2ctx, ec, params) || !sm2sig_set_mdname(ctx, mdname)) return ret; @@ -247,8 +253,6 @@ static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname, if (!EVP_DigestInit_ex2(ctx->mdctx, ctx->md, params)) goto error; - ctx->flag_compute_z_digest = 1; - ret = 1; error: diff --git a/deps/openssl/openssl/providers/implementations/storemgmt/file_store.c b/deps/openssl/openssl/providers/implementations/storemgmt/file_store.c index 6568906ea1c46d..f73c5fd5c831d6 100644 --- a/deps/openssl/openssl/providers/implementations/storemgmt/file_store.c +++ b/deps/openssl/openssl/providers/implementations/storemgmt/file_store.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -104,6 +104,8 @@ struct file_ctx_st { /* Expected object type. May be unspecified */ int expected_type; + /* Fatal error occurred. We should indicate EOF. */ + int fatal_error; }; static void free_file_ctx(struct file_ctx_st *ctx) @@ -559,8 +561,10 @@ static int file_load_file(struct file_ctx_st *ctx, /* Setup the decoders (one time shot per session */ - if (!file_setup_decoders(ctx)) + if (!file_setup_decoders(ctx)) { + ctx->fatal_error = 1; return 0; + } /* Setup for this object */ @@ -758,6 +762,9 @@ static int file_eof(void *loaderctx) { struct file_ctx_st *ctx = loaderctx; + if (ctx->fatal_error) + return 1; + switch (ctx->type) { case IS_DIR: return ctx->_.dir.end_reached; diff --git a/deps/openssl/openssl/providers/implementations/storemgmt/winstore_store.c b/deps/openssl/openssl/providers/implementations/storemgmt/winstore_store.c index cd3e4b94fb3bb4..9da24b4f55c0f7 100644 --- a/deps/openssl/openssl/providers/implementations/storemgmt/winstore_store.c +++ b/deps/openssl/openssl/providers/implementations/storemgmt/winstore_store.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -272,8 +272,10 @@ static int winstore_load_using(struct winstore_ctx_st *ctx, const unsigned char *der_ = der; size_t der_len_ = der_len; - if (setup_decoder(ctx) == 0) + if (setup_decoder(ctx) == 0) { + ctx->state = STATE_EOF; return 0; + } data.object_cb = object_cb; data.object_cbarg = object_cbarg; diff --git a/deps/openssl/openssl/ssl/quic/quic_impl.c b/deps/openssl/openssl/ssl/quic/quic_impl.c index 1b4bbd4a92159c..a8f9ac92c2a437 100644 --- a/deps/openssl/openssl/ssl/quic/quic_impl.c +++ b/deps/openssl/openssl/ssl/quic/quic_impl.c @@ -4504,6 +4504,10 @@ SSL *ossl_quic_new_from_listener(SSL *ssl, uint64_t flags) * to grab reference for qc. */ qc->ch = ossl_quic_port_create_outgoing(qc->port, qc->tls); + if (qc->ch == NULL) { + QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_INTERNAL_ERROR, NULL); + goto err; + } ossl_quic_channel_set_msg_callback(qc->ch, ql->obj.ssl.ctx->msg_callback, &qc->obj.ssl); ossl_quic_channel_set_msg_callback_arg(qc->ch, ql->obj.ssl.ctx->msg_callback_arg); @@ -4600,9 +4604,10 @@ SSL *ossl_quic_accept_connection(SSL *ssl, uint64_t flags) int ret; QCTX ctx; SSL *conn_ssl = NULL; + SSL *conn_ssl_tmp = NULL; SSL_CONNECTION *conn = NULL; QUIC_CHANNEL *new_ch = NULL; - QUIC_CONNECTION *qc; + QUIC_CONNECTION *qc = NULL; int no_block = ((flags & SSL_ACCEPT_CONNECTION_NO_BLOCK) != 0); if (!expect_quic_listener(ssl, &ctx)) @@ -4651,28 +4656,38 @@ SSL *ossl_quic_accept_connection(SSL *ssl, uint64_t flags) * bound to new_ch. If channel constructor fails to create any item here * it just fails to create channel. */ - if (!ossl_assert((conn_ssl = ossl_quic_channel_get0_tls(new_ch)) != NULL) - || !ossl_assert((conn = SSL_CONNECTION_FROM_SSL(conn_ssl)) != NULL) - || !ossl_assert((conn_ssl = SSL_CONNECTION_GET_USER_SSL(conn)) != NULL)) + if (!ossl_assert((conn_ssl_tmp = ossl_quic_channel_get0_tls(new_ch)) != NULL) + || !ossl_assert((conn = SSL_CONNECTION_FROM_SSL(conn_ssl_tmp)) != NULL) + || !ossl_assert((conn_ssl_tmp = SSL_CONNECTION_GET_USER_SSL(conn)) != NULL)) goto out; - qc = (QUIC_CONNECTION *)conn_ssl; - qc->pending = 0; - if (!SSL_up_ref(&ctx.ql->obj.ssl)) { - /* - * You might expect ossl_quic_channel_free() to be called here. Be - * assured it happens, The process goes as follows: - * - The SSL_free() here is being handled by ossl_quic_free(). - * - The very last step of ossl_quic_free() is call to qc_cleanup() - * where channel gets freed. - */ - SSL_free(conn_ssl); + qc = (QUIC_CONNECTION *)conn_ssl_tmp; + if (SSL_up_ref(&ctx.ql->obj.ssl)) { + qc->listener = ctx.ql; + conn_ssl = conn_ssl_tmp; + conn_ssl_tmp = NULL; + qc->pending = 0; } - qc->listener = ctx.ql; out: qctx_unlock(&ctx); + /* + * You might expect ossl_quic_channel_free() to be called here. Be + * assured it happens, The process goes as follows: + * - The SSL_free() here is being handled by ossl_quic_free(). + * - The very last step of ossl_quic_free() is call to qc_cleanup() + * where channel gets freed. + * NOTE: We defer this SSL_free until after the call to qctx_unlock above + * to avoid the deadlock that would occur when ossl_quic_free attempts to + * re-acquire this mutex. We also do the gymnastics with conn_ssl and + * conn_ssl_tmp above so that we only actually do the free on the SSL + * object if the up-ref above fails, in such a way that we don't unbalance + * the listener refcount (i.e. if the up-ref fails above, we don't set the + * listener pointer so that we don't then drop the ref-count erroneously + * during the free operation. + */ + SSL_free(conn_ssl_tmp); return conn_ssl; } diff --git a/deps/openssl/openssl/ssl/quic/quic_lcidm.c b/deps/openssl/openssl/ssl/quic/quic_lcidm.c index 660eb802ba32f0..89ee95055dc1d3 100644 --- a/deps/openssl/openssl/ssl/quic/quic_lcidm.c +++ b/deps/openssl/openssl/ssl/quic/quic_lcidm.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -74,15 +74,21 @@ static unsigned long lcid_hash(const QUIC_LCID *lcid_obj) 0, }; unsigned long hashval = 0; + unsigned char digest[SIPHASH_MIN_DIGEST_SIZE]; - if (!SipHash_set_hash_size(&siphash, sizeof(unsigned long))) + /* Use a supported SipHash digest size (8 or 16); 8 is sufficient here. */ + if (!SipHash_set_hash_size(&siphash, SIPHASH_MIN_DIGEST_SIZE)) goto out; if (!SipHash_Init(&siphash, (uint8_t *)lcid_obj->hash_key, 0, 0)) goto out; SipHash_Update(&siphash, lcid_obj->cid.id, lcid_obj->cid.id_len); - if (!SipHash_Final(&siphash, (unsigned char *)&hashval, - sizeof(unsigned long))) + if (!SipHash_Final(&siphash, digest, SIPHASH_MIN_DIGEST_SIZE)) goto out; + + /* + * Truncate the 64-bit SipHash digest into an unsigned long. + */ + memcpy(&hashval, digest, sizeof(hashval) < sizeof(digest) ? sizeof(hashval) : sizeof(digest)); out: return hashval; } diff --git a/deps/openssl/openssl/ssl/quic/quic_reactor.c b/deps/openssl/openssl/ssl/quic/quic_reactor.c index 1a95f131e30cad..c30bc3c595ab16 100644 --- a/deps/openssl/openssl/ssl/quic/quic_reactor.c +++ b/deps/openssl/openssl/ssl/quic/quic_reactor.c @@ -76,6 +76,12 @@ void ossl_quic_reactor_cleanup(QUIC_REACTOR *rtor) } #if defined(OPENSSL_SYS_WINDOWS) + +/* Work around for MinGW builds. */ +#if defined(__MINGW32__) && !defined(SIO_UDP_NETRESET) +#define SIO_UDP_NETRESET _WSAIOW(IOC_VENDOR, 15) +#endif + /* * On Windows recvfrom() may return WSAECONNRESET when destination port * used in preceding call to sendto() is no longer reachable. The reset diff --git a/deps/openssl/openssl/ssl/quic/quic_rx_depack.c b/deps/openssl/openssl/ssl/quic/quic_rx_depack.c index 83f66ef59e5a0d..786af9b4c221ad 100644 --- a/deps/openssl/openssl/ssl/quic/quic_rx_depack.c +++ b/deps/openssl/openssl/ssl/quic/quic_rx_depack.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1316,6 +1316,7 @@ static int depack_process_frames(QUIC_CHANNEL *ch, PACKET *pkt, OSSL_QUIC_ERR_PROTOCOL_VIOLATION, frame_type, "NEW_CONN_ID valid only in 0/1-RTT"); + return 0; } if (!depack_do_frame_new_conn_id(pkt, ch, ackm_data)) return 0; diff --git a/deps/openssl/openssl/ssl/quic/quic_srtm.c b/deps/openssl/openssl/ssl/quic/quic_srtm.c index 405376fc465d63..46f675cef239e5 100644 --- a/deps/openssl/openssl/ssl/quic/quic_srtm.c +++ b/deps/openssl/openssl/ssl/quic/quic_srtm.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2023-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -168,6 +168,11 @@ void ossl_quic_srtm_free(QUIC_SRTM *srtm) lh_SRTM_ITEM_free(srtm->items_rev); if (srtm->items_fwd != NULL) { + /* + * We don't need to call lh_SRTM_ITEM_set_down_load(..., 0) + * here because srtm_free_each() callback for _doall() does + * not call to lh_SRTIM_ITEM_delete(). + */ lh_SRTM_ITEM_doall(srtm->items_fwd, srtm_free_each); lh_SRTM_ITEM_free(srtm->items_fwd); } diff --git a/deps/openssl/openssl/ssl/quic/quic_stream_map.c b/deps/openssl/openssl/ssl/quic/quic_stream_map.c index ae6a0a01e983ab..b8175849a019ba 100644 --- a/deps/openssl/openssl/ssl/quic/quic_stream_map.c +++ b/deps/openssl/openssl/ssl/quic/quic_stream_map.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -122,6 +122,7 @@ static void release_each(QUIC_STREAM *stream, void *arg) void ossl_quic_stream_map_cleanup(QUIC_STREAM_MAP *qsm) { + lh_QUIC_STREAM_set_down_load(qsm->map, 0); ossl_quic_stream_map_visit(qsm, release_each, qsm); lh_QUIC_STREAM_free(qsm->map); diff --git a/deps/openssl/openssl/ssl/quic/uint_set.c b/deps/openssl/openssl/ssl/quic/uint_set.c index f81148c79af7c2..e217816a395b72 100644 --- a/deps/openssl/openssl/ssl/quic/uint_set.c +++ b/deps/openssl/openssl/ssl/quic/uint_set.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -303,6 +303,8 @@ int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range) * handled by the above cases. */ y = create_set_item(end + 1, z->range.end); + if (y == NULL) + return 0; ossl_list_uint_set_insert_after(s, z, y); z->range.end = start - 1; break; diff --git a/deps/openssl/openssl/ssl/record/methods/tls_common.c b/deps/openssl/openssl/ssl/record/methods/tls_common.c index bbfb3620f195d3..bf035b13d54f4a 100644 --- a/deps/openssl/openssl/ssl/record/methods/tls_common.c +++ b/deps/openssl/openssl/ssl/record/methods/tls_common.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -620,6 +620,11 @@ int tls_get_more_records(OSSL_RECORD_LAYER *rl) thisrr->length = sslv2len & 0x7fff; + if (!rl->funcs->validate_record_header(rl, thisrr)) { + /* RLAYERfatal already called */ + return OSSL_RECORD_RETURN_FATAL; + } + if (thisrr->length > TLS_BUFFER_get_len(rbuf) - SSL2_RT_HEADER_LENGTH) { RLAYERfatal(rl, SSL_AD_RECORD_OVERFLOW, @@ -656,6 +661,11 @@ int tls_get_more_records(OSSL_RECORD_LAYER *rl) if (rl->msg_callback != NULL) rl->msg_callback(0, version, SSL3_RT_HEADER, p, 5, rl->cbarg); + if (!rl->funcs->validate_record_header(rl, thisrr)) { + /* RLAYERfatal already called */ + return OSSL_RECORD_RETURN_FATAL; + } + if (thisrr->length > TLS_BUFFER_get_len(rbuf) - SSL3_RT_HEADER_LENGTH) { RLAYERfatal(rl, SSL_AD_RECORD_OVERFLOW, SSL_R_PACKET_LENGTH_TOO_LONG); @@ -663,11 +673,6 @@ int tls_get_more_records(OSSL_RECORD_LAYER *rl) } } - if (!rl->funcs->validate_record_header(rl, thisrr)) { - /* RLAYERfatal already called */ - return OSSL_RECORD_RETURN_FATAL; - } - /* now rl->rstate == SSL_ST_READ_BODY */ } diff --git a/deps/openssl/openssl/ssl/s3_lib.c b/deps/openssl/openssl/ssl/s3_lib.c index 0e1445b38fb7d7..213ec84b171d5a 100644 --- a/deps/openssl/openssl/ssl/s3_lib.c +++ b/deps/openssl/openssl/ssl/s3_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -4322,7 +4322,7 @@ long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) switch (cmd) { #if !defined(OPENSSL_NO_DEPRECATED_3_0) case SSL_CTRL_SET_TMP_DH_CB: - sc->cert->dh_tmp_cb = (DH * (*)(SSL *, int, int)) fp; + sc->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; ret = 1; break; #endif @@ -4593,7 +4593,7 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) switch (cmd) { #if !defined(OPENSSL_NO_DEPRECATED_3_0) case SSL_CTRL_SET_TMP_DH_CB: { - ctx->cert->dh_tmp_cb = (DH * (*)(SSL *, int, int)) fp; + ctx->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; } break; #endif case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: diff --git a/deps/openssl/openssl/ssl/ssl_asn1.c b/deps/openssl/openssl/ssl/ssl_asn1.c index 5d4ec7e6ed8713..13ab6490b9a7a6 100644 --- a/deps/openssl/openssl/ssl/ssl_asn1.c +++ b/deps/openssl/openssl/ssl/ssl_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2005 Nokia. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -81,7 +81,7 @@ ASN1_SEQUENCE(SSL_SESSION_ASN1) = { ASN1_EXP_OPT(SSL_SESSION_ASN1, peer_rpk, ASN1_OCTET_STRING, 20) } static_ASN1_SEQUENCE_END(SSL_SESSION_ASN1) - IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(SSL_SESSION_ASN1) +IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(SSL_SESSION_ASN1) /* Utility functions for i2d_SSL_SESSION */ diff --git a/deps/openssl/openssl/ssl/ssl_lib.c b/deps/openssl/openssl/ssl/ssl_lib.c index ac77faa677ce25..05b0209a76b323 100644 --- a/deps/openssl/openssl/ssl/ssl_lib.c +++ b/deps/openssl/openssl/ssl/ssl_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -3412,22 +3412,21 @@ char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size) int i; const SSL_CONNECTION *sc = SSL_CONNECTION_FROM_CONST_SSL(s); - if (sc == NULL) + if (size < 2 || buf == NULL) return NULL; - if (!sc->server - || sc->peer_ciphers == NULL - || size < 2) + buf[0] = '\0'; + + if (sc == NULL || !sc->server) return NULL; p = buf; clntsk = sc->peer_ciphers; srvrsk = SSL_get_ciphers(s); - if (clntsk == NULL || srvrsk == NULL) - return NULL; - if (sk_SSL_CIPHER_num(clntsk) == 0 || sk_SSL_CIPHER_num(srvrsk) == 0) - return NULL; + if (clntsk == NULL || sk_SSL_CIPHER_num(clntsk) == 0 + || srvrsk == NULL || sk_SSL_CIPHER_num(srvrsk) == 0) + return buf; for (i = 0; i < sk_SSL_CIPHER_num(clntsk); i++) { int n; @@ -3447,10 +3446,9 @@ char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size) } /* No overlap */ - if (p == buf) - return NULL; + if (p != buf) + p[-1] = '\0'; - p[-1] = '\0'; return buf; } diff --git a/deps/openssl/openssl/ssl/ssl_sess.c b/deps/openssl/openssl/ssl/ssl_sess.c index e54fb53e5294a2..04cbfa5cfa9469 100644 --- a/deps/openssl/openssl/ssl/ssl_sess.c +++ b/deps/openssl/openssl/ssl/ssl_sess.c @@ -790,9 +790,9 @@ int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c) ssl_tsan_counter(ctx, &ctx->stats.sess_cache_full); } } - } - SSL_SESSION_list_add(ctx, c); + SSL_SESSION_list_add(ctx, c); + } if (s != NULL) { /* diff --git a/deps/openssl/openssl/ssl/statem/statem_dtls.c b/deps/openssl/openssl/ssl/statem/statem_dtls.c index 4052ef6219b8bb..f62b757721fcd0 100644 --- a/deps/openssl/openssl/ssl/statem/statem_dtls.c +++ b/deps/openssl/openssl/ssl/statem/statem_dtls.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2005-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1177,7 +1177,11 @@ int dtls1_buffer_message(SSL_CONNECTION *s, int is_ccs) return 0; } - pqueue_insert(s->d1->sent_messages, item); + if (pqueue_insert(s->d1->sent_messages, item) == NULL) { + dtls1_hm_fragment_free(frag); + pitem_free(item); + return 0; + } return 1; } diff --git a/deps/openssl/openssl/ssl/t1_lib.c b/deps/openssl/openssl/ssl/t1_lib.c index cd471a636db162..ded6a1eadfb87f 100644 --- a/deps/openssl/openssl/ssl/t1_lib.c +++ b/deps/openssl/openssl/ssl/t1_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -211,7 +211,7 @@ static const uint16_t suiteb_curves[] = { /* Group list string of the built-in pseudo group DEFAULT_SUITE_B */ #define SUITE_B_GROUP_NAME "DEFAULT_SUITE_B" -#define SUITE_B_GROUP_LIST "secp256r1:secp384r1", +#define SUITE_B_GROUP_LIST "?secp256r1:?secp384r1", struct provider_ctx_data_st { SSL_CTX *ctx; @@ -1244,8 +1244,8 @@ typedef struct { size_t ksidcnt; /* Number of key shares */ uint16_t *ksid_arr; /* The IDs of the key share groups (flat list) */ /* Variable to keep state between execution of callback or helper functions */ - size_t tuple_mode; /* Keeps track whether tuple_cb called from 'the top' or from gid_cb */ - int ignore_unknown_default; /* Flag such that unknown groups for DEFAULT[_XYZ] are ignored */ + int inner; /* Are we expanding a DEFAULT list */ + int first; /* First tuple of possibly nested expansion? */ } gid_cb_st; /* Forward declaration of tuple callback function */ @@ -1264,7 +1264,7 @@ static int gid_cb(const char *elem, int len, void *arg) int found_group = 0; char etmp[GROUP_NAME_BUFFER_LENGTH]; int retval = 1; /* We assume success */ - char *current_prefix; + const char *current_prefix; int ignore_unknown = 0; int add_keyshare = 0; int remove_group = 0; @@ -1320,16 +1320,16 @@ static int gid_cb(const char *elem, int len, void *arg) for (i = 0; i < OSSL_NELEM(default_group_strings); i++) { if ((size_t)len == (strlen(default_group_strings[i].list_name)) && OPENSSL_strncasecmp(default_group_strings[i].list_name, elem, len) == 0) { + int saved_first; + /* * We're asked to insert an entire list of groups from a * DEFAULT[_XYZ] 'pseudo group' which we do by * recursively calling this function (indirectly via * CONF_parse_list and tuple_cb); essentially, we treat a DEFAULT * group string like a tuple which is appended to the current tuple - * rather then starting a new tuple. Variable tuple_mode is the flag which - * controls append tuple vs start new tuple. + * rather then starting a new tuple. */ - if (ignore_unknown || remove_group) return -1; /* removal or ignore not allowed here -> syntax error */ @@ -1350,15 +1350,17 @@ static int gid_cb(const char *elem, int len, void *arg) default_group_strings[i].group_string, strlen(default_group_strings[i].group_string)); restored_default_group_string[strlen(default_group_strings[i].group_string) + restored_prefix_index] = '\0'; - /* We execute the recursive call */ - garg->ignore_unknown_default = 1; /* We ignore unknown groups for DEFAULT_XYZ */ - /* we enforce group mode (= append tuple) for DEFAULT_XYZ group lists */ - garg->tuple_mode = 0; - /* We use the tuple_cb callback to process the pseudo group tuple */ + /* + * Append first tuple of result to current tuple, and don't + * terminate the last tuple until we return to a top-level + * tuple_cb. + */ + saved_first = garg->first; + garg->inner = garg->first = 1; retval = CONF_parse_list(restored_default_group_string, TUPLE_DELIMITER_CHARACTER, 1, tuple_cb, garg); - garg->tuple_mode = 1; /* next call to tuple_cb will again start new tuple */ - garg->ignore_unknown_default = 0; /* reset to original value */ + garg->inner = 0; + garg->first = saved_first; /* We don't need the \0-terminated string anymore */ OPENSSL_free(restored_default_group_string); @@ -1378,9 +1380,6 @@ static int gid_cb(const char *elem, int len, void *arg) if (len == 0) return -1; /* Seems we have prefxes without a group name -> syntax error */ - if (garg->ignore_unknown_default == 1) /* Always ignore unknown groups for DEFAULT[_XYZ] */ - ignore_unknown = 1; - /* Memory management in case more groups are present compared to initial allocation */ if (garg->gidcnt == garg->gidmax) { uint16_t *tmp = OPENSSL_realloc(garg->gid_arr, @@ -1514,7 +1513,7 @@ static int gid_cb(const char *elem, int len, void *arg) /* and update the book keeping for the number of groups in current tuple */ garg->tuplcnt_arr[garg->tplcnt]++; - /* We memorize if needed that we want to add a key share for the current group */ + /* We want to add a key share for the current group */ if (add_keyshare) garg->ksid_arr[garg->ksidcnt++] = gid; } @@ -1523,6 +1522,39 @@ static int gid_cb(const char *elem, int len, void *arg) return retval; } +static int grow_tuples(gid_cb_st *garg) +{ + static size_t max_tplcnt = (~(size_t)0) / sizeof(size_t); + + /* This uses OPENSSL_realloc_array() in newer releases */ + if (garg->tplcnt == garg->tplmax) { + size_t newcnt = garg->tplmax + GROUPLIST_INCREMENT; + size_t newsz = newcnt * sizeof(size_t); + size_t *tmp; + + if (newsz > max_tplcnt + || (tmp = OPENSSL_realloc(garg->tuplcnt_arr, newsz)) == NULL) + return 0; + + garg->tplmax = newcnt; + garg->tuplcnt_arr = tmp; + } + return 1; +} + +static int close_tuple(gid_cb_st *garg) +{ + size_t gidcnt = garg->tuplcnt_arr[garg->tplcnt]; + + if (gidcnt == 0) + return 1; + if (!grow_tuples(garg)) + return 0; + + garg->tuplcnt_arr[++garg->tplcnt] = 0; + return 1; +} + /* Extract and process a tuple of groups */ static int tuple_cb(const char *tuple, int len, void *arg) { @@ -1536,16 +1568,9 @@ static int tuple_cb(const char *tuple, int len, void *arg) return 0; } - /* Memory management for tuples */ - if (garg->tplcnt == garg->tplmax) { - size_t *tmp = OPENSSL_realloc(garg->tuplcnt_arr, - (garg->tplmax + GROUPLIST_INCREMENT) * sizeof(*garg->tuplcnt_arr)); - - if (tmp == NULL) - return 0; - garg->tplmax += GROUPLIST_INCREMENT; - garg->tuplcnt_arr = tmp; - } + if (garg->inner && !garg->first && !close_tuple(garg)) + return 0; + garg->first = 0; /* Convert to \0-terminated string */ restored_tuple_string = OPENSSL_malloc((len + 1 /* \0 */) * sizeof(char)); @@ -1560,15 +1585,8 @@ static int tuple_cb(const char *tuple, int len, void *arg) /* We don't need the \o-terminated string anymore */ OPENSSL_free(restored_tuple_string); - if (garg->tuplcnt_arr[garg->tplcnt] > 0) { /* Some valid groups are present in current tuple... */ - if (garg->tuple_mode) { - /* We 'close' the tuple */ - garg->tplcnt++; - garg->tuplcnt_arr[garg->tplcnt] = 0; /* Next tuple is initialized to be empty */ - garg->tuple_mode = 1; /* next call will start a tuple (unless overridden in gid_cb) */ - } - } - + if (!garg->inner && !close_tuple(garg)) + return 0; return retval; } @@ -1599,8 +1617,6 @@ int tls1_set_groups_list(SSL_CTX *ctx, } memset(&gcb, 0, sizeof(gcb)); - gcb.tuple_mode = 1; /* We prepare to collect the first tuple */ - gcb.ignore_unknown_default = 0; gcb.gidmax = GROUPLIST_INCREMENT; gcb.tplmax = GROUPLIST_INCREMENT; gcb.ksidmax = GROUPLIST_INCREMENT; diff --git a/deps/openssl/openssl/util/checkplatformsyms.pl b/deps/openssl/openssl/util/checkplatformsyms.pl index 742dd8ea84fe30..73f2a1b62184a0 100755 --- a/deps/openssl/openssl/util/checkplatformsyms.pl +++ b/deps/openssl/openssl/util/checkplatformsyms.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -14,6 +14,13 @@ shift(@ARGV); +# Check that object files exist +foreach (@ARGV) { + unless (-f $_ && -r $_) { + die "Path is not a regular readable file: '$_'"; + } +} + my $objlist; my $objfilelist = join(" ", @ARGV); my $expsyms; @@ -36,13 +43,13 @@ { chomp; my $dllfile = $_; - $dllfile =~ s/( +)(.*)(\.dll)(.*)/DLLFILE \2/; + $dllfile =~ s/( +)(.*)(\.dll)(.*)/DLLFILE $2/; if (index($dllfile, "DLLFILE") >= 0) { $currentdll = substr($dllfile, 8); $currentdll =~ s/^\s+|s+$//g; } # filter imports from our own library - if ("$currentdll" ne "libcrypto-3-x64") { + if ("$currentdll" !~ /^libcrypto-[1-9][0-9]*(-x64)?$/) { my $line = $_; $line =~ s/ [0-9a-fA-F]{1,2} /SYMBOL /; if (index($line, "SYMBOL") != -1) { @@ -51,18 +58,28 @@ } } } + + close($OBJFH); + ($? >> 8 == 0) or die "Command '$cmd' has failed."; + + my $ok = 1; foreach (@symlist) { + chomp; if (index($exps, $_) < 0) { print "Symbol $_ not in the allowed platform symbols list\n"; - exit 1; + $ok = 0; } } - exit 0; + exit !$ok; } else { - $cmd = "objdump -t " . $objfilelist . " | grep UND | grep -v \@OPENSSL"; - $cmd = $cmd . " | awk '{print \$NF}' |"; - $cmd = $cmd . " sed -e\"s/@.*\$//\" | sort | uniq"; + $cmd = "objdump -t " . $objfilelist . " | awk " . + "'/\\\\*UND\\\\*/ {" . + "split(\$NF, sym_lib, \"@\");" . + "if (sym_lib[2] !~ \"OPENSSL_[1-9][0-9]*\\\\.[0-9]+\\\\.[0-9]+\$\")" . + "syms[sym_lib[1]] = 1;" . + "}" . + "END { for (s in syms) print s; };'"; open $expsyms, '<', $expectedsyms or die; { @@ -72,13 +89,16 @@ close($expsyms); open($OBJFH, "$cmd|") or die "Cannot open process: $!"; + my $ok = 1; while (<$OBJFH>) { + chomp; if (index($exps, $_) < 0) { print "Symbol $_ not in the allowed platform symbols list\n"; - exit 1; + $ok = 0; } } close($OBJFH); - exit 0; + + exit !(!($? >> 8) || !$ok); } diff --git a/deps/openssl/openssl/util/missingcrypto.txt b/deps/openssl/openssl/util/missingcrypto.txt index 3bed02a6ca79e1..269c1d3fa1060b 100644 --- a/deps/openssl/openssl/util/missingcrypto.txt +++ b/deps/openssl/openssl/util/missingcrypto.txt @@ -1043,8 +1043,6 @@ X509V3_EXT_get(3) X509V3_EXT_get_nid(3) X509V3_EXT_nconf(3) X509V3_EXT_nconf_nid(3) -X509V3_EXT_print(3) -X509V3_EXT_print_fp(3) X509V3_EXT_val_prn(3) X509V3_NAME_from_section(3) X509V3_add_standard_extensions(3) diff --git a/deps/openssl/openssl/util/mkerr.pl b/deps/openssl/openssl/util/mkerr.pl index 803a3efc83cf78..e2479e727b74df 100755 --- a/deps/openssl/openssl/util/mkerr.pl +++ b/deps/openssl/openssl/util/mkerr.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1999-2026 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -339,21 +339,21 @@ sub help */ #ifndef $guard -# define $guard -# pragma once +#define $guard +#pragma once -# include -# include +#include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern \"C\" { -# endif +#endif EOF $indent = ' '; if ($disablable) { print OUT <<"EOF"; -# ifndef OPENSSL_NO_${lib} +#ifndef OPENSSL_NO_${lib} EOF $indent = " "; @@ -380,7 +380,7 @@ sub help $rassigned{$lib} .= "$findcode:"; print STDERR "New Reason code $i\n" if $debug; } - printf OUT "#${indent}define $i%s $rcodes{$i}\n", " " x $z; + printf OUT "#define $i $rcodes{$i}\n"; } print OUT "\n"; } @@ -389,14 +389,14 @@ sub help # brace for 'extern "C" {'. while (length($indent) > 1) { $indent = substr $indent, 0, -1; - print OUT "#${indent}endif\n"; + print OUT "#endif\n"; } print OUT <<"EOF"; -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif #endif EOF close OUT; @@ -408,8 +408,8 @@ sub help my $extra_include = $internal ? ($lib ne 'SSL' - ? "# include \n" - : "# include \n") + ? "#include \n" + : "#include \n") : ''; my $hfile = $hpubinc{$lib}; my $guard = $hfile; @@ -430,46 +430,43 @@ sub help */ #ifndef $guard -# define $guard -# pragma once +#define $guard +#pragma once -# include -# include +#include +#include $extra_include - EOF $indent = ' '; if ( $internal ) { if ($disablable) { print OUT <<"EOF"; -# ifndef OPENSSL_NO_${lib} - +#ifndef OPENSSL_NO_${lib} EOF $indent .= ' '; } } else { print OUT <<"EOF"; -# define ${lib}err(f, r) ERR_${lib}_error(0, (r), OPENSSL_FILE, OPENSSL_LINE) -# define ERR_R_${lib}_LIB ERR_${lib}_lib() - +#define ${lib}err(f, r) ERR_${lib}_error(0, (r), OPENSSL_FILE, OPENSSL_LINE) +#define ERR_R_${lib}_LIB ERR_${lib}_lib() EOF if ( ! $static ) { print OUT <<"EOF"; -# ifdef __cplusplus +#ifdef __cplusplus extern \"C\" { -# endif +#endif int ERR_load_${lib}_strings(void); void ERR_unload_${lib}_strings(void); void ERR_${lib}_error(int function, int reason, const char *file, int line); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif EOF } } - print OUT "\n/*\n * $lib reason codes.\n */\n"; + print OUT "/*\n * $lib reason codes.\n */\n"; foreach my $i ( @reasons ) { my $z = 48 - length($i); $z = 0 if $z < 0; @@ -484,13 +481,13 @@ sub help $rassigned{$lib} .= "$findcode:"; print STDERR "New Reason code $i\n" if $debug; } - printf OUT "#${indent}define $i%s $rcodes{$i}\n", " " x $z; + printf OUT "#define $i $rcodes{$i}\n"; } print OUT "\n"; while (length($indent) > 0) { $indent = substr $indent, 0, -1; - print OUT "#${indent}endif\n"; + print OUT "#endif\n"; } close OUT; } @@ -550,7 +547,7 @@ sub help } } print OUT <<"EOF"; -#${indent}ifndef OPENSSL_NO_ERR +#ifndef OPENSSL_NO_ERR static ${const}ERR_STRING_DATA ${lib}_str_reasons[] = { EOF @@ -568,26 +565,26 @@ sub help $strings{$i} = $rn; } my $lines; - $lines = " {ERR_PACK($pack_lib, 0, $i), \"$rn\"},"; - $lines = " {ERR_PACK($pack_lib, 0, $i),\n \"$rn\"}," - if length($lines) > 80; + $lines = " { ERR_PACK($pack_lib, 0, $i), \"$rn\" },"; + $lines = " { ERR_PACK($pack_lib, 0, $i),\n \"$rn\" }," + if length($lines) > 82; print OUT "$lines\n"; } print OUT <<"EOF"; - {0, NULL} + { 0, NULL } }; -#${indent}endif +#endif EOF if ( $internal ) { print OUT <<"EOF"; int ossl_err_load_${lib}_strings(void) { -#${indent}ifndef OPENSSL_NO_ERR +#ifndef OPENSSL_NO_ERR if (ERR_reason_error_string(${lib}_str_reasons[0].error) == NULL) ERR_load_strings_const(${lib}_str_reasons); -#${indent}endif +#endif return 1; } EOF @@ -642,7 +639,7 @@ sub help while (length($indent) > 1) { $indent = substr $indent, 0, -1; - print OUT "#${indent}endif\n"; + print OUT "#endif\n"; } if ($internal && $disablable) { print OUT <<"EOF"; diff --git a/deps/openssl/openssl/util/mkinstallvars.pl b/deps/openssl/openssl/util/mkinstallvars.pl index 706bf38d02dbd4..6e15282ddbff96 100644 --- a/deps/openssl/openssl/util/mkinstallvars.pl +++ b/deps/openssl/openssl/util/mkinstallvars.pl @@ -29,7 +29,7 @@ LIBDIR => [ qw(ENGINESDIR MODULESDIR PKGCONFIGDIR CMAKECONFIGDIR) ]); # For completeness, other expected variables -my @others = qw(VERSION LDLIBS); +my @others = qw(COMMENT VERSION LDLIBS); my %all = ( ); foreach (@absolutes) { $all{$_} = 1 } @@ -135,9 +135,10 @@ package OpenSSL::safe::installdata; } print <<_____; - \$VERSION \@LDLIBS + \$COMMENT \$VERSION \@LDLIBS ); +our \$COMMENT = '$values{COMMENT}->[0]'; _____ foreach my $k (@absolutes) { diff --git a/deps/openssl/openssl/util/platform_symbols/windows-symbols.txt b/deps/openssl/openssl/util/platform_symbols/windows-symbols.txt index ef82cb14c8c2c6..0f6cc11450cd03 100644 --- a/deps/openssl/openssl/util/platform_symbols/windows-symbols.txt +++ b/deps/openssl/openssl/util/platform_symbols/windows-symbols.txt @@ -1,236 +1,175 @@ -CryptGenRandom -RegisterEventSourceW -ReportEventW -CryptAcquireContextW -CryptReleaseContext -DeregisterEventSource +AcquireSRWLockExclusive +AcquireSRWLockShared +CertCloseStore CertFindCertificateInStore CertFreeCertificateContext CertOpenSystemStoreW -CertCloseStore -GetUserObjectInformationW -GetProcessWindowStation -MessageBoxW -GetCurrentProcess -ReadConsoleW -ReadConsoleA -SetConsoleMode -GetConsoleMode +CloseHandle +ConvertFiberToThread +ConvertThreadToFiberEx +CreateFiberEx CreateSemaphoreA -GetExitCodeThread -WaitForSingleObject -ReleaseSemaphore -GetCurrentProcessId -TryEnterCriticalSection -LeaveCriticalSection +CryptAcquireContextW +CryptGenRandom +CryptReleaseContext +DeleteCriticalSection +DeleteFiber +DeregisterEventSource +DisableThreadLibraryCalls EnterCriticalSection -InitializeCriticalSection -SystemTimeToFileTime +FindClose +FindFirstFileW +FindNextFileW +FormatMessageA +FreeLibrary +GetACP +GetConsoleMode +GetCurrentProcess +GetCurrentProcessId +GetCurrentThreadId +GetEnvironmentVariableW +GetExitCodeThread +GetFileType +GetLastError +GetModuleHandleExW +GetModuleHandleW +GetProcAddress +GetProcessWindowStation +GetStartupInfoW +GetStdHandle +GetSystemDirectoryA +GetSystemInfo GetSystemTime -TlsFree -TlsSetValue -TlsGetValue GetSystemTimeAsFileTime +GetUserObjectInformationW +InitializeCriticalSection +InitializeSListHead +InitializeSRWLock +IsDebuggerPresent +IsProcessorFeaturePresent +LeaveCriticalSection +LoadLibraryA +LoadLibraryW +MessageBoxW +MultiByteToWideChar +QueryPerformanceCounter +ReadConsoleA +ReadConsoleW +RegisterEventSourceW +ReleaseSRWLockExclusive +ReleaseSRWLockShared +ReleaseSemaphore +ReportEventW RtlCaptureContext RtlLookupFunctionEntry -UnhandledExceptionFilter +RtlVirtualUnwind +SetConsoleMode +SetLastError SetUnhandledExceptionFilter -IsProcessorFeaturePresent -IsDebuggerPresent -GetStartupInfoW -QueryPerformanceCounter -InitializeSListHead -DeleteCriticalSection +Sleep +SwitchToFiber +SystemTimeToFileTime TerminateProcess TlsAlloc -GetCurrentThreadId -AcquireSRWLockShared -AcquireSRWLockExclusive -RtlVirtualUnwind -ConvertFiberToThread -ConvertThreadToFiberEx -SwitchToFiber -DeleteFiber -CreateFiberEx -GetSystemDirectoryA -FreeLibrary -GetProcAddress -LoadLibraryA -FormatMessageA -GetLastError -SetLastError -CloseHandle -LoadLibraryW -GetEnvironmentVariableW -GetStdHandle -GetFileType -WriteFile -GetModuleHandleW -MultiByteToWideChar -WideCharToMultiByte -GetACP -GetModuleHandleExW -GetSystemInfo +TlsFree +TlsGetValue +TlsSetValue +TryEnterCriticalSection +UnhandledExceptionFilter VirtualAlloc -VirtualProtect VirtualFree VirtualLock -FindClose -FindFirstFileW -FindNextFileW -Sleep -InitializeSRWLock -ReleaseSRWLockExclusive -ReleaseSRWLockShared -__current_exception +VirtualProtect +WSAIoctl +WSASocketA +WaitForSingleObject +WideCharToMultiByte +WriteFile __C_specific_handler -wcsstr +__acrt_iob_func +__current_exception __current_exception_context -strlen -strstr -strchr -memmove -strrchr -memcmp -memset -memcpy -memchr __std_type_info_destroy_list -__stdio_common_vsprintf __stdio_common_vfprintf +__stdio_common_vsnprintf_s +__stdio_common_vsprintf +__stdio_common_vsprintf_s __stdio_common_vsscanf -ftell -fseek -fread -_fileno __stdio_common_vswprintf -_wfopen -fopen -setvbuf -fflush -ferror -feof -clearerr -setbuf -fclose -fputs -__acrt_iob_func -__stdio_common_vsprintf_s -fwrite -fgets -_setmode -strtoul -atoi -strtol -tolower -strspn -strcspn -strncpy -strpbrk -strncmp -strcmp -strcat_s -isspace -_strdup -isdigit -strncpy_s -strcpy_s -_gmtime64_s __timezone -_mktime64 -_time64 -qsort -malloc -realloc -calloc -free -terminate -signal -_initialize_narrow_environment _beginthreadex +_cexit +_chmod +_configure_narrow_argv +_crt_at_quick_exit +_crt_atexit +_dclass _endthreadex -_register_onexit_function -strerror_s +_errno _execute_onexit_table -raise -_crt_atexit _exit -_crt_at_quick_exit -_errno -_cexit -_initterm_e -_configure_narrow_argv +_fileno +_fstat64i32 +_get_osfhandle +_gmtime64_s +_initialize_narrow_environment _initialize_onexit_table _initterm +_initterm_e +_mktime64 +_register_onexit_function _seh_filter_dll -_chmod +_setmode _stat64i32 -_fstat64i32 +_strdup +_time64 +_wfopen +atoi +calloc +clearerr +fclose +feof +ferror +fflush +fgets +fopen +fputs +fread +free +fseek +ftell +fwrite getenv -GetStartupInfoW -RtlLookupFunctionEntry -RtlVirtualUnwind -UnhandledExceptionFilter -GetSystemTime -SystemTimeToFileTime -CloseHandle -InitializeCriticalSection -EnterCriticalSection -LeaveCriticalSection -TryEnterCriticalSection -DeleteCriticalSection -ReleaseSemaphore -WaitForSingleObject -WSASocketA -WSAIoctl -GetCurrentThreadId -SetUnhandledExceptionFilter -GetExitCodeThread -CreateSemaphoreA -SetLastError -GetLastError -GetCurrentProcess -TerminateProcess -IsProcessorFeaturePresent -QueryPerformanceCounter -RtlCaptureContext -GetCurrentProcessId -GetSystemTimeAsFileTime -DisableThreadLibraryCalls -InitializeSListHead -IsDebuggerPresent -GetModuleHandleW +isdigit +isspace +malloc +memchr +memcmp memcpy +memmove memset -__current_exception_context +qsort +raise +realloc +setbuf +setvbuf +signal +strcat_s strchr -memcmp -memchr +strcmp +strcpy_s +strcspn +strerror_s +strlen +strncmp +strncpy +strncpy_s +strpbrk +strrchr +strspn strstr -memmove -__std_type_info_destroy_list -__current_exception -__C_specific_handler -_errno -_endthreadex +strtol +strtoul terminate -_initterm -_initterm_e -_seh_filter_dll -_configure_narrow_argv -_initialize_narrow_environment -_initialize_onexit_table -_register_onexit_function -_execute_onexit_table -_crt_atexit -_crt_at_quick_exit -_cexit -_beginthreadex -_time64 -strncmp -strcmp -qsort -_stat64i32 -atoi -__stdio_common_vsprintf -_dclass +tolower +wcsstr diff --git a/deps/openssl/openssl/util/wrap.pl.in b/deps/openssl/openssl/util/wrap.pl.in index 2c9cb29fec04d8..5b6b2a51428f4e 100644 --- a/deps/openssl/openssl/util/wrap.pl.in +++ b/deps/openssl/openssl/util/wrap.pl.in @@ -79,6 +79,7 @@ if ($ARGV[0] eq '-jitter') { $std_openssl_conf_include = catdir($there, 'providers'); } +local $ENV{OPENSSL_RUNNING_UNIT_TESTS} = "yes"; local $ENV{OPENSSL_CONF_INCLUDE} = $std_openssl_conf_include if defined $std_openssl_conf_include diff --git a/deps/perfetto/BUILD.gn b/deps/perfetto/BUILD.gn new file mode 100644 index 00000000000000..df485c384d920a --- /dev/null +++ b/deps/perfetto/BUILD.gn @@ -0,0 +1,14 @@ +############################################################################## +# # +# DO NOT EDIT THIS FILE! # +# # +############################################################################## + +# This file is used by GN for building, which is NOT the build system used for +# building official binaries. +# Please modify the gyp files if you are making changes to build system. + +import("unofficial.gni") + +perfetto_sdk_gn_build("perfetto_sdk") { +} diff --git a/deps/perfetto/LICENSE b/deps/perfetto/LICENSE new file mode 100644 index 00000000000000..cbdc2881d57d5a --- /dev/null +++ b/deps/perfetto/LICENSE @@ -0,0 +1,265 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +------------------ + +Files: * except those files noted below + + Copyright (c) 2017, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +------------------ + +Files: src/trace_processor/perfetto_sql/stdlib/chromium/*, protos/third_party/chromium/*, test/trace_processor/diff_tests/stdlib/chrome/* + + Copyright 2015 The Chromium Authors + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +------------------ + +Files: src/trace_processor/perfetto_sql/preprocessor/preprocessor_grammar.{c, h} + +The author disclaims copyright to this source code. In place of a legal notice, here is a blessing: + +May you do good and not evil. +May you find forgiveness for yourself and forgive others. +May you share freely, never taking more than you give. + + +------------------ + +Files: src/base/intrusive_tree.cc + +$OpenBSD: tree.h,v 1.31 2023/03/08 04:43:09 guenther Exp $ + +Copyright 2002 Niels Provos +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/deps/perfetto/VERSION b/deps/perfetto/VERSION new file mode 100644 index 00000000000000..517ac763657c22 --- /dev/null +++ b/deps/perfetto/VERSION @@ -0,0 +1 @@ +54.0 diff --git a/deps/perfetto/perfetto.gyp b/deps/perfetto/perfetto.gyp new file mode 100644 index 00000000000000..3836f3424cbd0e --- /dev/null +++ b/deps/perfetto/perfetto.gyp @@ -0,0 +1,22 @@ +{ + 'variables': { + 'perfetto_sdk_sources': [ + 'sdk/perfetto.cc', + 'sdk/perfetto.h', + ] + }, + 'targets': [ + { + 'target_name': 'perfetto_sdk', + 'type': 'static_library', + 'include_dirs': [ 'sdk' ], + 'direct_dependent_settings': { + # Use like `#include "perfetto.h"` + 'include_dirs': [ 'sdk' ], + }, + 'sources': [ + '<@(perfetto_sdk_sources)', + ], + }, + ] +} diff --git a/deps/perfetto/sdk/perfetto.cc b/deps/perfetto/sdk/perfetto.cc new file mode 100644 index 00000000000000..2ccd11f7b8313d --- /dev/null +++ b/deps/perfetto/sdk/perfetto.cc @@ -0,0 +1,82755 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// This file is automatically generated by gen_amalgamated. Do not edit. + +// gen_amalgamated: predefined macros +#if !defined(PERFETTO_IMPLEMENTATION) +#define PERFETTO_IMPLEMENTATION +#endif +#include "perfetto.h" +// gen_amalgamated begin source: src/base/default_platform.cc +// gen_amalgamated begin header: include/perfetto/ext/base/platform.h +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_PLATFORM_H_ +#define INCLUDE_PERFETTO_EXT_BASE_PLATFORM_H_ + +namespace perfetto { +namespace base { +namespace platform { + +// Executed before entering a syscall (e.g. poll, read, write etc) which might +// block. +// This is overridden in Google internal builds for dealing with userspace +// scheduling. +void BeforeMaybeBlockingSyscall(); + +// Executed after entering a syscall (e.g. poll, read, write etc) which might +// block. +// This is overridden in Google internal builds for dealing with userspace +// scheduling. +void AfterMaybeBlockingSyscall(); + +} // namespace platform +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_PLATFORM_H_ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/platform.h" + +namespace perfetto { +namespace base { +namespace platform { + +// This is a no-op outside of Google3 where we have some custom logic to deal +// with the userspace scheduler. +void BeforeMaybeBlockingSyscall() {} + +// This is a no-op outside of Google3 where we have some custom logic to deal +// with the userspace scheduler. +void AfterMaybeBlockingSyscall() {} + +} // namespace platform +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/android_utils.cc +// gen_amalgamated begin header: include/perfetto/ext/base/android_utils.h +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_ANDROID_UTILS_H_ +#define INCLUDE_PERFETTO_EXT_BASE_ANDROID_UTILS_H_ + +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +namespace perfetto { +namespace base { + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +// Returns the value of the Android system property named `name`. If the +// property does not exist, returns an empty string (a non-existing property is +// the same as a property with an empty value for this API). +std::string GetAndroidProp(const char* name); + +#endif // PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +struct Utsname { + std::string sysname; + std::string version; + std::string machine; + std::string release; +}; + +struct SystemInfo { + std::optional timezone_off_mins; + std::optional utsname_info; + std::optional page_size; + std::optional num_cpus; + std::optional system_ram_bytes; + std::string android_build_fingerprint; + std::string android_device_manufacturer; + std::optional android_sdk_version; + std::string android_soc_model; + std::string android_guest_soc_model; + std::string android_hardware_revision; + std::string android_storage_model; + std::string android_ram_model; + std::string android_serial_console; +}; + +// Returns the device's utsname information. +Utsname GetUtsname(); + +// Returns the device's system information. +SystemInfo GetSystemInfo(); + +// Returns the perfetto machine name. The PERFETTO_MACHINE_NAME env variable +// has the highest precedence in setting the machine name. In Android systems, +// if the env variable isn't set then the traced.machine_name system property +// is used. If no value is externally set, then the OS system name +// (see `uname -s`) is used as the default machine name. +std::string GetPerfettoMachineName(); + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_ANDROID_UTILS_H_ +// gen_amalgamated begin header: include/perfetto/ext/base/string_utils.h +// gen_amalgamated begin header: include/perfetto/ext/base/string_view.h +// gen_amalgamated begin header: include/perfetto/ext/base/fnv_hash.h +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_FNV_HASH_H_ +#define INCLUDE_PERFETTO_EXT_BASE_FNV_HASH_H_ + +#include +#include +#include +#include +#include + +namespace perfetto::base { + +// A helper class which computes a 64-bit hash of the input data. +// The algorithm used is FNV-1a as it is fast and easy to implement and has +// relatively few collisions. +// WARNING: This hash function should not be used for any cryptographic purpose. +class FnvHasher { + public: + // Creates an empty hash object + constexpr FnvHasher() = default; + + // Hashes a numeric value. + template < + typename T, + typename std::enable_if::value, bool>::type = true> + void Update(T data) { + Update(reinterpret_cast(&data), sizeof(data)); + } + + constexpr void Update(char c) { return Update(&c, 1); } + + // Using the loop instead of "Update(str, strlen(str))" to avoid looping twice + constexpr void Update(const char* str) { + for (const auto* p = str; *p; ++p) + Update(*p); + } + + // Hashes a byte array. + constexpr void Update(const char* data, size_t size) { + for (size_t i = 0; i < size; i++) { + result_ ^= static_cast(data[i]); + // Note: Arithmetic overflow of unsigned integers is well defined in C++ + // standard unlike signed integers. + // https://stackoverflow.com/a/41280273 + result_ *= kFnv1a64Prime; + } + } + + // Allow hashing anything that has `data` and `size` and has the kHashable + // trait (e.g., base::StringView). + template > + constexpr void Update(const T& t) { + if constexpr (std::is_member_function_pointer_v) { + Update(t.data(), t.size()); + } else { + Update(t.data, t.size); + } + } + + constexpr void Update(std::string_view s) { Update(s.data(), s.size()); } + + constexpr uint64_t digest() const { return result_; } + + // Usage: + // uint64_t hashed_value = + // FnvHasher::Combine(33, false, "ABC", 458L, 3u, 'x'); + template + static constexpr uint64_t Combine(Ts&&... args) { + FnvHasher hasher; + hasher.UpdateAll(std::forward(args)...); + return hasher.digest(); + } + + // Creates a hasher with `args` already hashed. + // + // Usage: + // FnvHasher partial = FnvHasher::CreatePartial(33, false, "ABC", 458L); + template + static constexpr FnvHasher CreatePartial(Ts&&... args) { + FnvHasher hasher; + hasher.UpdateAll(std::forward(args)...); + return hasher; + } + + // `hasher.UpdateAll(33, false, "ABC")` is shorthand for: + // `hasher.Update(33); hasher.Update(false); hasher.Update("ABC");` + constexpr void UpdateAll() {} + + template + constexpr void UpdateAll(T&& arg, Ts&&... args) { + Update(arg); + UpdateAll(std::forward(args)...); + } + + private: + static constexpr uint64_t kFnv1a64OffsetBasis = 0xcbf29ce484222325; + static constexpr uint64_t kFnv1a64Prime = 0x100000001b3; + + uint64_t result_ = kFnv1a64OffsetBasis; +}; + +// base::FnvHash uses base::FnvHasher for integer values and falls back to +// std::hash for other types. This is needed as std::hash for integers is just +// the identity function and Perfetto uses open-addressing hash table, which are +// very sensitive to hash quality and are known to degrade in performance +// when using std::hash. +template +struct FnvHash { + // Version for ints, using base::FnvHasher. + template + auto operator()(const U& x) -> + typename std::enable_if::value, size_t>::type + const { + return FnvHasher::Combine(x); + } + + // Version for non-ints, falling back to std::hash. + template + auto operator()(const U& x) -> + typename std::enable_if::value, size_t>::type + const { + return std::hash()(x); + } +}; + +} // namespace perfetto::base + +#endif // INCLUDE_PERFETTO_EXT_BASE_FNV_HASH_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_STRING_VIEW_H_ +#define INCLUDE_PERFETTO_EXT_BASE_STRING_VIEW_H_ + +#include + +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/fnv_hash.h" + +namespace perfetto { +namespace base { + +// A string-like object that refers to a non-owned piece of memory. +// Strings are internally NOT null terminated. +class StringView { + public: + // Allow hashing with base::FnvHash. + static constexpr bool kHashable = true; + static constexpr size_t npos = static_cast(-1); + + StringView() : data_(nullptr), size_(0) {} + StringView(const StringView&) = default; + StringView& operator=(const StringView&) = default; + StringView(const char* data, size_t size) : data_(data), size_(size) { + PERFETTO_DCHECK(size == 0 || data != nullptr); + } + + // Allow implicit conversion from any class that has a |data| and |size| field + // and has the kConvertibleToStringView trait (e.g., protozero::ConstChars). + template > + StringView(const T& x) : StringView(x.data, x.size) { + PERFETTO_DCHECK(x.size == 0 || x.data != nullptr); + } + + // Creates a StringView from a null-terminated C string. + // Deliberately not "explicit". + StringView(const char* cstr) : data_(cstr), size_(strlen(cstr)) { + PERFETTO_DCHECK(cstr != nullptr); + } + + StringView(std::string_view str) : data_(str.data()), size_(str.size()) {} + + // This instead has to be explicit, as creating a StringView out of a + // std::string can be subtle. + explicit StringView(const std::string& str) + : data_(str.data()), size_(str.size()) {} + + bool empty() const { return size_ == 0; } + size_t size() const { return size_; } + const char* data() const { return data_; } + const char* begin() const { return data_; } + const char* end() const { return data_ + size_; } + + char at(size_t pos) const { + PERFETTO_DCHECK(pos < size_); + return data_[pos]; + } + + size_t find(char c, size_t start_pos = 0) const { + for (size_t i = start_pos; i < size_; ++i) { + if (data_[i] == c) + return i; + } + return npos; + } + + size_t find(const StringView& str, size_t start_pos = 0) const { + if (start_pos > size()) + return npos; + auto it = std::search(begin() + start_pos, end(), str.begin(), str.end()); + size_t pos = static_cast(it - begin()); + return pos + str.size() <= size() ? pos : npos; + } + + size_t find(const char* str, size_t start_pos = 0) const { + return find(StringView(str), start_pos); + } + + size_t rfind(char c) const { + for (size_t i = size_; i > 0; --i) { + if (data_[i - 1] == c) + return i - 1; + } + return npos; + } + + StringView substr(size_t pos, size_t count = npos) const { + if (pos >= size_) + return StringView("", 0); + size_t rcount = std::min(count, size_ - pos); + return StringView(data_ + pos, rcount); + } + + bool CaseInsensitiveEq(const StringView& other) const { + if (size() != other.size()) + return false; + if (size() == 0) + return true; +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return _strnicmp(data(), other.data(), size()) == 0; +#else + return strncasecmp(data(), other.data(), size()) == 0; +#endif + } + + bool CaseInsensitiveOneOf(const std::vector& others) const { + for (const StringView& other : others) { + if (CaseInsensitiveEq(other)) { + return true; + } + } + return false; + } + + bool StartsWith(const StringView& other) const { + if (other.size() == 0) + return true; + if (size() == 0) + return false; + if (other.size() > size()) + return false; + return memcmp(data(), other.data(), other.size()) == 0; + } + + bool EndsWith(const StringView& other) const { + if (other.size() == 0) + return true; + if (size() == 0) + return false; + if (other.size() > size()) + return false; + size_t off = size() - other.size(); + return memcmp(data() + off, other.data(), other.size()) == 0; + } + + std::string ToStdString() const { + return size_ == 0 ? "" : std::string(data_, size_); + } + + uint64_t Hash() const { + base::FnvHasher hasher; + hasher.Update(data_, size_); + return hasher.digest(); + } + + private: + const char* data_ = nullptr; + size_t size_ = 0; +}; + +inline bool operator==(const StringView& x, const StringView& y) { + if (x.size() != y.size()) + return false; + if (x.size() == 0) + return true; + return memcmp(x.data(), y.data(), x.size()) == 0; +} + +inline bool operator!=(const StringView& x, const StringView& y) { + return !(x == y); +} + +inline bool operator<(const StringView& x, const StringView& y) { + auto size = std::min(x.size(), y.size()); + if (size == 0) + return x.size() < y.size(); + int result = memcmp(x.data(), y.data(), size); + return result < 0 || (result == 0 && x.size() < y.size()); +} + +inline bool operator>=(const StringView& x, const StringView& y) { + return !(x < y); +} + +inline bool operator>(const StringView& x, const StringView& y) { + return y < x; +} + +inline bool operator<=(const StringView& x, const StringView& y) { + return !(y < x); +} + +} // namespace base +} // namespace perfetto + +template <> +struct std::hash<::perfetto::base::StringView> { + size_t operator()(const ::perfetto::base::StringView& sv) const { + return static_cast(sv.Hash()); + } +}; + +#endif // INCLUDE_PERFETTO_EXT_BASE_STRING_VIEW_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_STRING_UTILS_H_ +#define INCLUDE_PERFETTO_EXT_BASE_STRING_UTILS_H_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/ext/base/string_view.h" + +namespace perfetto { +namespace base { + +inline char Lowercase(char c) { + return ('A' <= c && c <= 'Z') ? static_cast(c - ('A' - 'a')) : c; +} + +inline char Uppercase(char c) { + return ('a' <= c && c <= 'z') ? static_cast(c + ('A' - 'a')) : c; +} + +// Returns true if the character is an ASCII whitespace character. +// This is a locale-independent version that only considers ASCII whitespace: +// space (0x20), tab (0x09), newline (0x0A), vertical tab (0x0B), +// form feed (0x0C), and carriage return (0x0D). +inline bool IsSpace(char c) { + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || + c == '\r'; +} + +inline std::optional CStringToUInt32(const char* s, int base = 10) { + char* endptr = nullptr; + auto value = static_cast(strtoul(s, &endptr, base)); + return (*s && !*endptr) ? std::make_optional(value) : std::nullopt; +} + +inline std::optional CStringToInt32(const char* s, int base = 10) { + char* endptr = nullptr; + auto value = static_cast(strtol(s, &endptr, base)); + return (*s && !*endptr) ? std::make_optional(value) : std::nullopt; +} + +// Note: it saturates to 7fffffffffffffff if parsing a hex number >= 0x8000... +inline std::optional CStringToInt64(const char* s, int base = 10) { + char* endptr = nullptr; + auto value = static_cast(strtoll(s, &endptr, base)); + return (*s && !*endptr) ? std::make_optional(value) : std::nullopt; +} + +inline std::optional CStringToUInt64(const char* s, int base = 10) { + char* endptr = nullptr; + auto value = static_cast(strtoull(s, &endptr, base)); + return (*s && !*endptr) ? std::make_optional(value) : std::nullopt; +} + +double StrToD(const char* nptr, char** endptr); + +inline std::optional CStringToDouble(const char* s) { + char* endptr = nullptr; + double value = StrToD(s, &endptr); + std::optional result(std::nullopt); + if (*s != '\0' && *endptr == '\0') + result = value; + return result; +} + +inline std::optional StringToUInt32(const std::string& s, + int base = 10) { + return CStringToUInt32(s.c_str(), base); +} + +inline std::optional StringToInt32(const std::string& s, + int base = 10) { + return CStringToInt32(s.c_str(), base); +} + +inline std::optional StringToUInt64(const std::string& s, + int base = 10) { + return CStringToUInt64(s.c_str(), base); +} + +inline std::optional StringToInt64(const std::string& s, + int base = 10) { + return CStringToInt64(s.c_str(), base); +} + +inline std::optional StringToDouble(const std::string& s) { + return CStringToDouble(s.c_str()); +} + +template +inline std::optional StringViewToNumber(const base::StringView& sv, + int base = 10) { + // std::from_chars() does not regonize the leading '+' character and only + // recognizes '-' so remove the '+' if it exists to avoid errors and match + // the behavior of the other string conversion utilities above. + size_t start_offset = !sv.empty() && sv.at(0) == '+' ? 1 : 0; + T value; + auto result = + std::from_chars(sv.begin() + start_offset, sv.end(), value, base); + if (result.ec == std::errc() && result.ptr == sv.end()) { + return value; + } else { + return std::nullopt; + } +} + +inline std::optional StringViewToUInt32(const base::StringView& sv, + int base = 10) { + // std::from_chars() does not recognize the leading '-' character for + // unsigned conversions, but strtol does. To Mimic the behavior of strtol, + // attempt a signed converion if we see a leading '-', and then cast the + // result back to unsigned. + if (sv.size() > 0 && sv.at(0) == '-') { + return static_cast >( + StringViewToNumber(sv, base)); + } else { + return StringViewToNumber(sv, base); + } +} + +inline std::optional StringViewToInt32(const base::StringView& sv, + int base = 10) { + return StringViewToNumber(sv, base); +} + +inline std::optional StringViewToUInt64(const base::StringView& sv, + int base = 10) { + // std::from_chars() does not recognize the leading '-' character for + // unsigned conversions, but strtol does. To Mimic the behavior of strtol, + // attempt a signed converion if we see a leading '-', and then cast the + // result back to unsigned. + if (sv.size() > 0 && sv.at(0) == '-') { + return static_cast >( + StringViewToNumber(sv, base)); + } else { + return StringViewToNumber(sv, base); + } +} + +inline std::optional StringViewToInt64(const base::StringView& sv, + int base = 10) { + return StringViewToNumber(sv, base); +} + +// TODO: As of Clang 19.0 std::from_chars is unimplemented for type double +// despite being part of C++17 standard, and already being supported by GCC and +// MSVC. Enable this once we have double support in Clang. +// inline std::optional StringViewToDouble(const base::StringView& sv) { +// return StringViewToNumber(sv); +// } + +bool StartsWith(const std::string& str, const std::string& prefix); +bool EndsWith(const std::string& str, const std::string& suffix); +bool StartsWithAny(const std::string& str, + const std::vector& prefixes); +bool Contains(const std::string& haystack, const std::string& needle); +bool Contains(const std::string& haystack, char needle); +bool Contains(const std::vector& haystack, + const std::string& needle); +size_t Find(const StringView& needle, const StringView& haystack); +bool CaseInsensitiveEqual(const std::string& first, const std::string& second); +std::string Join(const std::vector& parts, + const std::string& delim); +std::vector SplitString(const std::string& text, + const std::string& delimiter); +std::string StripPrefix(const std::string& str, const std::string& prefix); +std::string StripSuffix(const std::string& str, const std::string& suffix); +std::string TrimWhitespace(const std::string& str); +std::string ToLower(const std::string& str); +std::string ToUpper(const std::string& str); +std::string StripChars(const std::string& str, + const std::string& chars, + char replacement); +std::string ToHex(const char* data, size_t size); +inline std::string ToHex(const std::string& s) { + return ToHex(s.c_str(), s.size()); +} +std::string IntToHexString(uint32_t number); +std::string Uint64ToHexString(uint64_t number); +std::string Uint64ToHexStringNoPrefix(uint64_t number); +std::string ReplaceAll(std::string str, + const std::string& to_replace, + const std::string& replacement); + +// Checks if all characters in the input string view `str` are ASCII. +// +// If so, the function returns true and `output` is not modified. +// If `str` contains non-ASCII characters, the function returns false, +// removes invalid UTF-8 characters from `str`, and stores the result in +// `output`. +bool CheckAsciiAndRemoveInvalidUTF8(base::StringView str, std::string& output); + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +bool WideToUTF8(const std::wstring& source, std::string& output); +bool UTF8ToWide(const std::string& source, std::wstring& output); +#endif // PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + +// A BSD-style strlcpy without the return value. +// Copies at most |dst_size|-1 characters. Unlike strncpy, it always \0 +// terminates |dst|, as long as |dst_size| is not 0. +// Unlike strncpy and like strlcpy it does not zero-pad the rest of |dst|. +// Returns nothing. The BSD strlcpy returns the size of |src|, which might +// be > |dst_size|. Anecdotal experience suggests people assume the return value +// is the number of bytes written in |dst|. That assumption can lead to +// dangerous bugs. +// In order to avoid being subtly uncompliant with strlcpy AND avoid misuse, +// the choice here is to return nothing. +inline void StringCopy(char* dst, const char* src, size_t dst_size) { + for (size_t i = 0; i < dst_size; ++i) { + if ((dst[i] = src[i]) == '\0') { + return; // We hit and copied the null terminator. + } + } + + // We were left off at dst_size. We over copied 1 byte. Null terminate. + if (PERFETTO_LIKELY(dst_size > 0)) + dst[dst_size - 1] = 0; +} + +// Like snprintf() but returns the number of chars *actually* written (without +// counting the null terminator) NOT "the number of chars which would have been +// written to the final string if enough space had been available". +// This should be used in almost all cases when the caller uses the return value +// of snprintf(). If the return value is not used, there is no benefit in using +// this wrapper, as this just calls snprintf() and mangles the return value. +// It always null-terminates |dst| (even in case of errors), unless +// |dst_size| == 0. +// Examples: +// SprintfTrunc(x, 4, "123whatever"): returns 3 and writes "123\0". +// SprintfTrunc(x, 4, "123"): returns 3 and writes "123\0". +// SprintfTrunc(x, 3, "123"): returns 2 and writes "12\0". +// SprintfTrunc(x, 2, "123"): returns 1 and writes "1\0". +// SprintfTrunc(x, 1, "123"): returns 0 and writes "\0". +// SprintfTrunc(x, 0, "123"): returns 0 and writes nothing. +// NOTE: This means that the caller has no way to tell when truncation happens +// vs the edge case of *just* fitting in the buffer. +size_t SprintfTrunc(char* dst, size_t dst_size, const char* fmt, ...) + PERFETTO_PRINTF_FORMAT(3, 4); + +// Line number starts from 1 +struct LineWithOffset { + base::StringView line; + uint32_t line_offset; + uint32_t line_num; +}; + +// For given string and offset Pfinds a line with character for +// which offset points, what number is this line (starts from 1), and the offset +// inside this line. returns std::nullopt if the offset points to +// line break character or exceeds string length. +std::optional FindLineWithOffset(base::StringView str, + uint32_t offset); + +// A helper class to facilitate construction and usage of write-once stack +// strings. +// Example usage: +// StackString<32> x("format %d %s", 42, string_arg); +// TakeString(x.c_str() | x.string_view() | x.ToStdString()); +// Rather than char x[32] + sprintf. +// Advantages: +// - Avoids useless zero-fills caused by people doing `char buf[32] {}` (mainly +// by fearing unknown snprintf failure modes). +// - Makes the code more robust in case of snprintf truncations (len() and +// string_view() will return the truncated length, unlike snprintf). +template +class StackString { + public: + explicit PERFETTO_PRINTF_FORMAT(/* 1=this */ 2, 3) + StackString(const char* fmt, ...) { + buf_[0] = '\0'; + va_list args; + va_start(args, fmt); + int res = vsnprintf(buf_, sizeof(buf_), fmt, args); + va_end(args); + buf_[sizeof(buf_) - 1] = '\0'; + len_ = res < 0 ? 0 : std::min(static_cast(res), sizeof(buf_) - 1); + } + + StringView string_view() const { return StringView(buf_, len_); } + std::string ToStdString() const { return std::string(buf_, len_); } + const char* c_str() const { return buf_; } + size_t len() const { return len_; } + char* mutable_data() { return buf_; } + + private: + char buf_[N]; + size_t len_ = 0; // Does not include the \0. +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_STRING_UTILS_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/android_utils.h" + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +#include + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +#include +#endif + +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/base/time.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/string_utils.h" + +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_WASM) +#include +#include +#endif + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +#include +#endif + +namespace perfetto { +namespace base { + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +std::string GetAndroidProp(const char* name) { + std::string ret; +#if __ANDROID_API__ >= 26 + const prop_info* pi = __system_property_find(name); + if (!pi) { + return ret; + } + __system_property_read_callback( + pi, + [](void* dst_void, const char*, const char* value, uint32_t) { + std::string& dst = *static_cast(dst_void); + dst = value; + }, + &ret); +#else // __ANDROID_API__ < 26 + char value_buf[PROP_VALUE_MAX]; + int len = __system_property_get(name, value_buf); + if (len > 0 && static_cast(len) < sizeof(value_buf)) { + ret = std::string(value_buf, static_cast(len)); + } +#endif + return ret; +} + +#endif // PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +Utsname GetUtsname() { + Utsname utsname_info; +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_WASM) + struct utsname uname_info; + if (uname(&uname_info) == 0) { + utsname_info.sysname = uname_info.sysname; + utsname_info.version = uname_info.version; + utsname_info.machine = uname_info.machine; + utsname_info.release = uname_info.release; + } else { + PERFETTO_ELOG("Unable to read Utsname information"); + } +#endif // !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return utsname_info; +} + +SystemInfo GetSystemInfo() { + SystemInfo info; + + info.timezone_off_mins = GetTimezoneOffsetMins(); + +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_WASM) + + info.utsname_info = GetUtsname(); + info.page_size = static_cast(sysconf(_SC_PAGESIZE)); + info.num_cpus = static_cast(sysconf(_SC_NPROCESSORS_CONF)); + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + // Use the Linux-specific sysinfo() system call on Linux and Android. + // https://man7.org/linux/man-pages/man2/sysinfo.2.html + struct sysinfo sys_info; + if (sysinfo(&sys_info) == 0) { + info.system_ram_bytes = + static_cast(sys_info.totalram) * sys_info.mem_unit; + } +#else + // POSIX Fallback (macOS, BSD, etc.): Use sysconf() to get physical pages. + long pages = sysconf(_SC_PHYS_PAGES); + if (pages > 0 && info.page_size.has_value()) { + info.system_ram_bytes = static_cast(pages) * (*info.page_size); + } +#endif +#endif // !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + info.android_build_fingerprint = GetAndroidProp("ro.build.fingerprint"); + if (info.android_build_fingerprint.empty()) { + PERFETTO_ELOG("Unable to read ro.build.fingerprint"); + } + + info.android_device_manufacturer = GetAndroidProp("ro.product.manufacturer"); + if (info.android_device_manufacturer.empty()) { + PERFETTO_ELOG("Unable to read ro.product.manufacturer"); + } + + std::string sdk_str_value = GetAndroidProp("ro.build.version.sdk"); + info.android_sdk_version = StringToUInt64(sdk_str_value); + if (!info.android_sdk_version.has_value()) { + PERFETTO_ELOG("Unable to read ro.build.version.sdk"); + } + + info.android_soc_model = GetAndroidProp("ro.soc.model"); + if (info.android_soc_model.empty()) { + PERFETTO_ELOG("Unable to read ro.soc.model"); + } + + // guest_soc model is not always present + info.android_guest_soc_model = GetAndroidProp("ro.boot.guest_soc.model"); + + info.android_hardware_revision = GetAndroidProp("ro.boot.hardware.revision"); + if (info.android_hardware_revision.empty()) { + PERFETTO_ELOG("Unable to read ro.boot.hardware.revision"); + } + + info.android_storage_model = GetAndroidProp("ro.boot.hardware.ufs"); + if (info.android_storage_model.empty()) { + PERFETTO_ELOG("Unable to read ro.boot.hardware.ufs"); + } + + info.android_ram_model = GetAndroidProp("ro.boot.hardware.ddr"); + if (info.android_ram_model.empty()) { + PERFETTO_ELOG("Unable to read ro.boot.hardware.ddr"); + } + + info.android_serial_console = GetAndroidProp("init.svc.console"); + if (info.android_serial_console.empty()) { + PERFETTO_ELOG("Unable to read init.svc.console"); + } +#endif // PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + + return info; +} + +std::string GetPerfettoMachineName() { + const char* env_name = getenv("PERFETTO_MACHINE_NAME"); + if (env_name) { + return env_name; + } +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + std::string name = base::GetAndroidProp("traced.machine_name"); + if (name.empty()) { + name = GetUtsname().sysname; + } + return name; +#else + return GetUtsname().sysname; +#endif +} + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/base64.cc +// gen_amalgamated begin header: include/perfetto/ext/base/base64.h +// gen_amalgamated begin header: include/perfetto/ext/base/utils.h +// gen_amalgamated begin header: include/perfetto/ext/base/sys_types.h +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_SYS_TYPES_H_ +#define INCLUDE_PERFETTO_EXT_BASE_SYS_TYPES_H_ + +// This headers deals with sys types commonly used in the codebase that are +// missing on Windows. + +#include // IWYU pragma: export +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + +#ifdef __MINGW32__ + +using uid_t = int; +using gid_t = int; + +#else + +#if !PERFETTO_BUILDFLAG(PERFETTO_COMPILER_GCC) +// MinGW has these. clang-cl and MSVC, which use just the Windows SDK, don't. +using uid_t = int; +using gid_t = int; +using pid_t = int; +#endif // !GCC + +#if defined(_WIN64) +using ssize_t = int64_t; +#else +using ssize_t = long; +#endif // _WIN64 + +#endif // __MINGW32__ + +#endif // OS_WIN + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +// From libcutils' android_filesystem_config.h +#ifndef AID_ROOT +#define AID_ROOT 0 +#endif +#ifndef AID_STATSD +#define AID_STATSD 1066 +#endif +#ifndef AID_SHELL +#define AID_SHELL 2000 +#endif +#endif + +namespace perfetto { +namespace base { + +// The machine ID used in the tracing core. +using MachineID = uint32_t; +// The default value reserved for the host trace. +constexpr MachineID kDefaultMachineID = 0; + +constexpr uid_t kInvalidUid = static_cast(-1); +constexpr pid_t kInvalidPid = static_cast(-1); + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_SYS_TYPES_H_ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_UTILS_H_ +#define INCLUDE_PERFETTO_EXT_BASE_UTILS_H_ + +#include +#include +#include +#include + +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/sys_types.h" + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +// Even if Windows has errno.h, the all syscall-restart behavior does not apply. +// Trying to handle EINTR can cause more harm than good if errno is left stale. +// Chromium does the same. +#define PERFETTO_EINTR(x) (x) +#else +#define PERFETTO_EINTR(x) \ + ([&] { \ + decltype(x) eintr_wrapper_result; \ + do { \ + eintr_wrapper_result = (x); \ + } while (eintr_wrapper_result == -1 && errno == EINTR); \ + return eintr_wrapper_result; \ + }()) +#endif + +namespace perfetto { +namespace base { + +namespace internal { +extern std::atomic g_cached_page_size; +uint32_t GetSysPageSizeSlowpath(); +} // namespace internal + +// Returns the system's page size. Use this when dealing with mmap, madvise and +// similar mm-related syscalls. +// This function might be called in hot paths. Avoid calling getpagesize() all +// the times, in many implementations getpagesize() calls sysconf() which is +// not cheap. +inline uint32_t GetSysPageSize() { + const uint32_t page_size = + internal::g_cached_page_size.load(std::memory_order_relaxed); + return page_size != 0 ? page_size : internal::GetSysPageSizeSlowpath(); +} + +template +constexpr size_t ArraySize(const T (&)[TSize]) { + return TSize; +} + +// Function object which invokes 'free' on its parameter, which must be +// a pointer. Can be used to store malloc-allocated pointers in std::unique_ptr: +// +// std::unique_ptr foo_ptr( +// static_cast(malloc(sizeof(int)))); +struct FreeDeleter { + inline void operator()(void* ptr) const { free(ptr); } +}; + +template +constexpr T AssumeLittleEndian(T value) { +#if !PERFETTO_IS_LITTLE_ENDIAN() + static_assert(false, "Unimplemented on big-endian archs"); +#endif + return value; +} + +// Round up |size| to a multiple of |alignment| (must be a power of two). +inline constexpr size_t AlignUp(size_t size, size_t alignment) { + return (size + alignment - 1) & ~(alignment - 1); +} + +// TODO(primiano): clean this up and move all existing usages to the constexpr +// version above. +template +constexpr size_t AlignUp(size_t size) { + static_assert((alignment & (alignment - 1)) == 0, "alignment must be a pow2"); + return AlignUp(size, alignment); +} + +inline bool IsAgain(int err) { + return err == EAGAIN || err == EWOULDBLOCK; +} + +// setenv(2)-equivalent. Deals with Windows vs Posix discrepancies. +void SetEnv(const std::string& key, const std::string& value); + +// unsetenv(2)-equivalent. Deals with Windows vs Posix discrepancies. +void UnsetEnv(const std::string& key); + +// Calls mallopt(M_PURGE, 0) on Android. Does nothing on other platforms. +// This forces the allocator to release freed memory. This is used to work +// around various Scudo inefficiencies. See b/170217718. +void MaybeReleaseAllocatorMemToOS(); + +// geteuid() on POSIX OSes, returns 0 on Windows (See comment in utils.cc). +uid_t GetCurrentUserId(); + +// Forks the process. +// Parent: prints the PID of the child, calls |parent_cb| and exits from the +// process with its return value. +// Child: redirects stdio onto /dev/null, chdirs into / and returns. +void Daemonize(std::function parent_cb); + +// Returns the path of the current executable, e.g. /foo/bar/exe. +std::string GetCurExecutablePath(); + +// Returns the directory where the current executable lives in, e.g. /foo/bar. +// This is independent of cwd(). +std::string GetCurExecutableDir(); + +// Memory returned by AlignedAlloc() must be freed via AlignedFree() not just +// free. It makes a difference on Windows where _aligned_malloc() and +// _aligned_free() must be paired. +// Prefer using the AlignedAllocTyped() below which takes care of the pairing. +void* AlignedAlloc(size_t alignment, size_t size); +void AlignedFree(void*); + +// Detects Sync-mode MTE (currently being tested in some Android builds). +// This is known to use extra memory for the stack history buffer. +bool IsSyncMemoryTaggingEnabled(); + +// A RAII version of the above, which takes care of pairing Aligned{Alloc,Free}. +template +struct AlignedDeleter { + inline void operator()(T* ptr) const { AlignedFree(ptr); } +}; + +// The remove_extent here and below is to allow defining unique_ptr. +// As per https://en.cppreference.com/w/cpp/memory/unique_ptr the Deleter takes +// always a T*, not a T[]*. +template +using AlignedUniquePtr = + std::unique_ptr::type>>; + +template +AlignedUniquePtr AlignedAllocTyped(size_t n_membs) { + using TU = typename std::remove_extent::type; + return AlignedUniquePtr( + static_cast(AlignedAlloc(alignof(TU), sizeof(TU) * n_membs))); +} + +// A RAII wrapper to invoke a function when leaving a function/scope. +template +class OnScopeExitWrapper { + public: + explicit OnScopeExitWrapper(Func f) : f_(std::move(f)), active_(true) {} + OnScopeExitWrapper(OnScopeExitWrapper&& other) noexcept + : f_(std::move(other.f_)), active_(other.active_) { + other.active_ = false; + } + ~OnScopeExitWrapper() { + if (active_) + f_(); + } + + private: + Func f_; + bool active_; +}; + +template +PERFETTO_WARN_UNUSED_RESULT OnScopeExitWrapper OnScopeExit(Func f) { + return OnScopeExitWrapper(std::move(f)); +} + +// Returns a xxd-style hex dump (hex + ascii chars) of the input data. +std::string HexDump(const void* data, size_t len, size_t bytes_per_line = 16); +inline std::string HexDump(const std::string& data, + size_t bytes_per_line = 16) { + return HexDump(data.data(), data.size(), bytes_per_line); +} + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_UTILS_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_BASE64_H_ +#define INCLUDE_PERFETTO_EXT_BASE_BASE64_H_ + +#include +#include + +// gen_amalgamated expanded: #include "perfetto/ext/base/string_view.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/utils.h" // For ssize_t. + +namespace perfetto { +namespace base { + +// Returns the length of the destination string (included '=' padding). +// Does NOT include the size of the string null terminator. +inline size_t Base64EncSize(size_t src_size) { + return (src_size + 2) / 3 * 4; +} + +// Returns the upper bound on the length of the destination buffer. +// The actual decoded length might be <= the number returned here. +inline size_t Base64DecSize(size_t src_size) { + return (src_size + 3) / 4 * 3; +} + +// Does NOT null-terminate |dst|. +ssize_t Base64Encode(const void* src, + size_t src_size, + char* dst, + size_t dst_size); + +std::string Base64Encode(const void* src, size_t src_size); + +inline std::string Base64Encode(StringView sv) { + return Base64Encode(sv.data(), sv.size()); +} + +// Returns -1 in case of failure. +ssize_t Base64Decode(const char* src, + size_t src_size, + uint8_t* dst, + size_t dst_size); + +std::optional Base64Decode(const char* src, size_t src_size); + +inline std::optional Base64Decode(StringView sv) { + return Base64Decode(sv.data(), sv.size()); +} + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_BASE64_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/base64.h" + +namespace perfetto { +namespace base { + +namespace { + +constexpr char kPadding = '='; + +constexpr char kEncTable[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static_assert(sizeof(kEncTable) == (1u << 6) + sizeof('\0'), "Bad table size"); + +// Maps an ASCII character to its 6-bit value. It only contains translations +// from '+' to 'z'. Supports the standard (+/) and URL-safe (-_) alphabets. +constexpr uint8_t kX = 0xff; // Value used for invalid characters +constexpr uint8_t kDecTable[] = { + 62, kX, 62, kX, 63, 52, 53, 54, 55, 56, // 00 - 09 + 57, 58, 59, 60, 61, kX, kX, kX, 0, kX, // 10 - 19 + kX, kX, 0, 1, 2, 3, 4, 5, 6, 7, // 20 - 29 + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, // 30 - 39 + 18, 19, 20, 21, 22, 23, 24, 25, kX, kX, // 40 - 49 + kX, kX, 63, kX, 26, 27, 28, 29, 30, 31, // 50 - 59 + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, // 60 - 69 + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // 70 - 79 +}; +constexpr char kMinDecChar = '+'; +constexpr char kMaxDecChar = 'z'; +static_assert(kMaxDecChar - kMinDecChar <= sizeof(kDecTable), "Bad table size"); + +inline uint8_t DecodeChar(char c) { + if (c < kMinDecChar || c > kMaxDecChar) + return kX; + return kDecTable[c - kMinDecChar]; +} + +} // namespace + +ssize_t Base64Encode(const void* src, + size_t src_size, + char* dst, + size_t dst_size) { + const size_t padded_dst_size = Base64EncSize(src_size); + if (dst_size < padded_dst_size) + return -1; // Not enough space in output. + + const uint8_t* rd = static_cast(src); + const uint8_t* const end = rd + src_size; + size_t wr_size = 0; + while (rd < end) { + uint8_t s[3]{}; + s[0] = *(rd++); + dst[wr_size++] = kEncTable[s[0] >> 2]; + + uint8_t carry0 = static_cast((s[0] & 0x03) << 4); + if (PERFETTO_LIKELY(rd < end)) { + s[1] = *(rd++); + dst[wr_size++] = kEncTable[carry0 | (s[1] >> 4)]; + } else { + dst[wr_size++] = kEncTable[carry0]; + dst[wr_size++] = kPadding; + dst[wr_size++] = kPadding; + break; + } + + uint8_t carry1 = static_cast((s[1] & 0x0f) << 2); + if (PERFETTO_LIKELY(rd < end)) { + s[2] = *(rd++); + dst[wr_size++] = kEncTable[carry1 | (s[2] >> 6)]; + } else { + dst[wr_size++] = kEncTable[carry1]; + dst[wr_size++] = kPadding; + break; + } + + dst[wr_size++] = kEncTable[s[2] & 0x3f]; + } + PERFETTO_DCHECK(wr_size == padded_dst_size); + return static_cast(padded_dst_size); +} + +std::string Base64Encode(const void* src, size_t src_size) { + std::string dst; + dst.resize(Base64EncSize(src_size)); + auto res = Base64Encode(src, src_size, &dst[0], dst.size()); + PERFETTO_CHECK(res == static_cast(dst.size())); + return dst; +} + +ssize_t Base64Decode(const char* src, + size_t src_size, + uint8_t* dst, + size_t dst_size) { + const size_t min_dst_size = Base64DecSize(src_size); + if (dst_size < min_dst_size) + return -1; + + const char* rd = src; + const char* const end = src + src_size; + size_t wr_size = 0; + + char s[4]{}; + while (rd < end) { + uint8_t d[4]; + for (uint32_t j = 0; j < 4; j++) { + // Padding is only feasible for the last 2 chars of each group of 4. + s[j] = rd < end ? *(rd++) : (j < 2 ? '\0' : kPadding); + d[j] = DecodeChar(s[j]); + if (d[j] == kX) + return -1; // Invalid input char. + } + dst[wr_size] = static_cast((d[0] << 2) | (d[1] >> 4)); + dst[wr_size + 1] = static_cast((d[1] << 4) | (d[2] >> 2)); + dst[wr_size + 2] = static_cast((d[2] << 6) | (d[3])); + wr_size += 3; + } + + PERFETTO_CHECK(wr_size <= dst_size); + wr_size -= (s[3] == kPadding ? 1 : 0) + (s[2] == kPadding ? 1 : 0); + return static_cast(wr_size); +} + +std::optional Base64Decode(const char* src, size_t src_size) { + std::string dst; + dst.resize(Base64DecSize(src_size)); + auto res = Base64Decode(src, src_size, reinterpret_cast(&dst[0]), + dst.size()); + if (res < 0) + return std::nullopt; // Decoding error. + + PERFETTO_CHECK(res <= static_cast(dst.size())); + dst.resize(static_cast(res)); + return std::make_optional(dst); +} + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/crash_keys.cc +// gen_amalgamated begin header: include/perfetto/ext/base/crash_keys.h +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_CRASH_KEYS_H_ +#define INCLUDE_PERFETTO_EXT_BASE_CRASH_KEYS_H_ + +#include +#include + +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/string_view.h" + +// Crash keys are very simple global variables with static-storage that +// are reported on crash time for managed crashes (CHECK/FATAL/Watchdog). +// - Translation units can define a CrashKey and register it at some point +// during initialization. +// - CrashKey instances must be long-lived. They should really be just global +// static variable in the anonymous namespace. +// Example: +// subsystem_1.cc +// CrashKey g_client_id("ipc_client_id"); +// ... +// OnIpcReceived(client_id) { +// g_client_id.Set(client_id); +// ... // Process the IPC +// g_client_id.Clear(); +// } +// Or equivalently: +// OnIpcReceived(client_id) { +// auto scoped_key = g_client_id.SetScoped(client_id); +// ... // Process the IPC +// } +// +// If a crash happens while processing the IPC, the crash report will +// have a line "ipc_client_id: 42". +// +// Thread safety considerations: +// CrashKeys can be registered and set/cleared from any thread. +// There is no compelling use-case to have full acquire/release consistency when +// setting a key. This means that if a thread crashes immediately after a +// crash key has been set on another thread, the value printed on the crash +// report could be incomplete. The code guarantees defined behavior and does +// not rely on null-terminated string (in the worst case 32 bytes of random +// garbage will be printed out). + +// The tests live in logging_unittest.cc. + +namespace perfetto { +namespace base { + +constexpr size_t kCrashKeyMaxStrSize = 32; + +// CrashKey instances must be long lived +class CrashKey { + public: + class ScopedClear { + public: + explicit ScopedClear(CrashKey* k) : key_(k) {} + ~ScopedClear() { + if (key_) + key_->Clear(); + } + ScopedClear(const ScopedClear&) = delete; + ScopedClear& operator=(const ScopedClear&) = delete; + ScopedClear& operator=(ScopedClear&&) = delete; + ScopedClear(ScopedClear&& other) noexcept : key_(other.key_) { + other.key_ = nullptr; + } + + private: + CrashKey* key_; + }; + + // constexpr so it can be used in the anon namespace without requiring a + // global constructor. + // |name| must be a long-lived string. + constexpr explicit CrashKey(const char* name) + : registered_{}, type_(Type::kUnset), name_(name), str_value_{} {} + CrashKey(const CrashKey&) = delete; + CrashKey& operator=(const CrashKey&) = delete; + CrashKey(CrashKey&&) = delete; + CrashKey& operator=(CrashKey&&) = delete; + + enum class Type : uint8_t { kUnset = 0, kInt, kStr }; + + void Clear() { + int_value_.store(0, std::memory_order_relaxed); + type_.store(Type::kUnset, std::memory_order_relaxed); + } + + void Set(int64_t value) { + int_value_.store(value, std::memory_order_relaxed); + type_.store(Type::kInt, std::memory_order_relaxed); + if (PERFETTO_UNLIKELY(!registered_.load(std::memory_order_relaxed))) + Register(); + } + + void Set(StringView sv) { + size_t len = std::min(sv.size(), sizeof(str_value_) - 1); + for (size_t i = 0; i < len; ++i) + str_value_[i].store(sv.data()[i], std::memory_order_relaxed); + str_value_[len].store('\0', std::memory_order_relaxed); + type_.store(Type::kStr, std::memory_order_relaxed); + if (PERFETTO_UNLIKELY(!registered_.load(std::memory_order_relaxed))) + Register(); + } + + ScopedClear SetScoped(int64_t value) PERFETTO_WARN_UNUSED_RESULT { + Set(value); + return ScopedClear(this); + } + + ScopedClear SetScoped(StringView sv) PERFETTO_WARN_UNUSED_RESULT { + Set(sv); + return ScopedClear(this); + } + + void Register(); + + int64_t int_value() const { + return int_value_.load(std::memory_order_relaxed); + } + size_t ToString(char* dst, size_t len); + + private: + std::atomic registered_; + std::atomic type_; + const char* const name_; + union { + std::atomic str_value_[kCrashKeyMaxStrSize]; + std::atomic int_value_; + }; +}; + +// Fills |dst| with a string containing one line for each crash key +// (excluding the unset ones). +// Returns number of chars written, without counting the NUL terminator. +// This is used in logging.cc when emitting the crash report abort message. +size_t SerializeCrashKeys(char* dst, size_t len); + +void UnregisterAllCrashKeysForTesting(); + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_CRASH_KEYS_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/crash_keys.h" + +#include + +#include +#include + +// gen_amalgamated expanded: #include "perfetto/ext/base/string_utils.h" + +namespace perfetto { +namespace base { + +namespace { + +constexpr size_t kMaxKeys = 32; + +std::atomic g_keys[kMaxKeys]{}; +std::atomic g_num_keys{}; +} // namespace + +void CrashKey::Register() { + // If doesn't matter if we fail below. If there are no slots left, don't + // keep trying re-registering on every Set(), the outcome won't change. + + // If two threads raced on the Register(), avoid registering the key twice. + if (registered_.exchange(true)) + return; + + uint32_t slot = g_num_keys.fetch_add(1); + if (slot >= kMaxKeys) { + PERFETTO_LOG("Too many crash keys registered"); + return; + } + g_keys[slot].store(this); +} + +// Returns the number of chars written, without counting the \0. +size_t CrashKey::ToString(char* dst, size_t len) { + if (len > 0) + *dst = '\0'; + switch (type_.load(std::memory_order_relaxed)) { + case Type::kUnset: + break; + case Type::kInt: + return SprintfTrunc(dst, len, "%s: %" PRId64 "\n", name_, + int_value_.load(std::memory_order_relaxed)); + case Type::kStr: + char buf[sizeof(str_value_)]; + for (size_t i = 0; i < sizeof(str_value_); i++) + buf[i] = str_value_[i].load(std::memory_order_relaxed); + + // Don't assume |str_value_| is properly null-terminated. + return SprintfTrunc(dst, len, "%s: %.*s\n", name_, int(sizeof(buf)), buf); + } + return 0; +} + +void UnregisterAllCrashKeysForTesting() { + g_num_keys.store(0); + for (auto& key : g_keys) + key.store(nullptr); +} + +size_t SerializeCrashKeys(char* dst, size_t len) { + size_t written = 0; + uint32_t num_keys = g_num_keys.load(); + if (len > 0) + *dst = '\0'; + for (uint32_t i = 0; i < num_keys && written < len; i++) { + CrashKey* key = g_keys[i].load(); + if (!key) + continue; // Can happen if we hit this between the add and the store. + written += key->ToString(dst + written, len - written); + } + PERFETTO_DCHECK(written <= len); + PERFETTO_DCHECK(len == 0 || dst[written] == '\0'); + return written; +} + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/ctrl_c_handler.cc +// gen_amalgamated begin header: include/perfetto/ext/base/ctrl_c_handler.h +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_CTRL_C_HANDLER_H_ +#define INCLUDE_PERFETTO_EXT_BASE_CTRL_C_HANDLER_H_ + +namespace perfetto { +namespace base { + +// On Linux/Android/Mac: installs SIGINT + SIGTERM signal handlers. +// On Windows: installs a SetConsoleCtrlHandler() handler. +// The passed handler must be async safe. +using CtrlCHandlerFunction = void (*)(); +void InstallCtrlCHandler(CtrlCHandlerFunction); + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_CTRL_C_HANDLER_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/ctrl_c_handler.h" + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#include + +#include +#else +#include +#include +#endif + +namespace perfetto { +namespace base { + +namespace { +CtrlCHandlerFunction g_handler = nullptr; + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +BOOL WINAPI Trampoline(DWORD type) { + if (type == CTRL_C_EVENT) { + g_handler(); + return TRUE; + } + return FALSE; +} +#endif +} // namespace + +void InstallCtrlCHandler(CtrlCHandlerFunction handler) { + PERFETTO_CHECK(g_handler == nullptr); + g_handler = handler; + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + ::SetConsoleCtrlHandler(Trampoline, true); +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) + // Setup signal handler. + struct sigaction sa{}; + +// Glibc headers for sa_sigaction trigger this. +#pragma GCC diagnostic push +#if defined(__clang__) +#pragma GCC diagnostic ignored "-Wdisabled-macro-expansion" +#endif + sa.sa_handler = [](int) { g_handler(); }; +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_QNX) + sa.sa_flags = static_cast(SA_RESETHAND | SA_RESTART); +#else // POSIX-compliant + sa.sa_flags = static_cast(SA_RESETHAND); +#endif +#pragma GCC diagnostic pop + sigaction(SIGINT, &sa, nullptr); + sigaction(SIGTERM, &sa, nullptr); +#else + // Do nothing on NaCL and Fuchsia. + ignore_result(handler); +#endif +} + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/event_fd.cc +// gen_amalgamated begin header: include/perfetto/ext/base/event_fd.h +// gen_amalgamated begin header: include/perfetto/ext/base/scoped_file.h +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_SCOPED_FILE_H_ +#define INCLUDE_PERFETTO_EXT_BASE_SCOPED_FILE_H_ + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +#include + +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#include // For DIR* / opendir(). +#endif + +#include + +// gen_amalgamated expanded: #include "perfetto/base/export.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/base/platform_handle.h" + +namespace perfetto { +namespace base { + +namespace internal { +// Used for the most common cases of ScopedResource where there is only one +// invalid value. +template +struct DefaultValidityChecker { + static bool IsValid(T t) { return t != InvalidValue; } +}; +} // namespace internal + +// RAII classes for auto-releasing fds and dirs. +// if T is a pointer type, InvalidValue must be nullptr. Doing otherwise +// causes weird unexpected behaviors (See https://godbolt.org/z/5nGMW4). +template > +class ScopedResource { + public: + using ValidityChecker = Checker; + static constexpr T kInvalid = InvalidValue; + + explicit ScopedResource(T t = InvalidValue) : t_(t) {} + ScopedResource(ScopedResource&& other) noexcept : t_(other.t_) { + other.t_ = InvalidValue; + } + ScopedResource& operator=(ScopedResource&& other) { + reset(other.t_); + other.t_ = InvalidValue; + return *this; + } + T get() const { return t_; } + T operator*() const { return t_; } + explicit operator bool() const { return Checker::IsValid(t_); } + void reset(T r = InvalidValue) { + if (Checker::IsValid(t_)) { + int res = CloseFunction(t_); + if (CheckClose) + PERFETTO_CHECK(res == 0); + } + t_ = r; + } + T release() { + T t = t_; + t_ = InvalidValue; + return t; + } + ~ScopedResource() { reset(InvalidValue); } + + private: + ScopedResource(const ScopedResource&) = delete; + ScopedResource& operator=(const ScopedResource&) = delete; + T t_; +}; + +// Declared in file_utils.h. Forward declared to avoid #include cycles. +int PERFETTO_EXPORT_COMPONENT CloseFile(int fd); + +// Use this for file resources obtained via open() and similar APIs. +using ScopedFile = ScopedResource; +using ScopedFstream = ScopedResource; + +// Use this for resources that are HANDLE on Windows. See comments in +// platform_handle.h +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +using ScopedPlatformHandle = ScopedResource; +#else +// On non-windows systems we alias ScopedPlatformHandle to ScopedFile because +// they are really the same. This is to allow assignments between the two in +// Linux-specific code paths that predate ScopedPlatformHandle. +static_assert(std::is_same::value, ""); +using ScopedPlatformHandle = ScopedFile; + +// DIR* does not exist on Windows. +using ScopedDir = ScopedResource; +#endif + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_SCOPED_FILE_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_EVENT_FD_H_ +#define INCLUDE_PERFETTO_EXT_BASE_EVENT_FD_H_ + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/platform_handle.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/scoped_file.h" + +namespace perfetto { +namespace base { + +// A waitable event that can be used with poll/select. +// This is really a wrapper around eventfd_create with a pipe-based fallback +// for other platforms where eventfd is not supported. +class EventFd { + public: + EventFd(); + ~EventFd(); + EventFd(EventFd&&) noexcept = default; + EventFd& operator=(EventFd&&) = default; + + // The non-blocking file descriptor that can be polled to wait for the event. + PlatformHandle fd() const { return event_handle_.get(); } + + // Can be called from any thread. + void Notify(); + + // Can be called from any thread. If more Notify() are queued a Clear() call + // can clear all of them (up to 16 per call). + void Clear(); + + private: + // The eventfd, when eventfd is supported, otherwise this is the read end of + // the pipe for fallback mode. + ScopedPlatformHandle event_handle_; + +// QNX is specified because it is a non-Linux UNIX platform but it +// still sets the PERFETTO_OS_LINUX flag to be as compatible as possible +// with the Linux build. +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + // On Mac and other non-Linux UNIX platforms a pipe-based fallback is used. + // The write end of the wakeup pipe. + ScopedFile write_fd_; +#endif +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_EVENT_FD_H_ +// gen_amalgamated begin header: include/perfetto/ext/base/pipe.h +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_PIPE_H_ +#define INCLUDE_PERFETTO_EXT_BASE_PIPE_H_ + +// gen_amalgamated expanded: #include "perfetto/base/platform_handle.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/scoped_file.h" + +namespace perfetto { +namespace base { + +class Pipe { + public: + enum Flags { + kBothBlock = 0, +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + kBothNonBlock, + kRdNonBlock, + kWrNonBlock, +#endif + }; + + static Pipe Create(Flags = kBothBlock); + + Pipe(); + Pipe(Pipe&&) noexcept; + Pipe& operator=(Pipe&&); + + ScopedPlatformHandle rd; + ScopedPlatformHandle wr; +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_PIPE_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +#include +#include + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#include + +#include +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_QNX) +#include +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +#include +#include +#else // Mac, Fuchsia and other non-Linux UNIXes +#include +#endif + +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/event_fd.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/pipe.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/utils.h" + +namespace perfetto { +namespace base { + +EventFd::~EventFd() = default; + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +EventFd::EventFd() { + event_handle_.reset( + CreateEventA(/*lpEventAttributes=*/nullptr, /*bManualReset=*/true, + /*bInitialState=*/false, /*bInitialState=*/nullptr)); +} + +void EventFd::Notify() { + if (!SetEvent(event_handle_.get())) // 0: fail, !0: success, unlike UNIX. + PERFETTO_DFATAL("EventFd::Notify()"); +} + +void EventFd::Clear() { + if (!ResetEvent(event_handle_.get())) // 0: fail, !0: success, unlike UNIX. + PERFETTO_DFATAL("EventFd::Clear()"); +} + +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +EventFd::EventFd() { + event_handle_.reset(eventfd(/*initval=*/0, EFD_CLOEXEC | EFD_NONBLOCK)); + PERFETTO_CHECK(event_handle_); +} + +void EventFd::Notify() { + const uint64_t value = 1; + ssize_t ret = write(event_handle_.get(), &value, sizeof(value)); + if (ret <= 0 && errno != EAGAIN) + PERFETTO_DFATAL("EventFd::Notify()"); +} + +void EventFd::Clear() { + uint64_t value; + ssize_t ret = + PERFETTO_EINTR(read(event_handle_.get(), &value, sizeof(value))); + if (ret <= 0 && errno != EAGAIN) + PERFETTO_DFATAL("EventFd::Clear()"); +} + +#else + +EventFd::EventFd() { + // Make the pipe non-blocking so that we never block the waking thread (either + // the main thread or another one) when scheduling a wake-up. + Pipe pipe = Pipe::Create(Pipe::kBothNonBlock); + event_handle_ = ScopedPlatformHandle(std::move(pipe.rd).release()); + write_fd_ = std::move(pipe.wr); +} + +void EventFd::Notify() { + const uint64_t value = 1; + ssize_t ret = write(write_fd_.get(), &value, sizeof(uint8_t)); + if (ret <= 0 && errno != EAGAIN) + PERFETTO_DFATAL("EventFd::Notify()"); +} + +void EventFd::Clear() { + // Drain the byte(s) written to the wake-up pipe. We can potentially read + // more than one byte if several wake-ups have been scheduled. + char buffer[16]; + ssize_t ret = + PERFETTO_EINTR(read(event_handle_.get(), &buffer[0], sizeof(buffer))); + if (ret <= 0 && errno != EAGAIN) + PERFETTO_DFATAL("EventFd::Clear()"); +} +#endif + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/file_utils.cc +// gen_amalgamated begin header: include/perfetto/ext/base/file_utils.h +// gen_amalgamated begin header: include/perfetto/base/status.h +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_BASE_STATUS_H_ +#define INCLUDE_PERFETTO_BASE_STATUS_H_ + +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/base/export.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" + +namespace perfetto { +namespace base { + +// Represents either the success or the failure message of a function. +// This can used as the return type of functions which would usually return an +// bool for success or int for errno but also wants to add some string context +// (ususally for logging). +// +// Similar to absl::Status, an optional "payload" can also be included with more +// context about the error. This allows passing additional metadata about the +// error (e.g. location of errors, potential mitigations etc). +class PERFETTO_EXPORT_COMPONENT Status { + public: + Status() : ok_(true) {} + explicit Status(std::string msg) : ok_(false), message_(std::move(msg)) { + PERFETTO_CHECK(!message_.empty()); + } + + // Copy operations. + Status(const Status&) = default; + Status& operator=(const Status&) = default; + + // Move operations. The moved-from state is valid but unspecified. + Status(Status&&) noexcept = default; + Status& operator=(Status&&) = default; + + bool ok() const { return ok_; } + + // When ok() is false this returns the error message. Returns the empty string + // otherwise. + const std::string& message() const { return message_; } + const char* c_message() const { return message_.c_str(); } + + ////////////////////////////////////////////////////////////////////////////// + // Payload Management APIs + ////////////////////////////////////////////////////////////////////////////// + + // Payloads can be attached to error statuses to provide additional context. + // + // Payloads are (key, value) pairs, where the key is a string acting as a + // unique "type URL" and the value is an opaque string. The "type URL" should + // be unique, follow the format of a URL and, ideally, documentation on how to + // interpret its associated data should be available. + // + // To attach a payload to a status object, call `Status::SetPayload()`. + // Similarly, to extract the payload from a status, call + // `Status::GetPayload()`. + // + // Note: the payload APIs are only meaningful to call when the status is an + // error. Otherwise, all methods are noops. + + // Gets the payload for the given |type_url| if one exists. + // + // Will always return std::nullopt if |ok()|. + std::optional GetPayload(std::string_view type_url) const; + + // Sets the payload for the given key. The key should + // + // Will always do nothing if |ok()|. + void SetPayload(std::string_view type_url, std::string value); + + // Erases the payload for the given string and returns true if the payload + // existed and was erased. + // + // Will always do nothing if |ok()|. + bool ErasePayload(std::string_view type_url); + + private: + struct Payload { + std::string type_url; + std::string payload; + }; + + bool ok_ = false; + std::string message_; + std::vector payloads_; +}; + +// Returns a status object which represents the Ok status. +inline Status OkStatus() { + return Status(); +} + +Status ErrStatus(const char* format, ...) PERFETTO_PRINTF_FORMAT(1, 2); + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_BASE_STATUS_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_FILE_UTILS_H_ +#define INCLUDE_PERFETTO_EXT_BASE_FILE_UTILS_H_ + +#include // For mode_t & O_RDONLY/RDWR. Exists also on Windows. +#include + +#include +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/export.h" +// gen_amalgamated expanded: #include "perfetto/base/status.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/scoped_file.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/sys_types.h" + +namespace perfetto { +namespace base { + +class TaskRunner; + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +using FileOpenMode = int; +inline constexpr char kDevNull[] = "NUL"; +inline constexpr char kFopenReadFlag[] = "r"; +#else +using FileOpenMode = mode_t; +inline constexpr char kDevNull[] = "/dev/null"; +inline constexpr char kFopenReadFlag[] = "re"; +#endif + +constexpr FileOpenMode kFileModeInvalid = static_cast(-1); + +bool ReadPlatformHandle(PlatformHandle, std::string* out); +bool ReadFileDescriptor(int fd, std::string* out); +bool ReadFileStream(FILE* f, std::string* out); +bool ReadFile(const std::string& path, std::string* out); + +// A wrapper around read(2). It deals with Linux vs Windows includes. It also +// deals with handling EINTR. Has the same semantics of UNIX's read(2). +ssize_t Read(int fd, void* dst, size_t dst_size); + +// Call write until all data is written or an error is detected. +// +// man 2 write: +// If a write() is interrupted by a signal handler before any bytes are +// written, then the call fails with the error EINTR; if it is +// interrupted after at least one byte has been written, the call +// succeeds, and returns the number of bytes written. +ssize_t WriteAll(int fd, const void* buf, size_t count); + +// Copies all data from |fd_in| to |fd_out|. Saves the offset of |fd_in|, +// rewinds it to the beginning, copies the content, and restores the offset. +// |fd_in| can't be a pipe, socket of FIFO. +base::Status CopyFileContents(int fd_in, int fd_out); + +ssize_t WriteAllHandle(PlatformHandle, const void* buf, size_t count); + +ScopedFile OpenFile(const std::string& path, + int flags, + FileOpenMode = kFileModeInvalid); +ScopedFstream OpenFstream(const std::string& path, const std::string& mode); + +// This is an alias for close(). It's to avoid leaking windows.h in headers. +// Exported because ScopedFile is used in the /include/ext API by Chromium +// component builds. +int PERFETTO_EXPORT_COMPONENT CloseFile(int fd); + +bool FlushFile(int fd); + +// Returns true if mkdir succeeds, false if it fails (see errno in that case). +bool Mkdir(const std::string& path); + +// Calls rmdir() on UNIX, _rmdir() on Windows. +bool Rmdir(const std::string& path); + +// Wrapper around access(path, F_OK). +bool FileExists(const std::string& path); + +// Gets the extension for a filename. If the file has two extensions, returns +// only the last one (foo.pb.gz => .gz). Returns empty string if there is no +// extension. +std::string GetFileExtension(const std::string& filename); + +// Returns the basename component of a path (the final component after the last +// directory separator). Behaves like man 2 basename, but works with both '/' +// and '\' separators for cross-platform compatibility. +// Examples: +// Basename("/usr/bin/ls") => "ls" +// Basename("/usr/bin/") => "bin" +// Basename("/") => "/" +// Basename("foo") => "foo" +// Basename("") => "." +// Basename("C:\\Windows\\System32") => "System32" +std::string Basename(const std::string& path); + +// Returns the directory component of a path (everything up to but not +// including the final component). Behaves like man 2 dirname, but works with +// both '/' and '\' separators for cross-platform compatibility. +// Examples: +// Dirname("/usr/bin/ls") => "/usr/bin" +// Dirname("/usr/bin") => "/usr" +// Dirname("/") => "/" +// Dirname("foo") => "." +// Dirname("") => "." +// Dirname("C:\\Windows\\System32") => "C:\\Windows" +std::string Dirname(const std::string& path); + +// Puts the path to all files under |dir_path| in |output|, recursively walking +// subdirectories. File paths are relative to |dir_path|. Only files are +// included, not directories. Path separator is always '/', even on windows (not +// '\'). +base::Status ListFilesRecursive(const std::string& dir_path, + std::vector& output); + +// Lists immediate subdirectories in |dir_path| (non-recursive). Directory names +// are relative to |dir_path| and do not include the path separator. Returns +// only directories, not files. Works on both Unix and Windows. +base::Status ListDirectories(const std::string& dir_path, + std::vector& output); + +// Sets |path|'s owner group to |group_name| and permission mode bits to +// |mode_bits|. +base::Status SetFilePermissions(const std::string& path, + const std::string& group_name, + const std::string& mode_bits); + +// Returns the size of the file located at |path|, or nullopt in case of error. +std::optional GetFileSize(const std::string& path); + +// Returns the size of the open file |fd|, or nullopt in case of error. +std::optional GetFileSize(PlatformHandle fd); + +// This class uses inotify (on Linux/Android) to watch for the creation of +// files in the filesystem. When the specified file is created, it triggers a +// callback function. +// Destroying the returned unique_ptr will automatically unregister the watch. +// +// Note: This only works with filesystem paths (not abstract sockets or other +// special file types). +// It's only supported on Linux and Android, it's a no-op (returns nullptr) on +// other platforms. +// +// Usage: +// auto watch = LinuxFileWatch::WatchFileCreation( +// task_runner, "/tmp/my_file", []() { +// // Called when /tmp/my_file is created +// }); +class LinuxFileWatch { + public: + // Creates a watcher for file creation. Returns nullptr if the path is not a + // valid filesystem path or if the platform doesn't support inotify. The + // callback will be invoked on the provided TaskRunner when the file is + // created. + static std::unique_ptr WatchFileCreation( + TaskRunner*, + const char* path, + std::function callback); + + virtual ~LinuxFileWatch(); + + protected: + LinuxFileWatch() = default; +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_FILE_UTILS_H_ +// gen_amalgamated begin header: include/perfetto/base/task_runner.h +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_ +#define INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_ + +#include + +#include + +// gen_amalgamated expanded: #include "perfetto/base/export.h" +// gen_amalgamated expanded: #include "perfetto/base/platform_handle.h" + +namespace perfetto { +namespace base { + +// A generic interface to allow the library clients to interleave the execution +// of the tracing internals in their runtime environment. +// The expectation is that all tasks, which are queued either via PostTask() or +// AddFileDescriptorWatch(), are executed on the same sequence (either on the +// same thread, or on a thread pool that gives sequencing guarantees). +// +// Tasks are never executed synchronously inside PostTask and there is a full +// memory barrier between tasks. +// +// All methods of this interface can be called from any thread. +class PERFETTO_EXPORT_COMPONENT TaskRunner { + public: + virtual ~TaskRunner(); + + // Schedule a task for immediate execution. Immediate tasks are always + // executed in the order they are posted. Can be called from any thread. + virtual void PostTask(std::function) = 0; + + // Schedule a task for execution after |delay_ms|. Note that there is no + // strict ordering guarantee between immediate and delayed tasks. Can be + // called from any thread. + virtual void PostDelayedTask(std::function, uint32_t delay_ms) = 0; + + // Schedule a task to run when the handle becomes readable. The same handle + // can only be monitored by one function. Note that this function only needs + // to be implemented on platforms where the built-in ipc framework is used. + // Can be called from any thread. + // TODO(skyostil): Refactor this out of the shared interface. + virtual void AddFileDescriptorWatch(PlatformHandle, + std::function) = 0; + + // Remove a previously scheduled watch for the handle. If this is run on the + // target thread of this TaskRunner, guarantees that the task registered to + // this handle will not be executed after this function call. + // Can be called from any thread. + virtual void RemoveFileDescriptorWatch(PlatformHandle) = 0; + + // Checks if the current thread is the same thread where the TaskRunner's task + // run. This allows single threaded task runners (like the ones used in + // perfetto) to inform the caller that anything posted will run on the same + // thread/sequence. This can allow some callers to skip PostTask and instead + // directly execute the code. Can be called from any thread. + virtual bool RunsTasksOnCurrentThread() const = 0; +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_ +// gen_amalgamated begin header: include/perfetto/ext/base/weak_ptr.h +// gen_amalgamated begin header: include/perfetto/ext/base/thread_checker.h +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_THREAD_CHECKER_H_ +#define INCLUDE_PERFETTO_EXT_BASE_THREAD_CHECKER_H_ + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" + +#if !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#include +#endif +#include + +// gen_amalgamated expanded: #include "perfetto/base/export.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/utils.h" + +namespace perfetto { +namespace base { + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +using ThreadID = unsigned long; +#else +using ThreadID = pthread_t; +#endif + +class PERFETTO_EXPORT_COMPONENT ThreadChecker { + public: + ThreadChecker(); + ~ThreadChecker(); + ThreadChecker(const ThreadChecker&); + ThreadChecker& operator=(const ThreadChecker&); + bool CalledOnValidThread() const PERFETTO_WARN_UNUSED_RESULT; + void DetachFromThread(); + + private: + mutable std::atomic thread_id_; +}; + +#if PERFETTO_DCHECK_IS_ON() && !PERFETTO_BUILDFLAG(PERFETTO_CHROMIUM_BUILD) +// TODO(primiano) Use Chromium's thread checker in Chromium. +#define PERFETTO_THREAD_CHECKER(name) base::ThreadChecker name; +#define PERFETTO_DCHECK_THREAD(name) \ + PERFETTO_DCHECK((name).CalledOnValidThread()) +#define PERFETTO_DETACH_FROM_THREAD(name) (name).DetachFromThread() +#else +#define PERFETTO_THREAD_CHECKER(name) +#define PERFETTO_DCHECK_THREAD(name) +#define PERFETTO_DETACH_FROM_THREAD(name) +#endif // PERFETTO_DCHECK_IS_ON() + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_THREAD_CHECKER_H_ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_WEAK_PTR_H_ +#define INCLUDE_PERFETTO_EXT_BASE_WEAK_PTR_H_ + +// gen_amalgamated expanded: #include "perfetto/ext/base/thread_checker.h" + +#include + +namespace perfetto { +namespace base { + +// A simple WeakPtr for single-threaded cases. +// Generally keep the WeakPtrFactory as last fields in classes: it makes the +// WeakPtr(s) invalidate as first thing in the class dtor. +// Usage: +// class MyClass { +// MyClass() : weak_factory_(this) {} +// WeakPtr GetWeakPtr() { return weak_factory_.GetWeakPtr(); } +// +// private: +// WeakPtrFactory weak_factory_; +// } +// +// int main() { +// std::unique_ptr foo(new MyClass); +// auto wptr = foo.GetWeakPtr(); +// ASSERT_TRUE(wptr); +// ASSERT_EQ(foo.get(), wptr->get()); +// foo.reset(); +// ASSERT_FALSE(wptr); +// ASSERT_EQ(nullptr, wptr->get()); +// } + +template +class WeakPtrFactory; // Forward declaration, defined below. + +template +class WeakPtr { + public: + WeakPtr() {} + WeakPtr(const WeakPtr&) = default; + WeakPtr& operator=(const WeakPtr&) = default; + WeakPtr(WeakPtr&&) = default; + WeakPtr& operator=(WeakPtr&&) = default; + + T* get() const { + PERFETTO_DCHECK_THREAD(thread_checker); + return handle_ ? *handle_.get() : nullptr; + } + T* operator->() const { return get(); } + T& operator*() const { return *get(); } + + explicit operator bool() const { return !!get(); } + + private: + friend class WeakPtrFactory; + explicit WeakPtr(const std::shared_ptr& handle) : handle_(handle) {} + + std::shared_ptr handle_; + PERFETTO_THREAD_CHECKER(thread_checker) +}; + +template +class WeakPtrFactory { + public: + explicit WeakPtrFactory(T* owner) : weak_ptr_(std::make_shared(owner)) { + PERFETTO_DCHECK_THREAD(thread_checker); + } + + ~WeakPtrFactory() { + PERFETTO_DCHECK_THREAD(thread_checker); + *(weak_ptr_.handle_.get()) = nullptr; + } + + // Can be safely called on any thread, since it simply copies |weak_ptr_|. + // Note that any accesses to the returned pointer need to be made on the + // thread that created/reset the factory. + WeakPtr GetWeakPtr() const { return weak_ptr_; } + + // Reset the factory to a new owner & thread. May only be called before any + // weak pointers were passed out. Future weak pointers will be valid on the + // calling thread. + void Reset(T* owner) { + // Reset thread checker to current thread. + PERFETTO_DETACH_FROM_THREAD(thread_checker); + PERFETTO_DCHECK_THREAD(thread_checker); + + // We should not have passed out any weak pointers yet at this point. + PERFETTO_DCHECK(weak_ptr_.handle_.use_count() == 1); + + weak_ptr_ = WeakPtr(std::make_shared(owner)); + } + + private: + WeakPtrFactory(const WeakPtrFactory&) = delete; + WeakPtrFactory& operator=(const WeakPtrFactory&) = delete; + + WeakPtr weak_ptr_; + PERFETTO_THREAD_CHECKER(thread_checker) +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_WEAK_PTR_H_ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/file_utils.h" + +#include +#include + +#include +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/build_config.h" +// gen_amalgamated expanded: #include "perfetto/base/compiler.h" +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/base/platform_handle.h" +// gen_amalgamated expanded: #include "perfetto/base/status.h" +// gen_amalgamated expanded: #include "perfetto/base/task_runner.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/platform.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/scoped_file.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/string_utils.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/utils.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/weak_ptr.h" + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +#include + +#include +#include +#include +#else +#include +#include +#endif + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) +#define PERFETTO_SET_FILE_PERMISSIONS +#include +#include +#include +#include +#include +#endif + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +// For inotify. QNX doesn't have full support for inotify_init1(). +#include +#endif + +namespace perfetto { +namespace base { +namespace { +constexpr size_t kBufSize = 2048; + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) +// Wrap FindClose to: (1) make the return unix-style; (2) deal with stdcall. +int CloseFindHandle(HANDLE h) { + return FindClose(h) ? 0 : -1; +} + +std::optional ToUtf16(const std::string& str) { + int len = MultiByteToWideChar(CP_UTF8, 0, str.data(), + static_cast(str.size()), nullptr, 0); + if (len < 0) { + return std::nullopt; + } + std::vector tmp; + tmp.resize(static_cast::size_type>(len)); + len = + MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), + tmp.data(), static_cast(tmp.size())); + if (len < 0) { + return std::nullopt; + } + PERFETTO_CHECK(static_cast::size_type>(len) == + tmp.size()); + return std::wstring(tmp.data(), tmp.size()); +} + +#endif + +} // namespace + +ssize_t Read(int fd, void* dst, size_t dst_size) { + ssize_t ret; + platform::BeforeMaybeBlockingSyscall(); +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + ret = _read(fd, dst, static_cast(dst_size)); +#else + ret = PERFETTO_EINTR(read(fd, dst, dst_size)); +#endif + platform::AfterMaybeBlockingSyscall(); + return ret; +} + +bool ReadFileDescriptor(int fd, std::string* out) { + // Do not override existing data in string. + size_t i = out->size(); + + struct stat buf{}; + if (fstat(fd, &buf) != -1) { + if (buf.st_size > 0) + out->resize(i + static_cast(buf.st_size)); + } + + ssize_t bytes_read; + for (;;) { + if (out->size() < i + kBufSize) + out->resize(out->size() + kBufSize); + + bytes_read = Read(fd, &((*out)[i]), kBufSize); + if (bytes_read > 0) { + i += static_cast(bytes_read); + } else { + out->resize(i); + return bytes_read == 0; + } + } +} + +bool ReadPlatformHandle(PlatformHandle h, std::string* out) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + // Do not override existing data in string. + size_t i = out->size(); + + for (;;) { + if (out->size() < i + kBufSize) + out->resize(out->size() + kBufSize); + DWORD bytes_read = 0; + auto res = ::ReadFile(h, &((*out)[i]), kBufSize, &bytes_read, nullptr); + if (res && bytes_read > 0) { + i += static_cast(bytes_read); + } else { + out->resize(i); + const bool is_eof = res && bytes_read == 0; + auto err = res ? 0 : GetLastError(); + // The "Broken pipe" error on Windows is slightly different than Unix: + // On Unix: a "broken pipe" error can happen only on the writer side. On + // the reader there is no broken pipe, just a EOF. + // On windows: the reader also sees a broken pipe error. + // Here we normalize on the Unix behavior, treating broken pipe as EOF. + return is_eof || err == ERROR_BROKEN_PIPE; + } + } +#else + return ReadFileDescriptor(h, out); +#endif +} + +bool ReadFileStream(FILE* f, std::string* out) { + return ReadFileDescriptor(fileno(f), out); +} + +bool ReadFile(const std::string& path, std::string* out) { + base::ScopedFile fd = base::OpenFile(path, O_RDONLY); + if (!fd) + return false; + + return ReadFileDescriptor(*fd, out); +} + +ssize_t WriteAll(int fd, const void* buf, size_t count) { + size_t written = 0; + while (written < count) { + // write() on windows takes an unsigned int size. + uint32_t bytes_left = static_cast( + std::min(count - written, static_cast(UINT32_MAX))); + platform::BeforeMaybeBlockingSyscall(); + ssize_t wr = PERFETTO_EINTR( + write(fd, static_cast(buf) + written, bytes_left)); + platform::AfterMaybeBlockingSyscall(); + if (wr == 0) + break; + if (wr < 0) + return wr; + written += static_cast(wr); + } + return static_cast(written); +} + +base::Status CopyFileContents(int fd_in, int fd_out) { + off_t original_offset = lseek(fd_in, 0, SEEK_CUR); + if (original_offset == -1) { + return base::ErrStatus( + "Can't get offset in 'fd_in', lseek error: %s (errno: %d)", + strerror(errno), errno); + } + + if (lseek(fd_in, 0, SEEK_SET) == -1) { + return base::ErrStatus( + "Can't change the offset in 'fd_in', lseek error: %s (errno: %d)", + strerror(errno), errno); + } + + auto restore_offset_on_exit = OnScopeExit([fd_in, original_offset] { + // 'lseek' should never fail here, but if it fails, we crash, to prevent + // possible data loss/overwrite in the 'fd_in'. + PERFETTO_CHECK(lseek(fd_in, original_offset, SEEK_SET) >= 0); + }); + + // Use bigger buffer when copy files. + constexpr size_t kCopyFileBufSize = 32 * 1024; // 32KB. + static_assert(kCopyFileBufSize > kBufSize); + // Don't allocate that much memory on stack. + std::vector buffer(kCopyFileBufSize); + for (;;) { + ssize_t bytes_read = Read(fd_in, buffer.data(), buffer.size()); + if (bytes_read == 0) + break; + if (bytes_read < 0) { + return base::ErrStatus("Read failed: %s (errno: %d)", strerror(errno), + errno); + } + ssize_t written = + WriteAll(fd_out, buffer.data(), static_cast(bytes_read)); + if (written != bytes_read) { + return base::ErrStatus("Write failed: %s (errno: %d)", strerror(errno), + errno); + } + } + return base::OkStatus(); +} + +ssize_t WriteAllHandle(PlatformHandle h, const void* buf, size_t count) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + DWORD wsize = 0; + if (::WriteFile(h, buf, static_cast(count), &wsize, nullptr)) { + return wsize; + } else { + return -1; + } +#else + return WriteAll(h, buf, count); +#endif +} + +bool FlushFile(int fd) { + PERFETTO_DCHECK(fd != 0); +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + return !PERFETTO_EINTR(fdatasync(fd)); +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return !PERFETTO_EINTR(_commit(fd)); +#else + return !PERFETTO_EINTR(fsync(fd)); +#endif +} + +bool Mkdir(const std::string& path) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return _mkdir(path.c_str()) == 0; +#else + return mkdir(path.c_str(), 0755) == 0; +#endif +} + +bool Rmdir(const std::string& path) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return _rmdir(path.c_str()) == 0; +#else + return rmdir(path.c_str()) == 0; +#endif +} + +int CloseFile(int fd) { + return close(fd); +} + +ScopedFile OpenFile(const std::string& path, int flags, FileOpenMode mode) { + // If a new file might be created, ensure that the permissions for the new + // file are explicitly specified. + PERFETTO_CHECK((flags & O_CREAT) == 0 || mode != kFileModeInvalid); +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + // Always use O_BINARY on Windows, to avoid silly EOL translations. + ScopedFile fd(_open(path.c_str(), flags | O_BINARY, mode)); +#else + // Always open a ScopedFile with O_CLOEXEC so we can safely fork and exec. + ScopedFile fd(open(path.c_str(), flags | O_CLOEXEC, mode)); +#endif + return fd; +} + +ScopedFstream OpenFstream(const std::string& path, const std::string& mode) { + ScopedFstream file; + // On Windows fopen interprets filename using the ANSI or OEM codepage but + // sqlite3_value_text returns a UTF-8 string. To make sure we interpret the + // filename correctly we use _wfopen and a UTF-16 string on windows. + // + // On Windows fopen also open files in the text mode by default, but we want + // to open them in the binary mode, to avoid silly EOL translations (and to be + // consistent with base::OpenFile). So we check the mode first and append 'b' + // mode only when it makes sense. +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + std::string s_mode(mode); + // Windows supports non-standard mode extension that sets encoding in text + // mode. If you need to open a FILE* in text mode, use the fopen API directly. + bool is_text_mode = Contains(s_mode, "ccs=") || Contains(s_mode, "t"); + PERFETTO_CHECK(!is_text_mode); + bool is_binary_mode = Contains(s_mode, 'b'); + if (!is_binary_mode) + s_mode += 'b'; + + auto w_path = ToUtf16(path); + auto w_mode = ToUtf16(s_mode); + if (w_path && w_mode) { + file.reset(_wfopen(w_path->c_str(), w_mode->c_str())); + } +#else + file.reset(fopen(path.c_str(), mode.c_str())); +#endif + return file; +} + +bool FileExists(const std::string& path) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + return _access(path.c_str(), 0) == 0; +#else + return access(path.c_str(), F_OK) == 0; +#endif +} + +// Declared in base/platform_handle.h. +int ClosePlatformHandle(PlatformHandle handle) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + // Make the return value UNIX-style. + return CloseHandle(handle) ? 0 : -1; +#else + return close(handle); +#endif +} + +base::Status ListFilesRecursive(const std::string& dir_path, + std::vector& output) { + std::string root_dir_path = dir_path; + if (root_dir_path.back() == '\\') { + root_dir_path.back() = '/'; + } else if (root_dir_path.back() != '/') { + root_dir_path.push_back('/'); + } + + // dir_queue contains full paths to the directories. The paths include the + // root_dir_path at the beginning and the trailing slash at the end. + std::deque dir_queue; + dir_queue.push_back(root_dir_path); + + while (!dir_queue.empty()) { + const std::string cur_dir = std::move(dir_queue.front()); + dir_queue.pop_front(); +#if PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) + return base::ErrStatus("ListFilesRecursive not supported yet"); +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + std::string glob_path = cur_dir + "*"; + // + 1 because we also have to count the NULL terminator. + if (glob_path.length() + 1 > MAX_PATH) + return base::ErrStatus("Directory path %s is too long", dir_path.c_str()); + WIN32_FIND_DATAA ffd; + + base::ScopedResource + hFind(FindFirstFileA(glob_path.c_str(), &ffd)); + if (!hFind) { + // For empty directories, there should be at least one entry '.'. + // If FindFirstFileA returns INVALID_HANDLE_VALUE, this means directory + // couldn't be accessed. + return base::ErrStatus("Failed to open directory %s", cur_dir.c_str()); + } + do { + if (strcmp(ffd.cFileName, ".") == 0 || strcmp(ffd.cFileName, "..") == 0) + continue; + if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + std::string subdir_path = cur_dir + ffd.cFileName + '/'; + dir_queue.push_back(subdir_path); + } else { + const std::string full_path = cur_dir + ffd.cFileName; + PERFETTO_CHECK(full_path.length() > root_dir_path.length()); + output.push_back(full_path.substr(root_dir_path.length())); + } + } while (FindNextFileA(*hFind, &ffd)); +#else + ScopedDir dir = ScopedDir(opendir(cur_dir.c_str())); + if (!dir) { + return base::ErrStatus("Failed to open directory %s", cur_dir.c_str()); + } + for (auto* dirent = readdir(dir.get()); dirent != nullptr; + dirent = readdir(dir.get())) { + if (strcmp(dirent->d_name, ".") == 0 || + strcmp(dirent->d_name, "..") == 0) { + continue; + } + struct stat dirstat; + std::string full_path = cur_dir + dirent->d_name; + PERFETTO_CHECK(stat(full_path.c_str(), &dirstat) == 0); + if (S_ISDIR(dirstat.st_mode)) { + dir_queue.push_back(full_path + '/'); + } else if (S_ISREG(dirstat.st_mode)) { + PERFETTO_CHECK(full_path.length() > root_dir_path.length()); + output.push_back(full_path.substr(root_dir_path.length())); + } + } +#endif + } + return base::OkStatus(); +} + +base::Status ListDirectories(const std::string& dir_path, + std::vector& output) { + std::string normalized_path = dir_path; + if (!normalized_path.empty() && normalized_path.back() != '/' && + normalized_path.back() != '\\') { + normalized_path.push_back('/'); + } + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) + return base::ErrStatus("ListDirectories not supported yet"); +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + std::string glob_path = normalized_path + "*"; + if (glob_path.length() + 1 > MAX_PATH) { + return base::ErrStatus("Directory path %s is too long", dir_path.c_str()); + } + WIN32_FIND_DATAA ffd; + + base::ScopedResource + hFind(FindFirstFileA(glob_path.c_str(), &ffd)); + if (!hFind) { + return base::ErrStatus("Failed to open directory %s", + normalized_path.c_str()); + } + do { + if (strcmp(ffd.cFileName, ".") == 0 || strcmp(ffd.cFileName, "..") == 0) { + continue; + } + if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + output.push_back(ffd.cFileName); + } + } while (FindNextFileA(*hFind, &ffd)); +#else + ScopedDir dir = ScopedDir(opendir(normalized_path.c_str())); + if (!dir) { + return base::ErrStatus("Failed to open directory %s", + normalized_path.c_str()); + } + for (auto* dirent = readdir(dir.get()); dirent != nullptr; + dirent = readdir(dir.get())) { + if (strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0) { + continue; + } + std::string full_path = normalized_path + dirent->d_name; + struct stat dirstat; + if (stat(full_path.c_str(), &dirstat) == 0 && S_ISDIR(dirstat.st_mode)) { + output.push_back(dirent->d_name); + } + } +#endif + return base::OkStatus(); +} + +std::string GetFileExtension(const std::string& filename) { + auto ext_idx = filename.rfind('.'); + if (ext_idx == std::string::npos) + return std::string(); + return filename.substr(ext_idx); +} + +std::string Basename(const std::string& path) { + // Handle empty path + if (path.empty()) + return "."; + + // Make a copy to work with + std::string p = path; + + // Strip trailing slashes (both / and \) + while (p.size() > 1 && (p.back() == '/' || p.back() == '\\')) { + p.pop_back(); + } + + // If the path is now empty or just a single slash, return it + if (p.empty() || p == "/" || p == "\\") + return p.empty() ? "/" : p; + + // Find the last directory separator (either / or \) + size_t last_sep = p.find_last_of("/\\"); + + if (last_sep == std::string::npos) { + // No separator found, the whole path is the basename + return p; + } + + // Return everything after the last separator + return p.substr(last_sep + 1); +} + +std::string Dirname(const std::string& path) { + // Handle empty path + if (path.empty()) + return "."; + + // Make a copy to work with + std::string p = path; + + // Strip trailing slashes (both / and \) + while (p.size() > 1 && (p.back() == '/' || p.back() == '\\')) { + p.pop_back(); + } + + // If the path is now just a single slash, return it + if (p == "/" || p == "\\") + return p; + + // Find the last directory separator (either / or \) + size_t last_sep = p.find_last_of("/\\"); + + if (last_sep == std::string::npos) { + // No separator found, return "." + return "."; + } + + // If the separator is at position 0, return the root + if (last_sep == 0) + return p.substr(0, 1); // Return "/" or "\" + + // Strip trailing slashes from the dirname part + while (last_sep > 0 && (p[last_sep - 1] == '/' || p[last_sep - 1] == '\\')) { + --last_sep; + } + + // If we've consumed all characters, return the root + if (last_sep == 0) + return p.substr(0, 1); + + // Return everything up to (but not including) the last separator + return p.substr(0, last_sep); +} + +base::Status SetFilePermissions(const std::string& file_path, + const std::string& group_name_or_id, + const std::string& mode_bits) { +#ifdef PERFETTO_SET_FILE_PERMISSIONS + PERFETTO_CHECK(!file_path.empty()); + PERFETTO_CHECK(!group_name_or_id.empty()); + + // Default |group_id| to -1 for not changing the group ownership. + gid_t group_id = static_cast(-1); + auto maybe_group_id = base::StringToUInt32(group_name_or_id); + if (maybe_group_id) { // A numerical group ID. + group_id = *maybe_group_id; + } else { // A group name. + struct group* file_group = nullptr; + // Query the group ID of |group|. + do { + file_group = getgrnam(group_name_or_id.c_str()); + } while (file_group == nullptr && errno == EINTR); + if (file_group == nullptr) { + return base::ErrStatus("Failed to get group information of %s ", + group_name_or_id.c_str()); + } + group_id = file_group->gr_gid; + } + + if (PERFETTO_EINTR(chown(file_path.c_str(), geteuid(), group_id))) { + return base::ErrStatus("Failed to chown %s ", file_path.c_str()); + } + + // |mode| accepts values like "0660" as "rw-rw----" mode bits. + auto mode_value = base::StringToInt32(mode_bits, 8); + if (!(mode_bits.size() == 4 && mode_value.has_value())) { + return base::ErrStatus( + "The chmod mode bits must be a 4-digit octal number, e.g. 0660"); + } + if (PERFETTO_EINTR( + chmod(file_path.c_str(), static_cast(mode_value.value())))) { + return base::ErrStatus("Failed to chmod %s", file_path.c_str()); + } + return base::OkStatus(); +#else + base::ignore_result(file_path); + base::ignore_result(group_name_or_id); + base::ignore_result(mode_bits); + return base::ErrStatus( + "Setting file permissions is not supported on this platform"); +#endif +} + +std::optional GetFileSize(const std::string& file_path) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + // This does not use base::OpenFile to avoid getting an exclusive lock. + base::ScopedPlatformHandle fd( + CreateFileA(file_path.c_str(), FILE_READ_ATTRIBUTES, FILE_SHARE_READ, + nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr)); +#else + base::ScopedFile fd(base::OpenFile(file_path, O_RDONLY | O_CLOEXEC)); +#endif + if (!fd) { + return std::nullopt; + } + return GetFileSize(*fd); +} + +std::optional GetFileSize(PlatformHandle fd) { +#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) + LARGE_INTEGER file_size; + file_size.QuadPart = 0; + if (!GetFileSizeEx(fd, &file_size)) { + return std::nullopt; + } + static_assert(sizeof(decltype(file_size.QuadPart)) <= sizeof(uint64_t)); + return static_cast(file_size.QuadPart); +#else + struct stat buf{}; + if (fstat(fd, &buf) == -1) { + return std::nullopt; + } + static_assert(sizeof(decltype(buf.st_size)) <= sizeof(uint64_t)); + return static_cast(buf.st_size); +#endif +} + +// LinuxFileWatch + +#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ + PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) + +namespace { + +// Implementation class extends LinuxFileWatch +class FileWatchImpl : public LinuxFileWatch { + public: + FileWatchImpl(TaskRunner* tr, + std::string fn, + ScopedFile ifd, + std::function cb) + : task_runner_(tr), + file_base_name_(std::move(fn)), + inotify_fd_(std::move(ifd)), + callback_(std::move(cb)), + weak_ptr_factory_(this) { + task_runner_->AddFileDescriptorWatch( + *inotify_fd_, [weak_handle = weak_ptr_factory_.GetWeakPtr()] { + if (!weak_handle) + return; + alignas(struct inotify_event) char buf[4096]; + ssize_t rsize = + base::Read(*weak_handle->inotify_fd_, buf, sizeof(buf)); + if (rsize <= 0) + return; + for (ssize_t i = 0; i < rsize;) { + auto* evt = reinterpret_cast(&buf[i]); + i += static_cast(sizeof(inotify_event) + evt->len); + if (evt->len > 0 && (evt->mask & IN_CREATE)) { + if (weak_handle->file_base_name_ == evt->name) { + weak_handle->task_runner_->PostTask(weak_handle->callback_); + return; + } + } + } // for(evt); + }); + } + + ~FileWatchImpl() override { + if (!inotify_fd_) + return; + task_runner_->RemoveFileDescriptorWatch(*inotify_fd_); + inotify_fd_.reset(); + } + + private: + TaskRunner* task_runner_ = nullptr; + std::string file_base_name_; // Only the name without the path. + ScopedFile inotify_fd_; + std::function callback_; + WeakPtrFactory weak_ptr_factory_; // Keep last. +}; + +} // namespace + +std::unique_ptr LinuxFileWatch::WatchFileCreation( + TaskRunner* task_runner, + const char* path, + std::function callback) { + if (!path || path[0] == '\0') { + // We can add a inotify watch only for valid filesystem paths. + return nullptr; + } + + ScopedFile inotify_fd(inotify_init1(IN_CLOEXEC | IN_NONBLOCK)); + if (!inotify_fd) { + PERFETTO_DLOG("inotify_init() failed"); + return nullptr; + } + + // Here we watch the parent dir, not the file itself. We cannot watch for + // a file that doesn't exist yet, because the kernel internally attaches the + // watch to an inode, and a non-existing file doesn't have inodes. + // We are not interested in IN_MOVED_TO because we don't mv files. + std::string file_dir = Dirname(path); + if (inotify_add_watch(*inotify_fd, file_dir.c_str(), IN_CREATE) < 0) { + PERFETTO_DLOG("inotify_add_watch(%s) failed", file_dir.c_str()); + return nullptr; + } + + std::string file_base_name = Basename(path); + + return std::unique_ptr( + new FileWatchImpl(task_runner, std::move(file_base_name), + std::move(inotify_fd), std::move(callback))); +} + +LinuxFileWatch::~LinuxFileWatch() = default; + +#else + +std::unique_ptr LinuxFileWatch::WatchFileCreation( + TaskRunner*, + const char*, + std::function) { + return nullptr; // Not supported on other platforms. +} + +LinuxFileWatch::~LinuxFileWatch() = default; + +#endif // OS_LINUX || OS_ANDROID + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/fixed_string_writer.cc +// gen_amalgamated begin header: include/perfetto/ext/base/fixed_string_writer.h +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_ +#define INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_ + +#include + +#include +#include +#include +#include +#include +#include + +// gen_amalgamated expanded: #include "perfetto/base/logging.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/string_utils.h" +// gen_amalgamated expanded: #include "perfetto/ext/base/string_view.h" + +namespace perfetto { +namespace base { + +// A helper class which writes formatted data to a string buffer. +// This is used in the trace processor where we write O(GBs) of strings and +// sprintf is too slow. +class FixedStringWriter { + public: + // Creates a string buffer from a char buffer and length. + FixedStringWriter(char* buffer, size_t size) : buffer_(buffer), size_(size) {} + + // Appends n instances of a char to the buffer. + void AppendChar(char in, size_t n = 1) { + PERFETTO_DCHECK(pos_ + n <= size_); + memset(&buffer_[pos_], in, n); + pos_ += n; + } + + // Appends a length delimited string to the buffer. + void AppendString(const char* in, size_t n) { + PERFETTO_DCHECK(pos_ + n <= size_); + memcpy(&buffer_[pos_], in, n); + pos_ += n; + } + + void AppendStringView(StringView sv) { AppendString(sv.data(), sv.size()); } + + // Appends a null-terminated string literal to the buffer. + template + inline void AppendLiteral(const char (&in)[N]) { + AppendString(in, N - 1); + } + + // Appends a StringView to the buffer. + void AppendString(StringView data) { AppendString(data.data(), data.size()); } + + // Appends an integer to the buffer. + void AppendInt(int64_t value) { AppendPaddedInt<'0', 0>(value); } + + // Appends an integer to the buffer, padding with |padchar| if the number of + // digits of the integer is less than |padding|. + template + void AppendPaddedInt(int64_t sign_value) { + const bool negate = std::signbit(static_cast(sign_value)); + uint64_t absolute_value; + if (sign_value == std::numeric_limits::min()) { + absolute_value = + static_cast(std::numeric_limits::max()) + 1; + } else { + absolute_value = static_cast(std::abs(sign_value)); + } + AppendPaddedInt(absolute_value, negate); + } + + void AppendUnsignedInt(uint64_t value) { + AppendPaddedUnsignedInt<'0', 0>(value); + } + + // Appends an unsigned integer to the buffer, padding with |padchar| if the + // number of digits of the integer is less than |padding|. + template + void AppendPaddedUnsignedInt(uint64_t value) { + AppendPaddedInt(value, false); + } + + template + void AppendPaddedHexInt(IntType value, char padchar, uint64_t padding) { + using UnsignedType = std::make_unsigned_t; + constexpr size_t kMaxHexDigits = sizeof(IntType) * 2; + // 32 bytes is more than enough for any integer type (max 16 hex digits for + // 64-bit) + constexpr size_t kBufferSize = 32; + auto size_needed = + kMaxHexDigits > padding ? kMaxHexDigits : static_cast(padding); + PERFETTO_DCHECK(size_needed <= kBufferSize); + PERFETTO_DCHECK(pos_ + size_needed <= size_); + + std::array data; + constexpr char hex_asc[] = "0123456789abcdef"; + + size_t idx = size_needed - 1; + auto uvalue = static_cast(value); + do { + data[idx--] = hex_asc[uvalue & 0xF]; + uvalue >>= 4; + } while (uvalue != 0); + + if (padding > 0) { + const auto num_digits = static_cast(size_needed - 1 - idx); + // std::max() needed to work around GCC not being able to tell that + // padding > 0. + for (auto i = num_digits; i < std::max(uint64_t{1u}, padding); i++) { + data[idx--] = padchar; + } + } + AppendString(&data[idx + 1], size_needed - idx - 1); + } + + // Appends a hex integer to the buffer. + template + void AppendHexInt(IntType value) { + AppendPaddedHexInt(value, '0', 0); + } + + // Appends a hex string to the buffer. + void AppendHexString(const uint8_t* data, size_t size, char separator); + + void AppendHexString(StringView data, char separator) { + AppendHexString(reinterpret_cast(data.data()), data.size(), + separator); + } + + // Appends a double to the buffer. + void AppendDouble(double value) { + // TODO(lalitm): trying to optimize this is premature given we almost never + // print doubles. Reevaluate this in the future if we do print them more. + size_t res = base::SprintfTrunc(buffer_ + pos_, size_ - pos_, "%lf", value); + PERFETTO_DCHECK(pos_ + res <= size_); + pos_ += res; + } + + void AppendBool(bool value) { + if (value) { + AppendLiteral("true"); + return; + } + AppendLiteral("false"); + } + + StringView GetStringView() { + PERFETTO_DCHECK(pos_ <= size_); + return StringView(buffer_, pos_); + } + + char* CreateStringCopy() { + char* dup = reinterpret_cast(malloc(pos_ + 1)); + if (dup) { + memcpy(dup, buffer_, pos_); + dup[pos_] = '\0'; + } + return dup; + } + + size_t pos() const { return pos_; } + size_t size() const { return size_; } + void reset() { pos_ = 0; } + + private: + template + void AppendPaddedInt(uint64_t absolute_value, bool negate) { + // Need to add 2 to the number of digits to account for minus sign and + // rounding down of digits10. + constexpr auto kMaxDigits = std::numeric_limits::digits10 + 2; + constexpr auto kSizeNeeded = kMaxDigits > padding ? kMaxDigits : padding; + PERFETTO_DCHECK(pos_ + kSizeNeeded <= size_); + + char data[kSizeNeeded]; + + size_t idx; + for (idx = kSizeNeeded - 1; absolute_value >= 10;) { + char digit = absolute_value % 10; + absolute_value /= 10; + data[idx--] = digit + '0'; + } + data[idx--] = static_cast(absolute_value) + '0'; + + if (padding > 0) { + size_t num_digits = kSizeNeeded - 1 - idx; + // std::max() needed to work around GCC not being able to tell that + // padding > 0. + for (size_t i = num_digits; i < std::max(uint64_t{1u}, padding); i++) { + data[idx--] = padchar; + } + } + + if (negate) + buffer_[pos_++] = '-'; + AppendString(&data[idx + 1], kSizeNeeded - idx - 1); + } + + char* buffer_ = nullptr; + size_t size_ = 0; + size_t pos_ = 0; +}; + +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_FIXED_STRING_WRITER_H_ +/* + * Copyright (C) 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/fixed_string_writer.h" + +#include +#include +#include + +namespace perfetto { +namespace base { + +void FixedStringWriter::AppendHexString(const uint8_t* data, + size_t size, + char separator) { + // Truncate to 64 bytes, as this is the maximum supported by the Linux + // kernel's vsnprintf implementation. + size_t printed_size = std::min(size, size_t{64}); + // Remove trailing separator from calculation if printed_size > 0. + size_t max_chars = printed_size * 3 - (printed_size > 0 ? 1 : 0); + PERFETTO_DCHECK(pos_ + max_chars <= size_); + + if (printed_size) { + AppendPaddedHexInt(data[0], '0', 2); + } + for (size_t pos = 1; pos < printed_size; pos++) { + AppendChar(separator); + AppendPaddedHexInt(data[pos], '0', 2); + } +} + +} // namespace base +} // namespace perfetto +// gen_amalgamated begin source: src/base/getopt_compat.cc +// gen_amalgamated begin header: include/perfetto/ext/base/getopt_compat.h +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef INCLUDE_PERFETTO_EXT_BASE_GETOPT_COMPAT_H_ +#define INCLUDE_PERFETTO_EXT_BASE_GETOPT_COMPAT_H_ + +#include // For std::nullptr_t + +// No translation units other than base/getopt.h and getopt_compat_unittest.cc +// should directly include this file. Use base/getopt.h instead. + +namespace perfetto { +namespace base { +namespace getopt_compat { + +// A tiny getopt() replacement for Windows, which doesn't have . +// This implementation is based on the subset of features that we use in the +// Perfetto codebase. It doesn't even try to deal with the full surface of GNU's +// getopt(). +// Limitations: +// - getopt_long_only() is not supported. +// - optional_argument is not supported. That is extremely subtle and caused us +// problems in the past with GNU's getopt. +// - It does not reorder non-option arguments. It behaves like MacOS getopt, or +// GNU's when POSIXLY_CORRECT=1. +// - Doesn't expose optopt or opterr. +// - option.flag and longindex are not supported and must be nullptr. + +enum { + no_argument = 0, + required_argument = 1, +}; + +struct option { + const char* name; + int has_arg; + std::nullptr_t flag; // Only nullptr is supported. + int val; +}; + +extern char* optarg; +extern int optind; +extern int optopt; +extern int opterr; + +int getopt_long(int argc, + char** argv, + const char* shortopts, + const option* longopts, + std::nullptr_t /*longindex is not supported*/); + +int getopt(int argc, char** argv, const char* shortopts); + +} // namespace getopt_compat +} // namespace base +} // namespace perfetto + +#endif // INCLUDE_PERFETTO_EXT_BASE_GETOPT_COMPAT_H_ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// gen_amalgamated expanded: #include "perfetto/ext/base/getopt_compat.h" + +#include +#include +#include + +#include + +// gen_amalgamated expanded: #include "perfetto/base/logging.h" + +namespace perfetto { +namespace base { +namespace getopt_compat { + +char* optarg = nullptr; +int optind = 0; +int optopt = 0; +int opterr = 1; + +namespace { + +char* nextchar = nullptr; + +const option* LookupLongOpt(const std::vector